%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: main.dvi %%Pages: 79 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: Palatino-Bold Palatino-Roman Palatino-Italic Courier %%+ PazoMath-Italic PazoMath Helvetica CMMI12 CMR8 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips main.dvi -o main.ps %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2004.12.21:2109 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "22 June 1996", % filename = "8r.enc", % email = "kb@@mail.tug.org", % address = "135 Center Hill Rd. // Plymouth, MA 02360", % codetable = "ISO/ASCII", % checksum = "119 662 4424", % docstring = "Encoding for TrueType or Type 1 fonts to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: fplmri.pfb %!PS-AdobeFont-1.0: PazoMath-Italic 001.001 %%CreationDate: Thu Sep 14 17:4:17 2000 %%VMusage: 120000 150000 11 dict begin /FontInfo 14 dict dup begin /version (001.001) readonly def /Copyright ((c) Diego Puga, 2000.) readonly def /Notice (Copyright (c) Diego Puga, 2000. Distributed under the GNU General Public License (http://www.gnu.org/copyleft/gpl.txt). As a special exception, permission is granted to include this font program in a PostScript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /FullName (Pazo Math Italic) readonly def /FamilyName (PazoMath) readonly def /ItalicAngle -9.50 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /Weight (Regular) readonly def end readonly def /FontName /PazoMath-Italic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put } for dup 32 /space put dup 35 /epsilon put dup 36 /rho1 put dup 68 /Delta put dup 70 /Phi put dup 71 /Gamma put dup 74 /theta1 put dup 76 /Lambda put dup 80 /Pi put dup 81 /Theta put dup 83 /Sigma put dup 85 /Upsilon put dup 86 /sigma1 put dup 87 /Omega put dup 88 /Xi put dup 89 /Psi put dup 97 /alpha put dup 98 /beta put dup 99 /chi put dup 100 /delta put dup 101 /epsilon1 put dup 102 /phi put dup 103 /gamma put dup 104 /eta put dup 105 /iota put dup 106 /phi1 put dup 107 /kappa put dup 108 /lambda put dup 109 /mu put dup 110 /nu put dup 112 /pi put dup 113 /theta put dup 114 /rho put dup 115 /sigma put dup 116 /tau put dup 117 /upsilon put dup 118 /pi1 put dup 119 /omega put dup 120 /xi put dup 121 /psi put dup 122 /zeta put dup 160 /Euro put dup 182 /partialdiff put dup 224 /tie put dup 226 /dotlessj put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.00100 0 0 0.00100 0 0] readonly def /UniqueID 5116634 def /FontBBox {-70 -277 902 733} readonly def currentdict end currentfile eexec E8DC61728071ABD4D5BCD230C4E186DCE095A0CA84FFC476ADFAA82124268E60D2CC570C5F52 C10ED4A85A71CE8E5BCF26AA13B27D7FCE1CC0C72C3B848DD5FFB2D56D06A1920FADE4FFA3B3 5336627E9ED1622C1F9652956D4A424488B4C4FFDA9936442BBE0CA749700AE98A2BF964FAD0 88F0CC64B7C1D76742F25E90E759ACA624A321402B1D20863FAF5E04B86C1AE66F450B158604 1815E52F13D2AE539F1725D11489898A83A05FE04D6D14BCE66E2CB855496EC301A39F6BA632 F50529AA3B78775D3D91CCB4D102B46A69D1DF890262339E9A285C8646B828AEA9F5A39DDACF 3471C89A1E8E1854607F0C92E5B4C57298709CE53154E86CEE699124E189164F9043D47594EC 3DE3FBF7928EC354910CC2DF2E2008DF11C1A4FFE5B19699A541DC9930FBC2545D9DB875D037 608DF1556FFC4A154E03169C432F62456B734954C1FE791822949C0EBCF37C0238F99D21A90A B8F60FC1A61C1D0EA563BE1AACBC9F97105BF94D8E17A26E456950A2C7FFA1ADDB399D76C11F 16BAC7ABB7838E85BECCBC1431BA6601C9C34BF665F9C42298CFC2E785B2774546F05173BD03 6B624B2BAADDC7390BB6CECB5B74821F01C1DDC3DE6FC29EE374F82101E0EECCFD32F3D1F976 13C10A2C9C5C328F27E9BBC441CD921C86AAAB7F266F811CE9DE9FB73EEE132D1CD4F24B0708 07BB2684B92186EC79C2EF8CF3C2E523A985469F310790D55145E602EFFF48E490E6D17A919E 42D57EBC9B07067F53DE5B2BFF8C5AE40ED2B48DBF789F5C65C13ABB3F72CE81B593C8FB0E89 268F918CD05A88D2529267503D338C57CDC53AFD1A55949E6B8B7D8DDC79656A33A0A7F28273 0BC4EA351DB9939A3E6704D30BE16CEA1188541CB222CD5BBEC47D91CB7905F79C8BC33A1C3A B5AC784C132ED348403641E55131572E52531DBCBFEC84619D9253A8C9E496A3A9F5BA322892 BB28B8F1C09A5A3376E0D318994777A82B2831430B7CB81F935AA6685AA43E6A95CE963709BC EA9CBB5F9BB04A120358BF7BED8DADCDF8D57775C282537AB67E62CF33CB1CA7E45D3147F587 0458337040B336AC654992B0A13A1837489014015198679D395CEC4A2DB02B144A2D4527E260 4C07AEACE062FB0C3DBB96BE3DEDBB58E8C394928D259F7E671F439F079D2B510ADADE3C7BED 74CD24EC603C5DC2677E7D6C0D3EDE4BAE7778E2001149D5C4D5646199D6468EC7B317B63517 FCC5F79F121B3DC36228462C959A594B22871357F0065351D94B219CABEA3BAD30D16DA738BD 3A17FA61EFD84E2A653EFC6E88C3FBBA937C632C0AF398731F976BB4762FCC3AD0C2476E3F28 7E5C29158AC6595E02DF79EE35900FFE743ACE5716DE66B3D85BEDCF26196790AD015AA4E6DD 1A3EE1648710368F9CF2E9B5872C79685B616EF5D684C3479D34588CADED93AD1A58ED7935DE F887E3D23401B4C83999607CEEA53507C02800247DB376EF45CB802741A9867897E5C7A20D3A E20D299C84ADDD84D63175FA4292AD70FFB4833D0E4BAE9861C431178EC884D21B4DB75CF672 E7B5B571E08F527E8598C4EFF85868B2D950CBBC9A4971FBB7B044784C96C34D5B25260A585A A2D4AFAF57814D8CB32742315B7F3DA11B895A022C81AE79F3CE058DA0B892E2B578FCD3C319 6732BDDA5184C9E48D77E382C2ACE357C0AA1E997E67CA490C927A12716D3116D439C2D5487D EA3D3EA4EDFB66A27FF2E616CB27E340C88380EE8A76871D6CFEB3522199406DCC0BE258362F CAC94954D3D6175AD551E908C6DDE985DE0525355276139EF13F05243B27D835AC4A045AD195 1E66AAB2979A1D825725B3DCCF77F9F9E8116843E28386BE2231E932698AE7E64895B0B1373A F60F71C66D54A6805B4E1286ADF3741D8B6D92A882B5B02588EA3576D091D82D873A83B3EBB1 C096B7AC977AE279258217C2DA4F15899A28945C70BB838685D414E23FE38CE68D32A7213B88 E73F5380FC408DCCCCB0D006C6CE208EE7E3BB7AEFFCF4BF739B5BAAB15C80E92083B29D5209 6B795DBB3A07E76A2E0D9DCAA71C10BD339B98E063914FF4DADC676CA851CD36E52427BA8484 D4C461B1C40DA682E642E88ED6E56360A8CA6F9A07B3684CF59E2FCD05A3ED72A60351C5A09C AD1EE2C4F96732D4353289DEF0DAAFF6FCF1C7F031E01B455B319FF268E3E5E432DD640777C4 4A650FE131C35445011E721B991B4E496214AB41782B59F774A77C7B23DBBFD388AB27F20E51 EA8E2A01CDFC0CA116AEC4D4B32E06BA13347F09736B1DE556C08D06B4C81DCA45EC26CC7702 AC796360E0A012C86EFE099529CCB01117FFDB820EF4DD932572F9BD76CE70319455A0D0B846 C96A8D7079F3C9122C995931C8A54A4BF9B8138852A6034B7FFAF3D815AC9A581F41B2E78BBE BCD1505C4BA5F3CC77DDAC9DFD285C0A1F2664097A107DA4CC2B5D99F64F31F31F7CF7E828F9 FF3B2A44657412630AFFF45DA57C4CDEAC8F35EBB3FBDBA9FE0477D222AEBFBFAE0AEE468634 C33EDAC0FC09F9FDB03584CE7D6DC6D266724A39C683E2BE9930127F679EE7D7E60321CFA3B6 33F1F86B7B0C5409D31C77EEB2A269B95E99DE606E1725F4A166C3C3B81ED2BB97E1E7FA2430 BD37D21FCCEB4C397823333C694EBEE25C7CFA3B161EF2067BAA81669236D4B51784F4544AEC 718266A0EE18DD366E1A6A63EF386E484241A8E713E071299B2458872A74FC2449D5D5A7EF4C 9B3AD8FD962C51660FFA5736450089EEE6A5AF443CF84D822FD4B9E359A7C931440B60BF0C84 D517897670BCEE444A1C0FC2732B02E8AF3180FA4F895539B78E05F7CA05327A58447C1F1850 342FD10EF7D61CE930B1CD7B6E987C71D474C1586DC448F156ED8165381066101EEAD9541B69 0F165799AA896C87E2188529B01AB33382F9FB7A205008BCD21AE8A7E7A99C8FA911AD47F3BC F30287523766ADDB5CB0AF933407C21A4EFFC0DC700EA04DAC0F5A6873F3CB08C5E5737E3400 C169854D6ED4C9BD0545DD357C69EB9A7E964CA3CD9D7384D4D29F254CAF15169550DE0FFA17 A948920C9415F006AF0370B19653C38DC9714935055D6C70F9E3DE7C0FE6B20FCD7FBC39F621 AF0D3F80C0DEAE52D1D949FBBC5E3907A2A4CD765F3B6ADF5AB545E7437EDEF7342F865A845C 2F21B7CBDEFFAE1F4CFB8E2FA58B4A5D496CBCCEA37EECE68BD7F561861A938FC37E2801778F 0847E3187DDE88B6FFE3E2F183DE8A4EE973DD1D8646DEB04D49001C171E940B83DDC7B243B9 DDE76ED9E7405AB5E157592511BF1FEC823A5D48791CDFEB9A2E83827B6CFFF04A0C4087B2C6 DC3E016F6105CA35E121ACE547861C9AA23A8546386B503FA9478BB14A83803C08EF4D7919C8 8DAEE685117A40E5B56E2FF37042B80B3F0DE1015A499A749DCDB2E879070F34D07B06F12B19 53721211E5B1AAF1AA725908E5D4EAA3DBAE42688025BA7EF14730CD7FE36E7E022BCE49438D DFF65EB445ECE71BF9277544DF7C089A58B7C4DADB71873463A4E3C211A8AF181F1F1DC72B3D B1528ACC1B6770BAE42F5C0EB714EBBB72A6AFBA7632BF4BC459729BBEDD762291D0B3F21152 AC32B2D89821266AD06461D19B5F77FAD4401D52C45B168D1D2BBD6310A296EB73AB58B67D04 2ED84AB200C293088A3213E1D111A9A5151759775A902B0D2D56B8FCEA5B3B6DEEE776964767 AFD84918176A27116472855B9F0BF1CF2EB7F02C97ECF2193157A0604BD1ED89406969A676E3 B327BD7E6F77C5A6CA1F8FCE74AC48771B03A3C47F4DE3407A9C85138076829DD5C4C4DD0273 097A4ADA34517DFE13089E256F06CB6EEB5D093DF3F32AD0DF254A4EF2E5FAB46933A09F0BB2 E80ED61F8D45D5676AB7E6DD72CEDDE871B50E359D1B3CFBEA96438B4167272569976D86C5C0 F7E5FED403879F0B3116DFEE4FEDF83CA0EAD8A0F758DCB2CFFBEF22351F15D4512AB6E15E18 A3BBE0F3AE506B7968B38840F9172D87A78657EABF9C61636E51C70009F7194F2CA2783E76BA 7AE399F06C1CD45B65983987383676651A9AFEC6D609C6E144DE7A2FE6AFF94469D3F592B5FD 30F479C4D28F8CE60A6034FDA2F326452229867F3EB2134883E0694BBC9A680248093BD17D0A 65E8FACABB1406C6BDF5E2ED83955B590C7B19C2AD9ABFF33DCF20F5FAFCB6388669A687543B 0120757ECB9470AC92BDBB5BB43C6155817BE3C00DF547D3639E2DF00F18F61BC1F8B332088B 1A0D18B0E5DD53A63C48F5FD69FD9D0FEB17D7DD91A73157725969E92AFC5D658F47479F656E 4698AA7BB0190E997DA2EE9BBB97301D28BA8D9CF427917A6AF55191FA8EB38ABFE5624B02E3 0391E16DE5FAB7040EFA5F136CE519F4C2EAF34C5206192B150856CB0EB05679BFA9A36C4246 F2365750F0E5EE9265EA2138628AD4EC4C0C7FDC8B0DE3CE3EC5C4FD057F88418E6D307965E2 BD1C09F0B6CC6E9765D477F3E26C0F136A41AE4F207DDC8F6A5FAD9429FE1DB140F3584FA226 66386FFE3AF55E5626BB6DA670E84C0A410408D9303C0FBB776267F059F014BF53A08D9B0660 31D409D881E2A3C82CB335E5145BAE70275FDE9F4B914DEC4183D303709EDA506D937A8147A3 41A7C4C480E78643BCB949C0278BB42389C0EC789F88EFBDF49494094E3FA32C477CE5FC0575 437B30408E93559D7F8544C926D3F071E36DB3580E9CBD5AF08B89B17F1545D81FBDEE955A1E 54B6212D940F6A69CF12F4C76343B669F382C48223621826AD9FA490AA73880683051A003BA3 4A50691387F4993324A3DBE18FDC94290AA7856AD5CC1A0F889CF252345768A9587F4B3C92D2 689EB3EAB2CDFD8A3DE97F57FF7118000344E6E553EFE2FFFADC105E5B917C61FB0ACD511545 2BED4A85BBBDBCB9F1AAD871E462FC782F2B115ACBCDC589D1703A5FF9CF8A3B69564B676409 B26DA29E33AAFCE233806A0386BAAB9FFE82F9A2B4D5E4602B81F699343BB802B598B08ABC6F F2D1781A803F2C0A4C24AD607D4A756D86375F2F16FF189D1993019DBAB42A067B2659A3DF85 FF0246B48EEEA1E023FE7280D25281BB807A0044FABE2A8FF68D9A3FAC5C065F14A13ABA1FEC 60EE75CAC402B831165FB5DE2BB3A9FC7E6DA5C375ACBFCF4444DA16448A12C68398A4374ABF 95FDBDD3EA05BC43A3BB42BF78FAA00ECFED587ADD2073CB8EC645EF8E7192D967E586192113 B0914499B14F06618E5BD1930451A3C0F1DCA304F52F306FAFA3A4ABBFF61A7668DF2B9C1F1D 40AB004942673BC748DC18B994900B039594574E413B5C2D22A74CA68048172B1E461D0FAB34 EB7C5E59E221D69D4D1F7641F71250DECB8B5153711D72A5A570F412E6E7C00909D4F7E1DC43 4141FC1DB5AD8A353BA43707EA937CDEFBBED13492797B717C53267C1FDE567D986F3280175E 47DF71EA68118F3363C9556B1DF0B5B06D7393B513354881EF9C06DC6DA0A085BCE7594A2C32 42CFFDEC078FE7DD9ABB0528E67F879993AD21F728C78987F1B2EEB654F03F51B0A657E7E444 0D4B21F847957643EB89EE845C09E2B566370DE8DE32C50A9E773FA32D6A7647BD4ED4F65F6A EE25A1650A6FB47921A60CED57553A7EBB2BEA20C8FB11A9788DB02D8665B11AA0E3905C477E 7CE414D04B8D8D7E03E589686EF3BC4BD4EC2B8918DCEF68B68FF6B1E8D7052D2A2FDFF3F958 AA2BE926C8090ABC10856BDB54E619B2901A77C94B3FA9466AEF534FA481DE9227A742ACC28B 30CB3FC875CFC825E009EDC86A6F4E26892F560ED1604515D91E9553B7866DDCE335A281618F 97F9E0CC94D24D3C4E5F02D2DB6BC3027B0D4BA7C43F49E414A4CA8E6365DAC72CAE5E0E9BCA 4173B6D848F0BDC9BC7B712136E6FC6265C56C4FBD0E5BAFCF97B2A5A9E134BDCEC088A80F9B 42A13AA612D3B2280F06F085EA3499A6EB123F311AFC02785FC4E4491C058CB3D40F91E30591 6FAEE31F9F9F2D8084EFD60CDA0F6819AE6CF956C639E924542077DCAFC72631803ED62FE711 DBAA7F790C0020891E75B5F2E22B418296DAE2DEAD132008A7A7272F9BEC8480778C3112B238 4B080B84D3919DE5F93B1E62641C1C7D9646686A02A35EDEDCE96D794FAD9B4EADB9E1A2779A 25429C041137B56A7FA8B61246E56CD2DE0955899F0137489940A0F9061CAA99E12E196A2D06 D838A2955A7FB65B67DBFDDB9DE4C0C2C5079DB6356E27FB10B4C71E15AD79AB401394D7A840 8B4BB548B3B5C69E69C08D366CEE26C62AA089F50C09C6C37D09A808E414C92343FA85F4C06A 67A1440844ED119A761FFD916BBB1652FCA188EEC2F5E7983F8FA89BEF8917F46EAFFCF49A7A 29E8F32E20F6A4B81791441A8CE7FEFE2AC888019FA08B28ACF24B8520767B2F77F184487B48 FD03E8A6EAB3C47EAB03A32AC414AC25E3E5704694A161CEA954B3BD7A8E40C8426DFE2EDFC1 A392035EF0DC8928076C166B157F6856DF4089BBA97738AACFE4783B0D6322D84B4CDC41CE6E 9A77CAEF13BA3A667900864503F2F62D5614F118F213AB57E25E3882BD479916FF6A588EDF90 57C9D2122B2AD114B1C85E716F2A0E8506ED63E1F257C74BA15B3FAA94F66F58F8E570E4A7A6 408DAFC362ACD141711B531D166BE933E83059310F34BA0F8FA92773096A796E48327AA2C48A DF4873BC9D4CF603C0493AFA4E6DC19D66851E447DB72E5F68BE0925E5546EFE0EB4EF0C90E9 36B128A737B532CA3F6BB5913F9A7BFB64B0F6D7319AF8AAFDE5C86E3A81A1CE1C846B77528D A03F61DD3878B174160B78AA20A6F0CB4F1F4F72744314D6FBF2A615ACE384C7391D3D6BF26E 7D05A079E7F63B47F6D86886789F0C18CD74CFF177098A7F706B5F02D200B17B639140556C9B E09FA9B22F01D545F2A35972E3C709468C47907FE203A8D1792C60FD8248B01980CA80307D7B CF8A81D1F61A2B15B5BDF7BDBC847F177126A7B713F137AE3D75BF3BCAB021C56AFC3A5550F2 07AB7AFBC2C41CCFEFCF7B6D3F97DAC14861DE4134F7326ACCE2FFA7EE0F9F8B953E88B6DD34 D97ED6BC31AECEEF7F5A28D02C2B1C9E133F9A66B27B110F2AFAD1712F6CF3A8E3E867F33A56 9C46FAD96EE4825E034FCB04641529BC96C6E9AAD16ED7749E572646A3CB45DD79BBEA146CC2 EDC911D6473C65331C87665ABBB0085676EAEA0ED411B5B246B2151A09BC782CF1EBBBECA483 4ECBBC24AD92047D5BB29E8C10BE597B92ACF1696F54202016774CD363C1B60A7A47AB88117A ACCFA39F382889110D9BDB1A325D69FF1A25E8CD07BC700186C2338BFC56C8AC5610CAB1C6F2 F68B7D0C46FECC96EDE912170CDDF44064023DB67F1E0FAE9ED73565073AC5141BE24DA870BA 53007133D40FCEB6FD2684589882BC374E510092DDC2C663B165297E8BFF4AEA7D8B5BF1CD13 0225FDEAE4A8BF2334FF41A4D236AC344BAEA39FE01F577B7FBCC3B4598B92523BC7A956642A 773E66C1C7FA693822B271FFF9AEB16102544FE515C3F40E3C2FB51F63B6D028528F50DCF6B8 5475F19ED8DB2560726D0133E37EBA8EDE9238C66B1B84B5AC79CF171BF75F7E91F737F72597 0EF898ABADBCB29E0EC9AA1446AF08C7DCA54474D5767ABAAA26970DA58D169F0A7170B1C780 A5665BFCBA18270CDF8E6288D6DE602F9952DA9B1EB156C30EAF100A498A1CE9D15D6EA4181D 7A4D0BD2DEBADDB5ED99CD7A5A5F1808A455D78B33DE8D541F7893237EF40C599C5F6E8BDA82 22602041D876608DE33113C67AB7B5D7492BC6530FF815003E8130D297093F5ED071BA87E2A0 484CBC939469DFB7955F7D4E82246540307C9DB75BF968492DC67014885DFADC878FF83374CC 6B41400B8BE89D285A82F448AF1C7138F1A3C8FF001948F11060E200D1945C388A5E9B1F5307 965428E93055E40BA1EFE39C2C01736325E8D7F7F2F01187F96C09DC467C05B0142A7DA11D60 527979F6B0AC88595E88657B58AE98E7CE85C51EAF38316DA6E8FD16B1C606312560C5D64192 F3EDBAE1BF815985E571F0688D3BF00FB1BCBC45575713AA7BA3A0DD366159BC04034F1011C8 696E831134E842A5C3D3238F20C402403371506C4498501C2C14CFEA3765B9F79E0F446EDF1F 46F2784684D7903FF01EA6D72DA9B2A6FF1AF6751475549D340081BBBB341F028E3D42987C92 BF1AD0538F55A851258B0BFB5F501AD3A9AD5FE3F8105CFF2F83CC5666A7C2EBDA254D5BE689 9299B51D4D2661F90D23B06D2CA910BEF7097231EA998BB4F73DCDB3D1988B14431028ED56FA B1F2EBF7D4B74E427BB19B3E4F573F76A24B3E871E926036C6A7EACE5E0500E50FAD32347F5F 76C09E4796A80AE85E8B6C528B6346AD89160F30E97C259B22F71D1AD02E4B534D2B0A8B3E8E 8D066A2B0FD7963A83B252DB568CDEF92B8650A193EB3D6EF24F0D4616AA7559426401D15928 18C73FD763BC688F235B35DA3CF3478DDA91F9DB645597BDEAC07FCC32F44FE0DC9BE8DC77A2 E39C7271913A28DF5DE75081862B9B7454CEB4BA9E77224E56FD25D6D19727671C09CC76D17E 2857EBC7BE8982426BB256590F4975C3A25ED4D9F4E5F534AEA61A9F27D022AE135C4234B774 5EEADAFD5FDA54C4310F9EDEA0D928C8D0A5513155B0E093FB6731E2EF429D5CC3FBA7870DCB 79FBA7BE37E8954649108D12AA863E01A3E0AA07D7444E98AE7FA273303E89F1ED56267E913B F10A67C921B1BC1314565D00840D70DF5C60709011C4449C80904089DDA63FC440EAAE437926 CA0315ED851F8295DBF6C11B5F2F0C98D951CF6F346B1FF3D63B2E808ABDF1788EDC2B0003C5 5581856A3CB1DB1FEF2F5F48EBB0F8157136F43A01D1F1D8B50AF9E0501AF1B110A5E4B38A96 F283F3A5B749448EDB3743AFF0764E8EAB169635CA60AF4A2199C8A40C2B2CE3D4DD996542D9 DFFA2163DA90CB3D26EA9B3793B1B3F39612D949CEB834C0D43D700D89449F1BD612B332BEA0 2983682F67F9AF859CE9400336D502B9EFF143ED22EAA62069F984E30C4CD499D1D55F1AAE05 9ABEE36B4CABA0405C3F7043796CD3FEC1432F08A5442FFE4D8F7FC5F66EF2950EBDAA6FC870 1013F849D29871A6F6D20E1D2406E677E872A3FB4F07C219C3B6678D72A725814355AC33ABCF 38BF7341AE3904B4B7AE55E046348AD6A9E03C8C5EAB1BBEF479BB03E5E6056D33E439FE4175 0C6D6C9B5CB20569C9AF158AC532F8F56BA4692B194827D7C8ACB4A7428680E5A4E3C53FA524 8597B3005AF8BCF4E734968E87F616E53AF6E143935BA2B58737C61982058B4EEC3CBE093E9A 32C7F72CD73C9435287AC1C01F79DC3869FA10DAB92E6BE510A21215B2A76AA6A9A736879423 5589326FBBB6BEF7A041680711D05E391B674D090BE95D301754AC5444E9BA6DDD073E1841EA 8E353B12FFDB3D5F7DF484A49408A0C920062DA1847856A415C60FBCF0593C1FFEDB519091B7 8371B214D8934145808C98C4CE44C772D07BEF5F6116168DE5A60734F81010F43095D2252B99 893D1B0033504CA4461EDF0320B4D00BCD2FEBCFB482A97BF82604CCCF7E5FCF435F6870EC10 9B62BF0E9C3C823AB745E3A6C87B6BEB36E7D162C9534A2AFBB169F36BD88809E216AC29ADAB 01874A42D76B8DFAF747DA83E01303C6E49ED91CE93982F1580370C94DF2BCEF5A35CDCA6ADC EA62FD3E23F05C998DB81414D51D5A020D20FE4E412AD348411098B4CE7C93F1F97ADA4A2CDC 487A1D2DF58C53260A064F6CA38830CAC7753220FA154C2B5A92007E647CE51E7A267EB00422 0CD58506C148A256183ADC364AA049DFA9D25BEB032ED8855F0C187937C6C05D8162E96E8910 4990B3C671CDB8A364D0134140DB94534EC3DFE8EFD4519651C73159469B2393D9D17D2BCDF3 B7950812ADD85891D9EFDFFC8CE67D48C38F2BB28BF2C0E7C80567AFB2237D3E1B202964D014 949B19F255CD95CCBF006455D404333D206E4EE7E62529910189F9D11ACEF61C525162001CA2 05DC5B862B8F7C8F11EEBC56F33F550ABEA66AAE67E7BB033B8ABE5567E5226B4DBFBB2FE68C 1AC725639006403C6F8FAE9644C4979DCFE1F470C35B524875A4EED1323EDAE6C27B38AC1D9A E57D82FAED3C0311A2FDB3F7F42BAF2547BF595A8AA21C16B63E2408D4804D008D41B9DDE163 5C1930613E77E9B51DE2F13141FFAC1019DFAF4D663C4CD6D3F7B399A5868B0DD46A6B17E431 3108B6EB1F61CA527E6FF3C9423D9B41851F0837B9E33C4D90D070045E824C0686ED21424B43 237FC1BC8AE5B035E3155CF6BEB45C4F4E6F71B869C807AAB06A0759D6C7A0613E556D58447B 6C011BFB2807639340CE5DD0F2D0F9901CB2ED1ACBCAEEFA5E11AC2A009E18EDD4920AB26682 330120603DDE7A6A9B96AF6DEA35854C5A09EA49B5C7831CF9DDD295E4F82C4EDBBF32FAA259 DA679740AD0DB4426E0E2724604CF688B96103A1DAB16BB91E47453331F1C2B947DAAA428C8D 3BC3A971276E9CA9CF2CD16B1C81826C38C1C7111D4F81053BF3DA3B1E425FA9CD58C75047DD C1CF378FA9A12E74FA6DED2BF61C147C1F5E1F7431EAEDD5E13A0BA688505E1E4A3331AA3E69 BB4C8109DB16C15972F2329755059F2480F624E9A3EA3FA61EB7AA2B9A453801430C539D2A87 A53B4AC42248D8E20E1582CBFC550AD960C44C2B1D32A75D8CEB39FA883C75AAC29E2F9D7D51 CC10D82859F993D7B30A6E5E11107C75518531A26977A6CB6A283DE425B3715990F8D0E5BF85 ECE8E053520719B34B99306BBB6D144089D5CAFC5ED000B9D08404300FB6EDF504616044900F 51D86403A5314EDD73E13CE7E9CCE82B007D85068F28E148123A35632AD6AE0508A0637A1FB4 F5FB9A5D904722B331F73D3423B978D5D2E8A2FF63F4CC14B2C8022C79685039275F63AD81A7 00BF1F86014AA9015DE0574947CF933EE9FDAD3403BF08F0758E54C9826D156C3F4F6A2857B5 9AE8D092FC4427920D992CD4BF4252CDBBACEA57E9C21C23D36026BE70BDA4351C82641CACB0 BA3003FC1D7E4148517C1332716E70D7837DFBC98C374BB904DB8F408A72F0C9F0F9C9A14D4F E88D60F2AD510FCBE7F2854E9DF63CC1924B86864C4AA0C10857C3902FDCB233B6B9E52CAAA2 28AFDA49CD1928A854D6E457A33E1499951C320A85B5B107EFF0BB282B32B75008637B5760AC A2B054DC523D5C81136B122C0817BB1E2EE9BBEF30E7D51E55702487B21BF47614E58476F706 F2FA06DB3E6C43C96D35C2BCA7D49B12ED320EF37A4593C5A53CCCD40F826FB1FDFEF6A47F25 53E38EC74A16B3EBEF9D88F99DADFD96E06CDFC470C696F15AC320BF3EAF74A32F342309A50A 18CFDE9E109718FA6B7B4910FC61378C32BF690C5DCCEEDE4A44078CCA2179F31A7D97686713 FB990B1D6B007CBCD93609EAE2BE5A9C0A09B2D58FA4AD8054A7A9214ADCE58307213605F022 13225F416E51D48BF45BC13E5B58BF4766E32BFCB447DEC152E0E3A8790DFA6284DC7B6E1EA9 A8335C51FF43983C7825484E4F220D39BED7D5FAAF1745A6C0AC7332563D1E95ED88FB578229 7868753436433D5CA656A199C7C478159216236284945F1D3D0CCDC3B77F109B7BE00E37B99E CA245E3999778DE140BBC7A7A2BF6017BD44B23010E961D48567201ED473C8F140EDFDAE1188 5A3D16F9B76BDFCF18C54C5A71F3FC774A425938C82194B04A9F0EFC4A2F26A382B7D86B1CA1 BF58E801FEA5BDD83E34E1AC6ADA7DED5C14FFE082BFDA6002CBEF15362A56856031497253AC A6EC4EEF7B7D12F202B8D80E06BDFEF0576AEC4B4C4C851C751344F7E205C6F155E8CB2CEA80 282CCF696BC9C8B667F69A8690A68BDC95CC68ABC3B2B8C35AC2F9D61E0C0FCBAE7A903F8283 4A4E2CC25C367FF2AF7C668EA76137B44B85461AF2B7120A38D4A2B758908B38374124172D7A CBE08BF162404D8B0280D98CA7A743AEB0B9FDF81B7704B7FDD06C53BCD83384F54FDA25E521 31227A90DC9CF65DDCF8304D3E5A8C6C0165F49A1CE10E10CCCF784E079F2852425F065A9165 91441A24010D747444A69A928FF8960C33B3C511D0BD5B7D45E8CE9AFAD56EB726449627E804 4735599253C324A7671B2907918FFEA3C58ACC5FD405AB0386CA4569F74383D5BE2DE8B769BE 97A5FA0AC9A56CA3CE26CAE8C285F97A0607B911840666C85CA8BDFA55CB56BE9712CB50E0CD A60877A9D84581644B7FDFB44BC14BB51582C7C603B755CFB48B4DE0AA4952DD2294D9B1CBC5 853B2B8BD12BEED20442D5196D8A8AD4BF0D769FBA7698775F0F045ED589F0E919358AC95DAE 41AFC543550811FBE10A6495F490A1A4733FE8834E2253D36CA2D413FCEAAB2D778E3BB1B1DC E354856458946E71C43CCC819B507FDAED9208B6D7C9D08C6D59298886A80D5CCAD844127119 1130DDE37C9A843C96962FB1DA91572E64818992C04AA091993E6614338FD3D0B9253073FD0D B69890C2E7BD221A91C9D3C65C24CD15A1C78805E800341527749C0DF8A6344DD4B8F5655CC9 61A05854937C5AA076101795909F105410B1D78301AD7A4BA1D22F7491F69F185CA87B49D31F C85BD26881E7C85E4649F8E4098B8330AC4F16BE2AD8788811E3218CAC154E6E5B3B5A27E2FF 782FFF56BF7CAC7FA0D3241D90D96441D2004F7D83E77EE1D79FA04CBD312D39D7E1C14FB286 3F44A578733D7EB8874223AA27C21409881BC6252FAC16635C38F72D517D57C25B1A46EB9199 338B49046923FE5C9B0D0EE8AAA1C928CCA09273693837B6DDA9666289AE8B0B35CF7B2ECDD1 941D28F54838619B4186B94A78C57FAF39682BB7420F2D56453508C78DABED8FD7E9454BD92F A8C1EA96F7C5044612E8DA68D16BF4204855356F9D13B1B400A0F006779E54FFD4B13091EBD9 B132D206F40E62F20E36482732382EFBD2E60A75CF4EE4A9E1E77436F51B9171841BF884903D E6287D6626ED5E079B5149290982FC31BE17F1A63B157216D98158B194BAAC952976D9FC632B 1C15F16DEDC996DABA4E106250AD131910FFB9A85838E5D9401059044EACF412BC5ADA64483A F75B811B9DA419FBE20998A2556E1F2F986997250CB8FB3ED9FBFC10C4F700479D5CD1A7C4BD 3CB12903AE847693F066A3FF0A11E86A8BBEFDF62B6FA67D6C49A32B9AB1DE991CDC66444685 E551DE3C98B1DE7065042A48CEF14E4397ACF1276840F7980BB9359F1480A9080EA77F638040 20B2AC0A02768AE1143A23C9C15D42FB27B7844D33EE8E3E48F919CABF01C41A50F46833FA00 638AC689DD9B0553AC561DBE9A338F441B2DBF6CBB48FDB6C627363A7B66DC89CCA65040D884 2376B88D75EE00BEC5FCCE2A2B4BEE34A9B8676CC20F315D67D01442E3045C8E48A68D0A7C6E 2723F2F1400F7338DF980F98BF2F69F7A0C321AE42E93C91EE4928D7CA770BD0D3706B5944E0 0DD80AA85E96FFC6D3F7783E126057E1808D3193B51F78C02DB40F6C8407FB125898CE38BE66 5838FDD11D6C4671866DD3F78BE451229C9A5D0C7F0284BFB8017843DE6AED7072C008F8266F AB4F42E46866A71B9BE1545312463B37C6DB1A1382C5D3510BC8B69114A45D4FF5B8488DFF54 15FAA8D915FC362E3ABAA005C10DFC61F97A51B49BEDFEE0FABDFD0DE86336ACE9493E2691A0 2B227204AF75144783FCC8719E47B02798C18AD36170A16BA0D811E71A7CBA3A6114DA21F41F 3FA725F652C47B23EB2EC9704F97C8703D8CFEFFF38EBE46670ABEBEEB83C23C2F01CC0CC960 683DEF6340E6EF828D1BB549263A9B0FF945A7B80C977EEC29DA71C386AD716584B778FAA8C4 83D76F07FEBD6AEEF89A1459DA576EEDA1218929E253379A550C82877E2C6D518DA4851609A5 21EDDFB27F17B6109D39E5B8F6C3FA0256DFEA99D2207CC62B11DEE366445D88C9E64FDF07C3 6E5C77782312D12215BD16BE769391386A2E288FF500A450CF9FB705F92674EE1308D01A0E16 2F41B1C0F0D90A4538B32416A9AE5DDFF25DC2C36204680814BB698C5AEDCAE7A809F6BCF409 FFE1BA04F0BB276A32FE526EFE8A50E12F88BE2098EAAC24F70E174C463C1DBED02E33947E56 B2C50E63A7FBAE32514D8D3163C889E9964506C36C0AEC7C623006979A31B625AEC601CB1F5B CE7CB5A0A9A0CF76C22D238A8E4D063875F0EDDFE12B65EFA1890C71398021F181472816A735 DBDD5F01ECC8219F0A7DDA6C5E0E28DBCD33076C022EDA984BE72924CD169E02C330B31FEDC3 7EC2DBC4ECDF86C6741AF25A323EC52330B8353DCBB341BEFECB422D5CD2FBFAAD1BEA87C077 3A0F3E4D22590B2D1574DB52693FE41DCB9E378FA83F6474EC4ACE68A0D2967DCC97860C56A9 82E0E1FFBA95DAD0D6F0F69CDFC635E7B0EAC33F29F76FE4712ABEC0998181BE441941E39069 AA225B77D6E8D5078F44DEDF83D9FF3F773B666B5061A7442BED42B39F4B446823AA3FC3A951 199BDF3ED95E08D82FC4BBBC314E61EDB8C6AE4A17BFCAFD1C75424F9E9F8D49164E097590A4 D652984DF31CF76232951D11E962FBA94BFEB570104BCDEDCC9FC1ABF16E13F97EE27CC6EFE2 3B2B1814B551D308236309AE453BB0E7E5D7D0F69C0F6CF34DE4915FFF23299FF5D3488373BE DBEB8420A6666BC47542208A6379E2676742AEC2BA63407F064FBBFB6298AD593A04653B3FF8 A5B5671CCBCA5042671A4C4ACAC3BFACAEEEE1B982F456D90A91DDA4CD91306935234D68D384 96F006074C1EA40522E268BB2826D8F910439AE427B21C688018A6785CEABF8A8F946E82BE65 CA6DE76C061DFF4B27A55AA0A172D28C9AC45B317348BC37CEC326AB8A9CF39C8E0A80535D65 22CE98EFDBFCB2C86153451753093468A2AF83FF4F6727E49ACC8C534A6A4BEB7347405B3DD6 9DEF8EBA1AD6D8B5F541E153123AEEC978724216F6120CED918B4B134178AD57294A80B894F2 1C728B31322D97F6F6769A65E3BB1219AB6DAEC323F0914A587C2BF551A71BB5AEA7CC0DF40E 7CF3E49897EEB3D27017BB2126F8872F05F8D33C6BF4AC400DDC9767917D11AC13420E295617 BF932B799BA71A043E75970A55765A81419C61DC8EC9DA70BDD6EDA84D8233BB49BA437B444B 9BCF3BD5703693C4EEEABBC940A40495F93DCBEFBFE5B01CB6ECE7D8A1FE814EB9973D0CF45E 623F4106F45F0FDC76720CF7EC0CD3D97F7FBD2D5674967ED018AB08E9C576853F6DFD757849 C35C494C836CBB183101D4ED2F387416484E7C43E0D92A5ADE200934C22A0FD1783BFA8FDC2A 4D07B9CBBFF3614FEC8F234BA73D82FF6630CBFAC15889430BFEFBE5AA61B559091632E55492 FF27D8F608D3A81B61AE0CD648E7BA5D171F2D269B5177E46EF9DE836D608866684FF39A702A DEA60EF5EA5A269928728FAD437E149F5937683E9142610AF81989CB60AD46644862473DCE97 E94363FA531546C7B2CD9A18543542881A8C45C8896B9537BA51BE1BD3A46A5B85ACA0E75530 CCEDFDC2FDD5ADC0157DB7CAE000EF835B38317B2DB8FC8AE3305C1964D0CE7C2186B87A27A2 25DFC24F482398EF1A0BB22ACB062502F2FD0852C2B707A0F0C2E196DE6AAD28286EBCCFBDC3 1B85D50F33039BA69941F48C2C046AEBE74C54D21BC5FBBED7F990BBCCD99BA70FE53E4FAFBB 1CA16BD595484F6D0E785A08EF7408B9E31D0524DB091B059DC8C64A1764F21CF6C997A1F4E2 B700099A7ADFC88F95311D74604275FD2AFFFD1CE867D477795D13C964B5F17EEEB72094E22A B254C60F3AFE5D654941D75E02CA0707F688DD2B8076470880423F28DF30D955CCE129102534 21DAE7B8B4AE7B4DAF78381E079B21E306726FF7239EB8F00E46482B1AABF0CCC2D5892F3079 0843AFCD2CA3BF597B8CEE9EAD73B628BCF9BCDBAA0EF0844E11B6CF1E35037840E4D4023353 446DEEC4C246A0DC8BB7B42AC7389EA33BDD51B7C6FFDD3FCB54490DC8B361DA50C8641DD47B 407047AD61C066BF94C9DED4670B8CD9E33A093E95869BD11D25262C04A3FCCC76C4899ED8DF E671BC782D42DED2FC2A4863D165A2E4F21E48AE85B95520570738FF9D2DBA6D6029377A74E2 43C816B2FC5E9E8B3A4AD43251EA90259F15270E01ED01D7258D237483393A4E0CC3824AC68F 4E61AEBBF4EF86E8896D1EA9DEA98D66458FD146FDCC553E11FCFD6CB0EBC0AD0661304BD47B A561C7F1141583E2F7C4CF3C62B382C688A9CE9A44D32140534DE6AD9E24DFCE9BE9EB837888 27F6B3BEA964A8848E188E1700401B592E1D46DCC7863C5A9F2C6483E51E41A490F4DF9A079C CBF1BA4785EEF36FFDCEC0B7F0C831DCF4E1866709739F842A33807F08CB01B9583BED5B13D0 E9DC8BDA91560220FCF5831CBD30E347D45F1E8F42C1ECCF144BE8171E94B58EFD7EC496E150 ACD5F81B788A285ED08F5D107D5D469FB3310FF4DBA5A1DB8E1F426BAD79EA4F4EA5768B47F7 3DD6BA3B1C0A932DE5851C2637CF3C0649560D3A5808EF20B83C37E04D3A7FAD74DA0E48DD3A F15382CA034E50377EA9AD393A1B617324086CD9B399DC21F6664E0CCB24986A7D790F4124DA A5F2ABEA888A03F7F0EDF3D3305BDC3C4BB1F344133D7F9DD22ACC420053111F9BB50D4A3724 0BB9B587CF1C8526C627279E28D44CA3618C08C57B308F10C71572AACDF9100C9E41C1A63F12 49815D7C9687C740E376536A61B54C5591FC874C1052D0DAD4E00246FCC8687725022531AB6A 3D87D85F340A89D82710653068327928FE60BC55261F90D2F4C9AE33DF6545EB16D2BD7E92BA 0034E749A3040A9B7745A57ED93EFE8808761F8E6721C32D687E2582A539D893326F1B5C7E6A 39AF44A4D65D573EDEBD52043E474291E5856E15A796B773E05AF9602E97A1451BB9865D6058 9A09B9A09912C14735F3C802EEFCB3ECCBE9A2799E4796C18B5DD2C7A0F387AEFBFEF45224A5 E92919DCF407989B2CFD2DB55229F887A41C3C3234A49718AF0988FA423A0185AE0170C25E87 FC9B4384DFF1A06DF794CACFF5898E4A1260022C08352D4E52183FA7300FF53189456640557F 8063BF7D3487189E76B158B1DB8A61F0303DFF7636295CF19BFAA4C61039A18521048248EED8 23911F139BCFF5901B9E098FC4405EEE71E1F5BCDB498523A89BBEC43555AB7136615E2F107F CE1965A9EBCFD4DF3CEDF790C9158658998DE6234F22A8AC704F3D7BB9A67720BA98F8224646 F135D644723A3B00A68DFA7F02B1B3633B1996ED82747A4DBC420255EC46526E954CFC586216 C26C9E4D08411B2D9E64ACFB5C7676EF2787EA6E468A7952045B029497B7AF39DE8DED3C5A93 174FDDBE010E1A337A49B673606E08FBD3DE03E9E8EA95798DC135559F4F43985102DB4F1434 F9E48E13957E62AC140D39F3D81DA2B99E9BAD7F183A96B7869C93038C851885BADB643B0F37 EB847A8EBBC63F1FA7DB4A66BC09F99AEAA84371C4619E90B5A57C3D2E545FD30BAD072818FA 285C08D87334E31EBAB15BE4865565B6087323A0A79AF5E81A9038D49F0E868DFEF0182CB856 BE2B08C3D96E8CF797148619B7ECC077CA05CCF7DD4FDF5D76CBF6910C779312470BE6125131 B5BE97679CFC5248B9EA75376ADF2C48E822D86A556088D3A9615E48427F98A8A95BD3B996AA EFC93091A001F261D7EE1D5DA0E5B6F5E15D1F001DAD229CDC1EF24C3D20F3168DC17A7B95C5 BECEDDCB06615B26C23E4DE1CA61F1120EEADB4527A586042E88E507A8906BFD68B7D96EBB06 C4AB2FC366F0D0FEA0FBE413390C8F8028375974ECEC5790B5DADCDF523E0993404CBF0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} def 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 39158280 55380996 1000 600 600 (main.dvi) @start %DVIPSBitmapFont: Fa cmex10 10 2 /Fa 2 20 df<160F161F163E167C16F8ED01F0ED03E0ED07C0150FED1F801600153E157E 5D4A5A5D14034A5A5D140F4A5AA24AC7FC143E147E5CA2495AA2495AA2495AA2130F5CA2 495AA2133F91C8FCA25B137E13FEA25B1201A25B1203A35B1207A35B120FA35BA2121FA4 5B123FA690C9FC5AAA12FEB3AC127FAA7E7FA6121F7FA4120FA27FA312077FA312037FA3 12017FA212007FA2137E137F7FA280131FA26D7EA2801307A26D7EA26D7EA26D7EA2147E 143E143F6E7EA26E7E1407816E7E1401816E7E157E153E811680ED0FC01507ED03E0ED01 F0ED00F8167C163E161F160F28C66E823D>18 D<12F07E127C7E7E6C7E6C7E6C7E7F6C7E 1200137C137E7F6D7E130F806D7E1303806D7EA26D7E147C147E80A26E7EA26E7EA26E7E A2811403A26E7EA2811400A281157E157FA2811680A2151F16C0A3150F16E0A3150716F0 A31503A216F8A4150116FCA6150016FEAA167FB3AC16FEAA16FC1501A616F81503A416F0 A21507A316E0150FA316C0151FA31680153FA216005DA2157E15FE5DA214015DA24A5AA2 14075DA24A5AA24A5AA24AC7FCA2147E147C14FC495AA2495A5C1307495A5C131F49C8FC 137E137C5B1201485A5B485A485A48C9FC123E5A5A5A28C67E823D>I E %EndDVIPSBitmapFont /Fb 135[32 120[{TeXBase1Encoding ReEncodeFont}1 63.0968 /Palatino-Italic rf %DVIPSBitmapFont: Fd cmr10 10 6 /Fd 6 94 df<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B 120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A2 6C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2 5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<15301578B3A6007FB812 F8B912FCA26C17F8C80078C8FCB3A6153036367BAF41>43 D<007FB812F8B912FCA26C17 F8CCFCAE007FB812F8B912FCA26C17F836167B9F41>61 D91 D93 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff cmmi10 10 1 /Ff 1 63 df<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01 FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1F F0EE07FCEE01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7 FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC0 4848CAFCEA07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh cmr10 9 1 /Fh 1 62 df61 D E %EndDVIPSBitmapFont /Fj 205[29 29 49[{TeXBase1Encoding ReEncodeFont}2 58.1154 /Palatino-Roman rf /Fl 206[25 49[{TeXBase1Encoding ReEncodeFont}1 49.8132 /Palatino-Roman rf /Fm 205[32 32 49[{ TeXBase1Encoding ReEncodeFont}2 63.0968 /Palatino-Roman rf /Fn 129[50 3[50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 9[50 2[50 50 3[50 1[50 50 50 3[50 50 2[50 1[50 1[50 1[50 2[50 4[50 50 50 50 50 50 50 50 50 45[{TeXBase1Encoding ReEncodeFont}50 83.022 /Courier rf %DVIPSBitmapFont: Fo cmsy10 10 4 /Fo 4 25 df<007FB81280B912C0A26C17803204799641>0 D<121C127FEAFF80A5EA7F 00121C0909799917>I 15 D24 D E %EndDVIPSBitmapFont /Fp 134[55 50 83 55 61 33 44 39 61 61 55 61 89 33 61 33 33 61 55 39 50 61 44 61 50 9[100 1[78 66 61 72 1[61 83 83 100 61 1[39 39 83 83 55 61 83 72 66 78 9[50 50 50 50 50 50 50 2[25 43[61 2[{TeXBase1Encoding ReEncodeFont}54 99.6264 /Palatino-Bold rf /Fq 105[37 27[33 37 37 54 37 42 25 29 29 35 37 33 42 58 21 33 21 21 37 37 21 29 37 30 35 33 9[71 1[58 46 42 50 3[58 4[25 58 54 42 46 58 50 46 54 5[19 19 37 37 37 37 37 37 37 37 37 37 1[19 25 19 2[25 25 21 35[41 39 2[{TeXBase1Encoding ReEncodeFont}62 74.7198 /Palatino-Italic rf /Fr 134[66 60 100 66 73 40 53 47 73 73 66 73 106 40 73 40 40 73 66 47 60 73 53 73 60 9[120 2[80 73 86 1[73 100 100 120 3[47 1[100 66 73 100 86 1[93 10[60 60 60 60 60 60 2[30 43[73 2[{ TeXBase1Encoding ReEncodeFont}48 119.552 /Palatino-Bold rf /Fs 139[57 1[67 1[105 7[105 2[86 3[86 29[124 14[86 86 86 86 49[{TeXBase1Encoding ReEncodeFont}11 172.188 /Palatino-Bold rf /Ft 107[42 42 25[46 1[69 47 50 27 35 33 46 50 45 48 73 24 46 1[24 48 46 28 40 51 37 46 42 7[55 4[51 44 55 1[50 65 69 1[51 2[28 69 63 1[51 64 59 51 65 12[42 42 42 42 2[21 28 21 4[23 36[50 2[{ .167 SlantFont TeXBase1Encoding ReEncodeFont}50 83.022 /Palatino-Roman rf /Fu 25[53 107[37 42 42 60 42 46 28 32 32 1[42 37 46 65 23 37 23 23 42 42 23 32 42 34 38 37 9[78 1[65 51 46 55 1[51 65 65 78 46 55 28 28 65 60 1[51 65 55 51 60 6[21 42 1[42 1[42 42 42 42 42 42 25 21 28 21 2[28 28 23 39[{TeXBase1Encoding ReEncodeFont}62 83.022 /Palatino-Italic rf /Fv 105[42 28[46 42 69 46 51 28 37 32 1[51 46 51 74 28 51 28 28 51 46 32 42 51 37 51 42 9[83 1[65 55 51 60 1[51 69 69 83 51 1[32 32 1[69 46 51 69 60 55 65 6[21 42 1[42 2[42 42 42 42 42 2[28 45[{TeXBase1Encoding ReEncodeFont}53 83.022 /Palatino-Bold rf /Fw 39[62 94[42 39 62 42 45 24 32 30 42 45 41 43 66 22 42 17 22 43 42 25 36 46 33 41 37 10[54 1[46 39 3[59 62 2[54 2[62 1[42 46 58 53 46 58 7[37 37 37 37 37 37 37 37 37 37 1[19 25 19 45 39[45 45 2[{TeXBase1Encoding ReEncodeFont}55 74.7198 /Palatino-Roman rf /Fx 134[80 2[81 1[47 61 57 2[78 83 1[42 2[42 1[80 1[69 2[79 72 11[112 19[112 65[{ TeXBase1Encoding ReEncodeFont}15 143.462 /Palatino-Roman rf /Fy 138[40 22 28 26 1[40 36 39 59 19 37 16 19 39 37 22 32 41 29 1[33 3[22 1[22 1[44 44 66 48 1[41 35 44 2[52 55 63 41 2[22 1[51 1[41 2[41 52 13[33 4[17 46[{ TeXBase1Encoding ReEncodeFont}39 66.4176 /Palatino-Roman rf /Fz 12[45 10[40 1[63 79[42 27[42 46 43 69 47 50 27 35 33 46 50 45 48 73 24 46 19 24 48 46 28 40 51 37 46 42 3[28 1[28 55 55 55 83 60 65 51 44 55 65 50 65 69 79 51 60 28 28 69 63 46 51 64 59 51 65 62 37 3[21 21 42 42 42 42 42 42 42 42 42 42 50 21 28 21 50 1[28 28 23 1[70 33[50 50 2[{TeXBase1Encoding ReEncodeFont}83 83.022 /Palatino-Roman rf /FA 171[73 63 11[91 66 1[93 85 1[93 19[40 30 44[{TeXBase1Encoding ReEncodeFont}9 119.552 /Palatino-Roman rf /FB 167[64 2[74 59 50 64 1[58 75 79 90 58 2[32 2[53 58 74 68 58 74 65[{TeXBase1Encoding ReEncodeFont}17 95.6413 /Palatino-Roman rf /FC 134[115 2[115 126 69 92 80 1[126 115 126 184 69 2[69 126 115 80 103 126 92 126 103 13[126 2[126 1[172 4[80 3[126 172 149 138 66[{ TeXBase1Encoding ReEncodeFont}28 206.559 /Palatino-Bold rf /FD 170[129 1[101 9[64 6[110 66[{TeXBase1Encoding ReEncodeFont}4 165.247 /Palatino-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 440 1682 2865 12 v 1563 1968 a FC(N)10 b FD(U)g(B)g(I)g(S)555 2140 y FA(A)36 b(D)6 b FB(E)g(C)g(E)g(N)g(T)g(R)g(A)g(L)g(I)g(S)g(E)g (D)g FA(,)37 b(F)6 b FB(L)g(E)g(X)g(I)g(B)g(L)g(E)g FA(,)37 b(F)n FB(A)6 b(U)g(L)o(T)p FA(-)g(T)t FB(O)g(L)g(E)g(R)g(A)g(N)g(T)952 2312 y(A)g(N)g(D)36 b FA(S)6 b FB(C)g(A)g(L)g(A)g(B)g(L)g(E)37 b FA(F)6 b FB(O)g(U)g(N)g(D)g(A)o(T)g(I)g(O)g(N)38 b(F)6 b(O)g(R)1211 2484 y FA(C)g FB(O)g(M)g(P)g(U)g(T)o(A)o(T)g(I)g(O)g(N)g (A)g(L)37 b FA(G)6 b FB(R)g(I)g(D)g(S)p 440 2599 V 1593 4983 a Fz(December)20 b(2004)1448 5192 y(A)t Fy(A)t(L)t(B)t(O)t(R)t(G)k Fz(U)t Fy(N)t(I)t(V)t(E)t(R)t(S)t(I)t(T)t(Y)1620 5307 y Fz(Gr)o(oup)c(B2-201)p eop %%Page: 1 2 1 1 bop 614 552 a Fx(Aalbor)m(g)36 b(University)614 667 y Fw(Department)19 b(of)g(Computer)f(Science,)h(Fr)o(ederik)c(Bajers)j (V)-8 b(ej)19 b(7E,)f(DK)h(9220)h(Aalbor)o(g)e(\330st)p 614 713 3426 4 v 3463 802 a @beginspecial 0 @llx 0 @lly 341 @urx 300 @ury 311 @rwi @setspecial %%BeginDocument: logo.eps %!PS-Adobe-1.0 EPSF-1.2 %%BoundingBox: 0 0 341 300 %%Creator: Jasc Software, Inc. %%Title: C:\Dokumenter\P2 projekt\pictures\logo.eps %%CreationDate: 0 %%EndComments /width 341 def /height 300 def /pixwidth 341 def /pixheight 300 def /picstr width string def /psppic { gsave width height 8 [width 0 0 height 0 height neg] {currentfile picstr readhexstring pop} image grestore } def 0 height neg translate pixwidth pixheight scale psppic FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF705A4A515A51514A432716100A162127352D303035281C1D1D16161D29211D212828283C514A4A515A4A44FFFF30293545434A3528212121280A00164D4D513521160A162121272121282D1C0A2135353530303C4A82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFBA7C4545453822160A10101C29160A00000000000000000000000000000000000000000000000000000000000000000000000500000000000A10160A00050A0000000000000000000000100500000000000000000000000000000000000000000000001C4E96E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCBAB1A7968C837A7A7A7A72675E5555554E4E3F3238382A1D293838382A1D385E6772727A8CA7968C83838C9E96959EA7B1B1A7A7A7B1B1BAB1A7BACCD3E1FFFFEABAA7968C7A8C9FB1CCCCCCCCD3BA9F8C839FBAB1A7EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFDA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A67E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFED0A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059DFFFFFFFFFFFFFFFFFFFFFFFFFFFFD80B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC82500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028A8FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFF7405000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059FFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFAD1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFFFFFFFF6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFD81A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000229FFFFFFFFFFFFFFFFFFFFFFFFFFFB8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFFFFFFFFFFFFFFFCE0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037FFFFFFFFFFFFFFFFFFFFFFFFFFFF4E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C0FFFFFFFFFFFFFFFFFFFFFFFFFF97110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFBB1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016D0FFFFFFFFFFFFFFFFFFFFFFFFFF3B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD81A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DFFFFFFFFFFFFFFFFFFFFFFFFFF7A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFF85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFE100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CF5FFFFFFFFFFFFFFFFFFFFFFFFF50B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DFFFFFFFFFFFFFFFFFFFFFFFFFF1E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC81D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFFFFFFFFFF3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFF7A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFFFFFFFFFFFFFFFFFFF8D11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC81F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AADFFFFFFFFFFFFFFFFFFFFFFFFFF24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFFFFFFF3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA91400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFFFFFFF390000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFFFFFFFFFFFFFFFFFFFFFF240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFFFFFFFFFFFFFFF0B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFF7C0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD31100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFFCE1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E1F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023FFFFFFFFFFFFFFFFFFFFFFFFFFFF180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFF97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFFFFFFFFFFFFFFFFAD28080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045BAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFFFF6A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFFFFFFFFFFFFFFFFFFFF61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFFFFFFFFFFFFFFFFFFFF5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AEAFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C0FFFFFFFFFFFFFFFFFFFFFF1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8FFFFFFFFFFFFFFFFFFFFFFFF0E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4FFFFFFFFFFFFFFFFFFFFBC1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016FFFFFFFFFFFFFFFFFFFFFFFF7C080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CD0FFFFFFFFFFFFFFFFFFFF740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFFFFFFFFFFFFFFFFFFFF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ADFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFFFFFFFFFFFF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4FFFFFFFFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFFFFFFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFF970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021F5FFFFFFFFFFFFFFFFFFFFFF9F1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E97FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFF490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFF820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFF490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002FFFFFFFFFFFFFFFFFFFFFFFFFFF740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028A8FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFF7C050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFFFFFFFFFF18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DE4FFFFFFFFFFFFFFFFFFFF620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CDFFFFFFFFFFFFFFFFFFFFFFFFF900E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFF460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFC516000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015DFFFFFFFFFFFFFFFFFFFFFFFFFCC4700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018C5FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFF3B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFF45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFCE23000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063FFFFFFFFFFFFFFFFFFFFFFFFFFBC3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005DFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002AECFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA405000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFF3B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFA82C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000889FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFFFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFF3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFF8D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004BFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028FFFFFFFFFFFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8FFFFFFFFFFFFFFFFFFFFFFFFFFFF0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFD82C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFFFFFFFF1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFF6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005EFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CD0FFFFFFFFFFFFFFFFFFA805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD3A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFF220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001EECFFFFFFFFFFFFFFFFFFF53A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8FFFFFFFFFFFFFFFFFFFFFFFFFFDA831200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000119FFFFFFFFFFFFFFFFFFFFFFFFFFFFF22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFF9F050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A92FFFFFFFFFFFFFFFFFFFFFFFFFFDA7416000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021DAFFFFFFFFFFFFFFFFFF620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFF5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFFFFFFFFAD3F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFFFFFFFFFFFFF850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DE1FFFFFFFFFFFFFFFFFFFFFFFFFF3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFF6A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063FFFFFFFFFFFFFFFFFFFFFFFFFFE197220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022E4FFFFFFFFFFFFFFFFFF97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099FFFFFFFFFFFFFFFFFFFF7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFC53F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012C8FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028FFFFFFFFFFFFFFFFFFFF850000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFF79F4B0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFFFFFFA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFF3300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EFFFFFFFFFFFFFFFFFFFF97000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064FFFFFFFFFFFFFFFFFFFFFFFFFF8D2F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CD8FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD0FFFFFFFFFFFFFFFFFFFF050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004AFFFFFFFFFFFFFFFFFFFF610500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFDA650D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFFFFFF8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051F5FFFFFFFFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFF7C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A1FFFFFFFFFFFFFFFFFFFFFFFFEF7A16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFFFFFFFFFF1700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057CFFFFFFFFFFFFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DE6FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFFFF7C0B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092FFFFFFFFFFFFFFFFFFFFFFEFB14E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004AFFFFFFFFFFFFFFFFFFFFFFFF2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC1FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9FFFFFFFFFFFFFFFFFF8D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092FFFFFFFFFFFFFFFFFFFFFFCC7A1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005CFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFF110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008BFFFFFFFFFFFFFFFFFFFFFF0E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CC8FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C8FFFFFFFFFFFFFFFFFF740B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFBA55080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFF17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFFFFFFFFFFFFFFFF61030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039DFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1FFFFFFFFFFFFFFFFFFB116000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005CFFFFFFFFFFFFFFFFFFEABA4E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000373FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA80500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044F5FFFFFFFFFFFFFFFFFF17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AECFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFFFFFFFF850500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064FFFFFFFFFFFFFFFFFFBC7C160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002BC8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DDAFFFFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039E1FFFFFFFFFFFFFFFFFF18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E97FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFFFFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFD37A120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000892FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE411000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003BCEFFFFFFFFFFFFFFFF4A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000882FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044F5FFFFFFFFFFFFFFFFB11D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036FFFFFFFFFFFFFFFFEA7C2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFF0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001797FFFFFFFFFFFFFFFF610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086CF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8FFFFFFFFFFFFFFFFA80B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB8FFFFFFFFFFFFFFFF9F4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFFFFF3F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002297FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFFFFFFA8110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFFFF9732000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002FC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFE11700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032F5FFFFFFFFFFFFFFFF0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFF9F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC1FFFFFFFFFFFFFFDA6C0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011A8FFFFFFFFFFFFFFFF280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000373FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014D0FFFFFFFFFFFFFFF52C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFE17C12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097FFFFFFFFFFFFFF6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFFFE153000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFBC3A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFFFF62000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011CEFFFFFFFFFFFFFF120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002282EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFF53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFF8203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016C0FFFFFFFFFFFFFF170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFFFFFFFFFFFF1D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003997FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016FFFFFFFFFFFFFFA811000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFEA9017000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B86FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFB80A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023FFFFFFFFFFFFFF7A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D6CD3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF9700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FFFFFFFFFFFFFFF4D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000224FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D0FFFFFFFFFFFF7C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CE1FFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001855A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFF74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009BFFFFFFFFFFFFFF740E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003224F86BBF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021FFFFFFFFFFFFFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011F5FFFFFFFFFFFF9008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121D2D68FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043FFFFFFFFFFFFFF320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFF6D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C326395D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFF2D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012336197FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFC51D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFCC30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003324E7895BBE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD8FFFFFFFFFFFF61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C5190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFF5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010FFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033278CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093FFFFFFFFFFFF1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFF030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000225FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFF730800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000185AB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011D0FFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5ABCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFF3F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFF45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001078FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011FFFFFFFFFFFFFF4A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001882FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059DFFFFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002286F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFF2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033FFFFFFFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000279DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFF2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023A8FFFFFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010D0FFFFFFFFFFFF2C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFF7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010C0FFFFFFFFFFFF51000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFFFFFF8903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFF82000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DC5FFFFFFFFFF300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFA8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFFFFFFFFFF2A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AE1FFFFFFFFE13600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFFFFFFF32000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C0FFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFF820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ADFFFFFFFFFFFF620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFF821800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EB1FFFFFFFF850C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFD81100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023FFFFFFFFFF33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022A8FFFFFFFFFFFF5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016B1FFFFFFFF8D1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFFFFFFFF6A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFF300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000583FFFFFFFFD02B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010DAFFFFFFFFFFFF61000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFF6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFAF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FBAFFFFFFB858000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFCE0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFFFF74080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001685FFFFFFFFFFFF890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000169FF5FFFFFF7F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFD81D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA8FFFFFF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059FFFFFFFFFFFFF920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083D8FFFFB8300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055FFFFFFFFFFFFA8050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFF550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A97FFFFFFFFFFFFAF0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032C5E1FFA968080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021E4FFFFFFFFFFFF3B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFF33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EBAC5FF7F4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AADFFFFFFFFFFFF6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFF7C0E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DDAFFFFFFFFFFFF53000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ECFFFF5C0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFA817000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032FFFFFF510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000389FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA40A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067CCFFFFFFFFFFFFC11C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002283FFFFA94A0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AD3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004AFFFFFFFFFFFFFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFF4600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029C0FFFFFFFFFFFFFF5C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000559FFFFFE653000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006BFFFFFFFFFFFFD833000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010FFFFFF9033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001697FFFFFFFFFFFFDF2F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000597D8FFFFC13B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000382FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA5FFFFFFFFFFFF7C0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFF68120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047CCFFFFFFFFFFFFC11F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061ECF5FFFF921000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000882FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027ADFFFFFFFFFFFFA81D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EC0FFFFFFFFFFFFD83B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C5FFFF9B4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005DBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168CFFFFFFFFFFFF9F2C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFF902800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004EBADAFFFFFFFFFFEC4B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F9FFFFFFF8C1F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFEC5300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010FFFFFFFF6D0E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB416000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168DDAFFFFFFFFFFD82F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058DECFFFFFF5100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFF9F3200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFF7C320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7CBAF5FFFFFFFFFF9B25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FE1FFFFFF9017000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFFFFFFFF9F24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFF46000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF990E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000226ACCFFFFFFFFFFFF8F0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047CCFFFF9B3B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000382FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFF6A170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFF6C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C6CCCF5FFFFFFFFFFFF7F0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000328DFFFFDF4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001282FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035FFFFFFFFFFFFFF6A0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFF7A220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055E97D3FFFFFFFFFFFF8F1F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A97CEFFFFA930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFFFFFFFFFF971E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFF610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000226CCCF5FFFFFFFFFFFFC12F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055E1FFFFC88C08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004BBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED2A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CC8FFFFFFFFFFFF8D240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFF1D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005597E4FFFFFFFFFFFF9215000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073CEFFFFFF63000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000359DFFFFFFFFFFFFB141000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058FFFFFF7C22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000459EC0FFFFFFFFFFFFDF4B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ABAFFFFFFA1150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055AFFFFFFFFFFFFF5741100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000597FFFFFF3F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000387CCCE4FFFFFFFFFFF5730A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFF7F150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003AB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA0A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008CFFFFFF39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002995C0EDFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CEFFFFB83000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021A5FFFFFFFFFFEC7C17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB11F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045C0E4FFFFFFFFFFFF8F1F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049ECFFFF7F1F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFFFF7C1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFFFF2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002272A7DAFFFFFFFFFFFF860A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CC5FFFFC12B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A73FFFFFFFFFFFF85100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFF4D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000012FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F0D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F8DD3FFFFFFFFFFEC7305000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053E1FFFF923000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003CFFFFFFFFFFFFFF3900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074FFFFFF4000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000228CC0F5FFFFFFFFFF951A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFA41200000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000167CFFFFFFFFFF971D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000585FFFFFF2D00000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FA7D3FFFFFFFFFF5C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFF5100000000000000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D0A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022FFFFFFFFFFA833000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFFFF6805000000000000000000000000000000000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168CBAE4FFFFFFFF730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016BAFFFFFF36000000000000000000000000000000000000000000000000000000000000000000000000000000000070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003DFFFFFFFFEC971100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024FFFFFF55050000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF990500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000165EBAD3FFFFFFA41500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A9FFFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF651000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065FFFFFFFF850B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040FFFFFF46000000000000000000000000000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF730E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002FA7D3FFFFFFCC430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049F5FFFF680000000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030FFFFFFFFCE33000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFF7C180000000000000000000000000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF991F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7CBAFFFFFFCC4E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006AFFFFFF5100000000000000000000000000000000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029FFFFFFFFB42400000000000000000000000000000000000000000000000000000000000000000000000000000000000000002CFFFFFF6105000000000000000000000000000000000000000000000000000000000000000000000000000073FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7CA8FFFFFFC12F000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A97FFFFFF27000000000000000000000000000000000000000000000000000000000000000000000000000055FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028C8FFFFFFBC240000000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFFFF46000000000000000000000000000000000000000000000000000000000000000000000000000063FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD846000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083C0FFFFFF82000000000000000000000000000000000000000000000000000000000000000000000000000000000000003AF5FFFF6C08000000000000000000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE463050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038FFFFFFC53B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000062FFFFFF29000000000000000000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85C08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001083C0FFFFFF6400000000000000000000000000000000000000000000000000000000000000000000000000000000000047A8FFFF3B0000000000000000000000000000000000000000000000000000000000000000000000000061FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8516000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035E4FFFFB44900000000000000000000000000000000000000000000000000000000000000000000000000000000000048FFFF6D1D0000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD87F2B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ADFFFFD829000000000000000000000000000000000000000000000000000000000000000000000000000000000041D8FFFF1D00000000000000000000000000000000000000000000000000000000000000000000000038FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD440A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051FFFFFF5A000000000000000000000000000000000000000000000000000000000000000000000000000000000000AFFFFF2D00000000000000000000000000000000000000000000000000000000000000000000000027FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59E5C240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010659DFFD87F050000000000000000000000000000000000000000000000000000000000000000000000000000000085FFFF6C0E000000000000000000000000000000000000000000000000000000000000000000000021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA8D3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004DFFFFFF320000000000000000000000000000000000000000000000000000000000000000000000000000000017FFFFFF2D000000000000000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B220800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000299FFFFFA42F0000000000000000000000000000000000000000000000000000000000000000000000000000002285FFFF7F03000000000000000000000000000000000000000000000000000000000000000000002DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C45220A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A73FFFF850500000000000000000000000000000000000000000000000000000000000000000000000000000032FFFFFF120000000000000000000000000000000000000000000000000000000000000000000022D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0A5734B2F180D0303000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003797FFFF3F0000000000000000000000000000000000000000000000000000000000000000000000000000003AE1FFFF390000000000000000000000000000000000000000000000000000000000000000000000B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C0B8A8977C6D553E230A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000589DFF732C00000000000000000000000000000000000000000000000000000000000000000000000000000097FFFF4D0000000000000000000000000000000000000000000000000000000000000000000039EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0CCB18C6B350D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000309DFF7A0000000000000000000000000000000000000000000000000000000000000000000000000000007CFFFF730E00000000000000000000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D653E050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007CFFA83200000000000000000000000000000000000000000000000000000000000000000000000000001DFFFFFF230000000000000000000000000000000000000000000000000000000000000000005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5531400000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F5DFF8229000000000000000000000000000000000000000000000000000000000000000000000000001685FFFF6300000000000000000000000000000000000000000000000000000000000000000040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA5D230000000000000000000000000000000000000000000000000000000000000000000000000000000000000022ADFF7C050000000000000000000000000000000000000000000000000000000000000000000000000032FFFF700500000000000000000000000000000000000000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8630D000000000000000000000000000000000000000000000000000000000000000000000000000000005DFFFF580000000000000000000000000000000000000000000000000000000000000000000000000023B1FFFF22000000000000000000000000000000000000000000000000000000000000000022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF932A000000000000000000000000000000000000000000000000000000000000000000000000000000166BFF7C3B0000000000000000000000000000000000000000000000000000000000000000000000000068FFFF3300000000000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC630D00000000000000000000000000000000000000000000000000000000000000000000000000379FFF9B0A0000000000000000000000000000000000000000000000000000000000000000000000005AFFFF5F0E000000000000000000000000000000000000000000000000000000000000000E9DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D220000000000000000000000000000000000000000000000000000000000000000000000000055FFFF4300000000000000000000000000000000000000000000000000000000000000000000000005FFFFFF1D00000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85300000000000000000000000000000000000000000000000000000000000000000000003055FF8B2F0000000000000000000000000000000000000000000000000000000000000000000000056AFFFF5F000000000000000000000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA45000000000000000000000000000000000000000000000000000000000000000000000030FFFF620500000000000000000000000000000000000000000000000000000000000000000000002CFFFF7405000000000000000000000000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C00000000000000000000000000000000000000000000000000000000000000000016855DFF39000000000000000000000000000000000000000000000000000000000000000000000032D8FFFF3F00000000000000000000000000000000000000000000000000000000000000A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED650000000000000000000000000000000000000000000000000000000000000000000035C0733200000000000000000000000000000000000000000000000000000000000000000000002CFFFF46000000000000000000000000000000000000000000000000000000000000089DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1000000000000000000000000000000000000000000000000000000000000000000005DFF820500000000000000000000000000000000000000000000000000000000000000000000167CFF550E0000000000000000000000000000000000000000000000000000000000007CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF740500000000000000000000000000000000000000000000000000000000000000001DFFFF1D000000000000000000000000000000000000000000000000000000000000000000000023FFFF1D0000000000000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD824000000000000000000000000000000000000000000000000000000000000000A29855115000000000000000000000000000000000000000000000000000000000000000000001D9FFF5C08000000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D05000000000000000000000000000000000000000000000000000000000000000051FF62000000000000000000000000000000000000000000000000000000000000000000000048FFFF22000000000000000000000000000000000000000000000000000000000033FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB105000000000000000000000000000000000000000000000000000000000000003029AF3F00000000000000000000000000000000000000000000000000000000000000000000558DFF4A0C0000000000000000000000000000000000000000000000000000000022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3800000000000000000000000000000000000000000000000000000000000000001C9D62240000000000000000000000000000000000000000000000000000000000000000000048FFFF1D000000000000000000000000000000000000000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F050000000000000000000000000000000000000000000000000000000000000073FFAF1C00000000000000000000000000000000000000000000000000000000000000000041CEFF7A080000000000000000000000000000000000000000000000000000000897FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55000000000000000000000000000000000000000000000000000000000000002151FF2C0000000000000000000000000000000000000000000000000000000000000000000051FFFF18000000000000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9900000000000000000000000000000000000000000000000000000000000000297C5F360000000000000000000000000000000000000000000000000000000000000000004E85FF1D000000000000000000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4220000000000000000000000000000000000000000000000000000000000000062FF620000000000000000000000000000000000000000000000000000000000000000000017FF180000000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF730000000000000000000000000000000000000000000000000000000000000A38B846000000000000000000000000000000000000000000000000000000000000000000118D282B0000000000000000000000000000000000000000000000000000001D97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD02200000000000000000000000000000000000000000000000000000000000022FF6A320000000000000000000000000000000000000000000000000000000000000000002CFF6C1200000000000000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40000000000000000000000000000000000000000000000000000000000005744D820A0000000000000000000000000000000000000000000000000000000000000000235AFF3F00000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73000000000000000000000000000000000000000000000000000000000000003DFF1700000000000000000000000000000000000000000000000000000000000000000023FF4508000000000000000000000000000000000000000000000000000039FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B00000000000000000000000000000000000000000000000000000000000016653B1F000000000000000000000000000000000000000000000000000000000000000016B1FF4400000000000000000000000000000000000000000000000000001DB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54400000000000000000000000000000000000000000000000000000000000022FF7C05000000000000000000000000000000000000000000000000000000000000000023FF731800000000000000000000000000000000000000000000000000006CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C00000000000000000000000000000000000000000000000000000000001030FF3F00000000000000000000000000000000000000000000000000000000000000001D5AFF33000000000000000000000000000000000000000000000000000053FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB81600000000000000000000000000000000000000000000000000000000000A7C5A32000000000000000000000000000000000000000000000000000000000000000017FF330E000000000000000000000000000000000000000000000000000EADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380000000000000000000000000000000000000000000000000000000000533E8B1C000000000000000000000000000000000000000000000000000000000000000A7C48530C0000000000000000000000000000000000000000000000000068FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA3000000000000000000000000000000000000000000000000000000000001DFF510B000000000000000000000000000000000000000000000000000000000000000023FF180000000000000000000000000000000000000000000000000044FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD825000000000000000000000000000000000000000000000000000000000A5D2A4600000000000000000000000000000000000000000000000000000000000000001673182D00000000000000000000000000000000000000000000000022BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D000000000000000000000000000000000000000000000000000000000000307C100000000000000000000000000000000000000000000000000000000000000000053246080000000000000000000000000000000000000000000000007AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA90D000000000000000000000000000000000000000000000000000000000A323F4300000000000000000000000000000000000000000000000000000000000000002C973008000000000000000000000000000000000000000000000061C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5500000000000000000000000000000000000000000000000000000000000530972C00000000000000000000000000000000000000000000000000000000000000008DFF4600000000000000000000000000000000000000000000000090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99000000000000000000000000000000000000000000000000000000000022FF682F000000000000000000000000000000000000000000000000000000000000005A6A7A2D00000000000000000000000000000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA22000000000000000000000000000000000000000000000000000000000A73FF62050000000000000000000000000000000000000000000000000000000000000023FF33080000000000000000000000000000000000000000000012FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F000000000000000000000000000000000000000000000000000000003832825F2F0000000000000000000000000000000000000000000000000000000000002A9F5A6F2B000000000000000000000000000000000000000000129EF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45000000000000000000000000000000000000000000000000000000000038FF7C1D000000000000000000000000000000000000000000000000000000000000001DFF4D280000000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F000000000000000000000000000000000000000000000000000000001C30745F46000000000000000000000000000000000000000000000000000000000000118D747F3000000000000000000000000000000000000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC81D00000000000000000000000000000000000000000000000000000000003EFF74170000000000000000000000000000000000000000000000000000000000000051FF5A33000000000000000000000000000000000000000017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F00000000000000000000000000000000000000000000000000000000293846402F0000000000000000000000000000000000000000000000000000000000003AA8FF6F12000000000000000000000000000000000000000883EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52A0000000000000000000000000000000000000000000000000000000000103874320500000000000000000000000000000000000000000000000000000000000AFFFF280000000000000000000000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C0500000000000000000000000000000000000000000000000000000000103EFF771C000000000000000000000000000000000000000000000000000000000A559F2D3B000000000000000000000000000000000000000053DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF460000000000000000000000000000000000000000000000000000000000103DFF511700000000000000000000000000000000000000000000000000000000001DFF4D18000000000000000000000000000000000000000051FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA900000000000000000000000000000000000000000000000000000000002A655AAF44000000000000000000000000000000000000000000000000000000001C3F730630000000000000000000000000000000000000003FADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF650500000000000000000000000000000000000000000000000000000000003DFF8D6A1D00000000000000000000000000000000000000000000000000000000001D40220800000000000000000000000000000000000033FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6305000000000000000000000000000000000000000000000000000000297C5D746F641C000000000000000000000000000000000000000000000000000000116149510E000000000000000000000000000000000022BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D00000000000000000000000000000000000000000000000000000000000055FFFF74490500000000000000000000000000000000000000000000000000000023FF2808000000000000000000000000000000000018FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC46000000000000000000000000000000000000000000000000000000002F4E74FFFF7F3B00000000000000000000000000000000000000000000000000002283494A15000000000000000000000000000000000D6ADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD03000000000000000000000000000000000000000000000000000000000000A4DFFFF8D390000000000000000000000000000000000000000000000000000000562332D00000000000000000000000000000000004AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF990500000000000000000000000000000000000000000000000000000000295E555D6F6B1F000000000000000000000000000000000000000000000000000061550B080500000000000000000000000000000028A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF631000000000000000000000000000000000000000000000000000000000000029FFFF512400000000000000000000000000000000000000000000000000000032FF460000000000000000000000000000000028FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD87322000000000000000000000000000000000000000000000000000000162F552A286B733B0E00000000000000000000000000000000000000000000003849182D2400000000000000000000000000002FADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD34D00000000000000000000000000000000000000000000000000000000000029FFFFFF853200000000000000000000000000000000000000000000000032FF40180000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB4E00000000000000000000000000000000000000000000000000000000103765FFFFCCC153030000000000000000000000000000000000000000002A496A164E1F0000000000000000000000000032B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA6D1D00000000000000000000000000000000000000000000000000000000053EFFFFFFFF7C2C00000000000000000000000000000000000000000000002CFF4D46000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E400500000000000000000000000000000000000000000000000000226C96CC8DFF8B7F4B1F0000000000000000000000000000000000000000327C7C68513500000000000000000000000D5DCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D3E000000000000000000000000000000000000000000000000000000000532FFFFFFB46A2C050000000000000000000000000000000000000017FFFF613B1800000000000000000000001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA54B0D000000000000000000000000000000000000000000000000001D3855656DFFFFA46B2900000000000000000000000000000000000A557397FF7A4A250000000000000000001682FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D380000000000000000000000000000000000000000000000000000000032FFFFFFFF8D512400000000000000000000000000000000000011FFFFFF4D2C0E0000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C350000000000000000000000000000000000000000000000001D4E8D97A8FFFFCCB864220000000000000000000000000000000A4EA79F97FF3E1F03000000000000003AADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED8D450A000000000000000000000000000000000000000000000000001DFFFFFFFFFFBC6A2C000000000000000000000000000000000040FFFFFF5A29000000000000000022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC8C4B1800000000000000000000000000000000000000000005387296B09FFFFFC1926336150000000000000000000000000038619697FF6F63360C0000000000228AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D5A220500000000000000000000000000000000000000000000000AFFFFFFFFFFFF6A4A320B0000000000000000000000000049FFFFFFFF4D1800000000000540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9E4B0D0000000000000000000000000000000000000A38556C6C6C554D6AFF7A4E1500000000000000000000003FA7B1C59FFF6F7F532903000032A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87C381700000000000000000000000000000000000000000000001D5DFFFF74512C1100000000000000000000000017FFFFFFFFFF330E000018FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECA5734B2B0D00000000000000000000000000000000222F3F321D22463F360A0000000000000000000A3F83CCC5FFFFDFB89263FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF936A3E160000000000000000000000000000000000001032FFFF513B0000000000000000000000005AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECA573350D00000000000000000000002229301D0B145C636B432500000000000047BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD8562300A00000000000000000000000022FFFFFFFFC57C401D00000000006AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC8C5C351D08000000000016FFFFFFFFFFFFFFFFFFFFCC9964DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8565553D1D0005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF %%Trailer %%EndDocument @endspecial 656 950 a Fv(T)-5 b(itle:)822 1098 y Fz(Nubis)71 b(\226)f(A)g(Decentralised,)g(Flexible,)822 1213 y(Fault-T)-8 b(olerant)20 b(and)h(Scalable)e(Foundation)822 1327 y(for)h (Computational)i(Grids)656 1568 y Fv(Project)d(period:)822 1683 y Fz(DA)-6 b(T5,)20 b(Sep.)f(3r)o(d)h(\226)g(Dec.)g(22th,)g(2004) 656 1978 y Fv(Project)f(group:)822 2093 y Fz(B2-201)656 2389 y Fv(Members)g(of)j(the)d(group:)822 2503 y Fz(Thomas)i (Christensen)822 2618 y(Anders)f(Rune)h(Jensen)822 2732 y(Rasmus)g(Aslak)g(Kj\346r)822 2847 y(Lau)f(Bech)g(Lauritzen)822 2961 y(Ole)h(Laursen)656 3257 y Fv(Supervisor:)822 3372 y Fz(Ger)o(d)f(Behrmann)656 3704 y Fv(Number)g(of)h(copies:)e Fz(7)656 3885 y Fv(Report)h(\226)g(number)g(of)h(pages:)e Fz(77)p 2408 1131 1613 4 v 2408 3729 4 2598 v 2457 1216 a Fv(Abstract)2457 1321 y Fw(This)34 b(r)o(eport)e(describes)g(the)i (design)f(of)g(Nubis,)g(a)2457 1426 y(decentralised,)25 b(\003exible,)g(fault-tolerant)i(and)g(scal-)2457 1531 y(able)i(foundation)g(for)e(computational)j(grids.)c(The)2457 1636 y(design)35 b(is)g(based)g(on)h(a)f(distributed)g(\002le)g(system) 2457 1741 y(with)24 b(support)d(for)h(access)g(contr)o(ol,)g(mutual)h (exclu-)2457 1846 y(sion)28 b(and)f(noti\002cation)i(of)f(\002le)f (changes.)g(The)h(dis-)2457 1951 y(tributed)23 b(\002le)f(system)f(is)h (based)g(on)h(the)g(concept)g(of)2457 2056 y(distributed)d(hash)i (tables,)g(r)o(esulting)d(in)j(a)f(scalable,)2457 2161 y(r)o(obust)i(information)g(service.)e(On)i(top)g(of)f(this,)h(the)2457 2266 y(r)o(eport)31 b(describes)f(the)j(design)e(of)h(a)g(data)h (service)2457 2371 y(and)e(outlines)f(the)h(design)e(of)h(grid)f(r)o (esour)o(ce)e(and)2457 2476 y(user)18 b(components.)2581 2581 y(A)30 b(pr)o(ototype)e(implementation)i(of)f(the)h(infor)o(-)2457 2686 y(mation)18 b(service)e(is)g(developed)g(in)h(C++)g(and)h(tested.) 2457 2791 y(The)j(tests)f(ar)o(e)g(performed)e(with)k(a)e(network)h(of) f(994)2457 2896 y(participating)f(nodes)f(and)i(ar)o(e)e(mostly)f(pr)o (omising.)2581 3001 y(The)28 b(design)g(is)g(in)h(its)g(infancy)g(and)g (ther)o(e)g(ar)o(e)2457 3106 y(many)38 b(unanswer)o(ed)f(questions)f (that)j(the)e(r)o(eport)2457 3212 y(does)f(not)i(addr)o(ess,)d(in)i (particular)g(with)h(r)o(espect)2457 3317 y(to)e(the)f(r)o(esour)o(ce)e (components)i(and)h(scheduling.)2457 3422 y(However)-6 b(,)18 b(the)g(design)f(is)g(r)o(obust)h(compar)o(ed)e(to)i(the)2457 3527 y(curr)o(ently)24 b(deployed)e(grids,)h(and)i(also)f(appears)g(to) 2457 3632 y(be)19 b(mor)o(e)f(scalable)g(and)i(\003exible.)p 4018 3729 V 2408 3732 1613 4 v eop %%Page: 1 3 1 2 bop 440 1233 a FC(Preface)440 1680 y Fz(This)18 b(r)o(eport)f (documents)h(the)f(design)h(of)g(a)f(decentralised,)f(\003exible,)h (fault-tolerant)g(and)440 1794 y(scalable)27 b(foundation)h(for)f (computational)h(grids.)f(The)h(design)f(has)h(been)f(developed)440 1909 y(as)20 b(part)g(of)g(the)g(DA)-6 b(T5)20 b(semester)g(at)g(the)g (Department)g(of)h(Computer)f(Science,)f(Aalbor)o(g)440 2023 y(University)-9 b(.)565 2252 y(W)h(e)28 b(would)h(like)g(to)g (thank)g(Josva)f(Kleist)h(for)g(letting)g(us)g(use)f(part)g(of)g(the)h (univer)o(-)440 2367 y(sity)c(cluster)f(for)g(our)h(tests)g(and)f(for)g (suggesting)i(pr)o(oblem)e(ar)o(eas)e(in)j(Nor)o(duGrid,)f(and)440 2482 y(Henrik)d(Thostr)o(up)h(Jensen)e(for)h(helping)h(us)f(understand) f(Nor)o(duGrid.)565 2795 y Fu(Aalbor)o(g,)g(December)h(2004,)p 641 3204 1182 6 v 1922 3204 V 641 3319 a(Thomas)f(Christensen)597 b(Anders)21 b(Rune)h(Jensen)p 641 3548 V 1922 3548 V 641 3662 a(Rasmus)g(Aslak)e(Kj\346r)620 b(Lau)21 b(Bech)f(Lauritzen)p 641 3891 V 641 4006 a(Ole)h(Laursen)1851 5662 y Fz(1)p eop %%Page: 2 4 2 3 bop 440 1233 a FC(Contents)440 1763 y Fv(1)83 b(Introduction)2217 b(4)565 1877 y Fz(1.1)86 b(Computational)21 b(Grids)43 b(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)166 b(4)756 1992 y(1.1.1)97 b(Challenges)30 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)166 b(5)756 2106 y(1.1.2)97 b(Grid)21 b(Ef)o(forts)60 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)166 b(6)565 2221 y(1.2)86 b(Nor)o(duGrid)34 b(.)41 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)166 b(7)756 2335 y(1.2.1)97 b(History)22 b(of)e(the)h(Pr)o(oject)30 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)166 b(8)756 2450 y(1.2.2)97 b(Ar)o(chitectur)o(e)19 b(and)h(Design)38 b(.)j(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)166 b(9)756 2565 y(1.2.3)97 b(Identi\002ed)21 b(Pr)o(oblems)h(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f (.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(15)565 2679 y(1.3)86 b(A)20 b(Simpler)g(Grid)h(Ar)o(chitectur)o(e)31 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)124 b(16)565 2794 y(1.4)86 b(Distributed)20 b(File)h(Systems)54 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(18)565 2908 y(1.5)86 b(System)20 b(Requir)o(ements)31 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(20)756 3023 y(1.5.1)97 b(Basic)20 b(Requir)o(ements)28 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(20)756 3137 y(1.5.2)97 b(Requir)o(ements)22 b(for)e(Design)81 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)124 b(21)565 3252 y(1.6)86 b(Pr)o(oject)20 b(Overview)66 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(21)440 3450 y Fv(2)83 b(Design)2383 b(23)565 3564 y Fz(2.1)86 b(Overview)25 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)124 b(23)756 3679 y(2.1.1)97 b(Information)22 b(Service)d (Component)63 b(.)42 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)124 b(25)756 3793 y(2.1.2)97 b(Data)20 b(Service)g(Component)81 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)124 b(26)756 3908 y(2.1.3)97 b(Resour)o(ce)21 b(Components)47 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)124 b(27)756 4022 y(2.1.4)97 b(User)20 b(Components)84 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)124 b(27)565 4137 y(2.2)86 b(Information)21 b(Service)36 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(28)756 4252 y(2.2.1)97 b(Users)20 b(and)h(Gr)o(oups)82 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)124 b(28)756 4366 y(2.2.2)97 b(Files)21 b(and)g(Dir)o(ectories)57 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(31)756 4481 y(2.2.3)97 b(Access)20 b(Contr)o(ol)74 b(.)41 b(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)124 b(32)756 4595 y(2.2.4)97 b(Pr)o(eventing)21 b(Intr)o(uders)g(in) g(the)g(Distributed)g(Hash)g(T)-8 b(able)61 b(.)42 b(.)f(.)124 b(35)756 4710 y(2.2.5)97 b(Noti\002cation)22 b(of)f(File)g(Changes)32 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) 124 b(35)756 4824 y(2.2.6)97 b(Distributed)21 b(Mutual)f(Exclusion)30 b(.)41 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(37)565 4939 y(2.3)86 b(Data)20 b(Service)54 b(.)41 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(39)756 5054 y(2.3.1)97 b(Str)o(uctur)o(e)20 b(in)h(Information)h(Service)65 b(.)42 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(39)756 5168 y(2.3.2)97 b(Replica)21 b(Locations)38 b(.)j(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)124 b(40)756 5283 y(2.3.3)97 b(Data)20 b(T)-7 b(ransfers)28 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(41)565 5397 y(2.4)86 b(Grid)20 b(Resour)o(ces)79 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(41)1851 5662 y(2)p eop %%Page: 3 5 3 4 bop 1643 211 a Ft(CONTENTS)p 440 244 2865 4 v 756 531 a Fz(2.4.1)97 b(Resour)o(ce)21 b(Registration)71 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)124 b(42)756 646 y(2.4.2)97 b(Job)21 b(Scheduling)71 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(42)756 760 y(2.4.3)97 b(Job)21 b(and)f(Resour)o(ce)h(Failur)o(es)47 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(44)756 875 y(2.4.4)97 b(Contr)o(olling)22 b(Submitted)e(Jobs)59 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) 124 b(45)756 990 y(2.4.5)97 b(Logging)68 b(.)41 b(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)124 b(45)756 1104 y(2.4.6)97 b(Batch)20 b(Cluster)h(Resour)o(ce)j(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(46)756 1219 y(2.4.7)97 b(Storage)20 b(Resour)o(ce)54 b(.)41 b(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(47)440 1416 y Fv(3)83 b(Empirical)18 b(Evaluation)g(of)k(Information) e(Service)976 b(49)565 1531 y Fz(3.1)86 b(T)-8 b(est)21 b(Implementation)71 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.) h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(49)565 1645 y(3.2)86 b(T)-8 b(est)21 b(Setup)75 b(.)41 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(50)565 1760 y(3.3)86 b(File)20 b(System)h(T)-8 b(ests)81 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(51)756 1875 y(3.3.1)97 b(Adding)21 b(Users)47 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g (.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) 124 b(51)756 1989 y(3.3.2)97 b(Over)o(head)19 b(of)i(Data)f(Block)h (Access)g(Contr)o(ol)48 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(53)756 2104 y(3.3.3)97 b(Read)20 b(and)h(W)-6 b(rite)20 b(Latency)52 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)124 b(56)565 2218 y(3.4)86 b(Distributed)20 b(Mutual)h(Exclusion)g(T)-8 b(ests)32 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(58)756 2333 y(3.4.1)97 b(Safety)22 b(.)41 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g (.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)124 b(59)756 2447 y(3.4.2)97 b(Liveness)54 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(60)756 2562 y(3.4.3)97 b(Performance)29 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(62)565 2677 y(3.5)86 b(Noti\002cation)21 b(T)-8 b(ests)62 b(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(64)756 2791 y(3.5.1)97 b(Str)o(ess)20 b(T)-8 b(est)21 b(with)h(Many)e (Subscribers)61 b(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) 124 b(65)756 2906 y(3.5.2)97 b(Str)o(ess)20 b(T)-8 b(est)21 b(with)h(Fr)o(equent)e(File)h(Modi\002cations)81 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)124 b(66)756 3020 y(3.5.3)97 b(Fault)21 b(T)-8 b(olerance)20 b(of)h(Noti\002ers)60 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) 124 b(67)440 3218 y Fv(4)83 b(Conclusion)2221 b(70)565 3332 y Fz(4.1)86 b(Summary)20 b(of)h(Pr)o(oject)f(Results)64 b(.)41 b(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) g(.)g(.)h(.)f(.)124 b(70)565 3447 y(4.2)86 b(Str)o(engths)20 b(and)g(W)-8 b(eaknesses)48 b(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(71)565 3562 y(4.3)86 b(Futur)o(e)20 b(W)-8 b(ork)50 b(.)41 b(.)h(.)f(.)g(.)h (.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) g(.)h(.)f(.)g(.)g(.)h(.)f(.)124 b(72)440 3759 y Fv(Bibliography)2277 b(74)1851 5662 y Fz(3)p eop %%Page: 4 6 4 5 bop 440 1185 a Fs(Chapter)44 b(1)440 1638 y FC(Introduction)440 2084 y Fz(In)27 b(this)h(chapter)f(we)g(pr)o(esent)f(the)i(idea)e(of)h (a)g(computational)h(grid,)e(going)j(into)f(some)440 2199 y(detail)20 b(with)i(a)f(particular)f(implementation,)h(Nor)o (duGrid)g(Advanced)e(Resour)o(ce)i(Con-)440 2313 y(nector)-6 b(,)19 b(and)h(the)f(curr)o(ent)g(pr)o(oblems)h(with)g(that)g (implementation.)g(W)-8 b(e)20 b(then)g(pr)o(opose)g(a)440 2428 y(dif)o(fer)o(ent)14 b(ar)o(chitectur)o(e,)g(r)o(eview)i(r)o (ecent)f(advances)g(within)j(the)f(\002eld)f(of)g(distributed)g(\002le) 440 2543 y(systems)22 b(for)f(supporting)g(our)h(pr)o(oposed)e(ar)o (chitectur)o(e,)f(and)h(\002nally)i(state)e(the)i(system)440 2657 y(r)o(equir)o(ements.)440 2965 y Fr(1.1)119 b(Computational)30 b(Grids)440 3169 y Fz(Ther)o(e)20 b(is)i(some)g(contr)o(oversy)f(over)g (what)g(constitutes)i(a)d(grid,)h(and)g(the)g(term)g(has)h(been)440 3284 y(much)j(hyped)f(in)h(the)g(r)o(ecent)f(years.)f(In)i(the)g (following,)h(we)e(adopt)g(this)i(de\002nition)f(by)440 3399 y(Rajkumar)c(Buyya)f([8]:)648 3579 y Ft(Grid)29 b(is)h(a)f(type)g(of)h(parallel)e(and)i(distributed)f(system)h(that)f (enables)h(the)648 3694 y(sharing,)k(selection,)h(and)e(aggr)o(egation) h(of)g(geographically)g(distributed)648 3809 y(\223autonomous\224)16 b(r)o(esour)o(ces)e(dynamically)i(at)g(r)o(untime)g(depending)g(on)g (their)648 3923 y(availability)-9 b(,)14 b(capability)-9 b(,)15 b(performance,)f(cost,)i(and)g(users')g(quality-of-service)648 4038 y(r)o(equir)o(ements.)440 4219 y Fz(The)31 b(term)g(is)h(a)f(r)o (efer)o(ence)d(to)k(the)f(power)h(grid)f([16)n(].)g(The)g(users)h(of)f (the)g(power)g(grid)440 4333 y(ar)o(e)e(oblivious)j(to)f(the)g(exact)f (natur)o(e)f(of)i(the)g(grid)f(and)h(simply)g(plug)g(in)g(their)g (appli-)440 4448 y(ances,)23 b(expecting)h(that)f(the)h(appr)o(opriate) e(amount)i(of)f(electrical)g(curr)o(ent)g(is)h(deliver)o(ed)440 4562 y(to)30 b(them.)g(Furthermor)o(e,)g(the)g(power)g(pr)o(oducers)f (can)g(range)h(fr)o(om)f(a)g(farmer)g(with)i(a)440 4677 y(small)25 b(windmill)i(in)e(his)h(\002eld)f(to)g(lar)o(ge)f(national)i (power)f(plants.)g(Potentially)h(anyone)440 4792 y(can)20 b(participate)g(in)h(the)g(power)g(grid)f(as)h(a)f(pr)o(oducer)g(or)h (consumer)-6 b(.)565 4906 y(This)32 b(concept)f(has)h(given)g(birth)f (to)h(the)g(idea)e(of)i(computational)g(grids,)f(i.e.)g(that)440 5021 y(computers)25 b(fr)o(om)g(diverse)g(locations)h(ar)o(e)d(inter)o (connected)i(to)h(let)f(users)g(shar)o(e)f(the)i(r)o(e-)440 5135 y(sour)o(ces.)19 b(The)h(idea)f(is)i(illustrated)e(in)h(Figur)o(e) g(1.1.)e(Users)i(should)g(be)g(able)f(to)h(connect)h(to)440 5250 y(the)27 b(grid)h(and)e(submit)i(tasks)g(without)g(having)g(to)g (concern)f(themselves)h(with)g(wher)o(e)440 5364 y(the)19 b(tasks)g(ar)o(e)e(r)o(un)i(\(unless)g(they)g(want)g(to\),)f(and)g(r)o (esour)o(ces)g(should)h(be)g(able)f(to)h(connect)1851 5662 y(4)p eop %%Page: 5 7 5 6 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(to)28 b(the)f(grid)g(and)f(r)o(eceive)g (tasks)h(that)g(ar)o(e)f(appr)o(opriate)f(for)i(them.)h(Resour)o(ces)f (can)g(be)440 646 y(computational)j(r)o(esour)o(ces)f(or)h(storage,)f (or)h(even)f(access)g(to)h(specialised)f(equipment)440 760 y(such)h(as)g(measur)o(ement)f(instr)o(uments.)i(The)f(goal)g(is)g (to)g(have)g(better)f(utilisation)i(and)440 875 y(wider)20 b(access)h(to)g(r)o(esour)o(ces,)e(even)i(acr)o(oss)f(traditional)g(or) o(ganisational)h(boundaries.)765 2061 y @beginspecial 39 @llx 517 @lly 460 @urx 721 @ury 1275 @rhi @setspecial %%BeginDocument: introduction/images/grid-architecture.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: grid-architecture.dvi %%BoundingBox: 39 517 460 721 %%DocumentFonts: Palatino-Roman %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o grid-architecture.eps %+ grid-architecture.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.09.27:1611 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (grid-architecture.dvi) @start /Fa 136[1108 751 801 433 563 525 1[798 725 773 1173 387 2[387 1[739 442 636 812 590 735 664 50[332 4[442 442 40[{ TeXBase1Encoding ReEncodeFont }22 1328.35 /Palatino-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 22434 a @beginspecial 0 @llx 0 @lly 288 @urx 202 @ury 2880 @rwi @setspecial %%BeginDocument: grid-architecture.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: grid-architecture.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Mon Sep 27 16:11:27 2004 %%For: olau@homer.cs.aau.dk (Ole Laursen) %%BoundingBox: 0 0 288 202 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 202 moveto 0 0 lineto 288 0 lineto 288 202 lineto closepath clip newpath -99.0 305.8 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw n 2175 3825 m 2625 3750 l gs col0 s gr % Polyline n 2475 2700 m 2700 2850 l gs col0 s gr % Polyline n 3000 1875 m 3375 2175 l gs col0 s gr % Polyline n 5625 1875 m 5250 2250 l gs col0 s gr % Polyline n 6300 2775 m 5700 3000 l gs col0 s gr % Polyline n 5775 3675 m 6375 3675 l gs col0 s gr % Polyline n 5475 4275 m 5775 4575 l gs col0 s gr % Polyline n 2550 4500 m 2775 4350 l gs col0 s gr % Polyline 2 slj 30.000 slw [15 30] 30 sd n 3138 2338 m 3112 2358 l 3087 2378 l 3062 2400 l 3038 2421 l 3014 2444 l 2991 2467 l 2968 2491 l 2945 2516 l 2923 2541 l 2901 2568 l 2880 2595 l 2859 2623 l 2839 2651 l 2819 2681 l 2800 2711 l 2781 2742 l 2764 2774 l 2747 2806 l 2731 2839 l 2715 2872 l 2701 2906 l 2688 2940 l 2675 2975 l 2664 3009 l 2653 3044 l 2644 3079 l 2635 3114 l 2628 3150 l 2621 3185 l 2615 3220 l 2611 3256 l 2607 3292 l 2604 3328 l 2602 3364 l 2600 3401 l 2600 3438 l 2600 3473 l 2601 3509 l 2603 3546 l 2606 3583 l 2610 3622 l 2614 3660 l 2619 3700 l 2625 3740 l 2632 3781 l 2640 3823 l 2649 3865 l 2659 3908 l 2670 3951 l 2681 3994 l 2694 4038 l 2707 4081 l 2722 4125 l 2737 4168 l 2754 4212 l 2771 4254 l 2789 4296 l 2808 4338 l 2827 4379 l 2847 4419 l 2868 4458 l 2889 4496 l 2912 4532 l 2934 4568 l 2957 4602 l 2981 4635 l 3005 4666 l 3030 4697 l 3055 4726 l 3080 4753 l 3106 4779 l 3133 4804 l 3160 4828 l 3188 4850 l 3214 4870 l 3242 4889 l 3271 4907 l 3300 4924 l 3330 4940 l 3361 4956 l 3393 4970 l 3425 4983 l 3459 4995 l 3493 5007 l 3529 5017 l 3565 5026 l 3602 5035 l 3640 5042 l 3679 5048 l 3718 5053 l 3758 5057 l 3798 5060 l 3839 5062 l 3880 5063 l 3921 5063 l 3963 5062 l 4004 5059 l 4046 5056 l 4087 5052 l 4128 5046 l 4169 5040 l 4210 5033 l 4250 5025 l 4290 5016 l 4330 5007 l 4369 4996 l 4407 4985 l 4445 4973 l 4482 4961 l 4519 4947 l 4555 4933 l 4592 4919 l 4627 4903 l 4663 4888 l 4699 4870 l 4736 4851 l 4773 4832 l 4810 4812 l 4847 4791 l 4883 4769 l 4920 4745 l 4957 4721 l 4994 4696 l 5030 4670 l 5067 4642 l 5103 4614 l 5139 4585 l 5175 4555 l 5211 4524 l 5245 4492 l 5280 4459 l 5313 4426 l 5346 4392 l 5378 4358 l 5409 4323 l 5440 4288 l 5469 4252 l 5496 4217 l 5523 4181 l 5549 4145 l 5573 4109 l 5595 4074 l 5617 4038 l 5637 4003 l 5656 3967 l 5673 3932 l 5689 3897 l 5704 3863 l 5717 3828 l 5729 3794 l 5740 3759 l 5750 3725 l 5759 3689 l 5766 3652 l 5773 3615 l 5778 3578 l 5782 3540 l 5784 3502 l 5785 3464 l 5785 3425 l 5784 3385 l 5782 3345 l 5778 3305 l 5773 3264 l 5767 3224 l 5760 3183 l 5751 3142 l 5742 3101 l 5731 3060 l 5720 3019 l 5707 2979 l 5693 2939 l 5679 2900 l 5664 2861 l 5648 2823 l 5631 2786 l 5614 2749 l 5596 2714 l 5578 2679 l 5560 2646 l 5541 2613 l 5521 2582 l 5502 2551 l 5482 2522 l 5462 2493 l 5441 2466 l 5421 2439 l 5400 2413 l 5378 2386 l 5355 2359 l 5331 2334 l 5307 2308 l 5283 2284 l 5257 2260 l 5231 2236 l 5204 2213 l 5177 2191 l 5148 2169 l 5119 2147 l 5089 2126 l 5059 2106 l 5028 2087 l 4996 2069 l 4964 2051 l 4931 2034 l 4898 2018 l 4864 2004 l 4831 1990 l 4797 1977 l 4763 1965 l 4729 1954 l 4695 1944 l 4662 1936 l 4628 1928 l 4595 1921 l 4561 1915 l 4528 1911 l 4495 1907 l 4462 1904 l 4429 1902 l 4396 1900 l 4363 1900 l 4331 1900 l 4299 1901 l 4266 1903 l 4233 1906 l 4200 1909 l 4166 1913 l 4131 1918 l 4096 1924 l 4061 1930 l 4024 1938 l 3988 1946 l 3951 1955 l 3913 1964 l 3875 1975 l 3837 1986 l 3799 1998 l 3761 2011 l 3723 2024 l 3685 2038 l 3647 2052 l 3610 2068 l 3574 2083 l 3537 2099 l 3502 2116 l 3467 2133 l 3433 2150 l 3400 2168 l 3367 2186 l 3336 2204 l 3305 2222 l 3275 2241 l 3246 2260 l 3218 2279 l 3190 2298 l 3164 2318 l cp gs col0 s gr [] 0 sd /Times-Bold ff 360.00 scf sf 4140 3540 m gs 1 -1 sc (grid) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 0 0 0 TeXcolorrgb -3558 19460 a Fa(instr)-11 b(ument)333 b(r)-24 b(esour)g(ce)p Black 0 0 0 TeXcolorrgb 5395 960 a(grid)331 b(user)p Black 0 0 0 TeXcolorrgb -2560 15460 a(\(for)i(monitoring\))p Black 0 0 0 TeXcolorrgb -1156 20860 a(\(e.g.)412 b(telescope\))p Black 0 0 0 TeXcolorrgb -1232 14060 a(web)331 b(server)p Black 0 0 0 TeXcolorrgb -2357 6560 a(storage)i(r)-24 b(esour)g(ce)p Black 0 0 0 TeXcolorrgb 34215 13260 a(grid)330 b(user)p Black 0 0 0 TeXcolorrgb 30215 19460 a(storage)i(r)-24 b(esour)g(ce)p Black 0 0 0 TeXcolorrgb 29215 1060 a(computational)332 b(r)-24 b(esour)g(ce)p Black 0 0 0 TeXcolorrgb 33715 7060 a(cluster)331 b(r)-24 b(esour)g(ce)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 894 2249 a Fq(Figur)o(e)d(1.1:)28 b(A)18 b(conceptual)h(view)g(of)g(a)g(grid)g(with)f(r)o(esour)o(ces)h(and)g (users.)565 2461 y Fz(T)-8 b(aking)30 b(the)f(idea)g(to)h(the)g(extr)o (eme)e(one)i(can)f(imagine)h(one)g(giant)g(computational)440 2575 y(grid)24 b(consisting)j(of)d(all)g(computers)h(connected)f(to)h (the)g(Internet.)f(But)g(curr)o(ently)g(most)440 2690 y(users)f(seem)g(to)g(be)f(scientists)i(with)f(demanding)g (computational)h(tasks,)e(and)h(the)f(grid)440 2804 y(designs)g(ar)o(e) e(either)h(gear)o(ed)e(towar)o(ds)i(utilising)h(high-performance)f (computing)h(clus-)440 2919 y(ters)d(as)h(the)f(r)o(esour)o(ces,)g(or)g (scr)o(een)g(saver)g(science)g(wher)o(e)g(or)o(dinary)g(desktop)h (machines)440 3033 y(work)32 b(on)h(small)f(part)e(of)i(a)f(pr)o(oblem) h(when)g(the)g(pr)o(ocessor)f(is)h(idle.)f(A)h(popular)f(ex-)440 3148 y(ample)e(of)g(the)g(latter)g(is)h(the)f(SETI@home)g(\(Sear)o(ch)e (for)i(Extraterr)o(estial)e(Intelligence\))440 3263 y(pr)o(oject)c([43) n(],)g(which)h(is)f(an)g(ef)o(fort)f(to)i(analyse)f(radio)f(telescope)h (data)f(for)h(signals)h(fr)o(om)440 3377 y(intelligent)e(beings.)440 3637 y Fp(1.1.1)99 b(Challenges)440 3810 y Fz(Since)28 b(a)g(grid)g(by)h(natur)o(e)f(is)g(a)g(lar)o(ge)g(distributed)g(system) h(that)f(spans)h(many)g(or)o(gani-)440 3925 y(sations,)c(ther)o(e)g(ar) o(e)e(several)h(challenges)h(that)g(must)g(be)g(over)o(come)f(in)i(the) f(design)g(of)g(a)440 4039 y(grid:)565 4237 y Fo(\017)41 b Fz(Security)-9 b(.)29 b(The)h(security)h(model)g(must)g(be)f (\003exible)g(enough)i(to)f(support)f(mod-)648 4352 y(elling)d(the)g (diverse)f(conditions)j(in)e(the)g(various)g(or)o(ganisations)g(\226)g (the)g(local)g(r)o(e-)648 4466 y(sour)o(ce)i(policies)h(must)h(be)e(r)o (espected)f(\226)i(and)f(modelling)i(of)f(virtual)f(or)o(ganisa-)648 4581 y(tions)18 b([17)n(])f(spanning)h(multiple)g(or)o(ganisation)f (for)g(r)o(esour)o(ce)f(sharing.)h(This)h(pr)o(ob-)648 4695 y(lem)34 b(includes)h(authentication)h(and)e(authorisation)h(of)g (users)g(and)f(r)o(esour)o(ces,)648 4810 y(and)20 b(enfor)o(cement)g (of)h(access)f(contr)o(ol.)565 4991 y Fo(\017)41 b Fz(High)22 b(availability)e(and)h(fault-tolerance.)f(A)h(lar)o(ge)f(grid)h(will)h (continually)h(suf)o(fer)648 5105 y(har)o(dwar)o(e)e(failur)o(es)i(and) g(must)i(be)e(able)g(to)i(cope)e(gracefully)g(with)i(them)f(and)g(at) 648 5220 y(the)c(same)g(time)h(stay)f(up.)g(It)h(should)g(also)g(take)f (pr)o(ecautions)f(against)i(losing)g(jobs)648 5335 y(and)f(data.)1851 5662 y(5)p eop %%Page: 6 8 6 7 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 565 531 a Fo(\017)41 b Fz(Flexibility)-9 b(.)23 b(Much)g(is)h(expected)e(of)h(grid)h(technology)-9 b(,)24 b(so)g(a)f(grid)g(design)g(should)648 646 y(pr)o(eferably)18 b(be)j(\003exible)f(enough)i(to)f(be)g(able)f(to)h(support)g(futur)o(e) f(use)g(cases.)565 827 y Fo(\017)41 b Fz(Ease)24 b(of)i(use.)g(A)f (successful)h(grid)f(r)o(elies)g(on)i(many)f(parties)f(adopting)h(the)f (idea,)648 941 y(r)o(eaching)c(a)h(critical)g(mass,)h(so)g(it)f(must)h (not)h(be)e(too)h(dif)o(\002cult)f(or)g(cumbersome)h(to)648 1056 y(use)d(or)h(setup)g(a)f(r)o(esour)o(ce)g(for)g(the)h(grid.)565 1237 y Fo(\017)41 b Fz(Scalability)-9 b(.)24 b(A)h(grid)g(must)h(be)f (able)g(scale)g(to)g(a)g(lar)o(ge)f(number)i(of)f(users)h(and)f(r)o(e-) 648 1352 y(sour)o(ces.)30 b(This)h(af)o(fects)e(both)i(administration)h (of)e(the)h(grid)g(and)f(the)h(operation)648 1466 y(of)25 b(the)h(softwar)o(e)e(itself)i(\226)f(e.g.)g(is)h(it)g(not)g(possible)g (for)f(a)g(design)h(that)g(r)o(elies)f(on)h(a)648 1581 y(central)20 b(authority)h(to)g(scale)f(to)i(something)g(the)f(size)f (of)h(the)g(Internet.)565 1762 y Fo(\017)41 b Fz(Privacy)-9 b(.)28 b(Pr)o(otecting)h(the)g(privacy)f(of)h(information)h(when)g (submitting)g(jobs)g(to)648 1876 y(the)g(grid.)h(Jobs)f(can)h(work)g (on)g(valuable)f(data)f(sets,)i(and)f(situations)i(can)e(arise)648 1991 y(wher)o(e)25 b(it)i(is)g(unacceptable)e(that)i(these)f(data)g (can)g(be)g(inter)o(cepted)f(and)h(r)o(ead)f(by)648 2105 y(anyone)c(other)g(than)g(the)g(job)g(itself)g(and)f(the)h(submitter)-6 b(.)565 2286 y Fo(\017)41 b Fz(Accounting.)20 b(High)g(performance)f (computing)i(r)o(esour)o(ces)e(ar)o(e)f(not)j(cheap)e(to)h(ac-)648 2401 y(quir)o(e)e(and)g(maintain.)g(So)g(as)h(it)f(is)h(the)f(case)g (with)h(the)g(power)f(grid,)g(accounting)h(of)648 2516 y(r)o(esour)o(ces)j(spent)i(by)g(consumers)g(is)h(needed)d(if)i(the)g (grid)f(is)h(not)h(to)f(be)f(operated)648 2630 y(gratis.)16 b(This)i(can)f(be)f(imagined)i(to)f(evolve)g(into)h(grid)f(economy)h (wher)o(e)e(r)o(esour)o(ces)648 2745 y(r)o(eceive)j(micr)o(opayments)i (fr)o(om)f(job)i(submitters)f(in)g(r)o(eturn)f(for)h(r)o(unning)h (jobs.)565 2926 y Fo(\017)41 b Fz(Portability)22 b(and)g(heter)o (ogeneity)-9 b(.)22 b(The)g(portability)g(of)g(the)g(grid)g(softwar)o (e)g(is)g(also)648 3040 y(important.)h(Ideally)f(ther)o(e)g(should)h (be)g(no)g(technical)g(boundary)f(pr)o(eventing)h(r)o(e-)648 3155 y(sour)o(ces)d(fr)o(om)h(participating)f(in)i(the)f(grid.)f(But)h (even)g(if)f(the)i(grid)e(softwar)o(e)g(itself)648 3269 y(is)g(portable,)g(the)h(pr)o(oblem)f(of)h(making)g(the)g(job)g (softwar)o(e)e(r)o(un)i(on)h(diverse)d(ar)o(chi-)648 3384 y(tectur)o(es)g(r)o(emains.)565 3582 y(None)g(of)g(these)g(issues) h(ar)o(e)e(trivially)h(solved.)g(The)g(curr)o(ent)f(grid)h(designs,)g (of)g(which)440 3696 y(some)f(ar)o(e)e(r)o(eviewed)g(in)i(the)f(next)h (section,)f(have)g(mostly)i(dealt)d(successfully)i(with)g(only)440 3811 y(a)25 b(subset)i(of)f(them.)g(A)f(single)i(design)f(that)g(is)h (\003exible)f(enough)h(to)f(cover)g(all)f(grid)h(use)440 3925 y(cases)i(and)g(at)f(the)i(same)f(time)g(pr)o(oves)g(to)h(solve)f (the)g(other)h(issues)g(has)f(yet)g(to)h(r)o(eveal)440 4040 y(itself.)440 4300 y Fp(1.1.2)99 b(Grid)25 b(Ef)n(forts)440 4473 y Fz(Ther)o(e)j(exists)h(several)f(grid)g(toolkits)j(for)d(aiding) h(the)g(implementation)h(of)f(grids)g(and)440 4588 y(work)21 b(has)g(also)g(been)g(done)f(to)i(form)e(standar)o(ds)g(for)g(grid)h (ar)o(chitectur)o(es.)565 4702 y(The)26 b(Globus)h(Alliance)f(is)h (developing)f(a)g(toolkit)i(for)e(building)h(a)e(grid,)h(including)440 4817 y(frameworks)20 b(for)g(building)i(information)f(systems)g(for)g (r)o(egistration)f(of)g(r)o(esour)o(ces)g(and)440 4931 y(user)k(authentication,)g(r)o(eplica)f(location)i(systems)g(for)f (management)g(of)g(data,)f(and)h(di-)440 5046 y(r)o(ect)16 b(interfaces)g(to)i(r)o(esour)o(ces.)e(The)h(Globus)h(T)-8 b(oolkit)18 b(is)g(curr)o(ently)e(working)j(on)e(a)g(fourth)440 5160 y(version,)27 b(wher)o(e)f(the)h(major)g(focus)f(seems)h(to)g(be)f (on)i(standar)o(dising)e(communication)440 5275 y(as)20 b(web)h(services)g([19)n(].)1851 5662 y(6)p eop %%Page: 7 9 7 8 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 565 531 a Fz(Parts)26 b(of)g(the)g(Globus)i(T)-8 b(oolkit)28 b(has)e(been)g(used)g(as)g(the)h(basis)f(for)g(several)g (grid)g(so-)440 646 y(lutions,)f(both)g(in)g(national)f(grids)g(and)g (international)h(ef)o(forts.)e(One)h(of)g(the)h(lar)o(ger)d(cur)o(-)440 760 y(r)o(ently)g(operating)h(grids)f(is)h(Nor)o(duGrid,)f(discussed)g (in)h(further)f(detail)g(in)h(Section)g(1.2.)440 875 y(Other)i(lar)o(ge)f(grids)h(include)g(the)g(Lar)o(ge)f(Hadr)o(on)g (Collider)h(Grid)g(Computing)h(Pr)o(oject)440 990 y([29)o(])18 b(at)g(CERN,)g(the)h(Grid)f(Physics)i(Network)f(\(GriPhyN\))f([5])g (and)g(T)-8 b(eragrid)17 b([9])h(\(which)440 1104 y(both)j(ar)o(e)f (developed)g(and)g(r)o(un)h(by)g(American)f(universities\).)565 1219 y(Ther)o(e)j(ar)o(e,)f(however)-6 b(,)24 b(other)g(grids)g(that)g (ar)o(e)f(not)i(based)e(on)h(Globus.)h(Uniform)f(In-)440 1333 y(terface)15 b(to)i(Computing)g(Resour)o(ces)g(\(UNICORE\))f([50)n (])g(is)h(a)f(mostly)i(German)f(grid)f(solu-)440 1448 y(tion)i(wher)o(e)e(the)h(middlewar)o(e)f(is)h(implemented)h(entir)o (ely)e(in)i(Java)e(to)h(facilitate)f(r)o(unning)440 1562 y(the)21 b(softwar)o(e)f(in)h(heter)o(ogeneous)g(envir)o(onments.)565 1677 y(Distributed)32 b(Infrastr)o(uctur)o(e)f(with)i(Remote)g(Agent)f (Contr)o(ol)g(\(DIRAC\))g([49)n(])g(is)h(a)440 1792 y(grid)16 b(middlewar)o(e)e(pr)o(ogrammed)h(in)h(Python)h(and)f(based)f(on)h(a)f (pull)h(model)g(of)g(schedul-)440 1906 y(ing)21 b(wher)o(e)f(r)o(esour) o(ces)f(themselves)h(r)o(equest)g(tasks)g(fr)o(om)g(the)h(central)e (job)i(queue)g(when)440 2021 y(they)30 b(ar)o(e)f(r)o(eady)-9 b(,)27 b(as)j(opposed)g(to)g(e.g.)f(Nor)o(duGrid)h(wher)o(e)f(the)h(r)o (esour)o(ces)e(passively)440 2135 y(r)o(eceive)19 b(jobs.)565 2250 y(Grid)e(Datafarm)f([46)o(])h(is)h(both)g(a)f(grid)g(middlewar)o (e)f(and)h(a)h(plan)f(for)g(how)i(to)e(arrange)440 2364 y(the)k(har)o(dwar)o(e)d(for)i(data)g(intensive)h(computing.)g(The)g (idea)f(is)h(to)f(setup)h(the)g(participat-)440 2479 y(ing)29 b(clusters)g(so)g(that)g(each)f(cluster)h(node)f(has)h(its)g (own)h(fast)e(and)g(lar)o(ge)g(disk)h(system)440 2594 y(\(thr)o(ough)18 b(RAID)g(striping\).)h(The)e(grid)h(middlewar)o(e)f (takes)h(car)o(e)e(of)i(moving)h(input)f(data)440 2708 y(to)25 b(the)g(nodes)g(so)g(that)g(they)f(have)h(dir)o(ect)e(access)h (to)h(it)g(\226)f(it)h(tries)g(to)g(do)f(this)i(ef)o(\002ciently)440 2823 y(by)21 b(taking)g(data)f(locations)h(and)g(transfer)e(costs)j (into)f(account)g(in)g(its)h(scheduling.)565 2937 y(All)g(of)g(the)h (above)e(ar)o(e)g(basically)h(aimed)g(at)g(combining)i(clusters,)e(lar) o(ge)f(batch)h(sys-)440 3052 y(tems,)c(into)g(a)f(grid)h(as)f(an)g (even)h(lar)o(ger)e(batch)h(system.)h(Another)g(model)g(is)g(to)g(try)f (to)h(hide)440 3166 y(the)f(distributed)f(natur)o(e)f(of)i(the)f(grid)g (by)h(adopting)g(a)e(distributed)i(operating)f(system)h(or)440 3281 y(object)k(system.)h(Legion)f(is)g(an)g(ef)o(fort)e(to)j (assimilate)e(computers)i(into)f(one)g(world-wide)440 3396 y(virtual)g(computer)-6 b(.)22 b(In)g(contrast)g(to)g(the)g (Globus)g(T)-8 b(oolkit,)23 b(Legion)f(is)h(an)e(integrated)g(so-)440 3510 y(lution)k(that)e(does)h(not)g(use)g(existing)g(services)f(and)g (technologies,)i(but)f(instead)f(has)h(its)440 3625 y(own)e(uni\002ed)f (object)g(model)g([28)o(].)565 3739 y(The)e(grid)h(models)h(that)f(ar)o (e)e(aimed)i(at)f(utilising)j(idle)d(desktop)i(machines)f(also)g(pr)o (o-)440 3854 y(vide)26 b(a)g(specialised)g(ar)o(chitectur)o(e.)e(Some)i (examples)g(of)g(pr)o(ojects)g(ar)o(e)f(Berkeley)h(Open)440 3968 y(Infrastr)o(uctur)o(e)i(for)h(Network)g(Computing)i(\(BOINC\))d ([2)o(])h(which)h(is)f(the)h(underlying)440 4083 y(technology)e(used)f (for)f(SETI@Home)h(among)g(others,)g(distributed.net)f([12)o(])g(which) i(is)440 4198 y(cracking)21 b(encryption)g(algorithms,)h(and)e(Alchemi) h(which)g(is)h(a)e(.NET)g(framework)g([1)o(].)440 4506 y Fr(1.2)119 b(NorduGrid)440 4710 y Fz(The)27 b(Nor)o(duGrid)f(pr)o (oject)h(started)f(in)i(May)e(2001)f(as)i(a)f(collaborative)h(ef)o (fort)e(between)440 4824 y(r)o(esear)o(ch)h(centers)h(in)h(Denmark,)f (Norway)-9 b(,)27 b(Sweden)g(and)g(Finland.)h(The)f(pr)o(oject)g(was) 440 4939 y(initially)f(named)e(the)h(Nor)o(dic)f(T)-8 b(estbed)24 b(for)h(W)-5 b(ide)25 b(Ar)o(ea)e(Computing)i(and)g(Data)f (Han-)440 5054 y(dling)30 b([15)o(].)f(Continuous)i(development)e(and)g (challenges)h(has)g(matur)o(ed)e(the)i(pr)o(oject)440 5168 y(beyond)23 b(the)h(state)e(of)h(a)g(testbed)f(and)h(into)h(a)f (stable)f(grid.)h(At)g(pr)o(esent)f(the)h(grid)g(devel-)440 5283 y(opment,)g(r)o(esour)o(ces)f(and)h(usage)f(ar)o(e)g(administer)o (ed)g(by)h(the)g(Nor)o(dic)f(Data)h(Grid)g(Facil-)440 5397 y(ity)i(\(NDGF\),)g(which)g(is)h(part)e(of)g(the)h(North)g(Eur)o (opean)f(Grid)h(Consortium.)h(The)f(grid,)1851 5662 y(7)p eop %%Page: 8 10 8 9 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(however)-6 b(,)21 b(is)g(still)g(r)o (efer)o(ed)d(to)j(as)g(Nor)o(duGrid.)565 646 y(The)27 b(middlewar)o(e)f(developed)g(by)i(NDGF)g(is)f(called)g(the)g(Nor)o (duGrid)g(Advanced)440 760 y(Resour)o(ce)c(Connector)-6 b(,)24 b(or)f(simply)h(the)g(Nor)o(duGrid)e(ARC.)h(This)h(section)g(pr) o(esents)f(the)440 875 y(purpose)k(and)f(the)h(pr)o(esent)f(state)h(of) g(Nor)o(duGrid)f(and)g(the)h(ar)o(chitectur)o(e)e(of)i(the)g(Nor)o(-) 440 990 y(duGrid)21 b(ARC,)g(and)g(concludes)g(with)i(a)d(discussion)j (of)e(the)g(pr)o(oblems)h(in)f(the)h(ar)o(chitec-)440 1104 y(tur)o(e,)e(design)h(and)f(implementation.)440 1364 y Fp(1.2.1)99 b(History)26 b(of)f(the)g(Project)440 1537 y Fz(The)19 b(purpose)g(of)g(the)g(Nor)o(duGrid)g(pr)o(oject)g (was)g(to)g(cr)o(eate)e(a)i(testbed)g(for)f(a)h(Nor)o(dic)f(grid)440 1652 y(infrastr)o(uctur)o(e)f(and)h(eventually)g(to)h(develop)f(a)g (grid)g(that)g(meets)g(the)h(r)o(equir)o(ements)f(for)440 1767 y(participating)j(in)g(the)h(A)-6 b(TLAS)19 b(experiment)i([15)o (].)g(A)-6 b(TLAS,)19 b(A)i(T)-8 b(or)o(oidal)21 b(LHC)f(Appara-)440 1881 y(tuS,)g(is)h(a)g(detector)f(for)h(conducting)g(high-ener)o(gy)g (particle)f(physics)i(experiments)e(that)440 1996 y(involve)k(head-on)g (collisions)h(of)f(pr)o(otons)g(with)h(very)e(high)i(ener)o(gy)-9 b(.)23 b(The)g(pr)o(otons)i(will)440 2110 y(be)f(accelerated)d(in)j (the)g(Lar)o(ge)f(Hadr)o(on)g(Collider)-6 b(,)23 b(an)h(under)o(gr)o (ound)f(accelerator)f(ring)440 2225 y(27)29 b(kilometr)o(es)i(in)g(cir) o(cumfer)o(ence)e(at)h(the)g(CERN)h(Laboratory)e(in)i(Switzerland.)e (The)440 2339 y(A)-6 b(TLAS)17 b(experiments)h(have)g(ar)o(ound)f(1800) g(physicists)i(participating)f(fr)o(om)g(mor)o(e)g(than)440 2454 y(150)h(universities)i(in)f(34)g(countries;)g(the)g(actual)g (experiments)g(ar)o(e)f(planned)h(to)g(begin)h(in)440 2569 y(2007)e([4)o(].)565 2683 y(The)33 b(experiments)g(ar)o(e)e (expected)h(to)i(generate)e(12-14)f(petabytes)h(data)g(per)h(year)440 2798 y(that)25 b(needs)g(to)g(be)g(analysed.)f(T)-8 b(o)26 b(pr)o(epar)o(e)c(the)j(participating)g(entities)h(for)e(these)i(mas-) 440 2912 y(sive)f(amounts)h(of)f(data,)f(the)i(A)-6 b(TLAS)23 b(Data)i(Challenges)g(have)g(been)g(posed.)g(The)g(\002rst)440 3027 y(of)20 b(these)h(data)e(challenges)h(ran)g(thr)o(oughout)h(2002)d (and)i(was)g(completed)g(in)h(2003.)d(Nor)o(-)440 3141 y(duGrid)j(was)f(the)h(Scandinavian)f(contribution)i(to)f(this)h (challenge)e([14)o(].)565 3256 y(During)29 b(the)g(initial)g(phase)f (of)h(designing)h(the)e(grid,)h(the)f(fundamental)h(idea)e(was)440 3370 y(that)32 b(Nor)o(duGrid)g(should)h(be)f(built)h(on)g(existing)g (pieces)f(of)g(working)i(grid)e(middle-)440 3485 y(war)o(e)f(and)h(the) g(amount)h(of)f(softwar)o(e)g(development)g(within)h(the)g(pr)o(oject)f (kept)g(at)g(a)440 3600 y(minimum.)22 b(Once)e(the)g(basic)g (functionality)h(was)f(in)h(place)f(the)g(middlewar)o(e)f(was)h(to)h (be)440 3714 y(further)f(extended,)g(gradually)g(turning)i(the)f (testbed)f(into)i(a)e(pr)o(oduction)h(grid.)f(And)h(at)440 3829 y(the)29 b(start)g(of)g(the)h(Nor)o(duGrid)e(pr)o(oject)h(in)h (May)e(2001)g(a)g(general)h(design)h(philosophy)440 3943 y(was)21 b(formulated)f(as)g(follows:)565 4124 y Fo(\017)41 b Fz(Start)19 b(with)j(simple)f(things)h(that)f(work)g(and)f(pr)o (oceed)g(fr)o(om)g(ther)o(e)565 4305 y Fo(\017)41 b Fz(A)-8 b(void)20 b(ar)o(chitectural)g(single)h(points)h(of)f(failur)o(e)565 4486 y Fo(\017)41 b Fz(Should)21 b(be)f(scalable)565 4667 y Fo(\017)41 b Fz(Resour)o(ce)20 b(owners)h(r)o(etain)f(full)h (contr)o(ol)g(of)g(their)g(r)o(esour)o(ces)565 4848 y Fo(\017)41 b Fz(As)20 b(few)h(site)f(r)o(equir)o(ements)h(as)f (possible)747 5029 y Fv(\226)41 b Fz(No)21 b(dictation)g(of)g(cluster)g (con\002guration)h(or)e(install)i(method)747 5177 y Fv(\226)41 b Fz(No)21 b(dependence)f(on)h(a)g(particular)e(operating)i(system)g (or)g(version)565 5358 y Fo(\017)41 b Fz(Reuse)21 b(existing)g(system)g (installations)h(as)f(much)g(as)g(possible)1851 5662 y(8)p eop %%Page: 9 11 9 10 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 565 531 a Fo(\017)41 b Fz(The)20 b(Nor)o(duGrid)g (middlewar)o(e)g(is)h(only)h(r)o(equir)o(ed)d(on)i(a)g(fr)o(ont-end)f (machine)565 712 y Fo(\017)41 b Fz(Computational)21 b(r)o(esour)o(ces)e (ar)o(e)h(not)h(r)o(equir)o(ed)f(to)h(be)f(on)i(a)e(public)h(network) 565 893 y Fo(\017)41 b Fz(Clusters)20 b(need)h(not)g(be)g(dedicated)e (to)i(grid)f(jobs)440 1074 y(Existing)36 b(toolkits)i(wer)o(e)c(then)j (examined)e(to)h(decide)f(on)h(which)h(to)f(base)f(the)h(Nor)o(-)440 1189 y(duGrid)28 b(middlewar)o(e.)f(The)i(available)e(possibilities)j (wer)o(e)e(narr)o(owed)f(down)j(to)f(two)440 1303 y(alternatives;)c (the)g(Globus)i(T)-8 b(oolkit)27 b(and)f(the)f(softwar)o(e)g(developed) g(by)h(the)f(Eur)o(opean)440 1418 y(DataGrid)i(pr)o(oject)h(\(EDG\).)g (But)f(the)i(initial)f(idea)f(to)i(use)f(only)h(existing)g(middlewar)o (e)440 1533 y(components,)17 b(and)e(not)i(having)f(to)g(develop)f(any) h(softwar)o(e)f(in)h(the)g(pr)o(oject)g(soon)h(pr)o(oved)440 1647 y(impossible)22 b(to)f(r)o(ealize.)565 1762 y(The)30 b(Globus)i(T)-8 b(oolkit)32 b(lacked)e(job)h(br)o(okering)g(facilities) f(and)g(the)h(Grid)g(Resour)o(ce)440 1876 y(Allocation)25 b(Manager)e(seemed)h(unable)g(to)h(handle)f(the)h(lar)o(ge)e(amounts)i (of)g(input)g(and)440 1991 y(output)c(data.)e(The)h(EDG)g(softwar)o(e)g (seemed)f(to)i(alleviate)e(many)i(of)f(the)g(de\002ciencies)g(of)440 2105 y(the)g(Globus)i(T)-8 b(oolkit,)21 b(but)f(was)g(not)h(available)e (in)i(a)e(matur)o(e)g(state)h(\(in)h(the)f(beginning)h(of)440 2220 y(2002\).)26 b(Furthermor)o(e,)h(the)i(softwar)o(e)e(fr)o(om)h (EDG)g(employed)g(a)g(centralised)g(r)o(esour)o(ce)440 2335 y(br)o(okering)g(scheme)g(possibly)h(becoming)g(a)e(major)i (bottleneck.)f(The)g(Globus)h(T)-8 b(oolkit)440 2449 y(was)20 b(decided)f(upon)h(as)g(the)g(basic)g(foundation)g(for)g(the)g (Nor)o(duGrid)g(ARC.)g(Hence,)f(the)440 2564 y(Nor)o(duGrid)24 b(ARC)h(was)g(built)g(on)g(top)g(of)g(Globus)g(by)g(extending)g(and)f (modifying)i(the)440 2678 y(existing)21 b(components)i(of)d(the)h (toolkit)h([15)o(].)440 2938 y Fp(1.2.2)99 b(Architecture)24 b(and)h(Design)440 3111 y Fz(The)k(Nor)o(duGrid)g(tools)i(ar)o(e)d (designed)h(to)h(handle)f(the)h(aspects)f(of)g(using,)h(maintain-)440 3226 y(ing)22 b(and)e(administrating)h(a)g(grid.)f(This)i(includes)f (job)g(submission)i(and)d(management,)440 3341 y(user)26 b(management,)f(data)g(management)h(and)f(monitoring.)j(The)e(thr)o(ee) f(most)i(impor)o(-)440 3455 y(tant)21 b(parts)f(of)h(the)g(Nor)o (duGrid)f(ARC)g(ar)o(chitectur)o(e)f(ar)o(e:)565 3636 y Fo(\017)41 b Fz(A)20 b(client-server)f(ar)o(chitectur)o(e)g(for)h (the)h(r)o(esour)o(ces)f(wher)o(e)f(each)h(cluster)h(has)g(r)o(uns)648 3751 y(a)i(server)-6 b(,)24 b(the)g(grid)g(manager)-6 b(,)24 b(which)h(is)g(contacted)f(dir)o(ectly)f(by)i(the)f(grid)g (users)648 3865 y(that)c(wish)i(to)f(submit)h(jobs.)565 4046 y Fo(\017)41 b Fz(A)20 b(hierar)o(chically)h(distributed)f (system,)i(the)f(information)i(service,)d(for)h(r)o(egister)o(-)648 4161 y(ing)g(the)g(r)o(esour)o(ces)e(so)j(that)e(the)h(users)g(can)g (discover)f(them.)565 4342 y Fo(\017)41 b Fz(A)29 b(client-server)h(ar) o(chitectur)o(e)e(for)i(the)g(data)f(distribution)j(in)e(the)h(form)f (of)g(\002le)648 4456 y(servers)20 b(that)g(ar)o(e)g(accessed)f(with)j (an)f(extended)e(version)j(of)e(FTP)-11 b(,)21 b(GridFTP)-11 b(.)440 4637 y(W)j(e)23 b(\002rst)f(illustrate)h(the)f(ar)o(chitectur)o (e)f(with)i(an)f(example)g(of)g(the)h(task)f(\003ow)h(when)g(sub-)440 4752 y(mitting)h(a)f(job)g(and)g(then)g(afterwar)o(ds)e(describe)h (some)i(of)f(the)g(components)h(of)f(the)g(de-)440 4867 y(sign.)440 5108 y Fv(Job)e(Submission)e(T)-9 b(ask)20 b(Flow)440 5281 y Fz(A)d(job)i(submission)h(scenario)e(is)g(depicted)f (in)h(Figur)o(e)g(1.2)e(wher)o(e)h(the)h(numbers)h(indicate)440 5395 y(the)i(or)o(der)f(of)g(the)h(tasks)g(involved)g(in)g(submitting)i (a)d(job.)1851 5662 y(9)p eop %%Page: 10 12 10 11 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 488 1960 a @beginspecial 0 @llx 0 @lly 714 @urx 393 @ury 1814 @rhi @setspecial %%BeginDocument: introduction/images/nordugrid_overview.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: nordugrid_overview.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue Oct 26 12:35:48 2004 %%For: rak@bad (Rasmus Aslak Kjær) %%BoundingBox: 0 0 714 393 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {0.761 0.761 0.761 srgb} bind def /col33 {0.431 0.431 0.431 srgb} bind def /col34 {0.267 0.267 0.267 srgb} bind def /col35 {0.557 0.561 0.557 srgb} bind def /col36 {0.443 0.443 0.443 srgb} bind def /col37 {0.682 0.682 0.682 srgb} bind def /col38 {0.200 0.200 0.200 srgb} bind def /col39 {0.580 0.576 0.584 srgb} bind def /col40 {0.455 0.439 0.459 srgb} bind def /col41 {0.333 0.333 0.333 srgb} bind def /col42 {0.702 0.702 0.702 srgb} bind def /col43 {0.765 0.765 0.765 srgb} bind def /col44 {0.427 0.427 0.427 srgb} bind def /col45 {0.271 0.271 0.271 srgb} bind def /col46 {0.557 0.557 0.557 srgb} bind def /col47 {0.886 0.886 0.933 srgb} bind def /col48 {0.580 0.580 0.604 srgb} bind def /col49 {0.859 0.859 0.859 srgb} bind def /col50 {0.631 0.631 0.718 srgb} bind def /col51 {0.612 0.000 0.000 srgb} bind def /col52 {0.929 0.929 0.929 srgb} bind def /col53 {0.878 0.878 0.878 srgb} bind def /col54 {0.525 0.675 1.000 srgb} bind def /col55 {0.439 0.439 1.000 srgb} bind def /col56 {0.255 0.271 0.255 srgb} bind def /col57 {0.753 0.753 0.753 srgb} bind def /col58 {0.906 0.906 0.906 srgb} bind def /col59 {0.443 0.459 0.443 srgb} bind def /col60 {0.867 0.616 0.576 srgb} bind def /col61 {0.945 0.925 0.878 srgb} bind def /col62 {0.886 0.784 0.659 srgb} bind def /col63 {0.882 0.882 0.882 srgb} bind def /col64 {0.824 0.824 0.824 srgb} bind def /col65 {0.855 0.478 0.102 srgb} bind def /col66 {0.945 0.894 0.102 srgb} bind def /col67 {0.533 0.490 0.761 srgb} bind def /col68 {0.839 0.839 0.839 srgb} bind def /col69 {0.549 0.549 0.647 srgb} bind def /col70 {0.290 0.290 0.290 srgb} bind def /col71 {0.549 0.420 0.420 srgb} bind def /col72 {0.353 0.353 0.353 srgb} bind def /col73 {0.388 0.388 0.388 srgb} bind def /col74 {0.718 0.608 0.451 srgb} bind def /col75 {0.255 0.576 1.000 srgb} bind def /col76 {0.749 0.439 0.231 srgb} bind def /col77 {0.859 0.467 0.000 srgb} bind def /col78 {0.855 0.722 0.000 srgb} bind def /col79 {0.000 0.392 0.000 srgb} bind def /col80 {0.353 0.420 0.231 srgb} bind def /col81 {0.827 0.827 0.827 srgb} bind def /col82 {0.667 0.667 0.667 srgb} bind def /col83 {0.557 0.557 0.643 srgb} bind def /col84 {0.953 0.725 0.365 srgb} bind def /col85 {0.537 0.600 0.420 srgb} bind def /col86 {0.392 0.392 0.392 srgb} bind def /col87 {0.718 0.902 1.000 srgb} bind def /col88 {0.525 0.753 0.925 srgb} bind def /col89 {0.741 0.741 0.741 srgb} bind def /col90 {0.827 0.584 0.322 srgb} bind def /col91 {0.596 0.824 0.996 srgb} bind def /col92 {0.549 0.612 0.420 srgb} bind def /col93 {0.969 0.420 0.000 srgb} bind def /col94 {0.353 0.420 0.224 srgb} bind def /col95 {0.549 0.612 0.420 srgb} bind def /col96 {0.549 0.612 0.482 srgb} bind def /col97 {0.094 0.290 0.094 srgb} bind def /col98 {0.678 0.678 0.678 srgb} bind def /col99 {0.969 0.741 0.353 srgb} bind def /col100 {0.388 0.420 0.612 srgb} bind def /col101 {0.969 0.969 0.969 srgb} bind def /col102 {0.871 0.000 0.000 srgb} bind def /col103 {0.678 0.678 0.678 srgb} bind def /col104 {0.969 0.741 0.353 srgb} bind def /col105 {0.678 0.678 0.678 srgb} bind def /col106 {0.969 0.741 0.353 srgb} bind def /col107 {0.388 0.420 0.612 srgb} bind def /col108 {0.322 0.420 0.161 srgb} bind def /col109 {0.580 0.580 0.580 srgb} bind def /col110 {0.000 0.388 0.000 srgb} bind def /col111 {0.000 0.388 0.290 srgb} bind def /col112 {0.482 0.518 0.290 srgb} bind def /col113 {0.906 0.741 0.482 srgb} bind def /col114 {0.647 0.710 0.776 srgb} bind def /col115 {0.420 0.420 0.580 srgb} bind def /col116 {0.518 0.420 0.420 srgb} bind def /col117 {0.322 0.612 0.290 srgb} bind def /col118 {0.839 0.906 0.906 srgb} bind def /col119 {0.322 0.388 0.388 srgb} bind def /col120 {0.094 0.420 0.290 srgb} bind def /col121 {0.612 0.647 0.710 srgb} bind def /col122 {1.000 0.580 0.000 srgb} bind def /col123 {1.000 0.580 0.000 srgb} bind def /col124 {0.000 0.388 0.290 srgb} bind def /col125 {0.482 0.518 0.290 srgb} bind def /col126 {0.388 0.451 0.482 srgb} bind def /col127 {0.906 0.741 0.482 srgb} bind def /col128 {0.094 0.290 0.094 srgb} bind def /col129 {0.871 0.871 0.871 srgb} bind def /col130 {0.953 0.933 0.827 srgb} bind def /col131 {0.961 0.682 0.365 srgb} bind def /col132 {0.584 0.808 0.600 srgb} bind def /col133 {0.710 0.082 0.490 srgb} bind def /col134 {0.933 0.933 0.933 srgb} bind def /col135 {0.518 0.518 0.518 srgb} bind def /col136 {0.482 0.482 0.482 srgb} bind def /col137 {0.000 0.353 0.000 srgb} bind def /col138 {0.906 0.451 0.451 srgb} bind def /col139 {1.000 0.796 0.192 srgb} bind def /col140 {0.161 0.475 0.290 srgb} bind def /col141 {0.871 0.157 0.129 srgb} bind def /col142 {0.129 0.349 0.776 srgb} bind def /col143 {0.973 0.973 0.973 srgb} bind def /col144 {0.902 0.902 0.902 srgb} bind def /col145 {0.129 0.518 0.353 srgb} bind def /col146 {0.525 0.510 0.525 srgb} bind def /col147 {0.780 0.765 0.780 srgb} bind def /col148 {0.906 0.890 0.906 srgb} bind def /col149 {0.502 0.502 0.502 srgb} bind def /col150 {0.525 0.525 0.525 srgb} bind def /col151 {0.780 0.780 0.780 srgb} bind def /col152 {0.620 0.620 0.620 srgb} bind def /col153 {0.459 0.459 0.459 srgb} bind def /col154 {0.255 0.255 0.255 srgb} bind def /col155 {0.937 0.984 1.000 srgb} bind def /col156 {0.251 0.251 0.251 srgb} bind def /col157 {0.953 0.953 0.953 srgb} bind def /col158 {0.843 0.827 0.843 srgb} bind def /col159 {0.682 0.667 0.682 srgb} bind def /col160 {0.188 0.188 0.188 srgb} bind def /col161 {0.318 0.333 0.318 srgb} bind def /col162 {0.969 0.953 0.969 srgb} bind def /col163 {0.400 0.400 0.400 srgb} bind def /col164 {0.486 0.486 0.486 srgb} bind def /col165 {0.788 0.667 0.631 srgb} bind def /col166 {0.714 0.714 0.714 srgb} bind def /col167 {0.675 0.580 0.471 srgb} bind def /col168 {0.776 0.718 0.592 srgb} bind def /col169 {0.937 0.973 1.000 srgb} bind def /col170 {0.863 0.796 0.651 srgb} bind def /col171 {0.337 0.318 0.318 srgb} bind def /col172 {0.745 0.745 0.745 srgb} bind def /col173 {0.318 0.318 0.318 srgb} bind def /col174 {0.000 0.000 0.286 srgb} bind def /col175 {0.475 0.475 0.475 srgb} bind def /col176 {0.188 0.204 0.188 srgb} bind def /col177 {0.780 0.714 0.588 srgb} bind def /col178 {0.843 0.843 0.843 srgb} bind def /col179 {0.522 0.502 0.490 srgb} bind def /col180 {0.227 0.227 0.227 srgb} bind def /col181 {0.271 0.451 0.667 srgb} bind def /col182 {0.000 0.000 0.000 srgb} bind def /col183 {0.839 0.843 0.839 srgb} bind def /col184 {0.482 0.475 0.647 srgb} bind def /col185 {0.451 0.459 0.549 srgb} bind def /col186 {0.388 0.365 0.808 srgb} bind def /col187 {0.549 0.549 0.549 srgb} bind def /col188 {0.259 0.259 0.259 srgb} bind def /col189 {0.549 0.549 0.549 srgb} bind def /col190 {0.259 0.259 0.259 srgb} bind def /col191 {0.549 0.549 0.549 srgb} bind def /col192 {0.259 0.259 0.259 srgb} bind def /col193 {0.549 0.549 0.549 srgb} bind def /col194 {0.259 0.259 0.259 srgb} bind def /col195 {0.549 0.549 0.549 srgb} bind def /col196 {0.259 0.259 0.259 srgb} bind def /col197 {0.549 0.549 0.549 srgb} bind def /col198 {0.259 0.259 0.259 srgb} bind def /col199 {0.788 0.788 0.788 srgb} bind def /col200 {0.875 0.847 0.875 srgb} bind def end save newpath 0 393 moveto 0 0 lineto 714 0 lineto 714 393 lineto closepath clip newpath -23.8 525.8 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Palatino-Bold /Palatino-Bold-iso isovec ReEncode /Palatino-Roman /Palatino-Roman-iso isovec ReEncode /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06299 0.06299 sc % % Fig objects follow % % % here starts figure with depth 130 % Polyline 0 slj 0 slc 7.500 slw n 7008 4410 m 11700 4410 l 11700 8100 l 7008 8100 l cp gs col47 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 102 % Polyline 1 slj 0 slc 7.500 slw n 10484 7262 m 10037 7582 l 10037 7837 l 11315 7965 l 11315 7710 l 11570 7326 l cp gs col82 1.00 shd ef gr gs col41 s gr % Polyline n 10484 6958 m 10037 7277 l 10037 7534 l 11315 7662 l 11315 7406 l 11570 7022 l cp gs col82 1.00 shd ef gr gs col41 s gr % Polyline n 10484 6660 m 10037 6980 l 10037 7235 l 11315 7363 l 11315 7107 l 11570 6724 l cp gs col82 1.00 shd ef gr gs col41 s gr % Polyline n 10484 6362 m 10037 6682 l 10037 6937 l 11315 7065 l 11315 6809 l 11570 6426 l cp gs col82 1.00 shd ef gr gs col41 s gr % Polyline n 10484 6064 m 10037 6384 l 10037 6639 l 11315 6767 l 11315 6512 l 11570 6127 l cp gs col82 1.00 shd ef gr gs col41 s gr % Polyline n 10484 5760 m 10037 6079 l 10037 6335 l 11315 6463 l 11315 6207 l 11570 5824 l cp gs col82 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 10675 7710 m 11059 7748 l 11059 7812 l 10675 7773 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 10101 7716 m 10164 7722 l 10164 7754 l 10101 7748 l cp gs 0.00 setgray ef gr gs col41 s gr % Polyline n 10675 7406 m 11059 7444 l 11059 7508 l 10675 7470 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 10101 7412 m 10164 7418 l 10164 7451 l 10101 7444 l cp gs 0.00 setgray ef gr gs col41 s gr % Polyline n 10675 7107 m 11059 7146 l 11059 7210 l 10675 7171 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 10101 7114 m 10164 7120 l 10164 7152 l 10101 7146 l cp gs 0.00 setgray ef gr gs col41 s gr % Polyline n 10675 6809 m 11059 6848 l 11059 6912 l 10675 6873 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 10101 6816 m 10164 6823 l 10164 6854 l 10101 6848 l cp gs 0.00 setgray ef gr gs col41 s gr % Polyline n 10675 6512 m 11059 6549 l 11059 6613 l 10675 6575 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 10101 6518 m 10164 6524 l 10164 6556 l 10101 6549 l cp gs 0.00 setgray ef gr gs col41 s gr % Polyline n 10675 6207 m 11059 6246 l 11059 6310 l 10675 6271 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 10101 6214 m 10164 6220 l 10164 6252 l 10101 6246 l cp gs 0.00 setgray ef gr gs col41 s gr % Polyline 1 slj n 11315 7710 m 11315 7965 l 11570 7518 l 11570 7326 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 11315 7901 m 10037 7773 l gs col41 s gr % Polyline n 11251 7895 m 11251 7767 l gs col41 s gr % Polyline n 10484 7818 m 10484 7690 l gs col41 s gr % Polyline n 11251 7831 m 10484 7754 l gs col41 s gr % Polyline n 10069 7648 m 10197 7661 l 10197 7725 l 10069 7712 l cp gs col4 1.00 shd ef gr gs col4 s gr % Polyline n 11123 7754 m 11218 7764 l 11218 7795 l 11123 7786 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline n 11187 7888 m 11187 7824 l gs col41 s gr % Polyline n 11123 7882 m 11123 7818 l gs col41 s gr % Polyline 1 slj n 11315 7406 m 11315 7662 l 11570 7214 l 11570 7022 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 11315 7598 m 10037 7470 l gs col41 s gr % Polyline n 11251 7591 m 11251 7463 l gs col41 s gr % Polyline n 10484 7515 m 10484 7387 l gs col41 s gr % Polyline n 11251 7527 m 10484 7451 l gs col41 s gr % Polyline n 10069 7345 m 10197 7357 l 10197 7421 l 10069 7409 l cp gs col4 1.00 shd ef gr gs col4 s gr % Polyline n 11123 7451 m 11218 7459 l 11218 7492 l 11123 7482 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline n 11187 7585 m 11187 7521 l gs col41 s gr % Polyline n 11123 7578 m 11123 7515 l gs col41 s gr % Polyline 1 slj n 11315 7107 m 11315 7363 l 11570 6916 l 11570 6724 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 11315 7299 m 10037 7171 l gs col41 s gr % Polyline n 11251 7293 m 11251 7165 l gs col41 s gr % Polyline n 10484 7216 m 10484 7088 l gs col41 s gr % Polyline n 11251 7229 m 10484 7152 l gs col41 s gr % Polyline n 10069 7046 m 10197 7059 l 10197 7123 l 10069 7110 l cp gs col4 1.00 shd ef gr gs col4 s gr % Polyline n 11123 7152 m 11218 7162 l 11218 7193 l 11123 7184 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline n 11187 7287 m 11187 7223 l gs col41 s gr % Polyline n 11123 7280 m 11123 7216 l gs col41 s gr % Polyline 1 slj n 11315 6809 m 11315 7065 l 11570 6618 l 11570 6426 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 11315 7001 m 10037 6873 l gs col41 s gr % Polyline n 11251 6995 m 11251 6867 l gs col41 s gr % Polyline n 10484 6918 m 10484 6790 l gs col41 s gr % Polyline n 11251 6931 m 10484 6854 l gs col41 s gr % Polyline n 10069 6748 m 10197 6761 l 10197 6825 l 10069 6812 l cp gs col4 1.00 shd ef gr gs col4 s gr % Polyline n 11123 6854 m 11218 6864 l 11218 6895 l 11123 6886 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline n 11187 6988 m 11187 6924 l gs col41 s gr % Polyline n 11123 6982 m 11123 6918 l gs col41 s gr % Polyline 1 slj n 11315 6512 m 11315 6767 l 11570 6319 l 11570 6127 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 11315 6703 m 10037 6575 l gs col41 s gr % Polyline n 11251 6696 m 11251 6568 l gs col41 s gr % Polyline n 10484 6620 m 10484 6492 l gs col41 s gr % Polyline n 11251 6632 m 10484 6556 l gs col41 s gr % Polyline n 10069 6450 m 10197 6463 l 10197 6526 l 10069 6514 l cp gs col4 1.00 shd ef gr gs col4 s gr % Polyline n 11123 6556 m 11218 6565 l 11218 6597 l 11123 6588 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline n 11187 6690 m 11187 6626 l gs col41 s gr % Polyline n 11123 6684 m 11123 6620 l gs col41 s gr % Polyline 1 slj n 11315 6207 m 11315 6463 l 11570 6016 l 11570 5824 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline 0 slj n 11315 6399 m 10037 6271 l gs col41 s gr % Polyline n 11251 6393 m 11251 6265 l gs col41 s gr % Polyline n 10484 6316 m 10484 6188 l gs col41 s gr % Polyline n 11251 6329 m 10484 6252 l gs col41 s gr % Polyline n 10069 6147 m 10197 6159 l 10197 6223 l 10069 6211 l cp gs col4 1.00 shd ef gr gs col4 s gr % Polyline n 11123 6252 m 11218 6261 l 11218 6294 l 11123 6284 l cp gs col41 1.00 shd ef gr gs col41 s gr % Polyline n 11187 6387 m 11187 6323 l gs col41 s gr % Polyline n 11123 6380 m 11123 6316 l gs col41 s gr % Polyline n 10037 7582 m 11315 7710 l gs col41 s gr % Polyline n 10084 7586 m 10524 7264 l gs col41 s gr % Polyline n 10131 7591 m 10564 7266 l gs col41 s gr % Polyline n 10178 7596 m 10604 7269 l gs col41 s gr % Polyline n 10226 7600 m 10645 7271 l gs col41 s gr % Polyline n 10273 7605 m 10685 7274 l gs col41 s gr % Polyline n 10321 7610 m 10725 7276 l gs col41 s gr % Polyline n 10367 7614 m 10765 7278 l gs col41 s gr % Polyline n 10415 7619 m 10806 7281 l gs col41 s gr % Polyline n 10463 7624 m 10846 7283 l gs col41 s gr % Polyline n 10510 7628 m 10886 7285 l gs col41 s gr % Polyline n 10557 7633 m 10926 7288 l gs col41 s gr % Polyline n 10604 7639 m 10966 7290 l gs col41 s gr % Polyline n 10652 7643 m 11007 7292 l gs col41 s gr % Polyline n 10699 7647 m 11047 7295 l gs col41 s gr % Polyline n 10747 7653 m 11087 7297 l gs col41 s gr % Polyline n 10793 7657 m 11127 7300 l gs col41 s gr % Polyline n 10841 7661 m 11168 7302 l gs col41 s gr % Polyline n 10889 7667 m 11208 7304 l gs col41 s gr % Polyline n 10935 7671 m 11248 7307 l gs col41 s gr % Polyline n 10983 7676 m 11288 7309 l gs col41 s gr % Polyline n 11030 7681 m 11329 7311 l gs col41 s gr % Polyline n 11078 7685 m 11369 7314 l gs col41 s gr % Polyline n 11125 7690 m 11409 7316 l gs col41 s gr % Polyline n 11173 7696 m 11449 7318 l gs col41 s gr % Polyline n 11219 7699 m 11489 7321 l gs col41 s gr % Polyline n 11266 7704 m 11530 7323 l gs col41 s gr % Polyline n 10087 7779 m 10087 7843 l gs col41 s gr % Polyline n 10139 7783 m 10139 7847 l gs col41 s gr % Polyline n 10190 7788 m 10190 7852 l gs col41 s gr % Polyline n 10241 7794 m 10241 7857 l gs col41 s gr % Polyline n 10292 7799 m 10292 7863 l gs col41 s gr % Polyline n 10344 7804 m 10344 7868 l gs col41 s gr % Polyline n 10394 7808 m 10394 7872 l gs col41 s gr % Polyline n 10445 7814 m 10445 7878 l gs col41 s gr % Polyline n 10497 7819 m 10497 7883 l gs col41 s gr % Polyline n 10548 7824 m 10548 7888 l gs col41 s gr % Polyline n 10599 7829 m 10599 7893 l gs col41 s gr % Polyline n 10650 7835 m 10650 7899 l gs col41 s gr % Polyline n 10701 7839 m 10701 7903 l gs col41 s gr % Polyline n 10752 7844 m 10752 7908 l gs col41 s gr % Polyline n 10803 7850 m 10803 7914 l gs col41 s gr % Polyline n 10855 7855 m 10855 7919 l gs col41 s gr % Polyline n 10905 7860 m 10905 7924 l gs col41 s gr % Polyline n 10957 7865 m 10957 7929 l gs col41 s gr % Polyline n 11008 7870 m 11008 7934 l gs col41 s gr % Polyline n 11059 7876 m 11059 7940 l gs col41 s gr % Polyline n 11110 7880 m 11110 7944 l gs col41 s gr % Polyline n 11162 7885 m 11162 7949 l gs col41 s gr % Polyline n 11212 7891 m 11212 7955 l gs col41 s gr % Polyline n 11263 7895 m 11263 7960 l gs col41 s gr % Polyline n 11315 7773 m 10037 7646 l gs col41 s gr % Polyline n 10037 7277 m 11315 7406 l gs col41 s gr % Polyline n 10084 7282 m 10524 6961 l gs col41 s gr % Polyline n 10131 7287 m 10564 6962 l gs col41 s gr % Polyline n 10178 7292 m 10604 6965 l gs col41 s gr % Polyline n 10226 7297 m 10645 6968 l gs col41 s gr % Polyline n 10273 7301 m 10685 6969 l gs col41 s gr % Polyline n 10321 7306 m 10725 6972 l gs col41 s gr % Polyline n 10367 7311 m 10765 6975 l gs col41 s gr % Polyline n 10415 7315 m 10806 6976 l gs col41 s gr % Polyline n 10463 7320 m 10846 6980 l gs col41 s gr % Polyline n 10510 7325 m 10886 6982 l gs col41 s gr % Polyline n 10557 7330 m 10926 6983 l gs col41 s gr % Polyline n 10604 7334 m 10966 6987 l gs col41 s gr % Polyline n 10652 7339 m 11007 6989 l gs col41 s gr % Polyline n 10699 7344 m 11047 6991 l gs col41 s gr % Polyline n 10747 7349 m 11087 6994 l gs col41 s gr % Polyline n 10793 7353 m 11127 6996 l gs col41 s gr % Polyline n 10841 7358 m 11168 6998 l gs col41 s gr % Polyline n 10889 7363 m 11208 7001 l gs col41 s gr % Polyline n 10935 7368 m 11248 7003 l gs col41 s gr % Polyline n 10983 7372 m 11288 7005 l gs col41 s gr % Polyline n 11030 7377 m 11329 7008 l gs col41 s gr % Polyline n 11078 7382 m 11369 7010 l gs col41 s gr % Polyline n 11125 7387 m 11409 7012 l gs col41 s gr % Polyline n 11173 7391 m 11449 7015 l gs col41 s gr % Polyline n 11219 7396 m 11489 7018 l gs col41 s gr % Polyline n 11266 7401 m 11530 7019 l gs col41 s gr % Polyline n 10087 7474 m 10087 7538 l gs col41 s gr % Polyline n 10139 7480 m 10139 7543 l gs col41 s gr % Polyline n 10190 7485 m 10190 7549 l gs col41 s gr % Polyline n 10241 7489 m 10241 7553 l gs col41 s gr % Polyline n 10292 7495 m 10292 7559 l gs col41 s gr % Polyline n 10344 7500 m 10344 7564 l gs col41 s gr % Polyline n 10394 7505 m 10394 7569 l gs col41 s gr % Polyline n 10445 7510 m 10445 7574 l gs col41 s gr % Polyline n 10497 7515 m 10497 7579 l gs col41 s gr % Polyline n 10548 7521 m 10548 7585 l gs col41 s gr % Polyline n 10599 7526 m 10599 7590 l gs col41 s gr % Polyline n 10650 7530 m 10650 7594 l gs col41 s gr % Polyline n 10701 7536 m 10701 7599 l gs col41 s gr % Polyline n 10752 7541 m 10752 7605 l gs col41 s gr % Polyline n 10803 7546 m 10803 7610 l gs col41 s gr % Polyline n 10855 7551 m 10855 7615 l gs col41 s gr % Polyline n 10905 7557 m 10905 7620 l gs col41 s gr % Polyline n 10957 7561 m 10957 7625 l gs col41 s gr % Polyline n 11008 7566 m 11008 7630 l gs col41 s gr % Polyline n 11059 7571 m 11059 7635 l gs col41 s gr % Polyline n 11110 7577 m 11110 7641 l gs col41 s gr % Polyline n 11162 7582 m 11162 7646 l gs col41 s gr % Polyline n 11212 7586 m 11212 7651 l gs col41 s gr % Polyline n 11263 7592 m 11263 7655 l gs col41 s gr % Polyline n 11315 7470 m 10037 7341 l gs col41 s gr % Polyline n 10037 6980 m 11315 7107 l gs col41 s gr % Polyline n 10084 6984 m 10524 6662 l gs col41 s gr % Polyline n 10131 6989 m 10564 6665 l gs col41 s gr % Polyline n 10178 6994 m 10604 6667 l gs col41 s gr % Polyline n 10226 6998 m 10645 6669 l gs col41 s gr % Polyline n 10273 7003 m 10685 6672 l gs col41 s gr % Polyline n 10321 7008 m 10725 6674 l gs col41 s gr % Polyline n 10367 7012 m 10765 6677 l gs col41 s gr % Polyline n 10415 7017 m 10806 6679 l gs col41 s gr % Polyline n 10463 7022 m 10846 6681 l gs col41 s gr % Polyline n 10510 7027 m 10886 6684 l gs col41 s gr % Polyline n 10557 7031 m 10926 6686 l gs col41 s gr % Polyline n 10604 7036 m 10966 6688 l gs col41 s gr % Polyline n 10652 7041 m 11007 6691 l gs col41 s gr % Polyline n 10699 7046 m 11047 6693 l gs col41 s gr % Polyline n 10747 7050 m 11087 6695 l gs col41 s gr % Polyline n 10793 7055 m 11127 6698 l gs col41 s gr % Polyline n 10841 7060 m 11168 6700 l gs col41 s gr % Polyline n 10889 7065 m 11208 6703 l gs col41 s gr % Polyline n 10935 7069 m 11248 6705 l gs col41 s gr % Polyline n 10983 7074 m 11288 6707 l gs col41 s gr % Polyline n 11030 7079 m 11329 6710 l gs col41 s gr % Polyline n 11078 7084 m 11369 6712 l gs col41 s gr % Polyline n 11125 7088 m 11409 6714 l gs col41 s gr % Polyline n 11173 7093 m 11449 6717 l gs col41 s gr % Polyline n 11219 7098 m 11489 6719 l gs col41 s gr % Polyline n 11266 7103 m 11530 6721 l gs col41 s gr % Polyline n 10087 7176 m 10087 7240 l gs col41 s gr % Polyline n 10139 7182 m 10139 7246 l gs col41 s gr % Polyline n 10190 7186 m 10190 7250 l gs col41 s gr % Polyline n 10241 7191 m 10241 7255 l gs col41 s gr % Polyline n 10292 7197 m 10292 7261 l gs col41 s gr % Polyline n 10344 7202 m 10344 7266 l gs col41 s gr % Polyline n 10394 7207 m 10394 7271 l gs col41 s gr % Polyline n 10445 7212 m 10445 7276 l gs col41 s gr % Polyline n 10497 7217 m 10497 7281 l gs col41 s gr % Polyline n 10548 7223 m 10548 7287 l gs col41 s gr % Polyline n 10599 7227 m 10599 7291 l gs col41 s gr % Polyline n 10650 7232 m 10650 7296 l gs col41 s gr % Polyline n 10701 7238 m 10701 7302 l gs col41 s gr % Polyline n 10752 7242 m 10752 7306 l gs col41 s gr % Polyline n 10803 7248 m 10803 7312 l gs col41 s gr % Polyline n 10855 7253 m 10855 7317 l gs col41 s gr % Polyline n 10905 7258 m 10905 7322 l gs col41 s gr % Polyline n 10957 7263 m 10957 7327 l gs col41 s gr % Polyline n 11008 7268 m 11008 7332 l gs col41 s gr % Polyline n 11059 7274 m 11059 7337 l gs col41 s gr % Polyline n 11110 7279 m 11110 7343 l gs col41 s gr % Polyline n 11162 7283 m 11162 7348 l gs col41 s gr % Polyline n 11212 7288 m 11212 7352 l gs col41 s gr % Polyline n 11263 7294 m 11263 7358 l gs col41 s gr % Polyline n 11315 7171 m 10037 7043 l gs col41 s gr % Polyline n 10037 6682 m 11315 6809 l gs col41 s gr % Polyline n 10084 6686 m 10524 6364 l gs col41 s gr % Polyline n 10131 6690 m 10564 6366 l gs col41 s gr % Polyline n 10178 6696 m 10604 6369 l gs col41 s gr % Polyline n 10226 6700 m 10645 6371 l gs col41 s gr % Polyline n 10273 6705 m 10685 6374 l gs col41 s gr % Polyline n 10321 6710 m 10725 6376 l gs col41 s gr % Polyline n 10367 6714 m 10765 6378 l gs col41 s gr % Polyline n 10415 6719 m 10806 6381 l gs col41 s gr % Polyline n 10463 6725 m 10846 6383 l gs col41 s gr % Polyline n 10510 6728 m 10886 6385 l gs col41 s gr % Polyline n 10557 6733 m 10926 6388 l gs col41 s gr % Polyline n 10604 6739 m 10966 6390 l gs col41 s gr % Polyline n 10652 6743 m 11007 6393 l gs col41 s gr % Polyline n 10699 6747 m 11047 6395 l gs col41 s gr % Polyline n 10747 6753 m 11087 6397 l gs col41 s gr % Polyline n 10793 6757 m 11127 6400 l gs col41 s gr % Polyline n 10841 6762 m 11168 6402 l gs col41 s gr % Polyline n 10889 6767 m 11208 6404 l gs col41 s gr % Polyline n 10935 6771 m 11248 6407 l gs col41 s gr % Polyline n 10983 6776 m 11288 6409 l gs col41 s gr % Polyline n 11030 6781 m 11329 6411 l gs col41 s gr % Polyline n 11078 6785 m 11369 6414 l gs col41 s gr % Polyline n 11125 6790 m 11409 6416 l gs col41 s gr % Polyline n 11173 6795 m 11449 6419 l gs col41 s gr % Polyline n 11219 6800 m 11489 6421 l gs col41 s gr % Polyline n 11266 6804 m 11530 6423 l gs col41 s gr % Polyline n 10087 6879 m 10087 6942 l gs col41 s gr % Polyline n 10139 6883 m 10139 6947 l gs col41 s gr % Polyline n 10190 6888 m 10190 6952 l gs col41 s gr % Polyline n 10241 6893 m 10241 6957 l gs col41 s gr % Polyline n 10292 6899 m 10292 6963 l gs col41 s gr % Polyline n 10344 6904 m 10344 6968 l gs col41 s gr % Polyline n 10394 6909 m 10394 6973 l gs col41 s gr % Polyline n 10445 6914 m 10445 6977 l gs col41 s gr % Polyline n 10497 6919 m 10497 6983 l gs col41 s gr % Polyline n 10548 6924 m 10548 6988 l gs col41 s gr % Polyline n 10599 6929 m 10599 6993 l gs col41 s gr % Polyline n 10650 6935 m 10650 6998 l gs col41 s gr % Polyline n 10701 6939 m 10701 7003 l gs col41 s gr % Polyline n 10752 6944 m 10752 7008 l gs col41 s gr % Polyline n 10803 6950 m 10803 7014 l gs col41 s gr % Polyline n 10855 6955 m 10855 7019 l gs col41 s gr % Polyline n 10905 6960 m 10905 7024 l gs col41 s gr % Polyline n 10957 6965 m 10957 7029 l gs col41 s gr % Polyline n 11008 6970 m 11008 7033 l gs col41 s gr % Polyline n 11059 6976 m 11059 7040 l gs col41 s gr % Polyline n 11110 6981 m 11110 7045 l gs col41 s gr % Polyline n 11162 6985 m 11162 7049 l gs col41 s gr % Polyline n 11212 6991 m 11212 7054 l gs col41 s gr % Polyline n 11263 6996 m 11263 7060 l gs col41 s gr % Polyline n 11315 6873 m 10037 6746 l gs col41 s gr % Polyline n 10037 6384 m 11315 6512 l gs col41 s gr % Polyline n 10084 6387 m 10524 6066 l gs col41 s gr % Polyline n 10131 6393 m 10564 6068 l gs col41 s gr % Polyline n 10178 6398 m 10604 6071 l gs col41 s gr % Polyline n 10226 6402 m 10645 6073 l gs col41 s gr % Polyline n 10273 6407 m 10685 6075 l gs col41 s gr % Polyline n 10321 6412 m 10725 6078 l gs col41 s gr % Polyline n 10367 6416 m 10765 6080 l gs col41 s gr % Polyline n 10415 6421 m 10806 6082 l gs col41 s gr % Polyline n 10463 6426 m 10846 6085 l gs col41 s gr % Polyline n 10510 6430 m 10886 6087 l gs col41 s gr % Polyline n 10557 6435 m 10926 6090 l gs col41 s gr % Polyline n 10604 6440 m 10966 6092 l gs col41 s gr % Polyline n 10652 6444 m 11007 6094 l gs col41 s gr % Polyline n 10699 6449 m 11047 6097 l gs col41 s gr % Polyline n 10747 6455 m 11087 6099 l gs col41 s gr % Polyline n 10793 6459 m 11127 6101 l gs col41 s gr % Polyline n 10841 6463 m 11168 6104 l gs col41 s gr % Polyline n 10889 6469 m 11208 6106 l gs col41 s gr % Polyline n 10935 6473 m 11248 6108 l gs col41 s gr % Polyline n 10983 6477 m 11288 6111 l gs col41 s gr % Polyline n 11030 6483 m 11329 6113 l gs col41 s gr % Polyline n 11078 6487 m 11369 6116 l gs col41 s gr % Polyline n 11125 6492 m 11409 6118 l gs col41 s gr % Polyline n 11173 6497 m 11449 6120 l gs col41 s gr % Polyline n 11219 6501 m 11489 6123 l gs col41 s gr % Polyline n 11266 6506 m 11530 6125 l gs col41 s gr % Polyline n 10087 6580 m 10087 6644 l gs col41 s gr % Polyline n 10139 6585 m 10139 6649 l gs col41 s gr % Polyline n 10190 6590 m 10190 6654 l gs col41 s gr % Polyline n 10241 6595 m 10241 6659 l gs col41 s gr % Polyline n 10292 6601 m 10292 6665 l gs col41 s gr % Polyline n 10344 6606 m 10344 6670 l gs col41 s gr % Polyline n 10394 6610 m 10394 6674 l gs col41 s gr % Polyline n 10445 6616 m 10445 6680 l gs col41 s gr % Polyline n 10497 6621 m 10497 6685 l gs col41 s gr % Polyline n 10548 6626 m 10548 6690 l gs col41 s gr % Polyline n 10599 6631 m 10599 6695 l gs col41 s gr % Polyline n 10650 6636 m 10650 6700 l gs col41 s gr % Polyline n 10701 6641 m 10701 6705 l gs col41 s gr % Polyline n 10752 6646 m 10752 6710 l gs col41 s gr % Polyline n 10803 6652 m 10803 6715 l gs col41 s gr % Polyline n 10855 6657 m 10855 6721 l gs col41 s gr % Polyline n 10905 6662 m 10905 6726 l gs col41 s gr % Polyline n 10957 6666 m 10957 6730 l gs col41 s gr % Polyline n 11008 6672 m 11008 6736 l gs col41 s gr % Polyline n 11059 6678 m 11059 6742 l gs col41 s gr % Polyline n 11110 6682 m 11110 6746 l gs col41 s gr % Polyline n 11162 6687 m 11162 6751 l gs col41 s gr % Polyline n 11212 6693 m 11212 6757 l gs col41 s gr % Polyline n 11263 6697 m 11263 6761 l gs col41 s gr % Polyline n 11315 6575 m 10037 6448 l gs col41 s gr % Polyline n 10037 6079 m 11315 6207 l gs col41 s gr % Polyline n 10084 6084 m 10524 5762 l gs col41 s gr % Polyline n 10131 6089 m 10564 5764 l gs col41 s gr % Polyline n 10178 6093 m 10604 5767 l gs col41 s gr % Polyline n 10226 6098 m 10645 5770 l gs col41 s gr % Polyline n 10273 6103 m 10685 5771 l gs col41 s gr % Polyline n 10321 6108 m 10725 5774 l gs col41 s gr % Polyline n 10367 6113 m 10765 5777 l gs col41 s gr % Polyline n 10415 6117 m 10806 5778 l gs col41 s gr % Polyline n 10463 6122 m 10846 5781 l gs col41 s gr % Polyline n 10510 6127 m 10886 5784 l gs col41 s gr % Polyline n 10557 6131 m 10926 5785 l gs col41 s gr % Polyline n 10604 6136 m 10966 5788 l gs col41 s gr % Polyline n 10652 6141 m 11007 5791 l gs col41 s gr % Polyline n 10699 6146 m 11047 5792 l gs col41 s gr % Polyline n 10747 6150 m 11087 5796 l gs col41 s gr % Polyline n 10793 6155 m 11127 5798 l gs col41 s gr % Polyline n 10841 6160 m 11168 5799 l gs col41 s gr % Polyline n 10889 6165 m 11208 5803 l gs col41 s gr % Polyline n 10935 6169 m 11248 5805 l gs col41 s gr % Polyline n 10983 6174 m 11288 5807 l gs col41 s gr % Polyline n 11030 6179 m 11329 5810 l gs col41 s gr % Polyline n 11078 6184 m 11369 5812 l gs col41 s gr % Polyline n 11125 6188 m 11409 5814 l gs col41 s gr % Polyline n 11173 6193 m 11449 5817 l gs col41 s gr % Polyline n 11219 6198 m 11489 5819 l gs col41 s gr % Polyline n 11266 6203 m 11530 5821 l gs col41 s gr % Polyline n 10087 6276 m 10087 6340 l gs col41 s gr % Polyline n 10139 6282 m 10139 6345 l gs col41 s gr % Polyline n 10190 6286 m 10190 6350 l gs col41 s gr % Polyline n 10241 6291 m 10241 6355 l gs col41 s gr % Polyline n 10292 6297 m 10292 6361 l gs col41 s gr % Polyline n 10344 6302 m 10344 6366 l gs col41 s gr % Polyline n 10394 6307 m 10394 6371 l gs col41 s gr % Polyline n 10445 6312 m 10445 6376 l gs col41 s gr % Polyline n 10497 6317 m 10497 6380 l gs col41 s gr % Polyline n 10548 6323 m 10548 6387 l gs col41 s gr % Polyline n 10599 6327 m 10599 6392 l gs col41 s gr % Polyline n 10650 6332 m 10650 6396 l gs col41 s gr % Polyline n 10701 6338 m 10701 6401 l gs col41 s gr % Polyline n 10752 6343 m 10752 6407 l gs col41 s gr % Polyline n 10803 6348 m 10803 6412 l gs col41 s gr % Polyline n 10855 6353 m 10855 6417 l gs col41 s gr % Polyline n 10905 6358 m 10905 6422 l gs col41 s gr % Polyline n 10957 6363 m 10957 6427 l gs col41 s gr % Polyline n 11008 6368 m 11008 6432 l gs col41 s gr % Polyline n 11059 6373 m 11059 6437 l gs col41 s gr % Polyline n 11110 6379 m 11110 6443 l gs col41 s gr % Polyline n 11162 6384 m 11162 6448 l gs col41 s gr % Polyline n 11212 6388 m 11212 6452 l gs col41 s gr % Polyline n 11263 6394 m 11263 6457 l gs col41 s gr % Polyline n 11315 6271 m 10037 6143 l gs col41 s gr % here ends figure; % % here starts figure with depth 90 % Polyline 0 slj 0 slc 7.500 slw n 390 6120 m 3690 6120 l 3690 8100 l 390 8100 l cp gs col47 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 85 % Polyline 0 slj 0 slc 7.500 slw n 1377 6334 m 2009 6334 l 2009 6862 l 1377 6862 l cp gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 2637 6287 m 3269 6287 l 3269 6815 l 2637 6815 l cp gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 83 % Ellipse 7.500 slw n 1693 6862 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % Ellipse n 2953 6815 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 80 % Arc 7.500 slw 0 slc n 1693.0 6439.0 528.0 126.7611 53.2389 arcn gs col0 s gr % Ellipse n 1693 6334 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline 0 slj n 1377 6334 m 1377 6862 l gs col0 s gr % Polyline n 2009 6334 m 2009 6862 l gs col0 s gr % Arc n 2953.0 6392.0 528.0 126.7611 53.2389 arcn gs col0 s gr % Ellipse n 2953 6287 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2637 6287 m 2637 6815 l gs col0 s gr % Polyline n 3269 6287 m 3269 6815 l gs col0 s gr % here ends figure; % % here starts figure with depth 75 % Polyline 0 slj 0 slc 7.500 slw n 1165 6546 m 1798 6546 l 1798 7073 l 1165 7073 l cp gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 2425 6499 m 3058 6499 l 3058 7026 l 2425 7026 l cp gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 73 % Ellipse 7.500 slw n 1481 7073 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % Ellipse n 2741 7026 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 70 % Arc 7.500 slw 0 slc n 1481.5 6648.5 529.5 126.7069 53.2931 arcn gs col0 s gr % Ellipse n 1481 6546 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline 0 slj n 1165 6546 m 1165 7073 l gs col0 s gr % Polyline n 1798 6546 m 1798 7073 l gs col0 s gr % Arc n 2741.5 6601.5 529.5 126.7069 53.2931 arcn gs col0 s gr % Ellipse n 2741 6499 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2425 6499 m 2425 7026 l gs col0 s gr % Polyline n 3058 6499 m 3058 7026 l gs col0 s gr % here ends figure; % % here starts figure with depth 65 % Polyline 0 slj 0 slc 7.500 slw n 954 6757 m 1586 6757 l 1586 7285 l 954 7285 l cp gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 2214 6710 m 2846 6710 l 2846 7238 l 2214 7238 l cp gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 63 % Ellipse 7.500 slw n 1270 7285 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % Ellipse n 2530 7238 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 60 % Arc 7.500 slw 0 slc n 1270.0 6862.0 528.0 126.7611 53.2389 arcn gs col0 s gr % Ellipse n 1270 6757 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline 0 slj n 954 6757 m 954 7285 l gs col0 s gr % Polyline n 1586 6757 m 1586 7285 l gs col0 s gr % Arc n 2530.0 6815.0 528.0 126.7611 53.2389 arcn gs col0 s gr % Ellipse n 2530 6710 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2214 6710 m 2214 7238 l gs col0 s gr % Polyline n 2846 6710 m 2846 7238 l gs col0 s gr % here ends figure; % % here starts figure with depth 55 % Polyline 0 slj 0 slc 7.500 slw n 742 6967 m 1377 6967 l 1377 7496 l 742 7496 l cp gs col7 1.00 shd ef gr gs col7 s gr % Polyline n 2002 6920 m 2637 6920 l 2637 7449 l 2002 7449 l cp gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 53 % Ellipse 7.500 slw n 1059 7496 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % Ellipse n 2319 7449 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col7 s gr % here ends figure; % % here starts figure with depth 50 % Arc 7.500 slw 0 slc n 1059.5 7068.5 532.5 126.5990 53.4010 arcn gs col0 s gr % Ellipse n 1059 6967 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline 0 slj n 742 6967 m 742 7496 l gs col0 s gr % Polyline n 1377 6967 m 1377 7496 l gs col0 s gr % Arc n 2319.5 7021.5 532.5 126.5990 53.4010 arcn gs col0 s gr % Ellipse n 2319 6920 316 105 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 2002 6920 m 2002 7449 l gs col0 s gr % Polyline n 2637 6920 m 2637 7449 l gs col0 s gr % Ellipse n 1682 5602 44 31 0 360 DrawEllipse gs col0 s gr % Polyline n 953 3336 m 944 4529 l 1198 4529 l 1198 4415 l 2272 4415 l 2272 4539 l 2514 4539 l 2536 3330 l gs col0 s gr % Polyline n 948 4534 m 834 5493 l 1242 5577 l 1252 5555 l 2311 5540 l 2347 5561 l 2418 5561 l 2720 5493 l 2738 5482 l 2734 5462 l 2500 4539 l 2355 4539 l 2355 4560 l 1089 4560 l 1089 4529 l 948 4529 l gs col0 s gr % Polyline n 834 5498 m 842 5587 l 1248 5659 l 1265 5644 l 2298 5639 l 2330 5649 l 2378 5649 l 2690 5570 l 2738 5488 l gs col0 s gr % Polyline n 2536 3330 m 961 3336 l 957 3336 l gs col0 s gr % Polyline n 1005 3403 m 2466 3398 l 2462 4362 l 997 4368 l 1005 3398 l gs col0 s gr % Polyline n 1018 4795 m 1018 4815 l 1137 4815 l 1142 4795 l gs col0 s gr % Polyline n 1022 4789 m 1133 4789 l 1133 4810 l 1018 4810 l 1022 4784 l gs col0 s gr % Polyline n 1041 4597 m 1538 4602 l 1538 4638 l 1036 4638 l 1041 4597 l cp gs col0 s gr % Polyline n 927 4868 m 2558 4873 l 2694 5435 l 869 5462 l 927 4873 l gs col0 s gr % Polyline n 1651 5550 m 1651 5488 l 1946 5482 l 1946 5544 l gs col0 s gr % Polyline n 1692 5509 m 1907 5509 l 1907 5535 l 1692 5535 l cp gs col0 s gr % Polyline n 944 4836 m 974 4836 l 974 4862 l 944 4857 l 944 4836 l cp gs col0 s gr % Polyline n 1340 5362 m 1340 5415 l 1877 5415 l 1881 5358 l 1340 5362 l cp gs col0 s gr % Polyline n 1340 5415 m 1309 5451 l 1309 5352 l 1907 5347 l 1907 5446 l 1877 5415 l gs col0 s gr % Polyline n 1177 5362 m 1177 5415 l 1282 5415 l 1282 5358 l 1177 5358 l gs col0 s gr % Polyline n 1177 5362 m 1150 5352 l 1150 5457 l 1305 5457 l 1305 5352 l 1150 5352 l gs col0 s gr % Polyline n 1150 5457 m 1177 5415 l gs col0 s gr % Polyline n 1299 5457 m 1282 5415 l gs col0 s gr % Polyline n 1282 5358 m 1305 5352 l gs col0 s gr % Polyline n 1032 5451 m 1032 5352 l 1154 5352 l gs col0 s gr % Polyline n 1032 5457 m 1150 5457 l gs col0 s gr % Polyline n 1059 5362 m 1032 5352 l gs col0 s gr % Polyline n 1129 5362 m 1150 5352 l gs col0 s gr % Polyline n 1129 5409 m 1150 5457 l gs col0 s gr % Polyline n 1062 5409 m 1032 5457 l gs col0 s gr % Polyline n 1036 4701 m 1133 4701 l 1133 4742 l 1036 4742 l cp gs col0 s gr % Polyline n 1059 5362 m 1129 5362 l 1129 5409 l 1059 5409 l cp gs col0 s gr % Polyline n 909 5362 m 1010 5362 l 1010 5415 l 909 5415 l cp gs col0 s gr % Polyline n 886 5352 m 1032 5352 l 1032 5457 l 886 5457 l cp gs col0 s gr % Polyline n 886 5457 m 909 5415 l gs col0 s gr % Polyline n 905 5415 m 913 5415 l gs col0 s gr % Polyline n 886 5352 m 909 5362 l gs col0 s gr % Polyline n 1032 5352 m 1010 5362 l gs col0 s gr % Polyline n 1028 5457 m 1010 5415 l gs col0 s gr % Polyline n 1309 5352 m 1340 5362 l gs col0 s gr % Polyline n 1912 5347 m 2022 5347 l 2022 5446 l 1912 5446 l cp gs col0 s gr % Polyline n 2022 5347 m 2154 5347 l 2154 5446 l 2022 5446 l cp gs col0 s gr % Polyline n 2154 5347 m 2250 5347 l 2267 5446 l gs col0 s gr % Polyline n 2263 5446 m 2271 5446 l gs col0 s gr % Polyline n 2259 5347 m 2277 5446 l 2330 5446 l 2311 5347 l 2259 5347 l cp gs col0 s gr % Polyline n 1934 5362 m 2009 5362 l 2009 5415 l 1934 5415 l cp gs col0 s gr % Polyline n 2047 5358 m 2135 5358 l 2135 5415 l 2047 5415 l cp gs col0 s gr % Polyline n 2184 5367 m 2250 5367 l 2250 5425 l 2184 5425 l cp gs col0 s gr % Polyline n 1912 5446 m 1928 5415 l gs col0 s gr % Polyline n 1907 5352 m 1934 5362 l gs col0 s gr % Polyline n 1930 5358 m 1938 5358 l gs col0 s gr % Polyline n 2026 5347 m 2009 5358 l gs col0 s gr % Polyline n 2026 5446 m 2009 5415 l gs col0 s gr % Polyline n 2026 5446 m 2047 5415 l gs col0 s gr % Polyline n 2022 5347 m 2052 5358 l gs col0 s gr % Polyline n 2154 5347 m 2135 5358 l gs col0 s gr % Polyline n 2154 5446 m 2135 5415 l gs col0 s gr % Polyline n 2158 5446 m 2189 5425 l gs col0 s gr % Polyline n 2154 5347 m 2189 5367 l gs col0 s gr % Polyline n 2250 5347 m 2250 5367 l gs col0 s gr % Polyline n 2264 5440 m 2250 5425 l gs col0 s gr % Polyline n 2272 5248 m 2294 5342 l 2422 5336 l 2399 5238 l 2267 5243 l cp gs col0 s gr % Polyline n 2303 5263 m 2316 5311 l 2399 5311 l 2391 5258 l 2303 5258 l cp gs col0 s gr % Polyline n 2321 5352 m 2342 5446 l 2448 5440 l 2426 5347 l cp gs col0 s gr % Polyline n 2360 5362 m 2374 5415 l 2430 5415 l 2422 5358 l cp gs col0 s gr % Polyline n 2412 5238 m 2440 5336 l 2536 5336 l 2514 5238 l cp gs col0 s gr % Polyline n 2443 5352 m 2462 5440 l 2567 5435 l 2541 5342 l 2440 5342 l cp gs col0 s gr % Polyline n 2448 5258 m 2462 5311 l 2518 5305 l 2510 5253 l 2448 5253 l cp gs col0 s gr % Polyline n 2474 5358 m 2487 5405 l 2544 5405 l 2536 5352 l 2474 5352 l cp gs col0 s gr % Polyline n 2549 5342 m 2575 5440 l 2681 5435 l 2659 5336 l 2549 5336 l cp gs col0 s gr % Polyline n 2585 5358 m 2593 5405 l 2655 5405 l 2646 5352 l 2585 5352 l cp gs col0 s gr % Polyline n 2527 5238 m 2549 5331 l 2650 5327 l 2632 5238 l cp gs col0 s gr % Polyline n 2558 5263 m 2567 5300 l 2632 5300 l 2624 5258 l 2558 5258 l cp gs col0 s gr % Polyline n 2158 5253 m 2171 5336 l 2286 5336 l 2264 5243 l 2158 5243 l cp gs col0 s gr % Polyline n 2047 5243 m 2057 5336 l 2162 5336 l 2145 5243 l cp gs col0 s gr % Polyline n 2074 5263 m 2078 5305 l 2140 5305 l 2132 5258 l 2074 5258 l cp gs col0 s gr % Polyline n 2189 5263 m 2192 5295 l 2259 5295 l 2250 5253 l 2179 5258 l cp gs col0 s gr % Polyline n 2311 5159 m 2330 5227 l 2514 5227 l 2492 5149 l 2308 5144 l cp gs col0 s gr % Polyline n 2342 5159 m 2352 5196 l 2492 5196 l 2484 5159 l cp gs col0 s gr % Polyline n 2510 5154 m 2523 5227 l 2629 5223 l 2615 5149 l 2510 5149 l cp gs col0 s gr % Polyline n 2487 5060 m 2500 5144 l 2611 5144 l 2588 5050 l 2487 5050 l cp gs col0 s gr % Polyline n 2466 4977 m 2479 5045 l 2585 5040 l 2567 4972 l 2466 4966 l cp gs col0 s gr % Polyline n 2378 5055 m 2474 5055 l 2492 5134 l 2396 5134 l cp gs col0 s gr % Polyline n 2272 5050 m 2365 5055 l 2382 5127 l 2286 5134 l 2267 5055 l cp gs col0 s gr % Polyline n 2531 5165 m 2536 5201 l 2611 5201 l 2602 5159 l cp gs col0 s gr % Polyline n 2518 5070 m 2523 5108 l 2593 5108 l 2585 5066 l 2514 5066 l cp gs col0 s gr % Polyline n 2497 4982 m 2500 5019 l 2571 5019 l 2567 4982 l cp gs col0 s gr % Polyline n 2060 5336 m 2078 5305 l gs col0 s gr % Polyline n 2044 5243 m 2070 5258 l gs col0 s gr % Polyline n 2145 5243 m 2132 5258 l gs col0 s gr % Polyline n 2162 5336 m 2135 5300 l gs col0 s gr % Polyline n 2171 5336 m 2192 5295 l gs col0 s gr % Polyline n 2158 5243 m 2189 5258 l gs col0 s gr % Polyline n 2264 5243 m 2250 5258 l gs col0 s gr % Polyline n 2280 5336 m 2259 5295 l gs col0 s gr % Polyline n 2294 5342 m 2316 5311 l gs col0 s gr % Polyline n 2267 5243 m 2303 5258 l gs col0 s gr % Polyline n 2396 5243 m 2391 5258 l gs col0 s gr % Polyline n 2426 5342 m 2399 5311 l gs col0 s gr % Polyline n 2440 5336 m 2462 5305 l gs col0 s gr % Polyline n 2418 5238 m 2448 5258 l gs col0 s gr % Polyline n 2518 5238 m 2510 5253 l gs col0 s gr % Polyline n 2536 5336 m 2518 5305 l gs col0 s gr % Polyline n 2549 5331 m 2567 5300 l gs col0 s gr % Polyline n 2531 5238 m 2558 5258 l gs col0 s gr % Polyline n 2632 5238 m 2629 5258 l gs col0 s gr % Polyline n 2655 5327 m 2637 5300 l gs col0 s gr % Polyline n 2523 5227 m 2536 5201 l gs col0 s gr % Polyline n 2510 5149 m 2531 5165 l gs col0 s gr % Polyline n 2615 5149 m 2602 5165 l gs col0 s gr % Polyline n 2629 5223 m 2615 5201 l gs col0 s gr % Polyline n 2342 5440 m 2374 5415 l gs col0 s gr % Polyline n 2321 5352 m 2365 5362 l gs col0 s gr % Polyline n 2448 5440 m 2430 5415 l gs col0 s gr % Polyline n 2430 5352 m 2422 5358 l gs col0 s gr % Polyline n 2443 5347 m 2474 5352 l gs col0 s gr % Polyline n 2462 5440 m 2487 5405 l gs col0 s gr % Polyline n 2567 5440 m 2544 5405 l gs col0 s gr % Polyline n 2541 5342 m 2536 5352 l gs col0 s gr % Polyline n 2549 5336 m 2585 5352 l gs col0 s gr % Polyline n 2575 5440 m 2593 5405 l gs col0 s gr % Polyline n 2681 5435 m 2655 5405 l gs col0 s gr % Polyline n 2655 5336 m 2650 5352 l gs col0 s gr % Polyline n 2294 5070 m 2360 5070 l 2365 5112 l 2303 5112 l cp gs col0 s gr % Polyline n 2399 5070 m 2466 5070 l 2474 5118 l 2412 5118 l cp gs col0 s gr % Polyline n 2303 4972 m 2316 5040 l 2470 5040 l 2462 4997 l 2456 4962 l 2330 4962 l cp gs col0 s gr % Polyline n 2330 4966 m 2334 4997 l 2462 4997 l gs col0 s gr % Polyline n 2192 4972 m 2206 5050 l 2311 5045 l 2298 4977 l 2286 4962 l 2210 4966 l 2192 4966 l cp gs col0 s gr % Polyline n 2210 4966 m 2220 5008 l 2290 5008 l 2286 4966 l gs col0 s gr % Polyline n 2338 5003 m 2316 5040 l gs col0 s gr % Polyline n 2220 5013 m 2210 5045 l gs col0 s gr % Polyline n 2294 5008 m 2308 5040 l gs col0 s gr % Polyline n 2154 5060 m 2171 5144 l 2272 5138 l 2254 5055 l 2158 5055 l gs col0 s gr % Polyline n 2179 5066 m 2189 5108 l 2250 5101 l 2242 5066 l 2179 5066 l cp gs col0 s gr % Polyline n 2179 5070 m 2154 5055 l gs col0 s gr % Polyline n 2189 5108 m 2171 5144 l gs col0 s gr % Polyline n 2250 5108 m 2272 5134 l gs col0 s gr % Polyline n 2246 5066 m 2250 5055 l gs col0 s gr % Polyline n 2198 5149 m 2215 5238 l 2321 5232 l 2298 5149 l 2198 5149 l cp gs col0 s gr % Polyline n 2215 5238 m 2233 5196 l 2294 5196 l 2321 5232 l gs col0 s gr % Polyline n 2233 5196 m 2223 5159 l 2298 5154 l 2294 5190 l gs col0 s gr % Polyline n 2223 5159 m 2202 5149 l gs col0 s gr % Polyline n 2298 5159 m 2298 5149 l gs col0 s gr % Polyline n 2091 4972 m 2104 5050 l 2202 5050 l 2189 4962 l 2088 4966 l gs col0 s gr % Polyline n 2104 5050 m 2122 5019 l 2189 5019 l 2202 5045 l gs col0 s gr % Polyline n 2122 5019 m 2110 4972 l 2091 4966 l gs col0 s gr % Polyline n 2114 4972 m 2179 4972 l 2192 4966 l gs col0 s gr % Polyline n 2179 4977 m 2189 5019 l gs col0 s gr % Polyline n 2047 5055 m 2060 5144 l 2171 5144 l 2148 5055 l 2047 5055 l cp gs col0 s gr % Polyline n 2060 5144 m 2083 5101 l 2145 5101 l 2171 5144 l gs col0 s gr % Polyline n 2083 5101 m 2074 5066 l 2052 5055 l gs col0 s gr % Polyline n 2074 5066 m 2145 5066 l 2154 5055 l gs col0 s gr % Polyline n 2145 5066 m 2145 5101 l gs col0 s gr % Polyline n 2088 5149 m 2101 5238 l 2210 5238 l 2189 5149 l 2088 5149 l cp gs col0 s gr % Polyline n 2101 5238 m 2122 5201 l 2179 5196 l 2210 5238 l gs col0 s gr % Polyline n 2122 5196 m 2122 5170 l 2088 5149 l gs col0 s gr % Polyline n 2122 5170 m 2179 5170 l 2189 5149 l gs col0 s gr % Polyline n 2184 5170 m 2184 5196 l gs col0 s gr % Polyline n 1928 5253 m 1938 5342 l 2052 5342 l 2039 5248 l 1925 5248 l gs col0 s gr % Polyline n 1924 5263 m 1932 5263 l gs col0 s gr % Polyline n 1938 5342 m 1965 5305 l 2026 5305 l 2052 5342 l gs col0 s gr % Polyline n 1965 5300 m 1959 5274 l 1928 5248 l gs col0 s gr % Polyline n 1959 5269 m 2022 5269 l 2039 5248 l gs col0 s gr % Polyline n 2026 5300 m 2022 5263 l gs col0 s gr % Polyline n 2018 5274 m 2026 5274 l gs col0 s gr % Polyline n 1972 5149 m 1982 5243 l 2088 5238 l 2078 5144 l 1972 5149 l cp gs col0 s gr % Polyline n 1982 5238 m 2009 5206 l 2070 5206 l 2088 5238 l gs col0 s gr % Polyline n 1972 5149 m 2009 5170 l 2009 5206 l gs col0 s gr % Polyline n 2009 5170 m 2066 5165 l 2078 5149 l gs col0 s gr % Polyline n 2070 5165 m 2066 5206 l gs col0 s gr % Polyline n 1982 4962 m 1990 5050 l 2091 5050 l 2083 4962 l 1982 4962 l cp gs col0 s gr % Polyline n 1995 5050 m 2013 5008 l 2070 5008 l 2091 5050 l gs col0 s gr % Polyline n 1982 4966 m 2013 4982 l 2013 5008 l gs col0 s gr % Polyline n 2013 4982 m 2070 4982 l 2070 5008 l gs col0 s gr % Polyline n 2070 4982 m 2088 4962 l gs col0 s gr % Polyline n 1938 5060 m 1946 5149 l 2060 5144 l 2047 5055 l 1938 5055 l gs col0 s gr % Polyline n 1946 5144 m 1969 5108 l 2030 5108 l 2060 5144 l gs col0 s gr % Polyline n 1972 5108 m 1969 5076 l 1938 5055 l gs col0 s gr % Polyline n 1969 5076 m 2030 5076 l 2047 5055 l gs col0 s gr % Polyline n 2030 5076 m 2030 5108 l gs col0 s gr % Polyline n 2334 5227 m 2352 5196 l gs col0 s gr % Polyline n 2286 5134 m 2303 5112 l gs col0 s gr % Polyline n 2311 5144 m 2347 5159 l gs col0 s gr % Polyline n 2492 5144 m 2484 5159 l gs col0 s gr % Polyline n 2382 5127 m 2365 5112 l gs col0 s gr % Polyline n 2365 5050 m 2360 5070 l gs col0 s gr % Polyline n 2272 5055 m 2294 5070 l gs col0 s gr % Polyline n 2382 5050 m 2399 5070 l gs col0 s gr % Polyline n 2396 5134 m 2412 5118 l gs col0 s gr % Polyline n 2492 5134 m 2474 5118 l gs col0 s gr % Polyline n 2474 5050 m 2466 5070 l gs col0 s gr % Polyline n 2466 5070 m 2474 5070 l gs col0 s gr % Polyline n 2479 5045 m 2500 5019 l gs col0 s gr % Polyline n 2466 4972 m 2500 4982 l gs col0 s gr % Polyline n 2571 4972 m 2567 4982 l gs col0 s gr % Polyline n 2588 5045 m 2571 5019 l gs col0 s gr % Polyline n 2514 5227 m 2492 5196 l gs col0 s gr % Polyline n 2505 5144 m 2523 5108 l gs col0 s gr % Polyline n 2487 5050 m 2518 5066 l gs col0 s gr % Polyline n 2588 5050 m 2585 5066 l gs col0 s gr % Polyline n 2611 5144 m 2593 5108 l gs col0 s gr % Polyline n 1863 5149 m 1871 5238 l 1982 5243 l 1969 5149 l 1863 5149 l cp gs col0 s gr % Polyline n 1871 5238 m 1890 5206 l 1959 5206 l 1978 5238 l gs col0 s gr % Polyline n 1890 5206 m 1890 5170 l 1868 5149 l gs col0 s gr % Polyline n 1890 5170 m 1956 5170 l 1969 5149 l gs col0 s gr % Polyline n 1956 5170 m 1959 5206 l gs col0 s gr % Polyline n 1810 5248 m 1819 5347 l 1928 5347 l 1925 5248 l 1810 5248 l cp gs col0 s gr % Polyline n 1814 5347 m 1840 5311 l 1907 5311 l 1928 5347 l gs col0 s gr % Polyline n 1907 5311 m 1907 5269 l 1925 5248 l gs col0 s gr % Polyline n 1907 5269 m 1837 5269 l 1837 5311 l gs col0 s gr % Polyline n 1837 5269 m 1810 5248 l gs col0 s gr % Polyline n 1749 5149 m 1752 5238 l 1863 5238 l 1854 5149 l 1749 5149 l cp gs col0 s gr % Polyline n 1752 5238 m 1775 5206 l 1837 5206 l 1868 5238 l gs col0 s gr % Polyline n 1775 5206 m 1775 5170 l 1749 5149 l gs col0 s gr % Polyline n 1780 5170 m 1837 5165 l 1854 5149 l gs col0 s gr % Polyline n 1837 5170 m 1837 5206 l gs col0 s gr % Polyline n 1695 5248 m 1695 5342 l 1814 5342 l 1806 5248 l 1695 5248 l cp gs col0 s gr % Polyline n 1695 5342 m 1722 5311 l 1789 5311 l 1810 5342 l gs col0 s gr % Polyline n 1722 5311 m 1718 5274 l 1695 5248 l gs col0 s gr % Polyline n 1718 5269 m 1789 5269 l 1806 5248 l gs col0 s gr % Polyline n 1789 5269 m 1789 5311 l gs col0 s gr % Polyline n 1824 5055 m 1833 5144 l 1942 5144 l 1928 5055 l 1824 5055 l cp gs col0 s gr % Polyline n 1837 5144 m 1854 5112 l 1921 5112 l 1938 5144 l gs col0 s gr % Polyline n 1854 5108 m 1850 5076 l 1827 5055 l gs col0 s gr % Polyline n 1854 5070 m 1925 5070 l 1928 5055 l gs col0 s gr % Polyline n 1925 5076 m 1921 5108 l gs col0 s gr % Polyline n 1871 4966 m 1881 5045 l 1982 5045 l 1972 4962 l 1871 4962 l 1871 4966 l cp gs col0 s gr % Polyline n 1881 5045 m 1898 5019 l 1965 5019 l 1982 5045 l gs col0 s gr % Polyline n 1965 5019 m 1959 4982 l 1969 4962 l gs col0 s gr % Polyline n 1959 4982 m 1890 4982 l 1898 5019 l gs col0 s gr % Polyline n 1890 4977 m 1871 4962 l gs col0 s gr % Polyline n 1762 4956 m 1770 5045 l 1871 5045 l 1858 4962 l 1762 4962 l gs col0 s gr % Polyline n 1766 5045 m 1789 5019 l 1850 5019 l 1871 5045 l gs col0 s gr % Polyline n 1762 4962 m 1783 4972 l 1789 5019 l gs col0 s gr % Polyline n 1789 4972 m 1850 4972 l 1858 4962 l gs col0 s gr % Polyline n 1850 4972 m 1850 5019 l gs col0 s gr % Polyline n 1708 5055 m 1714 5144 l 1833 5144 l 1814 5055 l 1714 5055 l gs col0 s gr % Polyline n 1718 5144 m 1739 5112 l 1806 5112 l 1833 5144 l gs col0 s gr % Polyline n 1739 5112 m 1736 5076 l 1714 5055 l gs col0 s gr % Polyline n 1739 5076 m 1806 5081 l 1814 5055 l gs col0 s gr % Polyline n 1806 5081 m 1806 5112 l gs col0 s gr % Polyline n 1651 4966 m 1657 5045 l 1762 5040 l 1752 4962 l 1651 4962 l gs col0 s gr % Polyline n 1657 5045 m 1674 5019 l 1745 5019 l 1758 5040 l gs col0 s gr % Polyline n 1674 5019 m 1670 4977 l 1651 4962 l gs col0 s gr % Polyline n 1674 4977 m 1745 4972 l 1752 4962 l gs col0 s gr % Polyline n 1745 4977 m 1749 5019 l gs col0 s gr % Polyline n 1604 5055 m 1604 5144 l 1708 5144 l 1705 5055 l 1604 5055 l cp gs col0 s gr % Polyline n 1604 5144 m 1620 5118 l 1692 5118 l 1708 5144 l gs col0 s gr % Polyline n 1626 5118 m 1620 5076 l 1604 5055 l gs col0 s gr % Polyline n 1620 5070 m 1692 5070 l 1705 5055 l gs col0 s gr % Polyline n 1692 5076 m 1692 5118 l gs col0 s gr % Polyline n 1630 5149 m 1626 5232 l 1749 5238 l 1739 5149 l 1630 5149 l cp gs col0 s gr % Polyline n 1630 5238 m 1651 5212 l 1731 5212 l 1745 5232 l gs col0 s gr % Polyline n 1651 5212 m 1651 5170 l 1630 5149 l gs col0 s gr % Polyline n 1648 5165 m 1731 5165 l 1739 5149 l gs col0 s gr % Polyline n 1735 5149 m 1743 5149 l gs col0 s gr % Polyline n 1731 5170 m 1731 5212 l gs col0 s gr % Polyline n 1573 5248 m 1576 5342 l 1687 5342 l 1682 5248 l 1573 5248 l cp gs col0 s gr % Polyline n 1582 5342 m 1599 5316 l 1670 5311 l 1687 5336 l gs col0 s gr % Polyline n 1599 5311 m 1599 5263 l 1573 5248 l gs col0 s gr % Polyline n 1599 5263 m 1670 5263 l 1682 5248 l gs col0 s gr % Polyline n 1670 5263 m 1670 5316 l gs col0 s gr % Polyline n 1542 4966 m 1546 5040 l 1648 5040 l 1638 4962 l 1542 4962 l gs col0 s gr % Polyline n 1546 5040 m 1563 5019 l 1630 5019 l 1648 5040 l gs col0 s gr % Polyline n 1563 5019 m 1563 4982 l 1542 4962 l gs col0 s gr % Polyline n 1563 4982 m 1630 4982 l 1638 4962 l gs col0 s gr % Polyline n 1630 4982 m 1630 5019 l gs col0 s gr % Polyline n 1489 5055 m 1489 5144 l 1599 5144 l 1590 5055 l 1485 5055 l gs col0 s gr % Polyline n 1489 5144 m 1512 5108 l 1576 5108 l 1599 5144 l gs col0 s gr % Polyline n 1512 5108 m 1512 5076 l 1489 5055 l gs col0 s gr % Polyline n 1512 5076 m 1576 5076 l 1590 5055 l gs col0 s gr % Polyline n 1576 5076 m 1576 5108 l gs col0 s gr % Polyline n 1512 5149 m 1516 5238 l 1620 5238 l 1620 5149 l 1512 5149 l cp gs col0 s gr % Polyline n 1516 5238 m 1538 5212 l 1607 5212 l 1620 5238 l gs col0 s gr % Polyline n 1538 5212 m 1538 5170 l 1512 5149 l gs col0 s gr % Polyline n 1538 5170 m 1607 5170 l 1620 5149 l gs col0 s gr % Polyline n 1607 5170 m 1607 5212 l gs col0 s gr % Polyline n 1454 5248 m 1458 5347 l 1573 5342 l 1569 5248 l 1454 5248 l cp gs col0 s gr % Polyline n 1458 5342 m 1485 5311 l 1550 5311 l 1569 5342 l gs col0 s gr % Polyline n 1489 5311 m 1485 5269 l 1454 5248 l gs col0 s gr % Polyline n 1485 5263 m 1550 5263 l 1569 5248 l gs col0 s gr % Polyline n 1550 5263 m 1550 5311 l gs col0 s gr % Polyline n 1431 4962 m 1431 5050 l 1533 5050 l 1525 4962 l 1431 4962 l cp gs col0 s gr % Polyline n 1431 5045 m 1454 5019 l 1512 5019 l 1533 5045 l gs col0 s gr % Polyline n 1454 5019 m 1454 4972 l 1431 4956 l gs col0 s gr % Polyline n 1454 4972 m 1516 4972 l 1525 4962 l gs col0 s gr % Polyline n 1516 4972 m 1512 5019 l gs col0 s gr % Polyline n 1374 5055 m 1374 5144 l 1481 5144 l 1475 5055 l 1374 5050 l gs col0 s gr % Polyline n 1374 5144 m 1397 5112 l 1462 5112 l 1481 5144 l gs col0 s gr % Polyline n 1397 5112 m 1401 5070 l 1374 5055 l gs col0 s gr % Polyline n 1401 5066 m 1462 5066 l 1481 5055 l gs col0 s gr % Polyline n 1462 5070 m 1462 5112 l gs col0 s gr % Polyline n 1401 5149 m 1401 5238 l 1502 5238 l 1506 5149 l 1401 5149 l cp gs col0 s gr % Polyline n 1401 5238 m 1418 5212 l 1494 5212 l 1506 5238 l gs col0 s gr % Polyline n 1418 5212 m 1418 5170 l 1401 5149 l gs col0 s gr % Polyline n 1418 5170 m 1494 5170 l 1506 5149 l gs col0 s gr % Polyline n 1494 5170 m 1494 5212 l gs col0 s gr % Polyline n 1343 5248 m 1343 5342 l 1454 5342 l 1454 5248 l 1343 5248 l cp gs col0 s gr % Polyline n 1343 5342 m 1362 5300 l 1431 5300 l 1454 5342 l gs col0 s gr % Polyline n 1366 5300 m 1366 5263 l 1343 5248 l gs col0 s gr % Polyline n 1366 5263 m 1431 5263 l 1450 5248 l gs col0 s gr % Polyline n 1431 5263 m 1431 5300 l gs col0 s gr % Polyline n 1313 5045 m 1428 5045 l 1418 4962 l 1313 4962 l 1313 5040 l gs col0 s gr % Polyline n 1313 5045 m 1343 5013 l 1401 5008 l 1428 5040 l gs col0 s gr % Polyline n 1343 5013 m 1343 4966 l 1313 4962 l gs col0 s gr % Polyline n 1343 4966 m 1410 4966 l 1424 4962 l gs col0 s gr % Polyline n 1420 4966 m 1428 4966 l gs col0 s gr % Polyline n 1410 4972 m 1401 5013 l gs col0 s gr % Polyline n 1217 5243 m 1221 5347 l 1330 5347 l 1330 5248 l 1217 5238 l gs col0 s gr % Polyline n 1225 5347 m 1248 5311 l 1309 5311 l 1336 5342 l gs col0 s gr % Polyline n 1309 5311 m 1309 5258 l 1336 5243 l gs col0 s gr % Polyline n 1305 5258 m 1242 5258 l 1221 5243 l gs col0 s gr % Polyline n 1242 5258 m 1248 5311 l gs col0 s gr % Polyline n 1282 5149 m 1282 5238 l 1393 5238 l 1387 5149 l 1282 5149 l cp gs col0 s gr % Polyline n 1282 5238 m 1299 5206 l 1374 5206 l 1397 5238 l gs col0 s gr % Polyline n 1374 5206 m 1374 5154 l 1387 5149 l gs col0 s gr % Polyline n 1299 5206 m 1299 5154 l 1282 5149 l gs col0 s gr % Polyline n 1305 5154 m 1374 5154 l gs col0 s gr % Polyline n 1265 5060 m 1265 5134 l 1366 5134 l 1366 5055 l 1261 5055 l gs col0 s gr % Polyline n 1261 5134 m 1278 5108 l 1353 5108 l 1370 5134 l gs col0 s gr % Polyline n 1353 5108 m 1353 5066 l 1366 5055 l gs col0 s gr % Polyline n 1353 5066 m 1278 5060 l 1261 5055 l gs col0 s gr % Polyline n 1278 5108 m 1278 5060 l gs col0 s gr % Polyline n 1208 4956 m 1208 5045 l 1309 5050 l 1309 4962 l 1211 4962 l gs col0 s gr % Polyline n 1208 5045 m 1225 5013 l 1292 5013 l 1309 5045 l gs col0 s gr % Polyline n 1292 5013 m 1292 4966 l 1309 4962 l gs col0 s gr % Polyline n 1292 4962 m 1230 4962 l 1208 4962 l gs col0 s gr % Polyline n 1225 4966 m 1230 5013 l gs col0 s gr % Polyline n 1098 4962 m 1098 5045 l 1198 5045 l 1198 4962 l 1102 4962 l gs col0 s gr % Polyline n 1098 5040 m 1120 5013 l 1181 5008 l 1198 5045 l gs col0 s gr % Polyline n 1181 5008 m 1181 4962 l 1198 4962 l gs col0 s gr % Polyline n 1181 4966 m 1120 4962 l 1120 5008 l gs col0 s gr % Polyline n 1120 4962 m 1098 4962 l gs col0 s gr % Polyline n 1150 5055 m 1146 5144 l 1252 5144 l 1255 5055 l 1150 5050 l gs col0 s gr % Polyline n 1142 5144 m 1167 5108 l 1234 5108 l 1252 5144 l gs col0 s gr % Polyline n 1234 5108 m 1234 5066 l 1255 5055 l gs col0 s gr % Polyline n 1234 5066 m 1164 5066 l 1164 5108 l gs col0 s gr % Polyline n 1164 5066 m 1146 5050 l gs col0 s gr % Polyline n 1167 5149 m 1167 5238 l 1278 5238 l 1278 5149 l 1167 5149 l cp gs col0 s gr % Polyline n 1173 5232 m 1194 5206 l 1261 5206 l 1278 5232 l gs col0 s gr % Polyline n 1265 5206 m 1261 5159 l 1278 5149 l gs col0 s gr % Polyline n 1265 5159 m 1190 5154 l 1194 5206 l gs col0 s gr % Polyline n 1190 5154 m 1167 5149 l gs col0 s gr % Polyline n 1106 5253 m 1106 5342 l 1217 5336 l 1217 5248 l 1106 5248 l 1106 5258 l gs col0 s gr % Polyline n 1102 5263 m 1110 5263 l gs col0 s gr % Polyline n 1106 5342 m 1123 5311 l 1194 5311 l 1217 5336 l gs col0 s gr % Polyline n 1207 5331 m 1215 5331 l gs col0 s gr % Polyline n 1194 5311 m 1198 5258 l 1217 5248 l gs col0 s gr % Polyline n 1198 5258 m 1120 5258 l 1123 5311 l gs col0 s gr % Polyline n 1123 5258 m 1106 5248 l gs col0 s gr % Polyline n 1049 5154 m 1049 5238 l 1167 5238 l 1160 5149 l 1049 5149 l gs col0 s gr % Polyline n 1054 5238 m 1072 5206 l 1146 5206 l 1167 5238 l gs col0 s gr % Polyline n 1146 5206 m 1146 5159 l 1164 5149 l gs col0 s gr % Polyline n 1146 5159 m 1066 5159 l 1072 5206 l gs col0 s gr % Polyline n 1072 5159 m 1049 5149 l gs col0 s gr % Polyline n 1032 5060 m 1032 5149 l 1142 5144 l 1142 5050 l 1032 5050 l 1032 5060 l cp gs col0 s gr % Polyline n 1032 5144 m 1049 5112 l 1120 5112 l 1146 5144 l gs col0 s gr % Polyline n 1120 5112 m 1120 5066 l 1142 5055 l gs col0 s gr % Polyline n 1120 5066 m 1049 5066 l 1049 5112 l gs col0 s gr % Polyline n 1054 5066 m 1032 5050 l gs col0 s gr % Polyline n 988 4962 m 984 5040 l 1089 5045 l 1085 4962 l 988 4962 l cp gs col0 s gr % Polyline n 984 5040 m 1005 5013 l 1066 5013 l 1089 5040 l gs col0 s gr % Polyline n 1066 5013 m 1066 4972 l 1089 4962 l gs col0 s gr % Polyline n 1066 4972 m 1010 4972 l 1005 5013 l gs col0 s gr % Polyline n 1010 4972 m 988 4962 l gs col0 s gr % Polyline n 984 4956 m 992 4956 l gs col0 s gr % Polyline n 900 5253 m 886 5342 l 1098 5342 l 1098 5248 l 900 5248 l gs col0 s gr % Polyline n 890 5342 m 913 5311 l 1062 5311 l 1098 5336 l gs col0 s gr % Polyline n 1062 5311 m 1066 5263 l 1098 5248 l gs col0 s gr % Polyline n 1094 5248 m 1102 5248 l gs col0 s gr % Polyline n 1066 5263 m 913 5263 l 913 5311 l gs col0 s gr % Polyline n 913 5263 m 900 5248 l gs col0 s gr % Polyline n 909 5149 m 900 5243 l 1045 5243 l 1045 5149 l 909 5149 l cp gs col0 s gr % Polyline n 904 5238 m 927 5216 l 1028 5216 l 1045 5238 l gs col0 s gr % Polyline n 1028 5216 m 1028 5170 l 1045 5149 l gs col0 s gr % Polyline n 1028 5170 m 927 5170 l 930 5216 l gs col0 s gr % Polyline n 927 5170 m 913 5149 l gs col0 s gr % Polyline n 913 5144 m 1028 5144 l 1028 5055 l 927 5050 l 913 5144 l cp gs col0 s gr % Polyline n 913 5144 m 934 5101 l 988 5101 l 1028 5144 l gs col0 s gr % Polyline n 934 5101 m 944 5066 l 927 5050 l gs col0 s gr % Polyline n 944 5066 m 988 5066 l 988 5101 l gs col0 s gr % Polyline n 988 5066 m 1022 5055 l gs col0 s gr % Polyline n 930 4951 m 984 4951 l 978 5050 l 927 5050 l 934 4951 l gs col0 s gr % Polyline n 940 4888 m 934 4945 l 1041 4945 l 1049 4888 l 944 4888 l gs col0 s gr % Polyline n 940 4941 m 948 4915 l 1028 4915 l 1041 4945 l gs col0 s gr % Polyline n 1028 4915 m 1028 4893 l gs col0 s gr % Polyline n 948 4909 m 957 4888 l gs col0 s gr % Polyline n 1066 4893 m 1062 4945 l 1173 4945 l 1177 4893 l 1072 4893 l gs col0 s gr % Polyline n 1062 4945 m 1076 4930 l 1160 4924 l 1177 4945 l gs col0 s gr % Polyline n 1079 4924 m 1079 4893 l gs col0 s gr % Polyline n 1160 4930 m 1164 4893 l gs col0 s gr % Polyline n 1190 4899 m 1186 4945 l 1274 4945 l 1278 4893 l 1190 4893 l gs col0 s gr % Polyline n 1186 4945 m 1204 4924 l 1255 4924 l 1274 4945 l gs col0 s gr % Polyline n 1255 4924 m 1261 4899 l gs col0 s gr % Polyline n 1204 4924 m 1208 4893 l gs col0 s gr % Polyline n 1286 4899 m 1286 4951 l 1374 4951 l 1374 4899 l 1286 4893 l gs col0 s gr % Polyline n 1286 4951 m 1299 4930 l 1362 4930 l 1374 4951 l gs col0 s gr % Polyline n 1299 4930 m 1299 4893 l gs col0 s gr % Polyline n 1362 4930 m 1362 4899 l gs col0 s gr % Polyline n 1387 4899 m 1387 4951 l 1475 4951 l 1475 4893 l 1387 4893 l gs col0 s gr % Polyline n 1383 4893 m 1391 4893 l gs col0 s gr % Polyline n 1387 4951 m 1406 4924 l 1462 4930 l 1475 4951 l gs col0 s gr % Polyline n 1406 4930 m 1406 4893 l gs col0 s gr % Polyline n 1458 4930 m 1462 4893 l gs col0 s gr % Polyline n 1498 4893 m 1494 4951 l 1582 4951 l 1582 4893 l 1494 4893 l gs col0 s gr % Polyline n 1494 4951 m 1506 4924 l 1563 4924 l 1582 4951 l gs col0 s gr % Polyline n 1506 4924 m 1506 4893 l gs col0 s gr % Polyline n 1563 4924 m 1563 4893 l gs col0 s gr % Polyline n 1590 4893 m 1590 4951 l 1682 4951 l 1682 4893 l 1590 4893 l cp gs col0 s gr % Polyline n 1586 4893 m 1594 4893 l gs col0 s gr % Polyline n 1590 4951 m 1599 4935 l 1664 4935 l 1682 4951 l gs col0 s gr % Polyline n 1664 4935 m 1664 4893 l gs col0 s gr % Polyline n 1599 4935 m 1599 4893 l gs col0 s gr % Polyline n 1687 4899 m 1687 4951 l 1775 4951 l 1770 4893 l 1687 4893 l gs col0 s gr % Polyline n 1687 4951 m 1701 4935 l 1758 4935 l 1775 4951 l gs col0 s gr % Polyline n 1701 4935 m 1701 4893 l gs col0 s gr % Polyline n 1752 4935 m 1752 4893 l gs col0 s gr % Polyline n 1780 4893 m 1780 4951 l 1871 4951 l 1871 4893 l 1780 4893 l cp gs col0 s gr % Polyline n 1780 4951 m 1793 4935 l 1858 4935 l 1871 4951 l gs col0 s gr % Polyline n 1881 4893 m 1881 4951 l 1972 4951 l 1972 4893 l 1881 4893 l cp gs col0 s gr % Polyline n 1881 4951 m 1890 4935 l 1965 4935 l 1972 4951 l gs col0 s gr % Polyline n 1894 4935 m 1890 4893 l gs col0 s gr % Polyline n 1965 4935 m 1965 4893 l gs col0 s gr % Polyline n 1796 4935 m 1793 4893 l gs col0 s gr % Polyline n 1863 4935 m 1863 4893 l gs col0 s gr % Polyline n 1982 4893 m 1982 4951 l 2078 4951 l 2078 4893 l 1982 4893 l cp gs col0 s gr % Polyline n 1982 4951 m 1995 4935 l 2066 4935 l 2078 4951 l gs col0 s gr % Polyline n 2000 4935 m 2000 4893 l gs col0 s gr % Polyline n 2066 4935 m 2066 4893 l gs col0 s gr % Polyline n 2088 4893 m 2088 4951 l 2179 4951 l 2179 4893 l 2083 4893 l gs col0 s gr % Polyline n 2088 4951 m 2096 4941 l 2166 4941 l 2184 4951 l gs col0 s gr % Polyline n 2101 4935 m 2101 4893 l gs col0 s gr % Polyline n 2166 4941 m 2166 4893 l gs col0 s gr % Polyline n 2189 4893 m 2189 4951 l 2280 4951 l 2277 4893 l 2189 4888 l gs col0 s gr % Polyline n 2189 4951 m 2206 4935 l 2264 4935 l 2280 4951 l gs col0 s gr % Polyline n 2264 4935 m 2264 4893 l gs col0 s gr % Polyline n 2206 4935 m 2206 4893 l gs col0 s gr % Polyline n 2286 4893 m 2286 4951 l 2378 4951 l 2378 4893 l 2286 4888 l gs col0 s gr % Polyline n 2286 4956 m 2303 4935 l 2365 4935 l 2378 4951 l gs col0 s gr % Polyline n 2308 4935 m 2303 4893 l gs col0 s gr % Polyline n 2365 4935 m 2365 4893 l gs col0 s gr % Polyline n 2382 4893 m 2382 4956 l 2466 4956 l 2466 4893 l 2382 4893 l cp gs col0 s gr % Polyline n 2386 4951 m 2399 4935 l 2453 4935 l 2462 4951 l gs col0 s gr % Polyline n 2399 4935 m 2399 4893 l gs col0 s gr % Polyline n 2453 4935 m 2453 4893 l gs col0 s gr % Polyline n 2470 4899 m 2470 4962 l 2567 4962 l 2558 4893 l 2470 4893 l gs col0 s gr % Polyline n 2474 4962 m 2487 4935 l 2558 4935 l 2571 4956 l gs col0 s gr % Polyline n 2558 4935 m 2549 4893 l gs col0 s gr % Polyline n 2492 4935 m 2487 4893 l gs col0 s gr % Polyline n 2523 4836 m 2558 4836 l 2558 4857 l 2523 4857 l cp gs col0 s gr % Polyline n 1502 3336 m 1506 3382 l 1995 3378 l 1995 3336 l gs col0 s gr % Polyline n 1877 5358 m 1912 5347 l gs col0 s gr % Polyline n 7215 4979 m 7110 4979 7110 7950 105 arcto 4 {pop} repeat 7110 8055 8895 8055 105 arcto 4 {pop} repeat 9000 8055 9000 5084 105 arcto 4 {pop} repeat 9000 4979 7215 4979 105 arcto 4 {pop} repeat cp gs col43 1.00 shd ef gr gs col0 s gr /Palatino-Bold-iso ff 206.38 scf sf 2925 3690 m gs 1 -1 sc (\(2\)) col0 sh gr /Palatino-Bold-iso ff 206.38 scf sf 4815 8190 m gs 1 -1 sc (\(6\)) col0 sh gr /Palatino-Bold-iso ff 206.38 scf sf 9315 6525 m gs 1 -1 sc (\(5\)) col0 sh gr /Palatino-Bold-iso ff 206.38 scf sf 2970 4410 m gs 1 -1 sc (\(3\)) col0 sh gr /Palatino-Bold-iso ff 206.38 scf sf 4095 7650 m gs 1 -1 sc (\(4\)) col0 sh gr % here ends figure; % % here starts figure with depth 30 /Palatino-Bold-iso ff 238.13 scf sf 1980 8010 m gs 1 -1 sc (Storage Element) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline 0 slj 0 slc 7.500 slw n 7380 7239 m 7245 7239 7245 7785 135 arcto 4 {pop} repeat 7245 7920 8730 7920 135 arcto 4 {pop} repeat 8865 7920 8865 7374 135 arcto 4 {pop} repeat 8865 7239 7380 7239 135 arcto 4 {pop} repeat cp gs col7 1.00 shd ef gr gs col0 s gr /Palatino-Roman-iso ff 206.38 scf sf 8055 7515 m gs 1 -1 sc (GridFTP) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Roman-iso ff 174.63 scf sf 7996 7762 m gs 1 -1 sc (server) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 7380 6321 m 7245 6321 7245 6994 135 arcto 4 {pop} repeat 7245 7129 8730 7129 135 arcto 4 {pop} repeat 8865 7129 8865 6456 135 arcto 4 {pop} repeat 8865 6321 7380 6321 135 arcto 4 {pop} repeat cp gs col7 1.00 shd ef gr gs col0 s gr /Palatino-Roman-iso ff 190.50 scf sf 8054 6769 m gs 1 -1 sc (Grid Manager) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 7395 5400 m 7245 5400 7245 6060 150 arcto 4 {pop} repeat 7245 6210 8715 6210 150 arcto 4 {pop} repeat 8865 6210 8865 5550 150 arcto 4 {pop} repeat 8865 5400 7395 5400 150 arcto 4 {pop} repeat cp gs col7 1.00 shd ef gr gs col0 s gr /Palatino-Roman-iso ff 190.50 scf sf 8055 5715 m gs 1 -1 sc (Local Information) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Roman-iso ff 190.50 scf sf 8055 5985 m gs 1 -1 sc (Service) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 222.25 scf sf 4725 2835 m gs 1 -1 sc (Replica) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 222.25 scf sf 4725 3105 m gs 1 -1 sc (Catalog) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 222.25 scf sf 6435 2835 m gs 1 -1 sc (Index) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 222.25 scf sf 6435 3105 m gs 1 -1 sc (Service) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 238.13 scf sf 1710 4095 m gs 1 -1 sc (Interface) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 238.13 scf sf 1710 3825 m gs 1 -1 sc (User) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline 30.000 slw gs clippath 6330 3612 m 6330 3315 l 6270 3315 l 6270 3612 l 6270 3612 l 6300 3492 l 6330 3612 l cp 2802 3750 m 2505 3750 l 2505 3810 l 2802 3810 l 2802 3810 l 2682 3780 l 2802 3750 l cp eoclip n 2520 3780 m 6300 3780 l 6300 3330 l gs col0 s gr gr % arrowhead 60.000 slw n 2802 3750 m 2682 3780 l 2802 3810 l 2802 3750 l cp gs 0.00 setgray ef gr col0 s % arrowhead n 6330 3612 m 6300 3492 l 6270 3612 l 6330 3612 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw [120] 0 sd gs clippath 3972 7755 m 3675 7755 l 3675 7815 l 3972 7815 l 3972 7815 l 3852 7785 l 3972 7755 l cp 6963 7815 m 7260 7815 l 7260 7755 l 6963 7755 l 6963 7755 l 7083 7785 l 6963 7815 l cp eoclip n 7245 7785 m 3690 7785 l gs col0 s gr gr [] 0 sd % arrowhead 60.000 slw n 6963 7815 m 7083 7785 l 6963 7755 l 6963 7815 l cp gs 0.00 setgray ef gr col0 s % arrowhead n 3972 7755 m 3852 7785 l 3972 7815 l 3972 7755 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw [120] 0 sd gs clippath 4755 3612 m 4755 3315 l 4695 3315 l 4695 3612 l 4695 3612 l 4725 3492 l 4755 3612 l cp eoclip n 8055 7920 m 8055 8325 l 4725 8325 l 4725 3330 l gs col0 s gr gr [] 0 sd % arrowhead 60.000 slw n 4755 3612 m 4725 3492 l 4695 3612 l 4755 3612 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 6600 3612 m 6600 3315 l 6540 3315 l 6540 3612 l 6540 3612 l 6570 3492 l 6600 3612 l cp eoclip n 7245 5805 m 6570 5805 l 6570 3330 l gs col0 s gr gr % arrowhead 60.000 slw n 6600 3612 m 6570 3492 l 6540 3612 l 6600 3612 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 6963 7365 m 7260 7365 l 7260 7305 l 6963 7305 l 6963 7305 l 7083 7335 l 6963 7365 l cp eoclip n 2520 4500 m 5760 4500 l 5760 7335 l 7245 7335 l gs col0 s gr gr % arrowhead 60.000 slw n 6963 7365 m 7083 7335 l 6963 7305 l 6963 7365 l cp gs 0.00 setgray ef gr col0 s % Polyline 30.000 slw gs clippath 9753 6645 m 10050 6645 l 10050 6585 l 9753 6585 l 9753 6585 l 9873 6615 l 9753 6645 l cp 9102 6585 m 8805 6585 l 8805 6645 l 9102 6645 l 9102 6645 l 8982 6615 l 9102 6585 l cp eoclip n 8820 6615 m 10035 6615 l gs col0 s gr gr % arrowhead 60.000 slw n 9102 6585 m 8982 6615 l 9102 6645 l 9102 6585 l cp gs 0.00 setgray ef gr col0 s % arrowhead n 9753 6645 m 9873 6615 l 9753 6585 l 9753 6645 l cp gs 0.00 setgray ef gr col0 s /Palatino-Bold-iso ff 238.13 scf sf 8055 5265 m gs 1 -1 sc (Front-end) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold-iso ff 238.13 scf sf 6345 4815 m gs 1 -1 sc (\(1\)) dup sw pop 2 div neg 0 rm col0 sh gr % A Generic Cluster /Palatino-Bold-iso ff 238.13 scf sf 9360 4725 m gs 1 -1 sc (Grid Enabled Cluster) dup sw pop 2 div neg 0 rm col0 sh gr % here ends figure; % % here starts figure with depth 0 % Arc 7.500 slw 0 slc n 4734.0 1852.4 1502.6 115.3779 64.6221 arcn gs col-1 s gr % Polyline 0 slj n 5378 2275 m 5378 3210 l gs col-1 s gr % Polyline n 4090 2275 m 4090 3210 l gs col-1 s gr % Ellipse n 4732 2259 641 143 0 360 DrawEllipse gs col-1 s gr % Arc n 6444.0 1852.4 1502.6 115.3779 64.6221 arcn gs col-1 s gr % Polyline n 7088 2275 m 7088 3210 l gs col-1 s gr % Polyline n 5800 2275 m 5800 3210 l gs col-1 s gr % Ellipse n 6442 2259 641 143 0 360 DrawEllipse gs col-1 s gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial 511 2148 a Fq(Figur)o(e)24 b(1.2:)j(An)d(overview)i(of)f (the)g(NorduGrid)g(ARC)f(ar)o(chitectur)o(e.)g(The)h(bold)g(lines)e (indicate)i(the)511 2253 y(\003ow)18 b(of)h(contr)o(ol)f(and)g(data)i (in)d(the)i(operation)g(of)f(the)h(grid.)g(The)f(dashed)i(lines)e (indicate)g(optional)h(data)511 2358 y(\003ow)f(depending)i(on)e(job)g (speci\002c)i(pr)o(operties.)544 2628 y Fz(1.)41 b(T)-8 b(o)33 b(enter)g(Nor)o(duGrid,)f(a)h(cluster)g(\(or)g(r)o(esour)o(ce)f (in)h(general\))g(must)g(r)o(un)h(thr)o(ee)648 2742 y(distinct)d (services;)g(a)g(grid)g(manager)f(service,)g(an)h(information)h (service)f(and)g(a)648 2857 y(GridFTP)23 b(service.)g(The)h (information)h(service)e(collects)h(local)f(information)i(and,)648 2971 y(as)g(illustrated)h(by)g(the)g(\002rst)g(arr)o(ow)-8 b(,)25 b(r)o(egisters)g(itself)h(with)h(the)f(index)g(service)f(to)648 3086 y(signal)c(its)g(arrival)f(in)h(the)g(grid.)544 3267 y(2.)41 b(The)26 b(user)h(pr)o(epar)o(es)e(a)h(job)i(description)f (and)f(submits)i(it)f(thr)o(ough)g(the)g(user)g(in-)648 3381 y(terface.)17 b(Befor)o(e)g(actually)i(submitting)h(the)f(job,)h (the)f(user)g(interface)f(performs)h(r)o(e-)648 3496 y(sour)o(ce)i(br)o(okering)g(by)h(matching)g(the)g(r)o(esour)o(ce)f(r)o (equir)o(ements)g(speci\002ed)g(in)h(the)648 3610 y(job)17 b(description)f(with)i(existing)f(clusters)f(in)h(the)g(grid.)f(Any)g (cluster)h(that)f(matches)648 3725 y(the)k(r)o(equir)o(ements)f(ar)o(e) g(eligible)h(for)f(pr)o(ocessing)h(the)h(job)f(and)g(the)g(user)f (interface)648 3839 y(selects)h(one)i(based)d(on)j(scheduling)f (policies.)544 4020 y(3.)41 b(Upon)30 b(selecting)h(the)f(destination)h (cluster)g(wher)o(e)f(the)g(job)h(will)g(r)o(un,)g(the)f(user)648 4135 y(interface)23 b(uploads)i(the)g(job)g(description)g(to)g(the)g (selected)f(cluster)h(by)f(means)h(of)648 4249 y(the)20 b(GridFTP)h(server)f(r)o(unning)j(at)d(the)h(fr)o(ont-end)f(of)g(that)h (cluster)-6 b(.)544 4430 y(4.)41 b(The)18 b(uploaded)f(job)i (description)g(is)g(detected)e(and)h(subsequently)h(parsed)f(by)g(the) 648 4545 y(grid)f(manager)g(r)o(unning)h(at)f(the)h(r)o(eceiving)f (cluster)-6 b(.)17 b(The)g(grid)g(manager)g(cr)o(eates)f(a)648 4659 y(session)h(dir)o(ectory)f(wher)o(e)f(all)h(information)i(and)e (data)f(pertaining)h(to)h(the)g(job)g(will)648 4774 y(eventually)h(be)h (stor)o(ed.)f(Depending)h(on)g(the)g(job)h(description)f(the)g(input)g (data)f(for)648 4889 y(a)j(job)h(is)g(either)g(fetched)f(fr)o(om)g(a)g (r)o(emote)g(location,)i(as)e(illustrated)g(by)h(the)g(fourth)648 5003 y(arr)o(ow)-8 b(,)20 b(or)g(uploaded)g(along)i(with)f(the)g(job)h (description)f(in)g(the)g(pr)o(evious)f(step.)544 5184 y(5.)41 b(When)18 b(the)g(input)g(data)f(for)g(a)h(job)g(is)g (available)f(in)h(the)g(session)h(dir)o(ectory)-9 b(,)16 b(the)i(grid)648 5298 y(manager)j(at)g(the)h(cluster)f(submits)i(the)f (job)g(to)g(the)g(local)g(r)o(esour)o(ce)e(management)648 5413 y(system)31 b(for)f(execution.)h(Curr)o(ently)f(Nor)o(duGrid)f (supports)i(a)f(variety)g(of)h(such)1831 5662 y(10)p eop %%Page: 11 13 11 12 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 648 531 a Fz(systems,)25 b(e.g.)f(OpenPBS,)h(PBSPr)o (o,)f(T)o(ORQUE,)g(Condor)h(and)g(N1)f(Grid)h(Engine)648 646 y([27)n(].)544 815 y(6.)41 b(When)28 b(a)f(job)h(has)g(completed)f (successfully)h(the)g(grid)f(manager)g(pr)o(ocesses)g(the)648 930 y(output)e(data)e(accor)o(ding)h(to)h(the)f(job)i(description)f (and)f(places)g(the)g(r)o(esult)g(either)648 1044 y(at)17 b(a)g(r)o(emote)h(location,)g(as)f(illustrated)h(by)g(the)g(sixth)g (arr)o(ow)-8 b(,)17 b(or)h(simply)h(leaves)e(the)648 1159 y(output)23 b(data)f(in)i(the)f(session)h(dir)o(ectory)-9 b(.)22 b(Finally)-9 b(,)23 b(if)g(r)o(equested)f(by)h(the)h(user)-6 b(,)22 b(the)648 1273 y(grid)e(manager)g(noti\002es)i(him)g(about)e (the)h(completion)h(of)f(the)g(job,)g(e.g.)f(by)h(email.)440 1509 y Fv(Grid)g(Manager)440 1682 y Fz(The)27 b(grid)g(manager)f(is)h (the)g(primary)g(interface)f(between)g(the)h(grid)g(and)g(the)g(local)g (r)o(e-)440 1797 y(sour)o(ce.)j(It)g(r)o(uns)h(on)g(the)f(fr)o(ont-end) f(machine)i(of)f(every)f(cluster)h(in)h(Nor)o(duGrid)f(and)440 1911 y(handles)d(incoming)h(job)f(submissions,)h(including)g(the)e(pr)o (e-)f(and)h(post-pr)o(ocessing)h(of)440 2026 y(data)20 b(r)o(elated)f(to)i(the)g(jobs.)565 2140 y(The)26 b(grid)h(manager)f (is)h(implemented)g(as)g(a)f(layer)g(on)h(top)g(of)g(the)g(Globus)h(T) -8 b(oolkit)440 2255 y(with)29 b(integrated)f(support)h(for)f(a)g(r)o (eplica)g(catalogue,)f(which)j(is)f(used)f(for)g(sharing)h(of)440 2369 y(cached)17 b(\002les)i(among)g(users)f(and)g(for)g(staging)h (input/output)h(data.)d(The)h(grid)g(manager)440 2484 y(interfaces)i(with)h(a)g(GridFTP)g(server)f(for)g(job)i(submission.) 565 2599 y(For)d(every)f(job)i(the)f(grid)g(manager)f(cr)o(eates)g(a)g (session)i(dir)o(ectory)f(and)f(stor)o(es)h(the)g(in-)440 2713 y(put)h(\002les)g(for)f(the)h(job)g(in)g(it.)g(Since)f(the)h (gathering)g(of)f(job)i(and)e(input)h(data)e(is)i(performed)440 2828 y(by)26 b(the)f(cluster)h(fr)o(ont-end)f(in)h(combination)g(with)h (a)e(speci\002c)g(user)h(interface,)e(ther)o(e)h(is)440 2942 y(no)c(single)h(point)f(that)g(all)g(jobs)g(have)g(to)g(pass)f (thr)o(ough)i(in)f(Nor)o(duGrid.)565 3057 y(Users)27 b(can)h(either)g(upload)g(\002les)h(dir)o(ectly)f(to)g(the)h(grid)f (manager)f(or)i(it)f(can)g(be)g(in-)440 3171 y(str)o(ucted)j(to)g (download)g(them)g(on)h(its)f(own)h(using)g(a)e(variety)g(of)h(pr)o (otocols,)g(such)h(as)440 3286 y(HTTP)-11 b(,)25 b(FTP)-11 b(,)25 b(GridFTP)-11 b(,)24 b(etc.)g(When)i(all)e(input)h(\002les)g(ar) o(e)e(pr)o(esent)h(in)h(the)g(session)h(dir)o(ec-)440 3400 y(tory)f(for)f(a)h(given)g(job)g(the)g(grid)f(manager)g(cr)o (eates)f(an)i(execution)g(script)f(that,)h(besides)440 3515 y(executing)18 b(the)h(job,)f(handles)g(the)h(r)o(equir)o(ed)d (con\002guration)k(of)e(envir)o(onments)h(for)f(thir)o(d)440 3630 y(party)i(softwar)o(e)g(or)h(libraries.)565 3744 y(After)e(a)i(job)g(has)g(\002nished)h(executing,)f(output)g(\002les)g (can)g(be)g(transferr)o(ed)d(to)k(r)o(emote)440 3859 y(locations)k(by)f(specifying)g(it)h(in)f(job)h(description,)f(or)g (alternatively)f(be)h(left)g(in)g(the)g(ses-)440 3973 y(sion)c(dir)o(ectory)d(for)h(later)g(r)o(etrieval)f(by)i(the)f(user)-6 b(.)19 b(The)h(grid)f(manager)g(can)g(also)h(r)o(egister)440 4088 y(\002les)h(with)h(r)o(eplica)d(catalogues)h(if)h(the)g(job)g (description)g(r)o(equest)g(it.)440 4324 y Fv(Replica)e(Catalogue)440 4496 y Fz(The)28 b(r)o(eplica)e(catalogue)h(in)h(Nor)o(duGrid)f(is)i (used)e(for)g(r)o(egistering)h(and)f(locating)h(data)440 4611 y(sour)o(ces.)i(It)h(is)g(based)f(on)h(the)g(r)o(eplica)e (catalogue)h(pr)o(ovided)g(by)g(the)h(Globus)h(T)-8 b(oolkit)440 4726 y(with)22 b(a)e(few)g(minor)i(changes)f(for)f(enhanced)h (functionality)-9 b(.)565 4840 y(The)27 b(changes)g(primarily)g(impr)o (oves)f(the)i(ability)f(to)g(handle)g(the)g(staging)g(of)g(lar)o(ge)440 4955 y(amounts)34 b(of)f(input)h(and)f(output)h(data)e(for)h(jobs)h (and)e(the)i(adds)e(the)i(ability)f(to)h(per)o(-)440 5069 y(form)29 b(authenticated)g(communication)i(based)d(on)i(the)g (Globus)g(Security)f(Infrastr)o(uc-)440 5184 y(tur)o(e)e(mechanism.)h (Objects)h(in)f(the)g(r)o(eplica)f(catalogue)g(ar)o(e)f(cr)o(eated)g (and)h(maintained)440 5298 y(by)d(the)g(grid)g(managers)f(r)o(unning)i (at)f(each)f(r)o(esour)o(ce)g(in)h(Nor)o(duGrid,)f(but)h(can)g(also)g (be)440 5413 y(accessed)c(by)g(the)h(user)g(interface)f(for)g(r)o (esour)o(ce)f(br)o(okering.)1831 5662 y(11)p eop %%Page: 12 14 12 13 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fv(Information)20 b(System)440 704 y Fz(The)29 b(Nor)o(duGrid)g(ARC)g(implements)i(a)d(distributed)h (information)i(system)f(which)g(is)440 819 y(cr)o(eated)21 b(by)j(extending)g(the)f(Monitoring)i(and)e(Discovery)h(Services)e (\(MDS\))g(pr)o(ovided)440 933 y(by)29 b(the)g(Globus)g(T)-8 b(oolkit.)30 b(In)g(Nor)o(duGrid)e(ther)o(e)g(is)h(an)f(MDS-based)f (service)h(on)i(each)440 1048 y(r)o(esour)o(ce)24 b(and)h(each)f(of)h (these)h(is)f(r)o(esponsible)g(for)g(collecting)h(information)g(on)g (the)g(r)o(e-)440 1163 y(sour)o(ce)20 b(on)i(which)f(it)g(is)g(r)o (unning.)565 1277 y(The)27 b(MDS)g(is)h(a)f(framework)g(for)h(cr)o (eating)f(grid)g(information)i(systems)f(on)g(top)g(of)440 1392 y(the)i(OpenLDAP)g(softwar)o(e.)e(An)i(MDS-based)e(information)j (system)f(consists)h(of)f(the)440 1506 y(following:)565 1676 y Fo(\017)41 b Fz(An)20 b(information)i(model)f(de\002ned)f(as)h (an)f(LDAP)h(schema.)565 1852 y Fo(\017)41 b Fz(Local)20 b(information)i(pr)o(oviders.)565 2028 y Fo(\017)41 b Fz(Local)20 b(databases.)565 2203 y Fo(\017)41 b Fz(Soft-state)19 b(r)o(egistration)i(mechanisms.)565 2379 y Fo(\017)41 b Fz(Index)20 b(services.)440 2549 y(W)-8 b(e)21 b(describe)f(each)g (in)h(turn)g(in)h(the)e(following.)565 2663 y(The)e Fv(information)g (model)f Fz(employed)i(by)g(the)g(original)g(MDS)f(is)h(oriented)g (towar)o(ds)440 2778 y(single)25 b(machines)f(as)f(the)h(unit)g(of)g (computation)h(and)e(as)h(such)g(not)g(well)g(suited)g(to)g(de-)440 2892 y(scribe)h(the)g(cluster)o(-based)e(appr)o(oach)g(of)i(Nor)o (duGrid.)f(The)h(Nor)o(duGrid)f(information)440 3007 y(model)18 b(is)f(a)g(mirr)o(or)g(of)h(the)f(ar)o(chitectur)o(e)e(and)i (hence)h(describes)e(its)i(principal)f(elements,)440 3122 y(ie.)28 b(clusters,)g(users)g(and)f(jobs.)i(The)f(information)h (about)f(these)g(elements)h(is)f(mapped)440 3236 y(onto)c(an)f(LDAP)g (tr)o(ee,)f(cr)o(eating)g(a)h(hierar)o(chical)f(str)o(uctur)o(e)g(wher) o(e)h(every)f(user)h(and)g(ev-)440 3351 y(ery)c(job)h(has)g(an)f(entry) -9 b(.)19 b(Replica)h(managers)f(and)g(storage)g(elements)h(ar)o(e)e (also)h(described)440 3465 y(in)i(the)g(information)h(system)f (although)h(only)g(in)f(a)f(simplistic)i(manner)-6 b(.)565 3580 y Fv(Local)22 b(information)g(providers)g Fz(ar)o(e)g(small)i(pr)o (ograms)f(that)g(generates)g(LDAP)g(en-)440 3694 y(tries)g(as)f(r)o (eplies)g(to)h(sear)o(ch)f(r)o(equests.)h(The)f(Nor)o(duGrid)g (information)i(model)f(r)o(equir)o(es)440 3809 y(that)33 b(Nor)o(duGrid)f(speci\002c)h(information)h(pr)o(oviders)e(ar)o(e)g(pr) o(esent)g(on)i(the)f(fr)o(ont-end)440 3924 y(of)25 b(each)g(cluster)-6 b(.)25 b(The)g(information)h(pr)o(oviders)f(interfaces)f(with)i(the)g (local)f(batch)g(sys-)440 4038 y(tem)c(and)f(the)h(grid)f(manager)g(to) h(collect)g(information)g(about)g(grid)f(jobs,)h(users)g(and)f(the)440 4153 y(queueing)h(system)h(of)f(the)f(grid.)h(The)f(collected)h (information)g(is)g(used)g(to)g(populate)f(the)440 4267 y(local)h(databases.)565 4382 y(The)16 b Fv(local)g(databases)e Fz(ar)o(e)h(r)o(esponsible)i(for)f(implementing)j(the)e(\002rst-level)f (caching)440 4496 y(of)g(the)h(LDAP)f(entries)g(generated)f(by)i(the)f (information)h(pr)o(oviders.)e(Furthermor)o(e,)h(they)440 4611 y(ar)o(e)28 b(r)o(esponsible)h(for)g(pr)o(oviding)g(the)h(r)o (equested)e(grid)h(information)h(used)f(for)g(r)o(eply-)440 4726 y(ing)j(to)g(queries)g(thr)o(ough)g(the)g(LDAP)f(pr)o(otocol.)g (Globus)i(includes)f(an)f(LDAP)g(back-)440 4840 y(end)20 b(called)g(the)g(Grid)h(Resour)o(ce)f(Information)h(Service)e (\(GRIS\).)h(Nor)o(duGrid)g(uses)h(this)440 4955 y(back-end)j(as)h(its) g(local)g(information)h(database.)e(The)h(local)g(databases)e(in)j(Nor) o(duGrid)440 5069 y(ar)o(e)f(con\002gur)o(ed)i(to)g(cache)f(the)g (output)i(of)e(the)h(information)h(pr)o(oviders)d(for)i(a)f(limited)440 5184 y(period.)565 5298 y(The)d(contact)h(information)h(in)f(the)g (local)g(databases)e(is)j(r)o(egister)o(ed)d(as)h Fv(soft-state)f Fz(in)440 5413 y(the)e(index)g(services)g(which)h(in)g(turn)f(can)g (use)g(soft-state)f(r)o(egistration)h(in)h(other)f(indices.)1831 5662 y(12)p eop %%Page: 13 15 13 14 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(This)34 b(means)g(that)f(r)o(esour)o(ces) f(must)i(keep)f(r)o(egistering)h(themselves)g(periodically)f(to)440 646 y(avoid)20 b(being)h(pur)o(ged)f(fr)o(om)g(the)h(information)h (system.)565 760 y(The)f Fv(index)e(service)h Fz(of)h(Nor)o(duGrid)g (is)g(used)g(to)h(maintain)f(dynamic)g(lists)h(of)f(avail-)440 875 y(able)j(r)o(esour)o(ces.)g(A)h(r)o(ecor)o(d)e(in)j(the)f(index)g (service)f(contains)i(the)f(contact)g(information)440 990 y(for)c(a)g(soft-state)g(r)o(egister)o(ed)e(r)o(esour)o(ce.)h(A)h (user)g(must)h(then)g(query)f(the)h(local)f(databases)440 1104 y(at)i(the)h(r)o(esour)o(ces)e(for)i(further)f(information)h (which)g(r)o(educes)f(the)g(overall)h(load)f(on)h(the)440 1219 y(information)d(system.)g(The)g(Globus)g(developed)e(back-end)h (for)g(the)g(index)h(service,)e(the)440 1333 y(Grid)k(Information)i (Index)e(Service)f(\(GIIS\),)g(uses)i(a)f(hierar)o(chical)f(topology)i (for)g(the)f(in-)440 1448 y(dices,)29 b(as)h(illustrated)f(in)i(Figur)o (e)e(1.3,)f(wher)o(e)i(local)f(information)i(pr)o(oviders)e(r)o (egister)440 1562 y(with)i(higher)g(level)g(GIIS)f(services)g(which)i (in)f(turn)f(r)o(egister)g(with)h(the)g(highest)h(level)440 1677 y(GIIS)21 b(services.)606 2960 y @beginspecial 0 @llx 0 @lly 553 @urx 260 @ury 1417 @rhi @setspecial %%BeginDocument: introduction/images/nordugrid_infosystem.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/rak/cvs/report/introduction/images/nordugrid_infosystem.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Mon Oct 25 18:29:53 2004 %%For: rak@bad (Rasmus Aslak Kjær) %%BoundingBox: 0 0 553 260 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {1.000 0.580 0.031 srgb} bind def /col33 {0.000 0.439 0.000 srgb} bind def /col34 {0.996 0.839 0.000 srgb} bind def /col35 {0.847 0.125 0.063 srgb} bind def /col36 {0.000 0.204 0.518 srgb} bind def /col37 {0.839 0.125 0.063 srgb} bind def /col38 {0.220 0.565 0.000 srgb} bind def /col39 {0.729 0.000 0.000 srgb} bind def /col40 {0.000 0.200 0.502 srgb} bind def /col41 {0.000 0.655 0.741 srgb} bind def /col42 {1.000 0.773 0.000 srgb} bind def /col43 {0.031 0.482 0.816 srgb} bind def /col44 {0.984 0.757 0.000 srgb} bind def /col45 {0.518 0.000 0.161 srgb} bind def /col46 {0.027 0.224 0.612 srgb} bind def /col47 {0.000 0.388 0.741 srgb} bind def /col48 {0.224 0.675 0.875 srgb} bind def /col49 {0.259 0.753 0.878 srgb} bind def /col50 {0.192 0.808 1.000 srgb} bind def /col51 {1.000 0.871 0.000 srgb} bind def /col52 {0.031 0.353 0.000 srgb} bind def /col53 {1.000 0.510 0.000 srgb} bind def /col54 {0.000 0.490 0.000 srgb} bind def /col55 {0.000 0.000 0.745 srgb} bind def /col56 {0.612 0.000 0.000 srgb} bind def /col57 {0.549 0.549 0.549 srgb} bind def /col58 {0.259 0.259 0.259 srgb} bind def /col59 {0.549 0.549 0.549 srgb} bind def /col60 {0.259 0.259 0.259 srgb} bind def /col61 {0.549 0.549 0.549 srgb} bind def /col62 {0.259 0.259 0.259 srgb} bind def /col63 {0.549 0.549 0.549 srgb} bind def /col64 {0.259 0.259 0.259 srgb} bind def /col65 {0.549 0.549 0.549 srgb} bind def /col66 {0.259 0.259 0.259 srgb} bind def /col67 {0.549 0.549 0.549 srgb} bind def /col68 {0.259 0.259 0.259 srgb} bind def /col69 {0.776 0.718 0.592 srgb} bind def /col70 {0.937 0.973 1.000 srgb} bind def /col71 {0.863 0.796 0.651 srgb} bind def /col72 {0.251 0.251 0.251 srgb} bind def /col73 {0.502 0.502 0.502 srgb} bind def /col74 {0.753 0.753 0.753 srgb} bind def /col75 {0.878 0.878 0.878 srgb} bind def /col76 {0.557 0.561 0.557 srgb} bind def /col77 {0.667 0.667 0.667 srgb} bind def /col78 {0.333 0.333 0.333 srgb} bind def /col79 {0.525 0.510 0.525 srgb} bind def /col80 {0.780 0.765 0.780 srgb} bind def /col81 {0.906 0.890 0.906 srgb} bind def /col82 {0.557 0.557 0.557 srgb} bind def /col83 {0.267 0.267 0.267 srgb} bind def /col84 {0.525 0.525 0.525 srgb} bind def /col85 {0.780 0.780 0.780 srgb} bind def /col86 {0.906 0.906 0.906 srgb} bind def /col87 {0.969 0.969 0.969 srgb} bind def /col88 {0.620 0.620 0.620 srgb} bind def /col89 {0.443 0.459 0.443 srgb} bind def /col90 {0.255 0.271 0.255 srgb} bind def /col91 {0.337 0.318 0.318 srgb} bind def /col92 {0.937 0.984 1.000 srgb} bind def /col93 {0.400 0.400 0.400 srgb} bind def /col94 {0.886 0.886 0.933 srgb} bind def /col95 {0.580 0.580 0.604 srgb} bind def /col96 {0.859 0.859 0.859 srgb} bind def /col97 {0.631 0.631 0.718 srgb} bind def /col98 {0.929 0.929 0.929 srgb} bind def /col99 {0.525 0.675 1.000 srgb} bind def /col100 {0.439 0.439 1.000 srgb} bind def /col101 {0.745 0.745 0.745 srgb} bind def /col102 {0.318 0.318 0.318 srgb} bind def /col103 {0.000 0.000 0.286 srgb} bind def /col104 {0.475 0.475 0.475 srgb} bind def /col105 {0.188 0.204 0.188 srgb} bind def /col106 {0.780 0.714 0.588 srgb} bind def /col107 {0.843 0.843 0.843 srgb} bind def /col108 {0.682 0.682 0.682 srgb} bind def /col109 {0.522 0.502 0.490 srgb} bind def /col110 {0.824 0.824 0.824 srgb} bind def /col111 {0.227 0.227 0.227 srgb} bind def /col112 {0.271 0.451 0.667 srgb} bind def /col113 {0.000 0.000 0.000 srgb} bind def /col114 {0.255 0.255 0.255 srgb} bind def /col115 {0.839 0.843 0.839 srgb} bind def /col116 {0.482 0.475 0.647 srgb} bind def /col117 {0.451 0.459 0.549 srgb} bind def /col118 {0.388 0.365 0.808 srgb} bind def end save newpath 0 260 moveto 0 0 lineto 553 0 lineto 553 260 lineto closepath clip newpath 60.9 389.1 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06299 0.06299 sc % % Fig objects follow % % % here starts figure with depth 100 % Polyline 0 slj 0 slc 15.000 slw n 3510 4455 m 3780 5445 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 6345 4455 m 7425 5445 l gs col75 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 53 % Polyline 0 slj 0 slc 0.000 slw n 3070 3879 m 3953 3879 l 3953 4470 l 3070 4470 l 3070 3879 l cp gs col4 1.00 shd ef gr % Polyline n 3070 4102 m 3291 4102 l 3291 3879 l 3424 3879 l 3424 4102 l 3953 4102 l 3953 4249 l 3424 4249 l 3424 4470 l 3291 4470 l 3291 4249 l 3070 4249 l 3070 4102 l cp gs col7 1.00 shd ef gr % Polyline n 5858 4469 m 6741 4469 l 6741 3875 l 5858 3875 l 5858 4469 l cp gs col7 1.00 shd ef gr % Polyline n 1672 3872 m 2554 3872 l 2554 4467 l 1672 4467 l 1672 3872 l cp gs col1 1.00 shd ef gr % Polyline n 3070 4125 m 3313 4125 l 3313 3879 l 3401 3879 l 3401 4125 l 3953 4125 l 3953 4225 l 3401 4225 l 3401 4470 l 3313 4470 l 3313 4225 l 3070 4225 l 3070 4125 l cp gs col40 1.00 shd ef gr % Polyline n 5858 4235 m 6123 4235 l 6123 4469 l 6233 4469 l 6233 4235 l 6741 4235 l 6741 4110 l 6233 4110 l 6233 3875 l 6123 3875 l 6123 4110 l 5858 4110 l 5858 4235 l cp gs col1 1.00 shd ef gr % Polyline n 1672 4106 m 1937 4106 l 1937 3872 l 2047 3872 l 2047 4106 l 2554 4106 l 2554 4231 l 2047 4231 l 2047 4467 l 1937 4467 l 1937 4231 l 1672 4231 l 1672 4106 l cp gs col6 1.00 shd ef gr % Polyline n 4419 3921 m 5310 3921 l 5310 4493 l 4419 4493 l cp gs col35 1.00 shd ef gr % Polyline n 3082 2205 m 4005 2205 l 4005 2867 l 3082 2867 l cp gs col75 1.00 shd ef gr % Polyline n 4410 2205 m 5332 2205 l 5332 2867 l 4410 2867 l cp gs col75 1.00 shd ef gr % Polyline n 4705 3921 m 4705 4167 l 4419 4167 l 4419 4249 l 4705 4249 l 4705 4493 l 4802 4493 l 4802 4249 l 5310 4249 l 5310 4167 l 4802 4167 l 4802 3921 l cp gs col7 1.00 shd ef gr % here ends figure; % % here starts figure with depth 40 % Polyline 0 slj 0 slc 7.500 slw n 4419 3921 m 5310 3921 l 5310 4493 l 4419 4493 l cp gs col0 s gr % Polyline n 3070 3879 m 3953 3879 l 3953 4470 l 3070 4470 l cp gs col-1 s gr % Polyline n 5858 4469 m 6741 4469 l 6741 3875 l 5858 3875 l cp gs col0 s gr % here ends figure; % % here starts figure with depth 30 /Palatino-Bold ff 222.25 scf sf 3547 2589 m gs 1 -1 sc (GIIS) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold ff 222.25 scf sf 4869 2589 m gs 1 -1 sc (GIIS) dup sw pop 2 div neg 0 rm col0 sh gr % here ends figure; % % here starts figure with depth 23 % Polyline 0 slj 0 slc 15.000 slw [15 52] 52 sd n -945 4995 m 7785 4995 l gs col75 1.00 shd ef gr gs col0 s gr [] 0 sd % Polyline [15 52] 52 sd n -945 3330 m 7785 3330 l gs col75 1.00 shd ef gr gs col0 s gr [] 0 sd % here ends figure; % % here starts figure with depth 20 % Polyline 0 slj 1 slc 7.500 slw n 900 5441 m 1286 5441 l 1286 6165 l 900 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 1819 5441 m 2205 5441 l 2205 6165 l 1819 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 2719 5441 m 3105 5441 l 3105 6165 l 2719 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 3600 5441 m 3986 5441 l 3986 6165 l 3600 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 4519 5441 m 4905 5441 l 4905 6165 l 4519 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 5400 5441 m 5786 5441 l 5786 6165 l 5400 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 6300 5441 m 6686 5441 l 6686 6165 l 6300 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline n 7219 5441 m 7605 5441 l 7605 6165 l 7219 6165 l cp gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 943 5717 m 1243 5717 l 1243 5734 l 943 5734 l cp gs col75 1.00 shd ef gr % Polyline n 943 5702 m 1243 5702 l 1243 5717 l 943 5717 l cp gs col72 1.00 shd ef gr % Polyline n 943 5764 m 1243 5764 l 1243 5779 l 943 5779 l cp gs col75 1.00 shd ef gr % Polyline n 943 5750 m 1243 5750 l 1243 5764 l 943 5764 l cp gs col72 1.00 shd ef gr % Polyline n 943 5810 m 1243 5810 l 1243 5826 l 943 5826 l cp gs col75 1.00 shd ef gr % Polyline n 943 5796 m 1243 5796 l 1243 5810 l 943 5810 l cp gs col72 1.00 shd ef gr % Polyline n 943 5858 m 1243 5858 l 1243 5872 l 943 5872 l cp gs col75 1.00 shd ef gr % Polyline n 943 5841 m 1243 5841 l 1243 5858 l 943 5858 l cp gs col72 1.00 shd ef gr % Polyline n 943 5902 m 1243 5902 l 1243 5919 l 943 5919 l cp gs col75 1.00 shd ef gr % Polyline n 943 5888 m 1243 5888 l 1243 5902 l 943 5902 l cp gs col72 1.00 shd ef gr % Polyline n 943 5950 m 1243 5950 l 1243 5964 l 943 5964 l cp gs col75 1.00 shd ef gr % Polyline n 943 5934 m 1243 5934 l 1243 5950 l 943 5950 l cp gs col72 1.00 shd ef gr % Polyline n 943 5996 m 1243 5996 l 1243 6010 l 943 6010 l cp gs col75 1.00 shd ef gr % Polyline n 943 5981 m 1243 5981 l 1243 5996 l 943 5996 l cp gs col72 1.00 shd ef gr % Polyline n 943 6043 m 1243 6043 l 1243 6058 l 943 6058 l cp gs col75 1.00 shd ef gr % Polyline n 943 6027 m 1243 6027 l 1243 6043 l 943 6043 l cp gs col72 1.00 shd ef gr % Polyline n 943 5610 m 1243 5610 l 1243 5626 l 943 5626 l cp gs col75 1.00 shd ef gr % Polyline n 943 5595 m 1243 5595 l 1243 5610 l 943 5610 l cp gs col72 1.00 shd ef gr % Polyline n 943 5564 m 1243 5564 l 1243 5579 l 943 5579 l cp gs col75 1.00 shd ef gr % Polyline n 943 5550 m 1243 5550 l 1243 5564 l 943 5564 l cp gs col72 1.00 shd ef gr % Polyline n 943 5517 m 1243 5517 l 1243 5533 l 943 5533 l cp gs col75 1.00 shd ef gr % Polyline n 943 5502 m 1243 5502 l 1243 5517 l 943 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 900 6104 m 1286 6104 l 1286 6165 l 900 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 900 5656 m 1286 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 1862 5717 m 2163 5717 l 2163 5734 l 1862 5734 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5702 m 2163 5702 l 2163 5717 l 1862 5717 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5764 m 2163 5764 l 2163 5779 l 1862 5779 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5750 m 2163 5750 l 2163 5764 l 1862 5764 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5810 m 2163 5810 l 2163 5826 l 1862 5826 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5796 m 2163 5796 l 2163 5810 l 1862 5810 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5858 m 2163 5858 l 2163 5872 l 1862 5872 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5841 m 2163 5841 l 2163 5858 l 1862 5858 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5902 m 2163 5902 l 2163 5919 l 1862 5919 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5888 m 2163 5888 l 2163 5902 l 1862 5902 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5950 m 2163 5950 l 2163 5964 l 1862 5964 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5934 m 2163 5934 l 2163 5950 l 1862 5950 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5996 m 2163 5996 l 2163 6010 l 1862 6010 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5981 m 2163 5981 l 2163 5996 l 1862 5996 l cp gs col72 1.00 shd ef gr % Polyline n 1862 6043 m 2163 6043 l 2163 6058 l 1862 6058 l cp gs col75 1.00 shd ef gr % Polyline n 1862 6027 m 2163 6027 l 2163 6043 l 1862 6043 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5610 m 2163 5610 l 2163 5626 l 1862 5626 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5595 m 2163 5595 l 2163 5610 l 1862 5610 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5564 m 2163 5564 l 2163 5579 l 1862 5579 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5550 m 2163 5550 l 2163 5564 l 1862 5564 l cp gs col72 1.00 shd ef gr % Polyline n 1862 5517 m 2163 5517 l 2163 5533 l 1862 5533 l cp gs col75 1.00 shd ef gr % Polyline n 1862 5502 m 2163 5502 l 2163 5517 l 1862 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 1819 6104 m 2205 6104 l 2205 6165 l 1819 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 1819 5656 m 2205 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 2762 5718 m 3062 5718 l 3062 5734 l 2762 5734 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5704 m 3062 5704 l 3062 5718 l 2762 5718 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5765 m 3062 5765 l 3062 5780 l 2762 5780 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5748 m 3062 5748 l 3062 5765 l 2762 5765 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5810 m 3062 5810 l 3062 5827 l 2762 5827 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5796 m 3062 5796 l 3062 5810 l 2762 5810 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5856 m 3062 5856 l 3062 5872 l 2762 5872 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5842 m 3062 5842 l 3062 5856 l 2762 5856 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5904 m 3062 5904 l 3062 5918 l 2762 5918 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5889 m 3062 5889 l 3062 5904 l 2762 5904 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5950 m 3062 5950 l 3062 5965 l 2762 5965 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5934 m 3062 5934 l 3062 5950 l 2762 5950 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5996 m 3062 5996 l 3062 6011 l 2762 6011 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5980 m 3062 5980 l 3062 5996 l 2762 5996 l cp gs col72 1.00 shd ef gr % Polyline n 2762 6042 m 3062 6042 l 3062 6056 l 2762 6056 l cp gs col75 1.00 shd ef gr % Polyline n 2762 6027 m 3062 6027 l 3062 6042 l 2762 6042 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5610 m 3062 5610 l 3062 5625 l 2762 5625 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5596 m 3062 5596 l 3062 5610 l 2762 5610 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5563 m 3062 5563 l 3062 5579 l 2762 5579 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5548 m 3062 5548 l 3062 5563 l 2762 5563 l cp gs col72 1.00 shd ef gr % Polyline n 2762 5517 m 3062 5517 l 3062 5534 l 2762 5534 l cp gs col75 1.00 shd ef gr % Polyline n 2762 5502 m 3062 5502 l 3062 5517 l 2762 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 2719 6104 m 3105 6104 l 3105 6165 l 2719 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 2719 5656 m 3105 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 3643 5717 m 3943 5717 l 3943 5734 l 3643 5734 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5702 m 3943 5702 l 3943 5717 l 3643 5717 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5764 m 3943 5764 l 3943 5779 l 3643 5779 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5750 m 3943 5750 l 3943 5764 l 3643 5764 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5810 m 3943 5810 l 3943 5826 l 3643 5826 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5796 m 3943 5796 l 3943 5810 l 3643 5810 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5858 m 3943 5858 l 3943 5872 l 3643 5872 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5841 m 3943 5841 l 3943 5858 l 3643 5858 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5902 m 3943 5902 l 3943 5919 l 3643 5919 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5888 m 3943 5888 l 3943 5902 l 3643 5902 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5950 m 3943 5950 l 3943 5964 l 3643 5964 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5934 m 3943 5934 l 3943 5950 l 3643 5950 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5996 m 3943 5996 l 3943 6010 l 3643 6010 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5981 m 3943 5981 l 3943 5996 l 3643 5996 l cp gs col72 1.00 shd ef gr % Polyline n 3643 6043 m 3943 6043 l 3943 6058 l 3643 6058 l cp gs col75 1.00 shd ef gr % Polyline n 3643 6027 m 3943 6027 l 3943 6043 l 3643 6043 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5610 m 3943 5610 l 3943 5626 l 3643 5626 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5595 m 3943 5595 l 3943 5610 l 3643 5610 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5564 m 3943 5564 l 3943 5579 l 3643 5579 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5550 m 3943 5550 l 3943 5564 l 3643 5564 l cp gs col72 1.00 shd ef gr % Polyline n 3643 5517 m 3943 5517 l 3943 5533 l 3643 5533 l cp gs col75 1.00 shd ef gr % Polyline n 3643 5502 m 3943 5502 l 3943 5517 l 3643 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 3600 6104 m 3986 6104 l 3986 6165 l 3600 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 3600 5656 m 3986 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 4562 5717 m 4862 5717 l 4862 5734 l 4562 5734 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5702 m 4862 5702 l 4862 5717 l 4562 5717 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5764 m 4862 5764 l 4862 5779 l 4562 5779 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5750 m 4862 5750 l 4862 5764 l 4562 5764 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5810 m 4862 5810 l 4862 5826 l 4562 5826 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5796 m 4862 5796 l 4862 5810 l 4562 5810 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5858 m 4862 5858 l 4862 5872 l 4562 5872 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5841 m 4862 5841 l 4862 5858 l 4562 5858 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5902 m 4862 5902 l 4862 5919 l 4562 5919 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5888 m 4862 5888 l 4862 5902 l 4562 5902 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5950 m 4862 5950 l 4862 5964 l 4562 5964 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5934 m 4862 5934 l 4862 5950 l 4562 5950 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5996 m 4862 5996 l 4862 6010 l 4562 6010 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5981 m 4862 5981 l 4862 5996 l 4562 5996 l cp gs col72 1.00 shd ef gr % Polyline n 4562 6043 m 4862 6043 l 4862 6058 l 4562 6058 l cp gs col75 1.00 shd ef gr % Polyline n 4562 6027 m 4862 6027 l 4862 6043 l 4562 6043 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5610 m 4862 5610 l 4862 5626 l 4562 5626 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5595 m 4862 5595 l 4862 5610 l 4562 5610 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5564 m 4862 5564 l 4862 5579 l 4562 5579 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5550 m 4862 5550 l 4862 5564 l 4562 5564 l cp gs col72 1.00 shd ef gr % Polyline n 4562 5517 m 4862 5517 l 4862 5533 l 4562 5533 l cp gs col75 1.00 shd ef gr % Polyline n 4562 5502 m 4862 5502 l 4862 5517 l 4562 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 4519 6104 m 4905 6104 l 4905 6165 l 4519 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 4519 5656 m 4905 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 5443 5717 m 5744 5717 l 5744 5734 l 5443 5734 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5702 m 5744 5702 l 5744 5717 l 5443 5717 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5764 m 5744 5764 l 5744 5779 l 5443 5779 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5750 m 5744 5750 l 5744 5764 l 5443 5764 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5810 m 5744 5810 l 5744 5826 l 5443 5826 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5796 m 5744 5796 l 5744 5810 l 5443 5810 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5858 m 5744 5858 l 5744 5872 l 5443 5872 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5841 m 5744 5841 l 5744 5858 l 5443 5858 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5902 m 5744 5902 l 5744 5919 l 5443 5919 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5888 m 5744 5888 l 5744 5902 l 5443 5902 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5950 m 5744 5950 l 5744 5964 l 5443 5964 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5934 m 5744 5934 l 5744 5950 l 5443 5950 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5996 m 5744 5996 l 5744 6010 l 5443 6010 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5981 m 5744 5981 l 5744 5996 l 5443 5996 l cp gs col72 1.00 shd ef gr % Polyline n 5443 6043 m 5744 6043 l 5744 6058 l 5443 6058 l cp gs col75 1.00 shd ef gr % Polyline n 5443 6027 m 5744 6027 l 5744 6043 l 5443 6043 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5610 m 5744 5610 l 5744 5626 l 5443 5626 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5595 m 5744 5595 l 5744 5610 l 5443 5610 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5564 m 5744 5564 l 5744 5579 l 5443 5579 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5550 m 5744 5550 l 5744 5564 l 5443 5564 l cp gs col72 1.00 shd ef gr % Polyline n 5443 5517 m 5744 5517 l 5744 5533 l 5443 5533 l cp gs col75 1.00 shd ef gr % Polyline n 5443 5502 m 5744 5502 l 5744 5517 l 5443 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 5400 6104 m 5786 6104 l 5786 6165 l 5400 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 5400 5656 m 5786 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 6343 5717 m 6643 5717 l 6643 5734 l 6343 5734 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5702 m 6643 5702 l 6643 5717 l 6343 5717 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5764 m 6643 5764 l 6643 5779 l 6343 5779 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5750 m 6643 5750 l 6643 5764 l 6343 5764 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5810 m 6643 5810 l 6643 5826 l 6343 5826 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5796 m 6643 5796 l 6643 5810 l 6343 5810 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5858 m 6643 5858 l 6643 5872 l 6343 5872 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5841 m 6643 5841 l 6643 5858 l 6343 5858 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5902 m 6643 5902 l 6643 5919 l 6343 5919 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5888 m 6643 5888 l 6643 5902 l 6343 5902 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5950 m 6643 5950 l 6643 5964 l 6343 5964 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5934 m 6643 5934 l 6643 5950 l 6343 5950 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5996 m 6643 5996 l 6643 6010 l 6343 6010 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5981 m 6643 5981 l 6643 5996 l 6343 5996 l cp gs col72 1.00 shd ef gr % Polyline n 6343 6043 m 6643 6043 l 6643 6058 l 6343 6058 l cp gs col75 1.00 shd ef gr % Polyline n 6343 6027 m 6643 6027 l 6643 6043 l 6343 6043 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5610 m 6643 5610 l 6643 5626 l 6343 5626 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5595 m 6643 5595 l 6643 5610 l 6343 5610 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5564 m 6643 5564 l 6643 5579 l 6343 5579 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5550 m 6643 5550 l 6643 5564 l 6343 5564 l cp gs col72 1.00 shd ef gr % Polyline n 6343 5517 m 6643 5517 l 6643 5533 l 6343 5533 l cp gs col75 1.00 shd ef gr % Polyline n 6343 5502 m 6643 5502 l 6643 5517 l 6343 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 6300 6104 m 6686 6104 l 6686 6165 l 6300 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 6300 5656 m 6686 5656 l gs col74 1.00 shd ef gr gs col0 s gr % Polyline 0.000 slw n 7262 5718 m 7562 5718 l 7562 5734 l 7262 5734 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5704 m 7562 5704 l 7562 5718 l 7262 5718 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5765 m 7562 5765 l 7562 5780 l 7262 5780 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5748 m 7562 5748 l 7562 5765 l 7262 5765 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5810 m 7562 5810 l 7562 5827 l 7262 5827 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5796 m 7562 5796 l 7562 5810 l 7262 5810 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5856 m 7562 5856 l 7562 5872 l 7262 5872 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5842 m 7562 5842 l 7562 5856 l 7262 5856 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5904 m 7562 5904 l 7562 5918 l 7262 5918 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5889 m 7562 5889 l 7562 5904 l 7262 5904 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5950 m 7562 5950 l 7562 5965 l 7262 5965 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5934 m 7562 5934 l 7562 5950 l 7262 5950 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5996 m 7562 5996 l 7562 6011 l 7262 6011 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5980 m 7562 5980 l 7562 5996 l 7262 5996 l cp gs col72 1.00 shd ef gr % Polyline n 7262 6042 m 7562 6042 l 7562 6056 l 7262 6056 l cp gs col75 1.00 shd ef gr % Polyline n 7262 6027 m 7562 6027 l 7562 6042 l 7262 6042 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5610 m 7562 5610 l 7562 5625 l 7262 5625 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5596 m 7562 5596 l 7562 5610 l 7262 5610 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5563 m 7562 5563 l 7562 5579 l 7262 5579 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5548 m 7562 5548 l 7562 5563 l 7262 5563 l cp gs col72 1.00 shd ef gr % Polyline n 7262 5517 m 7562 5517 l 7562 5534 l 7262 5534 l cp gs col75 1.00 shd ef gr % Polyline n 7262 5502 m 7562 5502 l 7562 5517 l 7262 5517 l cp gs col72 1.00 shd ef gr % Polyline 7.500 slw n 7219 6104 m 7605 6104 l 7605 6165 l 7219 6165 l cp gs col72 1.00 shd ef gr gs col0 s gr % Polyline n 7219 5656 m 7605 5656 l gs col74 1.00 shd ef gr gs col0 s gr % here ends figure; % % here starts figure with depth 0 % Polyline 0 slj 0 slc 15.000 slw n 3600 2970 m 3600 3870 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 3600 2970 m 2115 3870 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 3600 2970 m 6300 3870 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 2970 m 4860 3915 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 2970 m 6300 3870 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 2970 m 3600 3870 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 2970 m 2115 3870 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 2115 4455 m 2025 5445 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 4500 m 2925 5445 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 4500 m 4725 5445 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4905 4500 m 5625 5445 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 1125 5445 m 2115 4455 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 2115 4455 m 6570 5445 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 3600 2970 m 4860 3915 l gs col75 1.00 shd ef gr gs col0 s gr % Arc n 3552.0 1875.9 1087.1 115.2667 64.7333 arcn gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4016 2185 m 4016 2859 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 3088 2185 m 3088 2859 l gs col75 1.00 shd ef gr gs col0 s gr % Ellipse n 3552 2174 462 103 0 360 DrawEllipse gs col75 1.00 shd ef gr gs col0 s gr % Arc n 4875.0 1875.9 1087.1 115.2668 64.7332 arcn gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 5339 2185 m 5339 2859 l gs col75 1.00 shd ef gr gs col0 s gr % Polyline n 4411 2185 m 4411 2859 l gs col75 1.00 shd ef gr gs col0 s gr % Ellipse n 4874 2174 462 103 0 360 DrawEllipse gs col75 1.00 shd ef gr gs col0 s gr /Palatino-Bold ff 222.25 scf sf -90 5850 m gs 1 -1 sc (Local Site GIIS) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold ff 222.25 scf sf -45 2655 m gs 1 -1 sc (Top Level GIIS) dup sw pop 2 div neg 0 rm col0 sh gr /Palatino-Bold ff 222.25 scf sf 180 4230 m gs 1 -1 sc (Country Level GIIS) dup sw pop 2 div neg 0 rm col0 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial 511 3148 a Fq(Figur)o(e)14 b(1.3:)28 b(The)15 b(hierar)o(chical)h(structur)o(e)e(of)h(the)g(information)f(system)h (in)g(NorduGrid.)g(Higher)g(level)511 3253 y(GIIS)j(hosts)h(should)g (be)f(r)o(eplicated)i(to)e(avoid)i(a)f(single)f(point)g(of)h(failur)o (e)f(in)f(the)i(information)f(system.)440 3612 y Fv(User)i(Interface)f (and)h(Brokering)440 3785 y Fz(Users)d(of)h(Nor)o(duGrid)f(interact)g (with)h(the)g(grid)g(thr)o(ough)g(the)g(user)f(interface)g(which)h(has) 440 3900 y(commands)i(for)f(submitting)i(jobs,)f(for)g(querying)g(the)g (status)f(of)h(jobs)g(and)f(clusters)h(and)440 4014 y(for)31 b(killing)h(jobs.)g(Commands)f(for)g(managing)g(input)h(and)f(output)g (data)f(on)h(storage)440 4129 y(elements)21 b(and)f(r)o(eplica)g (catalogues)g(ar)o(e)g(also)h(included.)565 4243 y(The)g(user)g (interface)f(is)h(also)g(r)o(esponsible)h(for)e(scheduling)i(the)g(job) f(by)h(choosing)g(an)440 4358 y(appr)o(opriate)d(cluster)i(to)g(r)o(un) g(it)g(on.)440 4599 y Fv(GridFTP)g(server)440 4772 y Fz(GridFTP)27 b(is)h(the)f(transfer)f(pr)o(otocol)h(used)g(for)f(all)h (data)f(transfers)g(in)i(the)f(Nor)o(duGrid)440 4887 y(ARC)h(even)f(for)h(job)g(submission.)i(T)-8 b(o)28 b(submit)h(a)e(job,)h(a)f(job)i(description)f(is)g(uploaded)440 5001 y(to)23 b(a)g(cluster)g(using)h(GridFTP)-11 b(.)23 b(GridFTP)g(is)g(a)g(modi\002ed)g(FTP)g(server)f(pr)o(ovided)g(by)h (the)440 5116 y(Globus)31 b(T)-8 b(oolkit,)31 b(however)-6 b(,)30 b(Nor)o(duGrid)f(uses)i(its)f(own)h(modi\002ed)f(implementation) 440 5230 y(that)21 b(is)g(better)f(suited)h(for)f(interfacing)h(with)g (the)g(Nor)o(duGrid)f(ARC.)1831 5662 y(13)p eop %%Page: 14 16 14 15 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fv(Storage)20 b(Element)440 704 y Fz(A)g(storage)f(element)i(is)f(a)f(separate)g(service)g(that)h (handles)g(storage)g(of)g(data)f(in)i(the)f(grid.)440 819 y(A)30 b(job)g(description)g(can)g(specify)g(that)g(input)g(data)f (should)i(be)e(downloaded)h(fr)o(om)g(a)440 933 y(storage)22 b(element.)h(In)g(its)g(curr)o(ent)f(incarnation)h(storage)f(elements)h (ar)o(e)e(mer)o(e)h(GridFTP)440 1048 y(servers)h(but)g(r)o(ecently)g (ef)o(fort)f(have)h(been)g(put)g(into)h(extending)g(the)f(capabilities) g(of)g(the)440 1163 y(storage)j(element)g(service.)f(The)h(Nor)o (duGrid)f(Smart)g(Storage)g(Element)h(\(SSE\))e(is)i(sup-)440 1277 y(posed)17 b(to)h(be)f(a)g(r)o(eplacement)f(of)h(the)h(curr)o(ent) e(storage)i(element,)f(will)h(be)f(based)g(on)h(stan-)440 1392 y(dar)o(d)d(pr)o(otocols)j(such)g(as)f(HTTPS,)f(Globus)j(GSI)e (and)f(SOAP)-11 b(,)17 b(and)g(will)h(pr)o(ovide)e(\003exible)440 1506 y(access)25 b(contr)o(ol,)h(data)e(integrity)i(between)g(r)o (esour)o(ces)e(and)i(support)f(for)h(autonomous)440 1621 y(and)20 b(r)o(eliable)g(data)f(r)o(eplication)i([34)n(].)440 1862 y Fv(Monitoring)440 2035 y Fz(Nor)o(duGrid)f(pr)o(ovides)g(a)g (web-based)f(monitoring)j(tool)g(for)e(br)o(owsing)h(the)g(grid)f (infor)o(-)440 2150 y(mation)30 b(system.)f(It)h(allows)f(users)g(of)g (the)h(grid)f(to)g(view)g(all)g(published)g(information)440 2264 y(about)21 b(the)g(curr)o(ently)f(active)g(r)o(esour)o(ces.)565 2379 y(The)k(str)o(uctur)o(e)h(of)g(the)g(monitoring)i(tool)f(corr)o (esponds)e(to)i(the)f(hierar)o(chical)e(str)o(uc-)440 2493 y(tur)o(e)k(of)h(the)g(information)h(system)f(itself.)g(Hence,)f (the)h(initial)g(scr)o(een)g(of)f(pr)o(ovides)g(an)440 2608 y(overview)h(of)h(the)f(entir)o(e)g(grid,)g(e.g.)g(the)h(number)g (r)o(esour)o(ces)e(in)i(terms)g(of)f(CPUs,)g(the)440 2722 y(length)22 b(of)f(queues)g(etc.)g(The)g(user)g(can)g(br)o(owse)g (deeper)e(into)j(the)g(hierar)o(chy)e(and)g(at)h(the)440 2837 y(lowest)i(level)g(inspect)g(the)f(queues,)h(available)e(softwar)o (e,)h(har)o(dwar)o(e)e(platform)j(and)f(so)440 2952 y(forth)f(on)g(a)g (selected)f(r)o(esour)o(ce.)681 5196 y @beginspecial 14 @llx 14 @lly 1029 @urx 935 @ury 2834 @rwi @setspecial %%BeginDocument: introduction/images/nordugrid_monitor.eps %!PS-Adobe-3.0 EPSF-3.0 %%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner %%Title: nordugrid_monitor.eps %%CreationDate: Thu Oct 28 11:58:59 2004 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%Pages: 1 %%BoundingBox: 14 14 1029 935 %%EndComments %%BeginProlog % Use own dictionary to avoid conflicts 10 dict begin %%EndProlog %%Page: 1 1 % Translate for offset 14.173228346456694 14.173228346456694 translate % Translate to begin of first scanline 0 919.87997949960402 translate 1013.8677165354331 -919.87997949960402 scale % Image geometry 1014 920 8 % Transformation matrix [ 1014 0 0 920 0 0 ] % Strings to hold RGB-samples per scanline /rstr 1014 string def /gstr 1014 string def /bstr 1014 string def {currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} {currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} {currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} true 3 %%BeginData: 373781 ASCII Bytes colorimage JcC<$JcC<$JcC<$JcD5>nr3YJJ,~> JcC<$JcC<$JcC<$JcD5>nr3YJJ,~> JcC<$JcC<$JcC<$JcD5>nq-r@J,~> JcC<$JcC<$JcC<$JcD5>!0-XN! JcC<$JcC<$JcC<$JcD5>!0-XN! JcC<$JcC<$JcC<$JcD5>!/'qD! JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-WmJm7bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-WmJm7bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFMjo>DZjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Xmf!4bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Xmf!4bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFNk5GAZjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Ymed(amK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Ymed(amK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFOk555YjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>"-*?KmeQq`mK0TmrI=~> JcC<$JcC<$JcC<$JcD5>"-*?KmeQq`mK0TmrI=~> JcC<$JcC<$JcC<$JcD5>",$X9k5#)XjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcEC_#Q'N=$j@b[deNkB!!#Rerr`0!!*T0urVuqHrr3'k!!#RWs8N'&8H8_IhroXkJcC<$ XT&<\s7Yj^YQ4WP~> JcC<$JcEC_#PE6g#RMquo_AId!!'h3rr_uq!8%)IrVurMrr3'5!!'h%s8N'&_#OGlhtM^%JcC<$ XT&<\s7Yj^YQ4WP~> JcC<$JcEC_#MNQ+"Um8@qY:*j!!)-Xrr_*X!:BX_rW!2ks8W$'!!)-Js8N'&jo>A JcC<$JcEF`#kp@["@QHM!,D JcC<$JcEF`#j`?-#Z"JI!8I;Ks'GcXqu6cm!!(XIs8E!#63$u7rVur6mJm2n"kWeS!!'fcs+13$ s/c5$NW8_?!jD\'J,~> JcC<$JcEF`#f$cI)HBZM!:T^_s'Gcpqu6cT!!)E_s8E!#U]:@=rVur[mJm2n"n2Kk!!),3s+13$ s/c5$KE(Z-!giudJ,~> JcC<$JcEF`"+pR]dJj.Hd?sD&"8i-!=o/0u!!i]/ec23B!!#RRs8N'!8:gels+13OrrJ,ZornGs rI=~> JcC<$JcEF`"#9ion,E=f[cd,Z"8;cqfD>OI!!io7p&@,V!!'gus8N'!^k)N:s+13OrrJ,ZornGs rI=~> JcC<$JcEF`!u1f2q>UBpQLt(S!<2]l"5X"XmJ?k_!!i];qu7N@!!)-Es8N'!jmi?Nrdk*#s+13` rrIcPop>a[rI=~> JcC<$JcEIa"8W'!?2=O#!"hCr#"egp!(d.ioMu88NW9&^qZ$Qq+> JcC<$JcEIa"7cHm`;0H5!"l1l!l+a8!5SX7j?*SmZ2amVqZ$Qq+G^#aoE-uO!5SX7pLtKI)//aD rr<&!7L'j.s8N'!_!h1$&1%;MBc.!jB_MK+!!&u[!l' JcC<$JcEIa"3CQDkP>/X!"l"S!Tj=]!9O7\\gdnF_>jT'qZ$Qq+A2^ccN9I6!9O7\hGOph,_>jm rr<%u1'B&Xs8N'!jh:Ql&=*:P;@s'XJc#KI!!&fB!Ten4JcC<$^Ae1co)JdhJ,~> JcC<$JcEIa"7Z?k]D;L,!"f8X>\X3,df=(^!(d.iAcN$5/-$=[ rr<$"4[B&Mi;WcW8Gc`o!#o9[s(268;Che\qu6Wr![M#bJcC<$JcEIa!0-Ti!<%E~> JcC<$JcEIa"5a(Yn+m"`!"f>s=iLC@!5SX5(B>(P%fcU]qZ$Qq2SBM5N<%-%!5SX6.f^#]&HF?\ rr<$$:F,uEq#: JcC<$JcEIa"*aeGq"asi!"f9+;q[rlV JcC<$JcEIa#4VZn])Ve'rW)uurr<$]M)hJ$?s+13^rrA&M`W5sf~> JcC<$JcEIa#2]C\n,ND#rW)uurr<$crVult$Gc]!!!)$YeGoU$qZ$Qq1Vd])#7UP2!5SWn!!(sW i;`l:rr<%"s5j:]j8T)Z_#OE7!5SX7i;`l9s5 JcC<$JcEIa#'g1Kq#C@#rW)uurr<%`rVult$K_;5!!)WjJH,];qZ$Qq1Z^(d"#BlV!9O62!!)Ti RfEHYrr<&&s-3Qao)A[ijo>>\!9O7\J,fT?s-iugnc&RhP_&jcs+13^rr@]C^B"4_~> JcC<$JcEIa%f-8->6"V`<<*%!rr<$erVult$:t3\!!)ipqZ$V!qZ$Qq1J%3>!%\'L!(d.R!!)ip rr<$lrr<$fs7cQoHiF'G8H8\i!(d.ikPtVYs8N'!9E+tl7"PAhs+13^rrA&M`W5sf~> JcC<$JcEIa%eB]$_#OFM8,rYirr<&+rVult$Gc\`!!*#up&G*EqZ$Qq1Vi8U!,hf:!5SWW!!*#u rVurArr<&1s6fpfhu JcC<$JcEIa%a4qRjo>?l)ZTm>\!9O7\9)ntls7cQokl1V_iIV#[s+13^rr@]C^B"4_~> JcC<$JcEF`%>b&lbQ%V(!!*'!!!#Rgs8N'+8H82[!20A[!!$0us8N'T8H3W0X8`/"8H82[!1NrY !!%QL!!#Rip](;@rr<$is8N0$7fWMY!!&Jfnc/Z?rr<$iJcC<$JcE@^!0-Ti!<%E~> JcC<$JcEF`%6"8&li7"#!!*'!!!'h5s8N'+_#N9l!9F13!!(XIs8N'T_#GGVli-qb_#N?n!9!n9 !!)!X!!'h7mf3@Frr<&7s8N*"]`8#j!!(sWi;`l:rr<&7JcC<$JcE@^!0-Ti!<%E~> JcC<$JcEF`%2T"7p](7a!!*'!!!)-Zs8N'+jo9Q*!;$5C!!)E_s8N'Tjo5ekpAY*mjo9i2!:p/Z !!)Qh!!)-\]`8'&rr<&\s8N*"j8].0!!)TiRfEHYrr<&\JcC<$JcE@^!/'mX!<%E~> JcC<$JcEF`%JW-f"$p6^!!*'!!!#Rgs8N'+8H8]_!!laV!!$0us8N'T8H8SRs8N'!8H8^"!!Z@Q !"o,.!!#Rip](;@rr<$is8P4^%UXYa@fQ^3/-$:Zrr<$iJcC<$JcE@^!0-Ti!<%E~> JcC<$JcEF`%Ib;:##/D[!!*'!!!'h5s8N'+_#O?K!#/ZK!!(XIs8N'T_#O#ms8N'!_#OB_!"E*D !%@jH!!'h7mf3@Frr<&7s8NT0,@@MN.0'f\&HF6Yrr<&7JcC<$JcE@^!0-Ti!<%E~> JcC<$JcEF`%E/\T'i\EP!!*'!!!)-Zs8N'+jo>#]!&%F^!!)E_s8N'Tjo=c:s8N'!jo>2i!%:qS !+Q!.!!)-\]`8'&rr<&\s8N<(6!rOH&HF4]#6865rr<&\JcC<$JcE@^!/'mX!<%E~> JcC<$JcEC_%/c8I$Nh/4NrT+Z!(d(grr JcC<$JcEC_%/5&t#R)8IU&Y,m!5SR5rr JcC<$JcEC_%,YS:":->^[/^.+!9O1Zrr@+&HMmUs4U6[" JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$L&V85^qeltrrA&M`W5sf~> JcC<$JcC<$JcC<$L&V85^qeltrrA&M`W5sf~> JcC<$JcC<$JcC<$L&V85^qeltrr@]C^B"4_~> JcC<$JcC<$JcC<$M#RP7E$5)Z![)I?n,N+^mf*?mJ5H51!cXh%nG`L(p\t6/oD\fMo>Ue/J,~> JcC<$JcC<$JcC<$M#RP7E$5)Z![)I?n,N+^mf*?mJ5H51!cXh%nG`L(p\t6/oD\fMo>Ue/J,~> JcC<$JcC<$JcC<$M#RP7E$5)Z![)I?n,N+^mf*?mJ5H51!cXh%nG`L(p\t6/oD\fCo=k;(J,~> JcC<$JcC<$JcC<$M>mR;pAb2TnGi4_nG`N^+SYp;E:EK!!al#$q>UMh!+>I!!0-Ti!<%E~> JcC<$JcC<$JcC<$M>mR;pAb2TnGi4_nG`N^+SYp;E:EK!!al#$q>UMh!+>I!!0-Ti!<%E~> JcC<$JcC<$JcC<$M>mR;pAb2TnGi4_nG`N^+SYp;E:EK!!al#$q>UMh!+>I!!/'mX!<%E~> JcC<$JcC<$JcC<$MZ3ZaquHa^qu?_)nc/Uhqu?Zrnc&SsquHa^!&4?O!AO$9rr?I+!!&\hrrA_k !!$F"rrA&M`W5sf~> JcC<$JcC<$JcC<$MZ3ZaquHa^qu?_)nc/Uhqu?Zrnc&SsquHa^!&4?O!AO$9rr?I+!!&\hrrA_k !!$F"rrA&M`W5sf~> JcC<$JcC<$JcC<$MZ3ZaquHa^qu?_)nc/Uhqu?Zrnc&SsquHa^!&4?O!AO$9rr?I+!!&\hrrA_k !!$F"rr@]C^B"4_~> pAY;>1dE'!CB"5:qL0eN.('!R"orVk rs%t*+$'m)l1t>fhIS#s1cgQpc92.-%fRgj#64_rE[a44.U`;V(I(,6!!>GM4V.Dh"6a"j#5nK' kZn/mq#:M@1dE'!CB"5;SiK1c%SGgWrr`73!!`B$"9)j3#(cf*s+13$s+14'rrA/[!!+48rVm"n +92C pAY;(/OBmlL]7;Wo3s.!45^&;"nQ1P.m)Ydrr`0K!"J]&"3j(2%K6;1o3s.!45]i5"^ioK%4$`. rs%+R)E8I>qYC.;^euLD.nQH7Ho_6-+X\Wa%KHIj>V//q1iNEn$U6i_!!YYP3Zn4u"3j(2%K-5. bs27"P1s+13$s+14'rrA/[!!+48rVm"n +92C pAY:o1Hu7$X8`,&eP.h<;=a_d"k?=')H$)'rr_g)!&jTO"0a$N2?!OYeP.h<;=aM^"]@-@$S\X\ rs#ns,:O[_rV?I>VF3+&-mIV YTs3+q#:Lq1Hu7$X8`,'?8P"V*dmq]rr_g)!&jcT"7d')2M(mZs+13$s+14'rrA/[!!+48rVm"n +92C p\u-,"i(*-!!$L.qa:Vq$"P5nGiPus8E_=s7us#2#.(QVuZl4r;Qkt!<"Rn*Qs1n4*rr<<(TR_R.rr<&irr=2@!!#jmrrD!U!!(C>rrA_i!!Anos.K8i!20#b !0-Ti!<%E~> p\u*#$fq?E!!'t;p)4>3nc0R-s7R?=p$r)#r;Qk2!<=YFrrcn2%fe-Zrs&08$ha&j)>X:DnI+FX h>dPos6p9o_#FcBPPY;+Erf_Hs84Yds8URK!9X=]kpl`&$pFRhs)f+Wkq)l7)#u5fs3tNTrrcn2% fe-Yrrcn2%fe-Urt+].jT"':!6"p9$f1jS!W\&OrrZj6!%\!I"(hQ6.tR_Os+13$s+14(rrD!V! !+eCqu6fg0OXpro)J^i#QLHIJAD0b!:p-i+T;?@;#C7mi;EWUd.[J>T_nclT`>%bqu?_ip&>#Oo >Ue/J,~> p\u)J/G/t2!!)3^f*a/,`rK3@s47W0qo8\T_nclT`>%bqu?_ip&>#E o=k;(J,~> p\u-*L&_2O!!#([VZ7tAq>^N.s/,iAs7u]q]`.p6gDpY%1ALkP^A\TB1&h1XVZ7tAq>^N.qYq-$ L&_2O!!#([df9I;rX8caqu6cG!"/Atrt"<2s8U@E!qQBkr6PDV!'L8\%JF0/qo/U7$ii'_s7X\6 rrg(8%KJ6^rrg(8%KJ6Zrt+pYs8W#t!':/XT`>&j#66[Xrrh's$NMs\rrh's$NMr5s+13$s+13$ s4[JUDu]k\nFuqan0"Cqs8N'(s):4gT`4ulo)Ja*s*t*rqu6Zcr;Zi5p&>#bquHbiqu?_io`"oN o>Ue/J,~> p\u,tV>pSk!!&Dd;ZKo!o)JdZs&/o!s763jn,E=iVb$sjJb]6Jb5DGCJH#QR;ZKo!o)JdZqYq,n V>pSk!!&DdMuWtWqZ?hVqu6b^!#GP4rt!12s8RNJ"8r3!pY,XN!2'8j%I/$7p!j$>!s!rQs6&SB rrgLC"9#bquHbiqu?_io`"oN o>Ue/J,~> p\u,6hZ*W#bquHbiqu?_io`"oD o=k;(J,~> oD]j$!!&5Z$34?2nc/Zcq?d4-s7--iV#UJc*n:5jB(u<8oDel%s8Vp&!*oQp!!&hgrs\Dt!0dH3 !!`Jc!!gRBrr`0?!(?ec')^D^s-`ors8S[js8Qg6"(&.qqu6cj!!$X)rr_ln!+c$-"7uQnAH)T1 q4?79rr_ck!0d?\#JL0CbQ%C0f`(mSnfH<]!+u61"nE_b!!$V^s+13$s+13$s4[JT+92D7pAY5F !"eYls8N'(s3SQsi;WcWkl1\Q@/^-+&G,o%T_AEdT_&0`NUt-irI=~> oD]ih!!)'O!s$RFiW&uCoE,*;s5F"Yl2Ue@)r:Ppf(]1Sjo>D3s8V]n!6kK&!!)9Wrs[fc!9=*= !"AnD!"\Yurr`$%!2f_p')CYhs!e!ds8Oe=s8Nu;#B@?Kqu6c[!!(UDrr_B`!7h#I"6KR`ec,RM n<`hFrr_0Z!9="W#DrKloDe oD]hd!!)W;!W_KbL&_5HciO43s+ULRp&G&j8r`lOmJ$VjQN.$Qs8UFI!9sNBGs8O#2s8NK-)hZ3/qu6b^!!)E[rr\Sf!:B^a".&ufmJd+e eXHC4rr\#V!;$-g#=JPGqZ#*7qu6U!W(N'M!:Bdc"fP%R!!)D;s+13$s+13$s4[JT+92D7pAY5F !"eYls8N'(s3SQsi;WcWkl1\Q@/^-+&G,o%T_AEdT_&0`KCchXrI=~> oD]i!!&jlhZ*Z/j8]2#s5*eVf`1k?Uu).Pc1h5JhuEc!s8V-[!6>,s!!([FrsP4p2ZNgU @/qYj6J),7"6BL_^A7d81]R\D58s@ts-3H^!Wk^LrVluX!!(49rr_0Z!6P0="5j.Zao;;A=o^2P rrSSg2Z oD]h%!,;JG!!)TiYQ+[s]Dqs&s0)J'pAan+h6-eYoCr7pZN(!rs8T_3!:p/o!!)`drsM?tC&e5/ 3<1rBA+9Bq"2Fm:nG3(j%0-c#57@Jjs"aNQ!X)d(rVlu*!!)Warr]S-!:p'f"1%t-o)AXj)ut-Y rrP^kC&S&NA1%@+lMpl(!-S>Ap_qtl!!)Wjs7dMgY5eRoJcC<$JcC<$JcFL)!9!hVpAY9R&-)]\ o`+pkqu?Zrl2Ldg+T29?Yk%eoT_SQfT^r*_NUt-irI=~> oD]gO!2oil!!)ip63%#_:&k:is$?\cqu>OlnNm3UqY1""70!>as8Pgo!;ZX]!!)oirsKhIVuQeZ )uql%M#$rJ"&f1"q"apn"op/<58jJ#!#GM5!Y0SUrVlse!!)lhrrY[i!;cWn"%<1iqYpKr$inKJ rrO2@Vu?W7:DX"%pAb.$!6bEBh\u#O!!)lqs5+ab63%#^JcC<$JcC<$JcFL)!9!hVpAY9R&-)]\ o`+pkqu?Zrl2Ldg+T29?Yk%eoT_SQfT^r*_KCchXrI=~> o`$&J!b_N4_>jf?s187:s2"a?s8T\2#ljpY>Q;87#QOi#r[.[urVlr4!!`H&$,QZHs8T\2#ljc# -NGdsrsZUCBE%r,:'$^W4T^95rrU":"o80&q>^L`s7m0(rrW"<)#XF7/,fJL]Dr0/rrTk6#5eE% ]`898rrQRU>q^&hsHr;R>rAcNA=s'Q>5s8RdWs1/18rr3.U>Q;87#D)o+s+13$s+14)rr>mn !!'h0rr>mo!!(sMs8N)rs8N)brrMUSr;Zj@d.%&8T_e]hT^i$^NUt-irI=~> o`$%o"H6#*3s%NJ)s'#I3s8Pdn&HDc"Sc;=_%fcS#r[.\(rVlpq!"Jr-$!RBjJ9:&karrrQ!s%K$/, :]Lt'rrOekhu*KUNWb=%JcC<$JcC<$JcFL)!)WRn !5SC0!)WUo!9!PMrrDrrrrDBb!UrAQ!!+4hnG`K]qZ$Vhnc&TKo>Ue/J,~> o`$%:&@DK;,lfY!ru_;.s!7Y!s8O2A6N@!(f)Hfl3<0$&r[.\VrVlpB!&X]T#pfR*s8O2A6N>:/ -NI]TrsW$A[/^0J&d@4T#7TnprrOGG.f')Kb5_P#s2fWerrUJ9"T8<#aSl,?+94:lrrO>D2#I:S +TO@trrNrko)/Lh=V.tmn !!'h0rr>mo!!(sMs8N)rs8N)brrMUSr;Zj@d.%&8T_e]hT^i$^KCchXrI=~> pAY6nLF0e8ru8*@&HDc9!%.`K!"f21>lZ5O`?YE_B)iYGs6T^b!#>J4!c.iMrr3;-!"f21>lZ5O m/?tb(&n48rJ)`7rr34g!"f21=o]`CrrT\1%/Ko-m/R-Ps8C4?rrrDHFoVLZrVlq7!#,&*!c.iM qu6_6!#,,,"9"!%^\Rm3huEbrr;R;H,QIdV!#5J5`?YE_B)iWss+13$s+13$s4dPRi;EWU;#(%j _#+04@/9j"!;lfo!!#:RrrLIXr;ZjpnF-AWT_e]hT^i$^NUt-irI=~> pAY6j@7B#Oru3Hg,6.ZZ!+,[U!$_IC(B@eAL/n9R)#u5fs4%#J!&4BO!ZD%grr39T!$_IC(B@eA eG]FJ0`M(Sq-c_Jrr33a!$qUE('%2.rrPFc)#=19ec5^4s7t.ArrrA8=o\O[rVlp;!%R[A!ZD%g qu6^9!%RaC"8Q@oh>.'QZN(!qr;R:^ pAY6W3b@m]ru2XPNrT+e!58CH!07*Z$NRm?7[O/T$iln!s'u$.!2TSn!Xo'trr39=!07*Z$NRm? A,ZH.V#LArjuR)Err33?!/LUS$37g;rrO,>AGQ60AcMi's5i_Irrr%u1&q<]rVlp-!1NT\!Xo't qu6^+!1NZ^"6MXUo(i:f6N@,^r;R9sQiI'o!1s5j7[O/T$illMs+13$s+13$s4dPRi;EWU;#(%j _#+04@/9j"!;lfo!!#:RrrLIXr;ZjpnF-AWT_e]hT^i$^KCchXrI=~> p\uGi6&YdCju*1I!$VC=!s5b-[K%KNq?$f(s'@oS4obQo5K3Hu"9&c11&h1X[K%KNq?$f(q>UuX 6&YdCju*/M!&")L'rrA_f!!&\_rrA&M`W5sf~> p\uGG0rt?S`.\.S!)NXe!<_Zf4oeCYoDo'[s$o:<4TGI25OnRL"8r?&IfB?P4oeCYoDo'[q>Uu6 0rt?S`.\-n!-eJ=!s"J\rrS>`'E.q@JN[E\[P=i_s29TjV<@jX)JfBYrVN2Bs8PSR5m5)L'rrA_f!!&\_rrA&M`W5sf~> p\uG&50O!+;:,=^!58EX!=JQ#)Z[SOc2e:Gs$K"82?3_85Pb-T"7uWpcMmhK)Z[SOc2e:Gq>Utj 50O!+;:,:D!6bE*!W^aIrrP.[:&Y)%5_B%91&qd_s8UdDs$,KArr_<^!8.;N"7uWpcM%8?oE#$< r;Qlk!W^OFrrVSTo)AXqPs3Cks&%/CHh@=;)Cke.rp?*Ds8PGN5;iKA2F%")5)L'rrA_f!!&\_rr@]C^B"4_~> q#:E>!#,>Z&g:lej8^D(_Z3U7s5X/(s2+h7r;Qlk!!$L&rr_ln!+Ps-#35b.s2+h7q>UN?!#,>Z $6a$]4odA q#:D?!$_Ci&f0'u])Ye0K)go2s1880s+:<2r;Ql]!!(OCrr_Ea!7_#J#.jk6s+:<2q>UM@!$_Ci $5V4m%fh1\U]:ququ7-!'*62Ss0`?ss8OVM)ZKaER&U*70DkeLQN/*&rr3)_!!(OBrr_Ea!7^rH "6TXaeGfIQ:B2[?s*+Mfr[/0kf)I:Ts8UOR!0@.U!$qLB"6KR`eGT=Kjo>D2JcC<$JcC<$JcFI( "7Qj%JG0!FTE"s7p](6ns8W*!qnW43"96.:5k4jSd/ q#:Ca!%%Ul&ddt*?3%Y<2ZUu"s'>]ULb!%%Ul $46,"#6<*M;#iHMqu7,X#Qa2is+_oms8Nc5CB"5@3o0fLFoMF@;#j;grr3(f!!)BZrr\Vg!:9X` ".0&gm/I"i+97N's$Zo6r[/0^mJdm>s8T/'!7:`g!0I-Y".0&gm/6kcQiI-QJcC<$JcC<$JcFI( "7Qj%JG0!FTE"s7p](6ns8W*!qnW43"96.:5k4jSd/ q#:>5qZ$lEs8Sc:3@0L[rrf#>3@0LZrrn';!!"EZqYpco5!%:>:s7\`> !!"E:s8T>/HN4"aqZ%)Ks.;5+3tjZBs8T>/HN!jIKKB/6-t`JY"b\r;!%;H1s+13$s+13$s4[JS THNaurrhg6!!%!4s8N*!s7ZKqs1eV"nc&U)r;c9c!205is.K8i!2/ua!0-Ti!<%E~> q#:=5qZ$lms8RB]3\mW3rrdWa3\mW2rrl4V!!#'VqYpcd5;`E@3_fVR"F:kF18jpI!#te8#kS)C 57]js@-[Rf%.%:<3':=&s0k2s!!iKN$4l1sO@1Qa0.1o9rr3.42#mV;f_PO`lp!?-!'3jSs6Ms- !!#&Ss8QC7YQ+VAqZ%)ss)KYQ2\eojs8QC7YPnJ):c/4Q3i2iU"].&V!'6s-s+13$s+13$s4[JS THNaurrhg6!!%!4s8N*!s7ZKqs1eV"nc&U)r;c9c!205is.K8i!2/ua!0-Ti!<%E~> q#:='qZ$lts8H4?1IB=brrrC+))FV'r;Qpj'`\4sh>7-]Y!3X$!'PT,s8H4?1IB=\rr JcC<$JcC<$JcC<$MuNpqs)9[]qu6]d0`D%Pi:m9O!<<)n5Qh&%!'p)S!:]s&n,EB\qu?hls8Sbi !!&\brrA&M`W5sf~> JcC<$JcC<$JcC<$MuNpqs)9[]qu6]d0`D%Pi:m9O!<<)n5Qh&%!'p)S!:]s&n,EB\qu?hls8Sbi !!&\brrA&M`W5sf~> JcC<$JcC<$JcC<$MuNpqs)9[]qu6]d0`D%Pi:m9O!<<)n5Qh&%!'p)S!:]s&n,EB\qu?hls8Sbi !!&\brr@]C^B"4_~> JcC<$JcC<$JcC<$MZ3fU!!".7rVlnk+T;?@OS8_S!;-9m^]6XirrD!UJFNR=_#+04T`+ljT_nci _"Rd.NUt-irI=~> JcC<$JcC<$JcC<$MZ3fU!!".7rVlnk+T;?@OS8_S!;-9m^]6XirrD!UJFNR=_#+04T`+ljT_nci _"Rd.NUt-irI=~> JcC<$JcC<$JcC<$MZ3fU!!".7rVlnk+T;?@OS8_S!;-9m^]6XirrD!UJFNR=_#+04T`+ljT_nci _"Rd.KCchXrI=~> JcC<$JcC<$JcC<$MZ3ZaquHa^qu?_)p&G$lo`#!.!'p)S!5SO5n,EAqrVuqkqu6YhrVuq+p&>#O o>Ue/J,~> JcC<$JcC<$JcC<$MZ3ZaquHa^qu?_)p&G$lo`#!.!'p)S!5SO5n,EAqrVuqkqu6YhrVuq+p&>#O o>Ue/J,~> JcC<$JcC<$JcC<$MZ3ZaquHa^qu?_)p&G$lo`#!.!'p)S!5SO5n,EAqrVuqkqu6YhrVuq+p&>#E o=k;(J,~> JcC<$JcC<$JcC<$M>mR;pAb2To`+C\!'p)S!5SO5mf*>r!20/f!h]O$o`"oNo>Ue/J,~> JcC<$JcC<$JcC<$M>mR;pAb2To`+C\!'p)S!5SO5mf*>r!20/f!h]O$o`"oNo>Ue/J,~> JcC<$JcC<$JcC<$M>mR;pAb2To`+C\!'p)S!5SO5mf*>r!20/f!h]O$o`"oDo=k;(J,~> JcC<$JcC<$JcC<$M#RP7E$5)Z![)I?oDe:[!'p)S!5SO5mJd1%p\t6/oD\fMo>Ue/J,~> JcC<$JcC<$JcC<$M#RP7E$5)Z![)I?oDe:[!'p)S!5SO5mJd1%p\t6/oD\fMo>Ue/J,~> JcC<$JcC<$JcC<$M#RP7E$5)Z![)I?oDe:[!'p)S!5SO5mJd1%p\t6/oD\fCo=k;(J,~> JcC<$JcC<$JcC<$L&V85^qeltrrA&M`W5sf~> JcC<$JcC<$JcC<$L&V85^qeltrrA&M`W5sf~> JcC<$JcC<$JcC<$L&V85^qeltrr@]C^B"4_~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcG6>!:9^/!:7o/!:p*N!;Z$^!0-Ti!<%E~> JcC<$JcC<$JcC<$JcG6>!7Uq&!7T-k!93sp!:fIV!0-Ti!<%E~> JcC<$JcC<$JcC<$JcG6>!7Cdu!7B!i!9*mm!:]CU!/'mX!<%E~> JcC<$JcC<$JcC<$JcG<@!VsM.QiX_mc2RsQWj&_'^[;%$NUt-irI=~> JcC<$JcC<$JcC<$JcG<@!V'n%%KTc'c2Rr>0g.ZGC$kp#NUt-irI=~> JcC<$JcC<$JcC<$JcG<@!UsXt"p%]mc2Rr8%1j'YAF9BsKCchXrI=~> JcC<$JcC<$JcC<$[f?BijSoYaZC%5h`R JcC<$JcC<$JcC<$[f?BFjSoYY8e)k6Ga?8IGRbajl2M#m%TTm[ZsaGJcMmpA-2u*i^_t&XrrA&M `W5sf~> JcC<$JcC<$JcC<$[f?BDjSoYX6j=DpF-FH?Es$iVg]/I92\rr@]C ^B"4_~> JcC<$JcC<$JcC<$\Gl`iSsYn:g#rAEm%qDfkhO:gWiMNTgnj<9!p5lfr;-Q5R-)cq!r8\JrVHW; ZL7_mNUt-irI=~> JcC<$JcC<$JcC<$\Gl`>*=`Q"V<@jfdk"M7W/tjf0folPO=]\s!lGLVr6,4N%`?Zn!q@h'rQG:Z 9()]ZNUt-irI=~> JcC<$JcC<$JcC<$\Gl`<('XsYU?DOcd3TMZ-mBTD%5e>>+slOS!l5'Xr%J0h#/S[d!q7K[r@e6k 7.1'TKCchXrI=~> JcC<$JcC<$JcC<$\c2Zrqj7BGl2M7NT#pW5Yf$,1ql6%Id&ZI3!mI&(r;-QfR)SUq"8UBTV>Zb` V7=tLm/I+1Yl":uUqcoQ!9WnQ!0-Ti!<%E~> JcC<$JcC<$JcC<$\c2ZYq[NVDl2M7#*GrS`4^l.MbV9U+H9:El!f%9$r6,5X%X@OD"7_[\/H$%\ /6\A0m/I*A4o JcC<$JcC<$JcC<$\c2ZWqZ[&:l2M7!()nh=&/ZuQ0F\47*]<6_!eU\/r%J1(#'9>7"7VLR-2e#M ,ug)tm/I*=&Gn-^$Y96h!5\:,!/'mX!<%E~> JcC<$JcC<$JcC<$\c2ZEqj7N#rVZTlmf*gnR,$ns^TsI!qtnL,Su(f=rrKF$qYL;nZL\"unt*)9 kl(A]kgco/o'QGYhk]oCqZcJU_o^$6V=X]eNUt-irI=~> JcC<$JcC<$JcC<$\c2YDq[Na JcC<$JcC<$JcC<$\c2Y?qZ[0qIUlucmf*ge"sPH$A4-\Q0JFF](+%AnrrGLqqChpZ7.U?\i>)tI ./bh&-m0':iU-XHZ3r8_0Es!2(`OD/-1h-:KCchXrI=~> p&>0q!WrZgcD^aIol_Pa&P&u"rrE4Uqu6`q!2SiY!<@c6rrE+PJcC<$JcC<$JcGHD!4)Ni!NPej qZ-Q_rs/+d_k,)eV!.gT#3_o`s5r"_m/I.+R.U=R!q_l!o)Aa7[eKY"[`n+ p&>0q!s8s-nYlHlk$8f-(g4uWrrE5]qu6`l!9r_I!brs.O$@2Xi7-)gge#,j*Qs21\!m/I-3%`&"d!l,:jo)A`G8b^F08Vc[4!D75-bQ1:8rQG:* L\1THNUt-irI=~> p&>0q!s96Oq5F;t`CpmK,AcN=rrE5mqu6`S!;5RU!YPrs.Kg(^Pb)$Rl!."t1ets1tFnm/I-."tfa,!\FUto)A`C'DF0]'8,ZO!CRn*0EDh%r@e6` KCo0DKCchXrI=~> p&>0qKE(Xf'rh3o2uqqTQqUoTl_[]7dCrrV)Fao)#;adCuVrsd2>WmB\sqtp$Fc`3AVm/I=WR,$]\eXlF3 qZ>cKo(E"_NUt-irI=~> p&>0qiW&4*1TCBZkmMdsroAk\o)Adc!9r_I!2=u!h:b`I.p,s)Sk8MQOurrTP;D>_TZD%%Zm3NKGhT( bQ=:Tiq< p&>0qo)ID\LoLCZ\-JAgrRG_6o)AdJ!;5RU!+:'Rt 0ENO9iV!3NKCchXrI=~> p&>3rKE(u?!rK"t!KST*rrDfarrW)uV!.gZ!/'D5!<@b's+13$s+13$s7ZHmk5:VCqZ-T^rt"[l o_\O!St>B p&>3riW&r5"9,>#!B"6^rrD9RrrVopl0/-J!9*&>!SeR p&>0qo)J`3$E=%+(9[T8!:'.T!o#E o=k;(J,~> p&@>YKE(u?!W)frE'sqnqJHrP51]c6r.?$m)MS4iK,k.PaoDCU/d;YCs8Thd"q!Bjs8@Qj"uFC$ s1^/j$9A.dpLF!uo?@46!rWCgq>Us*E'sqn!/(=Oq-j^FK)h_Ds7:d>rrE+Pr;RW1DA*:>f)PdJ K,t+5L&].D#REQ?s8N(OJcC<$JcC<$JcGEC"PKB6R%F0O!<)V#L5moUb(@qZ56Do`"oNo>Ue/J,~> p&@>YiW&r5!ri3"ZS)ICo2?&+<:p4jq.:Us*ZS)IC!9*tXn3mO(W;u2Zs7:d>rrE,Yr;RW*;[a(6o`+se AeYCpe,OM6"q=H$s8N)XJcC<$JcC<$JcGEC"f34L%NWmmbQ-emrstDqbfjKWib:u$$AV'Z,b!l,\DrQG:q/G/rBNUt-irI=~> p&@>Yo)J`3$31#*Pog/#e3+$NDu0M6j%^!e1@>,(9FMA>q#CA4'a5A%s8R!P"VuRes5lu`%:],4 s)/VU(4Q;`Zt&n2o)Sdi!p9UUq>Us*Pog/#!:p0ibqK;V]`@a%s7:d>rrE,jr;RV`4U2[>qZ$TU :(.=^mJg?.";P_Ks8N)iJcC<$JcC<$JcGEC"elb:"r9B!0E@L-rst;.0JF>$iFET@'b(@)AFT!d $"O5d"pPVC#"7tNrrI`kpFlUeKC&U=U'prS!\F[(r@e6p-1q3;KCchXrI=~> p&@>YKE(^h'`\15'?C+?F<096HPHM[LD@r2k-k;J*npR_&HDP-RJcm#s7l_ar;"A4s,.rPrL=H! q#Zu^q8WI7nc8Ibo?@46!qlWPq>Us*'?C+?!/(=OF<9E9F9&-5s7:d>rrE+Pr;RUU*T-X='`\2g (!6L<[f>UQs8&l9s8N(OJcC<$JcC<$JcGNF!;ZWV"KRoWX6KNYm/IHoh#$ujX8i"7^XD91rs@Sm R(r[Y`NmJ?n,EF4anPZ5ais/P!r8GIrVHW;Yl=M$oUat4rrA&M`W5sf~> p&@>YiW&:,0`V.Q+Q!%n/P5F"75+]@4uM3sg#E#s:$VLh,ld?7`;fD=s6p'-s73`#s$0Us*+Q!%n!9*tX/5>[%4ojjDs7:d>rrE,Yr;RTc8al+:0E;&9 2;\Adir@-es7;"-s8N)XJcC<$JcC<$JcGNF!:g'+"?R)'414t0!;Z$^$TjHob\]HAnT\c6_s@=/ Zs!rRs0R#CGdQr>!JbOdbQ2R9mJd7X*M!)P!Gt"!bQ>Qt[.O@uNUt-irI=~> p&@>Yo)IG]K`D&P<:9DX'7Tc6)gD>^)/&@8an,NNJ+i7`B`GmLg]-NQs1n`js67;uru-C\m4`5R _#`tqq>Us*<:9DX!:p0i&q]u7+TV33s7:d>rrE,jr;RTIIehh>GQ7[\ BC5Z>oDd,,s62e6s8N)iJcC<$JcC<$JcGNF!:^!(">pAf2-g#4!9W\K$T0+^0H2nLn8i-(_<_+- Z;_$=s0?]6F0b97!J;?c0EE,FmJd7W(+&o5!?2UL0ENg3ZLn.sKCchXrI=~> p&>d-!WrWeb5_JA<<*!n!42_*pAho&!3#kr$i'hAs8Vut[JC5YkPkJ`q?hZ6rr3B%!Q>$Ue/J,~> p&>d-!s8p*n,NCf_uKc*!:Bgdli?ME!:'O_$h=>gs8VipmdpUVoD\aloE1l[rr3As!V-3ip]9gT "/GJYs766irrqZfq#CBFrWE3#!3PteLMce0 !H!V^rrAAa8c_":qof3i0g.ZS9(W&_NUt-irI=~> p&>d-!s93Lq#C?ok5YIo!;HNnYlOR9!;?Bk$cW5Cs8UsWpWioPqu6TtcN:]Trr3AG!VucqhZap%n^[JGoKK!:p*g$G6B5s8T>(pqd%) r;R(q/I;O](]XL8nq$gls+13$s+14Grr@-8"ooeF0EF>BmJd4G#lQFX&9I%7"(VT?<9X>_K,aP= !?6[]rrA8^6if.Vq_/0]%1j'[7.^EYKCchXrI=~> p&>$mKDYZQ!.k1Mnc8Iarr`=Xnc8C^rrMZjqu[Lcs5$s",_5pphHLsFJH,0?qu[.Ys5$s",_5Oe o?@46!rW@erVm&l!<<'!Jc>ZV!/(=B!;QToqZ*Ggs7:d>rrE+PrVlri!;QQn"9=8K!;?Bk$N2)G jSnZLs8N(OJcC<$JcC<$JcGTH!8749!2TUurqc]orr2Bd!R/7UqZ5'Lkl1Xtrg3]6kl1\-anPZ5 ais>U#P+8;io8:Uo_nXlm[2ehim44lo`"oNo>Ue/J,~> p&>$miVWWb!9*tXirK)Ys8;rXirK&VrrM-[qu[Mis1(c70q\LG\P!MhTE!pOqu[/_s1(c70q\+< o)Sdi!r2oZrVm&[!<<'!iVria!9*trrE,YrVm5b!<3#ur;bm26T D27]^#N?5TS=FgA_#;I^Zjr1fS9Q(Eo`"oNo>Ue/J,~> p&>$mo)&Fj!:g*hL]IGS"SVoeL]IAQ!JgaR!tb&'RQh6IaT):/57Kp"s+g[Q!s\>rRQh6IaRoN( !<3!"joP)Prrn#Ts8N)hrr3*$o)FLGrr3&N!;63go76f>!*=+7q0F''3+seNU(@^tr!/'mX!<%E~> p&>$mKDYZY!/(=Op].c&s7ZN+q#IGnrrVrreG0%FdK-cSrrpgO[J0dPq#:ED!O_V#o?@15!K8B( rrqrns8N(Orr3<*KE(]H[K$9u!2TJko76f>!<@cNrsJN$[f?C%!5/+-Wr;r)o)S@]s4@>Orr@\& s+13$s+13$s8)`qZM^'jT&TG?!<2Qh!nj1/rqccDT'#;;!5JN#!5I^s!R/IUqZ4UYo)Aa#_u9H5 Yf$G:!O0K?qZ3qFo`"oNo>Ue/J,~> p&>$miVWWb!9*tXmf;eUs6TgTnGqnRrrVZjp%\Og\cM3srrot7mI1/Lq#:E,!U]R[o)Sah!Ae-^ rrq?]s8N)Xrr3<*iW&?Hmf3=K!9s@[o76f>!%.BR !BjlibQ0k8rQG:*L\1THNUt-irI=~> p&>$mo)&Fs!:p0i])_U*s0D_#_>s<.rrTn9qt^6or/_!Srr33#O950j!rMfn"8n5^p\"RX!<)ou (9d]:"bQgTrrDWhrsAbss1A@+s8S;`p%n^[JGoKK!:p*g$G-<4s8TD*pqd%)rVm4a!<3#u495E] !:k^@JcC<$JcC<$qYpO`r!!0--2'"n4gOYY!horKr\+Bp(;]88!+c'5!+b9m!J;6`0EE#Co)A_i )#Z,h&/b@"!>$+H0ED`;o`"oDo=k;(J,~> p&>$mKDYZL!/(:N2/s\rqL0+Xs+V<5s6$lkKcnkEo!eYoT^2X2!O_]qli5W=[Jtq'e,T!Js7i8Q s4IF\s7^$us7=J5rsSKG;qCpC[fHI.!/(:N$35_Ys)T7@piQS4qZ$/;rVlluKDb`dE?=*8IM;b] L)/#5kI:6hC&Hg?!<<'!K7X&Rs+13$s+14HrrBA&QiP\.qZ-WfrrUlFkl1G\ae%k`rrBh5QiOn` rse+^WmB\sqtp$Fc`3T!oD\mST(N!Y#O[u7io8L[o_nXgm[3S p&>$miVWWU!9*qW2(DAkn45,1s#`:!s4ZK44Ab,=l)4RMZh+45!U]?^oDcW-mJf:FjT"JBs6m;c s1na's6X=ks766hrsRusHK5%sRK3Bf!9*qW$39&bs!ph7mQLX8qZ$/;rVlluiV`]m.SfO'81af@ 4?2:!g>_W'VuFaK!<<'!iIV#[s+13$s+14Hrr>[h%KM1RbQ.5+rrT#7W;b!BD&q*irr?d4%KL5* rscjd0mK5(bfmkmGVL5VoD\m0)8Q3p#IFu&S=G6M_#;IYZju*grrA&M`W5sf~> p&>$mo)&Ff!:p-h2%kQrQ=a3)1M)Thk'k\`VKFt"8BIIq>?N\p\u+[nGhC;s1H>H r0@HZs0Q;2s766hrsQ.;ulsu!:p-h$39Ysrt:"]g`Z[jqZ$/;rVlluo)/M)&qg&=*-D5\ )/AUIb"ooe;0EB>hrrSo#./kn%)]$icrr?U/"or2r rscd[%36`H0JG()*=We#oD\m.#VH!/#:]p%,paZ>/c@@).L+l)rr@]C^B"4_~> p&>$mKDYZL!/(:N2>M###+U&BCU]:>oKDtlX!/(=Oq-aUCJ,lD/rrE*$rW=&Js7pFC#orKmYl ^Y//W!R.eFqZWdrZEgO8qtgDig%G@FNUt-irI=~> p&>$miVWWU!9*qW2=XKN$W6Kps7p4="XVXtq.:9C)-m403=?!9RK)\8$O%fDs8Vn,'*K1Xs6_lT "XKN9s5rsIgk('G@L^]4<6iVria!9*tXn3dF#VZ>uFrr<&t!u`!UnPBT$;=abeq.10B-.Dm9 !#Oo>Ue/J,~> p&>$mo)&Ff!:p-h2:4Jj&oILFs5Qf^"uGZHj%^!d,Bs0q/I)J9`W*=t#6m!'s8V+S$j@l"s0XE` "uF6us+:=5rsHY9&-a4eh#IBSo)AXr!:p0ibV'&N]E%Wgrr<&t!ub5?d5qRGD>O;4j%Tpd1[Y35 !PQ0EDQUp&>#Eo=k;(J,~> JcF!p!qk%8JcC<$JcC<$JcG0;T&T_G!RIVArrW"f ir/`Tc_^:6!0-Ti!<%E~> JcF!p!pJ25JcC<$JcC<$JcG03*M!)P!I-0prrV^2 SGgY4GV&Le!0-Ti!<%E~> JcF!p!oDZ1JcC<$JcC<$JcG02(+&o5!?EKcrrV[* -2fLu*@:@X!/'mX!<%E~> JcC<$JcC<$JcC<$\,Z$upAYEHWq JcC<$JcC<$JcC<$\,Z$i!;ZBh#aR3\C%:Hf!7UoW!,9IQ!L>J>bQ>Qt_u9T9Q8/B_!l,\k o`"oNo>Ue/J,~> JcC<$JcC<$JcC<$\,Z$C!9X%U#a5]L'c*NCAFSj`!7CcM!+a+L!L!ul0ENg3_>XB7P7@LF!\F\o o`"oDo=k;(J,~> JcC<$JcC<$JcC<$Sc8i:]tLK;jo5GLR$bY,rro7!Yct.;qu6hrWj&_-\F]_#NUt-irI=~> JcC<$JcC<$JcC<$Sc8hJ4_aoNUt-irI=~> JcC<$JcC<$JcC<$Sc8hF'brUbjo5G1"pSVVrrj\X&.f:Mqu6gG%1j'[<:g+iKCchXrI=~> JcC<$JcC<$JcC<$Sc8fYZFK_jrrM9>_uB`-rT4+Uqu6ZerT4+UoD\fMo>Ue/J,~> JcC<$JcC<$JcC<$Sc8f@8m:cFrrL$E_uB_rrPJX*qu6ZUrPJX*oD\fMo>Ue/J,~> JcC<$JcC<$JcC<$Sc8f>6r`[9rrKsA_uB_qrP8L'qu6ZTrP8L'oD\fCo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> JcC<$JcC<$JcC<$JcD5>!/'mX!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z#6JXM(WJXM(WJXM(WX-re`!/'mX!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z#6JXM(WJXM(WJXM(WX-re`!/'mX!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z#6JXM(WJXM(WJXM(WX-re`!/'mX!<%E~> q>^sO5]ruTHaI:rVZH00`V4R I/X*I!WQuh!!3+IkPtYds',@#!@?X1!!Wdeh"gBJ;Yg@or-J5?!X&I,o`,$mI-:P6s*OeH>HWMW "oo4.mJ+n)h>dTSHEI8DrrA&M`W5sf~> q>^dTS*NfD q>^>[#-m4ar9VImka;FJJXQ>%%'Sjkr9ht#RJreGRAPP'JXPD`&[CBlr9VImRK*9cpXPb$RK&lX R0'#\S_9D3s.8GB!iH!gqj@KB]sO13Yi5BUn^O?1R0!;Yqj@M_s./hN!WSbTR0EV^R@3WDJXH_1 \* q>^?m#79(`-35$5Xlo`cs*T@tq>^\oefk)6B_qc1s*T@tJH4X/&dd6k-35$5XT8BK!""PJ!!*%H rW!!#s(p?g!WRQ2!!39&>PnI&!R4QN!!`h^XXO>b?J+fK!X&I,r;Zj"./NuFs*X#1#60&N!"&E3 JcH#`j.$ng:\\CV!;ZWpNUt-irI=~> q>^?m#8Zua(]c(S.Hga4ruQ^kq>^]XT+h;SI/&- JcH#ppN$`NDYYT9!;ZWpNUt-irI=~> q>^A\#IaTIT:<(HU$.mFs.4e0qO%N`a.8^'cMO"1s.4e0JXPJb'"7bTT:<(HTpbqPRAff#R@4)H rg%\soGEpRd>2q>UGIo=k;(J,~> q>^?m!H6]i!!!Vp!!3+IJH5QI!X8U-pAb6oI";9K!9!nYDqb*h$P q>^?m!Qq,6!!!/c!!3*@JH5QI!Y#)DpAb6o*e=> M?*JP!0-Ti!<%E~> q>^A\!VX(`R0!>ZJXQD'!j2KnpR)'^Sq3;\RGjP7p::$f$3-TbRF1o"RK&lXR0'#\S_9D3s.8GB !iH!gr0[TBd'T2Ap::*h!28tO!iH!grL!]0s8/2bs.8GB!WSbjR0!,[JscZ6\,D]qma6o[q>UGI o=k;(J,~> q>^Bn!Wr+6q>_]COmMhY.0'AJHiO-Trs/W)MR3*<MI,Y"bH2otSp\2QX!!*%HrVusRl%8s;!r-[3!&b2`/-,]t !!!H-#QOpRiq^eV!!*%H!!!H-#QOpRiq^eV!!*%H!!*%VZhWQ^!!!7so^$qS9>:K&rrA&M`W5sf~> q>^Bn!XATAq>_]JXRl%a$NL2,*WQ0[rrN3#5g9/U-33?2r;=J5s%Lf:Ep*E%!YPAAM?!_^r-eeH !"T#M!:'U^r58R>RdKjZ&qL%6!:'Ud#5oJ:!"&ZH!!"8B! q>^D]!i,deqO&P-kPY)'S!f]ESsc"es-];T^%2-`T:,QUrr0?os24I,kLoj&!k/&tMO=O?rk&&q% f`,gqZ$Qo[[EoLqYJj7JXM(Wl^7gLs.9(T$3-TbRF1o"RK&lXR0]GbSXIt$rV"LnR0!>Zr0\>#k PY)'S!f]!p&4X7S!f\Hm/?7Vs.0(U!VWVoR6pqlp&!L6R@4)moDP8\kPY)'S!f\?i;3E8oDP9\Ssc"Km/?7Vs .0+V!R(N?R2l6uR@1)qRA8a;qUh=+RK&kHRE,>qRA8a;qUh=+RK&kHRK'tkrT0Z>RBGrUl`olJ^R=ot!/'mX!<%E~> q>^Bn!X\lKq>_CkiZJJZlMpqbHiO-Trs/W)jtm-QnGiRhI/X*Qs6M]G']s64!&a(u!"D3ir6L34 !!*%H!!*%HrW!+Di?\P8mstIi!:'Ud$3)+D!"&[Q!!eDI!!*%HrW!3)s(ho]^MuR#Z!!1-]^ MuR#[!!*Q/qZ%W9HiO/)iZJJZlMpp0l8AV[8H9MF!!Q6^!!*%HrVus5pk&PJ$3)+G!&alXD#jT` !!!H-#QSu*,m%TF!!*%H!!!H-#QSu*,m%TF!!*%H!!*&]1]h@\!!&,<*!_2t>JC16rrA&M`W5sf~> q>^Bn!Yt_?q>_D][La"]ci=(G*WQ0[rrN3#eK+jihuEcW*rZ-Hs5+t%$Mb\B!/f0[!"FAUq87=X !!*$?!!*$?rW!,:Z5!V/gOT?U!:'Ud(&nO8!"&ZH!#!5r!!*$?rW!3,ru)FI3rf^ZhZ*]W*rH!R d^B\u]$LEW2A6'!Gf0R^e$9Gr_>b;K!!2UArW#:biYr9/f`2$Ph]W()d^B\u]$LEW_9*o$-63*$ Z5!V/gAhc`3rf^Z!"]&j!"DBt!5GfS#F*sC&,nWj%7Ub;L!!+/@qZ%W9*WQ2g[La"]ci='^arpa3*<7u2!"=+j!!*$?rVusNnUgfC(&nO;!&arZ)?BdY !!"#=!W^!@'aKuX!!*$?!!"#=!W^!@'aKuX!!*$?!!*&L*X&=t!!(WQ%2$8Q(;BkFrrA&M`W5sf~> q>^D]!knW&qO&5qc'tU&c^C4$Ssc"es-];Tg7P#-e!ZX(T)P,bs4s?=V#HsRRI/%NR0;CHq;T-f R0EV^R@4)HrgRHp7B^&OPtR0inbRA]`#R@4)Hrg=%as.-IqVjX9chjFNFT)=ul pW]2)oZrqnXe(rTjhmLSprf/)o)G9YR0!5Zrg?+Qhk$V7e!ZX(h4U=,pW]2)oZrqnp"#e)YF_0T bakEneX<`CVjX9cRBljjRA.$URJ"dpT^:3sZN$hjU9g8UbQ%I-!knW&q3_cnh4U=,s.5XHprf/) o)G9ZR/tM2qjAH(Ssc#@c'tU&c^C3oetAJ8Ssc^PRA/f\R@4)HrgfVS\LTgrr@]C^B"4_~> q>^Bn!X\lKqZ%N>s%ECm#ld3ks*OeH%0$S5s.TJn&,lV1s*XeG!WT5"!!Q$O!!(03LB&)#@%?cN !!*%H!!*%H!!!6&3rf6_r^q_AJH5$:!X\lKq>^j%rVZK22#mXVI/X*M!WQs>on"%:!!3+Ir;[W= s%ECm#ld3k(:!<)r;6O"s%*1j%0'Q0!!2kHrW!`6YlFb/s$QkeWrN,)s%ECm#ld3qs&].!$O6Sl !!!-#8d4m>)#aL;"ndHarW!<1r]:)["9(mron"%R!!N]/*rl9Srqucr!WT5"!"8gS!!iNq!!!H- >6+X"!<<&r&4lj%s*OeOs%ECm#ld3qs&]*u#o9f6qu$?l!<7HG!!*T/K)br[ru_1>2?Ehk!<7EH !"Al5#6$[a!!E3m!<7EH!"Al5#6$[a!!E3m!<7EH!<8bn!"]&1#QI6n!"8g2^B"*0!0-Ti!<%E~> q>^Bn!Yt_?qZ%NGrt5;3'E8UDruM.?*<-'?s"XQS+T29?ruV.>!WP:]!<9)%!!;^PLB&)6D6!KR !!*$?!!*$?!!!K-%KHJ6rXj\]JH5$:!Yt_?q>^j%r;?2m&-)_1*rZ-D"TKAJr*0Zd!!3*@r;[WF rt5;3'E8UD3lLXer:p=(rt,52)ZLTN!!3$?rW!`663$utrt#2149,?mrt5;3'E8URrtYJ4$P!(F !!!9'&I\MA%/p5/$iF6;Cr*0['!!O,;#64`Qrqucr!WP:]!"8fJ!"f/B!!!r; ('+=2!<<&r&.nmBruM.Ort5;3'E8URrtYG3#s-#rqu$6i!<4,>!!+2?K)brfrs/K&2?Wss!<4)? !$)"?%K6h;!!iK8!<4)?!$)"?%K6h;!!iK8!<4)?!<4eS!$M4?&H<=B!#beP^B"*0!0-Ti!<%E~> q>^D]!knW&qjAA0s.#LF\Gr(es.5XHa8_Qqs.PjKchs3!s.94X!WSqoR0E,iR@O5NLRAp\alNHJ R@4)HR@4)HR@1;ZS!f\As."Y.JXPkm!knW&qO%Zirr2ZCS=,fFT)P,^TDtI`rjA6OR0!>ZrL"J/ s.#LF\Gr(e^[:psrq;bes.#LF_uH;*R0!>[rg=Q%Um[XZs.#MWUR@OWs.#LF\Gr)(s.0+V$aBZ# R@0rPS?2^tS,SfXXT#Vsrg=.us-oFEVZ30frjA6gR0C;(R[KT"rr2qc!WSqoR1'%dRC*!aR@1tm SXKHU!<<&t&=f/Vs.5Xcs.#LF\Gr)(s.0(U$,>m)rVlMYRK&lXR/tS1K:)eSs-inS2P:#?RK&kH RE,>qYlC2\RAU"SRK&kHRE,>qYlC2\RAU"SRK&kHRK&tKREtf![JubbRDSup^R=ot!/'mX!<%E~> q>^Bn!Wr+6qZ$[,rs/N''`W@Ws*OeH%0$S5s*OeH%0$S5s*XeG!WRWJ!!Nf.(DcfRKE)Gps&/pt HiO0HHiO-Us8;cpG_#jG!:0[e!r$U/!!3+IqZ$ZjM>dJ\"92g1+f+/QJ):5,s*XbF!Y,/7rW!Q1 G66[')Z^HK!"Jr5!!!0%>PnI%lAbcC!WRfO!"&[L!<7KJ!"Jr5rW!*$G7FQYr;Zj-s8;d+GQ8n_ j4f%`!$S/ugOB24s8;d!GQ8n_j4f(X!!35sD>aG<%K?D.s*jqI$NGJR%K?Y5!!N=+r;Zj-s8)d" s*OeUrs/N'"TNZTrsAW($3K+d)Z^HK!!*%HrVus0r.=tN!r6a4!"956*JC16rrA&M`W5sf~> q>^Bn!XATAqZ%NSrrE*"!rj5?ruM.?*<-'?ruM.?*<-'?ruV.>!WO5?!!O>:"Z5fPKE)H9rtGJ5 *WQ3?*WQ0[s8;cp*J"3A!:0[e#5oJ:!!3*@qZ$Zq+oVHI#QGS?7^VU/@,CqbruV+=(EEGU!!!*# *!Z.Y&ca'S!$)">!!!B+(An.5qBGn=(B5HV!!3*>!<4)?!$)">!!!*#*$"t[r;Zj*rc3?ruV.>$ND.I*<-$>!"/`Ar;Zj>s8)d* ruM.[rrE*"!rj5[rrW-!$3p6G&ca'S!!*$?rVusCq1AYK#5oJ=!"9\B#6=cF!!"#=!Z_7 q>^D]!i,deqj@K,s8JE$SH#1Ks.5XHa8_Qqs.5XHa8_Qqs.94X!WSekR0:G"Rap_VR1719SXKML R@4)HR@21sr;H\fJXM(Wm$RpMs.9(T!WSbgR0!>[rg=%gs.,Rok5+2ChjFNFT)G&XaoD@.%%R?h U]%`pREki#aoD@.!ic3jr0[TbTDk5fs.>^ISH#1Ks.>^IaoD@."J#L`aoD:,!QkB>rXbZh_<1UU YF1fpk5+2CRE>L,rW\s^_<1UUYP4FdU]6qaR0Ce6R@4)IrgL.R09&[T#q$1R0o_f\Xo57s-];TT)P,Yde8<]!i5jfrL")/r0j&RSsc"es-_"/r;I%pRK&kH RE,>qaoD;<%\B*gSsc#HSsc"es-_"/rgUGIo=k;(J,~> q>^?m!H?cj!#lOUs%*1j#ld6lnW*YM'`SF=s*OeH%0$S5rdFbG!WRQG!!AOkCX[n9%KcZH!<7EH !<.BH!!iKRJH16$jo>F$gACpQ&chrZqZ$Z!_#=<8%K7IJ!!4bO9&K[Ms*XbF(C0t3!!!<)6O`u( !!"DH!!iNr!!!H->PnI%TXk%%(B:W>!!rTm!<7EH!!iNq!!!<)6O*Qjr;Zm(r[[aD!\OCDr;[!Q r^mFp/,0)G/cJB:!!./or;[!1rr<'!I/X*Qs*OeOs%37k%0'Q1!!*Q/qZ%**HiOEO8H8_rs$I"j JC16rrA&M`W5sf~> q>^?m!R%/6!#l%Prt,52')rLCq]Z"?0)ktQruM.?*<-'?rZ;%=!WO5>!!D7VbDq2T%KueM!<4)? !<+#>!"]&9JH16$jo>G*T_ncl"9AHCqZ$Z_=oJC&*W66A!!5Ug'&W`jruV+=(D-TY!!!Z3&0(WO !!$O/!"f/B!!!r;(An.5kXGIN(B6]$!"o5B!<4)?!"f/B!!!Z3&.\^Sr;Zm0rX/E#!_*)$r;[!i rXob@$MXT&7K*qo!!1<9r;[!Brr<'!*rZ-HruM.Ort,52)ZLTO!!+/@qZ%***WQcO&HDeDrt#\? '`A"=)ug!?!+Z$/!<4,>!!,RQJcGi"Sc&NtPJdG$q]Z"?0)kt`rX/N&$2YnH!&"9Q&,lq5!##;Q !!*$?!!"#=!YGAC!!!l9(;BkFrrA&M`W5sf~> q>^A\!VX)$R2WI4S=,eSs.#MVT:),!s-];TSsc"es-];TT)P,Ys.91W"8\kfYCi5QT`:UOs.5XH s.5XHZi6GFR=UdgR0!#lqO%BaT)4oVqksF]!lt5-rgZrL!u!s.#LF\,Vu=s8JDn kPpsWs.#LF`;cD+R0!2\rg=Q%Um[XZs.#MWSsc"Rs.#LF\,Vu's.0+V!jhlqq3_>R`VuD,R0K,! rg^=oS,&HSR`58rpR)'U\c%p"bQ!uus.94X$NH]c[/ZYaRDf,rrL!]0s8/2ns.5Xcs.#LF\,Vu' s.0+V!QY6>R0DdRR@4)HrgUGIo=k;(J,~> q>^?m+q!#&,QSd2XT4C?*X.,]!!%o5&.P31#QXmP!!!H-#QWGZrW!!!I/O$I+nYM&L]@nfYW`3o ?25!2s*OeHf!#&Q"a]&W!"DJM!.b.8!"'(dW?_K^IBr/Rli77fQ3/;Xrr<%Xi>i/\s',C$!C#B>!"&\k1]r!k!!*%HrW"g9i>r/Rli7$2kq`;V 8-!tn/-$,M!!cjF!%.\;#@A/F-N6U;HJ^7R%7gI(?PEJer^m.rSGE3n$JMR1!X;3q!!*%HrW!<* HiO/*i>i/\s',F%!=f)+!$)#d!!&&<*X.,]!!% q>^?m+rBp'(',hQ.0.o'%M-%t!!(lV"WPni!W`6A!!"#=!W_mhrW!!!*rQ'@;s*ujL]@nlPUuqG L%>BHruM.?ohYPe"iIM_!#A[f!.b.8!"'P8JJJ87Rje@;*r>pIEUGFZ)p5Mf&53K455l2Q!!3*@ qu@M_Ymq;Rdf9mW=91ALrr<&KZ4.D^rtbM4!MHXq!"&\a)[W\#!!*$?rW"h+Ymq;Rdf9Bc`ub:- *<=!\)ZUXU!"_g4!'^Ap&53K455l/p_lk!Z(0CPJ9FLnbrXo2DSGE3n)"iS&!"!!0?sJcInSpi6`K D q>^A\,.INdSsuqFTpb]!S#,c)R@3liR]Q/]R@4)HR@2+qR@4#Qrg&s.5XHrMfda"ng-4RARcNR=UdkR0pG%^n.%!je8+BT)4ocjQ<8+XS9Q!['6$g_u?1aR0!>Z r0\>qbF>@#d@%9>Y*loss-];Mb+#="s.0(U!V!MrR0ioMStko+R@4)Hrg>Y=bF>@#d@$EqeY&A6 Ssf8rT:)RlRC'2fR`#,p['6$g_u?0op!'+sVSJV,Ya_*!rg]CcfD:mC\,=+9RA&I:R@4)Hrg=,n Ssc#Ab+#="s.0+V!R(N?R2l6uR@3inS#,c)R@3`uTUN$TZ2^tp]D2DoRK&lXR/ulaJsea6r4/;j eENKkRJFgjXRuO\RJ"gsRARcfRJFgjXRuO\RJ"gsRARcfRK&kHRK&kHRE,>qRJFsoVXa\W^R=ot !/'mX!<%E~> q>^pqqrsap!!\\Tpr"`a!"Q^=ia;]k!<7EH!"Al5!&WX3j8f4-r;Zm#ipDL$(BT<:p\N-4 !!*%H!!"k6r8[h[I,Y%l["/4.!9jIi$]sEGl(B'ts*XYC$s;$Vo q>^RI'h5UO`Dr!9jIi*N8?%hhhX=ruV":%".%2m$S%X&]XJ>gLf=C!<<#q)!Cr0 YOqIi%0-Bdrr).Prr<$0]DCMhrtbM4%NG!@!!*$lfDEDu!!*$?rW"ecYOqIi%0-A4RdKt*/-#mB m/,q?!"m6CqV,T^&]XJ>gL^Ec#+=iTk+_ng`q9,^AcMfPs7lX%)l2`qlE3AP!<4,>!"/`I!!!PA qVkWW(B"46*rl*;+o`S`!"Q4)oWAW'!!\nZqV!J#MuN\@7fNGgruM.?!qR@^!!P!ep\t"&rW"]! eGR][rrN0)RI'h5UAt9>eGR][rrN0)RI'h5UAt;o*WQ3?*WQ0[rrN05^\ZkirtW9Kq>UGSo>Ue/ J,~> q>^>[-F2\-rU.[oRB,NKpsY_#RCi+ij3@UlRK&kHRE,>qRFqB8[[I/erL!_^rQBta(STXVrV50? R@4)HR@2_(rjJ5ji;3EBc[hL8RH^+GZK(cZm`(]`s.9+U%@YlBrU\4$RCDS]rTg]FR/m9crYXIZ X69EUe!lbnirB&FdJoW&XmH&S[/Z]pR/t4krg=)m`:a&_S=,fFT)P-8X69EUe!lbnUu;+Jl_'ZA i;3EBc^D90r;GrcRCDS]rTg\URAAd;rUJ4%\*a+ll`ceFbQ%C+$F/RcrU\X=R@4)Hrg=,nSsc"K m/HCZs.0+V!R(N?R3DU%R@1,=r:na1R@0l/qYf`QRH"8Hm*Yj$RK&kHR@X;JJXH\Pli$kXSGnp3 ]Cc'^c2X3"Uu;+Jn^!Vk]Cc'^c2X3"Uu;+Jn^!Vks.5XHs.5XHa8_QqYO2;S[f;o5RJHj_KCchX rI=~> q>\b@!PkL^!.b-$!/COU$7lPR!!RbC!!*%HJH5]M!X^Icq#CF8l@As6!! q>\eA!WhaUJH16$JH1H*!Z* q>\g0!h9+`JXM(WJXM:]!N)gaR0E>\R@4)HJXQP+!N)gjR/u!aJXQJ)!il%@cC"aRs-pckq>UGI o=k;(J,~> q>\eA!\*pSJH16$JH16$o)Jq$M?!YVI";:i!!,VfJH5TJ!Wth=df9O[70=$^m(NJqrrA&M`W5sf~> q>\eA!`JRkJH16$JH16$o)Jq3IK0BJ*e==`!!.NdJH5TJ!XD+$df9Ol0*!!4e%PhXrrA&M`W5sf~> q>\g0!S?XgR=UcWR=UdsR0C10R@4)HJXQ.u!RRBgRJ`HSV6l`@R0C:#RB-&-^7"fs!/'mX!<%E~> q>\hB!pfT3JH16$JH16$mJm:fI";9K!5&:8&'jqGa#(L1q>UGSo>Ue/J,~> q>\hB!r21UJH16$JH16$mJm:f*e=UGSo>Ue/J,~> q>\j1!r_\cJXM(WJXM(Wm[4+USq3;\RCnpkan>Z.essIBq>UGIo=k;(J,~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z!GJH16$JH16$JH16$WrVtq!0-Ti!<%E~> q>Z#6JXM(WJXM(WJXM(WX-re`!/'mX!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>o5JXM(WJXM(WJXM(WXI8na!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!0-Ti!<%E~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> p&>fHiSDBs4%&R_C>fs43.C$ quZs#h9Gtqbl(H6bl(G q>^Ea#_'1*?=%,jSn%V"q!nLN#nlRp"7OU`mI0TOL'[hgo(%#3@'&qmbR;9k*!H[*Nm,]I!1MN`% @I2@bfg%eR`s!\!!'k0bl7YER`s"T!!',"bQA=T!1NW*rr<4kbfg%eRek50+on-abgaiA:bquQm"`duA'bl(H6bl(Fjbdbk"FW:K%Eq7EW@LWW@b+-]OrrA&M`W5sf~> q>^EN#a3cFD/H26USms_ptl/&R]Yo5"5MJYhXB>-Z^R;[hqt]-bH0Up1CHQlO-l#S4u5!_R6K4Y% ;_GF1GbGe4u5!2R@,u-1]NjE4u5"oR0Pc/1GkDcR6L=#s-X$S1GbGe55I&:P*nF`1Xn2c&Hr1<' eqL#r;cs"!A_nUUs/d8pWWS6W6CA["Dj0cL/RRu!tkY<*1Jb[rr@]C^B"4_~> p&>84ipPOOk,<(p3WXGWr]9iS"0hh,kNr3Nm/R-Omf*N)!#,D4*rmFXrs\W\!!Q%s+WLI]!!#RA rs_R#EW?%=!(d.in,NI-p](8#!f[0ZrW!$>s8VKc!!#R`s8N'&8H8\i!(ctd"7#poqLS[srrq3, r:bsXqu6\t&Bt0Nbl:T@bl:T?bl:T?bl:T@bl:S?b`_u1dJsDK+TP%1rrN)Mqu6iT#fZRH23e+@ NUt-irI=~> q>^Ea#D.uMDI/pBK)SmRN0aHGq!nMl!!2KRncR&8!8?l3#8dFio(!%d9!%UXbRD/s!")(Z%5Z5P !!&J?bRVf,!2[o`!!&J3bcq-J_=u1R9EM<>bl.SE1sF1DrVuqep<UGSo>Ue/J,~> q>^EN#J$JKKQjQL\c/<(^;U#Fptl1KR@<"!hZL6RRG@5f#Fq4#hqsljaK4:n1CR!DR>c99Q;B@n R@-7k1Cc=/R6*2\R@-5p1MiJI2YT$-ErnBY1]EdE=>MaIrg p&G$6s2Fu[r]:'Ks&&hXq>UTh*<6(sm/I16!!;`grrW,MlhLJcrX8c]s8V#Am\9^iK)c;2s8W)* s8N'!8D*qPk5Y__s8N'!8H8_Z!!("/s8N')"9R-RScSll8G<)`!!Ppnrr<$iq>ULM!,$l_dJj7: !rW'"r>A8Ps/!s>;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(rs8TO!*B3_!!M]frrMZjqu6k74obQI"oOYc !0-Ti!<%E~> q>^Ear\"3lr\"1Qs'u(G!*T-g"P>L1!8$T."+("Mn,)YWlcJGend+[d!."/+ZBXdYo(U?:-iasu bfn1cbfg%eRb5goSH'#?bfg%eR`s!\!!'k+bl7YK#Qr#h0EM4SReFu*!!Sh8bQ%X3qTK&b$36`M bgFW8Z3'sJ!ltP(J^!W-s&/m@s&/j?s&/j?s&/m@s&+El]?CQ'#QU(4RfEZ7rQG;L!;jtD'nFNP V$W[9q>UGSo>Ue/J,~> q>^ENr_EJZr_EHes/5n!!2B;H"NI(%RG@/d!iMHVqVMA.eDBuX#Mbc9dGNj$aK+4m1CTA5H8RK7 3^5DVR@-8,1B98u1BMTbLAj"/R0Gi21MiJI2Y&[(R0]1E1c(2XR@-841]NjH4u5!_R6LI'"#ZC4 4Fo<91BA9nr%eC-!A2MOV9Js;s31L@rlkC?rlkC?s31L@WQ^P^#WS0=4u75INAUSi!?(t81Bdh2 1G]^OS2:!@!/'mX!<%E~> p&>8@lJgCKmc&$[3Wa)@3r/e@J_C)(6N@)**WQWK7fWNus8TSi&3_dAs2H)["@#WU;?-\d63UoP 5=?n5=8DmroDel%q)\QVgS%qZ$Qq,!flO&:+#Ls8VQg!6+se'krrA&M`W5sf~> q>^Ea#E5gG?>dK;K)AaQJrEk.nj#=a!!&tgnn&.-)"BNb!6Fa%N%,H)-!BeN#QP/n=lW$Q!.m34 acA2B()q#Yo((H6!6XF\!!'h*O"rs9)f"oMo(^E2_>sY-qTSs>,)nYg'njfT>oj4P&k^*dbQ%Wu 0*7Qc!!%[,"=C6b&-ttPqTK!n!&=Jsrr>!HbfmUQ,Q,aeQNY#Jq>UGSo>Ue/J,~> q>^EN#JRdAGD+)1\br0'\\=g6h^l"DR@2X`hlrQ;[bd^GRG$KT\Y>k"V81umR[KnMb06ZLRCK2` ft"#^SYO%#h[dSlRG-#]R@2ac\YlO"UVX:opbN"CR$g)51]Njd;M:Bm6SgNANL#rjC,@_&R@.07 Qp*B4IQ;G5P%=AE!g&gLr\OSB2a0#RCmg\L1RXY3Kp[Z`1GbGe4u5!_Ri7[RGKR6ED_ 7!b#_Lg;hn1RXXp1GbGe;1b-n=T(#WNgWq!1X\&\/dE6k1BJ-k1<_PNbl:Q@bl1K?bkk9?bYh?_ r_f`>P; p&>Q2P=DCF;RVcM?@t:"7QNU,rrqJ(r<<6Grr3Zi!$D7!!!((>j8]1_s616ts"j]urr4,!!!#:a ONi9Fs7cQo@/p8b!!(.@huEbds*pR=p](;%X8`:l!!'Y-s8N'C"$JpM"5s3l4^)&>!#bh:!!!'G >\X3 q>^Ea&"\\h?=%K?Mck7i=]o6;=o.[mZF0$#!)W[c'FXt4nu2Thk45bW!8R.\.e<-=!(m1\+K,8? Jat\]*ldd1!!'q-nu2Thk45MP!93Pj`q&*h!5l27priiG!!'e1bl7Ye#!X./"NJYG3(cXM!&2X@ !!!*U8"Rp)!!5@n!!Wp"!m&9.]E !!&J3aqat+8f@[qbfg%eR`rtU!!bSK! q>^ENP1D/HDM[A("GU8"Q[UAEaN\(K?$REb`g'UkH7hlE05hVY`/RG?],`8BI@REYZf+KV!! cekPTT%`)HR@2ddhlN66hVYB%RGHblg>C/CRG,%*pbN"dR@,u01]NjeQZeR\Ou+tJH?=CtR9_U) R@0FgGW[dMR?r,`R?3/RR$g591BNl17/f"BR5dAd1MiJI2D^bhR!+[]Ou+t_R6ED_R@-C-G_2>G R@-5p3L#q\G*JD!1GbGe4u5!_R?r,LR$gGC1BN2sJ:TN+1B\6i!"Uj_1B@V$b;6!=r_`jB;Gta9 ;?4r?;?G'?;Q7m(1C//lR5?]XR@-291BABor%eR,!&68c0`Wr!1\q%NKCchXrI=~> p&FkL#Y$jE?91,:3]d0<*r]IFs'#I5s8Voq!(6e!!!`K']`8$dP2>O)q#CC^rr3)5!!DZgru(D- s7lWp9)nq(!!`K']`837s763iq#CCeX8`:l!!'Y-s8N'3,QIB9!/U[NSo.q8!!E9$!!!u:s8N'* -NDZt!1!Rt!$M.3 >6"]Prr<$is8N'!-3+"P!!rT(!oa1\JcF0u!qD'erVlrq$#IfbV9Js;s31L@rlkC?rlkC?s31L@ WQ^S+$1.]ml2Ub`!)dr&rrE+XQ2^iDo>Ue/J,~> q>^EaqH4)6=^uYY=^tT;qskfr:%Iii!$(S#k5YL[njrfho(#BQ!)8g?j7;=4!3#nf"%iOumf)bp ipu[%!!'S#nk&ljo(#ER$1dZHo((lB!4fK-priiG!!'e1bl7YU7Ei7A!4L+eF&Yjl!!UTj!!"nT bl7YL:<\"a!40l`!'^8'!Wi@erlkBB31A(8YlFd@bQ%W3bd[WQ[`e^OR`rtU!1Hje"q&KQ!1M-+ !!5hf6i[8*bQ%X3bfg%e9$GLP!"JqO!gN`eJ]uQd!kCl\rQG>\!iCOmn'(f0s31L@rlkC?rlkC? s31L@J]taM$*4+,aNVg-!2[pq q>^ENqP"7nU8P>lU8O`[qqiIK_Va7@RChA6d@$ERhkHO:hqt/rRC1/khVZ\JRFhGq!hu*VrSJLJ hqubJRFpESU7%q:hkHO5hr!5Hhp7^YfX0Q21BV?ZR5Xmts-XKu1L?K;3&A\\R9ohJ s-X0g1P2$_3&?ee:AQaJR$g/;1]Nk&4u5!2R@,rhR@-u0?C@3@1RXXp1GbGe5)>VoKeo-b4u7;K Q?.,#R@#ifR@-5p1RXY/1GaoVIf;,)I[QLQ1X\&\.gR$k1BK$+0?Z/Jbl:T@bl:T?bl:T?bl:T@ bl:S?b`aghG+"aT1H(Yh4>Zs;rrE$!#r+4b!&68c0`Wr!1\q%NKCchXrI=~> p&G"Ps+C#+qu7AS(dC55!!N9#m/R-Ms(MHHs8V@0rW!-*QiHCP!0dE^!c%cLrr3o0CE4TZ!!&Dd s(_TJs8Qm8&HDE=*?mKD!19he"8Mrt?Ma^%!!bsmp](;@q_7mIs8W*!!(?ecrrZ3M )uBR9('$]#s!/?[6i[2S!!(gS!!#Ifp](;@rr<$is8N'!8G3#`/,oSL8H7?=!"PCr!!#Rirr<$f s8V'Y!WN*#h>dY/s3^iJqZ*eurrUmXp<3K4bl:T@bl:T?bl:T?bl:T@bl:S?b`i&4o)Jd+s7u]q Jc5TLnc8Uf#Q=sds8Voq\X!0pNUt-irI=~> q>^Ear`T8ep0%:`'Rhf"4:(umo('p'!86o\!%7@.^^g>D"p`QHaT)=orpg+.!%Ip<)VIq$0/!;* g@FeP!%@F/)#tfMfh`A90)u"+[.="9"2Y'=T)-\2!!ee5^An8>`!cGBs31KC!0I0'rr<@jba8A2 bKLk)1]#;s"TXJ[bTm>lO3GhN!!($_!!&;.^An8>bQ%X3bfg%eR_&P"=NgaFR`p-T!"QN_!!&J3 bQ%X,bfl7N!rgCFMZ q>^ENrhBG2p7hHArMgEtRA&Nq[$d?;hjg+Phqu5[rrneX>XIZ;]R@2jf hjg+Qhqsrl^u*G=SZ&-JRG>1,pbN"CR$g)51]NjJ4u5s%R5dU#qjII?s-WjOrA4JA#sL.mR@#cd PF58D1BNr35lNPbR$g2q1NAhN1c(Pf4u5s%R5d!jR6ED_R@-6>R@-Z'R@-5pK)1lF3&?tj4u5!_ R6ED_I[QN$1BN&oOF]481BK$+1&`s0%1105V9Js;s31L@rlkC?rlkC?s31L@WQ^P^#[j'g2D[gj R5k.$!?(t91C#W70f(U7!&C*$q>UGIo=k;(J,~> p&G"Ps4[?2!FBR@3rK!Yq)eTU+P?_p\c:"V!V-'o!&4HQ`;\#1!!#%Zbl@h8s8W'.!&FQR)FXWM s3L`IoDee"!&=NQ%KJ$Z70"P3ci=.=WrF,k!"@T]s8KG+rr<$is7cQoHg(M1[JeMR!<<'!!(d(g rrdAkrrI!bb5\9]rDNC6rDKTPNrVloh!;ld#BKuOsl37*NrrA&M`W5sf~> q>^Ear`T9ZqcNrDK)SpNnc@lVrpi7>!!)$LIK0HbQ%X3bfg%eR`lTL]Z^?U R`qH*#/pMb&#d^r!!&J3bQ%W8bfic]%K=QQ=TB.ebgFW9_>q4IbQ/MTJ^!N*rDNC6rDJ3j]$(H& #6:"4RfEZ7rQG;L!;jtD'S=QQV$W[9q>UGSo>Ue/J,~> q>^ENrhBG[qk=+t\c/?$hZ;*HrneTmR@2mgVjX(4f9r&ShqZr@af(VqeDI-kSGqCggmXYZhr!:\ RE"-^R@N0lgmXYYhqXZgd,(:\`o!\^S?q,I1EM[HGVh343Bo;UR@-5p:77M0GaXs^1P;*`1GbGe 55d;;R0c&5I$p9V1R"5'qD/2;R7R<5-^:#u1GacRJho3NR6EE%R@-#jR@-5p1RXXp1R+7b1RXXp 1N]%F2#]9A7PcigR6ED_R@-r/1Q%TMr\FV3R;d^5d5(hQ!&=I/!j'%1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> p&G"Ps*+?$s(hTpr;Qelao;<'mJm5ns2+g?s2P*>@fQ'.p]'OZ!Ls+q!"/a\XRlJmA,lT&!!#@b @/p`9s7?9k@fQ'#!*8dn!(-Zn!">k,*qhDj##88G)uop(!s8N'!8H8Gb!.4_G!(d.i!!#Riqs=@_!!#Rir_3A! <*:s^s8N'!8H8\i!!5/^!rtUcrrR`O/V3rPrsO;2s6tULqu?]j!0t_,J]t[KP5ba5!!H7F!(?bb !V-6frrq-_a7s(!PlC`Co>Ue/J,~> q>^Ear`T8[qcWrNr`T0i!DqqXnib;!!6=Y7!"/:O!!(+2g)'8L_Z0bjnh0tWni5O\!!(.3o&'KJ V=,<&)=m@P!!(.3g&M,ghuEbRmhu0DZh!k7*kMp_$:R8k1X+&C!1M-H!!'=-!!"rE&-)^SbQ%X3 rQP9A$(B),!!:Bg)?;SibQ:iG)ue&BO8o;C637.+bfg%eR`rMH!4'fK!1M-U!!&J3_S+1;!!&J3 aqk$j8OFO.bfg%eR`rtU!!GDJ!Ck#KbR8U*bdTtVbKS2D!4RO'J]s>%#''\J8-]-1 r6,2K!;jtDJe#3&*aYA\q>UGSo>Ue/J,~> q>^ENrhBG,qkF,$rhB>J!N4fRh`\E9RG-PnRAJf@R@2ac_R/4X]:#,Chk-=@hkf,GR@2achoM4R f%Z^_[bou[R@2ac_jQqGaI/IIgRO\?ZetL5*_r#hN-'H5:bsnqR6EE%R@-$NR@/;KQC4-s1RXXp rA4JA#sL.mR?fWbPF58D1BNB#AH"AGDjcu:I[HNm1GbGe4u5s%R5d!jR6ED_R@-5p3]]&QR@-5p 3L#qfFF'$t1GbGe4u5!_R@&/LR$gGC1BNc.8:`SI1BesV1F`VAr\FU#!&;VPJ]t[KOu!;iR>lBW R7R63!?(t81Be=!0Im5RS2:!@!/'mX!<%E~> p&FPCrVo8l#$V',pcSTW&=2Vj!$?4]!%@@*3[$^)09ZA8g`QYd=6VdH!%b=!.JH?KjNO !%?P_!!";+5QCmf+92ROWW+"7LFri<0ol;6!!#Rip](;@s+g[U&?c'6s8N'!8H&Sg!!u3rjT#>] s+LFlqYpZl"9R0Rru'$K%0I_srr;uu!(d.b!!%BG!!#Rirr<$ir;Zcs*_?>2qL'Xn#V9rprr<$i s8N'!5\:K6>l4R$q?[20JcF:#"_/VW$Ur;=rrL@Oao?q9\]g39"g]of'l3gHrrMZjqYp\k)?r_& PlC`Co>Ue/J,~> q>^EanQGh]6p_3+o((g!!!"D#_?0cjCB+>on'3R;3=n6Oo(&4`"%71F1&q;5f(/2H!![$@!"+Ir 1&q;6]eTQf2Wu%Z#%e,@$APqYp<4Pn=;h;L15sH$!!&J3^An8>bXV[6+-$=$bfg%eRf1J1!"#+< RK*E5bSgI;qTK&T!_ZBnRJ]uZg"[EY$%S"23bQ22cJ]r\hOj!rK)?Ldoqof)J!;anB?jm<: b+-]OrrA&M`W5sf~> q>^ENnY6!>7'!*2hqu\SR@1#/]pb@iV4!aPhnGnbW1L0Bhqtl4S?'`@Ssc"Ggu$hUR@h0]RAJBB Ssc"I\Xo4WWS*f0T=p\]V:2g/p+m^WFc_uQH9X2AR@-5p:77M01k_6aH@M?N1GbGe55d;;R0c&5 I$p9V1R"5'qD/4QR$9H,1Bh9GQBd%ur\OSB%R)[DR@-#jR@-5p1RXXpr%nA@(HsW27!Xr_Oa^=e 1RXXp1GbGe<.pWt=T1)Y7@9B!JMYh4"UtP7"rB&o1B@gpaYSLl\]g0l"Dj0dL/e%+!?(t71BS6j "<3gdq>UGIo=k;(J,~> ec,^Ge+Df&!rgg1nc&[ifAVkl!qFb:iVrtQ!'A't!n%&lJcC<$JcC<$JcF4!!0-Ti!<%E~> q>]:A!oV5jk4/TBaklRY!q47fYO^_t!k,/QiQM?d!-5s#!cA!)J]r\hJ]r\hJ]ulmq>UGSo>Ue/ J,~> q>]:.!S>l`hZDT^h=9A(gsb)_hr?Kn69sHb!fWO8_D;7FR9"kpJMVj5JMVj5gGA[*!/'mX!<%E~> JcCc1!r6VO_Z'\*Cs@P2JcC<$JcC<$e,KE-o>Ue/J,~> q>Z$:fCH`$!l@uF_TW'f q>Z$'fAFA"!_@36_D;70DDcu$JMVj5JMVj5gGA[*!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>o5JXM(WJXM(WJXM(WXI8na!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!0-Ti!<%E~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UGIo=k;(J,~> JcEXf"1S=2)YF(0!!Ppnrr<$igA_ETN\q4K+CU]sN\q4K+C+QbrrA&M`W5sf~> q>Z$:fCJUY"%*%g1A&fj!!Sh8bQ%X3g<9f??6BFW+^)_Xbl7YCRet;2`W-"?q90)^?6BFW+^)_V bl=sK`du@bbQ%YA!W^.;bQMAa#uSjhbbY=:s8N)ts7ZNls/uEcbQWb[$31(JrQGba8.Yh<>0P3" +9hla=ig3Y"C_fH;9H&cq>UGSo>Ue/J,~> q>Z$'fAH6W",rY9=S+ELR0>c11RXXpg+rt#EfQKNKOct81]NjC55R,<5ae$$q(i7BEfQKNKOct6 1]K]?1k@I61B7FR!<=nS1BS6k"<>T@V#^DmrrE#tpAk0lY5j_A"_E:PR@,o11Ccs'Pa@8(1Ga*2 Q^3G92"NL*&cr1UXY]eQ!/'mX!<%E~> JcE[g"o]kL!!D?Us8N'&8H8\i!(blE#kp@["@QHM!,DtVrrA&M`W5sf~> q>Z$:fCJXZ"j.)N!!L@8bl7YHR`rtU!1MZd#e^iN#!YNt!3c1As%EEoqof/^!!'+sbQtlp!!YYV *WWD;bl7YCRXr]6bQ.^Nqof4s%CEhj@Ecrl!<<)s!<<*!!<<)u!<<)u!<<*!!<<)'!0YP09`c:7 !6P5a&&\qX,"X4&bfhC^8MU8G;>eW=afPB`"b[>l^)g^cbk_8=NUt-irI=~> q>Z$'fAH9X"ZVj:R?08u1]NjH4u5!_R6K@]#Y^MONd#`0R6(+!s)S0$q_J=>R@-,41C-[>R>uK9 OI80'1]NjC5(PN@1B@J0q_JBf$ns16.*OKD!<<)s!<<*!!<<)u!<<)u!<<*!!<<)'!0T,AMO'Kp R5Fn!%n2ePJ9HlZ1Gb,CFGZER9`-[I0.ZoU"VD.s.g%3&1\q%NKCchXrI=~> JcE[g"mQ'i/HAcCs8N'&8H8\i!(blE"+pR]dJj.Hd?sD&"8i-!=o/.#K)c;,rr3#HR.gR[!!#Q@ s472N!/(1K#&-7#s69dcc2XWar;Zf@s8W,Cs8W)Bs8W)Bs8W,Cs8T=IP5b^Ukir-Jn,E=n\c<]F s8V3\s7QBk!f[0jr;Qfg!;ld#Bg)Lrl37*`rrA&M`W5sf~> q>Z$:fCJXZ"f22&#lp:abl7YHR`rtU!1MZd""4-`^])FXP.C&*"3(<@XSU-C-iasrrlbD+\b=8I !!&I=bgsu=!4;XI"VlR3bbYWibbY=;s8N*!s8N*!s8E#us8E#us8N*!s0)KdbQY/dV>pV q>Z$'fAH9X"`B`hQ^L&11]NjH4u5!_R6L!o!&X1$"-Aps2Z>K5>r_^;!&XC*"$i9B3r1W7OI:DQ r\FR\3;,0.R/fF%1Y+>_!&4:+"Tg521DC/>1Sk*Ls8N*!s8N*!s8E#us8E#us8N*!s0)Kd1Bg0' HC:0Xr\FV5R:Q:Q"$SLs3W:f9OdTbX1BABoq_JBW/2K'r$*H)[rr@]C^B"4_~> JcE[g"fD><[f@-As"DSI%K[25f)PaM!(d.i!!#<#&.MqCs8W"K,R"cWh>dKT!'XHg8cSHb#oJaO -Zo7c"8W'!?2=O#!"hCr#"egp!(d.ioMu88NW9&^qu6cp!WZO%rs-b!%K[25f(f.C-P?CSHQr\- ?L\!N!"Ju*"9I$PFT=Z+bUa5*&4tIQWrO4@s7?9mfn'2'rrE+Pr;R$$#E&Q]q>e(Ns/!s>s8U=C rr^LFs31KB!6k??"3gfFbl7XHb`Mi,l2UhQrr3$X!/^IM!fm=8r;Qfg!;uj%rWe>\s7u`+VuHaV o>Ue/J,~> q>Z$:fCJXZ"Z$-35l`20bS4>(#6GN1`6?F*!1M-U!!&$C#S:MFbSS8u'EStI`QZO+!/E3/REW/q "!h%74!1M-U[P.h*NW9'\qof/Z!oj4P&k^*d4TIOebdRQS`IZ85bQ.^Nr6,Dg!k-=s_>q s8N*!rrW9$rrE&u!!)or!s&B$!<3#&!0GD,V>pV q>Z$'fAH9X"cf!QN1")Q1DG"lQC*VG1c$qUR6ED_R@-p(Q],&G1D`<$P*_&<1c$qUR95?64u5ri Q@_\cME1Pi"%\fI4S^f5R1WPYQp*r4?dR;OfIR$]]dPaOioG)_fTN+t1*N1![%1L6E41k@I_1B@J0r%eR4!&68c.0)-J1Sk*O s8N*!rrW9$rrE&u!!)or!s&B$!<3#&!0Au=HC:0Xr\FVAR5jps!g/mBr%e?l!;nVX0`Wpa1FW;Z Y;?"S!/'mX!<%E~> JcE^h3W0`o>O;CkeGoQ]4^)&>!#bh:!!#Rirr<$%3*$(\63$ss!!Z=P!##2/!!!'G>\X44!!Z@G !!$1!rr_ck!5&(,rr'`!!#Ris%ECu=XO1L=o84$nGiR$q>W7`4^)&>!#bZ@!!!sFCApp- )Ho'"+oh9:!TWJG!*fC.!36(34^)&>!#bh.!!:sU`rI$/s8N$)!"];J@.O?o!4Dh+!dr& rrE+XVuHaVo>Ue/J,~> q>Z$:fCJ[[3QM@(SZ2Yk`6?Fc3(cXM!&2X@!!&J3bQ%VJ4$q91WT3(cXM!&2>b!!#&R ?HO#`.7tKY6-R%C!lq/L@EQg2!5?\$aoJlp bb5%:rr<&urrW9$rrDrr!!*#u!W`9#YQ0d/%Aj+*aiquM!!#Iq#;rX_bQXM10`XG\r6,2K!;t%G _>q q>Z$'fAHQ0RR;ar?*PR@-,51BV?ZR5Xjss-XIdH?_P.R@-5p2O0\cG*JD_3r:]8BpkAIq(jg[H?=CtR9`4%R@/8? :-"Q,IWgsD>;K0FQ8EWMR63U!R5QjSH?=CtR9_URR?BB_Lm_@r1]B0?!!<6-*]#T$!&68c0`WrQ 1SFgKrr<&urrW9$rrDrr!!*#u!W`9#YQ0b@%=4G11c$pLR@/MiPBJtc1Bh<2MOA'5r%e?l!;nVX .0)(Y1GJkaY;?"S!/'mX!<%E~> JcE^h/`Zm5k5HS*70!;_So.q8!!E9$!!#Rirr<$Fs8TG+#ljDp!1NrY!!%TM!!!u;rs8,p!1X#T !!$1!rs%un!4r419E"qks8N'!)u]g:!")9snGiQ[s6Tdd=o84'nGiR#s8Pak!<<'Tq4;J3;ud%# rr<$is8V<`!F/u9!!1OJ5lb`>"Y:qe!!iQ(q4;J3;ud%#s*+N1s$?^,JcG`L$*EXqfgmOkq>dr& rrE+Xc2XK]s8N;Is8Udr&rrE+XVuHaVo>Ue/J,~> q>Z$:fCJ[[/XHG>a3"VeL!7cVF&Yjl!!UTj!!&J3bQ%W8bfi][%Eu0Z!40nV!!'CM!!"nUbQtKS !49tK!!'+tbQb?Q!5Hb%%fQJ.bl7YC2>tc!!",1=Z2am4bc1XCXS^3GZ2am>bfgRr!<:8!^iNIL 2?3p)bQ%X3bfld]!_c9U!!1!]%03J)#mj)'!"7#p^iNIL2?3p)bT6b6bRFQNJ^",;%[b5XSeauC _>qq q>Z$'fAH@JpR@,lf1Hq4pNcpYTLbpnDJc1u< 8M`1%!WN0!!=:J:.0)(Y1GJkaY;?"S!/'mX!<%E~> JcE^h$BkGn?XGYj&-)M\qZ-Zrrr^6"V`<<*%!q_7mIs8W*!"%`Il f_PRXR/aVq/7fWn$H`>hs8+MI!<<''jo>e[!!i@Os8)a&l3%(c#E/W^q>e(Ns/!s>s8U=Crs$^I s3/^es8L7Bs8L7Bs8U=Cs00_/rr_Nd!:Tpe#8dG3s7lWp>5eI'msb<@r;Qfg!;uj%rWeA]s7u`+ VuHaVo>Ue/J,~> q>Z$:fCJ[[$75`Y9M>cn)U-,-qZ-Z?rrqofPe!qbesnd!<:7IRK*u.!"6u$bkfNjU^#&c!k-=s_>qs8N*! rrrK'rr<'!s8E#us8E#us8N*!s0)KbbQF^B!6P5a#6b*jbeX8ZWr:-D[lFEnr6,2K!;t%Gao]#q bea@oYKZhB!0-Ti!<%E~> q>Z$'fAH JcEai!W*9%!%%`[kl:^krR(ZGs8N'!8H8\i!%%[F[K$U5nGiQXs7--iJH#TL8H/VpnGiQ^s6Tdd =o/.-M#[n+s8V0\!<<'!!(d(grrUe/ J,~> q>Z$:fCJ^\!Q>-;!%%`]UAt:qb]/f'S=QQV$YAi U]CAnrW)ospAk0lY5j[."/Z%uao9Kj,lj+P_>jS?bJX>'!ce8Er6,2K!;jtD'S=QQV$XUGS o>Ue/J,~> q>Z$'fAH?Z!CN7OR3n:ZGaXs^1P;*`1GbGe4u5!_R8PgsMOArMAso&H1L$983&?tj55m>DBUP8J 1M3&C3r1WAOI:JS1GaEHR56XeR6LR*s-X3X1MN8F3&>*5R6(1#*0?S92D[.:R@,jUR@-/nK:/,` 1RORo1Ga-@N\p_k*C_h@G+!N@6@bGhR6EEOR@-/nK:/,`1H(PeNgWFh1\ig5'*U0J!\?,`'FDu> U]CAnrW)ospAk0lY5jY?"+$B'2#]9;OdSBh8su).2DkCh!ecu'r%e?l!;ePU!\?,`'FCouq>UGI o=k;(J,~> JcEai"5Nq[o)AY:1B9B&!!"KP&HDh2rr<$is8N'!!]aMn70!>frr<$irVult$:t3s9)o6$-ia6MqYrGJ56(dO?:=hos6fpf.U!Da!<<'^ !"N@ar_3A!<*:s^s8Vs!!!&Ya!!!&Fs6fpf.U!Da!<3!$e,TILZ[r/UrsnP,o)IK=-NF,##fl^K 1X,lMbdkr\rts^% q>Z$:fCJ^\",?j\b5TU4$35(K!!"rE&-)^SbQ%X3bfg%e"?\jK!,Kg%+TMj?%KIWpbQ%X3rlbYj '*&S6$31(-qTKDa('"M%9.9i@bfg%eRf1J1!",1=aq=[c8dk\"XSU-u^_QnR5"d=)!6hSG!&m4U !!(6e$ih8@M96V7&kPG3%F!&7!<<,2\c;^2_p#7`!&m4U!!*#B"EFJB!PX-/rlbkST#SsJ(J2ip Je#3&*a[(7JH34\P0=c%9KiFV92*.FWWEAp)?:Dl`WS+k3W]:Lr6,2K!;jtDJe#3&*aZ"nq>UGS o>Ue/J,~> q>Z$'fAH?Z/q'.J1c$pEQC1-WR@/;KQC4-s1RXXp1GbGeR!+(KR78thP*q/MQC2bL1RXXpr\Fg< PaR8NPaRq#qD/RQPaRVXFHMuZ1GbGe55d;;R0l,62O0\bG*JD_3r1Wi8sGa*G]](9R58ZIRUGI o=k;(J,~> JcEai!danarVn7S!"8g_!<<\7!!*'!!!#Rirr<$aAe#2Rqu?]nIj5(,:>,[I!!#Rgrs/3t#8W0s !+>X&%/c8I$Nh/4NrT+Z!(d(grr q>Z$:fCJ^\!ZM+lrQHWR!#!LG!<=4%!!(6e!!&J3bQ%X#3sH4)bKS2K;A0*E;8^W%!!&JdbQkU2 "!!4!!3Z.A%)ua#"p>c0J]u=c0J]u>.!<=4%!!(6e L)'di@*HGa'ESUmCAuE^'EAB^bR"7^rlbR:!<=4%!!*#B"2tBC*.c?4bQadc#6GfPb5TTf?jm<: b08(\!4`)mbQ)8P!"lccb`F4U$q.bPaZL4<" q>Z$'fAH?Z!g8sRrA,:LR<19=R$i8MR@,ieR@-5p1RXY1KU@^#r\FpKHBOYSAi);"R@-8;1C$[2 R"S;(R6(."$p\flR$NVM;):"rR6LR*s-X3X1G_d_R"S5&R6(."+$ah*R$NVM;):%^R$i8MR@,ie BTeaN82EYZP*hA\Vu@7!?(t71BS6j"<4I!q>UGIo=k;(J,~> JcE=]!qFb:h>[KHrr3)Z!!&e8rrV`>qr%JUn^IC3rrR q>Z$:fCJ:P!k,/Qh95l(rlbJ,!!'UObQ>5RbM^SG[]@UJbQ8O[O+GN+b^muhb_+.8rrA&M`W5sf~> q>Z$'fAGpN!CB',1B9]>1BVZcR5`2C!CB'/1BBg-q(i):R6Q6YJMVj5JMVp7q>UGIo=k;(J,~> JcCr6#0@NY<=AjES,WW. q>Z$:fCHo)#$N'=4TYU;S'2"B4obr3J]r\hJ]r\hK?X/k!0-Ti!<%E~> q>Z$'fAFP'#)IqSJ=)a JcCr6#2V0E!uth8S,WS^!>UrPs+13$s+13$s8)`qNUt-irI=~> q>Z$:fCHo)#)49)"Wh*nS'1sU!?7bab^muhb^muibk_8=NUt-irI=~> q>Z$'fAFP'#&9*aQA/^&Rkk/0R"RPP1P%?51P%?61\q%NKCchXrI=~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&M&qJUm9@bfkYUe/J,~> q>Z$:fCFL:J]s%rrW%M"nUQ27J]uupq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?rW%M"nUSj-JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&M&qJUm9@bfkYUe/J,~> q>Z$:fCFL:J]s%rrW%M"nUQ27J]uupq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?rW%M"nUSj-JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&M&qZ[i)Ud=D8so76V[s8U]pJcCZ.!0-Ti!<%E~> q>Z$:fCFL:J]s%rrW'9Ts8UJss8V\@prrd q>Z$'fAD-8JMW3?rW'9Ts8UJss8V\@prrd JcE^hrr<$irr;uu!(b]@rr<$ij8TPM!#,D4!!!$&&iGICrVmE)MD,AD16MV:qKF"a$7K'Vrs&=W 0FA+AOo>:n@j:sLG96qp-s?TM!!!$&&iGICrr;uu$:t3sn,NI-s*OfkJc>lQeP$\XrVluM9GIR+ s82s)!T!dm.L6;Aa5$^obhmsLs7_'Bs8.?Hs8RWJs7V!Cs3Q;rs7:d8bl@^qb`Vo.[PJ.(DY*l; P;ijW9]Q0Q_C>fs43*lk!0-Ti!<%E~> q>Z$:fCJ[[rr<%frlkBB!1MK_rr<%fj3.n!!$f_3!!!$'&i5%8bR_Qo*!H[*Nm,_a9+h:7-<0ug #/XO`"U[&GrQGlf6d3D?&crIg<6WPd!!*691OoAIrr!XJhHbZ5Vb$9u5Zbl.V"JGoNBJGoNFJH,ZLJGoNAJH,YrJH,Z@JG7:fs+/DXbQN&.!uc4O bRIu)"V+ALbfj*+":@B,Us/Z7!0-Ti!<%E~> q>Z$'fAH:cPF.Ja@5B^-R@';"H;OPrs-X3X1G`j8R5QjaR66$V">^l&! JcE^hrr<$irr;uu!(b]@rr<$ij8UT$!-/&=!!!sE6N@*6q#CBg2ZO"TLVs8VgP !!Q%s+WLF\-27L\s(DB:;->LVs8N'!)dYl3!%7RArr<$is8VQg!6,!(!"/RRrr^D`S,iNf"3PVR !;ZX$Wt>=2gsc2qLCi8@rlj;Ns8W+Ls8W(Ks8W(Ks8W+Ls8W%Jrr31Qs8RV"s8VhDs8UGrs8V\@ pWW[;fZ]NY#1 q>Z$:fCJ[[rr<%frlkBB!1MK_rr<%fjNK-t%fiHMbQ%W(8Ljc@5Kh9p]b(5O6U;/;bfh./$:[B$ $d?i.&HE/*5n,XLbU(")WluOb$:[B$$d?fp!'3\%!!#7,bfg%eR`s!\!!'jZV#V+NJ]n3u@s\4S bQCsWHN q>Z$'fAH.6'QC0fj1RXYTG)D]UB)XS)9pV3+FaTKO1Gb2^MKF0- Jho2WQC3\SI$RV.1DETO3\uqeMKF0-Jho3NR JcE^hrr<$irr;uu!(b]@rr<$ijSp7`!!`<"rr<$is8Ug\!(HqfK)c;2s8W)*s7cQo>5nO/iW&q1 !"7EYs8KD)rs%-ZoCr:c>5nO@iW&oX!(d.igBmpLs8N'!8H8_Z!!("Ue/J,~> q>Z$:fCJ[[rr<%frlkBB!1MK_rr<%fjNJX8!"-onbQ%X3bfl4O!-cZ2-iasubfn1cbeF,XV>e[G V9I.3!#3;obfP_@bQ`M#b.doVV>e[XV9I-`!1M-UOobW-bfg%eR`s!\!!'jZb6e6BJ^"/ q>Z$'fAH-jXR>1\ss-XTc1G`L-R7&heOI:DP1G_'V1JX@+ 4T7,D82E&`Rbgm1]@C4JH,ZLJH,ZKJH,ZKJH,ZLJH,ZKJGoKLJH,ZAJH,ZIJGfEQ JH,Y"JH,Y"JGoNJJH,ZLJH,ZLJGoNBJGfHIJGoNJJH,ZLJH,WLbl%M=bl@^rb`agg31$$s1NJnC 2#T32)?BLf!>Yh81BA9nUbhiH!/'mX!<%E~> JcE^hrr<$irr;uu6qI@Xr.60t&Q.Barr<$_dNNHQr\-?L[gk!i5l8rr;uu!(d+h#HRn6s7u`r?2OX*pAb1.QdGa3"8W#u ?2=L+JK"R_!!!b#d/F"E!!#Rhrt;C5%0->-!(d.in,NI-s8T5%)1hhfrrMZjqu6]f!;c]sj9"9; rrW"Z'AWWebhmsLs8RWHs8RWJs8IQKrr[fOs+(%IpON;DrIFqJs+(.L)h@tgJ:R\"JH,Y"JH,Y" s8RV"s8RWLs+#Y"s7q3Fs8RWLrtL"`s+#Y"s+(.LJ:R\"bl@^ebl@_Abl@^rb`i&4o)Jd-s7u]q Jc5TLnc8Fa!T+(YrrW"Z':f(&NUt-irI=~> q>Z$:fCJ[[rr<%frlkBB7%2?D``*WR'N;upbQ%Wu0*7Qa=Vh,C)*Z9g_+t^G(1>;/b#oM^"W9MJ bQ%X&3sHFQbfn(+'EStI`QZQB:D3dF@*8>i!\OI-rlkBB!1No2#aP!!"L%YPl]F!!&JebRur:'[4c$!1M-UYlFd?bfha@0S.IJbQ5'Nqof)J!;an@ QNY>+bQ>UQ,M^NB!8i>*s8RWHs8RWJs8IQKrr[fOs+(%IpON;DrIFqJs+(.L)h@tgJ:R\"JH,Y" JH,Y"s8RV"s8RWLs+#Y"s7q3Fs8RWLrtL"`s+#Y"s+(.LJ:R\"bl@^ebl@_Abl@]obj3IY[f?EE bejD\[/J2LZiKjE!K@E`bQ>UQ,G`QZrrA&M`W5sf~> q>Z$'fAHr;C6!g&gLr\OSB!'^B<#E>-j1J!n$4Spo<;43hq;EXq7 "%\fI4S^c=P#aA9R@/4r4T.)9R/fGM1D5\8E&0;*s8RWHs8RWJs8IQKrr[fOs+(%IpON;DrIFqJs+(.L)h@tgJ:R\"JH,Y" JH,Y"s8RV"s8RWLs+#Y"s7q3Fs8RWLrtL"`s+#Y"s+(.LJ:R\"bl@^ebl@_Abl@^rb`agg?^[ JcE^hrr<$'@!!"WX8/M=*9`Q)82ZP$$hZ*X/?:Yn4rr<$$ 4[B&Mi;[Bh##ZuP')VZ&!#f$"!$V4=!^-NBrr;uu!(d+h#MoF_s7$'h]DDO-@/U'0&rQ_Z!!'Y- rrr9)=o\M0r;[$7MZ<\V!(d+h'&ETjs8N'!8H8_Z!!("Ue/J,~> q>Z$:fCJ[[rr<$[r_3=l7%2?C+ohs?%KI]rbQ%VF0h7go!!"rM1CD@K('#dU)?<(IMuWi:8i$gu bQ%VI599e-`lfP+$:bR+,0S+E!%CMY!($J*!Xo'NrlkBB!1No2#DrKabd%3K^\Z.S*W5sB*K84J !!'e1bQYodSBT1tr;[$BN6KKG!1No2&rHYlbfg%eR`s!\!!'jZb]\U=ZiKmF!lYRSrlbMC!WX7XUs/Z7!0-Ti!<%E~> q>Z$'fAHW1c1A`MKY;RE&0M=R=9=DR9TMD!g]6Br\OSB!'^B<#Ci/'1MN8F2Z#921m@m+#(f/t BpkAIqD/:CQp!5^PPpmRJjM7LR@-8<1D52*O>A\\R6ED_Cmg\L1GaZOJ:TNV1BABoq_J6k!;\JP " JcE^hq#Cmqs7$'hRfDpY!.k.M!#tq;1Z&04P194(s60La>[L\8!Rfj*!0Yk*rVult!$hO9!!%iF !!&Jfnc/Z@kl:`h?X!L2dej%G#QR?ns8N'!8H/Voh>dZXnGiR$qYpWoK-^Er"Tl=+!!'Y-rs.Nb irB&UK-^Er"Tl=9!!#Rhrt=/g"98B$!(d.in,NI.s8V'Y!J1:NrrMZjqu6]f!;lctq?_!8rrV_H *Sg\obi"$Os8RWLs8IQKs8IQKs8RWLrr@THrs"#Rs+#Y"s7_'Ds8IQKs8RWLrs=5Us+#Y"s+(.L r.+hIs+(.L!eC=Nomm)Bs+(.L#CujSJ:R\"JG]?Nbl@^ebl@_Bbl@^qb`i&5m/R.Ns8N'!:&k.o !!*!#!4Mk+"8ujHnbiCgnVA3UrrA&M`W5sf~> q>Z$:fCJ[[q#Cnnbd7?MZcocV!49rM!&ac"1Q)55MQY+Dbb>(=9M@hS!Q0fq!/dr%aiqs/!(G,A !!'I7!!'@LZiC*5U&Y6g9LJj]_u%XZ!W\Mbbl7YCRf:M9M?!e'Z2am>qTK#Y=H2VcOU!8rD-s8RWLs8IQKs8IQKs8RWLrr@THrs"#Rs+#Y"s7_'Ds8IQKs8RWLrs=5Us+#Y" s+(.Lr.+hIs+(.L!eC=Nomm)Bs+(.L#CujSJ:R\"JG]?Nbl@^ebl@_Bbl@]obj*CYX8i7Abf]td V9Jl>!!*!"!5AEU"3;l;b5BHb\Oe]Tbk_8=NUt-irI=~> q>Z$'fAHFCm=FIAG9F+fsK2>]02R$g/;1]NjC55m>CJ!lBSBpkAIqD/1>GEr/q"dLu[R@,u0 1C&5j1c$pSGEr/q"dLu%R@-8<1D52*O>A\\R6ED_Cmg\L1GaKJQ@Ujl1BABoq_J6k!;ePR.KD.! 1BK'4);I%I!8rD-s8RWLs8IQKs8IQKs8RWLrr@THrs"#Rs+#Y"s7_'Ds8IQKs8RWLrs=5Us+#Y" s+(.Lr.+hIs+(.L!eC=Nomm)Bs+(.L#CujSJ:R\"JG]?Nbl@^ebl@_Bbl@^qb`aghG+"aT1H(Yh 4>Zs;rrE$!!&=F.!\XZjq_J:(#T9Eoq>UGIo=k;(J,~> JcE^hrr<$irr;uu%S6W`!!)iprr<$lrr<$err39&Jfk$n"%E";q>_J%rIQ-l!!>[brr<$fs7cQo HftG0q>^Hp!)(u@!!&D`rrNr96N7#b!!#Rhrs,S)%0-,(!+,F"#j%NU!)E=j!+,O%!Ljc"rs7_U !!#do!!#Rhrt;@4%0->C!(6edmJm7Bs8UpU"+gLPrrMZjqu6]f!;lctg'.3HrrW&tY20-Wbi"$O s8RWLs8IQKs8IQKs8RWLs87EIrs"#Rs+#Y"s7_'Ds8@KGru6Lgs+#Y"s+(.LJ:R\"JH,Y"JH,Y" s8RV"s8VnFs8W+Ls8N=Ss8RV"s8RWHrs$^Is3/^es8L7Bs4GPZrs82r!5SX2!!%TKrrMZjqYpZs Fq*.$rrW&tY+>RmNUt-irI=~> q>Z$:fCJ[[rr<%frlkBB%[tV9!!(3db5_O:bQ%X)rlbYi:_<[-##*3eq>_JEa\WQL!!Z-?bQ%X. beF,XZD%=!bKS-0!2=i:!!'P+bQ7qJMuLs#!!&JebQg-.'[4Dp!1rr/#d.e?!2IC3!1s&2!@T/h bQt@a!!&e@JXoJIAbfktF"bFntbQ5'Nqof)J!;jtAIgO9obQ>]_^"pp3 !8rD-s8RWLs8IQKs8IQKs8RWLs87EIrs"#Rs+#Y"s7_'Ds8@KGru6Lgs+#Y"s+(.LJ:R\"JH,Y" JH,Y"s8RV"s8VnFs8W+Ls8N=Ss8RV"s8RWHrs$^Is3/^es8L7Bs+/DZbQtZX!5Qgr!!'D)bQ5'N qTK&a1`=:/bQ>]_]qrsKrrA&M`W5sf~> q>Z$'fAHR/fGM1C&r.E&1%PR6:7##rG.sR@-0.R$g)51BESF r%eX97sLGi4>WCn55m>NNgXiB1RORq1Ga$=R5?]UJ!lCL1]K63)?BXj!?(t81B@pkq(i(%!&<:c rW(l,s8W+Ls8W(Ks8W(Ks8W+Ls8W"Is8N:Rs8RV"s8VhDs8W%Jr;R^ds8RV"s8RWLs+#Y"s+(.L J:R\"JH,Y"JH,ZFJH,ZLJH,WSJH,Y"JH,Y"qu6lEs8UUGIo=k;(J,~> JcE^hrr<$irr;uu%S6Wi!!&Jfnc/Z?rr<$irr3B(rVuQ8!!%''!!CmQru^A&r;HZgbl@`arr<$i s7cQoHgq(9RfDpY!.a85"5*VQ!9O(W!bD?`rr;uu7S*RZg^4$Ks8RWM%,1a]rjDe'M=giJqZ$V+ s+(.YgAh3P[K$1?8,rVdM=giJqZ$V+rr<$is8Uj]!(6edEW@9_s2kUe/J,~> q>Z$:fCJ[[rr<%frlkBB%[tVK!!'@LZiC*5bQ%X3rlbbibfmhf!!'9t!!^C@bTEe-`luZAQ2goi bQ%X3beF,XZEsT3ZcocV!48F"#/pMb!3#beN,bQ>W]]A:^1!8i>*s7_'Bs8.?Hs8RWJs7LpBs8.?Hs8RWIs8RWJs8IQHs8RWJ s7_'As8RWJs8INZs+#Y"JB\&nbfp+ebfp+eJ^!B&#g*APPg#Ts#0Hhf!OMk(bQH!M&\n.c!l=rL V9Jc8!0-Ti!<%E~> q>Z$'fAHFCm=1RXXpr\FpE1G_."R@-'WR>s-'1ET(B4>ScU?C@3A 1RXXp1JX@+3+eSH3&=d,R5f;VN\p_k!(Qf@!gK*Dr\OSB7QrUa@[NQO1Gb/]GVh343Bo;d:,Fa_ 6CF6&1Qe)M1c$pJ5;PEh5Vk2_:,Fa_6CF6&1RXXp1G`L-R7&hePaPK,1PV*s7_'Bs8.?Hs8RWJs7LpBs8.?Hs8RWIs8RWJs8IQHs8RWJ s7_'As8RWJs8INZs+#Y"JB\&nbfp+ebfp+ef?BF7#WS0=4u75INAUSi!?(t81BT?9%5R`8!\"+( V).rI!/'mX!<%E~> JcE^hrr<$irr;uu%S6X"@fQ^3/-$:Zrr<$irr4b8%7FJq!!%rV9`PK!=Y^9_jUFU`9E5'Nrr<$i s7cQoHiIRU##d&Q&c;Q%!!uV-1'maV!lk9Prr;uu7N5Z%!!"A@s8VdL!!Z2#,THdZ!!bhr2uj0D s7S8L##88G)uo.'bl@_=!!bhr2uj0Drr<$(!rr3%N!%id%s8N,j!;lcs nc8Uf!qu\[rVm(Nh#Hkq%K"u]rlhEns8U2kbfl7M#1*>Q<$D<1r;Qfg!;lctM?gckrs!r-s6tUL qjm`eNUt-irI=~> q>Z$:fCJ[[rr<%frlkBB%[tVb+TMj?%KIWpbQ%X3rld-d'Kf&D!!'IM(B>(>6QQ]\RM7kX0`V3^ bQ%X3beF,XZHFBk$:kX,+NqnD!"qjj*Y%ti!`o@@rlkBB7QO-m!!#4+bfm[0!").]%Pu>F!"M.a )up>dbe"Ac$:R8k1X)Tp_T^6?!"M.a)up>dbQ%W(8h9rB50M0oO8o;C637.+rlbE^!*b#us3(MN !;jt@ZiL$J!keTCrQGIh]$.WO(X(XYrW'!Ls8U2kJ]uro#''\J8-]-1r6,2K!;jtA6jpR'bQ`7% bdTtVbGEGYrrA&M`W5sf~> q>Z$'fAHLHB2QE\f_?R>>s2OFI$^!f37Tr\OSB"a>-IR@.[d1GV^kR>c68Q;BA0R>cB5 PaR7_1JX7(N-'H5:c!-Z2)@$\R>cB5PaR7_1RXYTG)D]UB)XRkDjcu:I[HNmr\FV>R7Mlbs"aZo !;ePQ)?B[k![@\"rA+U$0Jb0`&_o2A!3:YMs2ff8b`XadI$ot;R$gMC1BABoq_J9Z$8MH7"X5WV .L-Q]1\q%NKCchXrI=~> JcE^hrr<$irr;uu%S6X"qgTgn%o1gXrr<$irr4bC8fIm8+E[Y`qL'Xn#V9rpn4FW&"!D^crr<$i s7cQoHiNtm,6SNPg&M*KI3f%&/9(Ic"nr-$f)PdL!!EB815,T(rt"p\/dM_;NrT'75nsJ041>.g $2K?/#RE/Fs0*"4rsAX\5nsJ041>1hrW!''&2Jq:rVm;M6k'5@GQ.XBq?[20Jc?20!s8N*"98DO !s8N*"9/<$bmOCK"_/VW$Ur:ps8L6CJH,YkJBZ6"rro_`"r1qQr;Qfg!;lcs!!3$#s8N74*s;s? bae\5NUt-irI=~> q>Z$:fCJ[[rr<%frlkBB%[tVc`)76M&lHQjbQ%X3rld.$1(aQk,'D,R_,1mJ$7or9Y;-[k"X8*5 bQ%X3beF,XZHU6b'*8eD_p$?@;%s'=/8G%*"hap<`6?I)!!<<80n&uD&&D?d":?oCbfO6B$ipf# YPu`P_,qTY$8RRa3>hb>$-?R)$ipf#YKY5i!!<<80n&uD"b\?1"s\9ibQG`a!ks60%-s3!3:YMs2feBbhUDFEZ+usDYqWYZiL$J!QkE?!rpIJ5S4&- 7_Y\Bq>UGSo>Ue/J,~> q>Z$'fAHF\b!3:YMs2ff8b`O[aClk!<<;SHP)?B[k!AOTP!WOqZ%0HV8 (G_dBq>UGIo=k;(J,~> JcC<$nG`Q`!'Aj5!I&M?rrUUK+bBZEs+13$s+14MrrA&M`W5sf~> q>Z$:fCGZ[!^-O(fZX@dK&=cRD?*"Sb^muhb^munbk_8=NUt-irI=~> q>Z$'fAE;Y!fWO8fJ p&G'g"onAtq`IR;C-!s+13$s+13$s8W*! NUt-irI=~> q>^Ea#7:G6"oSB%!;Q]nnd*f*!!"c5(,V3"ncOUQ!"?.'U q>^ENr;ZrjqZ$ru!;kXZ^ndBdWi2Pkbg,)JZ^R;[Z/;93!_@36Znhc"DDcu$JMVj5JMW';q>UGI o=k;(J,~> p&>3lrV5XWr:'^lli7$Qs86I/4O3s.B)iTrs+13$s+13$s+13$s8DrtNUt-irI=~> q>^Ea#64c)$MF/t!r2rpnd*>;!8I)1,lhu2ncBX..C&Gpb^muhb^muhb^n!gbk_8=NUt-irI=~> q>^ENrW!'/s8N<(q$$WP#dg"fgu$bTREj+8!h>[rZ/:*gJMVj5JMVj5JMYh4q>UGIo=k;(J,~> o`#-js8Dusp\=R_qYplI!!;fms5O(]nFZ_^rn6Dnrs&DQli%:m14fIVs+13$s+13$s+14KrrA&M `W5sf~> q>^Ea#6Y#/!;uis"8Mrnnd0O@"Ru!QYlFsro^W(Ob3%aT#4'CrmfNQ8Z1UGSo>Ue/J,~> q>^ENrr<-'$31&"!;bRSVjX+ThZBmIT(Ch@gXG$>hZhfahV=Qfd]q\\1P%?51P%?51P%@41\q%N KCchXrI=~> p&>9ll2Bi>qrR_GrrSVh%0$8hli7$ss87[%3#IJOq)\QV4#d3BT`=n@0/$RE"r3\\49epfs4BP( -kf\Xs7fIl!(K9YAFoj%AcK@J7tL\ks+13$s+13$s+11MNUt-irI=~> q>^Ea#6bG7"TSK-"8MuoncC3>)?01hb5_P&o'0m0/gI@djtm& q>^EN"oo#;"7#4Qp]LBM!hYmhrnfiBR@2mgfYhK_O6hGhkm6`[GQNkJMVj5JMVj5JMYh4q>UGIo=k;(J,~> o)Ajdqu6Wqq>C*h!]0m"rr5(8!!(^N;uh.=!!D9]huEa`rW*!Xs8V!W!,_`@!"SSH!!WE&J"6Q6 !!$F,s53kW5lZqjhuEc#nkdJ[s+13$s+13$s+13$rrN.Zo>Ue/J,~> q>^Ea#Q48ms8Dlqo(i=^ncB4"9)eBCScAcTm32PEkPthRnu;ZiU@/*_MXp>:!!'4n!WX80HiOKD nfGgAiW&tro(&^Z!.j\ukG\F]kL)BM[.8dlJ]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>^EN#P.oplMpnHs7uWihZB77c2QT^WgT:3g7=Ybe!ZlchlE05e_?L[e)0&aR@2[`R@1J?VjX=; hk&QZc'b!RhqtN'REscdhQ3-5hTN.Z[,6EjJMVj5JMVj5JMYh4q>UGIo=k;(J,~> p&>9mr;QTmnb)_Lrr`)t!(?hd0sgoes3^lNrV-?mMuUHj"oJ)q!(?ke]Dr07q#CC\s1/18s8VZi s7lWp9)nq(!!DZgrrp%8#2:2hJcC<$JcC<$JcC<$JcGcM!0-Ti!<%E~> q>^Ea#64Jus8;Qiq#:0]"6TXaWW)HC5l_PgKE)AMirB)2nk/rhn`BfOX7GgR!"8AZ!!&\_70!hg o&B62jT#:ko(#BQ#O_T^"\Jb'Ws@@bnq$gls+13$s+13$s3:QDNUt-irI=~> q>^EN#5eH#m/R+Qq#C6K"4 p&>9as7bXTp#Z5LrVQTsm/R-Nrr4Z-!&4Fq!!PSM',.,?C]G1Lm/R-Ls8Qj7'`[M"!1 q>^Ea"p+r.#ljo2p]:9_2p21$g@Fh)$NP8=)up=.3"ck[nehEWo#^q4g%+\O!%RQ]!!(aD(]Z#U fh`A90)u"+o(!Xu.K/f@)#smL!)0`iJ]r\hJ]r\hJ]r\he]djh!0-Ti!<%E~> q>^EN#64u/!9WYK!Vl`mh`%s2RG?]WhO9k[hjg+0Whl>[gu"Wi`8@qiRG?]WS=.=Q[$d?;hjg+P hp/ p&>9qs7lKkq>^0arql^ScN"%;s8UpU#20#>!%\*LrSISR%KJ9acN"%:s8EK.1B5W"!qZC#!&=LB !$_Hi!!;clrXJo`rr36&%KJ'B!!/14s+13$s+13$s+13$rrN.Zo>Ue/J,~> q>^Ea#64f-"7lEl$i'f"ni(mq"7PgOUAt_endYY5o()5!o'cb^H1H7]"7PgM"9<`n+,rN!."S7#OhirCpsBFbd?qlb^muhb^muhb^n!gbk_8=NUt-irI=~> q>^EN"pk80"98B%p]13K!iMHVrnfH8RA\p!S!hX\hqHiBgmXYZhkum4hr!4XRF9ujR@N0iR[MR[ S=.CSVjX(4hqXZgdf/,/gmXYU\!`]>[,6EjJMVj5JMVj5JMYh4q>UGIo=k;(J,~> p&>6ns8Duqs8D`lqu8UH!"Ao-fH( q>^Ea"p+l,!WW-"p]13^2_"eEo('$k'$^"<0`Y)AnPkeEg&M,pngXVVo((K7!6Od]!#b@]!!(.! !!&ka)?:ZGo%F'Dao:i:g&M,qnfn,Vn[7q=b^muhb^muhb^n!gbk_8=NUt-irI=~> q>^EN"TS]+"8i,m!;kY4Ssd%EhnkhZgY^n\REFFDUXe8>R@2acSsd"DhntkMg#&Bh[bnriRG#ZL RF^,_RC;#1_jQqGrndsuR@2ddSXHmmhgmS71Q+&?bdkrK1QsWjrr@]C^B"4_~> p&>6ns8Duqs8D`lrVm3"58XA(5;t$/hu?KjNO!%k2f!!R1#!!"G8 5QCmf+92ROkrSkF.#\,i3rf72s&B%!.tR_Os+13bs+/D)b^oePrrA&M`W5sf~> q>^Ea"p+l,!WW-"p]19`$0F>S!"(hA148?cni5Sr#s(S>o"[!\!'sTh!"+Ir1&q;@<<`F1Y;-(X 39hC^#%e,@$AQ>O!!"t/o"[!\!']s)!!#-hnq##9b^muhb^muhbgjr5rrA&M`W5sf~> q>^EN"TS]+"8i,m!<(d]d&NP&V5g>l_qtCM37+RmX0'Y(\=T+V[]Z'eV:2rGR@1OeR[L"eSsc"I fpnJ&]pb@ce$u!;RAo!!\=T+VZJV7ARBO$UJMVj5M_fq.\]fU\P;E%7!/'mX!<%E~> [/U4,fAV;\JcC<$WW.On\]fX)MuNd:o>Ue/J,~> q>\+u!q47fTCRQWJ]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>\+b!o28\TAP2UJMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE^hrr<$irr;uu!_E@kqZ$[Ns8W#t!s0EWqYgEr\,ZLIrr3Pl!!/#Xs6KgfEW=ol(B=I(JcCi3 "4^'[!5ec3bl(H6bl(G q>Z$:fCJ[[rr<%frlkBB!h.?WqZ$\*bfp"c!s9T[bPfWe6N@*ArlbqB!!/t@bbbC@QHY+B$31(J J]s5""*-1(!.iAUbl(H6bl(Fjbdbk"FW:K%Eq7EW@LWW@b+-]OrrA&M`W5sf~> q>Z$'fAH JcE^hrr<$irr;uu"\A[n!!!u;?OD5]rr<$(mJ]]X*rl8X!?M4@ mt(M#rr^D`S,gG+V9Js;s31L@rlkC?rlkC?s31L@WQ^P*#1 q>Z$:fCJ[[rr<%frlkBB"e*ZZ!!#(Z9F?X#bQ%W(9KN7T?N/.Pap7tI"NUMc%mBt+aiP+p43YoC !ZV1?aaqZtbQCsWHN8W@k03j's31L@rlkC?rlkC?s31L@J]t^L#'BnM7gB$3r6,2`XS^3FKFP<& *atS_q>UGSo>Ue/J,~> q>Z$'fAHQqm%ucp'1cgni?8FBp QB[f*1k@HE1BS=1&cfd)V9Js;s31L@rlkC?rlkC?s31L@WQ^M]#'u\tGF4dgr%e@,/,M++&I^?D ""9Zqq>UGIo=k;(J,~> JcE^hrr<$irr;uu"\A[n!!#Res8N'&8H8_$!!`H&"mQ'i/HAcLrt"rS!&D4f"jd5Kn`]6Ue/J,~> q>Z$:fCJ[[rr<%frlkBB"e*ZZ!!&Jbbl7YHR`ruT!"/_L"f22&#lp:jbR_Ss!+&q2#fFm1Y/7%9 !6Kf9Nm%O2!.iAVbl:T@bl:T?bl:T?bl:T@bl:Rlbe)()ap8!2baSS:ao0EaZiL!I"VlR3bbYW9 bk_8=NUt-irI=~> q>Z$'fAH1\s"`B`hQ^L&:1ClsAR8/I(MD[1G6o94X R5BINN\^\S!5^Ogbl:T@bl:T?bl:T?bl:T@bl:S?b`agg31$$s1NJnC2#T32)?BXj"Tg521DC.c 1\q%NKCchXrI=~> JcE^hrr<$irr;uu"\A[n!!#Res8N'&8H8_I!!3*!"fD><[f@-@rrq6Z!=/[3r;Qla!!)J=s,R*[ nc6Q,V9Js;!6kF?!6k=<"3aY@bl1M>b`i&4o)Jd-s7u]qJc5TLnc8Uf#Q=scs8Voq\X!0pNUt-i rI=~> q>Z$:fCJ[[rr<%frlkBB"e*ZZ!!&Jbbl7YHR`s!9!! q>Z$'fAHb`agg?^[ JcE^hrr<$ q>Z$:fCJ[[rr<$[r_3=l"e*ZZ!!#(Z9GG(^bQ%X3be,/#(!OnC"TY*n!!:+;bQB q>Z$'fAH JcE^hq#CIes8Vrr!c%c8qZ%!+NW9%>!!;<^,61.2rrrC$!!!Gur;Qla!!)J=s,R*[nc6Q,V9Js; s31L@rlkC?rlkC?s31L@WQ^S+$1.]ml2Ub`!)dr&rrE+XQ2^iDo>Ue/J,~> q>Z$:fCJ[[q#CJbbfoqa!jBhlqZ%!,TZkWH!!C9a#69JWbQZ-(!!!bVr6,8?!!(,lb`9mJZiG[$ k03j's31L@rlkC?rlkC?s31L@J]taM$*4+,aNVg-!2[pq q>Z$'fAHSd:R?BBdR$g8>1Bfb&R@/:Vr%eG$R@,m_1QF6l)?@W1 V9Js;s31L@rlkC?rlkC?s31L@WQ^P^$$M`)1c%%XR63;)!WN0!!=:J:.0)(Y1GJkaSMU*A!/'mX !<%E~> JcE^hrr<$irr;uu"\A[n!!#Res8N'%)dd'%bl7VIP5kbn?Sqforr3/A!!FAD3W/mZl2UhQJcCc1 !V-6-s/!s>;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(rs82r!5SX2!!%TKrrMZjr;R$$#E/W^q>e'krrA&M `W5sf~> q>Z$:fCJ[[rr<%frlkBB"e*ZZ!!&Jbbl7YG3_W@d[f4JU-3+pV< J]s.u!OMiXbi[.L;ZFu@;Z=o?;Z=o?;ZFu@;M!'(bQtZX!5Qgr!!'D)bQ5'Nr6,Dg!k-=s_>q<@ bk_8=NUt-irI=~> q>Z$'fAHmT%9)LIIHC:0X JMW JcE^hrr<$irr;uu"\A[n!!#Res8N'!8GiDfq[<9$$3@j?oF1duf`2)QrVlub!!)J=s,R*[nc6Q, Us/d8pWWS6W6CJ*#lZ.N=T@L`"RQ*e!V-6frs!.$s8V?fr0@9^NUt-irI=~> q>Z$:fCJ[[rr<%frlkBB"e*ZZ!!&Jbbl7YCRet;0`<,o:$3@oc[fQPYIfKPYrQGA@!!(,lb`9mJ ZiG[$jim[$pWWS6J]t^L#g*APPg#Ts#0Hhf!OMk(bQS]4bflmiSBUg/!0-Ti!<%E~> q>Z$'fAH JcE^hrr<$irr;uu"\A[n!!!u;?NkNUt-irI=~> q>Z$:fCJ[[rr<%frlkBB"e*ZZ!!#(Z9EetNbQ%X3qof.t!!^UFbS:HbEQ]L*,L"@Z!$BD.N(cD8 !)$#$J]s5"!OMiXb^murbQ`(f#"St!C])BWZiL!I"bI5l^)gUNbk_8=NUt-irI=~> q>Z$'fAHs*[1GkDc6o:'pCbmo1R;ar JcE^hrr<$irr;uu!_E@kqZ$d8s8N'!8GiDgHN4o]rslL<$e54YYQ+Xr'EC`)cMISAS:U^'rrppT !rrE*`;bD4\]g39"g]of'l3gHrrMZjqYp\k)?r_&PlC`Co>Ue/J,~> q>Z$:fCJ[[rr<%frlkBB!h.?WqZ$dHbfg%eRet;1)ZVMhbRQi;&pXHZ\]i:1"9 q>Z$'fAHUGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE^hrVuqHrr3'k!!#ROs8N'!8:gemrr^eF'`e44"nlF="tZh!s.mm;;YSE6;Q.g%rrfbd#8V4J rrf,;#>+QPrrA&M`W5sf~> q>Z$:fCJ[[rVur"rlbHS!!&JLbl7YCRXr\7bQDlA#lsqJ"hHf&"u3*.bjWdS;YSE6;M!'%bQN&. !uc4NbQMAa#uSj8bk_8=NUt-irI=~> q>Z$'fAHUGIo=k;(J,~> JcE^hrW!$>s8VKc!!#ROs8N'!8:gemrr^D`S,iNf#&Y[HrMKknc2XWas&/m@s&/j?s&/j?s&/m@ s&,i?P5ba7!!H4D!(Zte!WCXIrrq0``VUe/J,~> q>Z$:fCJ[[rW!$Wbfm*d!!&JLbl7YCRXr\7bQCsWHN=#g"rp.M`a]@uJ^!Z.s&/m@s&/j?s&/j? s&/m@s&+El]$(A$!!Ypu!,h_Y!QhG?bQWY/[([SiSBUg/!0-Ti!<%E~> q>Z$'fAH JcE^hrr<<-!nI=B!WW3kjo>>\!(_\@Jc>fOnc8Xg"poGPs7cT.c2XWas&/m@s&/j?s&/j?s&/m@ s&,i?PQ(pf-NI6Jjo>POrVloh!;ld#Bg)Lrl37*NrrA&M`W5sf~> q>Z$:fCJ[[rr<<1"2rD;!WW4hjim`)!1JJ_J]n2>ZiL'K"p2*SbeO4oJ^!Z.s&/m@s&/j?s&/j? s&/m@s&+El]?CQ'#QU(4RfEZ7rQG;L!;jtD'nFNPV$W[9q>UGSo>Ue/J,~> q>Z$'fAH51F<)Wbql3?s&/m@s&/j? s&/j?s&/m@s&,i?P;UGIo=k;(J,~> JcE^hrr>JA!'U/e(B=G+s8W"K,R"cWh>dKT!'XHg8cJbj5\:N9?2Xa&!!#;u%1mgbs7q!d"VY53 s8Duu:&jkd!0dDB-jBek6%T'-rrMZjrVm(E,j,'+#PZLCV9Js;!6kF?!6k=<"3aY@bl1M>b`i&4 o)Jd-s7u]qJc5TLnc8Uf#Q=scs8Voq\X!0pNUt-irI=~> q>Z$:fCJ[[rr=3Z!-uH`.f]R q>Z$'fAHa_!D1G_:@P*_&<1c$qUR95?64u8Up<.pTs=T1,VR3#7ZQ\\!b1IQPP Q\\p(1HLql4>U*-R5d0LOI2>kEe-$<1BABorA+TZ*AT;X%*UN(bl:Q@bl1K?bkk9?bYh?_r_f`> P; JcE^hrr>JW0+-/.B`J-(s8Q[2##ZuP')V\/!!4ENC&\/5!]X3^!($Yb!!!*a5l_#Fr_3A2=uQF) s8Duu:B0te!0c:?!%qSK(P2UXrrMZjrVm&sdr&rrE+XQ2^iDo>Ue/J,~> q>Z$:fCJ[[rr>KS$4q1WU&Y1^bf_11$:bR+,0S11!!=rGT$.07"?SaI!,Tm'!!!3f*WQ>_aqat+ 8f@[qbfKhbWQ_pR!4Rme!&mM+$A$EmbQ5'NrQGG\,67fXZ@U6hbl1KBbYh?_qbdFq q>Z$'fAHWCnR!4.LR78tgR@0CbPF7Rj3L#q\ G*JD!1HLql4#:!,R5fS^RE\1BABorA+U,"98E00[)>Lbl1KBbYh?_qbdF JcE^hrr!!->3>6"]P rVupps7H?lPMZ??P194(JcD>A!V-6hrrokMg%gpYbl=N`s&/m@s&/j?s&/j?s&/m@s&,i?PQ(sV !!)9`rr<$ns8<$"!<*''[f?1([Jp1,!/m-B!0-Ti!<%E~> q>Z$:fCJ[[rrbfi][%F!#r!(G,A!!'I%!!5hf 6i[8*aT)=@bdmcS[u14dMQY+DJ]s_0!OMk*bQV60]>@H0J^!W-s&/m@s&/j?s&/j?s&/m@s&+El ]?CS_!!(*ab5_O=bl%SC!<*$+^UGSo>Ue/J,~> q>Z$'fAHs&/m@s&/j?s&/j?s&/m@s&,i? P;UGIo=k;(J,~> JcE^hrr^Hp!)*=l!(?ecrr_+prVupo s7H?lPPp(U!!!*ipjrI;rrMZjrr36%$^(JhquEkDs/!s>;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(rs82r !5SX2!!%TKrrMZjr;R$$#E/W^q>e'krrA&M`W5sf~> q>Z$:fCJ[[rr(;bKS-0!2@[;!0I0'rr_,; aT)=@bdmcS\&hGY!!!3sbCRm0bQ5'NrlbVh!k6Ct`W3]'bjipW;ZFu@;Z=o?;Z=o?;ZFu@;M!'( bQtZX!5Qgr!!'D)bQ5'Nr6,Dg!k-=s_>q<@bk_8=NUt-irI=~> q>Z$'fAHUGIo=k;(J,~> JcE^hrrrr<$is7$'hRfDpY!.b(L!(d(grr<]Ys8TM-#ljo)!(d.b!!%B0!!CmQrt=Gn rrW6es4mYTPPkCZp!!I:Ee47_rrMZjrr36$!0dH_quDr*s.mm;;YSE6;Q.g'rs8TN!*K9`!!MZe rrMZjqu6k65QCcK"oOYc!0-Ti!<%E~> q>Z$:fCJ[[rrr!0k]s !!^RDbQ5'Nqof3XK$;H8$(T68rrA&M`W5sf~> q>Z$'fAHs-' 1D3/52OKmt1O>IW3'8uQ4C4GD3IruY1BABor\Fd1!&68c/-%EL1Si7n;YSE6;Q.g'1C,t,R6EEI R>j'%1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> JcE^hrrtb4uMh1o#rrMZjrVm(4*T-dc"n9e:J]t[KP5ba5!!H7F!(?bb!V-6frrq-_ a7s(!PlC`Co>Ue/J,~> q>Z$:fCJ[[rr(> 6QQ]\bS:*b70ESj\!e!n9JHMI[XlYpbQ5'NrQGH_3l&a;$-IhCJ]sG(#''\J8-]-1r6,2K!;jtD Je#3&*aYA\q>UGSo>Ue/J,~> q>Z$'fAH2QE\fM>R6LR*s-Y=&G(Q*L7PcigR6EE%R@-#pPaR>L HB JcE^hrr<$ir;Zcs%S6X"qgTgn%o1gXrr<$irVult-p_MV$XET/rr<$is7cQoHiNqj,m=Q*E<#t+ 4p2sm!!&5P8fIm8+EW27T`5JO!s8N*"98Do>n7&dUWiahbdkr[rro_`"r1qQr;Qfg!;c]uTGe#) ns'.SNUt-irI=~> q>Z$:fCJ[[rr<%fr650@%[tVc`)76M&lHQjbQ%X3rQP9A.#pCo%q<`+bQ%X3beF,XZHU-^'ESUm CUGSo>Ue/J,~> q>Z$'fAH JcD\Krr<$iJcC<$JcC<$JcC<$p\t5Qo>Ue/J,~> q>Z$:fCIY>rr<%fJ]r\hJ]r\hJ]r\hs31<=!0-Ti!<%E~> q>Z$'fAG: JcD\Krr<$iJcC<$JcC<$JcC<$p\t5Qo>Ue/J,~> q>Z$:fCIY>rr<%fJ]r\hJ]r\hJ]r\hs31<=!0-Ti!<%E~> q>Z$'fAG: JcD\Krr<$iJcC<$JcC<$JcC<$p\t5Qo>Ue/J,~> q>Z$:fCIY>rr<%fJ]r\hJ]r\hJ]r\hs31<=!0-Ti!<%E~> q>Z$'fAG: JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>o5JXM(WJXM(WJXM(WXI8na!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!0-Ti!<%E~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE^hrr<6os8VQg!5/+-!&+6Lrr<*ks8W&u!.FkH"%WCl8H/VpqMHs6#r7YCs8E!#!=(*5p\t?* !!!r's8N'!8EKjRqu?_"l2Ub`!(_\@p&>-E9GIR*rrhae$4U(\s.mm;;YSE6;Q.g%rrfbd#8V4J rrf,;#>+QPrrA&M`W5sf~> q>Z$:fCJ[[rr<7lbfm"!+>]Jrr<+hbfp%d!3H1D!tG;2Rf:M:_HIo_$8[^dbl.SE!=:<9 pWN_,!!"e?bl7YCRcV`q`W-"?l-0/-!1JJ_oumMY1C4'ZbQOmt"VP9qbjWdS;YSE6;M!'%bQN&. !uc4NbQMAa#uSj8bk_8=NUt-irI=~> q>Z$'fAHD6ZeBVOEj#G1]EdER$)h` pG2o1R@.1C1]NjC534R&5ae$$kqi@-!'YrioeQ[e$NU8*1B\m-!=('t1Si7n;YSE6;Q.g%1B_NU QA/<.1BS6k"<UGIo=k;(J,~> JcE^hrr<6os8VQg!5SS@rr<-??XJ6Ys8N'#8H8_h!!=2?s6]dc'M/9(pGW'U9NE;Us8N'!)dbl2 !P8+,"o]kL!!D?Ls8N'!8EKjRqu?_"l2Ub`!(_\@p&>-:EL[%-rrr3DMYHY>bl=N`s&/m@s&/j? s&/j?s&/m@s&,i?P5ba7!!H4D!(Zte!WCXIrrq0``VUe/J,~> q>Z$:fCJ[[rr<7lbfm(%bc:XB'Um7i]b(5O6U;/;bfg%e 3_UUq!l+QT"j.)N!!L@/bl7YCRcV`q`W-"?l-0/-!1JJ_oumM?@s\4SbQYfiMorJZJ^!W-s&/m@ s&/j?s&/j?s&/m@s&+El]$(A$!!Ypu!,h_Y!QhG?bQWY/[([SiSBUg/!0-Ti!<%E~> q>Z$'fAH(bVQ*>s&/m@ s&/j?s&/j?s&/m@s&,i?Ou!;gR>uKYR7I02!A>u#1Be@!0Im5RS2:!@!/'mX!<%E~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o+\;Y5!!!-'ec23B!!#Ris+::ZfDkmM[/^.+!(d.c!!#sn rrqZf""aLPm/R(c!(c5O"8i-!=m>td!!#RXrrUN/lA>NAnc8Xg!PC),s/!s>;ZFu@;Z=o?;Z=o? ;ZFu@;Q7m(rs8TO!*B3_!!M]frrMZjqu6k74obQI"oOYc!0-Ti!<%E~> q>Z$:fCJ[[rr<7lbfms!0bWr!!^RDbQ5'Nqof3YJBZ66$(T68rrA&M`W5sf~> q>Z$'fAHj'%1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o&kN'&!!"\Q4o,R'!!#Riq>gS%qZ$Qq"\A[h!!&5Yrro;# )7KS[rr;uu4$I*^&:+dKT!'Xj#&:+c/s8Th6"A5QeN;iqL!<)ou8X.b`i&4o)Jd-s7u]qJc5TLnc8Uf#Q=scs8Voq\X!0pNUt-irI=~> q>Z$:fCJ[[rr<7lbfmsY-qTSs>"e*ZO!!'M( bQTd&00oR`rlkBB4,>j#'njfT>oj4P&k^*dbQ%X3b[^\]XN\[`'EStI`QZO+!/NT='njfT[P.h* NW9'\bfj?6#6GN1`;7\&``a2\%6D_W!!&J3aT)= q>Z$'fAH"[4_8R@-&1 1Bif,=H&YUr\OSB4'%'&LdNsSG)_fTN+t1*1RXXp1OPUF3\s$GP*_&<1c$qUR9#$/LdNsS:5G3f 9UV;01Ga36QC*VG2#9!P5';sSODZj1R@-5p3glBu1K^'53&l)CR$NVM1GaoVODIFF1BABorA+HU 0uu/Ibl:Q@bl1K?bkk9?bYh?_r_f`>P; JcE^hrr<6os8VQg!6+s;rr<$iq#C?o&kN'&!!#JA$I\uh!!#RinGiR$qZ$Qq"<1]8!#tb68,X5( >O;CkeGoOK!!,5K!!D0Z]KKG&.KC@drr<$iWrNL>s8Q[2##ZuP')V\/!!,5K!!D0Z9E5?$-NF-L s8T_p>$EHV)>a@PB)i!%=sa4K!!#RirVupns7H?lPMZ??/m_'brr32VJh$g-?b;?u!V-6hrrie0 .0_E6bl=N`r_`jB;Gta9;?4r?;?G'?;Q7m(rs7ul!9sO`!!#alrrMZjr;Qip!4Dh+! q>Z$:fCJ[[rr<7lbfmm&9.]E!!&J3Z2am>qTSs>"?K4"!&aSr 8&ti6SZ2Yk`6?F*!!5A+!!Lq q>Z$'fAHGR@-5pBpkAIqD8/>"F"pMR:Q+L 7m*0,4`$OP1c$qUR@&/]R?BB_KR.`bQC2#71RXXpI[P^F1Gk8_MKY;RE&0;?2HE)1m48iG'o$#1RXXp1HLql4#:!,R5fS^RLbl1KBbYh?_qbdF JcE^hrr<6os8VQg!65$ q>Z$:fCJ[[rr<7lbfmqTSd9!,DAS8!a2X a3"VeL!7a@!(G,A!!'IO^iNIL2?3p)bQ%W$!$&btbd7?MZcocV!49rM!(G,A!!'I5!!'FNWW3%# bfmkD<)#7N"oHL`ZN'usbfn2QbQ%X3bfKhbWm&$S!4Rjd!/dr%ao'?dbF)68!,R_?!OMk*bQ\+q ]#Ib\b(7e,bl:T@bl:T?bl:T?bl:T@bl:Rlbe)(*X8i7Abf]tdV9Jl>!!*!"$,4X#!5?\$aoJl@ bk_8=NUt-irI=~> q>Z$'fAHs&/m@s&/j?s&/j?s&/m@s&,i?P;UGIo=k;(J,~> JcE^h#SmD-s8VKe!8RSRrr<$iq#C?o&kN'&!!#R`!!"PL!!#Riq#LJ%qZ$Qq"\A[hOoP[^rtCRr "^bUo!"],0!!#Ifp](;@q_7mIs8W#t!(6bc*U!J'q>^Hp!)*=l!(Hq_!!%B0!!)ipqZ$V!s8+MI !;lcuk5YMTr;Zcs&kN'%!!#gpo`+uUrIQ-l!!>[brVm&uZ!%G8>`\mcnc8Xg"uTuls82kcc2XWa s&/m@s&/j?s&/j?s&/m@s&,i?PQ(p[!!'h7q>^MHrVloh!;uj%rWeA]s7u`+Q2^iDo>Ue/J,~> q>Z$:fCJ[[#R(3hbfm3i!65#^rr<%fprra<&t7%g!!&J"!!$-F!!&J3_>sY.qTSs>"e*ZP70!Vi bS)<'#Y[o!!#j)*!!&;.^An8>`!cGBs31EA!,he[*MNN6bKS-0!2@[;!0tdC!!' besnd!;jtBScAc5r650@&t7%d!!'%C\c;`>a\WQL!!Z-?rQGG^Il[W5I?2SQZiL'K"q%BSbf0Xn J^!Z.s&/m@s&/j?s&/j?s&/m@s&+El]?CPi!!'gY_Z0\DrQG;L!;t%Gao]#qbea@oS]pp0!0-Ti !<%E~> q>Z$'fAHR@-Z'R@-5p8=5f-qD8/>"[4_)N1#Lu 1D>k+(d<3dR$YR?D+Y1BfsMKU@ujO#$eT!<"\X!A?5b/-%EL 1Sr=q;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(1C.BVR5QijR@-&51BABor%eR4!&68c.0),o1\q%NKCchX rI=~> JcE^h#BBefs8U4A#Q=]&!!#Rbs8N'B8H8\i!(d-/!NZ5#!(d.iJH-,4s8W)+s8N'!8H8_@!!<&t !W*9%!'gRurr<$is7cQoHg(M1[JeMR!<<'!!&,#d?N:&q!!&Jfnc/Z?rr<$is7cQoHgq(9T`=E[ !*T?d!!'G*dJs:Es!I79!.Y%Krr;uu!(d.i!rtXeh#IG=r;HZgbl@`as89B7%KS&6iK!p=nc8Xg #+K3(s82kdc2XT`rDNC6rDKTPNrVloh!;ld#BKuOsl37*NrrA&M`W5sf~> q>Z$:fCJ[[#8[A+bfjVu$iS-;!'gS"bQ%X3beF,XZD.C"XNY_c!6iXe!,;W;G0J1;!!'@LZiC*5bQ%X3beF,XZEaH1 [`kfQ!3FD>!!'+EErZ4;bU0[s!2.Q[aiqs/!1M-T!UGSo>Ue/ J,~> q>Z$'fAHVVXR56XeR;/+V8i&88R@-#j>FCm=1RXXp1JX@+3,+eK 3&>*5R6!-KR@-/nK://)1F?_%R638]3AWIZR6EDbR$g2qHC:0\4>ScU?C@3A1H\uoR$`.u23'Hn )?B^l"p?S81FrM\bql0>rDNC6rDKTUGIo=k;( J,~> JcE^h#N>^a3*?Of8H&Sg!!#Rbs8N'B8H8\i!(d.em/R(c!(d.ip+uaR:08b\s8N'!)dcb\!#kb7 "5Nq[o)AYT1B9B6!!#Rip](;@mf3>;=qL`7s8N'!8E1*Z@/p7:!!Z@Q!"o,.!!#Rip](;@s%<=t =ss@N=o[pj!%M.a!!)lq,%prX7Tq5?rr<$is8QU0#$;H;!0cLR6sWId!/plf!#BS!MuNhK!<)p% knMbJSdG2:s+/D)b`_u1ci=2J+ok%/rrMZjqu6iS#fl^K1R.n>NUt-irI=~> q>Z$:fCJ[[#ESod4$iuKE;e#\!!&J_bl7YdR`rtU!1M-K^!+\#!1M-U]+4lK77%J?bfg%e3_VmC !&FGq",?j\b5TUN$35(i!!&J3^An8>XoJG\64a+sbfg%eRZddRGKe5R!")7,!$KJ/!!&J3^An8> aq=[c8dk\"XN[gI!&m4U!!)o?,Kh>4"@>Kkbfg%eR`rtj!")-t!!'Ks'Kf&D!!'IO1]SY5Z]!$. ZiL'K#,3NY``WhqJ]r\hQHTPR!!Yt!!,MMV!OMk(bQWS.[D!\gSBUg/!0-Ti!<%E~> q>Z$'fAH.CR/fGG1]Njd4u5!_R6EDf3\rR[R6ED_:6q<,FF9BN1GbGeGB8/! R9obH8:?nd1c$pEQC1,sR@-5p:77M0Cmg]9I[6Ci1GbGe5%L%J8M`2dR>H*QR;t)>R@-5p:77M0 2O0\bG*JD_3\tT?R?0VR@-$^MKj6%R@-#jNgYK(3/]Qn )?B^l"W/"00+&351P*c\b`XadI$ot;R$gMC1BABoq_JBe%59:7.%E*hrr@]C^B"4_~> JcE[g#0]IE"!DgerVult!(cnbrr<3ns8N'!8GrMf!!#Rhrs8FU/dM_;NrT.X!!<69;Vq q>Z$:fCJXZ"b\?1"s\9gbl7YCReY,,!!Sh8bQ%X3r650@!1No2#f0U]":?oCbfp"c!s069`r!s] )ZVMhbX"Gn'$L=UR`rMH!4'g=!<=4%!!(6e!!&J3M?3g(bf!Bm!YSAJbfg%eR`rMH!4'hW0*<2N !!'+EbXV[6+-$=$qTL&$=;CoE3R#\I!1M-UWZ_EjNW9'gY;-[k"X8*5b^-"@bQW(i!WW9'rlbLd &d:%rJ]r\hPfs8N)?Ldoqof)J!;anB?jm<:b+-]OrrA&M`W5sf~> q>Z$'fAH9X"_3FUQ%Dj11]NjC556r6R0>c11RXXpr%nA@!'^B<#XifsR#u\Z1Geut".4sX2#B'1 P*oGN1I6tfF>K>Q4u5s%R5d$VR$i8MR@,ieR@-5pC7(AZ1I?DNR#GW61GbGe4u5s%R5cutM3rrk R@-)l1k_6aH@M?NqD03XG*85SDDO):R6ED_=HAbs@%!EB?A+N0P_)[e1L<>(1Be-e!!!$#r\FZm !s0&hbVOgo\]g0l"Dj0dL/e%+!?(t71BS6j"<3gdq>UGIo=k;(J,~> JcC<$mf*@Ye,._r!qFb:JcC<$JcC<$JcFX-!0-Ti!<%E~> q>Z$:fCGTY!k,/Qf$"3(X36( q>Z$'fAE5W!CB'%1BBg-JMVj5JMVj5JMZFEq>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!fb4?ou7"1J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UMU`lIbl!<%E~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UMK^VKNW!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE^hrr<6os8VQg!5/+-!&+3K&,M/;$4/JMs8Vq>*s;p!=nr"!\,ZLIo`+sK!9iSFs5*h?rr;uu !(c>R$i5`7$4/JMs8N'!8:gg(rrnTG#n0Mfrr3+s*!](-bl=K_rDNC6rDKTUe/J,~> q>Z$:fCJ[[rr<7lbfm"!+>ZI&&MKi"U[&Gbfmps&crIg<;=Z>6N@*AoZ[?@!640Fs0;XE rlkBB!1N,q$c6'e"U[&Gbfg%eRXr]GbQVE!"V+ALrlbLS%1,nSJ^!T,rDNC6rDJ3j\BG(u*!7+" o#q5G%1,nSSBUg/!0-Ti!<%E~> q>Z$'fAHUGIo=k;(J,~> JcE^hrr<6os8VQg!5SS@rr<-??XJ6Yrt+o`!!Q%s+WLI]BE/66=Y9sTrrrBL!!!,_p&G$l!(c8P rr<$irr<"*!0$1B%/2[\"\_r?)uop q>Z$:fCJ[[rr<7lbfmg$%CEhj@=cYlbl:T@bl:T? bl:T?bl:T@bl:Rlbdu"&FT;V9#68Z>bQ5heqof4s%CEhj@@YR;rrA&M`W5sf~> q>Z$'fAHc99Q;B@nP*q2LHBNmU1Bfb)R@0-noeZW9 !']O$s-WjNr\ORq!'9@#$r*%UN-0N6:bsnqR6H0Xk;*Pa.l/XX+#>\b$ns16.*OKDbl:T@bl:T? bl:T?bl:T@bl:S?b`XadHC9e;R$gJB1BB-Zq_JBf$ns16.%E*hrr@]C^B"4_~> JcE^hrr<6os8VQg!6+s;rr<$iq#:bT!"7EYs8KD*p](:trr2uWq>UW`!!=eQ<;$:k!!#RPs8N'! 8E9^YK)c;2s8W)*s8N'!8FHKZc]RLDs7u[%mfNOhBg)Lrl37+1s/!s>;ZFu@;Z=o?;Z=o?;ZFu@ ;Q7m(rs8TO!*B3_!!M]frrMZjqu6k74obQI"oOYc!0-Ti!<%E~> q>Z$:fCJ[[rr<7lbfm q>Z$'fAH?R1\ig5('HEL!\?,`'FDu>V9Js;s31L@rlkC? rlkC?s31L@WQ^P^#WS0=4u75INAUSi!?(t81Bdh21G]^OS2:!@!/'mX!<%E~> JcE^hrr<6os8VQg!6+s;rr<$iq>UQn!s8U:o%K[25f),ILq>gS%qZ$Qq )+af,!!#ano`+uUrf/B2";jH)s1\O:8uDE8s8;m(hZa&Z#E&Q]q>e(Ns/!s>;?4r?;?4r<;?P-@ ;U#, q>Z$:fCJ[[rr<7lbfmsY- qTSs>)4Jdk!!&n?\c;`>b#oM^"W9MJbX):68sIMMbl#ZlN=!hO!k-=s_>q<$bjipW;?4r?;?4r< ;?P-@;U#,#Jq>UGSo>Ue/J,~> q>Z$'fAH(d9`:R@-/n=IGR:3-LCNQAT]=1Q%T^Ce'%4q_JQi#r=:90f(U7!&DeTV9Js;!6kF?!6k=< "3aY@bl1M>b`agg?^[ JcE^hrr<6os8VQg!6+s;rr<$iq>UQe!!'Y-rr?I*!!*^iqYs1d(B@\,!!1ULrr<$"4[B&Mgg:$] )dd@[]KKG&.KC@drr<$#,[>'`B)i!%=sa&Q!!!sFCB"868H8^&!!5Sm-3+"X4^)&>!#b\6"7Z?k ]DDR-!"hd%rVupns7H?lPMZ??/m_'brr32VJh$g-?b:mhs8N<#4>[$6!4Dh+! q>Z$:fCJ[[rr<7lbfmJR'[4c]3(cXM!&4;o "0qn,^\Z1S!"k[DaT)=?bdmcS[u::e2bGk5rlbS>=qgrL>GZnps3(ki$sq/p!5?\$aoJl$bjipV ;?P-@;U##9!6kF?!mFP?J]taM#cn"+aNVg-!2]YUGSo>Ue/J,~> q>Z$'fAH1m48iG'o$4F.&G?F&"NZR6ED`P*qJVI"jF5KR.`bQC2%U 1BV?ZR5Xmts-Xfi1HLql4#:!,R5fS^R JcE^hrr<6os8VQg!65$UQe!!'Y-rrW(M,lRcE!k\@0($#>rk5HS*70!8e!$hO9!!%iT !!#RhrsSXoDI?ED"98B$!#tq;$h42sIfKHIs8N'!8H/Yh!"hd%nGiQdr&rrE+XQ2^iDo>Ue/J,~> q>Z$:fCJ[[rr<7lbfm[_')hk3!l+WV'pen&a3"VeL!7a@!(G,A !!'IO!!&JebR;4-<)#7N"jG0j!&ac"$aTg5T$5F#bfg%eRf:P2!"k[DZN'usbfn2QbeS:!9f;tT qof/J!!'e1bl7YTR`rkR!348S!!'Kd!!%nZb/sS*"j<<3$34mnbRDQ@-HaQL!5?\$aoJl$bjipW ;ZFu@;Z=o?;Z=o?;ZFu@;M!'(bR(?N!6EC-!!&k>r;ls!rW3D?bea@obfn30[[kY q>Z$'fAHA\\R9okK$YGfp4>ScQ1GbGe55mAVkEfQQL q_J=gR@,u01]NjT4u56fR6!-+R@-$_R@-f71HG@h"Z02%Q^L'JhNo!&68c0`WrQ1Sr=q ;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(1C85mR5?]XR@-/nrW3$!rW*<[1FW;Y1G^`c0qC,rrr@]C^B"4_~> JcE^h#SmD-s8VKe!8RSRrr<$iq>UQm!^MHrVloh!;uj%rWeA]s7u`+Q2^iDo>Ue/J,~> q>Z$:fCJ[[#R(3hbfm3i!65#^rr<%fq9/rX! bQ%X3bfn!5qZ-Z?rr<%\rlbJ9!!(1>bl7YCRf:P2!!Sh8ScAc5rQG;\$i9r$bQG]_!1s&2rr<\# bfKhbWm&$S!4U'H&HDe89[!CY"i>aM!X!k&bRM]O)9'hDao]#qbea@oJ^!Z.s&/m@s&/j?s&/j? s&/m@s&+El]?CPi!!'gY_Z0\DrQG;L!;t%Gao]#qbea@oS]pp0!0-Ti!<%E~> q>Z$'fAH>p*QC2GC1RXXp1JX@+ 3&?tj4u4u_QM[*M1]NjC5Q3G@I$pBZr%nA@!'^B JcE^h#BBefs8U4A#Q=]&!!#Rbrt0e^%,1a]rjDe'M=giJqZ$V+r;Qfp$i9oE!PSL5!(d.b!!%BG !rtgjs60L`[JeMR!<<'!!(d+h$h42sJ,fQJs8N0$7fNGf!"hd%nGiQ=s8W)ukl:^krR(ZGqYqpo !"@T]s8KG+rr<$is8N0$63#a@!0d?Zs7OV:!-8,;\6odI.Yco6rr`7N$-N5H#&$7$s69dcc2XT` rDNC6rDKTPNrVloh!;ld#BKuOsl37*NrrA&M`W5sf~> q>Z$:fCJ[[#8[A+bfjVu$iS0m^]gbQH!M&\n:g"VcR4bbYVs bjWdS;YSE6;M!''bQu>r!0k]s!!^RDbQ5'Nqof3XK$;H8$(T68rrA&M`W5sf~> q>Z$'fAHVVXR56XeR6LU+$YGfp4>ScR1GbDd55mA 1Si7n;YSE6;Q.g'1C,t,R6EEIR>j'%1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> JcE^h#N>^a3*?Of8H&Sg!!#Rbrt4r]!!Z2#,THdZ!!bhr2uj0Dr;QlT!!MllruNrr2u`jX8H8Gb !.4`/!"N@amf3>;=qL`7s8N'!8H&Q3BE/*'=t'FN4TGt!IK'9I8H8^'!!5Vn.0&`9!%M.a!!)lq ,ka%p##88G)uopNUt-irI=~> q>Z$:fCJ[[#ESod4$iuKE;e#\!!&J_bRqGt!").]%Pu>F!"M.a)up>dr6,7u!!^UFbT7)kEQeC_ R`rMH!4'fW!$"[hXoJG\64a+sbfg%eRf:MTb9R&j6:;R4bR=Ik9Spsn!1M-T,QIs66l!qK!!"rE &-)_,bTse2!").]%Pu>Q!!&J3bS:*b70ESj\!e!n9JHMI[`gQ.+DS66bl>lg6jpR'bQWS.[D!\g J]r\hQ-9GQ!!Yt!!,MMV!OMk(bQWS.[D!\gSBUg/!0-Ti!<%E~> q>Z$'fAH.CR/fGG1D*BJR>c68Q;BA0R>cB5PaR7_r%fXIR>s*[1GkDc6o17! 4u5s%R5d!gR=B9CCmg]9I[6Ci1GbGe55m>^1m48iG'\m!1R=GYF$MOLR6ED`P*qJVHA44lR@/;K QC40;1F,_]R>c68Q;B@nR@-5p1R+;`HC1+g3.-U.FGuWU3&?S_Jm:9d1]K64#RWUGIo=k;(J,~> JcE[g#0]IE"!DgerVult!(cka&,Cu5#RE/Fs8@d?'a"h*[ep(+HN4o]ruSWL$i^2,8H8Gb!.4b$ .KTT's+g[U&?c'6s8N'!8H&Q3r.la(#WMe`gaW@*0E2"P8H8_fLaWB32uio6!<<\7!!)ip+SgdF #RE/Fs8N'!8H8_X4p2sm!!&5P8fIm8+E[Y`g:2_6r;Qct!W<-"rreu5#"S7.s+/D)b`Vo/ZS;Y! C]=83!V-6erreu5#"S6KrrJ,%oYpn0J,~> q>Z$:fCJXZ"b\?1"s\9gbl7YCReP#:_,qTY$8RRaa^?S,!=_2qqof*\!&"5o*^9W;bQ%X3beF,X ZHS%=!q!OMk'bQM;^#Z&U5bk_8>NQUn5!<%E~> q>Z$'fAH9X"_3FUQ%Dj11]NjC55-iD7!4TYOa95J4)g"@R#l>Jq_J;:R99DD*fQM/1RXXp1JX@+ 3&>62R$gK%KUA0RJ!l]\1RXXprA,T]G*85SDDO(^P*hY.1RXXp1G_7=P*h>K1GjcPR[>r!<%E~> JcC<$qu6`fe,.hu!qFb:JcC<$JcC<$JcF'r!KG4n`W5sf~> q>Z$:fCH&f!k,/QfusN+X36( q>Z$'fAE\d!CB'(1BBg-JMVj5JMVj5JMYk5q>UJJ_t:\DrI=~> JcC<$JcC<$JcC<$JcD5>!KG7o`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTb4N[RrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJ`:UeErI=~> JcC<$JcC<$JcC<$JcD5>!KG7o`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTb4N[RrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJ`:UeErI=~> JcC<$JcC<$JcC<$JcD5>!KG@r`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTc1K!UrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJa7R+HrI=~> JcC<$JcC<$JcC<$JcD5>!KGIu`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTd.G q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJbOiOLrI=~> JcC<$JcC<$JcC<$JcD5>!KGV$`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTeF^`\rI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJch+sPrI=~> JcC<$JcC<$JcC<$JcD5>!KGY%`W5sf~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KGY%`W5sf~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JAbk^B"4_~> JcC<$JcC<$JcC<$JcD5>!KGY%`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTeb$i]rI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJd.G'QrI=~> JcC<$JcC<$JcC<$JcD5>!KGV$`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTeF^`\rI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJcLejOrI=~> JcC<$JcC<$g&HWI\]fX)MuNg;de(NZrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTde(NZrI=~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJc1JaNrI=~> JcC<$JcC<$g&HWI\]fX)MuNg;dIbEYrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTdIbEYrI=~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJbk/XMrI=~> JcC<$JcC<$g&HWI\]fX)MuNg;d.G q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTd.G q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJbOiOLrI=~> JcE[g#l9E4$4/JMs8W&u!.FkH$qL?u8H8_dG96qp-s>R0#l9E4$4/JMs8Vrr!\aTRrW!$$#qqnL s8N''#k\/s!!#Rds8N'!8GrMf!!#Q@s31KFeP$\X_Z-FUrDNC6rDKT q>Z$:fCJXZ#f9ab"U[&Gbfp%d!3H1D$k<7;R`s!m9+h:7-<0!K#f9ab"U[&Gbfoqa!as6rrW!$$ $8S.Nbl7YI%Eco=!!&Jabl7YCRf(D0!!&I=bfn95E\e"%J^!6"rDNC6rDJ3j\BG(u*!7+"o#q5G% 1,nSSBUg/!KGIu`W5sf~> q>Z$'fAH9X#X`]pR#lSW1Gf#u&3;U'1mXPt4u4u_I$9q[JmmXp#X`]pR#lSW1Geor!_>+'rg JcE^h$26@Y"\_r?)uos;!!=2?s6]dc#tY*rBE/66=Y9s>rs\W\!!Q%s+WLI]!!!u;?OVA_rr<$< ?8)?]h>dNS!!Q:#rr<$iqZ$Qq!(d%fs'GbbJcEso"3PVR!5ec4bl:T@bl:T?bl:T?bl:T@bl:S? b`_u1dJsDK+TP%1rrN)Mqu6iT#fZRH23e+ANR.7:!<%E~> q>Z$:fCJ[[$,$oN$:@)g1X+)B!!>(%bc:XB$(B)^*rlX;6Q-?mbRD/s!")(Z%5Z5P!!#(Z9FQd% bQ%W(8eD%-`lu[+!!S8(bQ%X3qTSs>!1Ni0s%EEoJ]u?^"'B&[!.iAVbl:T@bl:T?bl:T?bl:T@ bl:Rlbdu"&FT;V9#68Z>bQ5heqof4s%CEhj@@YR;rrJ,*oYpn0J,~> q>Z$'fAHc99Q;B@nR@/9uEst;i 1RXYTG*\PV1c$reR0>i31RXXpqD8/>!'^<:s)S0$JMYM+!u)[e!5^Ogbl:T@bl:T?bl:T?bl:T@ bl:S?b`XadHC9e;R$gJB1BB-Zq_JBf$ns16.%E*hrrIbooY1D)J,~> JcE^h)1qnsfDkmM[/^.+!!EARs.08l!(d.b!!$4%rrD$ q>Z$:fCJ[[)(5J!_T^6GM9O0D!!i\FbV0(u!1M-H!!&kpbQ+L"bR>m"'Z/) q>Z$'fAH JcEai"8W#u?2FU$!"Ua`4o,R'!!#RipAb1.QdGO-&,_#)"VFVfs8N'!5%4p3H2IUDq>gS%qZ$Qq !(d"err;?4r?;?4r<;?P-@;U#, q>Z$:fCJ^\"2Y'=SbgS1!"WoHH,B\6!!&J3^&S-_KWk0p&&qQ_!YeSPbfg%eLc>SRK_rsq_>sY- qTSs>!1Nf/rr!1Ni0rr=",bfg%eLc>SRKZqO q>Z$'fAH?Z"%\fI4Sgl6R1FY46q3PKR@-5p;43hq;EX_1%mYB&Q\oB31GbGe!'^99s-XE^1J=.(3&<@YR>RCs1RXXpqD8/>!'^<:s-Xfi1GbGeb`agg?^[ JcEai"7Z?k]DDR-!"27L$I\uh!!#Ris'Yd*!>::drt&cB##ZuP')V\/!!,5K!!D0Wrr_ck!5&+- rr<$ci=C/JcFj3!V-6-s/!s=;?P-@;U##9!6kF?!mFP?WQ^S+#jhTll2Ub`!) q>Z$:fCJ^\"0qn,^\Z1S!"5,#&9.]E!!&J3bT6W^!?I-rbRr#B!")4+!$]V1!!!'b*WQ>_r6,8K !!'e1bl7YC3rVeZ]$/@u!1M&Y!&ac"rr<7g#nkD]!1Nc.rr<%fr650@)k,!p!!!'b*WQ>_aT)=? bdmcS\'/"U,^fY(`du@qbQ5'NJ^!9#r_`jB;Gta9;?4r?;?G'?;M!'(bQt9M!6EC-!!&kobQ5'N r6,D_!5?\$aoJl@bk_8>NQLh4!<%E~> q>Z$'fAH?Z")40k2Yo60R0u?IG_2>GR@-5p1m@m+!J3Z81D)I,R>Q0RR;arR8q!<%E~> JcEai"7Z?k]DDR-!"DK;!#l.9!!#Ris8.EorVus#]DV[@nGiQXs7--iJc>]M,QIB9!/URQ"7Z?k ]DDR)!!6p8s82it#Jg?=rr<6od/[YV!(ctdrr<$ir;Zcs)G'o.!!"8DoDelIrVupps7H?lPQ1Vp !!<:oJcFg2!V-6-s/!s>;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(rsA&m!9sO`!!#anr q>Z$:fCJ^\"0qn,^\Z1S!"GAr!!WeQ!!&J3bemHorVus#^\l:fZiC*4bd7?M[*/LM7Ei7A!4MgL "0qn,^\Z1O!!9@JbkqGA%D2V`rr<7lD?-"'!1Nc.rr<%fr650@)Oemo!!#I3\,ZN;aT)=@bdmcS \'2u=!!*2)J^!3!!OMiXbi[.L;ZFu@;Z=o?;Z=o?;ZFu@;M!'(bR(?N!6EC-!!&k>r;ls!rW3D? bea@obfn30[[kY q>Z$'fAH?Z")40k2Yo60R12?9R@&[aR@-5p1I?;Nrg JcEai"8Mrt?Ma^%!!l-h!!"PL!!#RfrrhGQ!!#dlrt4Gp!;ZZp!!#[l!!#Ifp](;@r;Qlp!;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(rs82r!5SX2!!%TKrrMZjr;R$$#E/W^ q>e'krrJ/#oYpn0J,~> q>Z$:fCJ^\"2Y'=T)-\2!!o%*!!$-F!!&JcbQP(]!!&elbRpQL!6`U0!!&b;!!&;.^An8>r6,8[ !/!"_1T!WX1_bfg%eR`5RI!!&Jabl7YCRf(D0!#_6LbQ%X.beF,XZH3(HWm&$S !4U1rUAt9DJ^!/u!OMiXbi[.L;ZFu@;Z=o?;Z=o?;ZFu@;M!'(bQtZX!5Qgr!!'D)bQ5'Nr6,Dg !k-=s_>q<@bk_8>NlUe3!<%E~> q>Z$'fAH?Z"%\fI4Sgl6R0YuWR@-Z'R@-8;1BfU*GaXs^r%eq3R@,ie2OTsq1RXXp1JX@+3;bQ7 8=5f-qD8/>!'^99s-X"6J=)aGr\OSBs#pRQFIAO\qD8/>!'^<:s-X`g1GbGe4u5s%R5d6qR6!-- R@-#j1N&VK?%Ffl1BABo_DA%4s&/m@s&/j?s&/j?s&/m@s&,i?P; JcE^h*e=;"gAh3P[K$7,!(d-/!NZ5#!(d.eM=giJqZ$V+r;RB!!!&Jfnc/Z?rr<$is7cQoHi*gO JH-,4s8W)+s8N'!8GiGe!";EubQ%WPs8N'!8H6p5!!#Rds8N'!8GrMf!#eE.rr<$is7cQoHiF0J 63#a@!0dH\7K=&%Fb0SRrrMZj_Z-FUrDNC6rDKTPNrVloh!;ld#BKuOsl37*N rrADW`W5sf~> q>Z$:fCJ[[*[Uk&_p$?IMTj9E!1M+K!PHVV!1M-OK?DE^`;fn?r6,b[!!'@LZiC*5bQ%X3beF,X ZMViS-3+h!bfn4ebfg%eRet>/!">=?EW?*,bfg%eR`oCC!!&Jabl7YCRf(D0!#hUG]o>Ue/J,~> q>Z$'fAHFCm=1RXXp1JX@+ 3;YK?OdUGN1G_$U1GbGe55R/9R1)88I[QTf1GbGe4u7lkR/fGI1]NjC55[5:R2S7F1RXXp1JX@+ 3&[.l5Vm_SR5cueQ'n#,5(PNN1BABo_DA"3rDNC6rDKTUGSo=k;(J,~> JcE^h*qhDj##88G)uop q>Z$:fCJ[[*kMp_$:R8k1X+&C!1M-K^!+\#!1M-J!"M.a)up>dr6,br+TMj?%KIWpbQ%X3beF,X ZMViS]+4lK77%J?bfg%e3rVefAB`6t!1M-S%0.9ibQ%X3bf0he!1Nc.rr<$[r_+DEbQ%X3bfg%e R`rMH!4'f`!")-t!!'LP4odX1!=->ibiR%LZiG[$J]s%r#''\J8-]-1r6,2K!;jtDJe#3&*aYA\ q>UGco>Ue/J,~> q>Z$'fAHcB5PaR7_r%epAP*q/MQC2bL1RXXp1JX@+ 3;YK?:6q<,FF9BN1GbGeGQ)Xu7PcigR6EDdQC2YI1RXXp1I7CrR6LI's-Wk2rc9/N1RXXp1GbGe 4u5s%R5d!eR>?0VR@-#jNL=0fR#EqS1Z^Cn)?@W1J]t[KOu!;iR>lBWR7R63!?(t81Be=!0Im5R S2:!@!0d#h!<%E~> JcE[g$i,Q1#RE/Fs8N'!8GrMf!!u3rrJ,[I!!#Rip](;@qYpisLFri< 0ol;6qZ%?Hs8N'!8H8_H!!%TM!!#Ris2G$=8G`A`!$E'W!!#Rirr<$is7cQoHiNLt" q>Z$:fCJXZ$c,p`":?oCbfg%eRf(D0!"#+qTK5] =;h;L15sH$qZ%?Xbfg%eR`s!5!!'%C!!&J3b[(8LRek8*!$EW4!!&J3bQ%X3beF,XZHTq!OMk'bQM;^#Z&U5bk_8=TC^&&rI=~> q>Z$'fAH9X$Uf-!R#u\Z1GbGe55[5:R0c&54)g"@R#l>JqD/[LHBOYSAi);"R@-5p:77M0qD/CF Fc_uQH9X2AqjA0s1GbGe4u5!=R@-)lR@-5p1PVB?R;t-81[$Uu$NU5-! JcC<$JcC<$JcC<$JcD5>!2B))!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGho>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UG^o=k;(J,~> JcC<$JcC<$JcC<$JcD5>!3#M/!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGno>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGeo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!3,S0!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGoo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGfo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!3,S0!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGoo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGfo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!2fA-!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGlo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGco=k;(J,~> JcC<$JcC<$JcC<$JcD5>!M7@(`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJea7R@OrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJ\_">AArI=~> JcC<$JcC<$JcC<$JcD5>!0Qlm!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0Qlm!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/L0\!<%E~> JcC<$JcC<$JcC<$JcD5>!KG.l`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTa7R@OrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJ_">AArI=~> JcC<$JcC<$JcC<$JcD5>!KG4n`W5sf~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTan3RQrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJ_t:\DrI=~> JcC<$JcC<$g&HWI\]fX)MuNg;an3RQrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTan3RQrI=~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJ_t:\DrI=~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJ_">AArI=~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE[g#l9E4$4/JMs8W&u!.FkH$qL?u8H8_dG96qp-s?EHr;Zp$)f,<9rr`0!!*Sais5*h?rr;uu !(_\@]Dhm3!r`9%cc#jZbl(H6bl(G q>Z$:fCJXZ#f9ab"U[&Gbfp%d!3H1D$k<7;R`s!m9+h:7-<0icr;Zp%*c&sbbQGib!3GV4s0;XE rlkBB!1JJ_]?C6Tr;lu:J^!<$rDNC6rDJ3j\BG(u*!7+"o#q5G%1,nSSBUg/!0-Ti!<%E~> q>Z$'fAH9X#X`]pR#lSW1Gf#u&3;U'1mXPt4u4u_I$9q[JmnL3rL!_QKN@@o"$i9B3png(5QEY? 1]NjC5(PN%1B7FR!<=mn1Si7n;YSE6;Q.g%1B_NUQA/<.1BS6k"<UGIo=k;(J,~> JcE^h$26@Y"\_r?)uos;!!=2?s6]dc#tY*rBE/66=Y9sUs8N'&)dcSI!&j0C"8i-!=ml=i!!#Rh s8QF+N.M#@rrE+P_#L7Ts&/m@s&/j?s&/j?s&/m@s&,i?P5ba7!!H4D!(Zte!WCXIrrq0``V q>Z$:fCJ[[$,$oN$:@)g1X+)B!!>(%bc:XB$(B)^*rlX;6Q-@/bl7YH3_VU9!+,!8"3(<@XR==4 !!&Jebl:?:XF\U-bQ.^NJ^!3!s&/m@s&/j?s&/j?s&/m@s&+El]$(A$!!Ypu!,h_Y!QhG?bQWY/ [([SiSBUg/!KG7o`W5sf~> q>Z$'fAHuKYR7I02!A>u#1Be@! 0Im5RS2:!@!JA;^^B"4_~> JcE^h)1qnsfDkmM[/^.+!!EARs.08l!(d.b!!$4%rrD$Ss8N'&8H8_$!!_ch"8i-!=ml=i!!#Q@ s0_k-!/&)eV9Js;s31L@rlkC?rlkC?s31L@WQ^S+#lZ1O=9%C_"RZ0f!V-6frs!1#s8V?fr0@9_ NQq+8!<%E~> q>Z$:fCJ[[)(5J!_T^6GM9O0D!!i\FbV0(u!1M-H!!&kpbQ+L9bl7YHR`ruT!"/&9"3(<@XR==4 !!&I=bdGXq!47=$jNRX%s31L@rlkC?rlkC?s31L@J]taM#g*DQPK]Kr#0Hhf!OMk(bQS`3bflmi SBUg/!KG@r`W5sf~> q>Z$'fAH1Sp!&X7&"$i9B 3png(R/fFq1B98r1B97a1B@J0^b_h2s&/m@s&/j?s&/j?s&/m@s&,i?P;UJJaRm4IrI=~> JcEai"8W#u?2FU$!"Ua`4o,R'!!#RipAb1.QdGO-rr=cEs8UsV!WW0"!'XHg8cS^?,R"cWh>dNI q"t+-&cVh28H8_fJg:L3;;M9P!!#2l$kR^]s"OG4-jBek 63$u\HQr\-?L\!p!!#2a#"c6')uos2!!1:Cq0O=i'412.rr<$_e'krrJ,#oYpn0J,~> q>Z$:fCJ^\"2Y'=SbgS1!"WoHH,B\6!!&J3^&S-_KWk0prr=dBbfl(I!mJjg!/E3/REWZM'EStI `QZQ70E`GW!!'+EaT)=;/bQ%Wu0*7PpbQ.^NJ^!3!s&&j@ r_`a?qbdO?;Gta<;M!'(bQtZX!5Zms!!'D)bQ5'Nr6,Dg!k-=s_>q<@bk_8>NQCb3!<%E~> q>Z$'fAH?Z"%\fI4Sgl6R1FY46q3PKR@-5p;43hq;EX_1s-YT*1GaKJQ8:=bR95?64u5HKP*_&< 1c$p_LmEWdR@-)l3glBu1K^'53&kE\fL>HBOVN>r4>nR@.07Qp-Fr<\lO7R?f]d7!b#_Lg;hn1RXY5MO6S\1B@J0^b_h2s&&j@ r_`a?qbdO?;Gta<;Q7m(1C.?UR5QiiR@-&51BABor%eR4!&68c.0),o1\q%OK>R8q!<%E~> JcEai"7Z?k]DDR-!"27L$I\uh!!#Ris'Yd*!>::ds8N'o8H8?u!"Ao-!!!'G>\X4M!!Z=P!##2/ 9E5?$-NF-Ls8Duu:B0te!0dFq!!5Sm-2V$L!#o9[rr<$is8Q[2##ZuP')V\/!!,5K!!D0Ws"N=1 !%qSK(]XJ/!#f$"!$VCB!!!'G>\Wd0"6BL#!#Yb89`Q)82ZP$$rr<$#,[>&:rriB6"VbA8`;c[X r_`jB;Gta9;?4r?;?G'?;Q7m(rs7ul!9sO`!!#alrrMZjr;Qip!4Dh+! q>Z$:fCJ^\"0qn,^\Z1S!"5,#&9.]E!!&J3bT6W^!?I-qbl7ZJR'Z bV4tU!&mM+$I$X.!%CMY!("iQ!!!*U8"R-h"NS_d!%uL<('#dU)?<(IbQ%VF0h7ggbQRtZ!Z,:f J^!?%r_`jB;Gta9;?4r?;?G'?;M!'(bQt9M!6EC-!!&kobQ5'Nr6,D_!5?\$aoJl@bk_8=NUt-i rI=~> q>Z$'fAH?Z")40k2Yo60R0u?IG_2>GR@-5p1m@m+!J3Z71]Nk<4u5NgR;arQ0R R;ar?Q'mDNPaRq#1HLql4#:!,R5d$dR?D`@L.$*NRJbLR9VO.PaQuDPaP`31RXYuH?_Q*1B[[[!=0aa 1Sr=p;?P-@;U##9!6kF?!mFP?WQ^P^#^2W(1c%%XR6:F(!?(t91C#?/0f(U?!&:$#q>UGIo=k;( J,~> JcEai"7Z?k]DDR-!"DK;!#l.9!!#Ris8.EorVus#]DMX*!!WObs8N'!)ufjbnGiQXs7--iJai^? ScA'W!*T@$!!#jqo`+uUnGiQ eFrk@kl:`h?X!L2df0:I)u]dNAcP[-2?7k!kl:`h?X!L2df0:I)hJ"mXmZ5B81;FVV9Js;s31L@ rlkC?rlkC?s31L@WQ^S+$1.]ml2Ub`!)dr&rrE+XQ2^lEaRmIPrI=~> q>Z$:fCJ^\"0qn,^\Z1S!"GAr!!WeQ!!&J3bemHorVus#^\c7P!!WS!bfg%e2?(fIZiC*4bd7?M ['BZ3[EPWN!3FDd!!'%C\c;`>ZN'usbfn2QbQ%X3rlkBB':R.P!!'@LZiC*5bQ%W3bd[WQ[f">` MZt`5(''H>$37!JU&Y6g9LJj]_or)\21`sTR)R4>(/'5&kfj') s31L@rlkC?rlkC?s31L@J]taM$*4+,aNVg-!2[pq q>Z$'fAH?Z")40k2Yo60R12?9R@&[aR@-5p1I?;Nrg07R6!,bR@-)l=IGR:Aso&L1G_!H1RXXpr\OSB'0\3aR@-#j>FCm=1RXY01L?K;3;bQH I@6Ku5;P;UFIAG9F+fsK2)CYg?MuYoPaO`oQC0ciFIAG9F+fsK2)CYg?@am9.5EY'![GW>V9Js; s31L@rlkC?rlkC?s31L@WQ^P^$$M`)1c%%XR63;)!WN0!!=:J:.0)(Y1GJkaSMU*A!JA8]^B"4_~> JcEai"8Mrt?Ma^%!!l-h!!"PL!!#RfrrhGQ!!#dks8N'%)dd'%bl7YB!!#Fdru^G)!;ZZp!!#[U !!)ipqZ$V!s8Duu:]L(f!0cRG!;69irr<$irr;uu'1i/e!!)iprr<$lrr<$fs7cQoHi3mLrIQ-l !!>[bf_PRNR/[-d7/d,kh#J&S!!rK%f_PRNR/[-d7"PC:rrMBe`;c[Xs&/m@s&/j?s&/j?s&/m@ s&,i?PQ(p[!!'h7q>^MHrVloh!;uj%rWeA]s7u`+Q2^lEbOidSrI=~> q>Z$:fCJ^\"2Y'=T)-\2!!o%*!!$-F!!&JcbQP(]!!&ekbl7YG3_W@d[f4MN!!&,[bTEPZ!6`U0 !!&ae!!(3d`;fn>bfKhbWm&$S!4SO"!6Y5`rr<%frlkBB':R.>!!(3db5_O:bQ%X.beF,XZM_oP a\WQL!!Z-?Hhm^F\BFpQOT!B/L&` q>Z$'fAH?Z"%\fI4Sgl6R0YuWR@-Z'R@-8;1BfU*GaXs^q_S8?"F"p+>rVa=s-WjOr\GXCR@,ie 2OTsqH^U9X1IIRu3\rgbR6!--R@-$^R@,o01]NjC55mAWCn4u5s%R5k+# #Wd9rR@04K1P5Ik"?83*R6UX+#^i%NC70N,1P5Ik"?83*R6Q6YrA+Hf"iN3nbl:T@bl:T?bl:T? bl:T@bl:S?b`agg@%!E@1Ide#3;kW6)?B[k#;H351G^H[17^5srrIbkoY1D)J,~> JcE^h*e=;"gAh3P[K$7,!(d-/!NZ5#!(d.eM=giJqZ$V+qu?Zr!(ctdrr<$irr4A9!!&Jfnc/Z? nGiQ^s6]je=o\L(!($Y@!!&5Q!!%NKs8N&u!rtgis8N'48H82[!1NrY!!%QL!!#Rip](;@r;R0& rVuQ8!!%''!!CmQrrqNarr<$irVm9'(]eUV2?3^?!!CmQrrqNarr<$iJcG]K!U9d*s.mm;;YSE6 ;Q.g'rs8TN!*K9`!!MZerrMZjqu6k65QCcK"oOYc!KG7o`W5sf~> q>Z$:fCJ[[*[Uk&_p$?IMTj9E!1M+K!PHVV!1M-OK?DE^`;fn?qoo'?!1Nc.rr<%frlcas!!'@L ZiC*5Z2am5bcCdEXN\ig!/f!W!!'L8!!&\9bfS)Q! r6,Pgbfmhf!!'9t!!^C@bQXrhbQ%X3rQGYh"T^.SCs:+s!!^C@bQXrhbQ%X3J^"):!Mp!Obid4K ;YSE6;M!''bQu>r!0k]s!!^RDbQ5'Nqof3XK$;H8$(T68rrJ,%oYpn0J,~> q>Z$'fAHFCm=BpkAK1LuoA3\r[]R6WQSR@-$HR@-/n1H@6IR$g/;1]NjV4u6f=R5d!,R@-#jR@-5p:77M0 r%e^C1G_."R@-'WR>s-'1Bg6(1RXXprA+gFR$`u'7PciBR>s-'1Bg6(1RXXpJM[6\!>>XT1Si7n ;YSE6;Q.g'1C,t,R6EEIR>j'%1BABoq_JBW/2K'r$(NgIrrIbioY1D)J,~> JcE^h*qhDj##88G)uopQ<$D<1r;Qfg!;ld"gBbjp@5F/J!KG1m`W5sf~> q>Z$:fCJ[[*kMp_$:R8k1X+&C!1M-K^!+\#!1M-J!"M.a)up>dqoo'?!1Nc.rr<%frldXN+TMj?% KIWpaq=[c8dk\"XN\m'!")-t!!'LO,QIs66l!qi$ih8@M9Gr"R`rqu!")7,!$KJ/!!&J3^An8>r 6,kD'Kf&D!!'IM(B>(>6QQ]\bQ%X3r6,g>!!!);bfn3G!"qjj*Y$?;!!&I>bQb2@`lk(m8V,*:b `0gNEW?;7#68Q;bQ5'Nqof4q%^j"l?C]78rrJ,#oYpn0J,~> q>Z$'fAHcB5PaR7_q_S8?!'^68s-WjNr\HerP*q/M QC2bL2O0\bG*JD_3\rRVR>?0VR@-#kP*qJVHA443QC35D5Vngr4u5$YR>H*QR;t)>R@-5p:77M0 r%f%7MKj6%R@-#pPaR>LHB>s2OFAuAR@-6j1Bo!Q1,:*V,K)Bh bdkr\1Br5pNHU\W8Gk7E)?BXj"V;+s.g%2i1\q%OK>I2p!<%E~> JcE[g$i,Q1#RE/Fs8N'!8GrMf!!u3rrJ,[IoMl,3 L]@EXs8VLN" q>Z$:fCJXZ$c,p`":?oCbfg%eRf(D0!"#+!1Nc.rr<%frQILE;A0*E;8^W% [P%_&M#[OWbfm(1![`p-!4U1l=;CoE3R#^%('+DCbQ%X3bfn"''*8eD_p$=)!1M-H!!'>&bS769 &HW+[Fj/(G;%s'=/8EDQ!!&JcbQG3P!%n/n$c,[S!X^Jnbfg%eRY&`fU*9gD)I^d>b^musbQMr) !Z>nQbQ5'NqTK(M$j]YOSBUg/!0-Ti!<%E~> q>Z$'fAH9X$Uf-!R#u\Z1GbGe55[5:R0c&54)g"@R#l>JqD8/>!'^68s-WjNrA-Z)HBOYSAi);" :5P?k:77M21G`-oQ@<50R5cueG*85SDDO(^P*hY.1RXXp1G_@DP*h2?1c$qUR6EE%R@-&41DF/K PF.Sd:GXdpH'4PWITA6\R@-8:1BV!PR9]\H$Uf9'R#uhu1GbGe5(YQo)$^0C#p-u?J]t[KOY[,V OI(]$q_J6k!;\JR&ci+SRksm?!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> p&FPCqu6fE4TGHlr[.[Mq#:HqgY:uYrrT\B3._*\s+13$s+13$s+14:rrA&M`W5sf~> q>^EanQGb[#^/-,!$ q>^ENs.]1]s.]DJ#dL1nRA6RRUSmnE"5MJYhWs&#Z'rk/hgmS71P%?51P%?51Y";Wrr@]C^B"4_~> p&FPCqYpfe!!&>bs7I'#rr_Wg!0umM!ZqCbJcC<$JcC<$JcC<$JcG*:!0-Ti!<%E~> q>^EanQPe[#KZrGg@Fgj./ q>^ENs.f7_s.fGJ#IKnegu%#/`;&3l[$d?;le_c4RE2&YJMVj5JMVj5JMVj5eMI%$!/'mX!<%E~> p&FPEqYpfG!!;`ks8:4Ue/J,~> q>^EanQbq]#C$4Nn+-&7chR&5HN40:o'ukMb3&Zn!j\'YT^mZXJ]r\hJ]r\hJ]uZgq>UGSo>Ue/ J,~> q>^ENs/5Ogs/5_N!iMHVrndb-g\BY-VjX(FhZDQ]hYl=4`lOe0JMVj5JMVj5JMVj5eMI%$!/'mX !<%E~> p&FOmqYrFA!"Ao-SuVhj\2k0b0MMMd*WQ=-:&k0V0/aP@mJluD!!#)?!!Anoq)\QV q>^EanJ:ul2(/GAo("Ejo(%_h&jI[Fnn&.-#s;A]m;aC1'k?\&jtm& q>^ENnL==l1nU2Ehqt*^hqtu=UT:6,hlrQ;U8lAnfsIKPU;#LAd%Qkq\"9"[gu$JPR@2ac\YlO" UVWkcJMVj5JMVj5JMVj5eMI%$!/'mX!<%E~> p&FO^qYrE0!!PSO)YsEo!!'2%knO0t1]SZus8H:(>5t`*/cYk/!!$@)!<>(Ys53kW\,UrJs7cQo @"J?/s+13$s+13$s+14BrrA&M`W5sf~> q>^EanGrFV2%0Hl4?Nu@o!&/ph"&61o(!1h8b2H?.fcC93<3a`nu;ZiU@/*_MXp> q>^ENnGrFC24Br0WiD`LhmJl?gu#KWhqsljbhq=3Sse-dTUF-`hlE05e_?L[e)0&`R@2mgT%`)H R@2d-hgmS71P%?51P%?51Y";Wrr@]C^B"4_~> p&FO^qu8SN!!#Feq%!H)]`8$dP2>O)q#CC^s8URK"S_r'!"T&/]`865q#CC_s8Tb4"TJGls8Vlp !(qhBJcC<$JcC<$JcC<$o`"rOa7R@OrI=~> q>^EanGrIW2Wk&?WUf0ko(#BQ!)8g?j7;=4!3#JZLB%VLni$Ogo(#ER$1[-X!3>\]9)o:ho&B62 jT#:kW:GN>JcC<$JcC<$JcF!p!KG.l`W5sf~> q>^ENnGrID2URq\fAFrehqt/rRC1/khVZ\JRFg?RWgTR p&FPHqu7#j!!&>brQYBBl6Q?/-j5n:li7$Ls8R9C'*%uD!#>P6C]G1Lm/R-Ls8Qm8&HDE=*?mKD !18?;JcC<$JcC<$JcC<$o`"rOc1K!UrI=~> q>^EanNZpA$HiDLg@FUOo('R+rW">OdIPBZ!86r6)uq>Vne_?Zo(!Xu.e:^^!86r6)#tfMfh`A9 0)u"+W:GM`J]r\hJ]r\hJ]uZgq>UJTc1K!UrI=~> q>^ENnNZp.$FQ:igu$c=hqu51-gY]B+RG?]WSXI@Phjg+Shqsrl`8@qiRG?]WS=.1McE*S8 Ssc#%W8E.^JMVj5JMVj5JMYh4q>UJJa7R+HrI=~> hu>U\!!;`ks814D`;\#1!!#%Zbl@h8s8PRh.KB;M!*B4"%KJ9acN"%:s8EK./,r$<,6-!i!qV!C JcC<$JcC<$JcC<$o`"rOc1K!UrI=~> q>^Eanc/LW2L>E+n+-&6eF:9BZsNe5N:M/m"7PgO&--52l2gsdo'cb^H1H7]"7PgM"9<*)'*(r$ HiO9;W:GM`J]r\hJ]r\hJ]uZgq>UJTc1K!UrI=~> q>^ENnc/LD!iMHVrne18gt^W=af(VqeDI-kSGqCeS!hU[eX;iWhqXZgdbgsjSDW5ZR[MOZS=.CS VjX'QhgmS71P%?51P%?51Y";WrrIbmoY1D)J,~> hu q>^Eanc/LW!\+0frph_(T\:4Oo"tG/f^^Zq'_46@8-!&gLB'R/o%F'Dampn])"R7O!!'gm!!&ka )?:YQnq##9b^muhb^muhbgjr5rrA&M`W5sf~> q>^ENnc/LD!hPggrnfB.e\\]Nhn,;Fgu"`lYhu;4Tpa3`WgUHUhntkMg#&Bh[GTlZR@2aLR@2X\ S=-g`hgmS71Q+&?bdkrK1QsWjrrIbfoY1D)J,~> iVs&@58XA&r[0B@M=3JK58Z&:s8Ujs!^p,ir-')@+)LNJkrSkF/ZKWf"^^FT!!";+5QCmf+92RO JcC<$JcE%UJ]t[KJcCZ.!KG(j`W5sf~> q>^Eanc/RY"Kjik!!iKL0Fl^[0.]*p3i_cARM5ilEq8Kr&iV.cn++7L!!#;b"oo!b^bPli2Wu%Z #%e,@$APMMJ]r\hJ]r\hJ]r\he]djh!KG(j`W5sf~> q>^ENnc/RF"LkD"R@sPT0Uge2Uo:5`Y1;Fe[[`kgaPYRLTVn^-hqtr8R@1LdR[L#$\=T+VWS*f0 T=p\]V:2C#JMVj5M_fq.\]fU\P;E%7!JA,Y^B"4_~> Yl=e(fAV;\JcC<$XoEsr\]fX)MuNd:o>Ue/J,~> q>[tq!q47fU[iu[J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>[t^!o28\UYgVYJMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE^hrr<6os8VQg!5/+-!&+6Lrr<3'";3SIrVca#ol_Sb&P0V7s8N'18H8_Z!!("+QP rrJ,"oYpn0J,~> q>Z$:fCJ[[rr<7lbfm"!+>]Jrr<0&"VNV@r6,AR8eV7=7^;s:rrUJTa7R@OrI=~> q>Z$'fAH JcE^hrr<6os8VQg!5SS@rr<-??XJ6Ys8N'G)dYl3!%7RAs7@T;%p1jm"JYqr!!#Ris6p!g`W,Zn !!G\o1B;1drs\W\!!Q%s+WLI]!!#RXs8N'!8:gfYrr^D`S,gG+V9Js;s31L@rlkC?rlkC?s31L@ WQ^P*#1 q>Z$:fCJ[[rr<7lbfmUJTc1K!UrI=~> q>Z$'fAHuK9OI80+1CR!DR>c99Q;B@nR@-8,1]NjC5(PN-1BS=1&cfd)V9Js;s31L@rlkC?rlkC? s31L@WQ^M]#'u\tGF4dgr%e@,/,M++&I^?D""9Zqq>UJJa7R+HrI=~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o+\;Y5gBmpLs8RaQ,!5ec4bl:T@bl:T?bl:T?bl:T@bl:S?b`i&4 r[.\Is5j:amJ[%cnc8Re#&-7#s69dcQ2^lEcLf*VrI=~> q>Z$:fCJ[[rr<7lbfmNR%19!<%E~> q>Z$'fAH JcE^hrr<6os8VQg!6+s;rr<$iq#C?o!(d+h#HRn6s7lWpD#XGHmf3?trr<$is8VQg!6+d9!+#9t "8W#u?2FU$!"qj&rVupms7H?lPQ$Rj"p>c/q"t+'&c_ZR,6\`enGiLg!'XHg8V-ojrrMZj_Z-IV s&&j@r_`a?qbdO?;Gta<;Q7m(rs82r!5ed4!!%TKrrMZjr;R$$#E&Q]q>e'krrA&M`W5sf~> q>Z$:fCJ[[rr<7lbfm[WW(*RXoJI9bQ%X3bfmq'*8qWb08'0!/E3/R=WT2bQ5'N J^!9#s&&j@r_`a?qbdO?;Gta<;M!'(bQtZX!5Zms!!'D)bQ5'Nr6,Dg!k-=s_>q<@bk_8=NUt-i rI=~> q>Z$'fAH-j1J!q%3rUoIBpkAI1RXXp1G`j8R5RU' R6:-u"%\fI4Sgl6R1_\>3glBu1K^'53&l)CR$NVM:AgLk?8FuqP*^u11c$qUR95?65(PN=1BABo _DA%4s&&j@r_`a?qbdO?;Gta<;Q7m(1C.?UR5QiiR@-&51BABor%eR4!&68c.0),o1\q%OK>@,o !<%E~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o!(d+h#MoF_s7$'h^Ae-Eq>^M4rr<$is8VQg!6+I.!5%q( "7Z?k]DDR-!%:D q>Z$:fCJ[[rr<7lbfmibe)()X8i7Abf]tdV>\U=ZiL$J#JpJTbfn30[[kY q>Z$'fAHKE7[]Z*1RXXp1G`j8R5ScI R5X^o")40k2Yo60R4(6T3glBt1K^'53..-^G]e\&7!"caGB6M>PaQuDPaP`31RXYuH?_Q'1Xe,\ )?@W1V9Jp:"3aY@bkk9 JcE^hrr<6os8VQg!65$^M4rr<$is8VQg!64O/!4r41 9E"qgrr_ck!5&+-rr=?9s8Duu;#g1g!0c:?!0Yk*rVult!(d.ikl:`h?X!L2df0:I)hJ%9rrMZj _Z-IVs&/m@s&/j?s&/j?s&/m@s&,i?PQ(sV!!)9`rr<$ns8<$"!<*''[f?1([Jp1,!/m-B!KG1m `W5sf~> q>Z$:fCJ[[rr<7lbfmUJTaRmIPrI=~> q>Z$'fAHKH7[]Z*1RXXp1G`j8R5S`H R5QiWQN!UJJ_=YJBrI=~> JcE^h#SmD-s8VKe!8RSRrr<$iq#C?o!(d+h#HIh5s7lWpD#XGNmf3?srtYT%s8VKe!8RDQ!*]F& O&Z/[qu6co! q>Z$:fCJ[[#R(3hbfm3i!65#^rr<%fprra[WrC3YY5eR:bQS!-bfm3i!62kV !1M-U<]U3\qof/Z! q>Z$'fAH JcE^h#BBefs8U4A#Q=]&!!#Rbs8N'G8H8_F$33Hns)nAVo`+r>!"Ju.EW@9_s2k q>Z$:fCJ[[#8[A+bfjVu$iS!W[DfbT6a3b08!\!#Nl'(B?bFb[gb^bfhU< '"lH4RK*?abU=e<(;nA?b)4Ee!!&J3b5hU#b_Z<"\&QY9^Qnj"Z-34KQH[RH!!^C@bQXrhbQ%X3 J]uKb!OMiXbiR(I;YSE6;M!''bQu>r!0k]s!!^RDbQ5'Nqof3XK$;H8$(T68rrA&M`W5sf~> q>Z$'fAHu1Qn/@1c%%OR;arIW3'8uQ4C4GD3A[%j4u5!:R>s-'1Bg6(1RXXp JMYY/!?(sT1Si7n;YSE6;Q.g'1C,t,R6EEIR>j'%1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> JcE^h#N>^a3*?Of8H&Sg!!#Rbs8N'G)dYo4!%.L@s77B6%p;!p"/#VniW'!==U>(!s8VjY!!>Mn 70!>as"X4(!!Z2#,THd`!!#Ris'u*6=:kN5PN<6A>tb4uMuPp?%UXY`9`PK!=Y^9_rr<$iJcF*s !V-6-s+/D)b`_u1ci=2J+ok%/rrMZjqu6iS#fl^K1R.n>NUt-irI=~> q>Z$:fCJ[[#ESod4$iuKE;e#\!!&J_bl7Yi3_Cq'!'\TMbd7TT*_@IS#-Q1oO8o;C637.+bfmj< !!PPZ.0'AEbV?^?!").]%Pu>Q!!&J3bS:*b70ESj\!e!n9JHMI[`f-[*))43(B>(>6QQ]\bQ%X3 J]uKb!OMiXb^murbQ`(f#"St!C])BWZiL!I"bI5l^)gUNbk_8=NUt-irI=~> q>Z$'fAH.CR/fGG1]NjHGBSk3R:cFS*E8DoJp*c68Q;B@nR@-5p1R+;`HC1+g3.-U.FGuWU3&?kgIrdk8PaR>LHB JcE[g#0]IE"!DgerVult!(cnbrW!''&2Jq:rVm)oF q>Z$:fCJXZ"b\?1"s\9gbl7YCReY,+!!<<80n&uD#.7&9!YIo*rQGFu.L-/&FoBMh`aU+r";jIV q91P/=;h;L15sH$!!&J3bc2ff-B8'+\$%P!!X0cjbfkeW!nQbQ5'NqTK(M$j]YOSBUg/!0-Ti!<%E~> q>Z$'fAH9X"_3FUQ%Dj11]NjC556r5R0/b8Hr0_s##'E-Q],c@rA+UeMO'NZ;#N0T5]MdNQAT][ q(j]mFc_uQH9X2AR@-5p1K]^(IUJS33*q9%R$<1u1G`^-R$gK$7!Xr_Oa^=e1RXXpJMY_1"Ub>2 !!*,=1P*c\b`O[aClk!<<;SHP)?BUi!tkV;)k/YZrr@]C^B"4_~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!fb4=ou7"1J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UMU`l7Vj!<%E~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UMK^V9BU!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE[g#l9E4$4/JMs8W&u!.FkH$qL?u8H8_dG96qp-s?EHs5*h?mJm4D!9itQrr<$imf3=E!9f"6 _#FMe9GIQEs.mm;;YSE6;Q.g%rrfbd#8V4Jrrf,;#>+QPrrA&M`W5sf~> q>Z$:fCJXZ#f9ab"U[&Gbfp%d!3H1D$k<7;R`s!m9+h:7-<0ics0;XEmEGU9!64QQrr<%fm`b^: !60T6^run$1C4&4biR(I;YSE6;M!'%bQN&.!uc4NbQMAa#uSj8bk_8=NUt-irI=~> q>Z$'fAH9X#X`]pR#lSW1Gf#u&3;U'1mXPt4u4u_I$9q[JmnL3s$-Q@m5+c-!&X4%s-WjNmPFl. !&T6_^bZ'0$NU7E1Si7n;YSE6;Q.g%1B_NUQA/<.1BS6k"<UGIo=k;(J,~> JcE^h$26@Y"\_r?)uos;!!=2?s6]dc#tY*rBE/66=Y9sUs8N'!8F?HW!!#R[s8N'!8FHNX!!#Q@ s1nX:b&NpO_Z-IVs&/m@s&/j?s&/j?s&/m@s&,i?P5ba7!!H4D!(Zte!WCXIrrq0``VUe/J,~> q>Z$:fCJ[[$,$oN$:@)g1X+)B!!>(%bc:XB$(B)^*rlX;6Q-@/bl7YCRdJ?!!!&JXbl7YCRdSE" !!&I=beVF)=CZ[XJ^!9#s&/m@s&/j?s&/j?s&/m@s&+El]$(A$!!Ypu!,h_Y!QhG?bQWY/[([Si SBUg/!0-Ti!<%E~> q>Z$'fAHuKYR7I02!A>u#1Be@!0Im5R S2:!@!/'mX!<%E~> JcE^h)1qnsfDkmM[/^.+!!EARs.08l!(d.b!!$4%rrD$Ss8N'!8F?HW!!#R[s8N'!8FHNX!!#Q@ s1\L6nc6Q,V9Js;s31L@rlkC?rlkC?s31L@WQ^S+#lZ1O=9%C_"RZ0f!V-6frs!1#s8V?fr0@9^ NUt-irI=~> q>Z$:fCJ[[)(5J!_T^6GM9O0D!!i\FbV0(u!1M-H!!&kpbQ+L9bl7YCRdJ?!!!&JXbl7YCRdSE" !!&I=beD:%ZiG[$k03j's31L@rlkC?rlkC?s31L@J]taM#g*DQPK]Kr#0Hhf!OMk(bQS`3bflmi SBUg/!0-Ti!<%E~> q>Z$'fAH JcEai"8W#u?2FU$!"Ua`4o,R'!!#RipAb1.QdGU/!;QHl&J>'=HQr\-?L\!oN[P)7(d[rp!!!W. ruCro.Kp/>s8N'!8H8Yh!)b`i&4o)Jd-s7u]qJc5TLnc8Uf#Q=scs8Voq\X!0pNUt-irI=~> q>Z$:fCJ^\"2Y'=SbgS1!"WoHH,B\6!!&J3^&S-_KWk6r!5JF3&KT*3:D3dF@*6^9=Vh,C)*Yh5 !!"&:bT+W+(]k.-bfg%eR`rkR!2duO!!'LN=Vh,C)*Yh5!"^0p_+t^G(1>;/bQ%Wu0*7Pmbg=Q7 ZiG[$k03j'!6kF?!6k=<"3aY@bl1Lkbe)()[f?EEbejD\[/J2LZiL$J#Kd+Vbfmp(^7ELDrrA&M `W5sf~> q>Z$'fAH?Z"%\fI4Sgl6R1FY46q3PKR@-5p;43hq;EXe3!)EH[&RI7]HBOVN>r4>sG*&)WMK2Ji R/gRj1E8T$OI2,I1GbGe4u56fR639-R@-#oG*&)WMK2JiR1N[\7!b#_Lg;hn1RXY5MO6SY1XIoY )?@W1V9Js;!6kF?!6k=<"3aY@bl1M>b`agg?^[ JcEai"7Z?k]DDR-!"27L$I\uh!!#Ris'Yd*!>::fruLuD!!!sFCApp-)Ho'"+ogF"!%qSK(].P> !#o9[qu8Ea!!5Sm-3*uF!(d.h!!#doo`+uUhZ*X/?:Yn0?N:'F?Y]R7!#f$"!$VCB!!!'G>\Sch d/O.;!5ec4bl1KBbYh?_qbdFdr&rrE+XQ2^iD o>Ue/J,~> q>Z$:fCJ^\"0qn,^\Z1S!"5,#&9.]E!!&J3bT6W^!?I-sbT4Vq!!#&R?HO#`.7tKY6-P8f!&mM+ $H,Uibe)()X8i7Abf]tdV>\U=ZiL$J#JpJTbfn30 [[kY q>Z$'fAH?Z")40k2Yo60R0u?IG_2>GR@-5p1m@m+!J3Z91EAl)R@/8?:-"Q,IWgsD>;LYpRPaQuDPaP`31RXYu H?_Q'1XIoY)?@W1V9Jp:"3aY@bkk9 JcEai"7Z?k]DDR-!"DK;!#l.9!!#Ris8.EorVus#]DMX.!#J3+s60La>[L\8!Rfj*!0Yk*rVult !(ctd0_#,CIfKHIs8N'!8H8Yh!)W^g!!&5?!!&23pAP$k!!#Ris60La>[L\8!RguJ!#pLhc2Rh8 !5ec4bl:T@bl:T?bl:T?bl:T@bl:S?b`i&5m/R.Ns8N'!:&k.o!!*!#"Le@,!4Dh+! q>Z$:fCJ^\"0qn,^\Z1S!"GAr!!WeQ!!&J3bemHorVus#^\c7T!#M*Jbb>(=9M@hS!Q0fq!/dr% aiqs/!1Nc.0XC`ZT$5F#bfg%eR`rkR!348S!!'Kd!!%nZb/qlO!!&J3bb>(=9M@hS!Q3+]!&]>O c--3q!.iAVbl:T@bl:T?bl:T?bl:T@bl:Rlbe)(*X8i7Abf]tdV9Jl>!!*!"$,4X#!5?\$aoJl@ bk_8=NUt-irI=~> q>Z$'fAH?Z")40k2Yo60R12?9R@&[aR@-5p1I?;NrgScQ1GbGe4u56fR6!-+R@-$_R@-f71H@6IR@-5p1N]%NF*!#&Qo-[fR9kG# bqfA=!5^Ogbl:T@bl:T?bl:T?bl:T@bl:S?b`aghG+"aT1H(Yh4>Zs;rrE$!#r+4b!&68c0`Wr! 1\q%NKCchXrI=~> JcEai"8Mrt?Ma^%!!l-h!!"PL!!#RfrrhGQ!!#dks8N'$8H8_Bq>^qkrIQ-l!!>[brr<$iqYpZ\ !!)]is8N':8H8Yh!)NXf!!&5]Jfk$n"%E"b!!#Ris4I/J"IT2h!(;D q>Z$:fCJ^\"2Y'=T)-\2!!o%*!!$-F!!&JcbQP(]!!&ekbl7YFR`s!&q>^r6a\WQL!!Z-?bQ%X3 qTK&5!!(1>bl7Y\R`rkR!348S!!'LM:_<[-##*4a!!&J3b^90d"LuYU!0DcUc--3q!.iAVbl:T@ bl:T?bl:T?bl:T@bl:Rlbe)()[f?EDbejD\[/J2LZiL$J#Kd+Vbfmp(^7ELDrrA&M`W5sf~> q>Z$'fAH?Z"%\fI4Sgl6R0YuWR@-Z'R@-8;1BfU*GaXs^q_S8?"$SLsK)1lD3')AMR@04K1GbGe 55I&;I$pBZr%nA@)*Ti;R@-)l>+(d<3dR$YR?D):1RXXp1GaXZR05K*R@-9j1X.]V)?@W1V9Js; s31L@rlkC?rlkC?s31L@WQ^P^#[j'g2D[gjR5k.$!?(t91C#W70f(U7!&C*$q>UGIo=k;(J,~> JcE^h*e=;"gAh3P[K$7,!(d-/!NZ5#!(d.eM=giJqZ$V+qu6p(!(R"gkPt_;rr3Ghs8;iqp!!I: ErQ4A7f*-4nGiQ=s8W)urr<$is8N0$63#a@!0d?Zs7OV:!-8)A!(R"gkPt_;rr3/`s8N'!8:gfc rrMZj_Z-FUrDNC6rDKTPNrVloh!;ld#BKuOsl37*NrrA&M`W5sf~> q>Z$:fCJ[[*[Uk&_p$?IMTj9E!1M+K!PHVV!1M-OK?DE^`;fn?qof;8rlbhMbf7lN ^Qnj"Z-34KQMSfQZiC*!bfn2QbQ%X3bf^"eMTgnW!4TtlbeKGD!3s`K!1(jQT`>;8rlbPEbfg%e RXr]-bQ5'NJ^!6"rDNC6rDJ3j]$(H:"4RfEZ7rQG;L!;jtD'S=QQV$W[9q>UGSo>Ue/J,~> q>Z$'fAHUGIo=k;(J,~> JcE^h*qhDj##88G)uoptb4u MuPp?%UXY]s"A$c!_-?As8N'!8H8^#!!ZO;!!&5E%7FJq!!%rW4TGt!IJuq@#uk%_#ljo)!(_\@ c2Rh8!5ebebdkr\rs$gM"B6QF7/[&cnc8Re"ks='pgGtCrrA&M`W5sf~> q>Z$:fCJ[[*kMp_$:R8k1X+&C!1M-K^!+\#!1M-J!"M.a)up>dqofuf!$"[haqk$j8OFO.baK5. 9JHMI[`f-[*))4ebV73c!!GVV(!Ol%!1M-U'`\S0"98G2RM7kX0`V3^bR=Ik9Spn.!"qjj*Y$?; !!&I=bg"?4ZiG[$J]s%r#''\J8-]-1r6,2K!;jtDJe#3&*aYA\q>UGSo>Ue/J,~> q>Z$'fAHcB5PaR7_q_K1WR=B9C3L#qfFF'$t1OP() FGuWU3&?kgIrdmQ1GCYKR?D`>L,1WRR6ED_PaR>RR$j@%I#>s2OFAuA R@-6i1X.]V)?@W1J]t[KOu!;iR>lBWR7R63!?(t81Be=!0Im5RS2:!@!/'mX!<%E~> JcE[g$i,Q1#RE/Fs8N'!8GrMf!!u3rrJ q>Z$:fCJXZ$c,p`":?oCbfg%eRf(D0!"#+UGSo>Ue/J,~> q>Z$'fAH9X$Uf-!R#u\Z1GbGe55[5:R0c&54)g"@R#l>JqD0((P*hY.1IQMOR#uhu1L>`uR$<1u 1G`^-R$gMB1G:t9P*h>K1GbGe4u4usO-Y6&R@-$@KThdfJkn0YBTeaN82EYZP*hA\<\lP"R6H0X cSG_4!<<*#!Q6dFbdkr[1B_NUQ\JK:1BABoqD/3d! JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE^hqZ$[Ns8Vrr$SVP[!!!;ss8N'!8G<)`hZ2m1s8N'!8FHNXhZ2kks/H#$mSO<#=2b-7bl(H6 bl(G q>Z$:fCJ[[qZ$\*bfoqa$Xh3&!!!JNbfg%eReFu*Z2ho7bl7YCRdSE"Z2hmqbc/ehW@e>e@Y)bd bl(H6bl(Fjbdbk"FW:K%Eq7EW@LWW@b+-]OrrA&M`W5sf~> q>Z$'fAH JcE^hrr<$ q>Z$:fCJ[[rr<$[r_*KPbfg%e3rVeSM9O3C!!S8(bQ%X3p<bQ5heqof4s%CEhj@@YR;rrA&M `W5sf~> q>Z$'fAHi31RXXpp+u`:!']p/s-WjNmPFm2!'YriW\Xf+ "=Q&U/As?@bl:T@bl:T?bl:T?bl:T@bl:S?b`XadHC9e;R$gJB1BB-Zq_JBf$ns16.%E*hrr@]C ^B"4_~> JcE^hrr<$iqu?Zr!(d"erW!*.q#: q>Z$:fCJ[[rr<%fqoo'?!1Nf/rW!*4bKKqdReFu*!!&JXbl7YCRdSE"!!&I=bc8kf8RR+njNRX% s31L@rlkC?rlkC?s31L@J]taM#g*DQPK]Kr#0Hhf!OMk(bQS`3bflmiSBUg/!0-Ti!<%E~> q>Z$'fAH JcE^hrr<$iqu?Zr!(d"err;?4r?;?4r<;?P-@;U#,< WQ^S+#kJ#r_Z0H4!.k+K!V-6grs/N.MZ<_Q!4eBp!0-Ti!<%E~> q>Z$:fCJ[[rr<%fqoo'?!1Nf/rr;"qu?^;qog&"=r7;M3m>eJ!1M-R !!&n?\c;`>b#oM^"W9M=qu@9Kbe['g!Z#1dbfg%eLG&^sJ]tdN!=lVjbiI"J;?4r?;?4r<;?P-@ ;U#,#Jq>UGSo>Ue/J,~> q>Z$'fAHUGIo=k;(J,~> JcE^hrr<$UH!#o9[qu8Ea!!5Sm-3*uF !(d.h!!#doo`+uUhZ*X/?:Yn0?N:'F?Y]R7!#f$"!$VCB!!!'G>\Sch]`/-CW@8$(\&Adr&rrE+XQ2^iDo>Ue/J,~> q>Z$:fCJ[[rr<$[r_*L,bfg%e3rVel]$/@u!0mj'b5_O2bfU\$.7tKY6,ZFs!'3e[r6-t?,QIp3 6PRbg!!&J3aT)=?bdmcS[u::e2bGk5`(U.23_Wl&('#dU)?<(IbQ%VF0h7gdbe2.'!ceqY19uJT kfj$("3aY@bkk9ibe)()X8i7Abf]tdV>\U=ZiL$J#JpJTbfn30[[kY q>Z$'fAH=PaQuDPaP`31RXYuH?_Q'1V>LI!#>Y<&MV-Z V9Jp:"3aY@bkk9 JcE^hqZ$\4s8Vrr)/B3O!!#R;!+Q!/8H7oS!F/u9!!1OJ!!#Rds"NsC!.OtJrr;uu!(d.h!!#jq o`+uUhZ*Y>eFrk@rr<$is8V<`!F/u9!!1OJ!!!shs1/.6#8PeeRgA`,s/!s>;ZFu@;Z=o?;Z=o? ;ZFu@;Q7m(rsA&m!9sO`!!#anr q>Z$:fCJ[[qZ$]$bfoqa)6_9.!!&I*!1*ZcR`qK+!_c9U!!1!]!!&JabV6@'!1qEYaiqs/!1M-R !!'%C\c;`>MZr;ls!rW3D?bea@obfn30[[kY q>Z$'fAH JcE^hrr<$iqu?Zr!(d"err<^Ycrr<$iqYpZ\!!)]is8N':8H8Yh!)NXf!!&5] Jfk$n"%E"b!!#Ris4I/J"IT2h!(;D<\c2jkAcMf.!1Ln,V9Js;s31L@rlkC?rlkC?s31L@WQ^S+ #kJ#r_#O62!.k+K!V-6grs/N.MuWhR!4eBp!0-Ti!<%E~> q>Z$:fCJ[[rr<%fqoo'?!1Nf/rr<=n`Wm4Y!1M,Yq>^Z.bQ%X3qTK&5!!(1>bl7Y\R`rkR!348S !!'LM:_<[-##*4a!!&J3b^90d"LuYU!0DcU\]b6bWm&],!4d[)l-00*s31L@rlkC?rlkC?s31L@ J]taM#e'd6^s'[r!4;^K!OMk)bQl8l[`lt4!5>#Jq>UGSo>Ue/J,~> q>Z$'fAHUGIo=k;(J,~> JcE^hrr<$iqu?Zr!(d"err<*ks31HB"\A[W!!CmQrrqNarrW6jqYqr5!!%NKs8N&u!!#RirrW6e s4mYTPPkCZp!!I:ErQ4A7fWMP!!CmQrrqNarr<$iJcE:\#+K3(s82kd`W)aXrDNC6rDKTPNrVloh!;ld#BKuOsl37*NrrA&M`W5sf~> q>Z$:fCJ[[rr<%fqoo'?!1Nf/rr<+hb\$hS"e*Z/!!^C@bQXrhbQ.^0qTL=o!!&\9bfS)Q!!&J3 b5hU#b_Z<"\&QY9^Qnj"Z-34KQH[RH!!^C@bQXrhbQ%X3J]t[K"t-Fpbf0XnJ^!?%rDNC6rDJ3j ]$(H:"4RfEZ7rQG;L!;jtD'S=QQV$W[9q>UGSo>Ue/J,~> q>Z$'fAHs-'1Bg6(1RORoqD0L2R@-/n1H@6IR@-5p 2OKmt1O>IW3'8uQ4C4GD3A[%j4u5!:R>s-'1Bg6(1RXXpJMXhm"p?S81FrM\`A==6rDNC6rDKT< P;UGIo=k;(J,~> JcE^hrr<$l?[_oJ!!uV-1'mp[!!#Q@s1/.6knMbJSdG22s+/D)b`_u1 ci=2J+ok%/rrMZjqu6iS#fl^K1R.n>NUt-irI=~> q>Z$:fCJ[[rr<$[r_*K+bfg%e3rVelAB`6t!1M-O"onXlbfU_%&kPG3%F!$)!$"[hr6-k<,QIs6 6l!qi!!&J3bS:*b70ESj\!e!n9JHMI[`f-[*))43(B>(>6QQ]\bQ%X3J]t[K#,3NY``WhqJ]r\h Nm%]J!!Yt!!,MMV!OMk(bQWS.[D!\gSBUg/!0-Ti!<%E~> q>Z$'fAHLHB JcE^hqZ$[5s8Vrr)]&JR!!#Ris2G$=8H8_dI3f%&/9(XhgaW@*0Dkc&r.la(#WMe`!!#Ris6`&R +-cg+POM0`"9Tcgs8Uk(!WXnRqL'Xn#V9rprr<$iJcE7["MQ/b/@WRtJ]t[KOoGTk0a8A.rqucs nc8Od"J?Y;8+MoE!0-Ti!<%E~> q>Z$:fCJ[[qZ$[Ebfoqa)^`eQ!!&J3b[(8LR`s!l;%s'=/8EDQL)'di@/J/$``NuW$9?>S!!&J3 bc2ff-B8'+\$%P!!X0cjbfkeW!q !OMk'bQM;^#Z&U5bk_8=NUt-irI=~> q>Z$'fAH JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcE^hrr<6os8VQg!5/+-!&+6Lr;[*))f, q>Z$:fCJ[[rr<7lbfm"!+>]Jr;[***c&sCbQ%X3lHK8.!1N/r$c6'e"U[&Gbfg%eRdSE" Z2hmqbg=Q:@LWW@b(7cfb`'aKFW:K%Eq7EW@LWW@b+-]OrrA&M`W5sf~> q>Z$'fAH JcE^hrr<6os8VQg!5SS@rr<-??XJ6Ys8N'+)dcSI!&jlW!!#RTs8QF+N9^EOpGW'U9NE;Us8N'! 8FHNX!!#Q@s3^iMg^(mo?o q>Z$:fCJ[[rr<7lbfmUGSo>Ue/ J,~> q>Z$'fAHUGIo=k;( J,~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o$:t3s\c;s7rr<$id/ON,!"7EYs8KD*rr<$imf3:e!(_\@ dJjDb4obQI"oNrOJcCf2#lZ1O=9%C_"RZ0f!V-6frs!1#s8V?fr0@9^NUt-irI=~> q>Z$:fCJ[[rr<7lbfm q>Z$'fAH/2K'r$%Xm`1QF6s31$$s1NJnC2#T32)?BXj"Tg521DC.c1\q%NKCchXrI=~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o1e@ZHhZ*]Wrr<$bBFPMus/Q,@s8V]k!nmR5-jBek63$rb !(d.ir/)s-$9A.cN[P)7(d\'!"8W#u?2FU$!"qj&rVupms7H?lPQ$Rj"p>c/q"t+'&c_ZR,6\`e nGiLg!'XHg8V-p&rs/N.MZ<_Q!4d[\JcCf2#kJ#r_Z0H4!.k+K!V-6grs/N.MZ<_Q!4eBp!0-Ti !<%E~> q>Z$:fCJ[[rr<7lbfmq '*8qWb08'0!/E3/R=WTCbQl8l[`lt4!5=$.J]s2!#e'd6_9Bds!4;^K!OMk)bQl8l[`lt4!5>#J q>UGSo>Ue/J,~> q>Z$'fAHk E\fM>R6ED_5';sSODZj6G*&)WMK8SM"%\fI4Sgl6R1_\>3glBu1K^'53&l)CR$NVM:AgLk?8Fuq P*^u11c$qUR95?65(PNN1C#W70f(U7!&B*]JMW?C#[a!f2D[diR5k.$!?(t91C#W70f(U7!&C*$ q>UGIo=k;(J,~> JcE^hrr<6os8VQg!6+s;rr<$iq#C?o1e@Z>CB+eCrr<$$4[B&Mi:?pMh#GCp)ZS[p!%qSK(]XL8 !(d.iB)i!%=sa4+!!"WX8/M1'"7Z?k]DDR-!%:Dqq q>Z$'fAHW1gHH31c'rU=>P>mR PaQuDPaP`31RXYuH?_Q'1ZU=s.0)(Y1GJkaJMVj5O#%&bR@,lf2OTsqrA+Hm!;nVX.0)(Y1GJka SMU*A!/'mX!<%E~> JcE^hrr<6os8VQg!65$3>6"]P rr<$ q>Z$:fCJ[[rr<7lbfm!!*!"$,4X#!5?\$aoJl@bk_8= NUt-irI=~> q>Z$'fAHZs;rrE$!#r+4b!&68c0`Wr!1\q%N KCchXrI=~> JcE^h#SmD-s8VKe!8RSRrr<$iq#C?o"<1]WI*DTirr=-0s7cQoHiN4.$h=9&qZ$MG+92BD7JQl_ !(d.Q!!)]jrs/LS+92BD7JQf\"8Mrt?Ma^%!#\?-rVupos7H?lPPp(U!!!*iq#:^Yc rr<$eJcF^/#Q=sds8Voq\Ujd3s,[0co)Jd+s7u]qJc5TLnc8Uf#Q=sds8Voq\X!0pNUt-irI=~> q>Z$:fCJ[[#R(3hbfm3i!65#^rr<%fprra<"?K4QCps>err=.+beF,XZHSa;'"%]IbKS()&HDe8 9ZtW[!1M-'!!(1?bQl6d&HDe89[!@X"2Y'=T)-\2!#_6LaT)=@bdmcS\&hGY!!!3sbKKqdR`s!& q>^Z.bQ%X)J^!)s#Kd+Vbfmp(^4FLZb`BsR[f?EDbejD\[/J2LZiL$J#Kd+Vbfmp(^7ELDrrA&M `W5sf~> q>Z$'fAHrVa=s-Xrm1JX@+3&>TCFC:Mg1G_()*Ti;R@-)l>+(d<3dR$YR?D):1RXXp1GaXZ R05K*R@-9j1Z:+p0`Wpa1FW;ZJMVj5O#%&LR@,rh7[]Z(rA+Hm!;nVX0`Wpa1FW;ZSMU*A!/'mX !<%E~> JcE^h#BBefs8U4A#Q=]&!!#Rbs8N'!8G`Ad!%UV?p](;@s8P:`;ueQNs8;iqp!!I:ErQ+>8H82[ !.Y%Krr;ops7OV:!-7u:."M@,gAh3P[K$7,!(d.i!rtXeh#IG=r;HZgbl@`arrW6js8V9_"5*VQ "m,da!!#Q@s5 q>Z$:fCJ[[#8[A+bfjVu$iSbf^Cp3riU2bf7lN^Qnj"Z-31J R`r,=!2.Q[aiqcKbeKGD!3uFF-mep0_p$?IMTj9E!1M-T! q>Z$'fAHScU?C@3A1RORo1Ga-@ N\p_k"\(:(R@-6i1Z1%m!\?,`'FB=HJMW JcE^h#N>^a3*?Of8H&Sg!!#Rbs8N'!8G`Ad!%UV?p](;@s8URK!!0G+s5a\X>tb4uMuNbW8H8^' !!5Vn.0&B<6sWId!/paS1%mF(##88G)uopl?[_oJ!!uV- 1'mp[!!#Q@s5Q<$D<1r;Qfg!;ld"gBbjp@5F/J!0-Ti!<%E~> q>Z$:fCJ[[#ESod4$iuKE;e#\!!&J_bl7YCRek8.!%XM^^An8>bfk)-!!0gXbaK5.9JHMI[`e^O R`rr#!!GVV(!N*\4A7I0!4MdK0tRqr$:R8k1X+&C!1M-U'`\S0"98G2RM7kX0`V3^bR=Ik9Spn. !"qjj*Y$?;!!&I=bi$\KJe#3&*aXEAJ]s+t#''\J8-]-1r6,2K!;jtDJe#3&*aYA\q>UGSo>Ue/ J,~> q>Z$'fAH.CR/fGG1]NjC55I)8R4CHW:77M01GaWNR@#lg1OP()FGuWU3&?tj 4u5$YR?D`>L,447G]\n4R5k("0i"%&N-'H5:bsnqR6ED_PaR>RR$j@%I#>s2OFAuAR@-6i1Z1%m&.LUGIo=k;( J,~> JcE[g#0]IE"!DgerVult!(cnbrr<$iqZ$Qq$V:W/ELFri<0ol;6!!#Ris6`&R+-cg+POM0`"9Tcgs8Uk(!WXnRqL'Xn#V9rp rr<$iJcFX-"J?Y;8+M62JcC]/"g]of'l3gHrrMZjqYp\k)?r_&PlC`Co>Ue/J,~> q>Z$:fCJXZ"b\?1"s\9gbl7YCReY,,!!&Jabl7YNR`rMH!4'hm`<6/\rlc=b1(aQk,'D,R!!&J3 bf3a#!=Cj2Y;-[k"X8*bbV6k8)?^C&N6KKG!1M-UWZ_EjNW9'gY;-[k"X8*5b_?l6!+=$e;%s'= /8EDQ!!&I=bhpVI?jm<:b(7cfb`'aKEZ+usDYqWYZiKsH"CMWD:Wf3Oq>UGSo>Ue/J,~> q>Z$'fAH9X"_3FUQ%Dj11]NjC556r6R/fGI1]NjN4u5s%R5cuY6C=0Sr\GL"KThdfJkn0YR@-5p 1I$&GR#l2A?A+N0P_)^,1GD4>OI2/V5;P*`R6ED_=HAbs@%!EB?A+N0P_)[e1MDr=R7K,%H'4PW ITA6\R@-6i1Z'tj&ci+SJMVj5M_bKPOI(]$q_J6k!;\JR&ci+SRksm?!/'mX!<%E~> JcD,;!d+K?JcC<$JcC<$JcCN*!0-Ti!<%E~> q>Z$:fCI).!YtcsJ]r\hJ]r\hJ]s2!q>UGSo>Ue/J,~> q>Z$'fAF_,!gK*;JMVj5JMVj5JMW?Cq>UGIo=k;(J,~> JcD2="N"4?#4I-CJcC<$JcC<$L]7@6o>Ue/J,~> q>Z$:fCI/0"CF=m$H[kCJ]r\hJ]r\hO3IG"!0-Ti!<%E~> q>Z$'fAFe."E&gZKJ\69JMVj5JMVj5O#-V3!/'mX!<%E~> JcD2=".fN.Q\#0fs+13$s+13)rrA&M`W5sf~> q>Z$:fCI/0"!.I^U4LO>b^muhb^muubk_8=NUt-irI=~> q>Z$'fAFe."-T%)4+T2=1P%?51P%?B1\q%NKCchXrI=~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>o5JXM(WJXM(WJXM(WXI8na!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!0-Ti!<%E~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcE[g&,M/;$4/JMs8Vq>*s;p!=oSF*qMHs6#r7Y>s8N'+8H8^^!!7uV!!#Q@s+gUVeP$\X_Z-FU rDNC6rDKTUe/J,~> q>Z$:fCJXZ&&MKi"U[&Gbfmps&crIg<;t)G_HIo_$8[_=bl7YMR`ruT!!AP2!!&I=b_OCEE\e"% J^!6"rDNC6rDJ3j\BG(u*!7+"o#q5G%1,nSSBUg/!0-Ti!<%E~> q>Z$'fAH9X%mtH"R#lSW1G_FHPF.Ja@K&%e6ZeBVOEj%d1]NjM4u5$KR?TlkR@-6i1P[ag(^g?E _DA"3rDNC6rDKT JcE^h)YZ/j"\_r?)uoqO!!Z;'/dMFVpGW'U9NE;UqZ$Qq$:t2r!!.QKs'K,lJcCN*"3PVR!5ec4 bl:T@bl:T?bl:T?bl:T@bl:S?b`_u1dJsDK+TP%1rrN)Mqu6iT#fZRH23e+@NUt-irI=~> q>Z$:fCJ[[)SH^_$:@)g1X+&b!")1_)@Od5]b(5O6U;/;qTSs>$C]1D!!85*bY1^3J]rnn"'B&[ !.iAVbl:T@bl:T?bl:T?bl:T@bl:Rlbdu"&FT;V9#68Z>bQ5heqof4s%CEhj@@YR;rrA&M`W5sf~> q>Z$'fAHQ*4P(GJG9pV3+FaTKOqD8/>$9g7rR?g)o1NRUuJMW';!u)[e !5^Ogbl:T@bl:T?bl:T?bl:T@bl:S?b`XadHC9e;R$gJB1BB-Zq_JBf$ns16.%E*hrr@]C^B"4_~> JcE^h%"eNffDkmM[/]n$!*]C%$K;$bK)c;2s8W)*qZ$Qq"A#j!!HitnJcGcM!V-6-s/!s>;ZFu@ ;Z=o?;Z=o?;ZFu@;Q7m(rs8TO!*B3_!!M]frrMZjqu6k74obQI"oOYc!0-Ti!<%E~> q>Z$:fCJ[[$n))i_T^6GM9N^7!2]\=$Dktj-iasubfn1cqTSs>"I`j$!f2EOJ^"/s!0bWr!!^RDbQ5'Nqof3YJBZ66$(T68rrA&M`W5sf~> q>Z$'fAH"?q7%Q9t7#!&T6_N&(JQ!5^Og bl:T@bl:T?bl:T?bl:T@bl:S?b`agg31$$s1NJnC2#T32)?BXj"Tg521DC.c1\q%NKCchXrI=~> JcEai"8W#u?2OX*pAb1.QdGa3"8W#u?1n6t!!=8B!G_T5rr=?9s8N'!5$%q[rr<$aAe,>Vr;Zcs !'k-,%:/o3rVupms7H?lPC`b6rrMZj_Z-IVs&&j@r_`a?qbdO?;Gta<;Q7m(rs82r!5ed4!!%TK rrMZjr;R$$#E&Q]q>e'krrA&M`W5sf~> q>Z$:fCJ^\"2Y'=SbpV7^&S-_KWkC!"2Y'=Sb:5,!!>Of!J(-mrrq<@bk_8=NUt-irI=~> q>Z$'fAH?Z"%\fI4Spo<;43hq;EXq7"%\fI4S:N1R0/&/Qpgm/s-XE^1GbGe=GiJ01RXY1KU7X" r\OSB%oe4KN*%kl3glBu1K^'53.Wlc1BABo_DA%4s&&j@r_`a?qbdO?;Gta<;Q7m(1C.?UR5Qii R@-&51BABor%eR4!&68c.0),o1\q%NKCchXrI=~> JcEai"7Z?k]DDO-@/U'0&rQ_Z!!'Y(s8;ot6i?ua!$t29rr<$#,[>'`!!!'[ q>Z$:fCJ^\"0qn,^\Z.S*W5sB*K84J!!'e,bl%MAEr=/]!%")XbQ%VF0h7hZ!!!-`4TPP!bfg%e "?SaI!,Tm$!!'"B\c;`>J]t.UGSo>Ue/J,~> q>Z$'fAH?Z")40k2Z#921m@m+#(f/tBpkAIoeZQ7!)!/Fs-Y/s1GbGeR!O!>1RXYuGCl3M7Pcig R@&2MR$gE"3glBt1K^'53.Wlc1BABo_DA%4r_`jB;Gta9;?4r?;?G'?;Q7m(1C//lR5?]XR@-29 1BABor%eR,!&68c0`Wr!1\q%NKCchXrI=~> JcEai"7Z?k]DDO/qh$0n!!NG9nGiR$p&Fsj!>!r`s8N'&8H8\i!#tn:rr q>Z$:fCJ^\"0qn,^\Z.U_c@EL!!NG=Z2am>p!!@7!?T8Zbl7YHR`rtU!&a`!rr

UGSo>Ue/J,~> q>Z$'fAH?Z")40k2Yo326?e^oR0Aj6BpkAIoeZQ7!I$C!1]NjH4u5!_R9ohJs-Xa&1GaoVIPWdJ R8PgsMOAoL3glBs1K^'53.Wlc1BABo_DA%4s&/m@s&/j?s&/j?s&/m@s&,i?P;UGIo=k;(J,~> JcEai"8Mrt?MFI*jdQ5M:AFnj?M4?u!!G%l!#";js8N'&8H8\i!(?ecrr^MHrVloh !;uj%rWeA]s7u`+Q2^iDo>Ue/J,~> q>Z$:fCJ^\"2Y'=T(gG7Y%I_7UV[$3T(U>-!!I-A!$fM_bl7YHR`rtU!0I0'rr q>Z$'fAH?Z"%\fI4SU]=1e2eYR64$-R6:-us-X"'R$i%Qr\OSB"[4^uR@-;<1]Nj\4u5!DR?fWb R@-5p1ObaX1HLql3\ss-R5faRW\XYo!5^Ogbl:T@bl:T?bl:T?bl:T@bl:S?b`agg@%!E@1Ide# 3;kW6)?B[k#;H351G^H[17^5srr@]C^B"4_~> JcE^h)M%ksgAh3P[K$,\o`+sg!!$O/JH-,4s8W)+qZ$Qq%nPdl!#=burr<$is8N'!8H&Sg!#[*_ s0_n5s8N'!-3+"R!!rW)!rtXeh#IG=JcDbM!V-6-s.mm;;YSE6;Q.g'rs8TN!*K9`!!MZerrMZj qu6k65QCcK"oOYc!0-Ti!<%E~> q>Z$:fCJ[[)C>G"_p$?IMTj(mb08)K!!'.F-3+h!bfn4eqTSs>&"8ge!%Z.7bQ%X3bfg%eRf1J1 !#\DQbY8'Hbfg%e9$GLR!"I/q!r!0k]s!!^RD bQ5'Nqof3XK$;H8$(T68rrA&M`W5sf~> q>Z$'fAH%mFHiR;Xo<1RXXp1GbGe55d;; R2JmY1Q%TM1GbGe;DU+dR=@"NR$g2qHC:0\JMX;^!?(sT1Si7n;YSE6;Q.g'1C,t,R6EEIR>j'% 1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> JcE^h)YPuf##88G)uo^6#=;]U!!_Nap+uaR:08b\qZ$Qq%nQ`X#lkk4rr<$is8N'!8H&Sg!#Yo" NUt-irI=~> q>Z$:fCJ[[)S6L[$:R8k1X*Z8%R!E(!"-cj]+4lK77%J?qTSs>&":_'!WY!ubQ%X3bfg%eRf1J1 !#Z#(4okY!bfg%e# q>Z$'fAH*OS:6q<,FF9BNqD8/>%mDd]R$h_H1RXXp1GbGe55d;; R2M?7Js_rq1GbGeQZdtJR78tgPaR>RR$j@%JMX;^!?(sT1P*c\b`XadI$ot;R$gMC1BABoq_JBe% 59:7.%E*hrr@]C^B"4_~> JcE[g&,Cu5#RE/Fs8@d?'a"h*[f6:2q1gR.#VhA9s8N'08H8_B"TTV9!!#Rirr<$irVult)*qpG $XET/rr<$bBFYDTqu?]a4p2sm!!&46s/c5(eH5mR!s?LAJ]t[KOoGTk0a8A.rqucsnc8Od"J?Y; 8+MoE!0-Ti!<%E~> q>Z$:fCJXZ&&D?d":?oCbfO6B$ipf#YPu`M_,qTY$8RS:bl7YRR`s!1!WY:(!!&J3bQ%X3rQP9A )3-f`%q<`+bQ%X'49c=*bKS21+Ta!N!!'KZbcK"lF92LD!WmqsJ]s(s"EGC^)/f>q!OMk'bQM;^ #Z&U5bk_8=NUt-irI=~> q>Z$'fAH9X%n(Q%R#u\Z1HTQ3Q'dYR3;t]<7!4TYOa97g1]NjR4u5!1R$hSDR@-5p1RXXprA4JA "B'o?N*-'8s-X!fKU@^#r\Fd]O-Y6&R@-$c1TWA9$NU5-! JcC`0rr<$iqZ$Qq!(_\@JcC<$JcC<$SGrSKo>Ue/J,~> q>Z$:fCH]#rr<%fqTSs>!1JJ_J]r\hJ]r\hUs/Z7!0-Ti!<%E~> q>Z$'fAF>!s-WjNqD8/>!'YriJMVj5JMVj5UbhiH!/'mX!<%E~> JcC`0rr<$iqZ$Qq!(_\@JcC<$JcC<$SGrSKo>Ue/J,~> q>Z$:fCH]#rr<%fqTSs>!1JJ_J]r\hJ]r\hUs/Z7!0-Ti!<%E~> q>Z$'fAF>!s-WjNqD8/>!'YriJMVj5JMVj5UbhiH!/'mX!<%E~> JcC`0rr<$iqZ$Qq!(_\@JcC<$JcC<$SGrSKo>Ue/J,~> q>Z$:fCH]#rr<%fqTSs>!1JJ_J]r\hJ]r\hUs/Z7!0-Ti!<%E~> q>Z$'fAF>!s-WjNqD8/>!'YriJMVj5JMVj5UbhiH!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&LuoJUlg3gWY6KMuNd:o>Ue/J,~> q>Z$:fCFL:J]s%rquD:ujFDg*J^!N*q>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?quD:ujFH"/JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&LuoJUlg3gWY6KMuNd:o>Ue/J,~> q>Z$:fCFL:J]s%rquD:ujFDg*J^!N*q>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?quD:ujFH"/JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&LuoJUlg3gWY6KMuNd:o>Ue/J,~> q>Z$:fCFL:J]s%rquD:ujFDg*J^!N*q>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?quD:ujFH"/JMWKGq>UGIo=k;(J,~> JcE^hrVuqHrr3U%!!#Rirr<$is8N'!8H8\i!(cqc"Qf[ts8W#t#Qbr\qZ$Qq!(cDTrr<$ii;Wk+ !-j(pb5VJB!r`9%ci3qImSO<#=3U^Bbc$'ls7:d@s87EIs42_Tb`_u1nmi[B$p(cerrf,;#>+QP rrA&M`W5sf~> q>Z$:fCJ[[rVur"rlbub!!&J3bQ%X3bfg%eR`rtU!1N`-"IT67bfp"c#Ql,`bKS01!1N2srr<%f i626H!1\Vab00hcr;lu:rlbME/d2ksbfotbW.=pJo76l@r.+hIepr=qm*#[=57[f*4g+D#"C_fH ;9GEQq>UGSo>Ue/J,~> q>Z$'fAH JcE^hrW!$>s8VKc!"VX#s'K,ls8N'!8H8\i!(cqc&P<%Cs8N'!)dcSI!&jlW!!#RTs8QF+N8X^< lMq:gJcEpn!<@cLrrr3DMYHY>bl@UbWIY!Jr.+hIqge\GrIFnIepuN!P5bbL!!?(5!!`,prrN)M qu6iT#fZRH23e+@NUt-irI=~> q>Z$:fCJ[[rW!$Wbfm*d!"YOBbY1^3bfg%eR`rtU!1Nc.'$CdcV9I-`!'3e8!l^)g^Qbk_8=NUt-irI=~> q>Z$'fAH(bVT.sWIY!Jr.+hIqge\GrIFnIepuN!P;UGIo=k;(J,~> JcE^hrr<<-!nI=B!WW3kqZ$Qq"\A[n!!#Rdrt=Jp#5\B"!!#Ris1/17s8N'!8B(T10E>a:s3(EC !/(1K!PC),s8:*@J-5h%s8W"Is8W"IrVukIrVtH!gWYl]#l+H#/H q>Z$:fCJ[[rr<<1"2rD;!WW4hqTSs>"e*ZZ!!&JabS$HH$HpZ;!!&J3bZ"QLbfg%eR` q>Z$'fAH"[4^uR@-881BMTbLAj"/R0l,61PhHR1GbGe5/oA\23sXm JMYJ*!<=hN1B@_/a><_oWdk3OJH,ZIJH,ZIJGoNIJGoN!JD8;31C-[BR7K,gR@,u31BABoq_JBW /2K'r$(NgIrr@]C^B"4_~> JcE^hrr q>Z$:fCJ[[rrgW!!C3_=Vh,C)*Z9g!!&J3bf3g'!Y%37aT)=q<@bk_8=NUt-irI=~> q>Z$'fAHa_!D1GbGe4u5!_R6ED_R@-881BNZ+<;n]RR6j(n1ObaX1GbGe;M:Bm 6Sj[h JcE^hrrJH,ZKJG]?UJH,Y"JH,Y"s8RV"s8UZ#gWYi\#5M[0;&'tqr;Qfg! ;uiuq>dr&rrE+XQ2^iDo>Ue/J,~> q>Z$:fCJ[[rrM J]u<]%0."B(LbJ1bQ;eu"uJH,ZKJG]?UJH,Y"JH,Y"s8RV"s8UZ#J^!K)#/;bn7Kbq q>Z$'fAH JcE^hrr q>Z$:fCJ[[rrUS62U]a5g.CM!WW6"!XZTb_ >q q>Z$'fAH JcE^hrrt#Q"K!Jfk$n"%E"b!!#Rik5YMTrVmW3!!#gpo`+uUrr<$gs5X.\q>Z3M)ufj=h>dY/s2Y-H l3%(d2.cgfquE21s8:*>JH,ZIJH,ZGJH,ZIJH,Z#JD8;3rs8,p!'U"f!!%*=rrMZjr;R$$#E/W^ q>e'krrA&M`W5sf~> q>Z$:fCJ[[rrV:i*T>bl7YbQ-?uC !4'h;!"u[>$d6c9:_<[-##*4a!!&J3ScAc5rQH"u!!'%C\c;`>bQ%X.ba8A2bKLk)1]GT"MZJH,ZIJH,ZGJH,ZIJH,Z#J:Yr3bQtKS!,fhr!!';&bQ5'Nr6,Dg !k-=s_>q<@bk_8=NUt-irI=~> q>Z$'fAHR07_TE*YF%1]Njb4u5s% R5d!CR<2i)Jho2DHBahcP%6@)R@-5pI$pBZrA,0LR@-)l>+(d<1RXXp1OPUX1Gb5_;#W6PJ!lCL 1WM9Y'*U0J!A?5b/-%EL1].6OJH,ZIJH,ZGJH,ZIJH,Z#JD8;31C.Z^R8>hmR@-)61BABor%eR4 !&68c.0),o1\q%NKCchXrI=~> JcE^hrrrr<$is8N'!8H8\i!(d.i!!#RdrrQa3/cPeM!!#Rds8N'Z8H8Gb!.4bG56+X_ 0)ttLrVuQ8!!%'>!!#RinGiQ=s8W)urrW6es4mYTPQ(U_8H7cO!WW1R!#tq;!m(ENJcEdj$L.`n s-mU"s82kdc2[^cWdt!Homm)Br.+hIepuN!PQ(pV!!$[3li7#hrVloh!;ld#BKuOsl37*NrrA&M `W5sf~> q>Z$:fCJ[[rrQ2kH!!&Jabl7Z'R`rMH!4'hl $ii?h?HgX5bfmhf!!':J!!&J3ZiC*!bfn2Qb5hU#b_Z<"\'+gPR`q3#!mJk,!&OVu!a,L;J]u0Y $DdsNbU9F7bf0Xnc-6(cWdt!Homm)Br.+hIepr=qmE>jUGSo>Ue/J,~> q>Z$'fAHIW3&?tj4u7SSQ8:=\R8El=!f37`JMY>& $53S!1B]?e1FrM\bqo7tWdt!Homm)Br.+hIepuN!P;UGIo=k;(J,~> JcE^hrr'JcEso&+I$u s4g9ps8VNUt-irI=~> q>Z$:fCJ[[rr q>Z$'fAHX1*coG1G]j`0eWkDbVT.sJUlg3gWYj;#XOiGLj#)PN&:Jh!?(t81Be=!0Im5RS2:!@!/'mX! <%E~> JcE^hrr<$ir;Zcs%nQa#!!#Rirr<$is8N'!8G`>lpB1QKs8N'!8G`Ad!"2?tp](;@s8Vs2!"f/0 0^q[R"9Tcgs8N'!8H8_fLaWB32uipG4p2sm!!&5_!!#RijT#>]s+LFls8Vp%!ORFXbl7n42@]g* @.F6r"MQ/b/@Wk'r60_BjFH"/P5baS?5WhP33<&X!V-6erreu5#"S6KrrA&M`W5sf~> q>Z$:fCJ[[rr<%fr650@&":_d!!&J3bQ%X3bfg%eRek56]`A2Qbfg%eRek8.!"57>^An8>bfn$/ !$)!^0X!5D!X0cjbfg%eR`s!q=;CoE3R#^I+Ta!N!!'LP!!&J3RK*E5bSgI;bfms+!ks60bfg9c +pS/f@ESSn"EP1Z1:#-JquD:ujFDg*m*#[63t;9#3i;i!!OMk'bQM;^#Z&U5bk_8=NUt-irI=~> q>Z$'fAH JcDMF!hfTUlMgp.!)_/D!n%&lJcC<$JcC<$JcEjl!0-Ti!<%E~> q>Z$:fCIJ9!^-O(lHB;F!0>OO!cA!)J]r\hJ]r\hJ]uNcq>UGSo>Ue/J,~> q>Z$'fAG+7!fWO8l8&L+R6T(T!eQh@JMVj5JMVj5JMY\0q>UGIo=k;(J,~> JcDMF!r6VOm/I4*Ue/J,~> q>Z$:fCIJ9!l@uFm*#T>4obr3dEDYu q>Z$'fAG+7!_@36ln\c^Jsh9Kd5(i?DDcu$JMVj5JMVj5d51Uu!/'mX!<%E~> JcCZ.".fN.Q\#0fs+13$s+138rrA&M`W5sf~> q>Z$:fCHW!"!.I^U4LO>b^muhb^n!/bk_8=NUt-irI=~> q>Z$'fAF7t"-T%)4+T2=1P%?51P%?Q1\q%NKCchXrI=~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> o`#'ns8NZ9nc&a_4TGHlr[.gQs0rY#pAY6E.KB\;rr^b#!!]"o"1S=2)ZB^9!!#R_s8N'!8F6?] jo?(prr<$irr;uu#>"mp!!#Ris8;p'!ZPqOs8RHHG_,mqrr^eF'`c,NUs/d8pWWS6W6CD("L^)k (2i^C"Jd"B8bA8I!0-Ti!<%E~> q>^Ea#OhWjp]1Bjs7uWjndO).!!")e,pWoiGR7dOncOUQ!"A,_",7*^%&rgjbQC34!&FMsrr<%f p!!F9!1N8u#FPQ:bfg%eRf:P2!!et:bQ%X3bfp"c#Ql,`bKS0S!1\VaX3:Zd1C4&4biR(I;YSE6 ;M!'%bQN&.!uc4NbQMAa#uSj8bk_8=NUt-irI=~> q>^ENs8N8ds8VfmqYC'dh[I;rR@0hGUnajFZ'rl0hZL3RRA]<,"1+GaVlASH1BWT(R99DDs-WjN oeZW9!']a*#Aff@1GbGe55mAUGIo=k;(J,~> p&>9rn,)SY$hX#cq>1+!li7$Os8Va*ruV4`p&>)+!#+Sr!bVKHT)Sun-NF,Kjo5;[!!#R_s8N'! 8F6?]8cWl2rr<$irr;uu'hJB)!!#Rirr<$Ue/J,~> q>^Ea#Q=Z%o`kTus7uWindEP>!8@#7h'hh"!(uqT!Z1ndkjecl!%Fo"'B&[!.iAVbl:T@ bl:T?bl:T?bl:T@bl:Rlbdu"&FT;V9#68Z>bQ5heqof4s%CEhj@@YR;rrA&M`W5sf~> q>^ENrVlups8D<[s8(U\[$d?;hquGlhjTtSp"oh@RDe=H!h>[rWSdD*"ZVj:R?09)1]NjC54p`3 R/fG<1C,n)R6*2\R@-8<1]NjW4u5!_R6ED_R@/8?Js_s!1G`j8H@[lQ1BS=1&cfd)V9Js;s31L@ rlkC?rlkC?s31L@WQ^M]#'u\tGF4dgr%e@,/,M++&I^?D""9Zqq>UGIo=k;(J,~> o`#-ms8E3&s8;Hf$dJ_Ro)Jafci;pfmem(drn6E4rr`6/!&=*F!rgm7qYpZs$ii&SrrqZf""aLP rr;uu!(ce_rr<$imJdIT!!`<"rr<$irr;uu%nQa#!!#Rirr<$is8TY1#6+W(0E>a:s/Q)"nc6Q, V9Js;s31L@rlkC?rlkC?s31L@WQ^S+#lZ1O=9%C_"RZ0f!V-6frs!1#s8V?fr0@9^NUt-irI=~> q>^Ea!<2utrrE*!q>'mX$[;XRn+-&7cgnB+melVWm`O\kncS=_!."2,!q+4nqXOaW!s!VGo(L92 V#UZ*!1*W.rr<%fp!!F9!1NUGS o>Ue/J,~> q>^EN#3c*Im.9f8q#C3J!iMHVrndk0gY^#lqqhJ0e)()]"5K?5dIZ5sgXG$UhZMW%RF8(lp+lki R?*]&55mA*LR23sXmJMX;^ !?(sT1Sr=q;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(1C,t,R6EEIR>j'%1BABoq_JBW/2K'r$(NgIrr@]C ^B"4_~> o`#-brppO0p@\7ZqYrIB!"Ao-T!A)Q!!$'q3rf7B2uj&Rs8V]k!+c,^5=?n5=8Dml3rf7B2uj&R s8Vk2'K9%m!+hc%"fD><[f@-As8N'=8H8\i!'k-,%:/o3rr<$bBFPMus8U:o%K[25f)#CJV#VG5 s8N'!8H/Yh!"VX#rr<$is8N'!8H8_I!!3*!!j2M@JcDbM!V-6-s/!s>;?4r?;?4r<;?P-@;U#,< WQ^S+#kJ#r_Z0H4!.k+K!V-6grs/N.MZ<_Q!4eBp!0-Ti!<%E~> q>^Ea#5IlkoE56hq#1'[2CJPBo("Eljtm&<^udHR!-odh#2&M;f`2#pnrGOk()q#Yo&_b/!-odh #2&M;iD'hJCB+@WWUfc,"Z$-35l`20bl7YLR`rtU!/ioD&7b^`rr#Jq>UGSo>Ue/J,~> q>^ENs8N)co`+dF2P6DGhqt*_d%Qkqg!HF\RCAcUTA8>]_O6hGhmoYdSYO$YhpA'bRCAcUTA8>] dA`\>Z^I68WSdD*"cf!QN1")Q1]NjL4u5!_R8ej+N*-'8s-XUGIo=k;(J,~> p&>7/"pPJ9!!WQ$!;c^R1]R\D59'P#huEbds53kW?N's*2uip9!!(.@J"6Q6!!$F,s53kW?N's* 2uihF!*]E&!!(68s![g^!*egj!S%/L!!#Rirr<$#3*$(\63$rb!!>AM!!D0Z]KKG&.KC@_rrP=` 2u`jW!!!u;?iL*:8H8\i!(d.i!!#RiokOO9rr3&L!!e)TWrE+j!5ec4bl1KBbYh?_qbdFdr&rrE+XQ2^iDo>Ue/J,~> q>^Ea#6G,1"98Z,#PeArnhpmV$9UEZo(&d\!93RL!!&b^!q q>^EN#QOSjs7#pXjSAcNh_ppkV5gPhhqtK&RGHc$R@2U[R@2O]hlN66hVXpYhp%RWg>CegR@2U[ R@2O]f:88Zhk6C*hPoE,1FPAQR6>ASQ8CBRR@-5p1RXYuGCl3M7PcigR?r)\R?BB_KR.`bQC2%T 1BNl17/f"BR/hI1F8qX=4u5!_R6ED_R@-5p6B[aUr\FV.R=KiEW\XYo!5^Ogbl1KBbYh?_qbdF< r_`gA;GsL p&>7%$31V;!!`T$"oJ^L`s7m3*s1JC8rr9Y3"oJ)q!(?ke]Dr09s763iq#CCes8Tb4"oJ)q !(?k8!!N&r[/^E&s!Zq.!p9J,!(?ke!!#Rirr<$Fs8TG+#ljo)!$hO9!!%iTq4;J3;ud$srrNH+ 7fNG`!!c'prr<$is8Vrr!<\>\rrV0[!J19NrrMZj_Z-IVs&/m@s&/j?s&/j?s&/m@s&,i?PQ(sV !!)9`rr<$ns8<$"!<*''[f?1([Jp1,!/m-B!0-Ti!<%E~> q>^Ea"TSZ*!XAr(!;l=Fk5YL]o&_"ank/rho(#ER$1[-X!3>\]8cT:jo&B62jT#:ko(#ER$1[-X !3>[C!!r)b3WKSeo(U?VQN.-.ap.p#bfg%eR`rtU!(tJZ9)oFFbQ%W3bd[WQ[`lO.<)#7N"o?FE !W\MbbkV5DR`rtU!1M-UqZ$X"T`3.:PlLl:bc8kfZiG[$k03j's31L@rlkC?rlkC?s31L@J]taM $*4+,aNVg-!2[pq q>^EN#PS2gs82ipqt^*ch_rlMRFg?C^#._ARA/TrU7%h7d$^UGIo=k;(J,~> o`#-fs7QX%q=sdaqu8SA!!&8`rQYBBC]G%Hs(hZLs6TddP5kPt!#,D*CE4TZ!!&Dds(hZLs6Tdd P5fY)'*%uF!#2%),*N!1?XGYj&-)Y0!(d.i!!#Ifs5F"Zs8N'!7K<,_!.4SsqZ-Km!Ytc&rr;uu !(d+hrr;ZFu@;Z=o?;Z=o?;ZFu@;Q7m( rs82r!5SX2!!%TKrrMZjr;R$$#E/W^q>e'krrA&M`W5sf~> q>^Ea#PnB!p&G*fs7uZkni"Yk!8@#1b4>*@!$Lk')#u/WaoDFpo(!Xu..Z%f'JD*>!8@#7)#u/W aoDFpnf.WVo(!Ut.]Dq4bT\A6#Y[o!!#j)*!!&J3bQ%X,bfl7N!mJjg!0tdC!!'=C$i9r#bQ7qJ MuLs#!!&Jebl7YQR`rtU!1M-U!!#&R:i*T=bQ<\&"bFmtbQ5'NJ^!9#s&/m@s&/j?s&/j?s&/m@ s&+El]?CPi!!'gY_Z0\DrQG;L!;t%Gao]#qbea@oS]pp0!0-Ti!<%E~> q>^EN#QObis7H9io(i=_h_qm1RG?]PgY^nYRD@_;S=.=Q[$d?;hqsrl`8AkASZ&-JRG?]WS=.=Q [$d?;hjg+Ohqsrl`2MSf1EqpKLi[X'R;"H5R@-5p1RXXp1GaKJQ8:=bR6EE%R@-$&QM[*H1BNr3 5lNS>R/fGM1]NjQ4u5!_R6ED_R@/8?E*YF$1BN&oOF]3f1BABo_DA%4s&/m@s&/j?s&/j?s&/m@ s&,i?P; o`#-dr:L-nq!mtU"4$rKo)8S@rXJoYs8EK.1B5Z#!qH q>^Earr3-"#6=f&q>:'["+("Mn,;f0n,r`(o'cb^H1H7]"7PgM"9<]:'*(r$HiO9;o'cb^H1H7] "7Pdg!+YTc!W[SGo(^E0`<,o:+T]@%!!&J3bQ%W8bfic]%F!#r!1M-H!!'="!!'+EErZ4:bQ8IY >Q2kH!!&Jebl7YMR`rtU!1M-U!!&J`bQ:oI'S4K.bQ5'NJ^!6"rDNC6rDJ3j]$(H:"4RfEZ7 rQG;L!;jtD'S=QQV$W[9q>UGSo>Ue/J,~> q>^EN#5[]ds5a(Jq#C6K!iMHVr80-^R[MO[gmXYZhkum4hr!4XRF0l]RE"-^R@N0lgmXYZhkum4 hqsljcem?BRF8%kpbMqj'% 1BABoq_JBW/2K'r$(NgIrr@]C^B"4_~> o`#-ks82j#rVu]mqu6_h!"Af*0(],Dd8s8V]k!+Z&#!"Ao- @K7hVaT)Ue/J,~> q>^Eas8<,sr;Zisqt^0encC9@)#WqWg&M,go%F'Dampn])"R7O!!(.!!!&ka)?:ZGo%F'Dampn] )"R56!+>AP!!(3@o(^E2LB%P$rlcPn!--3_!1M-U!!!6d4okY!bfg%eR`rMH!4&a-!&m4U!!)l> !`o@@rlkBB!1No2rr q>^EN!;uir!WDlhs81[TSsd%bh_)g7RG$K8R@2acSsd"DhntkMfuTSLf%Z^_[bou[R@2acSsd"D hjg+[hl<*4g8Np(1F[a?N\iOJ1mXOt1RXXp1GbGeQZdtJR78tgR@-5p:77M0Cmg]9I[6CiqD/2/ R:Q:Qs-WjNr\OSB$9g7%R@-5p1RXXpq(i)9R7MlbW\XYo!5^OCbdkr\1Br5pNHU\W8Gk7E)?BXj "V;+s.g%2i1\q%NKCchXrI=~> o`#-ks82j#rVu]mrVnnR58XA(5j/1IkrSkF,ge[R!%k2f!!Q]n3rf7/mQ^aS=!.JH?KjNO!%k2f !!Q^/jVS%Z;ZHeNoUu3cHN4o]s!"oP$i^2,8H8\i!'t9.$XET/rr<$is7cQoHiJm&!"c=6!;c^$ pB1QKs8N'!8H/Yh!")9srr<$is8N'!8G`>gq?[20JcDhO"k<\W!!<>As+/D)b`Vo/ZS;Y!C]=83 !V-6erreu5#"S6KrrA&M`W5sf~> q>^Eas8<,sr;Zisqt^0gni>hp"onunm.0__1&q;4\hX6c5ue*h$AQ>O!!#"D)?9tR#QP3d^bPli 5ue*h$AS,V#6Zt`!!#7QWUfi.!ZM+lrQHHM!#!KU!1M-U!!&$A"qP1dbfg%eR`rMH!4'g=!<=4% !!)l>#e^6?`6?F*!1No2rr q>^EN!;uir!WDlhs8Ch7d&NP&V5rJ1hmf8GRAm`gR@1LdR[L#$\=T+VX4a#2T=p\]V:2rGR@1Ld R[L#$hn>JLWhPoLXf1.P1BN`-=T(#dN1"cDR@-5p1RXY/KU@^#r\OSB%6cRCR@-#kKUA0RJ!l`$ 1C-sIPVb0PR@-8<1]NjM4u5!_R6ED_R@-881BU(5Q8X:MX>:"f!<<*#!Q6dFbdkr[1B_NUQ\JK: 1BABoqD/3d! _uBf;fAZ6!!rUX5MuWeW!(cVZ!qFb:pAY2f!'B q>\Y/!q47fnF?YGaQ]Mkkfj&,!1NE$!k,/Qp<3S$!-72F!cA!)J]r\hJ]r\hJ]tFDq>UGSo>Ue/ J,~> q>\Xq!o28\nD=<$e)$nXkVN7,!']m.!CB'E1BNN'7--3+JsfYj1P%?51P%?51U8h4rr@]C^B"4_~> JcE1Yrr<$iir9)UCN8J9!h!lLJcC<$JcC<$JcDbM!0-Ti!<%E~> q>Z$:fCJ.Lrr<%filhJ@UGSo>Ue/J,~> q>Z$'fAGdJs-WjNi\LX,DHu9Z!c2a3JMVj5JMVj5JMXSfq>UGIo=k;(J,~> JcE1Yrr<$iJcC<$JcC<$JcC<$l2LaCo>Ue/J,~> q>Z$:fCJ.Lrr<%fJ]r\hJ]r\hJ]r\hn]^h/!0-Ti!<%E~> q>Z$'fAGdJs-WjNJMVj5JMVj5JMVj5nMC"@!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcEdj!;?3g!&*g@s5*h?rr;uu!(cMW"8i-!=oSF([PJ.(DYX5:jo?(prr<$irr;uu#>"mp!!#Ri s8;p'!ZPqOs8RHHG_,n7rr^eF'`c,NUs/d8pWWS6W6CA'"T17[!58"("Jd"B8bA8I!0-Ti!<%E~> q>Z$:fCJa]!5/+-!+>9>s0;XErlkBB!1NUGS o>Ue/J,~> q>Z$'fAHB[!*&c^!(cQ7s$-Q@r\OSB!']d+"$i9B3rUoZ"@/9@R5XXm!tkY<*1Jb[rr@]C ^B"4_~> JcEdj!;c\%rr<-??XJ6Ms8N'!8H/Yh!!#RWrs\f*!*T@%dJsDK+TP%.rs)-rEW?%=!(d+hrrUe/J,~> q>Z$:fCJa]!5e_/rr<-^9MC<3bl7YCRf:P2!!&JTbRDJk!3FDgFT;V9#68Z q>Z$'fAHB[!(d*1s-Wt5F)sV81]NjC55mAu#1Be@!0Im5RS2:!@!/'mX!<%E~> JcEXfrr<$im/R(c!(d+hrr<$imJdXn!!$1%r[.\Is5j:amJHnhk5Y__s8N'!8H/Yh!"VX#rr<$i s8N'!8H8_$!!`H&!\aUeJcE^h!V-6-s/!s>;ZFu@;Z=o?;Z=o?;ZFu@;Q7m&rrqZh-3+%Zr;Qfg !;ld#Bg)Lrl37*NrrA&M`W5sf~> q>Z$:fCJUYrr<%fm*,J0!1No2rr<%fmE?$Z!!'+Eap8!2baSS:ans9fSH'#?bfg%eRf:P2!#:sH bQ%X3bfg%eR`ruT!"-rob6e6BJ]u*W!OMiXbi[.L;ZFu@;Z=o?;Z=o?;ZFu@;M!'&bQX^A7fWP( r6,2K!;jtD'nFNPV$W[9q>UGSo>Ue/J,~> q>Z$'fAH6Ws-WjNlne[0!'^B*LR23sXmJMY8$!?(sT1Sr=q;ZFu@;Z=o?;Z=o?;ZFu@;Q7m&1BhUGIo=k;(J,~> JcEXfrr<$irVmE(HQr\-?L\!oN[P)7(d[rp!%& ;?4r?;?4r<;?P-@;U#,\s7u`+Q2^iDo>Ue/J,~> q>Z$:fCJUYrr<%frQGeg:D3dF@*6^9=Vh,C)*Yh5!!jUh!!&$C#S:MFbSn;n'*8qWb08)<0E`GW !!'+E[f?EEbejD\[/8&K/c[X*bl7YCRf:P2!"YOBbQ%X3bfg%eR`s!9!! q>Z$'fAH6Ws-WjNrA+sPHBOVN>r4>sG*&)WMK2JiR0[+TR@-p(Q],&G1E&Z-P*^u11c$p_LmEWd R@-)l?^[ JcEXfrr<$irr5+[9`Q)82ZP$$hZ*X/?:Yn0?N:'F?Y]T@!!G8^!WYOdr_3A2=uQF)s8Pam#[&MT !*T?h!!)9`rr<$nqu6^\!&soWrr<$ q>Z$:fCJUYrr<%frldLI('#dU)?<(IMuWi:8i$gm9E5&R9O>pC!!bSK!ibdu"&;ZWZ!!!'e3bQ5'Nr6,D_!5?\$aoJl@bk_8=NUt-ir I=~> q>Z$'fAH6Ws-WjNr\HYsPaQuDPaP`3I$pCIFbGoGF.&G?F&"NZR?r,LR$gE"3L#q\G*JD!1H(Md LN\oMR6!-IR@,lf2OTsqq_J;>R7.$1s-Wk2rcA+-%mDd*R@-5p1RXXp1I@7mE;hWpK:.7@1W;-N )?@W1V9Jp:"3aY@bkk9 JcEXfrr<$irr3\s!!->3>6"]PhZ*Y>eFrk@rr<$irr;uu+sm9hZiCC3kl:`h?X!L2dd[;;ScA'W !*T?h!!)9`rr<$nqu6^'!(Qtfq#CXjs8N'!8H8_e!!*1]rr3&Z!!.ZN`W#u0!5ec4bl:T@bl:T? bl:T?bl:T@bl:S?b`i&5mfXj7nGiR&s8W$"!!*!#"Le@,!4Dh+! q>Z$:fCJUYrr<%frlc(N!!5hf6i[8*MZbfp"e!!*!"$,4X#!5?\$aoJl@bk_8=NUt-irI=~> q>Z$'fAH6Ws-WjNr\G71R?ho8KUJ2bI@6Ku5;P;U1RXXpr\OSB,#U3QMOAoLFIAG9F+fsK2/&DG 3&>07R6!-IR@,lf2OTsqq_J;@R6LU+q3_IO1GbGe4u5"lR/rC3r\FV)R?iC[`A7N5!5^Ogbl:T@ bl:T?bl:T?bl:T@bl:S?b`agh?C4hNBUP8H1Gf"2rrE$!#r+4b!&68c0`Wr!1\q%NKCchXrI=~> JcEXfrr<$irr2uNq>^qkrIQ-l!!>[brr<$irr;uu#=\[miW'#Zf_PR]R-4MMq>^^MHqu6^5!(-\brr<$irr;uu%S6X"!!#Rirr<$ q>Z$:fCJUYrr<%frlb@hq>^r6a\WQL!!Z-?bQ%X3rlkBB#F!BUP5k[.Hhm^U\=im&bKRp*!3FDR !!'gY_Z0\Dqof*F!/pj#rr<%frlkBB%[tVc!!&J3bQ%W(9MfQ6rQG>$!!Rqt`QS@i!.iAVbl:T@ bl:T?bl:T?bl:T@bl:Rlbe)()H2pB-63%!UOo q>Z$'fAH6Ws-WjNr\FP+qO%aO3dR$YR?D):1RXXpr\OSB# JcEXfrr<$irr3)a!!CmQrse)ir;HZgbl@`arrW6jrr;uu$75`P[K$U5kPt_;rr3\os7$'hT`=E[ !*T@$-3.0Jjo>PNqu6_/!%n3Mrr<$irr;uu$:t3s!!#Rirr<$iq>UNUe/J,~> q>Z$:fCJUYrr<%frlbJ;8rlc(Tbd%3K [`kfQ!3FDe#6:"4RfEZ7qof*U!*fHHrr<%frlkBB$C]2_!!&J3bQ%X3q9/nC!#1".`QS@i!.iAU bl(H6bl(Fjbdu!uHMRUAD>hZZZiL!I"VcR4bbYW9bk_8=NUt-irI=~> q>Z$'fAH6Ws-WjNr\FXuR>s-'1CZf04>ScU?C@3A1RORor\OSB$;rZ9MOArMFIA.Gr\G6X1MN8F 3&>*5R6!,`Q^L#nEg_nDq_J;+D)?BXj"Tg521DC.c1\q%NKCchXrI=~> JcEXfrr<$irr5(Z9`PK!=Y^9_jUFU`9E5'Ns#g>l?[_qS!!5/^!rtUdr_3A!<*:s^s8P^l#[/VV !*T@%ci=2J+ok%-rrU4@&H;_0!!#Rhs8N'+8H8\i!(d.i!!#RcrrR`O/V3r@rrMZj_Z,22\]g-7 "7Z?k^&7m2nc8Re"ks='pgGtCrrA&M`W5sf~> q>Z$:fCJUYrr<%frldIH(B>(>6QQ]\RM7kX0`V3^bR=Ik9Spsn!!GDJ!Ck#;bQ5'NJ]r\h Ls,t,!!'e3bQ5'Nqof4q%^j"l?C]78rrA&M`W5sf~> q>Z$'fAH6Ws-WjNr\HVrPaR>LHB JcEXfrr<$irVnVKI3f%&/9(XY8fIm8+E[Y`gaW@*0E2"P5\:K6>l4R$qL'Xn#V9rps7B:r(5Mqj =oSF)ZS;Y!C]=21#knH'f)PaM!(d+hrr q>Z$:fCJUYrr<%frQI"4;%s'=/8ED41(aQk,'D,RL)'di@*ATNME;"Q@a!!>_,1mJ$7or9bdK/, */OXqXT$EHEZ+usDY_K^]`A2Qbfg%eRf:P2!",1=bQ%X3bfg%eRek51_ZBnRJ]u0Y"`seI!!34Q b^muqbQG-N!5JHU!OMk'bQM;^#Z&U5bk_8=NUt-irI=~> q>Z$'fAH6Ws-WjNrA,H^H'4PWITA72KThdfJkn0YBTeaN82H[%<.pWt=T1)f7!Xr_Oa^=e1JWdo KMIr'3rUo&"Ub>2!!*,= 1P*c\b`=O^BUP8Hr%e?l!;\JR&ci+SRksm?!/'mX!<%E~> JcC<$q>UMi!'B q>Z$:fCGud!^-O(jiddD!()7\J]r\hJ]r\hc-6"`!0-Ti!<%E~> q>Z$'fAEVb!fWO8jYHsiR9"kpJMVj5JMVj5bqo1q!/'mX!<%E~> JcC<$q>UNlCN8J9!h!lLJcC<$JcC<$JcE^h!0-Ti!<%E~> q>Z$:fCGud!l@uFjidd4 q>Z$'fAEVb!_@36jYHsSDDcu$JMVj5JMVj5bqo1q!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&HWI\]fX)MuNd:o>Ue/J,~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&Je1s&.7gs&/.+s&-t_JcCZ.!0-Ti!<%E~> q>Z$:fCFL:J]r\haNXZ^dEMVglHK9+J]r\hgW]Kn!0-Ti!<%E~> q>Z$'fAD-8JMW3?^ JcE[g&,M/;$4/JMs8Vq>*s;p!=oSF*qMHs6#r7Y>s8N'!8FQQ\qu?_"JcCr6"nlF="tZgns4kis ;YSE6;YJ?7;UEYf;X)F*;Td4Grrfbd#8V4Jrrf,;#>+QPrrA&M`W5sf~> q>Z$:fCJXZ&&MKi"U[&Gbfmps&crIg<;t)G_HIo_$8[_=bl7YCRd\H&`W-"?J]s>%"hHf&"u3*L bl(H6bl(H5bl:Sfbl:T*bl:RlbhC8DFW:K%Eq7EW@LWW@b+-]OrrA&M`W5sf~> q>Z$'fAH9X%mtH"R#lSW1G_FHPF.Ja@K&%e6ZeBVOEj%d1]NjC54:905ae$$JMWKG"XaZZ!t[0) 1Yg4Q;YSE6;YJ?7;UEYf;X)F*;Td4G1B_NUQA/<.1BS6k"<UGIo=k;(J,~> JcE^h)YZ/j"\_r?)uoqO!!Z;'/dMFVpGW'U9NE;UqZ$Qq!(cSY"8i-!=b6U:rs!?cjSbt\p;R'f bl:T@bl:T?bl:T?bl:T@bl:T8bl:Sfbl:T*bl:S`b`_u1dJsDK+TP%1rrN)Mqu6iT#fZRH23e+@ NUt-irI=~> q>Z$:fCJ[[)SH^_$:@)g1X+&b!")1_)@Od5]b(5O6U;/;qTSs>!1NB#"3(<@XF\TZbQ]%W_T$'m b+[&Z;ZFu@;Z=o?;Z=o?;ZFu@;YSE8;UEYf;X)F*;M!'HbQ`1i#"JmuDZ%]ZafPB`"b[>l^)g^Q bk_8=NUt-irI=~> q>Z$'fAHQ*4P(GJG9pV3+FaTKOqD8/>!']j-"$i9B3e9)N1Bdk#1,'+D `&$5ns&/m@s&/j?s&/j?s&/m@s&/U8s&.4fs&/+*s&."`Ou!;gR>uKYR7I02!A>u#1Be@!0Im5R S2:!@!/'mX!<%E~> JcE^h%"eNffDkmM[/]n$!*]C%$K;$bK)c;2s8W)*qZ$Qq!(cSY"8i-!=b6U:rrrdPs8Vio^;^-. bl:T@bl:T?bl:T?bl:T@bl:T9bl:T=bkt?EbYh?_bYh?_bl(H>bl:T@bl:T@bl(H6bktB=bl(H> bl:T@bl:Q@bktB:bl:Sab`i&4r[.\Is5j:amJ[%cnc8Re#&-7#s69dcQ2^iDo>Ue/J,~> q>Z$:fCJ[[$n))i_T^6GM9N^7!2]\=$Dktj-iasubfn1cqTSs>!1NB#"3(<@XF\TZbQ\-Sbfmj& ^nK!P;ZFu@;Z=o?;Z=o?;ZFu@;Y\K9;Z+c:;@(KE;U!?_;U!A`;ZFu@;ZFu@;ZFu>;YSE5;ZFu> ;ZFu@;ZFu@;?4r=;Z+c=;M!'JbQu>s!0bWr!!^RDbQ5'Nqof3YJBZ66$(T68rrA&M`W5sf~> q>Z$'fAH!']j-"$i9B3e9)N1Bmh51G^?X 1;u'*bl:T@bl:T?bl:T?bl:T@bl:T9bl:T=bkt?EbYh?_bYh?_bl(H>bl:T@bl:T@bl(H6bktB= bl(H>bl:T@bl:Q@bktB:bl:Sab`agg31$$s1NJnC2#T32)?BXj"Tg521DC.c1\q%NKCchXrI=~> JcEai"8W#u?2OX*pAb1.QdGa3"8W#u?1n6t!!#Rgru1k:!)s&/m@s&'f[;Gt`_;Gt_:;U!?_ ;Tr$:bfis_bYh?_bYh@7bl:T@bl:QTbYh?_bYh?_;Gt`_;Gt_:;U!?_;Z4i>;Tm:Jrs82r!5ed4 !!%TKrrMZjr;R$$#E&Q]q>e'krrA&M`W5sf~> q>Z$:fCJ^\"2Y'=SbpV7^&S-_KWkC!"2Y'=Sb:5,!!&JdbSnS'!2duO!!'LP[P.h*NW9'\bfmn! '*8qWb(7d,bQ]4__T-6sb+[&Z;?4r?;?4r<;?P-@;U#,s31L@)pD2Xbfis_bYh?_ bYh?_;Gt`_;Gt_:;U!?_;YeQ:;ZFu@;A@>Q;U!?_;Tr$:bfis_bYh?_bYh@;bl:Rlbh^JK[f?EE bejD\[/J2LZiL$J#Kd+Vbfmp(^7ELDrrA&M`W5sf~> q>Z$'fAH?Z"%\fI4Spo<;43hq;EXq7"%\fI4S:N1R/fGL1E&;ZFu@;B*hX;U!?_;Tr$: bfis_bYh?_bYh?_;Gt`_;H!>7s&/m@s&'QT;Gt`_;Gt_:;U!?_;Tr$:bfis_rQP:>bKQ/+#[a!f 2D[diR5k.$!?(t91C#W70f(U7!&C*$q>UGIo=k;(J,~> JcEai"7Z?k]DDO-@/U'0&rQ_Z!!'Y(s8N'!8H&Q,rVupns7H?lPQ+;V#[&MT!*T@$9`Q)82ZP"P s.')mq,RLt$F[nQh9>jr"3aY@bkk9bl:T@bl:QGbYh?_bYh?_qbd[C;Gt`_ ;Gta9;YeQ:;ZFu@;A@>Q;U!?_;Tr$:bfis_bYh?_bYh@;bl:Sab`i&4m/R.Ns8N'!:&Y(mnc8Uf !r;o)rr3!!Mj=;BNUt-irI=~> q>Z$:fCJ^\"0qn,^\Z.S*W5sB*K84J!!'e,bl7YCRf1GKaT)=?bdmcS\&o<`%S7'/!3FDe('#dU )?<'Sbacl\^`rj\'!e1Sr_`jB;Gta9;?4r?;?G'?;Y\K9;Z4i>;ZFu@;?tED;U!?_;U##9#L$(D bfis_bkk<6bl:T@bl:QTbYh?_bYh?_;Gt`_;Gt_:;U!?_;Z4i>;M!'JbQt9M!6EC-!!&kobQ5'N r6,D_!5?\$aoJl@bk_8=NUt-irI=~> q>Z$'fAH?Z")40k2Z#921m@m+#(f/tBpkAIoeZW9!'^?;)EO:S4#:!,R5d*iR>5sMR@-)l3L#q\ G*JD!JMWfP"Y'WT!"1L!1Yp:S;?P-@;U##9!6kF?!mFP?prrb9rQP:>s31L@#L$(Dbfis_bkk9C bYh?_bYh?_qbm76s&/m@s&'QT;Gt`_;Gt_:;U!?_;Tr$:bfis_rQP:>bKQ/+#^2W(1c%%XR6:F( !?(t91C#?/0f(U?!&:$#q>UGIo=k;(J,~> JcEai"7Z?k]DDO/qh$0n!!NG9nGiR$p&G$l!(d(g)u]g;;#g1g!0cpQ!1j/W!!$1%kl:`h?X!L2 dXhFhrrokMg%gpY`;eZ;s&/m@s&/j?s&/j?s&/m@s&/U8s&/j?s&/m@s&'0I;Gt`_;Gt_:;Z+c= ;ZFu@;?G'?;YA96;ZFu@;?tED;U!?_;U##9#0]tCbfis_rlkC?b06(L$1.]ml2Ub`!)dr&rrE+XQ2^iDo>Ue/J,~> q>Z$:fCJ^\"0qn,^\Z.U_c@EL!!NG=Z2am>p!!F9!1Nl1)p&'[Wm&$S!4T66!4C%N!!'+EU&Y6g 9LJj]_h$%&bQV60]>@H0TZmF6s31L@rlkC?rlkC?s31L@pWWY8rlkC?s31L@$-Z:Fbfis_bYh@: bl:T@bl:QBbYh@3bl:T@bl:QGbYh?_bYh?_qbdXB;Gt`_;H!MUGSo>Ue/J,~> q>Z$'fAH?Z")40k2Yo326?e^oR0Aj6BpkAIoeZW9!'^?;)`jCT3\sm+R5elJR5d!7R@-)lFIAG9 F+fsK21[QS1Be4)0eNbO`&$5ns&/m@s&/j?s&/j?s&/m@s&/U8s&/j?s&/m@s&'0I;Gt`_;Gt_: ;Z+c=;ZFu@;?G'?;YA96;ZFu@;?tED;U!?_;U##9#0]tCbfis_rlkC?b06&*$$M`)1c%%XR63;) !WN0!!=:J:.0)(Y1GJkaSMU*A!/'mX!<%E~> JcEai"8Mrt?MFI*jdQ5M:AFnj?M4?u!!#RgrtGA3!)NXf!!&5H!!)ipqZ$V!s4I/J!18?;T)T&o $^(JhquEk7s&/m@s&'*G;Gt`_;Gta9;?k?C;U!?_;Z=o?;Td4Irs82r!5SX2!!%TKrrMZjr;R$$ #E/W^q>e'krrA&M`W5sf~> q>Z$:fCJ^\"2Y'=T(gG7Y%I_7UV[$3T(U>-!!&JdbS/(u!348S!!'L%!!(3d`;fn>b^90d!4[U( T$.G]!k6Ct`W3]Gbl:T@bl:T?bl:T?bl:T@bl:T8bl:T>bkt?XbYh?_bYh?_;Gt`_;Gt_:;U!?_ ;Tr$:bfis_q98k:s31L@#L$(Dbfis_bkk9BbYh?_bYh@ q>Z$'fAH?Z"%\fI4SU]=1e2eYR64$-R6:-us-WjNrA,*JR@-)l>+(dos&/m@s&/j?s&/j?s&/m@s&/U8s&/g>r)+KX;Gt`_;Gt_:;U!?_;Tr$: bfis_bYh?_bYh@7bl:T@bl:QGbYh?_bYh?_qbdXB;Gt`_;H!M JcE^h)M%ksgAh3P[K$,\o`+sg!!$O/JH-,4s8W)+qZ$Qq!(d%f'a"G%s4mYTPOSVQT`=E[!*T?c !!CmQrrD/3s.0/pquDr\s82k\`W+`;rDNC6rDN=4s&/a q>Z$:fCJ[[)C>G"_p$?IMTj(mb08)K!!'.F-3+h!bfn4eqTSs>!1Nl1(;8rlbA@J]s\/#K?bQbfn',\"LtD;YSE6;YA96;Z"]<;ZFu=;ZFu>;Z=o<;ZFu>;YSE5 ;ZFu>;Z=lN;U!?_bfis_bfis_bfis_J]ulm#g*APPg#Ts#0Hhf!OMk(bQS]4bflmiSBUg/!0-Ti !<%E~> q>Z$'fAH!'^?;(,hPJ5Vm_SR5eoKR5d!5 R@-)lFIA.Gr\FODJMWiQ#:oj01G^Q^0uYs(bl(H6bl(H4bl:TUGI o=k;(J,~> JcE^h)YPuf##88G)uo^6#=;]U!!_Nap+uaR:08b\qZ$Qq!#toE)f>Uc!!ZO;!!&5_9)o6$-ia6M s8G^m#uk%_#_E#Grs!!Shu'#KnAYF9bl:Rqb`_u1ci=2J+ok%/rrMZjqu6iS#fl^K1R.n>NUt-i rI=~> q>Z$:fCJ[[)S6L[$:R8k1X*Z8%R!E(!"-cj]+4lK77%J?qTSs>!':*Q)e@/-!")-t!!'LN&c`J8 $ig:/bfU_%&kPG3%=u`nbQ\nF^rBI_b(7e5bl:Rlba6NXEW?;7#68Q;bQ5'Nqof4q%^j"l?C]78 rrA&M`W5sf~> q>Z$'fAH*OS:6q<,FF9BNqD8/>!-eE`)b)WJR>?0VR@-#mQ'mAM PaRq#1HC\fLids)IXs;F1Bdk!1+rt@`&"jGs&+TqOu!;iR>lBWR7R63!?(t81Be=!0Im5RS2:!@ !/'mX!<%E~> JcE[g&,Cu5#RE/Fs8@d?'a"h*[f6:2q1gR.#VhA9s8)d8(B q>Z$:fCJXZ&&D?d":?oCbfO6B$ipf#YPu`M_,qTY$8RS:bkhAZ-HrJ5![`p-!4U1\0*<2N!!'+E be[-j!X^JnJ]sY."h6Jq">$@"bk]K_;M!&XbQMr)!Z>nQbQ5'NqTK(M$j]YOSBUg/!0-Ti!<%E~> q>Z$'fAH9X%n(Q%R#u\Z1HTQ3Q'dYR3;t]<7!4TYOa97g1]*RZ;DVF9Q@<50R5cutM3rrkR@-)l 1IQMOR#uhuJMWfP"XXQW!Y6s&1UbO-;MNDX1B_NUQ\JK:1BABoqD/3d! JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFLmJcC<$JcC<$JcF!p!0-Ti!<%E~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!/'mX!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>mFJH16$JH16$JH16$X8r(r!0-Ti!<%E~> q#>o5JXM(WJXM(WJXM(WXI8na!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!0-Ti!<%E~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!/'mX!<%E~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$JcC<$JcD5>!0-Ti!<%E~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo>Ue/J,~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo=k;(J,~> JcC<$JcC<$g&L`hJUl1!oZVmdMuNd:o>Ue/J,~> q>Z$:fCFL:J]s%ro`0PndXZnmL q>Z$'fAD-8JMW3?o`0PndX^u6JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&L`hJUl1!oZVmdMuNd:o>Ue/J,~> q>Z$:fCFL:J]s%ro`0PndXZnmL q>Z$'fAD-8JMW3?o`0PndX^u6JMWKGq>UGIo=k;(J,~> JcC<$JcC<$g&L`hJUl1!oZVmdMuNd:o>Ue/J,~> q>Z$:fCFL:J]s%ro`0PndXZnmL q>Z$'fAD-8JMW3?o`0PndX^u6JMWKGq>UGIo=k;(J,~> p&FO^q>U]WAgTW%/8j0ms7--h!!#Rfs8E!#!=:ENrr2s0q>g*drr<$imf3=E!9f"6Rf q>^EanGrCU#I[DO4#/U;l%/F&o(UB.!!&Jcbl.SE!=CTPrlb?Eq>g*1rr<%fm`b^:!60T6R`l4L +pAHQa3;b.)?^C3^&6(U/HEB3bk1tFJH,ZJJGoNBJGoNIJGoNJJG]AaJ;)5E!"!8]b[M\!!Z5(] oZRDX1C4'[bQhQ#"V+ALbfotd! q>^ENnGrCB#KNpBX/2o7hLXS]htJr,R/fGK1]EdER$)_Wr\FPAqO-n1s-WjNmPFl.!&T6_RPPBe "p"oH1,C]u"T\`@1&Ng/"TU:,1\CaWJH,ZJJGoNBJGoNIJGoNJJG]AaJFq'K1]*RH7PciAN0fid @5RU4!uMCH!<"\Y'F"RB)DX*)r;cs"!A_)>q>UGIo=k;(J,~> p&FO^qYpht!\N[:s2G&2JcG9?rr<$ir;Zcs#TI)(!!D'Ws(_O?"'bg+"S2Tm!!#RXs8N'!8:gf0 rs_r7p@N/As8Um'r:bsXrVlu^$im*Qs7OUGJH#TJJH,ZLJH,ZKJH,ZKJH,ZLJH,WUJH,Y"JH,Y" s8TiaoZWKurr<$ q>^EanGrFV#]0TGmIKh-!8N.rqssL*rr<%fr650@#WbQi!!^HebYJ.2"%E7j#4g" q>^ENnGrFC#d'N1hV[4nRGs*[1NNJ9"+Zf-Nq,"+R/fG=1]NjC 5(PMY1CY0O1F`ML1G^7/1G&hJrA+Nl%fe?61\CaXJH#TJJH,ZLJH,ZKJH,ZKJH,ZLJH,WUJH,Y" JH,Y"s8TiaoZWISs-Wk2rc8B11Gb,CFGZER9`-[I0.ZoU!u)[e!<"\W(b7Bl"<[Ls! p&FO^qu6cF!"/DurrW-'p@S@dr7C8srrW2Qje)SQ!!#Rfs8N'&8H82[!-nD@",R!XD=[`,!!#RX s8N'!8:gf,rrMQiqu6]d!ri3&r^MVBUt#G;bdi6+s+(.Lrdb%Ks+(.Lrdb%Krdb%Ks+(.L#CujS J:R\"JGfGaJFq'Ks8N'!8GiDep&=smN;sLerrMZjq>UKd!;ZWqmfNFe!rX!0XoAB\o>Ue/J,~> q>^EanGrIW",['nnG_t[mKN+PncJ.!lK7X=m`O[ko(UB.!!&Jcbl7YHR`r)UGSo>Ue/ J,~> q>^ENnGrID!j7rqrSIY/T(Ch@g=5!AhZDQ]hPoE,1]NjC55[5:R0>c1@%!EBr%eI4NgZ;#nh^<6 !']g,s-WjNnM:/%JMX2[!>Yh81BA9nr\F[2!\"+(e2-at\UXe^JH,ZKJH,ZLJH,ZKJH,ZKJH,ZL JH,WSJH,Y"JH,Y"r;XWaoZWISs-WjNq_J44r\FV p&FQ(r;Qls*<8P+s#Ss8s87[%3#IJOpeh(l7R@8dJhJc^Ba,s8U_96mr^Mq>^7P!!#)? !!Ano^&e9FW;&7_JZAbM!!#Rfs8N'&8H8Jc!1Nic"3gfG/G];cr/)s-$9A.d!!#RirVupms7H?l PQ$Rj"p>c/q"t+'&c_ZR,6\`enGiLg!'XHg8V-o?rrM!\r;QioOq[ip"Nqb^!2S-Eousmqs8VqG s8N(Lqu?SEs8N1Os8RWKrs"#Rs+#Y"s20BZb``#+!!=EUEk_DM!fm=8r;Qfg!;ZWqnc8Lc!T+(Y rrV6_i3!"ZNUt-irI=~> q>^EanGrLX"7$0lT)A.?d.6bmBHAcNWUf(?!!%U2!l9%3/VR4-+N&@?$@D@7O"rs9)f"p6jtm&< Gp<:nf^`AM!%$L^-S*TOo(UB.!!&Jcbl7YHR`rSJ!4i$O"*4GB;YeNV``a2\%6D_W!!&J3aT)=< bdmcS\&qhi!X0H*^\e'C*R)>q'*8qWb08'0!/E3/R=WS\bQ3\0r6,5Y8gF>Z"DTj7!4p\(o`2IO s8VqGs8N(Lqu?SEs8N1Os8RWKrs"#Rs+#Y"s20A@bl7YF8krltqTK!c!*] q>^ENnJD,\"4s!0ebn;cf\bT&!&;tZo`2IO s8VqGs8N(Lqu?SEs8N1Os8RWKrs"#Rs+#Y"s20BZb`Xd^R0.DJ@QO?A!g/mBr%e?l!;SDO)?BRh !=oM71BJ-k1:8q6rr@]C^B"4_~> p&G'6oZI6Vr;Ql\!!'b0s#9mU!-e8>"69F>!!#:aONl\`!,_`@!"SSH!!WE&J"6Q6!!$F,s53kW ?N's*2uinP!%%[FD9f-\rr<$ir;Zcs"\A[4!$2(;rrh`t!"eYqs"\3e!_$9=s8N'!8H8Yh!)ERe !!&5?!!"WX8/M/1!!!sFCApp-)Ho'"+ohQB!!4ENBn?;`rrW'[1]IC_lN7+td/X.A(Us;BUt#G; bdW-&s87EHs8RWHs8IQJs8RWKrrR`Ns87EIs20BZb``#(!!*.Prr3/c?V:AIo_e^inc8Lc!V-6e rrW'[1]77RNuG,"!0-Ti!<%E~> q>^EanGrLX"1A10jSJF+m32PEkPthRnu)NgJat\]VuQh$ncAe3msG*Ao(!jAo&9WL_t*Au!!&b^ !`l?N/.WVZHi=_T^6?#JS1X]%"ss !4RLYs87EHs8RWHs8IQJs8RWKrrR`Ns87EIs20A@bkqGA!h'&3"e87@!'eX(bQ5'Nq9/lH!;an@ `=-)NbQ0"E[*8@G!0-Ti!<%E~> q>^ENnL4=m"0e2]h>6"fg7=Ybe!ZlchlN66cekPTXI5L.hO0e>hkum;hqt$Zhp%RWg>CegR@2U[ R@2O]hjg+\hqk3dZetL5s-WjNr%nA@"?n\fR:uLS"C.=^F>WhM1Gk8_P'25-1GbGe4u56fR6*3, R@-$^R@/;BKT\`ER@/8?:-"Q,IWgsD>;J('R@&;F4Fo;f1BK'--iPn1&-2bA1,C^6"#2>,1"8#P !4RLYs87EHs8RWHs8IQJs8RWKrrR`Ns87EIs20BZb`Xd[R/rO8r\F^gFGcJu2#K-1)?BRh!?(t7 1BK'--i>b$"UGIo=k;(J,~> p&G'(oXk19r;Qi8!!WB%&Y2-N7K:d9"o\2r!/pli!!DZgs!GAY#6">t!($Xr!!iQ(o)Jac!!#Xk s1JC9qtU3l70!:l!"T%e5H+V^!!#Rfs82it#Jg<<"T(@_"M=L00_#,CIfKHIs8N'!8H8Yh!)W^g !!&5?!!&23pAP$k!!#Ris60La>[L\8!RguJ!#pLhVuHktB,'n6rsJ:P*WQ/,/H>VJUt#G;bdW-& s8@KJs8.?Hs8@KJs8@KJs8RWLs87EIs20BZb`_u1LXl:b;ud=*rrCaN!!5jos8<$"!<*'#[f-4, nc8Re"8ujHnbrIhq?^u>rrA&M`W5sf~> q>^EanGrLX!`f:-rpgY!4?Q.)KE)AMirB)2nk&lemf)c(8cT7ijT#:RnjNNgo((f2o&TiO\ao;a !"&2X!!'(jniHgkntq)Go(UB.!!&JcbkqGA%D2S_"N:iN#/'cU0XC`ZT$5F#bfg%eR`rkR!348S !!'Kd!!%nZb/qlO!!&J3bb>(=9M@hS!Q3+]!&]>OVp#7a-mm+7bR1mP2U'B+=Nnbb]%"ss!4RLY s8@KJs8.?Hs8@KJs8@KJs8RWLs87EIs20A@bQ`F#b,lK\')p)TJGfHLCZ`VR4SCrrA&M`W5sf~> q>^ENnK[th!i)0[rne9iWiESdWL9U?baFmShkHO4rSJrrRASlfR@2U_Tp_n;hq[,Hc^C3Rhqt/r Uu0OeRFg?RTUEFLZI6&9pG;i;!'^<:r0[S?2Z5E76C+$u2Yf-_Aso&L1G_!H1RXXp1HLql3\sm+ R5fV_R8,t&3AWIZR6ED_FIAG9F+fsK2)CYg?@ao11BK34'`0Zn.gR"K1Bo0^/-%ES1\CaWJH,ZJ JH,ZHJH,ZJJH,ZJJH,ZLJH,ZIJH,YeJFq'K1Bpf@1ea.%ErIipJc1u<8M`1%!WN0!!<=kQ1BABo q_J:,";Lbi!\+1'ZnqOX!/'mX!<%E~> p&>$;o?RE^r;Qi/!"Ai+%qu"Ws)e;F5 q>^Ea!(-9E!(-VS!^?Z%rULI:!%@CX!"(hJ&ea$k)#u,ang54S.e:[]!8?u\!%IKl:_YQ9!!(aD nehEWo#^q4g%+^*!!_a1n$;NYbl7YCRf(D0!!PDI!WX1_rlbI%!!/5WbQFF:!6Y5`rr q>^ENnN-U*!hbshrSJ-URDe!QRA6dYT:aorS=.:nh^+e\`8@qiRG?\iRD[q-XIZ;]R@2jfhjg+Q hmAf>gu%"hR@i-6Z/>:3s-WjNr%nA@"F#B`Rl.,Qp1:$"+6N)2#K00R2J1E3glBs1Kp37 3')AMR@04K1GbGe4u5!HqO%IG1RXXqJMX5\"#'li1AWd5.KD1C#Vn1e!&;tZo`2IOs8W(Ks8VqG s8W(Ks8W"Is8W+Ls8N:Rs8RV"s8TueoZW=O!e6W(rA+R57#m[mr%e?l!;SDO)?B[k"#'li1Aip/% 10?sq>UGIo=k;(J,~> p&>$_oCDtQr;QiK!"/`*&H3+=1&jB:/-#YJhZ*Qb!&FQR-N4JT1B5W"!qZC#!&=LB!$_Hi!!;cl rXJo`s3CZHnc/X\!!$kOVuQbs!(d%frrUQn!2]&\!s/H(0@g*qbdi9$ rr@THs7q3Bs8RWJs8IQIs2' q>^Ea!8d>)!8dYE!fR*nrpgWh!s!T:%KL25o'Y'!n,r`:rphE*"9<` n+,rN!."-]!!D]\o%=!C@'d-/pWWX;!1Ni0rrLgsj !4dXWrr@THs7q3Bs8RWJs8IQIs2';@bQ5hRrlbO q>^ENnS%jX!i_Tlrne:BR[MR\S!hX\hqHiBgmXYZrnedPR[MU]VjX(4gmXYYhOL"Rhkum4hr!4X RF9ujR@O96"MpLoV:`'1pG;i;!'^<:s-X6Y1Oba[4u5!BR@-tI1FHe&R638]3AWIZR6EDbR$g2q HC:0\4>ScU?C@3A1RORo1Ga-@N\p_k"\(:(R@-6i1T p&>$]oC2hMr;RQ049:lMs6BXbA,hYk,6.\/=TA!n!+Z$.*qTF4A,i)"%0,r"!+Y^&!(-Zn!"Ao- oDel$s.03!rr3*"&-*B@s8N'!)ua1TD>sS98H8ZU!"T&*#lk!)rEfQPqu8<_!!5Vn.0';I!(d.i A,lg9&HDfpjUFU`9E5'Ns#g>l?[_oJ!!uV-1'mp[!!#Q@s/H#"M?gckrs!r-s6tULqu-NrquEPB s7OTeJC8u?b`i&>b_,,Q.QBnc8Lc!V-6hrrS&_]DMU0pAgJZrrA&M`W5sf~> q>^Ea!7g\l!7h#<(?lM6_t*B:!!(.30`Y)AnPkeEg&M,prph,a!!(.3.KC@Wg&M,phuEbRmhu0D o((K7!6Od]!#Y_+"7H?m/?n^>bl7YC3rVe`ABY#RR`rn`!#a"u!WW6nrCd4/r6-k<,QIs66l!qi !!&J3bS:*b70ESj\!e!n9JHMI[`f-[*))43(B>(>6QQ]\bQ%X3J]t+;!^mF,r6,@g]$.WO(X)d$ !lb5OeBIRcJUl1!LZiL'K!^mF,qof,T!4T;Yq>UGS o>Ue/J,~> q>^ENnR_XU(=eqDg#(]$R@2acT:*jZhP8WY_jQqGrned7R@2acSsd%E_O6hFaI/IIgRO\?hqu>> RG$JhRC3%O"5K?5]!1)d1]NjCGQ)Xo7PgI#4u50aR;XlNR$j=`rGqrrr%g#`P*qJVHA443R@-5p 1R+;`HC1+g3.-U.FGuWU3&?kgIrdk8PaR>LHB p&>$\oC)bKqu8YNI4.!<.9ibJs7g"70M?cmkrSkF.#\,i3rf74WYb^>Cc_Us..0>#"'6TF"^^FT !!"UN(]X_Grr3%B!MH=iqZ%!>rr<$is8UpU!.jq@!!'G(s"F;+-j0f7s8N'!8H8_X4p2sm!!&5P 8fIm8+E[Y`gaW@*0E:ls,m=Q*E<#q q>^Ea!7^Vj!7^o:39"9b2`NC"ZLRME6jYnEP4HCD!!"t/o"[!\!('Zi!",nb!!#"D)?9tR#QP3d ^bPli5ue*h$ASQN!ZM3lYk%P4qZ%!NbQ%X3bfkqE!33g0!!'b1bV-t<('+b&bfg%eR`s!U+Ta!N !!'L31(aQk,'D,RL)'di@*HGa'ESUmCUGSo>Ue/J,~> q>^ENnR_UT374q&Wi)f,dbis/Vjj`hc/6%&R@1&0hmf8GRCB>fRAIZiR@1,/S=-"_R[L#$\=T+V []Z'eV:5G$!h>_7Yi#12qj@gi1RXXp1Ga6CR6"+=R/f/B1G:t9P*h>K1GbGe4u4usO-Y6&R@-$@ KThdfJkn0YBTeaN82EYZP*hA\<\lP"R6H0XW\XZ1!;llt1Be3i!qr%eC*!&;tZo`0PndX^u6 P; \GlX0fAZ2u!Q$+5s+13$s+13$s+13$s82frNUt-irI=~> q>\8$!q47fn+$K[ q>\7f!o28\n)"/@aKOKP1P%?51P%?51P%@41\q%NKCchXrI=~> VZ-eg@fBHUJcC<$JcC<$JcC<$JcGWI!0-Ti!<%E~> q>[Vg"OW:u+6]p!J]r\hJ]r\hJ]r\he]djh!0-Ti!<%E~> q>[VT"MN==V;AE5JMVj5JMVj5JMVj5eMI%$!/'mX!<%E~> VZ-bR(IF%2s+13$s+13$s+13$s8)`qNUt-irI=~> q>[Vg".^)dZEEbLb^muhb^muhb^n!gbk_8=NUt-irI=~> q>[VT"1"`%fWO+_1P%?51P%?51P%@41\q%NKCchXrI=~> JcC<$JcC<$JcC<$JcD5>!0-XN! q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UGSo`"plrI=~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UGIo`"plrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>o5JXM(WJXM(WJXM(WXI8na!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!KI-QmK0TmrI=~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&L6ZJUl4"JcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rk5^'`dt!"nPK`k&!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?k5^'`dt!!*P;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&L6ZJUl4"JcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rk5^'`dt!"nPK`k&!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?k5^'`dt!!*P;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&L6ZJUl4"JcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rk5^'`dt!"nPK`k&!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?k5^'`dt!!*P;E%7!JCFGjoUnMrI=~> JcE^hr;Zp$)f,<4s8N'&8H8\i!(ch`rr<$ip&G$l!_E@krW!$$#:b]3s8DuuIK'6K8,rW\q>Uj! MD,AD16MV:!!#RXs8UsVk^icmrrE*$rW q>Z$:fCJ[[r;Zp%*c&s]bl7YHR`rtU!1NW*rr<%fp!!F9!h.?WrW!$$#qV&7bl.SBXT$EG%KHKt q905`=r[\Q1QK]'!!&JUbl=sK`du@mbQ%YA!XQ]fbdonC"u3+$bi\u@JG]BBJG]BGJH,YPJNW8_?!jD\'J,~> q>Z$'fAHHp[fgrg=!P1G^kRR@-87 1CHQlO-l#S4u5!_R6L$ps$-Q@JMZ7@!!)ru#Vn1l-OTtX&2;uFD!<%E~> JcE^hrr<3A?W@1.2Wk&>!!Ppnrr<$ipAb-m!(ce_rrs8VKc!!#Rd rs\W\!!Q%s+WLI]!!#RXs8N'!8:gg"rrE+Pqu6k<,NSg$#56=AkKLPgs8W(Ks8W(Ks8VtHrr9-O P5c@)$;j:n!(m4j#RXF!!!#Ujs3^lM;]u-2r;QfrfDGRK!/(1K"l'C&pg>t^rrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<3`9KN7T?KTK3!!Sh8bQ%X3p<l^)g^kbk_8>NW8_? !jD\'J,~> q>Z$'fAHc11RXXpp+u`:!'^'3s-X9Z1GbGeGBB%:Q8UNTrgc99Q;B@nR@-8,1]NjC5(PNK1B@J0q_JBX*&92V$HtUJJs7YRV QiR)8~> JcE^hrr<3ns8TY1#3Psc!!Ppnrr<$ipAb-m!(ce_rrPOrVloh!;lcs!/(1K#&-7#s69dcYQ"W_s7Yj^ YQ4WP~> q>Z$:fCJ[[rr<4kbfj#d$KfS4!!Sh8bQ%X3p<m"'Z/) NW8_?!jD\'J,~> q>Z$'fAHc11RXXpp+u`:!'^'3s-XZe1GbGe4u5m#R6!,[R@0G, 1c(2XR@-881CTA5H8RK73^5DVR@-8,1]NjC54LE/1k@IR1B@J0q_JEV0JbL3!&DeTk5`/Fs8W%J s8W(Kr;ZeI"93oOs/pm81Ds"F1Gk>aC,7YB1G^kPR;+N;Q^L#nEg_nDrA+Hm!;ePQ!&4:+"Tg52 1DC/(1\q%OKE(Z-!giudJ,~> JcE^hrr>,Os8UsV!WW2D/.M^m8_3qA!!#2a#"ej=/.M^m8_3qA!!#Rirr<$is8U:o%K[25f)PaM !'tB3%:/o.s8N'88H8\i!(d.c!!&5_rr<$Q!'U/e(B=G+qu6cp!^MHrVloh!;lcs!/(4L#Q=scs8Voq\Zc#6NW8_? !jD\'J,~> q>Z$:fCJ[[rr>*Kbfl(I!mJko*X;`Z9#Srt!!%d-!h%8<*X;`Z9#Srt!!&J3bQ%X3bfj?6#6GN1 `6?F*!005K&7bO[rrfu(X0>g!5Zms!!'D)bQ5'Nqof'@[/A,Qao]#qbea@o\'4[J !KI-QmK0TmrI=~> q>Z$'fAHU*- R5d0LOI2>kE_cP#&7..\HBOVN>r4>nR@.07Qp-'Wo.pCI0`*X0"!'-N%1LH:k5`/Fs8W+Lqu6kN s8RV"s8W(Ks8T6PN\^`uR;2UT%$6ll1LHQ<2D[diR5k.$!?(t81B@J0r%eR4!&68c.0)-41\q%O KE(Z-!giudJ,~> JcE^hrr>,Os7L.-%0-@?4^)&>!#bh:!!!'G>\X5N4^)&>!#bh:!!#Rirr<$is8T_p>$EHV)?9^: !!G8^!WYO_s8N'*8H8\i!#o94!#tq;rr<"VbA8s8Vmq!Xis6Tddl2Ub`!) q>Z$:fCJ[[rr>-Lbe,/#(!Ol^3(cXM!&2X@!!!*U8"Rpb3(cXM!&2X@!!&J3bQ%X3bfi(,8k'9j 0[.`@!!bSK! q>Z$'fAH >r+:)R?r,LR$gG?1]NjL4u5!_R;J('R@&;F4Fo<[1B[[[!=0bG1Bf62!!!B\bVSD^]n$._ rdanGr.+hIrdb%KY(2Qh"'1eW7/ShMuFD!<%E~> JcE^hqZ%-/NW9%SSo.q8!!E9$!!!u:s!.?2DI?ED"98B$!(d.i!!#Ris7r7(?rR+.s8N'!-3+"P !!rH$rr<*ks8Voq%7pO!!!#R.!#l.9!!#Rerr_ck!5&+-rr=?9s8Duu;#g1g!0c:?!0Yk*rVult !(d.ikl:`h?X!L2df0:I)hJ%Yrsc*us4Kpks8TPHg%gpYbl?kM]n$._r.+hIqLJVGrdb%KY(2W6 "R@<5+8Ys9&*kJ@+8Z$)!!)9`rr<$ns8<$"!<*'/[f?B0mf1s2.0',D[Jp1,!/n&\!KI-QmK0Tm rI=~> q>Z$:fCJ[[qZ%-0TZkWqF&Yjl!!UTj!!"nTbTjoE<)#7N"jG0j!1M-U!!&J3beS:!9f;tTbfg%e 9$GLP!"JeKrr<+hbfon`%;O,2!!&He!!WeQ!!&JbbQG-N!5JBSrr=@6bfKhbWm&$S!4Rjd!/dr% aiqs/!1M-UU&Y6g9LJj]_or)\21a!@bRKrYb+9AAbfj@H0bfo5M]n$._r.+hIqLJVGrdb%K Y(2VX"JQ,$43RTH&#':/43PjL!!(*ab5_O=bl%SC!<*$3^UJT s7Yj^YQ4WP~> q>Z$'fAHSc[A8lRLR?03\R@.C[1F#4sE,pu,O>A\\R6ED_R@-5p1I>VkEfQQL1GbGe ;DU+dR==ugs-WpP1Gelq%7i92R@-6pR@&[aR@-891BV?ZR5Xmts-Y/s1HLql3\sm+R5fV_R8,t& 3AWIZR6ED_FIAG9F+fsK2)CYg?@ap%1CYcg1*ZiF1G]IW0eNbObVSD^]n$._r.+hIqLJVGrdb%K Y(2Ti"'V([B)FFq>*t^i1Ga3BR5?]XR@-/nrW3$!rW*Tc1G^I81*ZiF1FW;Y1G^`c0t/t7rrIcP p>uFD!<%E~> JcE^hrr< q>Z$:fCJ[[rr<^rrJ,Zp?i!d!<%E~> q>Z$'fAHR@-Z'R@-891BU18R6:=%s-X`g1HLql3\ss-R5d6RPaRr& A2?$0R6ED_K)1l<3&?tj5CkWW1C=d!1G8__1G^Q^1!MN;!5=!`s8.?Hs8IQKs8RWLs8IQKs/pm7 1B_0SR:\;S1Cmr^R:\931LQW=2D[gjR5k.$!?(t41C=d!1GJka1G^H[1:K(8rrIcPp>uFD!<%E~> JcE^hrr<$iqu7)h!!'G*dJs:Irr<$irr48.!!'G*dJs:Irr<$is8N'!8H7oS!4DdR!!*'!!!">F s0_n5qZ$Qq(J+T+!!#Ris4./Os8N'!8H3W0X8`/"8G`?7JH-,4s8W)+s8N'!8H8\l!($Y@!!&5\ rVuQ8!!%'>!rtgjs6'Fbf`(mSjo>>\!(_\@m/IFX"989!PQ1[\!0b\-kKLYjs8VbBrVunJquPNrVloh!;HL#l3%(dBKuOsl37*hrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<%fqofJD!!'+EErZ3abQ%X3rlcX_!!'+EErZ3abQ%X3bfg%eR`qN,!3FCc!!(6e !!#X8bY8'HqTSs>(RiRl!!&J3b]s0jbfg%eR`lTL]Z^?URek5V-3+h!bfn4ebfg%eR`rqU!/f!W !!'LJbfmhf!!':J!/f'S=QQV$XTSq>UJTs7Yj^ YQ4WP~> q>Z$'fAH(HsW2R@-5p1P2$X1GbGe4u8Fj2D^bh55I&`OdUGN1G_$U1GbGe4u5*aR6WQS R@-#s1G_."R@-&kR$g,o1N]%F2#]977PcigR6H0Xln\t^"Z%\00f(U:!&;_Sk5`5Hs8VbBrVunJ qu JcE^hrr<$iqu7)n!!"KP&HDh2rr<$irr484!!"KP&HDh2rr<$is8N'!8H8,Y!%M.a!!*'!!!!'\ A0'S*SH\N-s6%UWJCB%3rtkh<" 'f2?AH2Z3!!?J5?Y'3:ci=2J+ok%/rrMZjr;R8r[dsIR9IBf>gBbjp@5G(d!KI-QmK0TmrI=~> q>Z$:fCJ[[rr<%fqofJO!!"rE&-)^SbQ%X3rlcXj!!"rE&-)^SbQ%X3bfg%eR`qo7!&m4U!!(6e !!!-a4okY!qTSs>(RiRl!!#&R6N[UJTs7Yj^ YQ4WP~> q>Z$'fAH(HsW2R@/8?I$g=.1GbGe4u55\1GbGe55I&i:6q<,FF9BN1GbGe4u5!ZR>?0V R@-$^MKj6%R@-#jQC35D5WP'sLids)IPWdJR6H0XnM:Xu.l&k*![BKW!u`pJ$44p4k5^'`dt!T; !goClBWR7R63!?(t91CbQY1,:*V,;V+e%59:7.(1r-rrIcPp>uFD !<%E~> JcE^hrr<$iqYpqZ!<<\7!!*'!!!#Rgs!*=#!"c=6!<<'!!(d.i!!#Ris+g[U&?c'6s8N'!5\:K6 >l4Btrr<*ks8W#t#QYW;hZ*TU!(d%frr<$iq>W/ELFri<0ol;6!!#Ris6`&R+-cg+POM0`"9Tcg s8Uk(!WXnRqL'Xn#V9rprr<$iJcG9?%dGq^!uGA8s8Vat%g4;Ubl?kMJUl4"P5kCZ!XJc*qZ$U$ rr3/.0a8A.rqucsnc8Uf#3n)V!uGA8rr3+o)?r_&Y5\N^s7Yj^YQ4WP~> q>Z$:fCJ[[rr<%fqTK=;!<=4%!!(6e!!&JdbTfUY!$@4$!6iXe!1M-U!!&J3bXV[6+-$=$bfg%e ME;"Q@a"Vlrr<+hbfp"c#Qbc>`luX,!1Ni0rr<%fq91P/=;h;L15sH$!!&J3bc2ff-B8'+\$%P! !X0cjbfkeW!NW8_?!jD\'J,~> q>Z$'fAHUJJs7YRVQiR)8~> JcE=]!qFb:o`#!_e,/\8!qFb:JcC<$JcC<$JcCQ+!KI-QmK0TmrI=~> q>Z$:fCJ:P!k,/QoZRBFX3:%W!k,/QJ]r\hJ]r\hJ]s5"q>UJTs7Yj^YQ4WP~> q>Z$'fAGpN!CB'C1BBg-n1t)35_1_B1P%?51P%?C1\q%OKE(Z-!giudJ,~> p&>9rs7Q6h"nhokrql^'o0!'Zmf3=]4p+$pJcC<$JcC<$JcC<$JcEjl!KI-QmK0TmrI=~> q>^Ea#6=f5M#[^*"8MrondF)/!"eSho&2V64Qh:drUPN`J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>^EN"ooD=PPG$9p]13K"2Ue$X8^uZb,:o4hLXS_hgmS71P%?51P%?51Y";WrrIcPp>uFD!<%E~> o`#*ls8 q>^Ea#6Y#0H2n+n"Si)pncQu6!.b(>!SAoRo)&!/b^muhb^muhb^n!gbk_8>NW8_?!jD\'J,~> q>^EN#7M+EMWshU!;Q`nhZL6RRF2#k!Pl[*htu;^1P%?51P%?51P%@41\q%OKE(Z-!giudJ,~> p&>9dp?DMl&-)%mrqcX#c3=7Nbl@_"1\1PIr7C7cs+13$s+13$s+13$s4RDQNW8_?!jD\'J,~> q>^Ea#7CSNW8_?!jD\' J,~> q>^EN"oo&3HN3bNp]10J#cF,ZU#+\aX4$Rr!nu/\NSf:CJMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> o)AjZ!!)`iq>0sf2O]L(!$hOD\n;!BrKJrn'i45speh(l7R@8'!!!tYp^\_O^'[B_5=?n5=8Dm1 !WWb0pbi_8JcC<$JcC<$JcC<$JcGEC!KI-QmK0TmrI=~> q>^Ea#J[pgfa@lA^A5\Cnhqo)!NW8_?!jD\'J,~> q>^EN#Kb;re,TC%`VI7Eh_q+?R@2.RhkAc]hq>B2W1q#_hoqmaRCK2`WL90ShT_M8hliTa\YlO" UVYjFYF1fWgs)CggSs(]1P%?51P%?51P%@41\q%OKE(Z-!giudJ,~> p&>7(!!3l8"qCY/#5\?W2Y<=9!MBC(c2[cK!*]E*!%n6NhuEaBs,bJS!) q>^EarW!'.!!!-&q#L9^2%]7C!!1[A)!CJX.fcC93<3a`nu)NgJat\]#lq[09`QU4`FSN\`q&*h !5nBu&cc#(ngWe$nq##9b^muhb^muhbgjr5rrJ,Zp?i!d!<%E~> q>^EN#Q!rhr:U*Xqt^3eh_h"_TUD8(hjiQ\g7F__hk6C`hqtN'REscdhO9kbhkHOYhn71jT%`)H R@2ddhjg+\hqk3dW8E.^JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> p&>4"!!!?+!!W,tqu7N0%KH/4!#,;Ds8URK"S_r'!"T&/]Dr'%rr3jP!&aBZ!"8gFdf8n q>^Ea#64o-!WW9%!r2innegO.o&0]O/+4#>nqR2NnFAL<*:iYm!!hrknei;FKA%=G(\/s;o&B62 jT#:ko("jB*:ft[Vt,E=JcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>^EN#P.ies7lTmr;$ o`#-ns8EH;qu-?fqu7K"+ohST!!$@?s8R9C'*%uD!#>P6CB,%Hru%g:+-32t"R%W@okPQl3<0&H s8UjS"8>(MJcC<$JcC<$JcC<$JcG?A!KI-QmK0TmrI=~> q>^Ea#D.>^]E&#FK_^5sne]JDo($Dn!1GD.nf.WVo(!Ut0(SQN!%Im;)(bhY3PPP!]6!Pr:_YQ9 !!(aDnt#gclQ5Mmnq##9b^muhb^muhbgjr5rrJ,Zp?i!d!<%E~> q>^EN#GI&d_"n#bI//*ch\W]Fhqt8uRCU8nhjp1Phqsrl`o#[DRD]!\(nR/>U9p>^\Bs-YXIZ;] R@2jfhl<*:fWD%.JMVj5JMVj5JMVj5eMI%$!JCFGjoUnMrI=~> p&>9fs82]t!;6 q>^Ea#6P#-Gldu#"8MupneZYSo()&P!!7K;ndke2o'-8VX7G`_!."P6(h3OT<8[`V*:*,.!)iB8 !!D]\o%=!C@'ca$J]r\hJ]r\hJ]r\he]djh!KI-QmK0TmrI=~> q>^ENrW!%Ms86X,!;kXiVq9h`eXDnpdbirOREsd@R@2[agmXYZrSJ0^RAe6LR@0o.hOL"Rhkum4 rndjpR@0o(VVcq\JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> p&>6qs8Drt!<;inqu6\gR/[*uf)Pe^s8T%u.0%Ei)uBU,!!$O-rt*rc!lY'?!'L;T!!#@b@/p`8 rr`63!#'q`JcC<$YQ'0t\]fX)MuNg;s7Yj^YQ4WP~> q>^Ea#64f*If]V!!Vl`mnc:5orpg\`!!(14njiagnqR30nabB6!6P31&>&q*jmE-LKC[q#!2]-& !#be,"7H?m/>_ogb^muhb^muhb^n!gbk_8>NW8_?!jD\'J,~> q>^EN#6Or-IK'1u"8MrohZ9>(rne?jR@2ddhk?I`hl<*Uhqu>>RG%Pr&?;.hhV+Bcdbi-6RF^,_ RC<+P"5K?5\u";81P%??1P*c\b^hR61\q%OKE(Z-!giudJ,~> p&>6qs8Drt!<;inrVmf458Z;ds8W'l!6bEBr-')@+)LNJkrSkF.#\*)&afWJs8OhYl2U]I!!?:F !!Q^.rrR q>^Ea#64f*If]V!!Vl`onf$[R#!1`6o'd:mkOS3/imo'I=q #%e,@$ASQN!ZM3lV=K2]J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>^EN#6Or-IK'1u"8Mrqh\snBR]>3$hqX`ihV[5AX.ZAg`o#[`Ssc"Gh#?1C[@,7rhjUJ"hqFTg T=p\]V:5G$!h>_7V;Hh[JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> \c2a1fAZQ*!Q$+5s+13$s/uBQbdkrKs,6mXNW8_?!jD\'J,~> q>\;%!q47fq=4PeNW8_?!jD\'J,~> q>\:g!o28\q;24JaJ@^E1P%??1P*c\b^hR61\q%OKE(Z-!giudJ,~> Z2Xsr@fBHURfE?e!s&WVN6M;,qi3NB"X%."q#C?o!(d"e"8i-!=o&(*qMHs6#r7YCrr<$imf3=E !9f"6g&D,-!2RR5Us/d8pWWS6W6CD("L^)k(2i^C"Jd"B8bA8I!KI-QmK0TmrI=~> q>\"r"OW:u+6]NkpWWU:!s&]ZN6KKN`*OPj#9d6fprraUJTs7Yj^YQ4WP~> q>\"_"MN==V;A$*pG;f:".57!6Hh4j6?8*QP_6ZeBVOEj#G1RXXp mPFl.!&T6_feW[5!&;DJUs/d8pWWS6W6CA["Dj0cL/RRu!tkY<*1Jb[rrIcPp>uFD!<%E~> Z2Xp](IF%Js8N'&)dbl2!P6SV#kp@["@QHM!,D q>\"r".^)dZD7!bbl7YH3_UUq!l*%)#e^iN#!YNt!3c1As%EEoqof/^!!'+sbRD/s!")(Z%5Z5P !!&JUbl7YCRXr]:bQF:L!4ma*kfj')s31L@rlkC?rlkC?s31L@J]t^L#'BnM7gB$3r6,2`XS^3F KFP<&*atS_q>UJTs7Yj^YQ4WP~> q>\"_"1"`%fV@?u1]NjHGBB%:Q8[#E#Y^MONd#`0R6(+!s)S0$q_J=>R@-,41CR!DR>c99Q;B@n R@-8,1]NjC5(PND1BSF(!&;DJV9Js;s31L@rlkC?rlkC?s31L@WQ^M]#'u\tGF4dgr%e@,/,M++ &I^?D""9Zqq>UJJs7YRVQiR)8~> JcE^hrr<3ns7lWp;pPCFK)c;,rr3#HR.(%Wqu?_"qYptV!"7EYs8KD*rr<$imf3:e!(_\@g]%EU 7YUo=`;c[Xs&/m@s&/j?s&/j?s&/m@s&,i?PQ(pf-NI6Jjo>POrVloh!;ld#Bg)Lrl37*NrrJ,Z p?i!d!<%E~> q>Z$:fCJ[[rr<4kbeO2YWm8fj-iasrrlbD+\aR`E`W-"?qTK?r!#3;obfP^cbQ%X3m`b\2!1JJ_ gWTfC�-9J^!?%s&/m@s&/j?s&/j?s&/m@s&+El]?CQ'#QU(4RfEZ7rQG;L!;jtD'nFNPV$W[9 q>UJTs7Yj^YQ4WP~> q>Z$'fAH',1u:"jOI:DQr\FR\3;YK32"i^-5ae$$qD/PARUJJs7YRVQiR)8~> JcE^hrr=cEs7lWpPQ1[YHQr\-?L\!p!!#2a#"ejfpY&q>^Hp&O'8#8cJbj8H8_^e'krrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr=dBbeX8Z\'3(4:D3dF@*6^;!!%d-!h%9B0a&P[+!7f4be['g!Z#1dbfg%eLc>SR K_rsq_>sY-q98j=&Vi"@REPX2R`s!a0E`GW!!'+tbQG]_!1iu1rr<\#bfKhbVTcUO!4U*R(BOaX 5/7!q&09!2:D3dF@*6^;!!%d-!h"V`mE>]J2T>a.J^!?%s&&j@r_`a?qbdO?;Gta<;M!'(bQtZX !5Zms!!'D)bQ5'Nr6,Dg!k-=s_>q<@bk_8>NW8_?!jD\'J,~> q>Z$'fAHr4>nR@.07Qp*<$LmEWaMMaDM1IQPPQ\\p(1GbGeU*-R5d0LOI2>k E_cP#&7..\HBOVN>r4>nR@.07Qp-'Wm5"kR*\7:G`&"76s&&j@r_`a?qbdO?;Gta<;Q7m(1C.?U R5QiiR@-&51BABor%eR4!&68c.0),o1\q%OKE(Z-!giudJ,~> JcE^hrr=en?UFf4s8W'm!#f$"!$VCB!!!'G>\X44!!Z@G!!$1%r_3A2=uQF)s8N'!!Bi^K"5s+W "7Z?k]D;L,!"f8X>\X3 q>Z$:fCJ[[rr=f89HaBnbfn3F!%CMY!("iQ!!!*U8"Rj:!"27&!!'+Eaqat+8f@[qbfg%e!^@_+ "NLA`"0qn,^\Q+R!"f;f8"Rp)!1M-S&c`D5$ig:/qof/J!!'e1bl7YkR`rkR!3+2R!!'Ke!!"rM 1CD&o!!#&R?HO#`.7tKY6-ROQ!!=rGSq5,RbQYff^;^/aJ^!?%r_`jB;Gta9;?4r?;?G'?;M!'( bQt9M!6EC-!!&kobQ5'Nr6,D_!5?\$aoJl@bk_8>NW8_?!jD\'J,~> q>Z$'fAH?*PR@-)l3L#q\G*JD!1GbGeR!+[] Ou3(m")40k2Yf0/R1Yg4GW[dMR6EDbQ'mDNPaRq#q_J=gR@,u01]Njk4u56fR6*3,R@-$^R@/;B KT\`ER@/8?:-"Q,IWgsD>;J('R@&;F4Fo JcE^hq>_!rs60La>[L\8!RguJ!#tq;)t3>6"]Prr<$Ds7?9kM#@8WnGiR# s8Pak!<<*!!!!u:s8N'+8H82[!1j/W!!$1!rr_ck!5&+-rr=?9s8Duu;#g1g!0c:?!0Yk*rVult !(d.ikl:`h?X!L2df0:I)hJ%Trrnc@s82km`;c[Xs&/m@s&/j?s&/j?s&/m@s&,i?PQ(sV!!)9` rr<$ns8<$"!<*''[f?1([Jp1,!/m-B!KI-QmK0TmrI=~> q>Z$:fCJ[[q>_"?bb>(=9M@hS!Q3+]!&ac")mTGD[*5HK!3FD=!!5hf6i[8*bQ%W3bd[WQ[f">R Z2am>bfgRr!<::C!!"nTbl7YMR`r&;!4C%N!!'+tbQG-N!5JBSrr=@6bfKhbWm&$S!4Rjd!/dr% aiqs/!1M-UU&Y6g9LJj]_or)\21a!;bQU%0bf0XoJ^!?%s&/m@s&/j?s&/j?s&/m@s&+El]?CS_ !!(*ab5_O=bl%SC!<*$+^UJTs7Yj^YQ4WP~> q>Z$'fAH07R6!-GR?ho8KUJ2b1RXY01L?K;3;bQ: BUP8H1Gb?rRK#)CR/gRl1]NjM4u6l?R5d!7R@-,51BV?ZR5Xmts-Y/s1HLql3\sm+R5fV_R8,t& 3AWIZR6ED_FIAG9F+fsK2)CYg?@aou1Bdt01FrM\`&"76s&/m@s&/j?s&/j?s&/m@s&,i?P;UJJs7YRVQiR)8~> JcE^hrr<9ps7qfX"om6O!!J\h!!#FdrsIri!;ZZl!!$1%f_PRSR/[-d7K<,_!.4YD%f-8->6"V` <<*%!rr<$erVult$:t3\!!)ipqZ$V!qu6co! q>Z$:fCJ[[rr<:mbecdK#g@Yl!!KgU!!&,[bR1$D!6`U*!!'+EHhm^K\BFpQQ-?uC!4)OH%`/5H R`ruV3WK0(bQ%X)rQP9A$C]24!!(3d`;fn>qof/Z!#Jq>UJTs7Yj^YQ4WP~> q>Z$'fAHUJJs7YRVQiR)8~> JcE^hrres8N'!8H8Gb!.4VC% >b&lbQ%V(!!*'!!!#Rgs8N'+8H82[!20A[!!$0us!WEu%,1a]rjDe+!!#RirrW6es4mYTPPkCZp !!I:ErQ4A7fWMP!!CmQrrqNarr<$iJcG*:!:9Xd!WW9T`W)aXrDNC6rDKTPNr Vloh!;ld#BKuOsl37*NrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr4"3dG=#/pMb"fTYh!!&JebRLiX!4L+M!!'+ET`>;8rlb_Jbfg%eR`rMH !4)LG%4hJl]ZeTg!!(6e!!&Jdbl7YMR`r&;!4L+Q!!'+sbU=e<(;nA?b)4Ee!!&J3b5hU#b_Z<" \&QY9^Qnj"Z-34KQH[RH!!^C@bQXrhbQ%X3J^!K)!3?&"!WW:+J^!?%rDNC6rDJ3j]$(H:"4 RfEZ7rQG;L!;jtD'S=QQV$W[9q>UJTs7Yj^YQ4WP~> q>Z$'fAHIW 3'8uQ4C4GD3A[%j4u5!:R>s-'1Bg6(1RXXpJMZXK!"o/1!WW6L`A==6rDNC6rDKTUJJs7YRVQiR)8~> JcE^hrr<]O?Wn$A)ZTe2!!uV-1'mp[!!#Rgru+T3#[&AP!*T@$9`PK!=Y^9_rr<$is7cQoHi*gP pce`\6!ct[!<<'!!(d(grrl?[_oJ!!uV-1'mp[!!#Q@s60IaquEP2s+/D)b`_u1ci=2J+ok%/rrMZjqu6iS#fl^K 1R.n?NW8_?!jD\'J,~> q>Z$:fCJ[[rr<]n9LAm^1Q!!&J3bS:*b70ESj \!e!n9JHMI[`f-[*))43(B>(>6QQ]\bQ%X3J^!?%!lb5OJ]r\hNQ_TI!!Yt!!,MMV!OMk(bQWS. [D!\gSBUg/!KI-QmK0TmrI=~> q>Z$'fAH>s2OFAuAR@-8<1E/6:R>,sNR@-)l3L#qfFF'$t1GbGe4u5s% R5k("%8)kQOEbl0R@,ieR@-8;1]NjM4u5*^R>,mLR@-,41GMXjR>c68Q;B@nR@-5p1R+;`HC1+g 3.-U.FGuWU3&?kgIrdk8PaR>LHBUJJs7YRVQiR)8~> JcE^hr;[E1'N3ffs8%-i"UHYus8N'!8H&Q,oi;;5M?!Was8VqD,m=Q*E<#q q>Z$:fCJ[[r;[E2(/i/rbe[-j!X^Jnbfg%eRf1GK[kIn(MZ$ bRDL#+pJ/e6@mA)!!&Jdbl7YMR`s!a0*<2N!!'+rbV6k8)?^C&N6KKG!1M-UWZ_EjNW9'gY;-[k "X8*5b_?l6!+=$e;%s'=/8EDQ!!&I=bim7P`W3T$b^musbQMr)!Z>nQbQ5'NqTK(M$j]YOSBUg/ !KI-QmK0TmrI=~> q>Z$'fAHOI2/V5;P*`R6ED_=HAbs@%!EB?A+N0 P_)[e1MDr=R7K,%H'4PWITA6\R@-6i1[$Ur/-%EC1P*c\b`O[aClk!<<;SHP)?BUi!tkV;)k/YZ rrIcPp>uFD!<%E~> JcDeN!;$3i"5s4[UOiGrs+13$s+13$s7uZqNW8_?!jD\'J,~> q>Z$:fCIbA!3uOI"-EQ`\q/(Vb^muhb^muhbk_8>NW8_?!jD\'J,~> q>Z$'fAGC?!'pN>"*0ft2h JcDeN#0@NY<=AjEJcC<$JcC<$JcC<$q#:ASs7Yj^YQ4WP~> q>Z$:fCIbA#$N'=4TYU;J]r\hJ]r\hJ]r\h!6k9=!KI-QmK0TmrI=~> q>Z$'fAGC?#)IqSJ=)a JcDeN#2V0E!uth8JcC<$JcC<$JcC<$q#:ASs7Yj^YQ4WP~> q>Z$:fCIbA#)49)"Wh*nJ]r\hJ]r\hJ]r\h!6k9=!KI-QmK0TmrI=~> q>Z$'fAGC?#&9*aQA/^&JMVj5JMVj5JMVj5!&OHN!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>o5JXM(WJXM(WJXM(WXI8na!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!KI-QmK0TmrI=~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> hZ"#WE[a44.U`;Ve1(G&k5PP5.KB\LrrT\B31g0M!!c'ps6p!g`W,l:&HWneqZ$Qq!(d.iqKF"a $7K'QrsAR_2%0X2?IJlRrW!$$#qqnLs8N'+8H8\i!!*3822D-]s.TGpeP$\X_Z-FUrDNC6rDKT< OoGQm1C"\5o)Aig*!](-PlCcDs7Yj^YQ4WP~> q>^Eanc/IV%,+c54>/F'o(%MA!"A#\",7*^%/TMrGR7cVo(UB.!!et:bcq-J_9DiX&Ha(ibKS01 !1M-U_FkLC$mnsLbR)3o+9i&o=i8J-rW!$$$8S.Nbl7YLR`rtU!!*691Oju"TZdLY1C4&4biR(I ;YSE6;M!'%bQN&.!uc4NbQMAa#uSj8bk_8>NW8_?!jD\'J,~> q>^ENnc/IC%*u&RWhcZ.hqtc/RA]3)"1+GaVu#9PZ'rk7htJr,R0Po31MiJI2Db<"!g\L?r\OSB #sL.$7!t2cOb.$;1C6BgNgGu`A2Q/!rgUJJs7YRVQiR)8~> huLVqYqc63WK:N>;H7os8N'!)dY2u"5X"W!!#Rirr<$;ZFu@ ;Z=o?;Z=o?;ZFu@;Q7m'rs$mO"B-HD8,WAfrR^rH"l'C&pg>tDrrJ,Zp?i!d!<%E~> q>^Eanc/LW#NQ7RnFH-g(&mb*(]Z#HncBX..JiT:#QRJqo(UB.!$.NPbcq-J_9;lZ3_VU9!+*mn !!&J3bT?fl7RJ(%qTL.s&c`,#732H4bfg%e3_Bta#0+m2!!&J3bQ%W(8Ljc@5KeW%Ul^)g^Qbk_8>NW8_?!jD\' J,~> q>^ENnc/LD!md=KrndaQZMr__S=.=WhZB=9_tr6lR[M6qhtJr,R2nII1MiJI2D^bhGB8A'R7f=l R@-5p1Qn/`FF'+%qD09gQ'mYVG`\=S1GbGeGBT:?N\iOJR@-5p1RXYTG)D]UAq;b31BS=1&cfd) V9Js;s31L@rlkC?rlkC?s31L@WQ^M]#'u\tGF4dgr%e@,/,M++&I^?D""9Zqq>UJJs7YRVQiR)8~> nc&aWk3hC&o`#!+!'L8\#PMO)s8EE,1$8K5nO%iVNQVK)c;,rr3qbR/d0d!(d.[!!%9Drr<$is8N'!8H8_E$33MGs.KAmnc6Q, V9Js;s31L@rlkC?rlkC?s31L@WQ^S+#lZ1O=9%C_"RZ0f!V-6frs!1#s8V?fr0@9_NW8_?!jD\' J,~> q>^EarVm#'T"^fBqZ$H`!`]5erpge[=V>AC<-iasrrlc=E\]i7t!1M- q>^ENrVm#3Xi[]rqZ$HM!hu+5rndt#d,3a9R[MRchZMZ&RF:rh!QN3YhtJr,R2J1E1MiJI2D^bh 4u5!NR>*LRR@-5p:77M4r\FOFqD/58R p&G#,#'\&7k/ER/qeQ*/"_n#>?EWSls"s?J!+c-.PV4p0:[S1r!<UQn!WZO% s8N'08H8Jc!1Nrf!!#Rirr<$irr3&$!"=GYT`5&`!5ec4bl:Q@bl1K?bkk9?bYh?_r_f`>PQ(p[ !!'n9q>^MHrVloh!;uj%rWe>\s7u`+Q2^lEs7Yj^YQ4WP~> q>^Eardk?5*_r:J5`GSlqsjn.!!d;El2C00f`2#po'LHA3#,rknm;Ct1#V(<.FF235Sb;Rnac8( !!(14 q>^ENrj`6I6#!GeDnc+ZqqhRIRA%=@hYl=N_O6hGhq>B2W1q#_hliH9WSPgiW8"k\XIZ-&rneF, R@2ddVPUu`d%Qkqg#'? p&FtO"NoTddZjShqu6Y\r;\;K6KJ1HhuEc!r`oM-s/l>Rs8P7_4TGFpb5Zs]s7cQo@/p8b!!(45 :s/e;$fD!b\,UrJs7cQo@&Eu(!#J3+s6p!g`W#o<8H8?u!"Ao-!!#Ris'Yd*!>::err_ck!5&(, rr q>^EarE07UI]cF2qH<^d!&+9N.Kii>o(&a[!9W]"!2T0G!,1ro%KMgcng3Ji*ldd1!!'q-nu2Th kL)BMrpgGs!!)$L*ldd1!!'p@o(UB.!#M*Jbcq-J_9;lZR`rDh!#<`%!!&J3bT6W^!?I-rbQG-N !5J?Rrr<1jb'a7IrlkBB"e*ZZ!!&JebQNW8_?!jD\'J,~> q>^ENrLsEiP.G@GqP*lE!2'4X.\43.hqtN'RGQYhRFU2fREsdJS!hgahPB#cT%`)HR@2ddhlN66 hTN.Zrne*aR@2mgT%`)HR@2d5htJr,R28%C1MiJI2D^bh4u5NgR;ar p&G"P"\-"l\Aa^/3rApYq/dJP!%0;ss1A=9s3q#Op]%T#%fcQt!$;0s4obQQs8Vlp!)!:k]Dr/j *h<3/$bZNCrr;Qhs7lWp8uDXg!!c'ps6p!g`rGo9$NlCgrr<$is8VtK,lRcE!k\C1#4VZn])Ve' rW)uuqu?a&_#FB6!!Ppnrr<$irr3&V!!@fPT`5&`!5ec4bl:T@bl:T?bl:T?bl:T@bl:S?b`i&5 m/R.Ns8N'!:&k.o!!*!#"Le@,!4Dh+! q>^Ear`KD73Yc!C5l+X\ncIlR$2jiOBCbUc!"AFR!!r)b2ZOigng4?(ntL^+o&B62jT#:ko(#BQ% ''WerUL=h!"&5eipu[%!!'R6o(UB.!!et:bcq-J_T_lW$O!-HbQ%X3bfmt*')hk3!l+ZW#-n4/^ Wan3rW)uBqu?a,]Dg%S!!Sh8bQ%X3rlbG$!!IksTZdGD!.iAVbl:T@bl:T?bl:T?bl:T@bl:Rlb e)(*X8i7Abf]tdV9Jl>!!*!"$,4X#!5?\$aoJl@bk_8>NW8_?!jD\'J,~> q>^ENrh9Ro?:BB1Du-4*hZD3,Rf/X%d,3`TRA\rBRA&NqTUEFLhk-=\hm1Yehq[,Hc^C3Rhqt/r Vn\\UrSJ!WRA/Trgu%#8R@2^3htJr,R0Po31MiJI2Db5u$]mJ,1RXXp1G_@AQ2[0PPrAOr#&'Em 2D[.TrgEdBr0[S?2Z>N4R0>c11RXXpr\FV*R?2tUTJHTe!5^Ogbl:T@bl:T?bl:T?bl:T@bl:S? b`aghG+"aT1H(Yh4>Zs;rrE$!#r+4b!&68c0`Wr!1\q%OKE(Z-!giudJ,~> p&Fto"&_TL?MRe#s"+/oFoVLZs8Qj7'E<7V'*%uD!#>P6aoDnL4n/LECE4TZ!!&Dds(_T:,lf(d rsNWC&HDE=*?mKD!19Y`&/G75s8VKe!8RSS!#o9SI*DTirr<$ir;Qo]RfEF`r;Rf6!ruO)s,U.[ !<<'!!#nuC!"So+rr<$is8N'!8H/VjWrNQZs.KAmnc6Q,V9Js;s31L@rlkC?rlkC?s31L@WQ^S+ #kJ#r_#O62!.k+K!V-6grs/N.MuWhR!4eBp!KI-QmK0TmrI=~> q>^EarB^U'@p+$O6M^1'n?c0q!&F-9)#u)U)uq>Vne_?Zo($Ss)seU6o%?hR0/!;*g@FeP!!`l3 9`=Mi)#tfMfh`A90)u"+Yk%P4&-W&pbfm3i!634_!'3eMCps>err<%fr6,;HB)hq,r6-1u!#Jq>UJTs7Yj^YQ4WP~> q>^ENrIY3SVkUNnKDFCUgrZI^REFFES=.=QSXI@Phjg+Shqt8u\_+(Bhp/rVa=s-WjNrA+U67sLGi4T$uJ8=5f/ 1Ga!1R@,ieR@/8LR$i$p1]NjH4u5!_R6LU+!fi[fJMWrT!?(sT1Sr=q;ZFu@;Z=o?;Z=o?;ZFu@ ;Q7m(1C.BVR5QijR@-&51BABor%eR4!&68c.0),o1\q%OKE(Z-!giudJ,~> p&Fs'!k=K6q7Z_+!RO[Bs#U&X!'gM_%KJ6`7fY" q>^Eaqu?dZ5T]_$r:0l9XT%cOli7$Lo'cb^Gk)CGA+Jmd!3>\]]`8:X[.<`#!)iB8!!D]\n,r`- [f?HQo()8Q!,(g8!)iB8!!D\oo(U?:(B?bFb[gb^bfg%eRek8.!",1=`e2FXbf'P^Xo$!W[Cpbb3/\ZiG[$jim[$pWWS6J]t^L#g*APPg#Ts #0Hhf!OMk(bQS]4bflmiSBUg/!KI-QmK0TmrI=~> q>^ENr$DJODaF1Gr8.OTfDaYff9r&VhqXZgdGLF]cem9@RFg?RYF2&]f\bPURE"-^R@N0lgmXYU \!`]>hr!4XRF'f\RE"-^R@LJ$9g74:,Fa_6CF6&q_KFXR=$nK 1OPUY1GbGe4u7YUR6ED_R@-5p1RXXp1G`L-R7)T^TJHTe!5^Ofbl(H6bl(G p&FQqr;SsK'^u)%`rHS1s7?9k@fND-.0%Ei)uBU7o`+t3s8Vcm!(-Zn!"Ao-oDel%s)%fHqu?9g !*8dn!(-Zn!">_(%,q6f3*?Of8H8\i!(ctdrr[],5=A&"$p6^!!*'!!!#Ri r^$Sps8N'!8H8\i!#o64!!"A@JcDDC!V-6-s+/D)b`_u1ci=2J+ok%/rrMZjqu6iS#fl^K1R.n? NW8_?!jD\'J,~> q>^EanGrLX4sqrMo(%hA*:37M!!(.38-!&gLB'R/o((T:!&*p6huEbRmhu0Do((K7!6XjW!$Cb% g&M,ghuEbRmhu0DYO_G3%$1Gi4$iuKE6QN+!1Nc.rrNW8_?!jD\'J,~> q>^ENnL"1k!M?q%h[luZXkqsQR@2acTpa3`WgUHth^-:1RChA6aI/IIgRO\?hqu>>RG-PhRC1r0 _jQqGaI/IIgRO\?YM](1$u_Q$GCGpI7PcigR6LI's-X3X1J4'oG]f7=L,Ac`+\IueOEbl0R@,ie R@-5p30otN1GbGe4u5!_RlBWR7R63!?(t81Be=!0Im5R S2:!@!JCFGjoUnMrI=~> p&FQqr;RM?:aJ@b*b!n)krSkF..I.Y)`f'Wo)AY9rXAn)s8W$_!!?:F!!Q]n3rf72s&B%!/*T+q !$pYk!!?:F!!Q]*rsR%=%0I_srr;uu!(ctdrr q>^EanGrLX'o>4)4tS(!l12VF!!#"Il;eNV-@P@^ngs/AdAADL;5PE!']s)!!#-s 1&q;4kSaF*AdAADL9U7BbQWYL#6lDqrlkBB!1Nc.rr<@tbfO6B$ipf#YPHBZ`aU+r";jIVbfg%e R`s!5!!'%C!!&J3bl.SE!td89J]se2"`seI!!34Qb^musbQMr)!Z>nQbQ5'NqTK(M$j]YOSBUg/ !KI-QmK0TmrI=~> q>^ENnL"1k'YChJMWrT"Ub>2!!*,=1P*c\b`O[aClk!<<;SHP)?BUi!tkV;)k/YZ rrIcPp>uFD!<%E~> _#FK8fAZ)r!rgg1NrK4Q!!%b)s+13$s+13$s+14 q>\P,!q47fm.(5Hakj)hjNI_6!!'EXb^muhb^muhb^n"3bk_8>NW8_?!jD\'J,~> q>\On!o28\m,%m"e(q(^j>-mAR@-$c1P%?51P%?51P%@U1\q%OKE(Z-!giudJ,~> JcE(V"F2Nu%Jt_VJcC<$JcC<$JcG0 q>Z$:fCJ%I"AfR.(s@KSJ]r\hJ]r\hJ^!i3q>UJTs7Yj^YQ4WP~> q>Z$'fAG[G"*BisG(DH#1P%?51P%?51\ER"rrIcPp>uFD!<%E~> JcE(V""=UFb^oeFs+13$s+13$s6]geNW8_?!jD\'J,~> q>Z$:fCJ%I!sfB+^4FLZb^muhb^muhbk93UrrJ,Zp?i!d!<%E~> q>Z$'fAG[G".,$a2M!Z81P%?51P%?51\ER"rrIcPp>uFD!<%E~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>o5JXM(WJXM(WJXM(WXI8na!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!KI-QmK0TmrI=~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWIg q>Z$:fCFL:J]s%rJH4C(j+)^)ONdP#!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?JH4C(j+.-QJMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWIg q>Z$:fCFL:J]s%rJH4C(j+)^)ONdP#!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?JH4C(j+.-QJMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWIg q>Z$:fCFL:J]s%rJH4C(j+)^)ONdP#!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?JH4C(j+.-QJMWKGq>UJJs7YRVQiR)8~> JcE^hrW!$$#:b]3s8N'!8C%88!!#RVrsRrh'EA+/G96qp-s>7'rr<$iqu6cr!!$0us8N'0#k\/s !!#Ris8$p]":?P[MZ4.`Gn^N]p](9kGn^N]pWWZ5bl.S@bl.S8bl@_BbkqFmbi=6Qb`_u0hbP$g !:Tjc%K&3d!58F4JijVH)K5TGrrf,;#>+QbrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rW!$$#qV&7bl7YCRa0.W!!&JSbR9g=,L"BK9+h:7- q>Z$'fAH3I$9q[Jmm=gs-WjNq_J=>R@-,41]NjR Il&r;R@-5p1IQVSR#uu/MDGAe%06VQr\F[/%06VQb;5porVuisrVuQks8W&uqu>:Kj+.-QOu!8Q JsVmn2#K-<5aIh+2D[.0MO'Q];t;^H&cr1UXY]eQ!JCFGjoUnMrI=~> JcE^hrrLVMZ4-Q);k*n3rf5I);k*n3m@W#bl@_Cbl@\Ibl@^ebl@_Bbl@_Abl7YAbl@^m bi=6Qb`_u0_Z:eY!:Tjc!3#ks$,-B=#RXF!!!#UgrrN)Mqu6iT#fZRH25^BSNW8_?!jD\'J,~> q>Z$:fCJ[[rr q>Z$'fAHn"rK*F""?#^"rK*F""DGMV#^PqrrE*!"p"]'!!*'!rW)uur;cis rW)uue,\NZrlgN]"cAV1R@,o01B<=3R0bc-1RNu?NgZ;'r%e@,/,M++&I^?D"":<.q>UJJs7YRV QiR)8~> JcE^hrrs8U=Crs$^Is3/^es8L7Bs8L4Es31NC rlk-nc8Re#&-7#s69dcVuHdWs7Yj^ YQ4WP~> q>Z$:fCJ[[rrj,!"-on^An81rlbA=d*)U3!!'+sbl.SL&'N/s !1M-H!!&kpbQXieb[Z:FON\3S!k-=sV@(Pe!k-=sV@(PkV#^PqrrE*!"p"]'!!*'!rW)uurW!'# !<<)u!;ulK!98TjbQY/dV>pV q>Z$'fAH*LR:77M4r\FOFgbSpep+le9R@-,41]EdL Ho!RHR6EE%R@-2:1Bg<*1MflEO>@@u!&68c'FHWJ!&68c'FN&?V#^PqrrE*!"p"]'!!*'!rW)uu rW!'#!<<)u!;ulK!98V/b`Xac6o94XR5Fju%V1rWR@,rh1Jfk`1mFDCr%e?l!;ePU!\?,`'FCou q>UJJs7YRVQiR)8~> JcE^hrr>bas7lWpPQ1X_!(d.h!!#ano`+uUs7q!d"VY53s8J$,"p>c/s8N'!4]_q2WN79I6h^Q[ r.60t&Q.Barr<$is0)J-WrMmA,6\`enG<.lV#VG6s7ZKn'pm;Hs"iI2%KH;.!S%-l!'gMZHQr\- ?L\!poiDG:O=)Dts8N'!5$%q[rr<$is8V^l#oJ[&!*T0urrbl@_Bbl@_Cbl@^qbi=6Qb`Mi,l2UhQ rr33$64)NL!58:0!i5l,r;Qfg!;uj%rWe>\s7u`+VuHdWs7Yj^YQ4WP~> q>Z$:fCJ[[rr>c^beX8Z\'3%r!1M-R!!&n?\c;`>be['g!Z#1dbfX')!X0H*bfg%eKJY\q>UJTs7Yj^YQ4WP~> q>Z$'fAHR$NVM1GbGe=c&Gn3HC@I AH"A%5^8HYMIn\$1RXXp1OPUF3\s0MP*^u12#9!8OI9'(1JsR.G#CI%1GaKJDDOVHQo$U`R6i\t HBOVN>r4>n:5G3f8W&Bc1GbGe=GiJ01RXXp1G_d^Q@_euR6(1#s-X=RR6NKqR6EE(R@/4r4T.&= MOBQB8!5Y=,60JT1EQTP,60JT1EQTPbql-qrVu`ps8N'!qu?Wqs8W&us8W*!s8U^Oj+.-QO>?ub R@,o21Bot-Ht\q92Z#93OI9k]1BABor%eR4!&68c.0)-,1\q%OKE(Z-!giudJ,~> JcE^hrr<0@?UFf4rr;uu6V.7V!!#doo`+uUr_3A2=uQF)s5*eV/m_'bs8N'!!^\O?":%m-!)s8G^m)Ho'"+o;3?4TIG?rr?I*!&bIIs7ZKoj6H[F>Q"j.Wr>]m)Ho'" +ohR:!!Z@G!!$1%rr<$#,[>'`!!#Ris%ECu=XO1L=o/0u!!u(E$Msf'8H8]tr;Zj2MZ3V[g4CgT $"(<0rt##1OT5@H!0$gYOT5@H!0#2&V9Ju>s31NCrlkBAs31B?rlkEBqTT!>fZ`B+rlgK("6ojd n,E=kZN5aL!!'_1rr_a&!(Qnd!V-6grrW#s[Jp1,!/mcT!KI-QmK0TmrI=~> q>Z$:fCJ[[rr<0_9HaBnrlkBB6^l6@!!'"B\c;`>aqat+8f@[qb_uN%2bGk5bfg%e!^@(n"qEs# !/f"D+ohs?%KI]rbQ%X3?N:_JbfU\$.7tKY62Je,$ikDKbQ&[^!&bjVbe=&Ya//h:U;m<8]ZLui .7tKY6-RIb!"27&!!'+EbQ%VF0h7hZ!!&J3aq=[a8IPS!XSU0@!""ns'$C7TR`rtrr;Zj=N;h$* TNW$0&mM2tbR_\o[`lsm!4KlJ[`lsm!4L.rV#^PqrrE*!rW)rtrrDrrrW)uuq>gQqfDsr^NQ_L% !!(.?bQ^uHUTsk"^\l:XXTJQHr6,2K!;t%G_>q q>Z$'fAHP^,[QC1,s1Gk;J1%R>?*PR@-)l1RXYuH?_P.R@-5p2O0\cG*JD_3r1Z4R0c?LGVbbU4u5$ZrL"%F68LDS :iqqiLh&]71Cl#:0f(U"!&6#)0f(U"!&;_SV#^PqrrE*!rW)rtrrDrrrW)uuq>gQqfDsr^rlgH[ "+$B'2#]98LmU8;R@,u21BU[FR7-s/!?(t91C#?/0f(U?!&:Z5q>UJJs7YRVQiR)8~> JcE^hq>a)Xs8N'!8H8Yh!)W^g!!&5I!!->3>6"]PhZ*Y>eFrk@rr<$Gs475NQ2bLt+TLs3!1NrY !!%TM!!!i9%a4nPkl:`h?X!L2dej%G#QR?nrrW(M,lRch!k\Iu!,TRW/0sW`#QO#g!F/u9!!1O< !!&Mgli7#gs8N'!)u]g:!")9snGiQ[s6Tdd=o/0u!"2?F!+Q!/8H8_eK-^Er!bl@^qbi=6Qb`Mi6l2UhQs8VNj ,6.05!58@2#4!N7+8Z$;r q>Z$:fCJ[[q>a*%bfg%eR`rkR!348S!!'L&!!5hf6i[8*MZ[_')hkV!l)qg!3Ap%#tD#s$d>=F!_c9U !!1!C!!'CMVuQh!bfg%e2>tc!!",1=Z2am4bc1XCXSU0@!"565!1*ZcR`s!n!Og3)0tt1>!Og7sV#^PqrrE*!rrE*!qZ-ZrquHcsq>gQqfDsr^NQ_j/!!(-b bcLn5bd%3K^\u@\U'CZ[bKS3/!WW6"!XZTb_>q q>Z$'fAH]02R$g/;1BKmeQ2[0sPr:FaR6$4]QV;4`JhqM:Q?.,# R@#jGR@-#jAso&J1GbGe?Mu\[R0l,6BUP8J1M3&C3r1Z4R0u31R6I%,4u4u]GEr/q!L5SA1BfU7 G*eUdPqrmR(bmKB!&685(bmKB!&;_SV#^PqrrE*!rrE*!qZ-ZrquHcsq>gQqfDsr^rlgH[%=4G1 1c$poQrl.XR@,u31BUgJR:cFSrW3$!rW*<[1FW;Y1G^`c0suFD!<%E~> JcE^hrr_"mkPtVYs8)cr=o\L% !(?ecrr^bl@_@bl@_Bbl@_Cbl@^qbi=6Qb`Mi>l2UhQs8U[N3F>qi!(VS> s5=[m,4bX2!V-6grs/N.MuWhR!4f$-!KI-QmK0TmrI=~> q>Z$:fCJ[[rrHhm^b\B.PZ!!!3sbKKqdQ->Tq!R&\*!&Min !!(3db5_O:bl%MADZ7i[Hhm^B\GOJO"TXJXbRq!j!!&e<4TJY".Ol'8!'&2Lq>_#8T`>)9bf'P^ XN\lg!0I0'rraM!X!k9bRVQY$5@CZ _T]qc$5@CZ_Tg<$!<<*!!<<'#!<<)q!<<)s!<<)u!<<*!!<<)O!98ThbS?uT!6NI/H2pB-63%!U Oj)%6"9:X.qof)J!;t%Gao]#qbea@oYKZhB!KI-QmK0TmrI=~> q>Z$'fAH+(d\d R@,ie2OTsq1]<^A9`?gJK)1l83;YK5R$g5;1D2N7GaXs^1Q7_mPZX#jLRD$rK)1lF3.%']1G_Cd R6!,[R@-;<1]NjM4u7PRR56WdR@-,41]NmC4p76pR@-8;1BfU*GaXs^rA+U@@"ao36Bs>:.guIb +ojAS.guIb+ojCC1Sk*Os8N*!rrN3#s7u`qs82lss8E#us8N*!s4@>3JH!cS1DP5(R5?]UJsg_% L7+HO4u5!(R$hPCq_J6k!;nVX0`Wpa1FW;ZY;?"S!JCFGjoUnMrI=~> JcE^hrr8H7cO!WW1R!#tt. !!&Jfnc/Z?rr<$Q&cl>=s6'Fbf`(mNjneutAH4=^s8.ZFs8Vrr!+Z&l!"&log]:1N;uc%]"5*VQ &*q>^^Vs3h>U /bf,A!V-6frs!.$s8V?fr29PqNW8_?!jD\'J,~> q>Z$:fCJ[[rr4"3esh!1M-T!;8rlcsmbf7lN^Qnj"Z-31JR`q3#!mJk, !&Mj+!!'@LZiC*5bQ%WX"9E\ibb5"@`;[s\W;=^Y'ED@]bf5:Xbfn$+!3OJ:!"f6aL&hebR`qH* #/pMb&#d^X!!'IOVuQh!bfg%eRf1J1!#D$IZ2am5bcCdEXN\nLO1ri^!!&J3B)VcDR`rd(b08)K !!'.F`e?SY!ASo;ON[a!(&Q2UTbYeqU]CAnrrDrrq#LUJTs7Yj^YQ4WP~> q>Z$'fAH\OR@-#j>FCm=1RXYGR$^K%1N]%F2#]927f"n]PaP&u1I=hn1G_@cR6!-IR?nP'`0Ze'bnkJU]CAnrrDrrq#LqO%LV 1MW;F@JM\[)?BXj"Tg521DC.u1\q%OKE(Z-!giudJ,~> JcE^hrr>b4?Wn$A)ZTg;!(d.iA,lg9&HDfpr_3A!<*:s^s5a\X>tb4uMuNbW8H7cO!WW1R!#tt< @fQ^3/-$:Zrr<$iisYrrs8G^m#uk%_#l=QT`rH\Ns7lX"6g]"98Foo`+smcN!ls%<=t=ss@N=o\L%!(d.i!!#Rir#Gb;8H8Jc#=;]U!!_Na \H!Cbc&r#8m,7p!5C`_5m,7p!5C^oWJ]uilj+.-QP5bdG?WR4-=^T#Drs\Dt!58F4!rrF.?XI@A rrMZjqu6iS#fl^K1T(0QNW8_?!jD\'J,~> q>Z$:fCJ[[rr>bS9LAm^1 !"qjj*Y$?9'*&S6$31(-bfg%eRf1J1!%OG]aq=[c8dk\"XN\lg!1M-U!!&J3`WcDCR`rSJ%R!E( !"-cj1]SY5Z]WH@U:e^E&=q%hU:e^E&=q%hJH4C(j+*37#E2>?!!#Yc_#;I_Z2am>bfg(f"TD'p ;uFi?ZiL!I"bI5l^)gU`bk_8>NW8_?!jD\'J,~> q>Z$'fAHRR$j@%3L#qfFF'$t1OP()FGuWU3&?tj4u7SSQ8:=\ R8>[rP*q/MQC2bL1RXXpA=/`U1HC\fLids)IekiSLm_d01J4'oG]f7=L,:\SR$j@$=IGSE2)@7W R>>s2OFAuDPaR8NPaRq#1GbGe55d;;R4:BV2O0\bG*JD_3\rR[R6ED_R@-5p6("(.4u5g!N-KK0 R>*OSNgYK(30?!+-S[A$!\Q8b-S[A$!\V\QJH4C(j+.-QOu!>TF,lZVF)s8<1C.Z^R5QiWR$j*9 Er]bK1BABoq_JBe%59:7.'>B%rrIcPp>uFD!<%E~> JcE^hr;]Ik'N3ffrr<$is8VLN"]s+LFls8VtG ,6SNPg&M'P!(d.F#6A<6qL'Xn#V9rkrs\W)!nRDMM*VjY$Tkfrrs*0:"oSBO!"8f+(&E>)"UHYu s8Vam#8W0s!+>j,!!#Rgs8N'H8H8_^< q>Z$:fCJ[[r;]Il(/i/rbQ%X3bfm(1![`p-!4U1g;%s'=/8ED41(aQk,'D,R!!&J3RK*E5bSgI; bfn"''*8eD_p$=)!1M,h!WdSj_,1mJ$7orgbRD/c!lW=)?n)Qc%6^oobQeg^#L(Bu!##:T'u<`] !X^JnbfmOM"!!4!!3XPi!!&Jdbl7YjR`s!a0*<2N!!'+EaoDF9bfg%eR`ru^!!&J3a^?S,!=_2q bfkC-Nm%WC%g!r4rlbL^%g!r4bKPM;g&U/`O3@T9qZ$W,rQGGN!!'dXbkhA?$iJ3LZiKsH"CMWD :Wfiaq>UJTs7Yj^YQ4WP~> q>Z$'fAH[1C'/4MDI)UR1 R#uhu1G_d^R"S;(R6!,[R@-8;1]Njj4u4uiM3rrkR@-)l2OTsq1GbGe4u5!LR@-5p4)g"@R#l>J 1G`?&N\^eN!W`][r\FZi!W`][b;4\Lg&U/`rlgN]!/CB=!''p5"_a JcC<$mJd6]!'B0>!;$3i"5s4[U[%j]nc0 q>Z$:fCGQX!^-O(iQM;,rlbJ,!!'UqbQG3P,0PP]J]r\hJ]r\hrQP*;!KI-QmK0TmrI=~> q>Z$'fAE2V!fWO8iA1I!r\FXsR@-#!1BM*TDLjTp1P%?51P%@[1\q%OKE(Z-!giudJ,~> JcC<$mJd7`CN8>5#0@NY<=AjEl2Lh0"1<^[JcC<$JcC<$o`"rOs7Yj^YQ4WP~> q>Z$:fCGQX!l@uFiQML0*_8Eq!&3Z]!b;GFJ]r\hJ]r\hJ^"&9q>UJTs7Yj^YQ4WP~> q>Z$'fAE2V!_@36iA1[oKQMa3R:th@!eudpJMVj5JMVj5JM[3[q>UJJs7YRVQiR)8~> JcC<$b5V\&1^aC*A*JREJcC<$JcC<$g&D)4s7Yj^YQ4WP~> q>Z$:fCFL:r6,A"+U&#j@E=#DJ]r\hJ]r\hiQV,t!KI-QmK0TmrI=~> q>Z$'fAD-8r%eOlN0ooc?8R3hJMVj5JMVj5iA:<0!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rOT9sVJ]taMq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?OT;B)JMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rOT9sVJ]taMq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?OT;B)JMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rOT9sVJ]taMq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?OT;B)JMWKGq>UJJs7YRVQiR)8~> JcE^hrr<6os8S\k!f5t<"Jm4B!6+O/"Jm4B!6'NhQ2_!T;$mb6rr3+s*!](-bl=K_rVul@rVuW9 rVs(FP5c'`A/bX[3jeqec7ob/(0Knorrf,;#>+QYrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<7lbfj#d".&&m"CMfB!5\6M"CMfB!5X61Q-9B1/d2ksrlbLS%1,nSbflj_rVuis rVuZns31HAJ]tpR&$\>0!Y.ArbfjN="p,WEaRdUY@LWW@b,*>XrrJ,Zp?i!d!<%E~> q>Z$'fAH JcE^hrr<3ns/>u!Ic^S5nc/YF?eb2P"nDWn11/des-EZoq':jlnYlKfg^(mo?o?1.V9Ju>s31NC #0d,Ibfp+erlkEBrlkEBs31NCYfr:1%m0go;&''8p&D?B=%rYp.K'2HrR^rH"l'C&pg>tMrrJ,Z p?i!d!<%E~> q>Z$:fCJ[[rr<4kbZk,LO6+Rh[K$:k9ZH\J"h"C25"rtIba-H^_$Z+C[XlZHKFP<&*b!::V#^Pq rrE*!"p"]'!!*'!rW)uurr<8Is8UUJTs7Yj^YQ4WP~> q>Z$'fAHUJJs7YRVQiR)8~> JcE^hrr<0mZN(#KjSo>E!!)lcrr_B`!;_9HPlCcs0DkbRBg)Lrl37+1s.R[:s8:+@s8L7Bs8L7B s8U=Cs00_2rsJQ%!%e/o!!'V1p&=smN;sLerrMZjqu6k74obQI"oOtl!KI-QmK0TmrI=~> q>Z$:fCJ[[rr<1jA,l[ejNI^s!!(44bQFC9!6]r;Pfs/"@/J.O'nFNPV$YAiT`G,mquHcsrW)uu rr<8Is8UUJTs7Yj^YQ4WP~> q>Z$'fAH-jbR@3P#!dpE(nM:/%JMX)X!=(%M1Bdh21G]^ObVPpms8Vuss8W&u s8W*!#0d,Ibfp+eYfr:e$;?kU82H!gR5Qi]r\FV JcE^hrr<-B!!-j5ru(`d,R"cWh>dJ7-jBek63$oa!)\s7u`+c2XT`rVul@rVuoA qu6cBs8U=Bs00_1rs)-r/H\s7u`+T)ShNs7Yj^YQ4WP~> q>Z$:fCJ[[rr<-f!!.WKbSeE"'EStI`QZJ-(BOaX50V+K!2duO!!'K?r;[-.4TIOebdRQS`Vdp[ B)M]M#0^?o#6GN1`6?F*!/E3/REPX2KJ5ZSFZiL$J#Kd+Vbfmp(^8B-MrrJ,Zp?i!d !<%E~> q>Z$'fAHkE\fbER639-R@-$hrL*\E#FSRJ1L6E42#K-0 LAdM[N&,X:QC*VG1c$qUR95?64u8Up=c&Gn3HC@IA:ZPA1B@P3r%eR4!&68c.0)-J1Sb$Ls8E#s s8N)rrr^LFs31KBYfr:e#<%j882H!gI/>]$OdSf=1BABor%eR4!&68c.0)-#1\q%OKE(Z-!giud J,~> JcE^hr;Zgbr;S*U!!Z=P!##1d!!"WX8/M=*!!#doo`+uUiDfjX?XiU,!o3gr!#kb7,2lN%!+048 ]KKG&.KC@drr<$#,[>'`!!!'e0)u+[dr&rrE+Xc2XK]s8W#@s8N)C qu6Z?rr3&Ds8T=IP5ba^@09@A):8B_"mB;d!%@L;rrMZjr;Qip!4Dh+! q>Z$:fCJ[[r;Zh.@ebQXM10`XG\r6,2K!;t%G_>q q>Z$'fAH1RXYtGF"YYL4GYZ5_1_s1CaC#!s0&g1FW;Y1G^`c1!MMJ!<<)s !<<'!!;lcrbl7VDbl@^Ib`Xad7ZNXVQuY+a1Bh<2MOA'5r%e?l!;nVX.0)(Y1GJkaVDJ&J!JCFG joUnMrI=~> JcE^hr;Zj/g]%3nnGiQXs7--iJ_pG-P194(s8Duu;#g1g!0dHE!!*#u#'^,7s$?^,qYpWY!!*#u $i-B3?rR+.s8N'!)u]g:!!t"Pf)Pf9s(DBTJcE%U#mV3qr0mucq>dr&rrE+Xc2XK]s8W#@s8W)B s8W)Bs8W,Cs8T=IP5bN6qu?jMqu?]Lr;Zmms8W$"!!*!#"Le@,!4Dh+! q>Z$:fCJ[[r;Zj>`r=1&ZiC*4bd7?M[#4naMQY+DbfKhbWm&$S!4U1@!!*#B"s*bobRFQNqTK#0 !!*#B$c$g_9f;tTbfg%e2>tc!!!uEEH2mrObS1%@J]tFD%K[ug``qUJT s7Yj^YQ4WP~> q>Z$'fAHUJJ s7YRVQiR)8~> JcE^hrr=<"'`\m+s8V9_!;ZZp!!#[jJfk$n"%E"a!!#gpo`+uUs5a4\rr32b!"8>t#Q";s#3>gb s8VsMqZ-Zrrr<$erVult#tFsU!!2oqLB&9Es0DY72.cgfquE2b#E/W^q>e(Ns/!s>s8U=Crs$^I s3/^es8L7Bs8L7Bs8U=Cs00_2rs8,p!'U"f!!%*=rr__>!!W<#!V-6grs/N.MuWhR!4e^$!KI-Q mK0TmrI=~> q>Z$:fCJ[[rr=<]"99[dbfld]!6`U0!!&b8:_<[-##*4^!!'%C\c;`>baJM3rlbS8!"u[>$d8Cj #+>Mlbfn!5qZ-Z?rr<%\rQP9A$'i`%!!19e)?;REbd,G&$ED=o`W3Ql!k-=s_>qs8N*! rrrK'rr<'!s8E#us8N''bl@^ebl@]obehR0Z2alBa)D"YZ2MlK[lFEnr6,2K!;t%Gao]#qbea@o VTel9!KI-QmK0TmrI=~> q>Z$'fAH+(d<1OPUYr\F^uR<2i)K)%2, I$pBY1IRQ+RK#)CR/fJM1]NjL4u7SSQnpO^R8AGjZ82sk0/GC8!&62.0f(U7!&DeTV#^PqrrE*! "p"]'!!*'!rW)uurr<8Is8U JcE^hrr=<8jUM8*l2U8R!1NrY!!%QIrVuQ8!!%'>!rtXeh#IG=s5a4\rVm!b!)rqNq>V&g!!*'! kl:^krR(ZGs8N'!8H&Sg!!u3rjT#>]s+LFlJcE%U%\%&0s82kds(FXss69dcc2XT`rVul@rVuW9 rVs(FPQ)!X!!$[3li7#hs5O%X!mpuMr;Qfg!;ld#BKuOsl37*WrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr==5QNI4bflmibflj_rVuis rVuZns31HAJ]tsS$EX:.W6D1?!345[rlbFa!!W;E!OMk(bQS]4bflmiV9Jc8!KI-QmK0TmrI=~> q>Z$'fAHVVXR56XeR6LR*s-X0W1OPUV1Gb5_:k:F.1CXI?1G^Q^0f&k^1G]^ObVQ$prVuis rVuZns31HAYKW1d$?MW'3\t]BR6!5_r\FV/R?7>&!?(t81Bdh21G]^OV).rI!JCFGjoUnMrI=~> JcE^hrr=<8s5++_)=[Z9!!Z@Q!"o+i%7FJq!!%rWA,lg9&HDfps5a4\rVm#M!!!&+q>V&g!!*'! mf3>;=qL`7s8N'!8H&Sg!!u3rjT#>]s+LFlJcE%U%I"SYrLO>js4[h"pgGu&s+/D)b`i&>b_,,Q.QBnc8Re"ks='pgGtLrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr==5b`;f*1 !!(6eXoJG\64a+sbfg%eRf1J1!"#+4^)gV)b`MmVbe)(1 `WlJR8.GV(`Pr$;90*+S7/Y70ZiL!I"bI5l^)gUWbk_8>NW8_?!jD\'J,~> q>Z$'fAHH*QR;t*2MKj6%R@-#jPaR>RR$j@%1OPUYrA+S.R@0F#q(iV1 R@,ieCmg]9I[6Ci1GbGe55d;;R0c&5I$p9V1R"5'JMXSf%2]j80+&1F1Ct!L.g%3D1Q_[:b`ago 6("'rG*\PT1dI4OFFomJ JcE^hrr=<8s8U^T!$:e0Ij5(,:>,[:8fIm8+E[Y`mQLaqPlLfJs5a4\rVlus'`\g?rrV9^!<3!+ L]IJeY5eS&rr<$irVult#tY*X!!3-"K`E'Cs0;S,^*Nn5\,QC1TGe#)o$%,bbdkr\rt"O()$:4* XT/9&+9_ihBCPj!!V-6erreu5#"S6TrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr==5bfkeC!'89@;A0*E;8^V]1(aQk,'D,RWZ_EjNW9'gbaJM3rQGA_"99G:bQ=45 !<11M7f`T3NW9('bQ%X3rQP9A$(B),!!:Bg)?;REbd#@pEtSX3ZMr&N?jm<:b08(l!.iA*bR^^8% KR#"VTd.E'*8:[A]jqp!OMk'bQM;^#Z&U>bk_8>NW8_?!jD\'J,~> q>Z$'fAH02#K-1)?BUi!tkV;)l,:crrIcPp>uFD!<%E~> JcD/ q>Z$:fCI,/!Ytcsn]V'CX36( q>Z$'fAFb-!gK*;nM:245_1_B1P%?51P%?T1\q%OKE(Z-!giudJ,~> JcD5>"N"4?#4I-CJcC<$JcC<$LAq:6s7Yj^YQ4WP~> q>Z$:fCI21"CF=m$H[kCJ]r\hJ]r\hNm.>!!KI-QmK0TmrI=~> q>Z$'fAFh/"E&gZKJ\69JMVj5JMVj5N\gM2!JCFGjoUnMrI=~> JcD5>".fN.Q\#0fs+13$s+13(rrJ,Zp?i!d!<%E~> q>Z$:fCI21"!.I^U4LO>b^muhb^mutbk_8>NW8_?!jD\'J,~> q>Z$'fAFh/"-T%)4+T2=1P%?51P%?A1\q%OKE(Z-!giudJ,~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?J]t[KJMWKGq>UJJs7YRVQiR)8~> JcE^hrr*s;p!=oWgK(]F@8YQ,&^s+14:rrRlSUr<;/bl(H6bl(GuoD\rh*!](-Sc8_Ms7Yj^YQ4WP~> q>Z$:fCJ[[rr !6P5a#-gB'!Y.Aro?7>H%1,nSV9Jc8!KI-QmK0TmrI=~> q>Z$'fAHQ$>ZNL=m>1P%@K1BI^[0uPlDbl(H6bl(G JcE^hrr;ZFu@;Z=o?;Z=o?;ZFu@ ;Q7m'rrp:@*WQ3/rr33c!!?(5!!`,prrN)Mqu6iT#fZRH24aaJNW8_?!jD\'J,~> q>Z$:fCJ[[rr[$('(psbim:N;ZFu@;Z=o?;Z=o? ;ZFu@;M!''bRdJM)uou\bfn6=!!Gao!"-mIbQ5heqof4s%CEhj@AV3DrrJ,Zp?i!d!<%E~> q>Z$'fAHuFD!<%E~> JcE^hrr<3ns7cQo>5nO0iW&c^!)rptl2UjuJcC<$mf*Fh7YUo=`;c[Xs&/m@s&/j?s&/j?s&/m@ s&,i?P5c*`kir-Jn,NF`!!"SMbQ%XSrVloh!;ld#Bg)Lrl37*WrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<4kbeF,XV>e[HV9HjZ!0tdPV#UP2J]r\hm`YgV�-9J^!?%s&/m@s&/j?s&/j? s&/m@s&+El]$(_g_PR;5aiquE!!$3H@K6DCrQG;L!;jtD'nFNPV$X!Bq>UJTs7Yj^YQ4WP~> q>Z$'fAHUJJs7YRVQiR)8~> JcE^hrr<9ps7ZKn'pm;Grs+\e'`\34!"XY\JcG-;"Nqb^!2RR5V9Js;!6kF?!6k=<"3aY@bl1M> b`Mi,l2UhQrr33q!%e/o!"/GurrMZjr;R$$#E&Q]q>e'trrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<:mbe=&W.YP#(bQfHp-Hs[j!#gF4J^!N*"DTj7!4ma*kfj')!6kF?!6k=<"3aY@ bl1Lkbdbk,V>pVqNW8_?!jD\'J,~> q>Z$'fAH&!&;DJV9Js;!6kF?!6k=<"3aY@ bl1M>b`FUiHC:0X1G^qSR7K,gR=+og!?(t91C#W70f(U7!&CE-q>UJJs7YRVQiR)8~> JcE^hrr<-ls8QL*!"0Ess8V-[!o!Sk!(;D q>Z$:fCJ[[rr<.ibfh++!"0g+bfl@Q!l`7c!/,pIJ^!Q+"i1GX`W3T$bim:M;?P-@;U##9!6kF? !mFP?J]tXJ"/Z%uao9Kg^FfXY">.@cbQ5'Nr6,D_!5?\$aoJlIbk_8>NW8_?!jD\'J,~> q>Z$'fAH JcE^hrr<3ns8VtK,lRcN!k\L2(B@+k!!1Q"s+14 q>Z$:fCJ[[rr<4kbfmt*')hkUJTs7Yj^YQ4WP~> q>Z$'fAH@,fR@,lf1GjpcR0$tV1]@FT!<*!*0f(6Y0f(U?!&:?,q>UJJs7YRVQiR)8~> JcE^hrr<$ir;R2eRfEF`s8Sts&to:>JcC<$mf*L_#2]CX!2RR5V9Js;s31L@rlkC?rlkC?s31L@ WQ^J(%dF#on,NFX!!#1T]DqqQrVloh!;uj%rWeA]s7u`+T)ShNs7Yj^YQ4WP~> q>Z$:fCJ[[rr<%fr6,SPB)hq,bfhjC+YEa?J]r\hm`YmD#fb*.!4ma*kfj')s31L@rlkC?rlkC? s31L@J]tXJ%]04+aiqu7!!$oWDu]mCrQG;L!;t%Gao]#qbea@oVTel9!KI-QmK0TmrI=~> q>Z$'fAH7sLGi4>SdRR:;5F@"C+b1[[%'*!e;U/-%EC1Sr=q;ZFu@;Z=o?;Z=o? ;ZFu@;Q7m%1Ce`!R5?]UBUP8b2h7uFD!<%E~> JcE^hrr<[&s8.ZFs8Vrr!+Z'/l2Uht!*"OLJcG0 q>Z$:fCJ[[rr<\#bf5:Xbfn$+!3OJhV#UQ"!0r,ZJ^!Q+!3?&"!WW:+J^!?%rDNC6rDJ3j\',>Z !!(-bbcLjFW6D1?!36"A!OMk(bQS]4bflmiV9Jc8!KI-QmK0TmrI=~> q>Z$'fAH@Am R@,lf1NStP3\t]BR6(:&!?(t81Bdh21G]^OV).rI!JCFGjoUnMrI=~> JcE^hrr<[&s7lX"6gar[.[G"6G+6JcG$8!rN%o`;bD4\]g6:&E-tt!!$//_>GPY#?EDV "PE\Q!V-6frrq-_a7s(!Sc8_Ms7Yj^YQ4WP~> q>Z$:fCJ[[rr<\#beX8h4\?[o$HLB7ap7tI"NQ);J^!E'!lb5OJ]r\hNQ_rm9KiFV92*.@#656)% KH^PrQG;L!;jtDJe#3&*aY\eq>UJTs7Yj^YQ4WP~> q>Z$'fAHMMEJMZRI!\==+`%utg\]g3m&8$!DR@/,;2F3^u Lj#)PN&:Jh!?(t81Be=!0Im5RV).rI!JCFGjoUnMrI=~> JcE^hrr q>Z$:fCJ[[rr<@obfO6B$ipf#YPlZI6N@*AJ]r\hl-'4K!4ma*J]s+t!+u*.#eA0Z3t;9#3i;i! !OMk'bQM;^#Z&U>bk_8>NW8_?!jD\'J,~> q>Z$'fAH JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&I2Yr.(roJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rOT><0J]r\h^s)WS!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?OT><0Y0;GQP;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&I2Yr.(roJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rOT><0J]r\h^s)WS!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?OT><0Y0;GQP;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&I2Yr.(roJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rOT><0J]r\h^s)WS!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?OT><0Y0;GQP;E%7!JCFGjoUnMrI=~> JcE^hrr<$irr;uu!(c5Orr<$iqu6cr!!$0trsRrh'EA+/G96qp-s>g7#Q'N=$j@b[deNkB!!#Re rr`0!!*T!prr<6os8VQg!6'Nhl2Lk99GIR*rrf,;#>+Rerrf,;#>+R;s/!s:rrC:?s8't>JGoMO b`Vo.[PJ.(DY!f1U`9V2oT]@VNW8_?!jD\'J,~> q>Z$:fCJ[[rr<%frlkBB!1N#nrr<%fqof/^!!'+rbR9g=,L"BK9+h:7-<06R#K0pk"pZ;S_t_IU !!&JbbQGib!3Gk;rr<7lbfm q>Z$'fAHR@-,31CJ#eB/;>3I$9q[Jmmn"#=B!- R/fGJ1BTn1R6(!ss-X'T1G`j8R5TUPkq`DY$NU8*1BS6k"<@@r!tkY<*7H^?!;lcr!;lfm!<7TJ s0'Y/1B_NUQA/<.1BS6k"<UJJs7YRVQiR)8~> JcE^hrr<$irr;uu!(c5Os'Gbbqu6cr!!$0trsMF!EW?&P!!Z;'/dL\A#kp@["@QHM!,D^#fZRH2?3^3#fZRH2:VZ&bl@_@bl@_>bl@_C bQ`Uts+#Y"s00_1rs$mO"B-HD8,WAfrR^rH"l'C&pg>tDrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<%frlkBB!1N#ns%EEoqof/^!!'+sbRDZ*!2[o`*rlX;6Q-?tbQtlp!!YYV*WWD= bl:?:XS^3D`W-"?p!!F9#+Ec[YlFd?J^!B&"'B&[!<(+NKFP<&*b!::KFP<&*b!RBV#^PqquHcs q>gQqrr<7Rs8RV"s8RYo_9<++!!Ypu!,h_Y!QhG?bQWY/[([SiSBUg/!KI-QmK0TmrI=~> q>Z$'fAHR@-,41CQ1-R6*2\P*q2LHBNmF1C-[>R>uK9OI80) 1]MLr3r:]85ae$$oeZW9#!Oh!Cmg\LJMZOH!u)[e!<"\_&I^?D""5r]&I^?D"";YTV#^PqquHcs q>gQqrr<7Rs8RV"s8T=IOu!;gR>uKYR7I02!A>u#1Be@!0Im5RS2:!@!JCFGjoUnMrI=~> JcE^hrr<$irr;uu!(boF"8i-!=o/.(k5Y__s7cQo>5nO%iTgFFK)c;,rr3#HR.(%Wqu?_"p&G$l #"\don,NI-hZ!Z'Om7r+!V-6hrsia+s8V?fr;UIos8V?fr71hDbl%M@bl%M>bl@_Cbl!"ks00_2 rs8TO!*B3_!!M]frrMZjqu6k74obQI"oOYc!KI-QmK0TmrI=~> q>Z$:fCJ[[rr<%frlkBB!1M]e"3(<@XSU-HSH'#?beF,XV>e[=Vrnp!OMk*bRG;;bflmibfgfPbflmieBF`hr;Zcsr;Z]qs8W*!r.+hI J]u!T#g*DQPK]Kr#0Hhf!OMk(bQS`3bflmiSBUg/!KI-QmK0TmrI=~> q>Z$'fAH JcE^hrr<$irr;uu.7jL=bUa5*&4tIQs7KG"(m$*mFT;@@!'XHg8cJbj8H8_^Vr;Zcs!'k-,%:/o3rr<$^^MHrVloh !;uj%rWe>\s7u`+Q2^lEs7Yj^YQ4WP~> q>Z$:fCJ[[rr<%frlkBB.@SK)>oj4P&k^*dbd]A1*g%NdZHUMm!/E3/REPX2R`s!a0E`GW!!'+s bR,s&1!IkU!!"L%YPu`_L]A47`;p"XbSC21be['g!Z#1dbeaA\Sb^M0!"ju>!h%74!1M-U[P.h* NW9'\p!!F9%[tVcYlFd?bQ%X$3sQ=,rlkBB"H,>H&7b^`rr q>Z$'fAH JcE^hrr<$^Hp&HX4_C&\/58H8]`!!l^T!!$0p s8N'H8H8_Z!!(" q>Z$:fCJ[[rr<$[r_3=l.@SK)3B0W#%KJ3,aqFa_7L9%pXN\lg!!=rGT$.07R`rne!"MR/!!'+s bQ81QFT0Ja*W5sW*K84V!!:3q98j=&HaaXT$.07R`rne!"MR/ !!'+nbl7YjR`s!\!!'jZ!!!-`4TPP!bfg%e"?SaI!,Tm'!!!'b$igJA63.(DrlbS>=qgrL>G[M, !OMk+bR_Pj^UJTs7Yj^YQ4WP~> q>Z$'fAHWCn4u5*^R>5sMR@-,4 1Bs/56o-VUPPpmgJjM7kR?f[MR@-0"R$fimPaQuDPaP`3BpkAIq(r&=&X[lh4>WCn4u5*^R>5sM R@-,/1]Njt4u5!2R@,rhR@0FdJs_rq1GbGeR!4.LR78tgR@0CcQC3hhJ=)`i1G^jaFHi2LA3Q/4 !?(t;1Cko70f(U?!&5o&0f(U?!&<"[T`G,mquHcs!!)orr.+hIYfr:e#^2W(1c%%XR6:F(!?(t9 1C#?/0f(U?!&:$#q>UJJs7YRVQiR)8~> JcE^hq#D7&s8VndDI?ED"97lk!1X#T!!$1%rr<$[L\8!RgK;s6p!g`r?#=-3+"P!!rW)!!">Fs0Mb3s8N'!-NDZt!1!Rt!$M1="OVK q>Z$:fCJ[[q#D8#bfmkD<)#7N"jF7P!49tK!!'+EbQ%W#rQP9A$C]2E!!'FNWW3%#qTK!B!1!Q- !lJ%OrW!r?^W[,eXA0'.7]cXubb>(=9M@hS!Q22C!5Hb%%fQJ.bl7YC2>tc!!",1=Z2am4bc1XC XS'g;!%45Zbcq-J_TVu[9$GLP!"I/r!!#X8bY%pFbfg%e:<\"a!40l`!'^>)"j<<3$34n+bQ5'N rlbni!5?\$aoJle!5?\$aoJm#bb5%:s82lss8E#us8N)sJH,Y#behR1X8i7Abf]tdV9Jl>!!*!" $,4X#!5?\$aoJl@bk_8>NW8_?!jD\'J,~> q>Z$'fAHCU=R5d!7R@-)l1RXY;rA4JA$9g7ZR@-#jAso&JqD/2?R6LU+ !^_*rrg=dl2D^Ye3f8`[9Pg,K1N]%NF*!#&Qo/QFR5QiWQN!Zs;rrE$! #r+4b!&68c0`Wr!1\q%OKE(Z-!giudJ,~> JcE^hrr<$irr;uu"%`Ih0`(h[s6'F_q>^hs4I/J&"*1q!*]F&O&Z/[s8N'!7/d/c!")9skPtVYs8)cr=nVeD('$`% s6]jeh#@?S7Ke)*#E/W^q>e(Vs/!s>s8U=Crs$^Is3/^es8L7Bs8U:IJH,Y"JH,YRb`i&4o)Jd+s7u]qJc5TL nc8Uf#Q=sds8Voq\X!0qNW8_?!jD\'J,~> q>Z$:fCJ[[rr<%frlkBB".IHP$i9o6bb5":bKRp*!3FDg!!&,Zbl7YMR`qH*!6`U*!!'+sbQ7qJ Mu1^1Y%I_7UWbk$=qiG9&mG>qb^90d&%KIW!1M-U<]U3\bfg%eOT!E'!",1=T`>)9bf'P^XS'dd "TXV-bcUpG`lnD_PK_77!!:Bg!!&5,b``#.bfg%eQ->Tq!R&\*!&OPs"i>aM!X!k7bQ5'Nrlbnq !k-=s_>qq=#bbY=>s8N*!rrrK'rr<'!s8E#us8N''JH,Y"JH,Y#behR0[f?EDbejD\ [/J2LZiL$J#Kd+Vbfmp(^7ELDrrJ,Zp?i!d!<%E~> q>Z$'fAHUJJs7YRVQiR)8~> JcE^hrr<$irr;uu(eF\k!!'G*dJs:InGiQ^s6Tdd=o\L%!(d(grrPNrVloh !;ld#BKuOsl37*NrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr<%frlkBB(n/[D!!'+EErZ3aZ2am5bbtLAXN\lg!1Nl1rrAKXbfn(Zb08)K!!'.FScB?'K8'C;!1M-*!!^C@bRg_sbU``,]ZeTg!!(6e!!&Jdbl7YRR`r&; !4L+Q!!'+Eb`@h!qTL`3!("iQAH3+^bQ%W8bfic]%F!#r!(tJZ9`PXHbQ%X3baJM5bfgt*1X+(_ Kg#S>0m^^"bQ5'NrQG]bK$;H8$-^U-K$;H8$.R1p!<)rs!<)rn!<7TJs+/D1bQu>r!0k]s!!^RD bQ5'Nqof3XK$;H8$(T68rrJ,Zp?i!d!<%E~> q>Z$'fAH*5R6(1# *L)s_1G_?m1c$pSR@-)lG+!N@6@bGhR6EEKR>s-'1D!#31Q\#P2D[.:R@,ieR@-8;1]NjR4u6o@ R5d!5R@-)l1K%+/qD0plR8bsuL7*WL1RXY/1GaoVIkrmKR8PgsMOArM1RXXp1OPUV1Gb5_:bsmi ?@\E1GuQYa1BABorA+la/2K'r#r=@=/2K'r$.Lc,!<)rs!<)rn!<7TJs0'Y11C,t,R6EEIR>j'% 1BABoq_JBW/2K'r$(NgIrrIcPp>uFD!<%E~> JcE^hrr<$irr;uu(eF\q!!"KP&HDh2s%NJ!=X*nH=o\L%!(d(grrQ<$D<1r;Qfg!;ld"gBbjp@5F/J!KI-Q mK0TmrI=~> q>Z$:fCJ[[rr<%frlkBB(n/[O!!"rE&-)^SaqFad7g]4rXN\lg!1Nl1rrobfmm'%R!E(!"-cj_uTi<]".kA!Q3.((B>(>6QQ]\beOto"[5R.!!(6e!!&Jdbl7YRR`rne !"_a2!!'+EbQ%X3qTLXT!!,/J!W[2`bQ%VJ4?`cGCWt!&!!bVM!<0J]tmQ#''\J8-]-1r6,2K!;jtDJe#3&*aYA\ q>UJTs7Yj^YQ4WP~> q>Z$'fAH*OS7$sC12cuK9Qo-Z[PaR>LHB,mLR@-)l1RXXpqD0gDR@&2IR$gE"1RXYtG(Q*L7PcigR?r)KR$gE"1RXXp1OPUV1Gb5_:bsnf R=\['O#$eT!<"\_&.L<0Y0<%b#(2huG*n[gr%e?l!;ePU&.LUJJs7YRVQiR)8~> JcE^hrr<$irr;uu(eF],L]IJeY5eS&s7KCt(5`(l@/p6,!(d(grr.g#A4#?r;S;J$i^/1qL'Xn#V9rors\gg2[]^'7#qW"i6k'5@GQ.XB!!#;u%LZP=s8N'!6"g`9>l4R$!!#RijT#>]s+LFls8Uf_NrK:5 !s8N*"9/<'TGe#)o)AXlTGe#)o$m]%bl!!ob`Vo/ZS;Y!C]=83!V-6erreu5#"S6KrrJ,Zp?i!d !<%E~> q>Z$:fCJ[[rr<%frlkBB(n/[m7f`T3NW9('bdT8.*/adsY0>)i!1Nl1rr2.LZ=e4g4k/#8@.Cbfg@n')p)Z_,1mJ$7orkbRDL#+pJ/e6@mA)!!&Jdbl7YRR`s!a0 *<2N!!'+EaoDF9q90"q.L-/&FoKVb!$R@b"qP1dbfg%eN][LV@a!!>!!&J3RK*E5bSgI;bfkC-N m%ZK!Wi?'!rgCH?jm<:b5TTf?jm<:b1+Xt!;q@ubeD:(EZ+usDYqWYZiKsH"CMWD:Wf3Oq>UJTs 7Yj^YQ4WP~> q>Z$'fAH9I$p9V1R"5'1G`?& N\^hH!<<*#!WFkW&ci+SrA+Ng! JcE:\!qFb:r;Qcgrr3)Z!!&eSrrSko42Lq!nc0 q>Z$:fCJ7O!k,/Qr6,/GrlbJ,!!'UjbQ9p-El#s%ZiD;nnBCn4!1Nc.rr<%fJ]r\hJ]r\hJ^",; q>UJTs7Yj^YQ4WP~> q>Z$'fAGmM!CB'K1B9]>1BVZcR5a.^!fWO8_(u.'R;VILs-WjNqD8/>!'YriJMVj5JMVj5r\OBM !JCFGjoUnMrI=~> JcE"T#0@NY<=AjEir9)UCN72j!mLhTn,NCf!(ctdrr<$iJcC<$JcC<$JcGHD!KI-QmK0TmrI=~> q>Z$:fCItG#$N'=4TYU;ilhJ@UJTs7Yj^ YQ4WP~> q>Z$'fAGUE#)IqSJ=)aUJJs7YRV QiR)8~> JcE"T#2V0E!uth8MZ<\V!(ctdrr<$iJcC<$JcC<$JcGHD!KI-QmK0TmrI=~> q>Z$:fCItG#)49)"Wh*nMTl)#!1Nc.rr<%fJ]r\hJ]r\hJ^",;q>UJTs7Yj^YQ4WP~> q>Z$'fAGUE#&9*aQA/^&MDP:#!'^68s-WjNJMVj5JMVj5JM[9]q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UJJs7YRVQiR)8~> p&G$l"U5G1rsB21!rDp$ol;KG3%A>"rr^b#!!\D^rr<$irr;uu"\A[n!!#RQrsRrh'EA+/G96qp -s>7'rr<$iqu6cr!!$0ps8N'68H8_Z!!(":+jquZs#h9Gtqbl.SAbkqG8bl.RFb`Vo7pN.AW'ik;6r.,pm,a@p# "i;_p#Wp(trrJ,Zp?i!d!<%E~> q>^Ea#64l,!<<'!!;QZlncmfL.m,I>C$>*iL'[hgQLadorr<%frlkBB"e*ZZ!!&JNbR9g=,L"BK 9+h:7-NW8_?!jD\'J,~> q>^EN#P[Zdrr<,sr;$BhhZhE/VlHPm^$+>UZ^R;[QJ_Ems-WjNr\OSB"[4^uR@-8%1CJ#eB/;>3 I$9q[Jmm=gs-WjNq_J=>R@-,/1]NjX4u5!2R@,rhR@/O]1GbGe4u5!_R6LU+#"*KnR#lSWr\FpL FH;fNGs4#?P*nF`1]B05/I_^a*W@kn!Rs8N7i);k*n3rApXWts31NCr653@rlkEBrlkEBs31NCYfr:1&,S9c'3IR4 s8REG#ZVB9Oo54[rR^rH"l.T)pP0 q>^Ea#6YY>!;uTr$i'f"nd"4`3q2_2D\_I+!Z1ndQLadorr<%frlkBB"e*ZZ9MDPObRDZ*!2[o` *rlX;6Q-?cbl:?:XS^3D`W-"?p!!F9#F`l\YlFd?bl.SfMTj9E!1M-U!!&J3be4Sg$:@)g1X+(V &HE/*5n,WobbY:ObCRn;bQU!]_7C\"qof(#*6cX'!<<*!!<<)s!<<)u!<<)u!<<*!!<<)'!0YP: `!ubk8LYV&bUif*6j!Ljr6,2`XS^3FM6b@>6QW)Jq>UJTs7Yj^YQ4WP~> q>^EN#O_3Zrs/W)qt^3fhZD,m^&HmiV6]:A!h>[rQJ_Ems-WjNr\OSB"[4^uF)sD+1CQ1-R6*2\ P*q2LHBNm51]MLr3r:]85ae$$oeZW9#uFD!<%E~> p&>1"!!3Z.s7ZNjrrTk64T>?]p0[%`"9&]/1A(SJrn6D's8N'!8H/Yh!!#RMrs7cf#5\Ap!!$4% rrD$)rr`0!!*T!prr<9ps8VQg!6,!;!$2IArr<$is8N'!8H8^B!"7EYs8KD*s+::ZfDkmM[/U(, 0E>a:rs8Z&#*AlblN[=drrW-:9?dF4bl@_Cbl@_Abl@_Abl@_Bbl@_Cbl@^Ib`_u:\c<]Fs8V3\ o`+u\s4./`r;Qfg!;HKon,f0\!KI-QmK0TmrI=~> q>^Earr<3(!<<'!"Si5uncDekQi?OVhJMKI"7He[=V9mEg`W-"?p!!F9#F`l\YlFd?bl.Sf&'N/s!1M-U!!&J3bUNW8_?!jD\'J,~> q>^EN#QOVnr;[-"o_JOahZBO?ec+G,`mEr,"5B94de)DugXG#VhtJr,R/fGM1]NjC53"F)Eg_Y< 1JX@+4T7,:8DH!$2"i^-5ae$$oeZW9#bg61\q%OKE(Z-!giudJ,~> p&>7+#7_C1mfisk!;ld"C&e?BY3Q#d/A;)a)oq^a-NCde8,S/l3#IJOs7gFF2c]nYAcM[a.6&0# s7n_V!'<.?"/)4brr<$irr;uu(J+T+!!#Ri[K%9Hs7H?mbQ%Bb,6\`enG<.lV#VG6s7ZKn'pm;H s"iI2%KH;.!S%-l!'gMZHQr\-?L\!poiDG:O=)Dts8N'!5$%q[rr<$is8V^l#oJ[&!*T!prrjrs8Z!!71]Fo`2W&rrV6_i6;4t bl@_Cbl@_Abl@_CbkqDBbl@^err94HP5bSA!/^XR#j_Nkl2U/O"8_ur!V-6crrW"Z':o.(NW8_? !jD\'J,~> q>^EarW!''r;Qm&q#L<_"W7:FCU*.'ngn,J!&Wj!"C(G(##+;q*\J\:o((a7%7+b0!6XltBHAcN WUf1.!!%9h!!_)Ro(UB.!!&Jebl7YZR`rtU!1M,#!&`!E\c;fKbe['g!Z#1dqTK:!!&;^A^&S-_ KWkC!1Pc#Hbf'S``68tsK$;&,'*8qWb08)>0a&P[+!7f4bQ%Wu0*7Qc!!&J3bdK2.*f^4#XS'g; !#hsY-q9/mo!&/uJ#gC!__p$?9!5JKV!ga&0 bflm`s8W*!s8W#ts8W*!qu6`us8N)us0)KdbQ8+O[/A,RWrN.@bcUpKbPfWcZiKmF!l7JRV9Jc8 !KI-QmK0TmrI=~> q>^ENs8N9$p'h$!p%eR`hZ]Or4>n:5G3f8W&Bc1GbGe=GiJ01RXXp1G_d^Q@_euR6(!s s-Xch1G`j8R5QjhR>RCs1RXXp1GbGe4u5`sR6:@&"%\fI4S^c7NgWq!1C,c]!&?>d*rn(p1BJ-k 1<_PN!<<*!!<<)t!<<*!!;lcu!<<'!rr92&Ou!0*R5k+##BuT(1c'0?Oo.!9)?BOg!\O]pV).rI !JCFGjoUnMrI=~> p&>9knbhVNs7-*[rrA;^!&+I@jT#6/!)5tT&!6kC@!-e8>"69F> !!$@)!<>'Ls8N'!)ua4E!#J3+rr<$is763mjT!-u)#sS0!#f$"!$V4=!^-NBrr2t+r;\_gMZ q>^Ea#QO]$r;ZWnpA+acnc1?A!&+OWm.0]R!57qt!%@EWAF1Q@^?>P$m-GMgV"-JF!9`_n!5@Xs #41o\!!&b^!pUj`rZ7Raqat+8f@[qbfUS!$UtF&!3FDg!!!*U8"Rp)!1M-S&c`D5$ig:/p!!F9 )OemoYlFd?bQ%X.#nkD]!1M-U!!&J3Z2am>qof/J!!'e0bQ;hc%"ZV.bf0[lbflpa[f+DN,r*Te U]C>mrW)uurW)iq!!*#u!W`9#YQ0m2&]aqP7LBAXXj"*O!4L*t!!(":bQ5'NqTK)?!WX7XV9Jc8 !KI-QmK0TmrI=~> q>^EN#64u/%0ceD%J^#$hZ0;IR4t2DhV[4ZRFpDkRE"-sbhAVUg!c@^hUe9ce_d$fRGQYgRG$&W T\eS,R@2U[R@2O%htJr,R/hI1F8qXE4u5!_R6EE3R?06]Lm_L(3L#q\G*JD!qD/>AR7&he1m@m+ 2M+7O;ONh-Eg`=X4IDNp3L#q\G*JD!1H(JcLj5/PR6!,[R@0FgGW[dMR6EDbQ'mDNPaRq#oeZW9 )Eor5Cmg\L1RXY#QZtmrW)uurW)iq!!*#u!W`9#YQ0kC&NcDKI[61@3AY98R5d!SR@,o11BABoqD/6c!< o`#*gs6p!fr:9jhq/dJP!%of%s(hZmoFCp0s)6?6!!W>r!!%r*!!N&r[/^F2dJsILp](;Ps1JC9 qtU3l7%OAR!#S9,rr<$is8Q[2;#`ERFT:S*!F/u9!!1OFrrNH+7fNDhqh$0n!$hWXs$6X$`!%\; mJmLlkl:`h?X!L2dd[;;S,_gT!*T@%!!!u:s8N'+8H82[!1j/W!!$0ps8N';8H8_Z!!(%=!!#R; !+Q!/8H8\i!(d.[!!'Y.rr_ck!5&(,!oa1\JcGcM#)a>So3MN[rr3&r$#IfbU!3Q:rlkEBr653@ rlkEBs31NCYfr=2')V_0"Aq2["lB8T!!lU9!!)*[r q>^Ea#QOT!s8)![oD/=]ncIlR$2jiVBCbU2!/&uG!#P2Rk_&pCo&B]Mf7O&/nFAU?%.]&O$M*3W !8$d7!"&2X!!''to(UB(!#V0KbQ%X3bfgh&ONRt2Vp(k8!_c9U!!1"7bQ7hGQ2\u/_c@EL!$hW\ bRFQR:'h4rXT/aQU&Y6g9LJj]_m07B[*5HK!3FDg!!"nTbl7YMR`r&;!4C%N!!'+nbl7Y]R`s!\ !!'m[!!&I*!1*ZcR`rtU!1M-;!!'e2bQG-N!5J?R!gN`eJ^"/<"thXE\K1d[rlbG]!iF/bT`G,m rW)uuquHcsrW)uurrE*!YQ0m2'#jnO#"BL2$-(+&!"VL#!!('`r;ls!rW3)6r6,5Q8N*Ehq>UJT s7Yj^YQ4WP~> q>^EN#6Fl2!!!B5!;QirhZD3,Rf/X,d,3`NRFB3HRC(kIhPlp>hoqLVgo-X7hqt)pW8FSBV;KLb RG?\oRAA`eR@2[)htJr&R2A+D1RXXp1Gb8`5;ngq3\tlGQ?.,#R@#l/1BNr355m>>6?e^oR3\%U 1R=FiMMRTmCmfl2FIAG9F+fsK2//JH3&>07R6!,[R@.C[1]NjM4u6l?R5d!7R@-,/1]Nj]4u5!2 R@,rhR@-6jR6I%,4u5!_R6EE@R@,u11BV?ZR5Xjs!e-Q'JM[<^"pGhu.K]Z*r\FU*!&)MOT`G,m rW)uuquHcsrW)uurrE*!YQ0kC&jD_ONcpYTLbq#SR>-$TR@,lfrW3$!rW*!Rr%eC)#T9Hpq>UJJ s7YRVQiR)8~> p&>7(#64qtr"';4!;ZXNrloTd!#Yb9WW4-%U]:P]1B2Is"[>-`';BUL'*%uF!#5HU!!PSM',.,? C]G1Lm/R-LScA]i!(d+hrr^M_qu6^5!(-S_&`oJ^!)ER'!%_[t U^G6E*WOdg!"PC[!!)ipqZ$V!s8N'!7/d/c!")9skPtVYs8)cr=nVe7('$`%s6]jeh#@?S8Gj_A !!#Rirr<$is7lZq?Mja)q#LJ%q>UNQ!!@fPs8N<#E"`gt"4$oG!nmhObQ"E_s8W,Cs8W,Cs8Vu? s8W)Bs8W,Cs8T=IP5c%0!(d.c!!$4&p1+^=63%5frrMZjp\t q>^Ea#64r."onT&!;Q]lnh]dB<<*"So("@47leVne_?Vnf.W:4?*rd h=;E`.e:^^!84:@pWWX;!1No2rr^N*qof*F!/p`u&[#aH!2Ib$ !*U'd.M>qc36ZaG!"QN4!!(3d`;fn>bfg%eOT!E'!",1=T`>)9bf'P^XS'dW"TXV-bcUpG`lnD_ R`5RI!!&J3bQ%X3beaA\T)6_6_>sY.q9/nu!!Rqts3(\c6OFNG!Q+i[!e1O!bKQd_s8W*!s8W*! s8Vrrs8W&us8W*!s8T;'P0=F?!0YRB!!'%C\i^3)7KUJTs7Yj^YQ4WP~> q>^EN#Q"Jsq[a)-s7uQfh_X'0VjWsqhqt#nbbDJ4Tt&J,S=-.PV4XC8S=.7Ohjg+Qhjg+0Whl>[ gu"Wi`8@qiRG=^tpG;i;!'^B p&>4)!!!3%rs\Z&r;QfE;#^JLqu?^]s8U(=#:&sC!))5L4TI#4s8CgS0*!I$r!*3Ws#g?4s8W&S s8EK.1B5Z#!qDi]rr<$irr;uu'1i0'!!#Ris83]7E<%lrs6'Fbf`(mNjneutAH4=^s8.ZFs8Vrr !+Z&l!"&log]:1N;uc%]"5*VQ&*d@`rrJ,Zp?i!d!<%E~> q>^Ea#65/8"SVBd#l+Q"nc=->rphf1!!&5Rnm_Y/<8[`V*:*/*!,1roma^k9!+YTc!W[T<%KL25 o'Y'!n,r`:np19AKXbfn(Z b08)K!!'.FScB?'K8'C;!1M-*!!^C@bR^YrZ2am5bbtLAXN\lg!1Nl1rr q>^EN#Q4JkoaLp$lhUSYhZ9b/rnfE]R@2R^hkZ[=aiTs=V;C+!RF'jKg=tMRREsdBR@2L\S!hX\ hqHiBgmXYZhkum4VVh,(s-WjNr\OSB'0\3.R@-5p1Hq1nOI8Qo1N]%F2#]927f"n]PaP&u1I=hn 1G_@cR6!-IR p&>!nrW)uupAk-k2450Is8U+>%H[Wig].DorW<-_s8S2],6.\/=T;h1.0%Bh!+u7n!$_ICQ<=1Z !!$O/ScB1hs8N'!8H/Yh!!Ppnrr<$irr3J5!!!&Cs8W'm!!uV-1'maV0ZO/)s8Vlp#=;]U!!_Na qZHm!TCi0a!RC`E9`PK!=Y^9_s%NJ!=X*nH=o\L%!(d(grr'JcGcM"mk1Igcp;f rrVopQ-0,Xbdkr\rt"N'"B%8\$Le"g5$^_[#L*,G!V-6frs!r-s6tULqk!fgNW8_?!jD\'J,~> q>^Ea#6=f.!<;ru!Vl`nnhhdHmdfq0!$(@rnt,mbjmE-LKC\Rf!)`=W<0d"j!+>AP!!(450`Y)A nPkeEg&M,pngXVVVXjK*rr<%frlkBB"e*ZZ!!&JebRQl!"qjj*Y$?9'*&S6$31(-bfg%eRf1J1!"YOBaq=[c8dk\"XN\lg !1Nc./!'`34$iuKE6QN+!1M-O"onXlbfg%eR`s!f%fcr*64Pfqbe"Ac$:R8k1]GT")?lj U:e^E&=rgE!keTCb05D:\H%f:&#o[87iD@?ail(m9/$>S_YhUYZiL!I#'RT%[mV%UVTel9!KI-Q mK0TmrI=~> q>^EN#64Z%r;['!q#:3K!M?q%h_;7%XkqsmWgTF7g6nAWhqt&ob2;'Ne_cmbcJPXiRG-PjREFFD UXe8>R@2acSsd!`htJr,R/fGM1]NjH4u5!_R6LU+%ZHgDQ8LHS3L#qfFF'$tqD0g]R:J*08stW_ Fd/;K1c%OeR@-!9R@0F"1HC\fLids)IPWmHR>,sNR@-)l1RXXprA4JA%mDd-Q'mAMPaRq#1GbGe 55I&cDjcu:I[HNm1GbGe4u5KlR@-5p1RXXp1G_dlR>c68Q;B@n:6q<,FF9BNr\FV>R7Mlbs"ag+ 0essT0)dX.,60I@1P#P:!0T,K@$lstPaQqV1PgUJJs7YRV QiR)8~> p&>!nrW)uupAk-k#I[GT5W0Zlh>[F)mJn^9s"XfCs8Vk&&MQk)s8V0t!]a0Z!&+!>@1b1dHiN=l !!"UN(]X_GScA]i!(d+hrr<3ns8N'!8H/Vknc/Y,rVm)uI3f%&/9(Ic%/0l+f)P]*5nsJ041>.g #A4#?r;S;J$i^/@qL'Xn#V9rps7KCt(5`(l@/p6,!(d(grrSb mMSmJ]t[KOoGmH6ja8daoDCR+Tr6C`V]Z9nc8Re"_/VW$Ur:1rrJ,Zp?i!d!<%E~> q>^Ea#6=f.!<;ru!Vl`nnct";-pB4/Ds@8l/'S')o(!.rmIKi,6jYnEP4J1K#6Zt`!!#7QiC!u5 8!UJTs7Yj^YQ4WP~> q>^EN#64Z%r;['!q#:3K#J6q4WhZK-hYuC_[@,7rhjUJ"hqueYS#`[9hqu,9SZ8EPRB>AnVjj`h c/6%&R@1LdR[L#$Vr.5)s-WjNr\OSB"[4^uR@-8<1BV!PR9]\H#"3a"R#uhuqD/OZR$9E`4)g"@ R#l>Jr\FeDR>NdWQ^Mpo1DN<'P*hA\<\lO,LmWilR@-)l1RXXprA4JA%mDd*:5P?k:77M21H(Yh 4S^c:@u?S;Jl)G&s-X6Y1GacRR6ED_R@-8<1Bp6iOI2/V5Q3GI7!4TYOa95J1I[[s2M![a1B\4ONbgWN1BABoq_JBb!s&TB18Qf&rrIcPp>uFD!<%E~> _Z']8f'%\bhu!;$3i"5s4[U[%j]nc0 q>\V.!p[kkOn-iB!^-O(iQM;,rlbJ,!!'UqbQG3P,0S3S!cA!)J]r\hJ]r\hL!9Am!KI-QmK0Tm rI=~> q>\Up!nu,[Ol+J@!fWO8iA1I!r\FXsR@-#!1BM*TDTag;JsfYj1P%?51P%?91\q%OKE(Z-!giud J,~> JcD;@!r6VOiVs,('3/$@!#Xu#!mLhTbPqX3Cs@P2JcC<$JcC<$rVlnXs7Yj^YQ4WP~> q>Z$:fCI83!l@uFiQML0*_8Eq!&3Z]!b;GFbKL#oUJTs7Yj^YQ4WP~> q>Z$'fAFn1!_@36iA1[oKQMa3R:th@!eudpb;039DDcu$JMVj5JMW!9q>UJJs7YRVQiR)8~> JcC<$qYpcV1^aC*A*JREJcC<$JcC<$WW*!Ys7Yj^YQ4WP~> q>Z$:fCH#e#)49)"Wh*nJ]r\hJ]r\hJ]tCCq>UJTs7Yj^YQ4WP~> q>Z$'fAEYc#&9*aQA/^&JMVj5JMVj5JMXPeq>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&IYfmXVLbJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rScJ2/J]r\h_9D`T!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?ScJ2/YKVPRP;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&IYfmXVLbJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rScJ2/J]r\h_9D`T!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?ScJ2/YKVPRP;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&IYfmXVLbJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rScJ2/J]r\h_9D`T!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?ScJ2/YKVPRP;E%7!JCFGjoUnMrI=~> JcE^hrr<$ijo>>\!(d"e"8i-!=o&(*jo?(ps8$p]":?P[l2M"cN\q4K+C+Rfs4'dX!7Ln@bl@\Db^fZlp432C!.b'mrVs=MOoGQm1C"\5oD\pC9GIR+rsb/O #n0Mfs8S9B#n0MfV#LITs7Yj^YQ4WP~> q>Z$:fCJ[[rr<%fjim`)!1Nf/"3(<@XSL'JR/eJUbed!c!XpDTl-'CN?6BFW+^)_Xbl7YCRet;2 `W-"?qTSs>!1No2rr<+hbfp"c!s9T[bPo]q_HIo_$8[^dbZZA#!Zl:Zbl7YN%Eco=!!&J3bT[%W Mp)9D1C4'ZbR.eg#uSjhb]5KG!7K)b!<<'"!.b%Jp432C!.b'mrVqGm`lnR.*!7+"o?7;W1C4'[ bRIu)"V+ALbfjK>"V+ALXN^M?!KI-QmK0TmrI=~> q>Z$'fAHCmeol1IQVSR#uu/kq`Q2EfQKNKOct81]NjC55R,< 5ae$$qD8/>!'^B JcE^hrr<$ijo>?f!0$gT"8i-!=o&(*8cWl2s(DB:;->LVlMh.a3WK:N>;H7oq#CA$!0$gT"8i-! =o/0u!!#Rhs8N'@8H8\i!#o9F!rt7Zs7\GP"\_r?)uopD$;j:n!(m4jrW!=(s8N'!8H8_U!"/R] rr^D`S,iNf$eu$,pg>uZs2o>O!7LnAbl7VHbl@]nJH,ZKJH,ZJJH#QSJBZ7;s3/^es0p48rs$mO "B-HD8,WAfrR^rH"3PVR!<)p,<4)AkC`WQU<4)AkC`T>O!KI-QmK0TmrI=~> q>Z$:fCJ[[rr<%fjim`u!3H(A"3(<@XSU-Lb7=TLbfh./$:[B$$gPqA]b1;L5=HUnYP??A9E;0k bQGib!3H%@rr<%frlkBB+.CEt!!#&R3ro=fbfma4!")(Z%5Z5P!Ye*R!!%2dbl.SMMTj9E!1M-U V#V+NN6DB+@s\4SbR9(5[([Sibfj1!HN;LNW8_?!jD\'J,~> q>Z$'fAHc99Q;B@nR##jER@-H!1]EdL5Vk3aR6ED_ CmfU-1BS=1&chkd$PUJJs7YRVQiR)8~> JcE^hrr<$ih#@KS!!$0urs7cf#5\Ap!!$4%rrD$Crr[lR$dntR!R[;'rr`0!!*T0urr<$irr;uu +%ZG3!!#Ris1/17s8R]O$ePFYrj;_*JG0$CC&ebDs8E!%$2FN#!(d+h!\aUeMZ3_J!<)p%Bg)Lr l37+brrMZjdf6)drVm)Gs8RV"s8W(Ks8W(K%0(kXs+&>;s8UPOrVloh !;ZWqnc8Lc!Ug*errMQiV#LITs7Yj^YQ4WP~> q>Z$:fCJ[[rr<%fgrol?!!'+sbQsa>$HpZ.!!&kpbQ+L)bQB6n'YjXk!Kt"^bQGib!3H%@rr<%f rlkBB+.CEt!!&J3bZ"QLbfhI8'Z/)s!0bWr!!^RD bQ5'Nq9/lH!;Xh>Xp"XG!NlR,bk_8>NW8_?!jD\'J,~> q>Z$'fAHj'%1BABoq(i$i!;SDO('OLj!>Yg>1\q%OKE(Z-!giudJ,~> JcE^hrr=K=s8N'!5%4p3H2mp;\s7u`+ rr3#i!7LnCbl@\Mbl@^es8RV"s8RWHs8IQKrrmqsbl@^err9IOPQ(p[!!'n9q>^MHrVloh!;ZWq nc8Lc!T+(XrrM!\V#LITs7Yj^YQ4WP~> q>Z$:fCJ[[rr=L:bfg%eLc>SRKZqZM0a&P[+!7f4bQ%Wu0*7Qc!!&J3bdK2.*f^4#XSU-J/c[WM be=&W.YP#)bSZ-9(ZiKpG!K@E_bQ3\0XN^M?!KI-QmK0TmrI=~> q>Z$'fAHOI9'( 1JsR.G#CI%1DkS/DDOVHQo$U`R6i\tHBOVN>r4?.R$g)41]NjT=GiJ01RXXp1G_d^Q@_euR6(1# s-WjNr\OSB%mDd*R@-5p1ObaX1J!n$4SCQ?OI9i>1RXYgR6NKqR6LU+!fi[LMDG8O!<+bZ0`Wpa 1FW;Zr\FQn!7E[!!<<'+!<<'!s8RV"s8RWHs8IQKrrmqsbl@^err9IOP;B\P!JCFGjoUnMrI=~> JcE^hrr=K=s8N'!!Bi^K"5s2R!!Z@G!!$1%rr<$#,[>'`!!#Ris%ECu=XO1L=o/."4TIG?rr?I* !#lQ.s7ZKoj6H[F>Q"j.Wr>]m)Ho'"+oh'4!5&(,rr'`!!#Ris%ECu=XO1L=o/0u!!!u; ?iL*:8H8\i!(d._CB+eCnGiR$p\t`m&HG<#rr<$f.gl.R!(d+h!n72TMZ3_J!<3!"q>dr&rrE+X rr3#i!7LnDbl@_Cbl@\Db^fWk!.atHrdb%K!eAM=rr3&Ds8TRPPQ(pU!!)9`rr<$nrVloh!;ZWq nc8Od!rG)9r;Qiq4>Wf5!KI-QmK0TmrI=~> q>Z$:fCJ[[rr=L:bfg%e!^@_+"NJRt!"27&!!'+EbQ%VF0h7hZ!!&J3aq=[a8IPS!XSU-B$ikDK bQ&[^!#lr;be=&Ya//h:U;m<8]ZLui.7tKY6-QV7!5J?RrrpWO,L!s!MgbQ%X.#nkD]!1No2!cn>MMTc+.!<11I_>qZiKsH!lYRSr6,5]$sp$Zq>UJTs7Yj^YQ4WP~> q>Z$'fAH?*PR@-)l1RXYuH?_P.R@-5p2O0\cG*JD_3r1W:QC1,s 1Gk;Ku]R5Xjss-XIdH?_P.R@-5p2O0\cG*JD_3r1Z4 R/hI1F8qX=4u5!_R6EDnP*p8FBpkAIpG3:[R$g>u1RXY#QZtUJJs7YRVQiR)8~> JcE^hrr[L\8!RgKdr&rrE+Xrr3#i !7LnDbkqD?bl*(ls8IQKs87EIrs4/!bl@^ebl@^Pb`i&5m/R.Ns8N'!:&k.o!!*!#!4Mk+!V-6f rr`44'_2/%"8ujHnYH0cNW8_?!jD\'J,~> q>Z$:fCJ[[rr(=9M@hS!Q22C!5Hb%%fQJ.bl7YC2>tc!!",1=Z2am4bc1XC XSU0:!!8V5bkhAE"JEuE!!'e/bR^EQ!'ABJbQ%X3D?-"'!1No2!gN`eMTc+.!<11I_>q!!*!"!5AEU !OMk(bQGp7-Hc;2"3;l;b,ih_rrJ,Zp?i!d!<%E~> q>Z$'fAH=5R@,u.1BUgJR:cFSs-X'TJsefjR6LU+!e-Q'MDG8O!<+bZ.0)(Y1GJka r\FQn!7E["!;lcr!<%HJs8IQKs87EIrs4/!bl@^ebl@^Pb`aghG+"aT1H(Yh4>Zs;rrE$!!&=F. !?(t81BK34'`9`g0*Dui1\q%OKE(Z-!giudJ,~> JcE^hrr^:o)A[h!!Z!l,RaYQ8H/Vjh>dY8rrMZjrr36&#E/W^q>e)*r rMZjdf6#bs8N;Is8RV"s8W(Ks8W"Is8N@Tbfp+ebfp+e\'1'9#kJ#r_#O62!.k+K!V-6drrMZjr ;QluFq*.'rr`7D%G@NV!KI-QmK0TmrI=~> q>Z$:fCJ[[rrqTK!E!/p`u &[#aH!2Ib$!*U'd.M>qc36ZaG!"ZTV!q=LbQ5'Nd`eBbs8N9's8RV"s8W(Ks8W"Is8N@Tbfp+ebfp+eJ]u6[#e'd6^s'[r!4;^K!OMk& bQ5'Nr6,8c1`=:2bQH!E)9&Z#q>UJTs7Yj^YQ4WP~> q>Z$'fAH JcE^hrr@;!"-pLs5a4\s8N'!8H&Sg!#/!(nGiQ^s6]je=o\N. ZcW7I!!#Rhs8N'&8H8\i!(ctd%Y4TggAh3P[K$9U$NMdQrVult!_E@8rVuphrr3&A!"=bb!V-6h rs!.$s8V?fr;Q]snc7,UKd!<)p" rdY q>Z$:fCJ[[rrFrVuqerlbFH!#1=7 !OMk*bQS]4bflmirQG;L!7K)b!<<'"!.b%Jpji8As31HAJ]u3Z#g*APPg#Ts#0Hhf!OMk&bQ5'N rQGAd4;#@,bQH!M&\k?iq>UJTs7Yj^YQ4WP~> q>Z$'fAHuFD!<%E~> JcE^hrrrVfgjT#)[!!&Ya!!!&Fs8G^m#uk%_#ljr"56(dO?:=hos8N'!8H&Sg!#/!(s%<=t=ss@N=o\L% !(d.i!!#Rhs8N'&8H8\i!(ctd)tl)g##88G)uop?!!?J5?Y'3:!!#Rir#Gb;8H/VjJH.9ZrrMZj rVm&U#fl^K1]@=Snc7,Q<$D<1r;Qfg!;ZWqnc8Xg!f@5pr;QhU#J6]0!KI-Q mK0TmrI=~> q>Z$:fCJ[[rrZiL'K!^mF,r6,41$b<7\ q>UJTs7Yj^YQ4WP~> q>Z$'fAH,sNR@-)l1RXXprA4JA$9g7(Q'mAMPaRq#qD0j^R:J*0 8stW_Fd/;K1c%OeR@-!9R@0F"1HC\fLids)IPWcPPaRVXFHMuZ1GbGe55d;;R1qh@2O0\bG*JD_ 3\rR[R6ED_R@-8<1]NjH4u5!_R6LI'$r3+VN-'H5:bsnpR?@Ji$Y2%LR@-5p6("(.55m>>PF4t! 1BABorA+Tg%59:7./bq&)?A2AScJ2/YKW.c#(2huG*n[gr%e?l!;SDO)?B^l!XK,fr%eB[$8JM9 q>UJJs7YRVQiR)8~> JcE^hrr q>Z$:fCJ[[rr q>Z$'fAHJr\FeDR>NdWQ^Mpo1Bp6mP*hA\uFD!<%E~> JcE4Z!;$3i"5s4[UZ;@UT`@0jrr_fl')BcO!n%&lJcC<$JcC<$MZ3^:s7Yj^YQ4WP~> q>Z$:fCJ1M!3uOI"-EQ`]&V!94TKN=bQG3P,0S3S!cA!)J]r\hJ]r\hP0Eb%!KI-QmK0TmrI=~> q>Z$'fAGgK!'pN>"*0ft2rc[qN1!)M1BM*TDTag;JsfYj1P%?51P%?F1\q%OKE(Z-!giudJ,~> JcE4Z#0@NY<=AjEir9)UCN72j!mLhTbPqX3Cs@P2JcC<$JcCW-!KI-QmK0TmrI=~> q>Z$:fCJ1M#$N'=4TYU;ilhJ@UJTs7Yj^YQ4WP~> q>Z$'fAGgK#)IqSJ=)aUJJs7YRVQiR)8~> JcE4Z#2V0E!uth8JcC<$JcC<$JcC<$m/I*Gs7Yj^YQ4WP~> q>Z$:fCJ1M#)49)"Wh*nJ]r\hJ]r\hJ]r\hoZ[.2!KI-QmK0TmrI=~> q>Z$'fAGgK#&9*aQA/^&JMVj5JMVj5JMVj5oJ?=C!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HVRb^f-*JcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rJUkspJ]r\h!6k9=!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?JUkspm`^5 JcC<$JcC<$g&HVRb^f-*JcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rJUkspJ]r\h!6k9=!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?JUkspm`^5 JcC<$JcC<$g&HVRb^f-*JcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rJUkspJ]r\h!6k9=!KI-QmK0TmrI=~> q>Z$'fAD-8JMW3?JUkspm`^5 JcE^hrVuqHrr3'k!!#RNs8N'+8H8\i!(d.ihr!Yss8N'!8G2uujo?(prr<$)o`+pk!(d.iqKF"a $7K'VrsS[\0FA+AOoPH/!-j(p`W$Ca.L6;Aa8c2;Gn^N]p\t0qmSO<#=4I8GJGoNBJGoNJJG]?H JG]AhJF:XDrrfbd#8V4Jrs\ q>Z$:fCJ[[rVur"rlbHS!!&JKbl7YMR`rtU!1M-UZEhLLbl7YCRe=l?R/eJUbQ%VPb08'0!1M-U _FkLC$mnsQbR;9k*!H[*Nm,]k!1\Va`QScl)?^C3^!+^?8.#c-b5TTfW@e>e@arVtJGoNBJGoNJ JG]?HJG]AhJ:YrDbQN&.!uc4NbRCI'"VP:gbZ5Vb$9u5"bk_8>NW8_?!jD\'J,~> q>Z$'fAHUJJs7YRVQiR)8~> JcE^hrW!$>s8VKc!!#RNs8N'+8H8]s?]>$b!!#Rhs8N'!8G2uc8cWl2s8E!>;ZHas!(d.iBE/66 =Y9sZs7\GP"\_r?)uos(!"/RRs2P'Rgsc2qLCjLcQl4fS?98,dq':jlnYjt;V1AUGs+(.Lrdb%K rdb%Ks+(.L!eC=Nr.+hI`dmL$P5ba7!!H4D!(Zte!WCXIrsecLMYHY>s8Um'r:bsXSGrVLs7Yj^ YQ4WP~> q>Z$:fCJ[[rW!$Wbfm*d!!&JKbl7YMR`ruL9WZI^!!&Jebl7YCReFr/b7=TLbfp%d*fA1c!!&J3 bT?fl7RJ(%bfma4!")(Z%5Z5PV#V+NJ]u-X'oB6?^-`scbW.Do\fPJ-beXXEb-llNbb]jis8RWL s8IQKs8IQKs8RWLrrR`Ns87EIs2KS?bl>lkFT;V9#68Z>bQ5heqofMc$B*'8J]u>pZHU$M*i.$U rrJ,Zp?i!d!<%E~> q>Z$'fAHc99Q;B@nCmfU#1W;-b,;1i)#8]0P"rK*F""?#^-NkhR.P0(*V1AUGs+(.L rdb%Krdb%Ks+(.L!eC=Nr.+hI`dmL$Ou!;gR>uKYR7I02!A>u#1CY]7-o3>(1G^7/1G&hJUbhiH !JCFGjoUnMrI=~> JcE^hrr<<-!nI=B!WW3kjT#5[!(ctdrr<$irr;uu!(ch`"m5jiqZ$Tp!"'&-rr<$is7cQo>5nO/ iW&q1!"7EYs8KD)rrOkSB7^*"rseH!s83(_s8VBhrVsM`d/Tqms8W+Ls8W(Ks8VqGs8N(Lr;ZeI r;Xlhm`^mp#lZ1O=9%C_"RZ0f!V-6frrKbcp\t9`!hB8kNW8_?!jD\'J,~> q>Z$:fCJ[[rr<<1"2rD;!WW4hjNRW(!1Nc.rr<%frlkBB!1NW*"e>W#bKS30!"'7[bQ%X3beF,X V>e[MV9I.3!#3;obfP^cbf^=nTRk>(bRLiZbf0^mbflpkbfiXdd*/>:s8W+Ls8W(Ks8VqGs8N(L r;ZeIr;XlhJ]nGEap8!2baSS:ao0EaZiL!I!D-\nbQ5!NUs/Z7!KI-QmK0TmrI=~> q>Z$'fAH6h(!'^68s-WjNr\OSB!'^*4!cj]`r\OPA$@FWcR@-5p:77M4 r\G*V1Gb,\H8RK73^5DV23sXmJMY/!%2T(%/H@L]1DC0P1C#>T1SoX%s8RWLs8IQKs8%9Grr@TI s8RWIs2ffZb`agg31$$s1NJnC2#T32)?BXj!=(%I1BA9nUbhiH!JCFGjoUnMrI=~> JcE^hrr=Z*!'U/e(B=G+s8W"K,R"cWh>dKT!'Xj#&:+LQrr<$is7ZKn'pm;Hrr`)u!+#F#!j2M@JcEXf%f)8$s7ZN>s8V`l ]DkHed/Tqms8N(Lrr2tKqu?\HrVunJs8W+Ls8N:Rs8RV"s8U5lm`^mp#kJ#r_Z0H4!.k+K!V-6f rrG]Uq#:EkOqXAc!KI-QmK0TmrI=~> q>Z$:fCJ[[rr=Zg!-uH`.f]R:s8N(Lrr2tKqu?\HrVunJs8W+Ls8N:Rs8RV"s8U5lJ]nGE[f?EEbejD\[/J2L ZiL!I!=lX7bQ>UQ,G`QZrrJ,Zp?i!d!<%E~> q>Z$'fAHa_!D1G_:@P*_&<1c$qUR9#$/LdNsS5^8HYMIn\$1RXXp1GbGe5#2$D #[TpQ<1RXXp1JsR.G#CI%1BU18R6::$!fi[LJMY2"%P@u'1EulT 1G^*Q1,AtdcnhMKs8N(Lrr2tKqu?\HrVunJs8W+Ls8N:Rs8RV"s8U5lm`^kN#[a!f2D[diR5k.$ !?(t81B@P3pbMt(#8j6mq>UJJs7YRVQiR)8~> JcE^hrr>2O0+-/.B`J-(s8Q[2##ZuP')V\/!!,5K!!D0ZAcN$5/-$=[rr<$is8N'!8Gc`o!#o9[ rr<$$4[B&Mi;UNG!!e)T`W$Y q>Z$:fCJ[[rr>3K$4q1WU&Y1^bf_11$:bR+,0S11!!5A+!!Lq9/n]!"=G&`QT$o!WX7X bf0[lbflpa[`een'*^4teBFb>rr3(Ns8RWHs87EIs87EIs87EIs2okCbR)Lp!!(*ab5_O=rQG;L !;jtD!ceqY1:$o'"K);$*Q"Vrq>UJTs7Yj^YQ4WP~> q>Z$'fAHW2#B'1QC1/?1]NjL7[J?UR@-5p1m@m+#(f/tBpkAIq(i))R=KiE`A82>!< JcE^hrr=fF_uL_\p&G(`s7$'hRfDpY!.k.M!$hO9!!%iF!!&Jfnc/Z@rr<$is8N'!8H8\i!(d+h rr<3Is7?9kM#72R#QR?ns8N',8C7EI!!#Ris8.EorW!*']C>k$]D;I.iW'"1s24jMnVA4cs,.`M o3MN[rs':hr0mucec2Irs8W+Ls8W(Ks8VqGs8W"Is8W"Is8U5lm`^mp$1.]ml2Ub`!) q>Z$:fCJ[[rr=gC;ud+0aoDF1bd7?MZcocV!49rM!(G,A!!'I7!!'@LZiC*5bQ%X3bfg%eR`rtU !1No2rr<3kbd[WQ[en8M!W\Mbbl7YNRVi+l!!&J3bemHorW!*'^Tmh>^\Q(TPlLl:beqX<\Oe^' bUtWa\K1d[bQ9-&`` !!*!"$,4X-![bLu=H2PeRmrrJ,Zp?i!d!<%E~> q>Z$'fAHFCm=1RXXp1GbGe4u5!_ R6LU+s-X$h1L?K;3;YK5R$g/;1]NjN5(]1dR@-5p1I?;NrgZs; rrE$!#Ve+k!#74A$4Znh!\4NoUbhiH!JCFGjoUnMrI=~> JcE^hrr=fFp&G(Crr<$is6'F_q>^Hp!)*=l!(Hq_!!%B0!!)iprr<$lrr<$is8N'!8H8\i!(d+h rr<3ks7cQoHi*gE('$]#s8N''8Gj_A!!#Rfrs7_U!!#di!2/Y5eB<'+np\ cMob5s8VusRaqG7JH,ZLJH,ZKJH,ZKJH,ZLJH,WYJH,Y"JH,Y"s8RV"s8U5lm`^mp#kJ#r_#O62 !.k+K!V-6frrt>ls8VusRf*0eqZ*dirrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr=gC])Vh5bQ%X3bb>(;bKS-0!2@[;!0tdC!!'=!!!(3db5_O:bQ%X3bfg%eR`rtU !1No2rr<4fbeF,XZMViI"TXJ[bl7YIR`5RI!!&JcbQt@a!!&e2!UJTs7Yj^YQ4WP~> q>Z$'fAH20/GC8!&<"[V1AUGs+(.Lrdb%Krdb%Ks+(.L%=nKYJ:R\"JH,Y"JH,YlJF:XF1C.BV R5QijR@-&51BABoq_JEW0/GC8!&=C-!\+1)V).rI!JCFGjoUnMrI=~> JcE^hrr=fFs)8">rr<$is7$'hRfDpY!.b(L!(d.b!!%B9!!&Jfnc/Z?rr<$is8N'!8H8\l!(Qtf rr<3ns7cQoHi*gEAH4=]s8N'#8H6p5!#%p'qhatFs8)crA,h)[%,1a]rjDb*!m(ENJcEUe!r;nn r;R,g%0-?sAcMf.!1VO=Uk&FDpON5BrdatIrdatIaaig'PQ(pf-3.0Jjo>PNrVloh!;ld#Rq;X" quE5arrW#sV4IVeNW8_?!jD\'J,~> q>Z$:fCJ[[rr=gCbSUAnbQ%X3bd7?MZcocV!49rM!1M-H!!'=3!!'@LZiC*5bQ%X3bfg%eR`rtV !1*W.rr<4kbeF,XZMViI'EDA:bl7YER`oCC!#(gF`e2FXbf'P^Xir*l(;nA?b)62B!a,L;J]u!T !l=rLr6,MA(!OlLWm&],!4gY(Uk&FDpON5BrdatIrdatIaaerd$-^Ns!0k]s!!^RDbQ5'Nqof6l Wm&],!4i$O!l=rLV9Jc8!KI-QmK0TmrI=~> q>Z$'fAHFCm=1RXXp1GbGe4u5!^ R6LU+s-X$S1JX@+3;YK5PaP)A1]NjE4u7lkR1hb?6;B?n1I@Lt3\undGVh343C!L!!f37`JMY/! !\"+(r%eZp'JhNJ0/GC8!&<"[Uk&FDpON5BrdatIrdatIaaig'P;;Pe/-%F&1BK!*0r6]%rrIcPp>uFD!<%E~> JcE^hrr>2Qs820_rr<$is8QR/##d&Q&c;S.!(d.b!!%BG@fQ^3/-$:Zrr<$is8N'!8H8]Q!"N@a rr<$is7cQoHi*gE`rH\Ms8N':8H8T.!!#Riq#CXd>rVfgjT"p1!!Z2#,THa_!eC>'JcEai(4P'= n:D,Hs6S\Dgcp;gs616LrLO>jec12Nb^f-*P5ba5!!H7F!(?bb!V-6frsn9-fDV9Iq#>fus6tUL qjm`fNW8_?!jD\'J,~> q>Z$:fCJ[[rr>3Nbeh';bQ%X3bf_.0$:kX,+Nqt/!1M-H!!'=J+TMj?%KIWpbQ%X3bfg%eR`rta !$"[hbQ%X3beF,XZMViIbb?Mu``Whqe]`Spb^b8gs3([f!!Yt!!,MMV!OMk(bRU?q]Z+(bbKP.@ bdTtVbGEGYrrJ,Zp?i!d!<%E~> q>Z$'fAH2QE\fM>R6EE%R@-#kP*q/MQC2bL1RXXp1GbGe4u5!\ R=B9C1RXXp1JX@+3;YK5Lm_fQ1]Nj\4u5KlR@-5p8stW_Fd/;K1c%mmR>c68Q;IQ:!gB$CJMY;% 'd>=f.L-PA1FFn4,6BJR1Dgl^0+&3=1P()#JF:XE1Br5pNHU\W8Gk7E)?BXj%2]j80+&1F1EnM/ .L-Q]1\q%OKE(Z-!giudJ,~> JcE^hrr<$ir;Zcs2+[cIqgTgn%o1gXrr<$is7cQoHiNtm,6SNPg&M'P!(d.i!!#Ris4f(*!&+?P !(d.b!!%BCrtkD4!nRDO!!#Ris2G$=8H8XF5nsJ041>.g%/GZ2#RE/Fs8Vp%!ORFX`r?HW*s;s? bl@^k* q>Z$:fCJ[[rr<%fr650@24Db5`)76M&lHQjbQ%X3beF,XZHU6b'*8eD_p$=)!1M-U!!&J3b_?l6 !+="N!1M-H!!'>%bSRqn!lW=,!!&J3b[(8LR`rl].LZ=e4g4k/%)H$a":?oCbfms+!ks60`lniV &HWG3^ q>Z$'fAHLm=?hE]F%S$q,6"R#u\Z1G_IeQ8X:M`\S#4 !s&TB1,C^!!W`][rA+Ql!s0&he2)Z+b^f-*OY[,VOI(]$q_J6k!;\J[('=UM0f(Tp!s&TB18H`% rrIcPp>uFD!<%E~> JcC<$rr3%n!'B0>!n%&lJcC<$JcC<$JcE[g!KI-QmK0TmrI=~> q>Z$:fCH/i!^-O(iQM@@!()7\J]r\hJ]r\hbfon_!KI-QmK0TmrI=~> q>Z$'fAEeg!fWO8iA1OeR9"kpJMVj5JMVj5bVT(p!JCFGjoUnMrI=~> JcC<$rr3&qCN8>5!h!lLJcC<$JcC<$JcE[g!KI-QmK0TmrI=~> q>Z$:fCH/i!l@uFiQM@0 q>Z$'fAEeg!_@36iA1OODDcu$JMVj5JMVj5bVT(p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH3IcJ]s(sq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH3IcqTOLHP;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH3IcJ]s(sq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH3IcqTOLHP;E%7!JCFGjoUnMrI=~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH3IcJ]s(sq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH3IcqTOLHP;E%7!JCFGjoUnMrI=~> JcE^hrW!$$#:b\\rsRrh'EA+/G96qp-s>g7#Q'N=$j@b[deNkB!!#Rerr`0!!*T0ur;[9.)f,s8N''8H8^^!!7ZG!!"[3rrr=G'F7S1rr3,h;$mb6bl=K_rVul@ rVuW9rVs(FP5ba30b".!=R5td%ek&b!u4i9s70\>":R>uo`#$D9GIQ'rrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rW!$$#qV%`bR9g=,L"BK9+h:7-<06R#K0pk"pZ;S_t_IU!!&JbbQGib!3H%@r;[6. *c&sCbQ%VD"VNV@r6,A^=r[\Q1QM=Urr<7lbfj#d",?UO!+:f1"ia(?$s:[ObQOmt"VP:gbbP7; s8E#ss7ZNls0_ocbQ_N!"p,WEaSsBn]LWS8(0\r+Ys/a#%R$uebQDlA#lq'Nq>UJTs7Yj^YQ4WP~> q>Z$'fAH3I$9q[Jmmn"#=B!-R/fGJ1BTn1R6(1#rL!_Q KNA(.s-X"WQAp2er%eOEFH;fNGs;'\s-X'T1GjcQP[=0R!(`)*">(&`"WdOt"%S1u3Q\nTq1JiUdR#Z2HoJ6Rd$NU7/1\q%OKE(Z-!giud J,~> JcE^hrr<3A?U4Ym]$pZe8cWl2s(DB:;->LVlMh.a3WK:N>;H7oq#CA$!0$gT"8i-!=o/0u!#ce` <s8U=Crs$^Is3/^es8L7Bs8L7Bs8U=Cs00_1ru&-e=%rYp.KBGF2ZOLn64j1s49,I\ '`\I2rVlosfDGRMb&NpOV#LITs7Yj^YQ4WP~> q>Z$:fCJ[[rr<3`9HO69^XUI9b7=TLbfh./$:[B$$gPqA]b1;L5=HUnYP??A9E;0kbQGib!3H%@ rr q>Z$'fAHc99Q;IE6s-X'T1OtmZ5Y1lqs-Wt5F)sU+1CXO*1+EAT 1G^B]-o3>(bVQ'qs8W*!s8N9's8N'!s8W&us8W&us8W*!s8TP.qTP*Y)3BAjM4'c*1G_IcR=KI> ?o'^,R?Df^R=mEq1BB-Zq_J JcE^hrr<3ns7lWp;q1gQk5Y__s7cQo>5nO%iTgFFK)c;,rr3#HR.(%Wqu?_"qZ$Qq)G'o.\c;s7 rr<$is8Ug\!(HqfK)c;2s8W)*qZ$Qq"A#j!!Hn>?rr<$irVlrFOm8,0$N(*is8VBhrVsM`aT&*\ s8W,Cs8N;Is8U q>Z$:fCJ[[rr<4kbeO2YWmo5uSH'#?beF,XV>e[=V)Oemo ;ud9LbQ%X3bfl4O!-cZ2-iasubfn1cqTSs>"I`j$!f6curr<%frQG=QK>s(u$H<.UbflpkbfiXd aNUI\s8W*!s8N9's8N'!s8W&us8W&us8W*!s8TP.Mp)1.rlc*&!#j)*9)plnbfm!/^]4@NW8_?!jD\'J,~> q>Z$'fAH )Eor5Lm`uR1RXXp1G`L-R7&heOI:DP1G_'VqD8/>"?q7%Q9tL*s-WjNrA+Lk:c+=k$7u641G]^P 1G]7aa>9Xms8W*!s8N9's8N'!s8W&us8W&us8W*!s8TP.qTP*Y!'1$7#EbEb1GaoVAH"@l4u5m# R7K,gR@,u31BABoq(i$i!3A!PrrIcPp>uFD!<%E~> JcE^hrr=Q?s7lWpPQ1[YHQr\-?L\!p!!#8r%h2hBs8N'!5\:N9?2Xa&q0O=i'412)rsGS&)ZTj3 !!!b#d/O%^h#IoaqZHrLs)e<+s7q!d"VY53s7ucs?2=O#!"hCr#"egp!(d.ioMu88NW9&^qZ$Qq $:t3shZ*]Wrr<$irr35)!"Ao(! q>Z$:fCJ[[rr;]bR,s& 1!IkU!!"L%YPu`_L]A47`;p"XbSC21be['g!Z#1dbeaA\Sb^M0!"ju>!h%74!1M-U[P.h*NW9'\ qTSs>$C]2_NW9.)bQ%X3rlbU.!#3Yo! q>Z$'fAHr4>nR@.$-Q],&G1]NjG<.pTs=T1)\7!b#_Lg;k61CB53 <&6=-R@/4r4T7,RI[P(06C=,s1R+:o1IQPPQ\\p(1J!n$4S^f5R1WPYQp*$9g7%I[QKX1RXXpr\Fe=R;arQR$g)01]NjFJshuoq_S8?!'^?;"H&V/Ce'^G$6oO+1G^*Q 1,Atda>9Xms8W*!s8Vuss8N'!qu6`us8N)us0i")b`4IaOdScs1R=Fgr%eR9Q'k0!L7*Ge1BABo q(i$i!3A!PrrIcPp>uFD!<%E~> JcE^hrr=Pg?UFf4s8W'm!#f$"!$VCB!!!'[^Hp&HX4_C&\/58H8]`!!l^T!!$0us8N'+ 8H8?u!"Ao-!!#Rhrs.B\"97lk!5%q(r;ZgbqZ$Qq!(d%f#24YZ!"!#EQi@Qn"H`Z`lMunD$`PQZ 0"9()Us/c:rlkBAs31B?!6kHB!mL]EYfr70([,4!!%@L>r;Zh/(BlP!s8Vn'"&TdNd/ q>Z$:fCJ[[rr=Q19HaBnbfn3F!%CMY!("iQ!!!-`4TPP!bfg%e"?SaI!,Tm%('#dU)?<)"bQ81Q FT0Ja*W5sW*K84V!!:3q98j=&HaaXT$.07R`rne!"MR/!!'+s bl7YMR`rDh!#<`%!!&JebQj"*"O+.O!5J3Nr;Zh!1Ni0#,#-6!"rM4QcorZ!Og4rV?"'K !ceqY1:#-JU]C>mrW)rtrrDrr!!*#u!W`9#[fD<0(S"/R!'eWMa8c30$3rGjbfmgS"@`MG^AQ1U ZiKpG!OMj.bk_8>NW8_?!jD\'J,~> q>Z$'fAHWCn4u5*^R>5sMR@-,4 1]NjM4u5NgR;arCU=R5X^orL!XXqD8/>!'^?;#;f8!PaR><5*n&8/-%C\1DBgD 1B80m!YI-11Sb$Ks8E#ts8N)rrr<&urrN3#s0i")b`O[tA9<]sAi);*R@/MiPBJrB1IdCfGaNM0 r%e?l!;SDO)??ipq>UJJs7YRVQiR)8~> JcE^hq>_m6s60La>[L\8!RguJ!%%[FZiCC3rr<$Fs8TG+#lj,h!F/u9!!1OFrrNH+7fNDhqh$0n !$)-Qs$6X$`!%\;mJmLlkl:`h?X!L2dd[;;])Ve'rW)uurr<$UTFGp*/MQi@PR(u=di"- q>Z$:fCJ[[q>_mXbb>(=9M@hS!Q3+]!(tJZ9)oFFbQ%W8bfi][%EtOH!_c9U!!1"7bQ7hGQ2\u/ _c@EL!$)-UbRFQR:'h4rXT/aQU&Y6g9LJj]_m07B^Wan3rW)uBrr<$VrQP9A$C]2E!!'FNWW3%# qTSg:"pCUCbQ%X3rlbV)!!LNO!!'e,bl%MB*le*$rr<%fqTK,dR8O@lCmW?U/ht)N*W`^n![bLu UJTs7Yj^YQ4WP~> q>Z$'fAH> 6?e^oR2qPN1R=FiMMRTmCmfl2FIAG9F+fsK2/&DG2D[.TrgEdBs-WjnrA4JA$9g7ZR@-#jAso&J qD8#:#*:r'1RXXpr\Fe/R?04=R@,u+1]<^BG;T1Qs-WjNqD/:3<-FUr7[Gn?"W/sD!rt&3!#74A $4Y38T`G,mrrE*!qZ-ZrrW)uurrE*![fH9KOYZugrL"'c1Hq4pNcpYTLbprEr0[Uu1Gf"2rrE$! !&=F.!?(s>1\q%OKE(Z-!giudJ,~> JcE^hrr<9ps7qfX"om6O!#:n$!!#Ifs5F"Zs8N'!7K^M_qu6^5!(-S_&`oJ^!)ER' !%_[tU^G6E*WOdg!"YIn!ruO)s,U.[!<<'!!(?ecrr^iqls<2!aM)l%f:2Y&SV?ms#"Bfs82kcc2XWa s8W,Cs8N/Es8Vr>s8W)Bs8W,Cs8T=IO8g!aIfKZPrtk`,s7lWp>4DRm4nZGf!-A,=!V-6drrMZj V#LITs7Yj^YQ4WP~> q>Z$:fCJ[[rr<:mbecdK#g@Yl!#<#f!!&5,b``#.bfg%ePK_77!!:Akq>^N*qof*F!/p`u&[#aH !2Ib$!*U'd.M>qc36ZaG!"ZTV!-!!I-A!$fM]bl7YCRek53_LFTJ"+?N[%`C^A'Q4#hbR1Aobf0Xn c-3!as8W*!s8N-#s8Voqs8W&us8W*!s8TP.Ls-XD3<0<.bQS!0beX8ZWj2U)DT?\r!3uLH!OMk& bQ5'NXN^M?!KI-QmK0TmrI=~> q>Z$'fAHB\P!JCFGjoUnMrI=~> JcE^hrrFs0_n5s8N'!-3+"R!!rVg!!CmQrrD0WruGYN/cYkJ M=giJqZ$V+s5s@h"[CcC:B4>nkPt_;rr3Pks8RoU$HrJLjT#;\rr<$irVult$:t3e!!&\lmJm5i qZ$Qq!(ctdrru!!$4$rrMZjq >UKd!2TVqNW8_?!jD\'J,~> q>Z$:fCJ[[rr4"3dG=#/pMb)5td'!!#X8bY8'Hbfg%e9$GLR!"I/G!!^C@bQ+UKk=2K?DE^`;fn?baneH!J?+-%fi'BT`>;8rlbqPbfhU<'"lH4RK*?3bQ%X3rQP9A$C]2E!!'IO X8i7%qTSs>!1Nc.rr"e(b[!%Z.hbl7YCRf1G8`e?SY!ASo; P0=9,(!OlLWm&],!4g@uU]CAnrrDrrp]19m[K)91!R&C[bS>-u"jG1:!0YRC!!'7*!!&tAVuQgt rQG;L!;Xh>ZiI2Oq>UJTs7Yj^YQ4WP~> q>Z$'fAHs-'1B9o@1ED^J 82E%g:,Fa_6CF6&1No10QpQ=jQC0omFIA.Gr\G*T1Gb,\Ho!'^68s-XE^1G`L-R7&heOdUGN1G_$UqD8/>"[6C_R;Xq\1]NjC55d8B4C3Q*R!DXg Ou!F['JhNJ0/GC8!&;_SU]CAnrrDrrp]19m[K-0JP;<4t2#]9GKUIoX1Qe(h1J4('3cg^W3\t]B R6(:&!?(t61BABoX>B\P!JCFGjoUnMrI=~> JcE^hrr=Pg?Wn$A)ZTe2!!uV-1'mp[!!!-^Mn70!>frr<$irVult$:t3s9)o6$-ia6M qZ$Qq!(ctdrrjc2W@=\]g9;)Z0Xo>>b_,,QIf3#R"$d!"/2m,QJ'M/H>q+rVloh!;ZWqnc5Kc !KI-QmK0TmrI=~> q>Z$:fCJ[[rr=Q19LAm^1(>6QQ^5bV<0! )pHOB!"M.a)up>dbesM^!4o`A!!1!]aqk$j8OFO.bfmj!1Nc.rr#+Ebs!WY!urlkBB!1Nl1">g*$C9s,J% \gV[U(Em>bb?Mu``Whqc-1_=^]9>;)TDn:90*+S7*NlT!X;.5!#!Dn#656)%KH^PrQG;L!;Xh>Z iI2Oq>UJTs7Yj^YQ4WP~> q>Z$'fAH>s2OFAuAR@0CbJs_rq1GbGeQZdtJR78tmPaR>LHBcB5PaR7_1IRUuR5\69R@#if3L#qfFF'$t1G_XfR?2Z8OdVUn1RXXprA4JA$9g7(Q'mAM PaRq#qD8/>!'^68s-X%7G)D]UB)XRk:6q<,FF9BNqD8/>#!OhTR$h_Hr\OSB!'^?;"HJn%>W@p'% 41\q%OKE(Z-!giudJ,~> JcE^hr;\8I'N3ffs8%-i"UHYus8N'!6"g`9>l4R$!!#;u%LZP=s8VqD,m=Q*E;KSCpB1QKs8@d? 'a"h*[f6:3B)i,5s""-Xrr33!I3f%&/9(Ug%/c8I$Nh/4NrT+Z!(d(grr%%+s+/D)b`i&3r`L?I"!;1Frr3Ja6ja8daoDD/?5WhP33<&X!V-6frrppT!rrE*VZ-[Vs7Yj^ YQ4WP~> q>Z$:fCJ[[r;\8J(/i/rbe[-j!X^Jnbfg%eN][LV@a!!>!!&$A"qP1dbfmn#'ESUmCAQ-_]`A2Q bfO6B$ipf#YPu`N'EAB^bR"7^rlbS_;%s'=/8G1.%)ua#"p>c0J]u= NW8_?!jD\'J,~> q>Z$'fAH02#]9@?At84DDj:,;hC7$OEuFD!<%E~> JcE%Urr<$iqZ$Qq!(cGU!hfTUJcC<$JcC<$JcCi3!KI-QmK0TmrI=~> q>Z$:fCJ"Hrr<%fqTSs>!1N5t!^-O(J]r\hJ]r\hJ]sM*q>UJTs7Yj^YQ4WP~> q>Z$'fAGXFs-WjNqD8/>!']^)!fWO8JMVj5JMVj5JMWZLq>UJJs7YRVQiR)8~> JcE%Urr<$iqZ$Qq!(cGU!r6VOJcC<$JcC<$JcCi3!KI-QmK0TmrI=~> q>Z$:fCJ"Hrr<%fqTSs>!1N5t!l@uFJ]r\hJ]r\hJ]sM*q>UJTs7Yj^YQ4WP~> q>Z$'fAGXFs-WjNqD8/>!']^)!_@36JMVj5JMVj5JMWZLq>UJJs7YRVQiR)8~> JcE%Urr<$iqZ$Qq!(_\@JcC<$JcC<$JcGKE!KI-QmK0TmrI=~> q>Z$:fCJ"Hrr<%fqTSs>!1JJ_J]r\hJ]r\hJ^"/UJTs7Yj^YQ4WP~> q>Z$'fAGXFs-WjNqD8/>!'YriJMVj5JMVj5JM[<^q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&IMb`IQafJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rRK1 q>Z$'fAD-8JMW3?RK1 JcC<$JcC<$g&IMb`IQafJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rRK1 q>Z$'fAD-8JMW3?RK1 JcC<$JcC<$g&IMb`IQafJcCZ.!KI-QmK0TmrI=~> q>Z$:fCFL:J]s%rRK1 q>Z$'fAD-8JMW3?RK1 JcE^h$i5&h":?P[s8N'!8FHNX!!#Rerr`0!!*T-t$g%F&s8Vq>*s;p!=m>qkqi3NB"X%."q#C?o !(d"e"8i-!=nVgp!!#Q@s5!\ar-8t^;>:+jr-8t^;>8<7V9Ji:s31HApON5BrdatIgOS)'OoGQm 1C"\5oD]!2.L6;Aa-?T)NW8_?!jD\'J,~> q>Z$:fCJ[[$c5OL!XpDTbfg%eRdSE"!!&JbbQGib!3H"?$^gu>bfmps&crIg<9_U3`*OPj#9d6f prra q>Z$'fAH JcE^h$YTME;->LVs8QG5N:-`G?N?&^rr`0!!*T-t$VCD=s8Qa4##SMU#O;s8:+@s8U=Cs8IQKs8IQKs8RWL rs"#Rs+#Y"s4i.[b`_u1dJsDK+TP%1rrN)Mqu6iTe,8rq&=!1qNW8_?!jD\'J,~> q>Z$:fCJ[[$Qf?U7RJ(%bfiaSXR==49E;0kbQGib!3H%@%*K.]V9I.*!")1_)@PiS#e^iN#!YNt !3c1As%EEoqof/^!!'+nbl7YCRXr]=bRHQe_7C\"bfi(%_7C\"bflm`s8Vuss8W*!s8W(Ks8W(K s8W+Ls8N:Rs8RV"s8Ul)J^!N*#'BnM7gB$3r6,2`XS^3FM6b@>6QVcAq>UJTs7Yj^YQ4WP~> q>Z$'fAH4#8[UR>Q*4P(MsT#Y^MONd#`0 R6(+!s)S0$q_J=>R@-,/1]NjC5(PNG1CXO*1+EAT1G]4P1+EATbVQ'qs8Vuss8W*!s8W(Ks8W(K s8W+Ls8N:Rs8RV"s8Ul)grtp;#'u\tGF4dgr%e@,/,M++,;1i)#8`mdq>UJJs7YRVQiR)8~> JcEai"8Dir>5nO%iSa_POrVloh!;HKon,ejS!KI-QmK0TmrI=~> q>Z$:fCJ^\"2=g9V>e[=V;TQ"`W-"?qTK59!"-on^An81rlbA=lHB>Y!#33IbQ3m;n&tmR!!'+n bl7YCRc2Hl@tVdPbRVVo[`lsm$I$Kk[`lsm$I$_j!;uls!<<*!!<<)uJH,ZGJH,WRJH,Y"JH,Z) J:Yr4bQu>s!0bWr!!^RDbQ5'NpWNZD!h@L1rrJ,Zp?i!d!<%E~> q>Z$'fAH?Z"&>8P4T7,:8F/,42"i^-5ae$$qD/CtR>*LR:77M4r\FOFl8&O(R1Cbu:0f(U"$8X760f(U"$Ht<&!;uls!<<*!!<<)uJH,ZGJH,WR JH,Y"JH,Z)JDAA41C,t,R6EEIR>j'%1BABopG2gd!h;(BrrIcPp>uFD!<%E~> JcEai"nqus'pm;Gs8N'A8H8__s7HB(pAiP>s7HB(c2XWa s8W,Cs8N2Fs8U=Brr@THs8RWJs8RWLrr@TKs4i.[b`i&4o)Jd-s7u]qJc5TLnc8Ib!r7umPlCcD s7Yj^YQ4WP~> q>Z$:fCJ^\"hjs:.YP#(bl7YcR`s!c0a&P[+!7f4bQ%Wu0*7Qc!!&J3bdK2.*f^4#XSU-J/c[WM be=&W.YP#)bSZ-9(bQ%X!3!L+Nbfj?6#6GN1`6?Fl!!Z&[bCn(M^&Z'pbdmeh^&Z'pbdmeh c-3!as8W*!s8N0$s8N)urr@THs8RWJs8RWLrr@TKs4i-UbjN[\[f?EEbejD\[/J2LZiKmF!l7JR SBUg/!KI-QmK0TmrI=~> q>Z$'fAH?Z"]:\UG#CI$1]Njc4u4uiLmEWaMMaDM1RXY5MO6R`R@-5p1JWalJkVT#3r1W>OI9'( 1JsR.G#CI%1DkS/DDOVHQo$U`R6i\tHBOVN>r4?.R$g)41]NjT=GiJ01RXXp1G_d^Q@_euR6(!s s-WjNrA,QWR@-/n=IGR:1RXY3Kp[Z`1Ga36QC*VG1c$qFR?25TK/4#_!&?>d*rn&@!&?>d*rn(@ 1Sk*Os8N*!rrW9$rrE&u!.atHs+((Js+(.L!.b(Kgjn2(P;O/dE5` 1\q%OKE(Z-!giudJ,~> JcE^h!+>a*-5)49rr<$is8Pdn##c]G!*T@%!!!'G>\X3a* )\S&.pAb6SlMpohr\X3 q>Z$:fCJ[[!$2"<-68&hbQ%X3bfUS!$UtF&!3FDg!!!*U8"Rp)!1M-S&c`D5$ig:/qTK!L!-J4a !$2"<)]am]^&S5TV>pUj`rZ7Raqat+8f@[qbd%3K^\Q+R!"f;f8"Rp)!1M-S&c`D5$ig:/p!!F9 !1Nl1)9DjYWQ_pR!4U/P!!5A+!!L\U=ZiKsH"K);$*Q">j q>UJTs7Yj^YQ4WP~> q>Z$'fAH?Z!Ap#=R3mMP1GbGe4u5*]R>?*PR@-)l1RXYuH?_P.R@-5p2O0\cG*JD_3r1W:QC1,s 1Gk;Ku]R5Xjss-XIdH?_P.R@-5p2O0\cG*JD_3qY JcE^h!rITqrW!W6]Dhj28H82[!1X#T!!$1%rr<$[L\8!RgK q>Z$:fCJ[[!lJ%OrW!W6^WZZXR`r&;!49tK!!'+EbQ%W#rQP9A$C]2E!!'FNWW3%#qTK!B!1!Q- !lJ%OrW!r?^W[,eXA0'.7]cXubb>(=9M@hS!Q22C!5Hb%%fQJ.bl7YC2>tc!!",1=Z2am4bc1XC XS'g;!!&JdbSeM&!348S!!'LP!!#I3\,ZN;beS:!9f;tTr6,>fR8O@lCkg.D/ht)N*W`^n/ht)N *W`^obb5%:rrrK'rr<'!s8IQKs8%9Grs"#Rs+#Y"s4i-UbjN[]X8i7Abf]tdV9Jl>!!*!"!5ABT !kCl\SBUg/!KI-QmK0TmrI=~> q>Z$'fAHVkEfQQLr%eL5<-FUr7YW]/"W/sD!rt&3"W/sD !rt(#1SFgKrrrK'rr<'!s8IQKs8%9Grs"#Rs+#Y"s4i.[b`aghG+"aT1H(Yh4>Zs;rrE$!!&=C- !\4NoS2:!@!JCFGjoUnMrI=~> JcEUe(Zh+d!)EOo!(d.R!!)ipqZ$V!s8N'!7/d/c!")9skPtVYs8)cr=o/."('$\urt4@^!!#do [f@sj(ShD\!$2*lq>_%nq?$_$s8S-[!!*'!!!#Fcs8N'+8H7lR!;ZZl!!$0ps8N'!8H&Q%rVupo s7H?lPQ(U_7K<,_!.4SsqZ-Qo"oGQ.#m+@drsnpF'+np\cN!c\'+np\cHZBcbl@_Cbl@\Ibl@^e bl@_BJH,ZKJH,ZLJH,WRJH,Y"JH,Z)JDAA4rs82r!5SX2!!%TKrrMZjp\t q>Z$:fCJRX(TqBN!2Iabfg%eOT!E'!",1=T`>)9bf'P^XSU-B"TXJXbRq!j !!&e<4TJY".Ol'8!'&2Lq>_&9_>sY*bfj*K!!(6e!!&,Zbl7YMR`qH*!6`U*!!'+nbl7YCRf1GD aT)=@bdmcS\'+gPQ-?uC!4'NNqZ-Q<"i>aM!X!k*bRVQY$5@CZ_T]qc$5@CZ_Tg<$!<<*!!<<'' !<<'!!<<)uJH,ZKJH,ZLJH,WRJH,Y"JH,Z)J:Yr4bQtZX!5Qgr!!'D)bQ5'NpWN]W!54rIq>UJT s7Yj^YQ4WP~> q>Z$'fAH6W(c4a-R@-/nR@-5pH^U9X1IIRu3\rR[R6UX+s-X3X1OGOX1G_CdR6(1#!goB@r%esB 7sLGi4>Vqa8 JcEai)uGKas8Vrr!+Z$/!(d.[!!&\lm/R,hs8N'!8H&Sg!")9snGiQ^s6]je=o/.=AH4=^s8.ZF s8Vrr!+Z&l!"&log]:1N;uc%]"5*VQ&EWrlM#[n+s8V0\!<<'!!(d(grr q>Z$:fCJ^\)odNQbfn$+!3OHF!1M-;!!'IOVuQh!bfg%eRf1J1!",1=Z2am5bcCdEXSU-]'ED@] bf5:Xbfn$+!3OJ:!"f6aL&hebR`qH*#/pMb&?*gs/-$q3=bk_8>NW8_?!jD\' J,~> q>Z$'fAH?Z)a[:V1G_@cR6!-lR6EE?R@-#jAso&J1GbGe55d;;R0l,6BpkAK1LuoA3r1WQPaP&u 1I=hn1G_@cR6!-IR*5 R6!,[;GoFL1]NjC55d8^2OKmt1O>IW3&?tj4u5s%R5fGZR639XR@,ie4C3Q*R!DXgJMR JcEai)u0I=6da!(d.i9`PH%,6.^Hs8N'!8H&Sg!")9ss%<=t=ss@N=o/.Q`rH\Ns7lX" 6g]"98Foo`+smcN!l q>Z$:fCJ^\)o2La4\?[o$HL?j!1M-S'*&S6$31(-bfg%eRf1J1!",1=aq=[c8dk\"XSU-q!"qjj*Y$?;^_QnR5"d=)!6iXe!1Nl1rr bbDboU(Em>baJONJ:Yr3bQ`(f#"St!C])BWZiL!I#'RT%[mV%US]pp0!KI-QmK0TmrI=~> q>Z$'fAH?Z)bQNWG]f7=L,:]SR6EDbPaR8NPaRq#1GbGe55d;;R0l,62O0\bG*JD_3r1WeLm_d0 1J4'oG]f7=L,:\SR$j@$=IGSE2)@7WR>>s2OFAuA8sGa*G]](9R56XeR6LR*s-XB]1H(MdL3AfL R6!,[R@-881]NjCGQ)Y,7Pg9sLjGGVR5d!jR6EE%R@-$NR@/;KQC4-s1QIlT>W@ JcEai)uYUZ'a"h*[f?@-!(d.ioi;;5M?!Was8N'!8H&Sg!")9ss7B:r(5Mqj=o/.,pB1QKs8@d? 'a"h*[f6:3B)i,5s""-Xrr33!I3f%&/9(Ug%/c8I$Nh/4NrT+Z!(d(grr q>Z$:fCJ^\)p)J;$ipf#YKY2j!1M-U[kIn(MZc0J]u=liD%?[lMZ1g&D%?[l MTa54!6'J>bjNW8_?!jD\'J,~> q>Z$'fAH?Z)`r"pQ'dYR3&<@YR6ED_:5G9j:mm_41GbGe55d;;R0l,61JWdoKMIr'3r1W@<1&n, 1HTQ3Q'dYR3;t]=PaRCb1maVOr\FaHH'4PWITHG($p\flR$NVM;):"rR6LR*s-XB]1G_d_R"S5& R6!,^R@-261]*R];DVF9Q@<50R5d!jR6EE%R@-#kKUA0RJ!l]\1L<=t1]K66&cr(B/,h=-&cr(B /'B`;!6'KDb`O[aClk!<<;SHP)?BXj"UtP7"rB%b1\q%OKE(Z-!giudJ,~> JcE4Z!;$3i"5s4[UZ;@UT`@0jrr_fl')CGb!qFb:JcC<$JcC<$JcGKE!KI-QmK0TmrI=~> q>Z$:fCJ1M!3uOI"-EQ`]&V!94TKN=bQG3P,0Slf!k,/QJ]r\hJ]r\hJ^"/UJTs7Yj^YQ4WP~> q>Z$'fAGgK!'pN>"*0ft2rc[qN1!)M1BM*TDVd/M69p)XJMVj5JMVj5r\OBM!JCFGjoUnMrI=~> JcE4Z#0@NY<=AjEir9)UCN72j!mLhTJcC<$JcC<$JcF-t!KI-QmK0TmrI=~> q>Z$:fCJ1M#$N'=4TYU;ilhJ@UJTs7Yj^YQ4WP~> q>Z$'fAGgK#)IqSJ=)aUJJs7YRVQiR)8~> JcE4Z#2V0E!uth8JcC<$JcC<$JcC<$m/I*Gs7Yj^YQ4WP~> q>Z$:fCJ1M#)49)"Wh*nJ]r\hJ]r\hJ]r\hoZ[.2!KI-QmK0TmrI=~> q>Z$'fAGgK#&9*aQA/^&JMVj5JMVj5JMVj5oJ?=C!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>o5JXM(WJXM(WJXM(WXI8na!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCAqAJb"B_Jb"B_Jb"B_f(/Y:!KI-QmK0TmrI=~> q>Z$'fA?T.J_u%9J_u%9J_u%9f&-<'!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UJJs7YRVQiR)8~> JcC<$JcC<$g&HWI\]fX)MuNg;s7Yj^YQ4WP~> q>Z$:fCFL:J]s%rJH34\J]s>%q>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMW3?JH34\JMWKGq>UJJs7YRVQiR)8~> JcEdj!;?3g!&*g@s5*h?nc/Uh!(cPXs5*h?i;`i7!9j7Yrr<3'";3SIrVliq!"K&LC\n)2!!!;s s8N'!8H/VnqMHs6#r7Wos760n_C>fs43,;>Us/f;pWWU9W6CG)qZ$UNoD\rh*!](-PlCcDs7Yj^ YQ4WP~> q>Z$:fCJa]!5/+-!+>9>s0;XEn]_"5!1N?"s0;XEi6;5,!64iYrr<0&"VNV@rQP3?%KdbfbKS01 !"I)pbQ%X3rlbS`=r[\Q1QI%1o#q8<)?^C3]u8-j!<)rl!<)qr!0YS'!!$X&bQMAa#uSj8bk_8> NW8_?!jD\'J,~> q>Z$'fAHB[!*&c^!(cQ7s$-Q@nMC35!']g,s$-Q@i%tBu!&XL-s-X"WQAp2erA4D?!g\L?r\OSB #(JHc1RXXpr\FaGFH;fNGs6d8nhUF]"T\`@0uPlD!<)rl!<)qr!0T/8R/f_J1BS6k"<UJJ s7YRVQiR)8~> JcEdj!;c\%rr<-??XJ6Ms8N'!8Fc`[!!#RXs8N'!8DsOJ!!#Rcs8N'3)dYl3!%7RArr<$QQrrN)Mqu6iT#fZRH23e+ANW8_?!jD\'J,~> q>Z$:fCJa]!5e_/rr<-^9MC<3bl7YCRdnW%!!&JUbl7YCRc)Ei!!&J`bl7YU3_:h%!'eZNbQ%W( 9KN7T?HgXm!"Xt2bQ%X3bfma4!")(Z%5WRZo#q8oZHU$M*lQ:!!<<*!!<<)u!<<)u!<<*!!<<(u !0YS+!!#(Z9E:%LbQ5heqof4s%CEhj@@YR;rrJ,Zp?i!d!<%E~> q>Z$'fAHB[!(d*1s-Wt5F)sV81]NjC54LH/R/fG=1]NjC52\6sR/fGH1]NjHGBSk3R:cFSs-X+9 F+TdI9/AC'R1DP=1RXXp1G_akR>c99Q;E,gnhUFo0/G0b(W8,+!<<*!!<<)u!<<)u!<<*!!<<(u !0T/uFD!<%E~> JcEXfrr<$im/R(c!(cY[rr<$imf3:e!(c&Jrr<$iq>^Hp&kN'&gBmpLs8N'!8H8_$!!`K'rW!H8 q#: q>Z$:fCJUYrr<%fm*,J0!1NH%rr<%fm`b\2!1Miirr<%fq98j=&t7%gOobW-bfg%eR`ruT!"-ro rW!H>bKKqdR`ru(!#3;obfP]mbjN[UZ3%tgT`G,mrW)uurW)uurrE*!W;r+*rr<%fpricG!;jtD 'nFNPV$W[9q>UJTs7Yj^YQ4WP~> q>Z$'fAH6Ws-WjNlne[0!']p/s-WjNmPFm2!']p/!&X4%s-WjNq(r&=&jA*-@[NQO1GbGe4u5!N R>*LRrg=:E1GbGe4u5!VRUJJs7YRVQiR)8~> JcEXfrr<$irVmE(HQr\-?L\!oN[P)7(d[rp!!!W.ruCro.Kp/>s8N'!8H8Yh!)!"Ao-!!#Ris5*eW s8N'!*WTCD!!#Riq>gS%JcG$8!r7um`;cXWrVuoAqu6cBs8U=Bs/F5*s8N'$,%P`.qu6]f!;uj% rWe>\s7u`+Q2^lEs7Yj^YQ4WP~> q>Z$:fCJUYrr<%frQGeg:D3dF@*6^9=Vh,C)*Yh5!!"&:bT+W+(]k.-bfg%eR`rkR!2duO!!'LN =Vh,C)*Yh5!"^0p_+t^G(1>;/bQ%Wu0*7R=bQhDp#6GN1`4u3M!$1s\rr<%frlc?C!#3Z$!!&J3 b`2Z)bfg%e70&Fn!!&J3_>sY-J^!E'!l7JR`6>"WrVultqu6`us8N)us/?!]bl7YF8krltqof)J !;t%Gao]#qbea@oS]pp0!KI-QmK0TmrI=~> q>Z$'fAH6Ws-WjNrA+sPHBOVN>r4>sG*&)WMK2JiR/gRj1E8T$OI2,I1GbGe4u56fR639-R@-#o G*&)WMK2JiR1N[\7!b#_Lg;hn1RXY5MO6U)1C&)_QC*VG1f!t:!+,OYs-WjNr\GORR;arJq_J6k !;nVX0`Wpa1FW;ZSMU*A!JCFGjoUnMrI=~> JcEXfrr<$irr3c59`Q)82ZP$$hZ*X/?:Yn0?N:'F?Y]K<11pRg79V#;rr<$is8Duu:B0te!0c:? !%qSK(].P>!#o9[r_3A2=uQF)s8N'!![M#bqu7,<4^)&>!#bZ@!!!sFCA\&2!!#RhruBkq"98B$ !(d._CB+eCrr<$f.gl.R!(d.[!!'W^s6TaglN7+td)>sXbl@\CbkqD?bl7VDbl@^Bb``#(!!*.P r;Qfg!;uiuq>dr&rrE+XQ2^lEs7Yj^YQ4WP~> q>Z$:fCJUYrr<%frlc/#('#dU)?<(IMuWi:8i$gm9E5&R9O@Y@1Wq$D"$f3fbfg%eR`rkR!3+2R !!'Ke!!"rM1CD&o!!#&R?HO#`.7tKY6-ROQ!!=rGT)6_@3B0W#%KJ3$9E5&R9O@V?rr<%frlc@> !!LNi!!&J3]H[Ckbfg%ePmJ)H!!&J3Z2am>J^!K)"K);$*Q#b=T`G,m!!)or!!*#u!W`9#W;r+* qu?a!RJb80ZiL$J#JpJTbfn30[[kY q>Z$'fAH6Ws-WjNr\G;J('R@&;F4SpoDKR.`bQC2#HF.&G?F&)Tgs-WjNr\GOD R?03\R@-5p6B[aU1GbGe7[J?UR@-5pBpkAIJMZXK":tS6%l2'ZT`G,m!!)or!!*#u!W`9#W;r); r0[SM4o@):)?B[k#:TX-1G^`c0qC,rrrIcPp>uFD!<%E~> JcEXfrr<$irr3\s!!->3>6"]PhZ*Y>eFrk@rr<$iqYr8>!!%KJs8N&u!!#RirVupps7H?lPMZ?? P194(s8N'!8H8_S!!->3>6"]Prr<$dZXs8)d."-*?\ !!#R;!+Q!/8H82[!5!g^lMgqUL`OG6U!3Q:rlkEBrlkEBs31NCWQ^P*#`$t-k>VEhs8W$"!!*!# "Le@,!4Dh+! q>Z$:fCJUYrr<%frlc(N!!5hf6i[8*MZNW8_?!jD\'J,~> q>Z$'fAH6Ws-WjNr\G71R?ho8KUJ2bI@6Ku5;P;U1RXXpqD0g;R@-/n1H70HR@-5p3glBs1K^'5 3.73_:-UNp1GbGe4u5!:R?ho8KUJ2b1RXY;pbN:EA8lRLR?03\R@-871]NjC55m>@J!lBS1]*RP O?> JcEXfrr<$irr2uNq>^qkrIQ-l!!>[brr<$iqYpZ\!!)]is8N':8H8Yh!)NXf!!&5]Jfk$n"%E"b !!#Ris4I/J"IT2h!(?Y_!W+SJ!<<*!!!#Rcs8N'!8H/VsWrNS.rr<$dTSrrMZjr;R$$#E/W^q>e'k rrJ,Zp?i!d!<%E~> q>Z$:fCJUYrr<%frlb@hq>^r6a\WQL!!Z-?bQ%X3qTK&5!!(1>bl7Y\R`rkR!348S!!'LM:_<[- ##*4a!!&J3b^90d"LuYU!0I$#!Q5BC!<::C!!&J`bl7YCRf:M=3<0c;bQ%W(9MfQ6rlkBB$_#'? '`\6&beaA\Sq5,MbQ>]_]uA3l!<<*!!<<)u!<<)u!<<*!!<<(u!058)M?!_UbQ5'Nr6,Dg!k-=s _>q<@bk_8>NW8_?!jD\'J,~> q>Z$'fAH6Ws-WjNr\FP+qO%aO3dR$YR?D):1RXXpqD/5$R@,o01]Nj\4u56fR6!--R@-#qHBahc P%6@)R@-5p1P5Ik"?83*R6UL'!CW7NRK#)CR/fGH1]NjC55m>GNgXiB1RXYTF)YDDr\OSBs#paV FIAO\1J!n$4Fo JcEXfrr<$irr3)a!!CmQrse)ir;HZgbl@`arrW6jqYqr5!!%NKs8N&u!!#RirrW6es4mYTPPkCZ p!!I:ErQ4A7fWMP!!CmQrrqNarr<$iq>Ulf!!'G*dJs:IrrW6jq>^Hp$V:dA2s.mm;s7ab9s/=/*rrN+nrr3&#!!`B$!V-6frs!.$ s8V?fr0@9_NW8_?!jD\'J,~> q>Z$:fCJUYrr<%frlbJq3ebbP7;s7ZNls/5p]bQ5hRrlbF9!"/YJ!OMk( bQS]4bflmiSBUg/!KI-QmK0TmrI=~> q>Z$'fAH6Ws-WjNr\FXuR>s-'1CZf04>ScU?C@3A1RORoqD0L2R@-/n1H@6IR@-5p2OKmt1O>IW 3'8uQ4C4GD3A[%j4u5!:R>s-'1Bg6(1RXXpq(iG(R@-/nK:/,`1RORoq(r&=$U-@&@[NQO1GbGe 55I)8R0#Q.K`7AH4u5!WR JcEXfrr<$irr3c59`PK!=Y^9_jUFU`9E5'Ns#g>l?[_hO05(=e7Tq5?rr<$is8QU0#$;H;!0cLR 6sWId!/pk?!"N@ar_3A!<*:s^s8N'!8GW8qmf3>;=qL`7s8P4^%UXY]s8N',)dYo4!%.L@rr<$i qZ$Qq&4lj!*<6(1s8VdL!!Z2#,TD=7o)AoCh#Hkq%K"-EJ]t[KPQ(mc!#em4!!#=_rrMZjqu6iS #fl^K1R.n?NW8_?!jD\'J,~> q>Z$:fCJUYrr<%frlc/#(B>(>6QQ]\RM7kX0`V3^bR=Ik9Sr\k0Zt^A"@>Kkbfg%eR`rtj!")-t !!'Ks'Kf&D!!'IO$ih8@M96V7&kPG3%F!#r!1N`-%^#d32aS&U!6iXq!$"[hqoo'?$T^m2!!#4+ bfg%eRek8.!"bUC`WcDCR`s!f%fcr*64Pf&bjrs^G.Po,6l4%cb^fc)!0bV3`W.5T1&q;gr6,2K !;jtDJe#3&*aYA\q>UJTs7Yj^YQ4WP~> q>Z$'fAH6Ws-WjNr\GLHB?0V R@-$^MKj6%R@-#jQC35D5WP'sLids)IPWdJR6LF&%W%Q$G^bsHR56XbR=B9Cq_S8?"a>-IR@.[d 1]NjC55I)8R1MP<6("(.4u4uiQC3\RI$RT[1\*=*+ttf+m1JH34\P;uFD!<%E~> JcEXfrr<$irVmW/I3f%&/9(XY8fIm8+E[Y`gaW@*0Dkc&r.la(#WMe`!!#Ris6`&R+-cg+POM0` "9Tcgs8Uk(!WXnRqL'Xn#V9rprr<$iq#:eZ!<<\7!!*'!gaW@*0DkeK!!EB815,T)s8N'!8G`Ad !!Z!os2G$=8H/Vnq1gR.#Vh?js760n@ikg]7Ei^MJ]t[KPQ(meIl.W9*d7P\rrMZjqYp\k)?r_& PlCcDs7Yj^YQ4WP~> q>Z$:fCJUYrr<%frQH"m;%s'=/8ED41(aQk,'D,RL)'di@/J/$``NuW$9?>S!!&J3bc2ff-B8'+ \$%P!!X0cjbfkeW!#+Ec[?2storlbS_=;h;L15pe.o#q8&&HWG3^;S6H!4`)nbQc3j+U/#mG5KJaZiKsH"CMWD :Wf3Oq>UJTs7Yj^YQ4WP~> q>Z$'fAH6Ws-WjNrA,0VH'4PWITA72KThdfJkn0YBTeaN8Gb1r5B`3WODZj1R@-5p1K]^(IUJS3 3*q9%R$<1u1G`^-R$gK$7!Xr_Oa^=e1RXXpq(iL;KUA0RJ!l]\1MDr=R7R32rgB7!4TYOa96C1\*=*%0HV8(G`obJH34\P;#!?(t71BS6j "<3gdq>UJJs7YRVQiR)8~> JcC<$k5PMQe,+^rJcC<$JcC<$\c2\is7Yj^YQ4WP~> q>Z$:fCGUJTs7Yj^YQ4WP~> q>Z$'fADrO!CB&&1P%?51P%?51VbgBrrIcPp>uFD!<%E~> hZ!fQE[a44.U_lJ#Ik@*s8Ld-l0/-Le1(G&l2Lk8.KB[(s+13$s+13$s+137rrJ,Zp?i!d!<%E~> q>^<^pAjsY#23-/4>/F'oC<-2$"3>md*V1DncOUQ!"A,_",7*^%*8!jb^muhb^muhb^n!gbk_8> NW8_?!jD\'J,~> q>^ hu q>^<^pAk!Z#NQ7RnFH-g(%^u$#QRKfb5_OrkOJZk!%I.&!Z1ndaRXo+J]r\hJ]r\hJ]uZgq>UJT s7Yj^YQ4WP~> q>^[raPVP)JMVj5JMVj5JMYh4q>UJJ s7YRVQiR)8~> hu q>^<^r;cltr;cW`!`]5erpg*HD=d<'ZBXeJHN40:lgb8Gam/ q>^ hu*_5>D0K4[1n+!,_c6Lab;#M#[6J!!#JT"_@6* !+c,^5=?n5=8Dml3rf7B2uj&Rs8Vk2'K9%m!+g`]JcC<$JcC<$JcCu7!KI-QmK0TmrI=~> q>^<^r;cltr;cW`"W7:FCU*.'nkEHk!&Wj!"C(G(#!b!F!5N1P!!tbjngZaa/-#[oo'0m0/gI@d j%'.MJiNnSf`2#pnrGOk()q#Yo&_b/!-odh#2&M;iD'hJCB+@WaRXo+J]r\hJ]r\hJ]uZgq>UJT s7Yj^YQ4WP~> q>^YhK_O6hGhmoYdSYO$YhpA'bRCAcUTA8>]dA`\>Z^I68aPVP)JMVj5JMVj5JMYh4q>UJJ s7YRVQiR)8~> hu<\@r;[W86KJ1H.0**BV>q;0lm_tm!!'M.1]SZts#*XPq*>!1s8>msGPV:Aj8\$;!'pRGc/8R% ao?j\s7cQo@/p8b!!$@)!<>(YrC$]is/H&!b^oeFs+13$s+13$s-3NaNW8_?!jD\'J,~> q>^<^rrDrrrrDib!&+9N(Bdh+o(!(e^%+kt..Y>fnu;ZiipmKX8cJ9=.e;X9!*Sm[+oo@@!!_f\ VuQgKnhoU0!!)0P*ldd1!!'q-nu;ZiU@/*_MXp*M!2T0F!!)3'nq##9b^muhb^muhbgjr5rrJ,Z p?i!d!<%E~> q>^uFD!<%E~> hu3)!#YD/dJsILp](;Ps1A=6mf*5-]Dr09 s763iq#CCes8Tb4"oJ)q!(?k8!!N&r[/^D^s+13$s+13$s+136rrJ,Zp?i!d!<%E~> q>^<^rrDrrrrDib!p!Dhr;[RFo(!XuKA%=G(\/s;nk/rho&]oPW;Z9"koKgcnFD54$M*3W!8$d6 !!hrknfCC'%.`uKo((lB!4h[k9)o:gjo>C^nq-oJnFAU?%*.pis+13$s+13$s+13prrJ,Zp?i!d !<%E~> q>^ h>\Dmc#s'e)#sW9!$@8t!!ML@s8Qm8&HD(s!0dE^')Z#8%c[NgFT;S04VJL's(_TJrVmpS!#,D* CE4TZ!!&Dds(hZLs6TddP5fY)'*%uF!#1"aJcC<$JcC<$JcCr6!KI-QmK0TmrI=~> q>^<^r;cltr;cQ^)Xt+6!!"eFngsi33PPP!]6!Q6)#tfMaT)=orpg]g.0(IUo(!b#$9U9\'&E*r !%Im;*Z4r+o%?hR0/!;*g@FeP!%RQ^!!(^C)uq>Vne_?Va7=f*J]r\hJ]r\hJ]uZgq>UJTs7Yj^ YQ4WP~> q>^^\Bs-jS=.1M[$d?;rne@@Ssch>hqsrlUT1/_TA8=o RD]!\*h8Y:hp/UJJs7YRV QiR)8~> i;Wi);#^J:qu?^]s8U(=#:&sC!))5LrXJoYs31NFnc/XfD#ag\rr3?h!%\*LrSISR%KJ9`ru_4M !&=LB!$_Hi!!;clrXJo`s3CZHnc(6B.KB;N!&B-*JcC<$JcC<$JcCr6!KI-QmK0TmrI=~> q>^<^r;cltr;cZa!IV!JnfR2u!0d!E@fQs;huE`slgjNJ!,(kH!!D]\o'S@8%c[KY$P!/Mo()5! o'cb^H2d@Vn,r`9nIkn#npCE>n+,rN!."-]!!D]\$NO]-lN.'5a7=f*J]r\hJ]r\hJ]uZgq>UJT s7Yj^YQ4WP~> q>^UJJ s7YRVQiR)8~> i;YU$'^u)%`rHS1s8UjS!lY'?!'L;]oDekls0D\4s+[S%!!B/!ctiZD!$_ICQ<=1Z!!$O.ru^k5 !+PX%!(-Zn!"Ao-oDel$s.03!s8QO..0%Bh!+pf^JcC<$dJndA\]fX)MuNg;s7Yj^YQ4WP~> q>^<^pAk$[1FFdBo(%hA*:37eT)]#UmK!UJTs7Yj^ YQ4WP~> q>^>RG$JiRBYSFg7aq.gY\s`hk-=Zhqk-YhntkM g&BkN_jQqGaI/IIgRO\?hqu>>RG$JhRC1r0S=.[[WgT:/a5;G(JMW3?J]t[KJMWKGq>UJJs7YRV QiR)8~> i;X%j:aJ@b*b!n(s%Mh\.KBE'#3l0P3rf7+kM.0]6s&+C!!tkS0$F:i@1b1dHiN=l!!"F*s62TF !%@8#!!?:F!!Q]n3rf74WYb^>?N9+(!]a0Z!&*tqs+13$s3gpubdkrKs,6mXNW8_?!jD\'J,~> q>^<^pAk$[#Dk_p4tS(!l2L6IblD;Fnd>imo"[!\!&j24'E^aDS,`O&4?O2NW8_? !jD\'J,~> q>^UJJs7YRV QiR)8~> V#LMqfAZ6!!rUX5JcC<$JcF!pJ]t[KJcCZ.!KI-QmK0TmrI=~> q>[Pe!q47fnF?YGaQ^V5J]r\hJ]r\hJ]r\he]djh!KI-QmK0TmrI=~> q>[PR!o28\nD=<$e)&""JMVj5M_fq.\]fU\P;E%7!JCFGjoUnMrI=~> JcE^hrW!$$#:b\hrs#t5!#kn;pA"[k0E2"P8G`>g\,ZLIrVm)uG96qp-s?BG$i5`7$4/JMs8N'! 8FHNXhZ2kks4.,PmSO<#=2b-7bl(H6bl(G q>Z$:fCJ[[rW!$$#qV%lbQ^E7!&DdB]_MO1@*ATNRek516N@*ArQGJ_9+h:7-<0fb$c6'e"U[&G bfg%eRdSE"Z2hmqbgjo?W@e>e@Y)bdbl(H6bl(Fjbdbk"FW:K%Eq7EW@LWW@b+-]OrrJ,Zp?i!d !<%E~> q>Z$'fAH JcE^hrr<3A?U4Ym]&LVqYpuu 2ZO"T q>Z$:fCJ[[rr<3`9HO69^Ym<@ap7tI"NSa'r_3=l#bQ5heqof4s%CEhj@@YR;rrJ,Zp?i!d!<%E~> q>Z$'fAHJaarcA+-#Bt615Vngr55R,>31$&$O>Qqm#*PC3FF'+% qD/OSQC3\SI$RSb1RXXpmPFm2!'Yrieh[IW"=Q&U/As?@bl:T@bl:T?bl:T?bl:T@bl:S?b`Xad HC9e;R$gJB1BB-Zq_JBf$ns16.%E*hrrIcPp>uFD!<%E~> JcE^hrr<3ns7lWp;rIZZl2Uo5nO%iVNQ_K)c;2 s8W)*s8N'!8FHNX!!#Q@s472N]J%)#V9Js;s31L@rlkC?rlkC?s31L@WQ^S+#lZ1O=9%C_"RZ0f !V-6frs!1#s8V?fr0@9_NW8_?!jD\'J,~> q>Z$:fCJ[[rr<4kbeO2YWo2))V#UZ*!1*Q,rr<%frQP9A!1Nf/$`*h,#lp:8beF,XV>e[=V>ACE -iasubfn1cbfg%eRdSE"!!&I=bgsu=8RR+njNRX%s31L@rlkC?rlkC?s31L@J]taM#g*DQPK]Kr #0Hhf!OMk(bQS`3bflmiSBUg/!KI-QmK0TmrI=~> q>Z$'fAH',2"3:)DOHQPR6LO)s-WjNrA4JA!'^99$Z;AnQ^L#n1JX@+4T7,: 8GY+NOI:DP1G_'V1GbGe5416,R/fG@1B97_1ZpOp#:RADV9Js;s31L@rlkC?rlkC?s31L@WQ^P^ #WS0=4u75INAUSi!?(t81Bdh21G]^OS2:!@!JCFGjoUnMrI=~> JcE^hrr=*2s7lWpPQ1[YHQr\-?L\!p!!#2a#"egp!'Xj#&:+*O"fD><[f@-?s8N'!8H&Sg!!#Re rsbk+)7KS[s8Vfn!#:jIq>UQn!b`i&4o)Jd-s7u]qJc5TLnc8Uf#Q=sc s8Voq\X!0qNW8_?!jD\'J,~> q>Z$:fCJ[[rr=+/beX8Z\'3(4:D3dF@*6^;!!%d-!h%74!/NT='nlD,"Z$-35l`2.bl7YCRf1J1 !!&JbbRH?.00oR`bfmd$!%NZ*q9/rX!;/bQ%Wu0*7Pmbim7O%_.)6jNRX%!6kF?!6k=<"3aY@bl1Lkbe)()[f?EEbejD\[/J2LZiL$J #Kd+Vbfmp(^7ELDrrJ,Zp?i!d!<%E~> q>Z$'fAHr4>nR@.07Qp*b`agg?^[uFD!<%E~> JcE^hrr=,[?UFf4s8W'm!#f$"!$VCB!!!'G>\X3O;CkeGoPVr;Zj2MYmDUnGiR$qZ$Qq-qOC;!!#doo`+uUhZ*X/?:Yn0?N:'F?Y]R7 !#f$"!$VCB!!!'G>\Schkl1eoW@8$(\&Adr&rrE+XQ2^lEs7Yj^YQ4WP~> q>Z$:fCJ[[rr=-%9HaBnbfn3F!%CMY!("iQ!!!*U8"Rp)!!5A+!!L==bQl2m!1g+i!lY&]rr<%f rQP9A!1Ni0$HNANSZ2Yk`6?FGr;Zj=N;Lg$Z2am>qTSs>.%8B%!!'"B\c;`>MuWi:8i$gm9E5&R 9O>jW!%CMY!("iQ!!!*U8"P:Ukfa23EYAX4Z@U6`bl1KBbYh?_qbdFq q>Z$'fAHASQ8JOrs-WjN rA4JA!'^<:$9X]D4`$OP1c$tPrL!\<6MiP@BpkAIqD8/>-pBFJR@-,m=IGR:I$pCIFbGoGF.&G? F&"`[R=9=DR9MI'R@0FgGW^O5kVEAB('=UM0Z5cDbl1KBbYh?_qbdF JcE^hq>_!rs60La>[L\8!RguJ!#tn:rr<3Is7?9kM#72Wj8]8DrZ_D2rVult!(d(grr<$ir;R2d !!;<^,61.3s8.EorVus#]DV[2nGiR$qZ$Qq,tS(8!!#jqo`+uUhZ*Y>eFrk@rr<$is8V<`!F/u9 !!1OJ!!!shs5j7b#8PeeRgA`,s/!s>;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(rsA&m!9sO`!!#anr q>Z$:fCJ[[q>_"?bb>(=9M@hS!Q3+]!&a`!rr<3kbd[WQ[en8RQN.-.ap.p#rQP9A!1Nl1rr<%f r6,S9!!C9a#69J%bemHorVus#^\l:XZ2am>qTSs>-(<'"!!'%C\c;`>MZ r;ls!rW3D?bea@obfn30[[kY q>Z$'fAH,sF+GR@-)l=IGR:I@6Ku5;P;U1RXXp1Ga-@ Q?.,#R@#ifR@.B41Z^Cr!#74A$4Xp0V9Js;s31L@rlkC?rlkC?s31L@WQ^P^$$M`)1c%%XR63;) !WN0!!=:J:.0)(Y1GJkaSMU*A!JCFGjoUnMrI=~> JcE^hrr<9ps7qfX"om6O!!J\h!!#Fcs8N'&7K<,_!.4VC#Eo,k?XGYj&,lP.!!#Rgs8N'!8GrJm P5kbn?Sqfor;Qo]RfEF`r;Qlp! q>Z$:fCJ[[rr<:mbecdK#g@Yl!!KgU!!&,Zbl7YHQ-?uC!4)LG#:9EV9M>cn)Z@n[!!&Jdbl7YC Rf(A7-3+#Jq>UJTs7Yj^YQ4WP~> q>Z$'fAH)*Ti;R@-)l>+(d<3dR$YR?D):1RXXp1GaXZ R05K*R@-9j1Z^Cs!A?5b/-%ED1Sr=q;ZFu@;Z=o?;Z=o?;ZFu@;Q7m(1C.BVR5QijR@-&51BABo r%eR4!&68c.0),o1\q%OKE(Z-!giudJ,~> JcE^hrrPNrVloh!;ld#BKuOs l37*NrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[rr4"3dG=#/pMb"fTYh!!&Jdbl7YHR`rMH!4)OH!Q>-;!!*,8rlkBB!1Nl1 rr<%frQG;]!rDs)!PcX,b08)K!!'.ubU=e<(;nA?b)4Ee!!&J3b5hU#b_Z<"\&QY9^Qnj"Z-34K QH[RH!!^C@bQXrhbQ%X3J^!6""t-Fpbf0XnJ^!?%rDNC6rDJ3j]$(H:"4RfEZ7rQG;L!;jtD 'S=QQV$W[9q>UJTs7Yj^YQ4WP~> q>Z$'fAHIW3'8uQ4C4GD3A[%j 4u5!:R>s-'1Bg6(1RXXpJMZCD"p?S81FrM\`A==6rDNC6rDKTUJJs7YRVQiR)8~> JcE^hrr<]O?Wn$A)ZTe2!!uV-1'mp[!!#Rgs8N'&8H8Gb!.4YD"5Nq[o)AXj1B9B5s8N'!8H&Sg !!!u;?Nb6%!!MllrsLU_2u*FY6[]1%mF(##88G)uopl?[_oJ!!uV-1'mp[!!#Q@s5j7bknMbJSdG22s+/D)b`_u1ci=2J+ok%/rrMZjqu6iS#fl^K 1R.n?NW8_?!jD\'J,~> q>Z$:fCJ[[rr<]n9LAm^1NW8_?!jD\'J,~> q>Z$'fAH>s2OFAuAR@-8;1]NjH4u5s%R5k+#$%85%1c$pEQC1/?1]NjC 55d;;R/hI1Et_#kR>s*[1GkDc6qWl+G]f7=L,Ac`0i"%&N-'H5:bsnqR6ED_PaR>RR$j@%I#>s2OFAuAR@-6i1Z^Cr(`"hZ$4b!1J]t[KOu!;iR>lBWR7R63!?(t81Be=! 0Im5RS2:!@!JCFGjoUnMrI=~> JcE^hr;[E1'N3ffs8%-i"UHYus8N'!8H&Sg!!Ppnp](;@r;QhF!#Y\7!k/.;rr;uu!(d(gqZ$^6 HN4o]rsH48$iPoJ'a"h*[e]qWq1gR.#VhA>rr<$is8VLN"%%#s+/D)b`Vo/ZS;Y!C]=83!V-6erreu5#"S6KrrJ,Zp?i!d!<%E~> q>Z$:fCJ[[r;[E2(/i/rbe[-j!X^Jnbfg%eRf1J1!!Sh8^An8>r6,3]!&"5o!^?YtrlkBB!1Nl1 qZ$^F)ZVMhbR-Q7'$4N2$ipf#YPHBr_,qTY$8RRabQ%X3bfm(1![`p-!4T-e&HW+[Fj/'a('+DC be[-j!X^Jnbfg%eRXr]DbQMu""Z!B7b^musbQMr)!Z>nQbQ5'NqTK(M$j]YOSBUg/!KI-QmK0Tm rI=~> q>Z$'fAHc1:77M0r%eD;R99DD!fWOhr\OSB!'^?; qj@OaP*oGN1CB)/F?=GtQ'dYR3;G?a7!4TYOa95J1RXXp1G`-oQ@<50R5eN+PF.Sd:GXe?P*hY. 1IQMOR#uhu1GbGe5(PNN1B\Hq!YI0*1P*c\b`O[aClk!<<;SHP)?BUi!tkV;)k/YZrrIcPp>uFD !<%E~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFL:J]r\hJ]r\hJ]uZgq>UJTs7Yj^YQ4WP~> q>Z$'fAD-8JMVj5JMVj5JMYh4q>UJJs7YRVQiR)8~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> q>Z$:fCFLmJcC<$JcC<$JcF!p!KI-QmK0TmrI=~> q>Z$'fAD/ZJcC<$JcC<$JcF!p!JCFGjoUnMrI=~> q#>o5JXM(WJXM(WJXM(WXI8na!KI-QmK0TmrI=~> q#>mFJH16$JH16$JH16$X8r(r!KI-QmK0TmrI=~> q#>mFJH16$JH16$JH16$X8r(r!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> p&>$eq#CdEs8U_P('>ImqZ$?d!!",?rr[NH!(?ec!Z(hpK)ZAX;BQ,J/Z&LIqGJF>#;)eBrs*<> 1]RLSqtu$FJcGWI$2oT?%g+&Bs8VZe!!jns0DP&#YP-sn6cn6284YARK!Ds7M#P/rVm#-7M#P/rr3N* ;BQ,J/Z&LIqGJF>#;)e;rs&gK)n6cn6289+jrJ!BE"!a,UrrJ,Zp?i!d!<%E~> p&>$\q#Cdqs8TSs%g459rr;H_!!#[krrXbO!4;b*"9&K)Ne79Ao0jN"$9c`8s78Ys":@<4[!!p4:o0jN"$9c`7 rrq(I%15Yfl2Lm:3sG[)rVlj\qu?i2s8P7[!!p4:s4KsQ$:s90s-`liJ3*r8*<#m?J3*r8*<,sK o0jN"$9c`8s78Ys":@< p&>$)q#Cf6s8SHE$4&Ges8Tb-!!'V0rrWo7!9*qW"8`0#dt7T1brQI=&Q%ios33S;!YJ8qnc&h& !7:cGr;6JEs+14IrsA"#,mO`FjT#76qZ$^Ks8O#8!!)'Xrr]>*!"e,h!#kb8#iks03YDK+;!e2] "gp;q&Rb:rrrd3n!s!B?rruFD!<%E~> p&?0,?XHt:!'=OpLB"CV!^0Ti!%\*A?XHt:!'=OpLB%;uHs82g&nGjb70`V=+s6T_l#[RK2)ZThC!*oM1!5&71"T(Fa!"@id !aPe2ra-;Ms6L+b=qL`?s8Va5!$k#6$MO8p!Vk:>rrahV('#HTrrQI+>lJ(6]Dqn:!*oM1$+p61 *WRHT!"/FNs-irj.g?ah+8u3B.g?ah+9)9NljHBg&HE+:s6L+b=qL`?p\t9hfCo4^ljHBg&HE+: s7IE5,Xqb@pAaX_,$-K!"4bZr!KI-QmK0TmrI=~> p&?/s?XH_3!*(Q^)s82g&huGK9(B=[4s3L[O#@%6/5l^j#!<$7)n,E=iob7B+)WC\s (BFD@'(>kL(K499!"o82jp(lL0E;meq#:B\fCf.H$P*FA9E"kk(BFD@"RlBj(BFD@$1IoV#66n@ !#GNas-irj$P*FA9E"kn$P*FA9E+r%dhbq^"99&6s3hc_Fo#5-7@!KI-QmK0TmrI=~> p&?/)?XG8_!*`f;l2O0P$<04j!2TXb?XG8_!*`f;l2Ud-rVur9rr3)'!!)D o)AgO!!1sUrs@Wa".T>jf`2&Zrr3)[!!1sSrrcX.&-*:@rr_Hb!5O3d&,H,&s4./Ps8Vols8UXM "76$h1B9mqs+14Irs.o!s8V`l!.FeF#KZrJ])Va:"oA6&rb2I.!$1)!!r`N1qu76'qu?]I!!E9$ RK+0&q>^MAq#:B=!;6?pbPa@"5Q:ZarX&i+rrW0,"oJ<)RK+0&q>^MAJcD2="O$a&!'gG^"O$a& !'gJ_&,H,&s4./Ps8Vols8UXM"8DfrbQ.A:)>X10s4./Ps8SMf(]F11!.+\3[f?C#!!%GlrrJ,Z p?i!d!<%E~> o)Ag$!!2inrs>t2"j6lFV#UP`rr3)0!!2imrrrBA!$qUirr3)C!!)M?rt"Pss8SDc#64_krr<"b !!_fi!Y#.=JcC<$qu?]Bs8N2a!!(sTrs+/V"mu?f!t4u*"oL(Z'*(M]rrW*#$iBr8mf*7dQN.6i s#L->s7?9kht[3PGQ@I;"od-R%KNC*rrW*#$iBr*qu[?(rs(Rb3 o)Ae]!!3#srs<9;'C,Vt<<*-qrr3'i!!3#rrrr9.!"Aphrr3(#!!)hHrrD$WrrkC_(B=Enrr3$[ !#Fr$!X8YaJcC<$qu6nik5YIT!!)Qers(Rb'_hXt!\F3J"nE?F#lqKprrV]l/GoGIiVric3<0ip rtk`ls3L`GnbE+b0*(_G"oIuFD!<%E~> o)Ad.!!iK&!_`SJrr3)u!!#gorrU%;#Q4T*i;a#$!!`H&!m1KGJcG]K!ic5Kqu6_t!%@^D%-(8$ !t-Z9s6BXeqssXb&24(LA/YRnNW9%=;\]BB/;SlWM>m\A!!1(;rs\Z9!'^G_oDf)6B9rMqrrnbj F[?'kir95T!![@SQMp^\%&s:Us8O#<7K<;d!)!%d!R(Q9rr`,u!.=eG)>!n5DeGC7s8V]k#&e.? rVum:!(Hqd!!#WBs-`lhqZ$VDr;Qlr!!%ECrrT2#./X#GWW4IArrL=Do)B,u!%@mI)ZW>,r;Zgi r;Ql_!!1'`rrJ,Zp?i!d!<%E~> o)Abs!"]&.!YYQ]rr3)r!!(=DrrQI+&,cG2Z2b3F!"Jr-!ce8HJcG]K!abq4qu6_)!*oC#%),"; !Y@3As3L`Mrom[s!!2WgrsS5u!/LUSk5Ys)CT@@5"^;#6 &-/HarrqQc%;9OWqYpt2!*oR(#6;@8q#CE9q#:A>!;-9np&G*Nrr3/b!"EUWWrE#%k5Ys)CT@C6 #6t7?s7lWpaFXAZrr_rp!9!eT"82]pi;3HT?N=@.rrQO->ke7!GQ@=7$ss!>s8N<(])VR+!6G*< "2t6@n]h(7NW8_?!jD\'J,~> o)Ab;!'U>]"8rN+aSu2Aj8]2Frr3$G!'U8["^M*R8cUdKrrObP+G'RkrrOJHWr)et,ljtArsYAP $3V,.n,HYn)?5Tl!"dBSYX&a)5huD>Rkb o)AcH!##;2"7uQnW;cf!rVupqrr3%T!##81%/rZq3qE=Oh>dMA!"OS[#63(X70-'Trr3/L?UXug pA=k7q@EWB>>H-!s3(HQs6`nf!af;rjUMA_;?-d/q@EWB>>H-!JcCW-"8+PP.fB;NNW9IZs8V-W !!tI]s24n&quQkFir9#=qu?^Qrr3MV?UXugpAb-p!'UA%W s5X"W$8__^!rtLah#IFYJcD/<"7Q9jg\h'Rn,NICrVm&K?UXugpAY'qd9f o)Ab7!%@jH"6TXalMgecqu?`Crr3$C!%@gG%/^\;LZAF8p](7@!$6^k#60Ba2?A""rr3.U?T%q. rVQU>oE5.K>t,7as*4Sds49jC"CGNk]EAC:7Kt,7aJcCW-"6C!m@/U$/5QD]#s8Tb0 !"!H@s+p`)pAk9Oir9"kqu?_4rr3L_?T%q.rVuit!2BLr!!(RErrI?Eo`#$N!!)cmrrB_0!!@$: s1J70$>]\@! o)Ab%!1Eid".K8jpAY'on,NIRrr3$1!1Efc%.XZ(c]8&+r;Zd0!.BFu"oiOI+TnJ;rrd:H+TnJ8 s!,hk!(0sQ"nVaI!.Os-)upIU?grXK'j3*g$i&$L!(0sQ"nRhqq#LKLs'#I'm.gS]0*(YE"*aeGqu6Tq8c/Pj[f?A! qu@)4s7lZqgAb@W!:5::RK!A6!!)oorr[KG!;l`p"E7Wi"/>bo"E7Wi"/>Mh!A=HGrss'S+TnJ= s7lZqgAb@W!:9[a"2"j=Vp,/AKE(Z-!giudJ,~> o)Ab@!%e-L"6ojdo)AXko`+u`rr3$L!%e*K%+kO`kPP;[K`D'1!$[!o!WR6?!!*5rVus% _#+-Vo`+tm_=[a%s-E^4s8U@E%0-A+/cZ\p?N:("o`+tm_=[a%JcCZ."Q1U,-h[H<"6]^cN;ihf k.:*UGQ7jGj9-M%nGiUEir95F](,H$O"9Fs)J)B<"As/\,64$!!'G%rrUmS#Q=Z? k.:*UGQ7jGs5po_olpH=s8R*>"B5m3!4ROZRK!?B!!iE$!nmVZr;QbUG9rW! o)Aau!-%r;"3plHr;Q]ukPtVHrr3$,!-%o:%%.)'q=ajhirB#f!)nIK!WO/=!!*Aprr2sE#uh$-!:GF]!"So+!h]N'r;Qa:rVus)nG`Ff*<#p=#k7]j q#CE^q>UF7rW!<3nGiM6!!uU-!!)Hdrrfn@!)id>rrJ,Zp?i!d!<%E~> o)Aap!6P6?"&Jstrr2p"S,`Q^rr3$'!6P3>$qC:KrS7GRo)J^o!5F*b!WNW.!!+2;rr2s-rVus@ q>:19S,`PYf)G1=rt5=Ls8OeRD#aP$"oqM->6"ZeS,`PYf)G/is,-gZOp(i!#trb!J^W&!!3#Wrs#4KqqN"g)ufj;%K6>8+8Ps:&-*nG!WW5pqu?Hl!;H9g!^-NFrVmb0 f)+5>!#tt1-e !!)chrr oD\ph!!#gorr_Kc!9=(Y$-*#PrVuoo!!#gorselX!"3.@#67-kqZ$U^JcGcM"T?UG!)3@k"T?UG !)37h&sa.1!!Qs6s"XRKs8SYj+TMK1q>^bGs-=8t!!Qqbs,6m[Y6=ntqu-Nsr^d)7q>Ul]!!N=b !(:0p!!6NEhu'!!7CTA!kA:Dq>UNS!!N3!$fD!f s8Vdl#81)<%"\GGrrT_2')V\1\H!9>rri;G!!#^krri;G!!#^hs8H@+9E>'!!7CTA%K4QP!)3Fm p/D80 oD\pa!!(";rr^OH!;ZWo!d4PWrr3)l!!(";rsec3!#o9P!W]V-o`+upJcGcM"T#M+!6kEA"T#M+ !6k<>&o@gQ!"=hdrsSnCs8OVM:B1@Kq>^cXs(qr?!"=g;s,6m[K`V6rrr)j!r"K-4q>Ul/!!rTN !*NZ"!!?TuhuUN%!!rK%$aKa< s8V:D"s8H@+/HGcW!;-'d%JmI4!6kKC kW/he=9'<>rre#W!-J4`rrJ,ZornGsrI=~> oD\p9!!)3]rrZ$s!;uir!\OIIrr3)D!!)3]rse#m!(C7%!>p!58F4C\e#9nbu8c!!""UJcC]/"T;R+!208i"7QTsVYU6#6NA2- &HH'C)ZU:Rq;;2R6NA2+rseXY!!)9`s1Ti`.j4n(qZ$P%!>5D3?NBrtrrO5AR/-a`6NA2)rsM0o *rl8S-NkqC!+g`]R/[4/!15D3?NBrtrtP-`!!)9` s1Ti`.j4n(s8W%&!a[rI=~> oD\p]!!&_lrsAE$!*0(!m1fV8rr3)h!!&_lrrC4 oD\pI!!)9_rsA#m!3#qtcijEUrr3)T!!)9_rr@QF!!Q^/h#IH7K)Yi>arAO^6s6]gc"5a(YjS]#[pa-!Up\t8=!;-9m)?=aUs8V3\rs\ib !&afAZ2ZP`5rr`$C!5F*bR/[4+!-%i8!ZD&Xrr2ucrr3/Z!!)*[mJd+fhZ*Z;p\t8=!;HKn mJd+fhZ*Z;r;R)u-31g\peLkmTum<7NUm,MrI=~> oD\o1!!)]krs>q2!8IPRUB:MTrr3(^u s8Vg/!1*WgqZ$X&rT*tbWqHDlpD*aps7lTn"fq\(oDedgrr_3k!9X%U!A=HFrrNT/ao;;QWqHDl pD*aps/Pbls7[9/QN-p_rr_3k!9Sk4R/[3r!6P- oD\pE!!;fkrs,1s!CKco!(["f$.f.Yo`+sf)?#c:;+ohKF 10RZm!$V4=,#9C]?7u9ks6Tdgq>^I2!#&_2q%>Q>#s%ah;?7u9kJcC`0"2Y$<'E2>CY5eOs 'ED>8rs-gN2I&WVogYQ)lL2I&#\<>>KW s8<-W>#c:;+nkp:bQ.G<(B"Fm>#c:;+ohT3(fa`a!([(h_>jQLra,Z.bl7[&o`"plrI=~> oD\o[!!E2urs)d/"&_ep!.4\E$((\prVuoi#6;(/rs*9=,6*r/!*]A/!9f4<&GZGm>tkJ&9)n\i 5$^kd!)!+f+qu_5>SR5fs4%)Rrr?:bZortI.h>SR5fJcC`0"'km,0`GD`m/R+S "TYJ!rs*uT6X;)?$0D*b!YbWrir9jE"%-?B!"%c_"?p*c"TV0ps5#5/<=f.VpAY/`, !((&-s*b&;>po[Zjo9c36X;)?$0D3D.U#g`!.'4rRf=Q%?XEp96=7M-nm>`,!((&-q#ile9a(Mh s7ld]>tkJ&9(r8cGQ@O=(AS(s>tkJ&9)nqJ.U#g`!.+\F>lXjYra,Zlbl7[&o`"plrI=~> oD\nR!"Al*rs'qP$!BCm!3uM&#s&%prr<#F!s%9Yrs("RNrM*>!+#S2!;2-I&EX?k?:"_oL]?KE 87"Ub!/LFN$4At#X&GDrsLqnra,[!bl7Zqo`"plrI=~> oD\m"!"8]("f=$[#W.nGrrTS.$i^/.[f?^-rr3,X!!`J.qZ$W2L]7q]9,Id:.0rs%7N 'ESnA`;KW;r^]D6ir9hM8e_=>9uR)-9,Id:.Q@]((rrD<\!!6m7l2(GmC&(C=":$B#pAaq](^('mGkUk2!R(Q=rt"ou (^('mGkV1;k:?iG1m\.@!/(1L! oD\kW!#PS5#6'?&!tIZ,r;Qg`!#PY7"(VBCrVlg"XoJq24So*Yn;%#TnN@Kd$8dhBs7&5b!X^cF rVQU&r_agB""p+Gts$?];r;Qtq 4:MB2@-.=d"8tVTiSskRU-&ke)IV\,nN@Kd$8dhBs8U"\!t[o/p&>&;!;HKnbPM8Wf`.[.%0IMV jo>@T4:MB2@-.Fg`$#3o7C@^HRK!91qZ$]Ms3(9>&_QV:&crCsO8]+K4V@f'1lqV/rrI?Eq#:lp 4V@f'1lqV8s26&_&4O#+rr=2>!!*,obl7^'s7Yj^YQ4WP~> oD\k2!+,U'#5N$O!Yn\er;Qg;!+,[)""+(8rr2p#5l`eB)Z'L7pkSk\_D2Q%%mmAss2$N#!Y7W! rql^'qaMG+"t+lrs"XS#rr3[:#64c!s-Y;=#UjH^qaMG+"t+lrJcC`0!"\u-"p+W$ru1rZr;QtS 0*qh0G4ke5"8"uKo&BZcKJ*W9-?f(^_D2Q%%mmAss8R<[!Ynbdp&>%G!;HKn=8Mt8mf.qn#mM`" p&G&F0*qh0G4kn8GS^Dr JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>"-*?KmeQq`mK0TmrI=~> JcC<$JcC<$JcC<$JcD5>"-*?KmeQq`mK0TmrI=~> JcC<$JcC<$JcC<$JcD5>",$X9k5#)XjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Ymed(amK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Ymed(amK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFOk555YjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Xmf!4bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-Xmf!4bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFNk5GAZjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-WmJm7bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-WmJm7bmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFMjo>DZjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!KI-QmK0TmrI=~> JcC<$JcC<$JcC<$JcD5>!JCFGjoUnMrI=~> JcC<$JcC<$JcC<$JcD5>!KI-PYQ4b&J,~> JcC<$JcC<$JcC<$JcD5>!KI-PYQ4b&J,~> JcC<$JcC<$JcC<$JcD5>!JCFFQiR3cJ,~> JcC<$JcC<$JcC<$JcD5>!0-RM!<%E~> JcC<$JcC<$JcC<$JcD5>!0-RM!<%E~> JcC<$JcC<$JcC<$JcD5>!/'kC!<%E~> JcC<$JcC<$JcC<$JcD5>nbmt~> JcC<$JcC<$JcC<$JcD5>nbmt~> JcC<$JcC<$JcC<$JcD5>nbmt~> JZs^0JZs^0JZs^0J["OG!<8^rJ,~> JZs^0JZs^0JZs^0J["OG!<8^rJ,~> JXD"UJXD"UJXD"UJXGhl!<8^ZJ,~> !3h"SJH16$JH16$L&_8SY^lf@!<<*!Yi>]as01M`!WTCa!!*%L~> !3h"SJH16$JH16$L&_8SY^lf@!<<*!Yi>]as01M`!WTCa!!*%L~> !18<;JH16$JH16$L&_8SR"58(!<<*!R,\/Is-VgH!WSPI!!*%L~> !O)QTmXaeWmXaeWmYC33s0)KSmeuPSkiq^,s8W,'!!)*J!roJ)o^2bDl1= !O)QTmXaeWmXaeWmYC33s0)KSmeuPSkiq^,s8W,'!!)*J!roJ)o^2bDl1= !LNk !O)QTmXaeWmXaeWmYC33s0)KSmeuPSe\^qGs8W,'!!)*J!roJ)o^2b1_Xm0ss0)LamK!9;~> !O)QTmXaeWmXaeWmYC33s0)KSmeuPSeAChFs8W,'!!)*J!roJ)o^2b0_Xm0ss0)LamK!9;~> !LNk%cs-NfIjoGF3~> !O)QTmXaeWmXaeWmYC33s0)KSmKi7EmI&K4md9$-mf3=eYQ+[rmKD@?R'kfDmK3Em!;Gmdkj@ff [dNPBp?i"^YQ3bP!<7Q~> !O)QTmXaeWmXaeWmYC33s0)KSmKi7EmI&6,md9$-mf3=eYQ+[rmKD@@R^V)GmK3Em!;Gmdkj@f_ [I3GAp?i"^YQ3bP!<7Q~> !LNkuGVQiQ40!<7Q~> !O)QTmXaeWmXaeWmYC33s0)KVmLSL+mdAlVo]`IKik+XHh !O)QTmXaeWmXaeWmYC33s0)KVmLSL+mdAfRo?O-%gq3"Bh7o^2_ZJ,~> !LNkjq$=dk2rUrQ:4K7F.MIUal3*Ys8W+d!!)cU#hbN2a4e:^\`EMI !rnVfqrSFG_rg*[KpG/$Queh\k/lTYjoYRM!;5IVaJH6!o]?/RJ,~> !O)QTmXaeWmXaeWmYC33s0)KVmLSQ]]BT"!cGYUjW6XqeOR)c2s8W,'!!)f^$J1H=[AL"6^27Sd q!J4`YQ4Rg&*^(*l1MU4`/<*DcLKVMlh^#Ns0)LtmKUY!Pg$L`\Fo7is*t~> !O)QTmXaeWmXaeWmYC33s0)KVmLSQY[-I.R\"%NPP0`[DO6cZ1s8W,'!!)f^$J:TD\>laD_/O4n q!J4`YQ4Rg&*]ptlL:IUS9)?+cgf;Alh^#Ns0)LtmKU\#Qd3'k\Fo7is*t~> !LNkjq$F)JAlji74'3B.s8@HLZA6ns8W+d!!)fV$IP6H]s5#[`-cO( puVYXQiR$G&)i4m`Hs=.-6bW(Fgu[Oj8.m>s-Nf\jp&YiRa8X#ZM!>[s*t~> !O)QTmXaeWmXaeWmYC33s0)KUmLAF2gr## !O)QTmXaeWmXaeWmYC33s0)KUmLAEp]ru$^ENQ?Z`RJqeq !LNk !O)S#mKES7-6tI1JaS*WJaS*WJaScj!roJ)p?hq]&H;)!N<%W%mKGi2md:)-o^3"$4 !O)S#mKES9-6kjYJaS*WJaS*WJaScj!roJ)p?hq],l[350EC>-mKGi?md:)=o^3!V/L)H6iU-^0 md:)Ukjn-KX!Au9U@.Gn)]XS2mKK16,9fk@qsG$_g$I^K;k^n\fY3)rN5b5NqX4C`s0)J'qX+mK ^R2L=TSf_8A"qGbK!!#hmK3Em!;u6rmFgjcJ5`/Th:TGrLlB=@lh^#Ns0)M!mL7$l\APbP^VcIP 7;hJfmK!9;~> !LNl`jok`0,p6"&J`_OGJ`_OGJ``3Z!rnVfp>uAUG5gV*'EI4bjomm/k2l[)o]?F*+X/%:iT:.$ mcFNMjRVF?INB^fa6)M^+<[uhjop&S+s::PqrSIOc-gqY.s.?9kLF2n-[4J-qW@hXs-NcdqW8=< \t-ULWKj`]E3%U/L8r)ejoYRM!;tsjjiu5#*%Q-%g?7"!-ms5riqhd=s-Nf^jp]%h]uI[d_T&9l ;f:[ljoGF3~> !O)S#mKN[DmdA=[Ck;#*mXaeWmXaekmK3Em!;>gc!*cu$l4jmK3Em!;Z$mPc_g6U7oP^ ?`L,NR+gm'mK!9;~> !O)S#mKN[Tmd@V!Xb#nkmXaeWmXaekmK3Em!;>gc!#snbjr+6`o'QY]kjIj=kk4?MVB=7Sm]G", !9ik=! !LNl`jothHk2r*>c@P,/k(2ZGk(2Z[joYRM!;>O[!"\&N_H[*%o&^)UjQ>S)jRqXA@8#A;jGhmU !9ES1!uT+($=Xe9AAUiNS=6k&#EGm0ZO.K]V`p8==?a^]_^djs8SGd!;kmj \W*;nZcSqYToZY@f!4RZs4t>bbiW"U8TVQ@joYRM!;YaeQFb8VYH5p6 F18W7Q.+djjoGF3~> !O)S#mK!=?rpCTU%.u fZ,6)mcb;9q !O)S#mK!=OrpCT8)=HqB0I&:%md'q)/ej]@mcRb#,cK,pV"/5l`/Uk5a_$=75M;$L.KV!>WfTmKrsXmaNp80\,UT!<2Bs!9iju,URC/ k_E7-mc4`>q !LNl`joGJCroP#)@HQ^J+Npuk.2\rq;r.jf]JYBk2oD[*inGc$J>"5%Z2H,bHo7;TX*RA62/o9!rnVfr8nXMQ]JDW_68EDRXMp0 d_MN;K]2jk!<7Q~> !O)S#mK!=?rpCTf!q,Jn:[Z45md:'RmbS-8mZ(uKm`Z2mmXaeWmXaeWm]5aWs0)LsmNMY[(%-%N !8-^V:[Z45md:b%md8TnmJto-mJto*(Y.ri-2d04m/u;DmKrsHmVPbf`XhM(!<2Br!8-^W:[Z4& f]s@(m_L4EmKD)^+V')"mK2bXi:lXQkM5=jZ_b"Ym-Nu>I#t>_^6[+0r9jUbs0)J'r9b3QFJ$gK J6e#gf$L(%8mHgTFF*lQ!roJ)rU(?^h!+:6V6e_=m-1[#OK%$LQI"gnmK3Em!;u6tZ'D !O)S#mK!=OrpCTa"Rb\%R-p=dmd'q>m`,\&mQdH5m]%F]mXaeWmXaeWm]5aWs0)LsmNMYh)"&O* !9ihpR-p=dmd:8:md00*mJuJ=mJuJ6$g@#*?Ms3mliHGLmKrsXmNS%dQm;%_!<2Br!9ihqR-p=A kiW?;mX&:8mKBa$,7(7EmK2_UlhBf\kM54ZN.84cmHs2BI?LYi^m<=2r9jUbs0)J'r9b3QGG3BW L16.uf$U@2:LJihH$fJW!roJ)rU(?^gudUTJ$deomHUm'P,mQWQI"gnmK3Em!;u6tZCA#0VU)>\ T$Ys6`/pVBSm0/2mK!9;~> !LNl`joGJCroP$5%d)m`^ZJ7*k2-0Pk(>,Fjr(hok%eR[k(2ZGk(2ZGk,[VGs-Nf[jrsfBG+;i8tjoX<=jnImBi6/65*]gshrpC')Mke)Wb(mspr9"%Zs-Ncdr8nXBIB(eq O`HiFf@-pK?#>^HK6mIX!rnVfrT4@CbH5:r3kX8ImKgI`UVQBALW/6MjoYRM!;tslYbnkFY1'b( Vpj/EaI&mYW+NdAjoGF3~> !O)S#mK!=?rpCHb!q,FZg$\2-jmE,umd:)0mKt3<,QIjrmXaeWmXaeWm]5aWs0)LsmNMY`O,FV< !8-ZBg$\2-jmI[FH*-H$mJto-mJto-WC$#1V#9W^m/u;DmKrsHm0222liH57!<2Br!8-]Dg$\2, f^>_*mPUg8mKADMkI2T1mK2bXi:lXQeuG(+Kt-X>b.ZTdNIQQ4iP9Kdr9jUbs0)J'qsG&tDd@': 7R2H'HV6pn;Fk%YT)A!Xs0)M%mM"0OQ^`]=nEnB3gtds>K%T%tEnL4[9Qti#B>=B4!<7Q~> !O)S#mK!=OrpCE\"RbUWl0dd:m-F`9md:)>li[54!@%YsmXaeWmXaeWm]5aWs0)LsmLoTa0utU- !9ibMl0dd:m-[J2KXq*M$NTDYmJuJ=;jcn]h#-RAliHGLmKrsXliHA=klL/7!<2Br!9ibNl0dd9 kjDB:ljhhGmK?.HlB=d8mK2_UlhBf\eu+F^Ha`G3c+VriNI?E4jMGrir9jUbs0)J'qsG&uK4B6k K%f;&EnL !LNl`joGJCroOj/%d)OIjQ=emjkg'uk2QI&hZEd%!?_Psk(2ZGk(2ZGk,[VGs-Nf[jq@aU'qTR1 !9Do9jQ=emjlRmdM8B2R$NT8MjoFK)+NE7Dhu)UCFR/H(Js-NfbjqH!s;Gh2;n*f)ZioR))OPB6SD:/:D!rnVfr8nWUXN/GSMi,p; gs2C3@#9kmEObr/!<7Q~> !O)S#mK!=?rpCHQ%.]+jpT`Q q!J@R"6An;!TX%E!EFF]X2k2r9jUbs0)J'qsG$F??q*7A8Gb4Ddd$j Ci='fqsFOcYQ4Rg&Wk;Yl0@-Gd-\HPe#/PF[!'prmK3Em!;u6td"$7R9KYL[H?sg/5XA@H>(><) mK!9;~> !O)S#mK!=OrpCH5)=Hhll0dd:m-F`;md:)=liZF%mXaeWmXaeWm\fISs0)LsmNDSo\0Ig;!9ibM l0dd:m-a;bQV]m6mJuJ=mJuJ=g(h"EqX+A!bPU]H!9ibMl0dd:m-+NklBr8g(h"E q!J@P!UT7?!UKUM!>WfNmLbT2bNeEPajKOg[*tq?^U8:7r9jUbs0)J'qsG$KL4#,'M0"Q3HtIhF G]\eAqsFOcYQ4Rg&WtSdlKdENdI+WRe#/SJ[_(T, mK!9;~> !LNl`joGJCroOl%@clGHjQ=hnjkg("k2l[)h#l\gk(2ZGk(2ZGk,7>Cs-Nf[jrj`cu^"d/`7iQV^e1 puVe7!TiIu"6KCA!=IKPjq3^5eEuVghq[YFa5OLt`lihSr9"%Zs-NcdqrSICNdHq0O*$PAHtn=Q H$POIqrRt[QiR$G&Wkr#mHj/rh!WJ.iO>>sbC7Y4joYRM!;tslaaf%g=A)A7N/3*h;Gq+6@"$Q& joGF3~> !O)S#mMl5ZmdAFaC[UV.<:7j=md:)4md:)-mYNRWmd7`>mXaeWmXaeWm]5aWs0)LsmNDS_m=3OO !8-^W<:7j=md@IMmc4KGr9a_@H1'8gmJ?5Td1*\Tm`C%WmLn6DYgV7S_lUGZW8mL9_R>E4T)A$Vs8T;' !;l0qb>t./W_^*kX2(9,U;N=(htugCs0)M$mLn6DYgV7S_lUGZW8mL9_R>E4T)A!Xs0)M"mLQ3p _QKo!<7Q~> !O)S#mMl5jmd@_%XmYU%T'i'mmd'r=md:)=mQP:Mmd.30mXaeWmXaeWm]5aWs0)LsmNDSol@8!b !9ihqT'i'mmd/!^maMI/mKMVRr9a[q\F-d5qc4I->e6E6_6%:N`Mmb4qsFOcYQ4Uh'&&k\dbWKpXh;3Bj7DZT[uS"jr9aXdYQ4Of&$f9R YF3V*>d^kuVP%JIk54QHs*t~> !LNl`jr=B^k2r3BcK=7!_ra^/k2-1#k2l[)jqs3Ak1mk*k(2ZGk(2ZGk,[VGs-Nf[jrj`cfR)Z@ !9E8P_ra^/k2+GHk+3COjoaT)joFK)jq.mHqW9#09AAUkNn`[rjQ6rik"][RjosB!=TIOF%`7@( !9E;)&I?e`joJBArT4:F"jlCR/G\E4?VB/9k)S3njq?.6YgMOif#5kZ^#nkS`jhGWRf)=Js8SGd !;kmiem,,H[9g>0\%AqXY.q,XfDF\3s-Nfajq?.6YgMOif#5kZ^#nkS`jhGWRf):Ls-Nf_jq"^s ];h+7Rp !O)S#mKES7,pY=.rpCH\7NrtTmd:)4md:)-md#'=,U--;mXaeWmXaeWm]5aWs0)LsmK!=?rU(U) f^@fi+s-#!8-`-f*CO8mO,_0+X9+\mJto-j@1=9Wp];u+=ULpf^@`\+A)Xd mdA[3kjIm)#3YpP"P#4O)M7bP"hm#@,SG_gTs8T;'!;u6r k,l"9@C)h_QuRqoR;e4q[efCns0)M$mLmOQb1OSk_N;adiU5CEoAuL>SG_dVs0)M#mLJEmc/b## m(1@$P/6Ru`;/g$s*t~> !O)S#mKES9,pP^VrpCHL0I&:$md'r=md:)=mcRdp,U.#TmXaeWmXaeWm]5aWs0)LsmK!=OrU(U) kjHqS,;@X8lSp%7-(42hAf;rX!9ik=[1;U"mO+GR,9otCmJuJ=e1`+$eF)am'eY":kjHhC->NVF md@ImmI'E*$gml[!3H/E!3Gt`"e$qd,>R7qmLmOSbh9ts`K8*iipYXJoAuL@SG_gTs8T;'!;u6r ke"6uA@AD2S m(gd+Wkn,=`;/g$s*t~> !LNl`jok`0,Tok%roOlh+ !O)QTmXaeWmXaeWmYC33s0)LTmK&n:f^8d32?*"Eg,\-['"QcAl-mtbe*Z_e\XfYB[%20nr9jUb s0)J'r9b->8==RPAscn^Ckm8,B7kNlqX+FbYQ4Uh'"QcAl-mtbe*Z_e\XfYB[%20nr9aXdYQ4Rg% c(pMmA\+]GL#TSb2\#kq !O)QTmXaeWmXaeWmYC33s0)LTmK$(6f^8c8Jc>'<^P1Y7'"QiElIO=heEuhg]q2.I[%20nr9jUb s0)J'r9b-L@\/46IA;7NFcqZVEfZ7BqX+FbYQ4Uh'"QiElIO=heEuhg]q2.I[%20nr9aXdYQ4Rg% cr2imB+CfP0WHral],4q !LNk !O)QTmXaeWmXaeWmYC33s0)LVmK;Yt*8'!5"6^sLf\Gm,c,nqs]q;:ciU"jXQEdd*J#`D6s8W,' !!)rb&?/+Wm$LJJIGitA>i=G%AE"NkIKg%L@49:gA1.:s*t~> !O)QTmXaeWmXaeWmYC33s0)LVmK;Gn1$I?Z"6(O[khPS !LNkjo_q0:?:-k"1&tBjP8l0`lR6"dC[0^k4.K@ZH'u*KVeS.s8W+d !!)rZ&B@8njK_R`IG!,WAD#JHCYejL!rnVfr8nU2aQ2=-]>*gsn`.*aa2Z/QV>KBVs-Nf`jpp@W iS9(JiNqItK]_7#deW#*s*t~> !O)QTmXaeWmXaeWmYC33s0)KVmLZaKI"$K[RZN_tL4";lD4'>[mf3=eYQ+\$mKM(`md@s#rU'is \F/dj]_Usss0)M#mLZaKI"$K[RZN_tL4";lD4'>[mK3Em!;u6pm%0a8_g:aTNUF`2m_FAJmK!9;~> !O)QTmXaeWmXaeWmYC33s0)KVmLZaKH[^[mf3=eYQ+\$mKM(`mdA!$rU'is \F/dk]_Usss0)M#mLZaKH[^[mK3Em!;u6pmBiDObB`NoNUG#:maHd_mK!9;~> !LNkjq+Y4H[T^'APQiVBS(SMAWtjFk5YJ]QiI-ajoruJk2s@]rT49f ZKC;P[e]%es-Nf`jq+Y4H[T^'APQiVBS(SMAWtjFjoYRM!;tshjgpf@a`ZaeM<;s(k1>(WjoGF3~> !O)QTmXaeWmXaeWmYC33s0)KUmLAROm`jPSglUdQZfgc?q !O)QTmXaeWmXaeWmYC33s0)KUmLAROm`jPSd#.,?Zfgc?q !LNkC+X6/O$k..AajoGF3~> !O)QTmXaeWmXaeWmYC33s0)KSmeuPShNmd$s8W,'!!)*J!roJ)o^2b:QLjMGs0)LamK!9;~> !O)QTmXaeWmXaeWmYC33s0)KSmeuPSgQqI!s8W,'!!)*J!roJ)o^2b7QLjMGs0)LamK!9;~> !LNk !O)QTmXaeWmXaeWmYC33s0)KSmeuPSf#@7Ks8W,'!!)*J!roJ)o^2b2`UiL!s0)LamK!9;~> !O)QTmXaeWmXaeWmYC33s0)KSmeuPSf#@7Ks8W,'!!)*J!roJ)o^2b2`UiL!s0)LamK!9;~> !LNk !O)QTmXaeWmXaeWmYC33s0)KSmd9HBs8T;'!9EPLs0)LamK3Em!9EPJs*t~> !O)QTmXaeWmXaeWmYC33s0)KSmd9HBs8T;'!9EPLs0)LamK3Em!9EPJs*t~> !LNk !3h%SJcC<$JcC<$L&V.WJcG$8s01M_!3kJ_!3kJ_J,~> !3h%SJcC<$JcC<$L&V.WJcG$8s01M_!3kJ_!3kJ_J,~> !18?;JcC<$JcC<$L&V.?JcG$8s-VgG!1;dG!1;dGJ,~> %%EndData showpage %%Trailer end %%EOF %%EndDocument @endspecial 818 5384 a Fq(Figur)o(e)e(1.4:)28 b(The)19 b(initial)e(window)h(of)h(the)g(NorduGrid)g(monitoring)f(web)g(site.) 1831 5662 y Fz(14)p eop %%Page: 15 17 15 16 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 565 531 a Fz(The)26 b(web)g(server)f(that)h(pr)o (ovides)f(the)h(grid)g(monitoring)i(tool)f(r)o(uns)g(on)f(a)g(machine) 440 646 y(independent)d(fr)o(om)f(the)h(grid)g(itself.)g(Hence,)f(it)h (does)g(not)h(in)f(itself)g(incur)g(any)g(load)g(on)440 760 y(the)j(information)h(system.)g(However)-6 b(,)26 b(the)g(web)g(interface)f(r)o(efr)o(eshes)g(its)h(information)440 875 y(every)21 b(30)f(seconds)h(by)h(performing)f(LDAP)g(queries,)g (which)h(ultimately)g(does)f(bur)o(den)440 990 y(the)g(information)h (system.)440 1250 y Fp(1.2.3)99 b(Identi\002ed)24 b(Problems)440 1423 y Fz(A)c(closer)g(examination)g(of)g(the)g(Nor)o(duGrid)g(ARC)g (and)f(conversations)i(with)g(the)f(users)440 1537 y(r)o(eveals)27 b(a)i(number)f(of)h(issues.)g(The)g(pr)o(oblems)f(r)o(elate)g(both)h (to)g(the)g(ar)o(chitectur)o(e)e(and)440 1652 y(design)g(and)g(to)g (implementation-speci\002c)h(details.)e(Below)h(is)g(a)g(brief)f (description)h(of)440 1767 y(some)22 b(of)f(the)g(major)h(identi\002ed) f(pr)o(oblems.)g(W)-8 b(e)21 b(have)g(categorised)g(the)g(issues)h (accor)o(d-)440 1881 y(ing)k(to)f(two)g(of)g(the)g(central)g(desirable) f(pr)o(operties)g(for)g(a)h(grid)f(in)i(general,)e(r)o(obustness)440 1996 y(and)c(scalability)-9 b(.)440 2237 y Fv(Robustness)19 b(Issues)440 2410 y Fz(An)j(ar)o(chitectural)f(pr)o(oblem)h(is)h(that)f (the)h(hierar)o(chical)e(topology)j(of)e(the)h(index)f(servers)440 2524 y(is)i(not)g(r)o(obust)g(since)g(it)f(r)o(esults)h(in)g(single)g (points)h(of)e(failur)o(e.)f(When)i(r)o(equesting)g(infor)o(-)440 2639 y(mation)f(for)g(a)f(job)i(submission,)g(the)f(tr)o(ee)f(must)h (be)g(traversed)e(fr)o(om)h(the)h(r)o(oot)g(towar)o(ds)440 2753 y(the)i(leaves)f(so)i(if)f(a)f(higher)o(-level)g(server)h (crashes,)f(it)h(will)h(take)e(down)i(the)f(part)f(of)h(the)440 2868 y(information)k(system)g(below)g(it.)f(This)h(makes)f(some)h(r)o (esour)o(ces)e(disappear)f(fr)o(om)i(the)440 2983 y(grid)21 b(even)f(if)h(they)g(ar)o(e)e(perfectly)h(r)o(eachable)f(manually)-9 b(.)565 3097 y(The)26 b(pr)o(oblem)h(is)g(known)i(and)d(supposed)h(to)h (be)e(solved)h(by)g(having)h(a)e(r)o(eplicated)440 3212 y(fail-over)d(server)g(for)h(each)g(high-level)g(server)-6 b(,)23 b(but)h(this)h(is)g(r)o(eally)e(an)h(undesirable)f(so-)440 3326 y(lution)34 b(since)g(it)f(r)o(equir)o(es)f(twice)h(the)h(r)o (esour)o(ces)e(and)g(twice)i(the)f(maintenance.)g(It)g(is)440 3441 y(curr)o(ently)20 b(not)i(done)f(in)g(Nor)o(duGrid)f(either)-6 b(,)20 b(pr)o(obably)g(for)h(this)g(r)o(eason.)565 3555 y(Furthermor)o(e,)15 b(the)h(client-server)f(job)h(submission)i(ar)o (chitectur)o(e)c(wher)o(e)h(a)g(user)h(sub-)440 3670 y(mit)g(his)h(job)f(dir)o(ectly)f(to)h(the)g(grid)g(manager)f(at)g(a)h (r)o(esour)o(ce)e(makes)i(the)g(r)o(esour)o(ce)e(a)i(single)440 3785 y(point)24 b(of)g(failur)o(e.)d(If)j(the)f(r)o(esour)o(ce)f (crashes,)h(then)h(the)g(job)g(has)f(disappear)o(ed)e(fr)o(om)i(the)440 3899 y(grid)e(and)f(has)h(to)g(be)f(r)o(esubmitted)g(by)h(the)g(user)-6 b(.)565 4014 y(A)19 b(r)o(elated)e(pr)o(oblem)i(is)h(that)f(the)h (storage)f(destination)h(for)f(the)h(output)g(of)f(a)g(job)h(also)440 4128 y(is)e(contacted)f(in)h(a)f(client-server)g(manner)-6 b(,)17 b(so)h(if)g(the)f(destination)h(server)f(has)h(failed,)e(the)440 4243 y(output)23 b(may)f(be)g(lost)g(because)g(the)g(grid)g(manager)f (does)h(not)h(have)f(r)o(oom)g(for)g(the)g(data)440 4357 y(locally)g(and)g(cannot)g(send)g(the)g(r)o(esults)g(elsewher)o(e.)f (This)i(means)f(a)f(successful)h(job)h(r)o(un)440 4472 y(that)e(may)f(have)h(taken)f(hours)i(to)f(pr)o(ocess)f(is)h(lost,)h (and)e(the)h(job)g(must)h(be)e(r)o(esubmitted.)565 4587 y(Ther)o(e)g(ar)o(e)g(also)i(some)g(pr)o(oblems)g(with)g(the)g (engineering)g(of)g(the)f(implementation.)440 4701 y(The)i(appr)o(oach) f(of)i(r)o(eusing)f(pieces)g(of)g(existing)h(middlewar)o(e)e(r)o (esults)h(in)h(a)f(lar)o(ge)f(inco-)440 4816 y(her)o(ent)g(system)h (consisting)h(of)f(a)f(lot)h(of)f(distributed)g(subsystems)i(that)e(ar) o(e)f(dif)o(\002cult)h(to)440 4930 y(understand.)e(The)h(plethora)f(of) h(pr)o(ogramming)g(languages)g(used)f(does)h(not)g(help.)1831 5662 y(15)p eop %%Page: 16 18 16 17 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fv(Scalability)17 b(Issues)440 704 y Fz(Ther)o(e)24 b(ar)o(e)f(two)i(inher)o(ent)g(scalability)f (issues)i(with)f(the)g(hierar)o(chical)e(str)o(uctur)o(e)h(of)h(the)440 819 y(information)17 b(system.)f(One)g(pr)o(oblem)g(is)g(contention)h (at)e(the)h(tr)o(ee)f(r)o(oot)h(\226)f(since)h(all)g(queries)440 933 y(visits)23 b(the)f(r)o(oot,)g(it)h(will)g(become)f(a)g(hot)h(spot) g(when)g(the)f(number)g(of)h(users)f(gr)o(ow)-8 b(.)22 b(DNS)440 1048 y(has)f(the)g(same)f(pr)o(oblem,)g(even)h(though)h(it)f (utilises)g(an)g(aggr)o(essive)f(caching)h(scheme.)565 1163 y(The)31 b(other)g(pr)o(oblem)g(is)h(that)f(scheduling)h(a)f(job)h (involves)g(traversing)f(all)g(nodes)440 1277 y(in)24 b(the)f(information)i(system,)f(including)g(all)f(leaf)g(nodes.)g(W)-5 b(ith)25 b(many)f(r)o(esour)o(ces,)e(this)440 1392 y(becomes)j(too)h (costly)g(and)e(ther)o(e)h(is)g(no)h(facility)f(in)g(Nor)o(duGrid)g (ARC)g(for)f(supporting)440 1506 y(other)d(means)g(of)g(scheduling.)565 1621 y(Even)26 b(with)i(the)f(curr)o(ent)f(number)h(of)f(r)o(esour)o (ces,)g(it)h(means)g(that)f(the)h(latency)g(of)g(a)440 1735 y(scheduling)j(operation)g(is)g(at)f(least)g(the)g(latency)h(of)f (the)h(slowest)g(traversal)e(fr)o(om)h(the)440 1850 y(r)o(oot)22 b(to)h(a)e(leaf)h(node.)g(A)f(slow)i(r)o(esour)o(ce)e(thus)i(dominates) f(all)g(scheduling)h(operations.)440 1965 y(Combined)34 b(with)g(the)f(fact)g(that)g(much)h(of)f(the)g(grid)g(manager)g(design) h(is)f(based)g(on)440 2079 y(polling,)d(a)e(simple)h(job)h(that)e(just) i(calls)e(the)h(UNIX)g(command)g Fn(uname)f Fz(takes)g(several)440 2194 y(minutes)20 b(to)f(execute)g(even)f(when)i(the)f(r)o(esour)o(ce)f (r)o(unning)j(the)e(command)g(is)h(otherwise)440 2308 y(fr)o(ee.)565 2423 y(The)27 b(scheduler)g(also)h(has)g(a)f(pr)o(oblem) g(with)h(load)f(balancing.)h(Because)e(of)h(the)h(in-)440 2537 y(her)o(ent)23 b(delays)f(in)i(the)f(design,)h(it)f(is)h(possible) f(for)g(several)g(users)g(to)g(submit)h(their)f(jobs)440 2652 y(simultaneously)j(to)e(the)h(same)f(lightly-loaded)g(r)o(esour)o (ce)f(and)h(overwhelm)h(it.)f(This)h(is)440 2767 y(mor)o(e)i(likely)g (to)g(happen)g(with)g(many)g(users.)g(A)f(r)o(elated)f(pr)o(oblem)i(is) g(that)g(a)f(job)h(with)440 2881 y(few)d(r)o(esour)o(ce)f(r)o(equir)o (ements,)h(e.g.)f(with)i(r)o(espect)f(to)g(memory)-9 b(,)25 b(may)f(be)g(submitted)h(to)440 2996 y(a)c(r)o(esour)o(ce)f (that)h(can)g(r)o(un)h(jobs)g(with)h(high)f(r)o(equir)o(ements.)f(If)g (such)g(jobs)i(later)d(arrive)h(at)440 3110 y(the)e(r)o(esour)o(ce,)f (it)h(would)h(have)e(been)h(bene\002cial)g(to)g(migrate)g(the)g(job)h (with)g(few)f(r)o(equir)o(e-)440 3225 y(ments)i(to)h(another)e(r)o (esour)o(ce.)565 3339 y(Another)j(pr)o(oblem)g(is)g(the)g(way)g(access) g(contr)o(ol)g(is)g(managed.)f(Users)h(ar)o(e)f(r)o(equir)o(ed)440 3454 y(to)g(obtain)f(a)g(certi\002cate)f(fr)o(om)h(the)g(Nor)o(duGrid)g (certi\002cation)g(authority)h(which)g(makes)440 3569 y(it)j(possible)h(to)f(set)g(up)f(access)h(contr)o(ol)g(at)f(the)h(r)o (esour)o(ces)f(by)h(maintaining)h(a)e(database)440 3683 y(with)35 b(tr)o(usted)f(certi\002cates.)g(Unfortunately)-9 b(,)34 b(these)g(databases)f(ar)o(e)g(curr)o(ently)g(main-)440 3798 y(tained)25 b(manually)g(and)g(in)h(a)f(quite)g(centralised)g (manner)-6 b(,)25 b(as)g(is)g(the)h(certi\002cation)f(pr)o(o-)440 3912 y(cess.)d(This)h(does)f(not)h(scale)f(at)g(all)g(to)g(a)g(lar)o (ge)f(number)h(of)h(users,)f(and)f(even)h(today)g(bur)o(-)440 4027 y(dens)f(the)g(administrators)g(and)f(involves)h(high)h (latencies.)440 4335 y Fr(1.3)119 b(A)30 b(Simpler)f(Grid)g (Architecture)440 4539 y Fz(Some)g(of)f(the)h(curr)o(ent)f(pr)o(oblems) g(in)h(Nor)o(duGrid)f(ar)o(e)g(softwar)o(e)f(engineering)j(issues)440 4654 y(that)e(a)f(major)h(r)o(eimplementation)g(could)g(alleviate.)e (But)i(some)g(of)g(the)g(pr)o(oblems)g(ar)o(e)440 4768 y(inher)o(ent)23 b(in)h(the)f(ar)o(chitectural)e(model)i(that)g(is)h (being)f(used.)g(The)g(Nor)o(duGrid)f(ARC)h(is)440 4883 y(based)31 b(mostly)j(on)f(a)e(traditional)i(client-server)e(ar)o (chitectur)o(e)f(like)j(the)f(W)-8 b(orld-W)j(ide)440 4997 y(W)d(eb)33 b(wher)o(e)g(job)h(submitters)g(ar)o(e)e(clients)i (and)f(each)g(r)o(esour)o(ce)f(server)h(is)g(operating)440 5112 y(completely)20 b(independently)f(of)h(the)f(other)h(r)o(esour)o (ce)e(servers.)h(The)g(pr)o(oblem)g(with)i(this)440 5227 y(appr)o(oach)29 b(is)i(that)f(tasks)h(like)g(scheduling)g(and)f (smarter)g(job)h(handling)g(on)g(the)f(grid)440 5341 y(need)21 b(coor)o(dination)g(and)g(cooperation,)h(which)g(a)f (collection)h(of)f(completely)h(indepen-)1831 5662 y(16)p eop %%Page: 17 19 17 18 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(dent)21 b(servers)f(ar)o(e)f(unable)i(to) g(do.)565 646 y(T)-8 b(o)33 b(solve)h(this)g(pr)o(oblem,)f(the)g(Nor)o (duGrid)g(employ)h(extra)e(distributed)h(systems)440 760 y(to)e(take)e(car)o(e)g(of)h(any)h(issues)f(that)h(r)o(equir)o(e)e (coor)o(dination,)h(such)h(as)f(the)g(information)440 875 y(service)g(for)h(r)o(esour)o(ce)e(r)o(egistration.)i(These)f (extra)g(systems)i(must)f(be)g(designed,)f(im-)440 990 y(plemented)c(and)g(tested)g(separately)g(which)h(is)g(a)f(complicated) g(task)g(given)h(their)g(dis-)440 1104 y(tributed)c(natur)o(e.)g(As)g (the)h(case)f(of)h(Nor)o(duGrid)f(ARC)h(shows,)h(the)f(r)o(esult)f(is)h (not)h(as)e(r)o(o-)440 1219 y(bust)e(as)g(it)h(could)f(be.)g(Also,)g (both)h(grid)f(users)g(and)g(grid)g(r)o(esour)o(ces)f(must)h(support)h (sev-)440 1333 y(eral)c(communication)i(pr)o(otocols.)e(The)h(r)o (esulting)f(softwar)o(e)g(gr)o(ows)g(lar)o(ge)f(and)h(tends)h(to)440 1448 y(become)i(incoher)o(ent)g(and)f(dif)o(\002cult)g(to)h (understand.)565 1562 y(A)29 b(much)h(simpler)g(model,)f(and)g(what)h (we)f(pr)o(opose,)g(is)h(an)g(ar)o(chitectur)o(e)d(that)j(r)o(e-)440 1677 y(places)19 b(the)h(myriads)g(of)g(distributed)g(systems)h(with)f (a)g(single)g(global)h(grid)e(entity)i(simi-)440 1792 y(lar)g(to)g(the)h(original)g(grid)f(idea)f(illustrated)h(in)h(Figur)o (e)e(1.1.)g(The)h(global)h(grid)f(entity)h(acts)440 1906 y(as)29 b(an)g(intermediary)f(between)h(the)g(participants)g(in)g(the)h (grid)f(and)f(is)i(used)e(to)i(coor)o(-)440 2021 y(dinate)d(the)h(r)o (esour)o(ces)e(available,)g(r)o(educing)h(the)g(interface)g(for)g(both) h(grid)f(users)h(and)440 2135 y(r)o(esour)o(ces)20 b(to)h(the)g (connection)h(to)f(the)g(grid)f(entity)-9 b(.)2104 2105 y Fm(1)565 2250 y Fz(The)24 b(question)i(is)f(how)g(to)g(design)g(such) g(a)f(global)g(grid)h(entity)-9 b(.)24 b(W)-8 b(e)25 b(assert)f(that)g(the)440 2364 y(basic)19 b(pr)o(oblem)h(to)g(be)f (solved)h(is)f(that)h(of)g(information)g(sharing;)g(the)g(coor)o (dination)g(and)440 2479 y(decision)d(making)g(of)f(a)g(global)g(grid)g (entity)h(r)o(ests)f(upon)h(having)f(access)g(to)h(all)f(necessary)440 2594 y(information)22 b(and)f(for)g(the)g(grid)g(participants)f(being)i (able)e(to)i(update)e(the)h(information)440 2708 y(as)f(jobs)i(ar)o(e)d (submitted)i(and)g(pr)o(ocessed)f(and)g(r)o(esour)o(ces)f(come)i(and)g (go.)565 2823 y(W)-8 b(e)22 b(pr)o(opose)f(an)h(ar)o(chitectur)o(e)e (wher)o(e)i(the)g(information)h(is)f(placed)f(in)i(a)e(hierar)o(chic) 440 2937 y(distributed)c(\002le)g(system.)g(This)h(is)f(convenient)h (because)e(a)h(hierar)o(chic)f(\002le)h(system)h(spec-)440 3052 y(i\002es)h(both)h(a)f(naming)g(system)h(for)f(str)o(ucturing)h (information)g(thr)o(ough)g(dir)o(ectories)e(and)440 3166 y(means)j(for)f(getting)i(to)f(the)g(actual)f(data.)f(This)i (seems)g(ideal)f(in)h(pr)o(oviding)g(a)f(\002rm)h(basis)440 3281 y(to)27 b(build)f(the)h(r)o(est)e(of)i(the)f(system)h(on.)g(Setup) f(of)g(virtual)g(or)o(ganisations,)h(job)g(submis-)440 3396 y(sion)20 b(and)f(handling,)g(r)o(esour)o(ce)f(r)o(egistration,)h (ef)o(\002cient)f(handling)i(of)f(lar)o(ge)f(amounts)i(of)440 3510 y(data,)f(etc.)i(can)f(all)h(be)f(done)h(with)g(a)g(distributed)f (hierar)o(chic)g(\002le)h(system.)565 3625 y(The)27 b(amount)h(of)f (data)f(stor)o(ed)h(in)h(the)f(\002le)h(system)g(is)f(expected)f(to)i (be)f(for)g(coor)o(di-)440 3739 y(nation)i(mostly)h(and)d(hence)i (small,)f(thus)h(it)g(can)f(be)g(a)g(light-weight)h(\002le)g(system.)f (But)440 3854 y(it)f(must)g(be)g(distributed,)f(r)o(obust)h(and)f (scalable.)g(It)h(must)g(also)g(pr)o(ovide)f(some)h(means)440 3968 y(of)20 b(synchr)o(onisation,)i(e.g.)d(mutual)h(exclusion,)h(to)g (avoid)e(race)g(conditions)j(to)f(be)e(useful)440 4083 y(for)i(coor)o(dination)g(purposes.)565 4198 y(Some)30 b(alternatives)h(to)g(a)f(hierar)o(chic)g(\002le)h(system)h(ar)o(e)d (object)j(dir)o(ectory)e(services)440 4312 y(and)20 b(database)f(based) h(\002le)h(systems.)565 4427 y(Lightweight)i(Dir)o(ectory)f(Access)g (Pr)o(otocol)h([51)n(])f(\(LDAP\))g(is)g(a)g(common)i(object)f(di-)440 4541 y(r)o(ectory)15 b(pr)o(otocol,)h(which)h(is)f(widely)g(used)f(as)h (a)f(dir)o(ectory)g(for)g(Internet)h(email)g(adr)o(esses.)440 4656 y(LDAP)26 b(is)g(tuned)f(towar)o(ds)h(write-once-r)o(ead-many)d (and)j(as)f(such)h(not)h(suited)f(for)f(the)440 4770 y(dynamics)c(of)g(an)f(information)i(system)f(wher)o(e)g(the)g(data)e (is)i(updated)f(fr)o(equently)-9 b(.)565 4885 y(Database-based)29 b(\002le)j(systems)h(ar)o(e)d(an)i(emer)o(ging)f(technology)j(in)e (desktop)g(sys-)440 5000 y(tems)18 b(development)f(with)h(ef)o(forts)f (like)h(GNOME)f(Storage)f([35)o(],)h(Micr)o(osoft)g(W)-5 b(inFS)18 b([22)o(])440 5114 y(and)29 b(DBFS)h([21)n(].)g(The)f(idea)g (is)h(to)g(stor)o(e)g(much)g(mor)o(e)f(metadata)g(than)h(with)g (conven-)440 5229 y(tional)d(hierar)o(chic)e(\002le)h(systems,)h(for)e (instance)i(what)f(email)g(did)f(a)h(certain)f(text)h(origi-)p 440 5305 1146 4 v 531 5361 a Fl(1)560 5385 y Fy(W)-6 b(e)16 b(thank)g(the)g(Minimum)g(Intr)o(usion)h(Grid)g(pr)o(oject)f ([33)q(])g(for)h(inspiration)h(for)f(formulating)g(this)f(model.)1831 5662 y Fz(17)p eop %%Page: 18 20 18 19 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(nate)25 b(fr)o(om)h(or)g(even)f(version)h (contr)o(ol)g(on)h(a)e(line)h(by)g(line)g(basis.)g(These)f(metadata)g (can)440 646 y(then)c(be)g(queried)f(thr)o(ough)h(a)g(database)e (interface.)565 760 y(The)33 b(desktop)h(centric)g(focus)g(of)g(curr)o (ent)f(database)f(\002le)h(systems)i(is)f(clearly)g(not)440 875 y(needed)25 b(for)h(the)g(information)i(system,)e(however)g(a)g (light-weight)h(database)e(\002le)h(sys-)440 990 y(tem)j(could)g(be)g (suitable)g(for)g(the)g(information)h(system.)g(Implementation)g(of)f (a)f(lar)o(ge)440 1104 y(distributed)20 b(database)f(\002le)i(system)h (seems,)e(however)-6 b(,)21 b(a)f(daunting)h(task.)565 1219 y(Since)g(the)h(capabilities)f(of)h(the)g(\002le)f(system)i(will)f (af)o(fect)e(the)i(overall)f(capabilities)g(of)440 1333 y(the)h(design)h(to)f(a)g(lar)o(ge)f(extent,)h(the)g(following)h (section)g(r)o(eviews)f(r)o(elevant)f(distributed)440 1448 y(\002le)g(systems)h(befor)o(e)d(we)i(state)f(the)h(system)h(r)o (equir)o(ements)e(in)h(Section)g(1.5.)440 1756 y Fr(1.4)119 b(Distributed)28 b(File)i(Systems)440 1960 y Fz(Distributed)22 b(\002le)g(systems)g(have)g(been)f(in)h(use)g(for)g(two)g(decades)e (since)i(Sun)g(Micr)o(osys-)440 2075 y(tems)i(intr)o(oduced)e(Network)i (File)g(System)f(\(NFS\))f([45)o(])h(in)h(1984.)d(NFS,)i(like)g(the)h (Server)440 2189 y(Message)i(Block)i(\(SMB\))d(and)i(Common)i(Internet) e(File)g(System)h(\(CIFS\))e([3)o(])h(pr)o(otocols)440 2304 y(\(used)15 b(for)h(Micr)o(osoft)f(W)-5 b(indows)17 b(shar)o(es\),)e(r)o(epr)o(esents)f(a)h(straight-forwar)o(d)f (client-server)440 2418 y(model)19 b(wher)o(e)f(a)h(central)f(server)g (stor)o(es)g(the)h(data)f(and)g(the)h(clients)h(connect)f(to)g(it)g (when-)440 2533 y(ever)27 b(they)g(need)g(to)h(fetch)f(a)g(\002le.)g(A) g(virtue)g(of)g(this)h(model)g(is)g(that)f(the)h(data)e(r)o(emains)440 2648 y(under)i(complete)g(contr)o(ol)g(in)h(the)f(central)f(server)-6 b(.)27 b(For)h(instance,)g(this)h(makes)f(it)g(r)o(ela-)440 2762 y(tively)21 b(easy)f(to)i(design)f(an)f(access)g(contr)o(ol)h (mechanism.)565 2877 y(Unfortunately)-9 b(,)29 b(the)h(central)g (server)f(is)h(a)g(single)h(point)g(of)f(failur)o(e)e(and)i(becomes)440 2991 y(a)e(bottleneck)i(under)e(heavy)h(load;)f(it)h(pr)o(ovides)f (neither)h(high)h(availability)e(or)h(scala-)440 3106 y(bility)-9 b(.)27 b(V)-8 b(ariations)27 b(of)f(the)h(centralised)f (idea)g(with)h(multiple)h(r)o(eplicating)e(servers)g(and)440 3220 y(advanced)c(caching)i(schemes)g(for)g(impr)o(oved)f(performance)g (and)h(higher)g(availability)440 3335 y(include)32 b(the)f(Andr)o(ew)g (File)h(System)f(\(AFS\))g(and)g(the)h(Coda)f(\002le)g(system)i([11)n (].)e(But)h(a)440 3450 y(drawback)d(of)g(these)i(systems)f(is)h(their)f (added)e(complexity)i(and)g(higher)g(cost.)g(Their)440 3564 y(centralised)e(natur)o(e)g(is)h(also)h(still)f(a)g(potential)g (bottleneck)g(and)g(makes)f(it)i(dif)o(\002cult)e(to)440 3679 y(scale)20 b(to)h(something)i(at)d(the)h(size)f(of)h(the)g (Internet.)565 3793 y(Gnutella)27 b([20)o(])g(abandons)g(the)h(idea)e (of)i(centralisation)f(in)h(favour)f(of)g(making)h(the)440 3908 y(clients)e(peers)e(that)h(simultaneously)i(r)o(etrieve)c(\002les) j(as)e(clients)i(and)e(stor)o(e)h(\002les)h(as)e(ser)o(-)440 4022 y(vers,)j(keeping)g(track)g(of)g(other)g(known)i(peers.)d(The)h (distribution)h(of)f(data)f(on)i(the)g(r)o(e-)440 4137 y(sulting)23 b(peer)o(-to-peer)c(or)i(overlay)g(network)i(has)e(no)h (particular)e(str)o(uctur)o(e,)h(each)g(node)440 4252 y(in)j(the)g(network)g(simply)g(of)o(fers)f(the)h(\002les)f(that)h(the) g(user)f(on)h(that)g(node)f(has)h(available,)440 4366 y(so)h(to)g(\002nd)g(a)g(speci\002c)f(\002le)h(it)g(is)g(necessary)f (to)i(br)o(oadcast)d(the)i(query)g(on)g(the)g(network.)440 4481 y(Several)g(other)h(popular)g(\002le-sharing)h(systems)g(also)f (operate)g(with)h(peers,)e(including)440 4595 y(Kazaa)19 b([26)o(])h(and)g(eDonkey)i([13)o(].)565 4710 y(The)h(bene\002ts)h(of)g (the)g(peer)f(appr)o(oach)f(is)i(that)g(ther)o(e)f(is)h(no)g(single)h (point)f(of)g(failur)o(e,)440 4824 y(and)e(that)h(the)g(available)f(r)o (esour)o(ces)g(scale)g(with)i(the)f(number)g(of)g(participating)f (nodes,)440 4939 y(since)16 b(nodes)g(ar)o(e)f(both)h(clients)g(and)g (servers.)f(Unfortunately)-9 b(,)15 b(the)h(idea)f(of)g(query)h(br)o (oad-)440 5054 y(casting)h(does)f(not)i(scale)e(well,)g(since)h(in)g (the)g(worst)g(case)f(the)h(query)g(must)g(be)f(forwar)o(ded)440 5168 y(to)26 b(every)f(node)g(in)h(the)g(network)g(\(else)f(the)h(r)o (equested)f(\002le)g(may)h(not)g(be)f(found\).)g(Fur)o(-)440 5283 y(thermor)o(e,)20 b(synchr)o(onisation)i(mechanisms)g(such)f(as)g (locks)g(cannot)g(easily)g(be)g(added.)565 5397 y(A)h(r)o(ecent)h(appr) o(oach)f(to)h(storing)i(data)d(in)i(a)e(decentralised)h(overlay)g (network)g(with)1831 5662 y(18)p eop %%Page: 19 21 19 20 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(mor)o(e)26 b(str)o(uctur)o(e)g(is)h(the)f (concept)g(of)h(distributed)f(hash)g(tables)g([31)o(;)g(40)o(;)g(42)o (;)g(44)o(;)g(53)o(].)g(In)440 646 y(a)c(distributed)f(hash)i(table,)e (nodes)i(ar)o(e)d(assigned)i(a)g(unique)h(key)f(when)h(they)f(enter)g (the)440 760 y(overlay)g(network,)h(as)f(ar)o(e)f(data)g(items.)i(This) g(means)f(that)h(one)g(can)f(think)h(of)g(the)f(hosts)440 875 y(and)e(the)h(data)f(items)h(as)g(being)g(mapped)e(to)j(a)e(key)h (space.)1310 1707 y @beginspecial 91 @llx 589 @lly 298 @urx 722 @ury 850 @rhi @setspecial %%BeginDocument: introduction/images/key-space.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: key-space.dvi %%BoundingBox: 91 589 298 722 %%DocumentFonts: PazoMath-Italic Palatino-Italic Palatino-Roman %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o key-space.eps key-space.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.10.12:1507 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (key-space.dvi) @start /Fa 205[498 498 49[{ TeXBase1Encoding ReEncodeFont }2 996.264 /Palatino-Roman rf /Fb 155[664 27[1033 959 739 812 1033 886 812 959 65[{ TeXBase1Encoding ReEncodeFont }9 1328.35 /Palatino-Italic rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 14494 a @beginspecial 0 @llx 0 @lly 205 @urx 131 @ury 2050 @rwi @setspecial %%BeginDocument: key-space.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: key-space.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue Oct 12 15:07:35 2004 %%For: olau@ubuntu (Ole Laursen,,,) %%BoundingBox: 0 0 205 131 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 131 moveto 0 0 lineto 205 0 lineto 205 131 lineto closepath clip newpath -129.8 432.4 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Ellipse 30.000 slw n 4655 5925 50 50 0 360 DrawEllipse gs col0 s gr % Ellipse n 3075 6305 50 50 0 360 DrawEllipse gs col0 s gr % Ellipse 7.500 slw [60] 0 sd n 3078 6294 906 906 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse 30.000 slw [15 45] 45 sd 1 slc n 3874 6176 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse [15 45] 45 sd n 4923 6201 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse [15 45] 45 sd n 2850 6005 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse [15 45] 45 sd n 3951 7002 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse [15 45] 45 sd n 5325 6900 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse [15 45] 45 sd n 3675 5325 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse 7.500 slw [60] 0 sd n 4653 5946 906 906 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse 30.000 slw [15 45] 45 sd n 4800 5400 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % Ellipse [15 45] 45 sd n 3155 6825 50 50 0 360 DrawEllipse gs col0 s gr [] 0 sd % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial 0 0 0 TeXcolorrgb 19305 5447 a Fb(d)19986 5670 y Fa(2)p Black 0 0 0 TeXcolorrgb 8804 7947 a Fb(d)9485 8185 y Fa(1)p Black 0 0 0 TeXcolorrgb 13800 6947 a Fb(C)p Black 0 0 0 TeXcolorrgb 6870 5947 a(A)p Black 0 0 0 TeXcolorrgb 14638 12947 a(F)p Black 0 0 0 TeXcolorrgb 21132 7447 a(D)p Black 0 0 0 TeXcolorrgb 23355 11947 a(H)p Black 0 0 0 TeXcolorrgb 12317 1447 a(G)p Black 0 0 0 TeXcolorrgb 9331 11447 a(B)p Black 0 0 0 TeXcolorrgb 20325 1947 a(E)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 511 1895 a Fq(Figur)o(e)e(1.5:)28 b(Example)20 b(of)g(a)g(key)h(space)g(with)f(two)g(data)h(items,)f(d)2253 1910 y Fj(1)2307 1895 y Fq(and)h(d)2478 1909 y Fj(2)2511 1895 y Fq(,)f(and)g(a)g(number)f(of)h(nodes)511 2000 y(\(the)i(dotted)i(small)e(cir)o(cles\).)g(W)o(ith)g(r)30 b Fh(=)f Fw(3)p Fq(,)22 b(node)28 b(A)q(,)23 b(B)h(and)f(C)h(must)e (stor)o(e)h(d)2622 2015 y Fj(1)2655 2000 y Fq(,)g(C)r(,)h(D)g(and)h(E)e (must)511 2105 y(stor)o(e)c(d)712 2119 y Fj(2)765 2105 y Fq(wher)o(eas)j(F)r(,)d(G)h(and)j(H)e(need)e(not)f(stor)o(e)h (anything.)565 2316 y Fz(The)f(basic)g(idea)g(is)h(then)g(that)f(a)g (given)h(data)e(item)i(is)g(stor)o(ed)f(on)h(the)g Fu(r)h Fz(nodes)f(that)g(ar)o(e)440 2431 y(closest)j(to)g(it)g(in)g(key)g (space)f(\()p Fu(r)i Fz(is)f(some)h(small)f(integer)f(constant\),)h (see)f(Figur)o(e)h(1.5.)e(This)440 2545 y(of)d(course)g(supposes)h (that)f(one)h(de\002nes)f(a)g(distance)f(metric)h(in)h(the)f(key)h (space.)e(The)h(keys)440 2660 y(and)24 b(the)g(distance)g(metric)g(is)h (what)f(gives)h(the)f(overlay)g(network)h(a)e(str)o(uctur)o(e)h(\226)g (given)440 2775 y(a)i(key)-9 b(,)27 b(a)f(data)g(item)h(is)h(r)o (etrieved)d(simply)j(by)f(contacting)g(one)g(of)g(the)g Fu(r)j Fz(hosts)e(closest)440 2889 y(to)c(the)f(key)-9 b(.)24 b(Fault-tolerance)e(is)i(ensur)o(ed)f(by)g(the)h(fact)e(that)i Fu(r)h Fz(r)o(eplicas)e(ar)o(e)f(distributed)440 3004 y(so)29 b(at)f(least)g Fu(r)j Fz(nodes)e(must)g(crash)f(or)g(leave)g (the)g(overlay)g(network)h(befor)o(e)e(ther)o(e)h(is)h(a)440 3118 y(possibility)24 b(of)e(data)f(loss)i(\226)f(and)g(the)g(network)h (can)f(heal)g(itself)g(by)h(letting)g(the)f(sets)h(of)f Fu(r)440 3233 y Fz(neighbours)g(contact)f(each)f(other)h(r)o(egularly)f (to)h(detect)f(missing)i(r)o(eplicas.)565 3347 y(For)i(actually)f (\002nding)h(the)g(closest)g(nodes)g(without)h(having)f(to)g(know)h (every)e(node)440 3462 y(in)h(the)f(network,)g(the)h(nodes)f(must)h (continually)g(ensur)o(e)f(that)g(they)g(know)i(at)d(least)h(the)440 3577 y Fu(r)k Fz(closest)e(nodes)g(to)h(themselves.)f(Furthermor)o(e,)f (they)h(also)g(maintain)g(a)f(list)h(of)g(nodes)440 3691 y(that)20 b(ar)o(e)f(farther)g(away)g(to)i(facilitate)d(look-up)j(in)g (sub-linear)e(time,)h(usually)g Fu(O)r Fd(\()q Fz(log)q Fd(\()r Fu(n)r Fd(\))r(\))440 3806 y Fz(with)k Fu(n)g Fz(being)e(the)h(number)g(of)f(nodes)h(in)g(the)f(network.)h(This)g (featur)o(e,)d(that)i(the)h(nodes)440 3920 y(only)i(know)f(of)g(a)f (subset)h(of)g(the)g(other)g(nodes)g(and)f(still)i(ar)o(e)d(able)h(to)h (\002nd)g(a)f(particular)440 4035 y(data)i(item)i(in)g(logarithmic)g (time,)f(has)h(the)f(ef)o(fect)f(that)h(the)h(str)o(uctur)o(ed)e (decentralised)440 4149 y(overlay)20 b(networks)i(can)e(scale)h(to)g (become)g(Internet-wide)f(while)h(staying)h(coher)o(ent.)565 4264 y(Another)j(bene\002t)h(of)g(the)f(str)o(uctur)o(ed)g(overlay)h (networks)g(is)g(that)g(it)g(is)g(possible)g(to)440 4379 y(exploit)h(the)g(str)o(uctur)o(e)g(not)g(just)h(to)f(stor)o(e)g(data)e (and)i(locate)f(r)o(eplicas,)g(but)h(also)g(to)g(im-)440 4493 y(plement)k(locks)h(and)f(noti\002cation)h(of)f(events)g(\(we)g (show)h(how)g(this)g(can)f(be)g(done)g(in)440 4608 y(Section)21 b(2.2\).)565 4722 y(The)16 b(main)h(dif)o(fer)o(ence)e(between)h(the)h (individual)g(overlay)f(networks)i(is)f(their)g(topol-)440 4837 y(ogy)-9 b(,)21 b(how)h(nodes)g(ar)o(e)d(or)o(ganised)i(with)h (the)f(distance)g(metric.)f(One)i(conceptually)f(sim-)440 4951 y(ple)30 b(topology)h(is)g(a)e(ring)i(wher)o(e)e(the)h(distance)g (between)g(two)h(points)g(on)f(the)g(ring)h(is)440 5066 y(the)i(size)f(of)h(the)f(angle)h(in)g(the)g(clock-wise)g(dir)o(ection) f(between)g(them)i(\(this)f(is)g(used)440 5180 y(by)f(Chor)o(d)e([44)o (]\).)h(Another)g(topology)i(r)o(esult)e(fr)o(om)g(pr)o(e\002x-based)e (r)o(outing,)j(used)f(by)440 5295 y(T)-8 b(apestry)17 b([53)n(])g(and)g(Pastry)f([42)o(],)g(wher)o(e)h(the)g(r)o(outing)g(is) h(based)e(on)h(matching)h(the)f(pr)o(e\002x)440 5410 y(of)23 b(the)h(destination)g(addr)o(ess.)d(A)i(particularly)f(simple)i (distance)f(metric)g(is)h(to)i Fy(X)t(O)t(R)g Fz(the)1831 5662 y(19)p eop %%Page: 20 22 20 21 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(keys)20 b(of)g(two)g(points)h(and)e (interpr)o(et)g(the)h(r)o(esult)g(as)f(an)h(integer)-6 b(.)19 b(This)i(gives)f(in)g(topology)440 646 y(that)27 b(can)g(be)f(visualised)h(as)g(a)f(tr)o(ee)g(which)i(lends)f(itself)g (well)g(to)h(an)e(implementation.)440 760 y(Kademlia)20 b([31)o(])g(does)h(this.)565 875 y(Using)28 b(distributed)f(hash)h (tables)g(can)f(lead)g(to)h(hot)h(spots)f(in)h(the)e(network)i(wher)o (e)440 990 y(fr)o(equently)i(r)o(ead)e(keys)i(ar)o(e)e(not)j (distributed)e(suf)o(\002ciently)-9 b(.)31 b(One)g(solution)i(for)d (this)i(is)440 1104 y(distributed)20 b(sloppy)g(hashing)i([18)n(])e (wher)o(e)f(nodes)i(or)o(ganise)f(themselves)g(into)h(clusters)440 1219 y(based)16 b(on)h(network)g(pr)o(oximity)-9 b(,)16 b(caching)h(keys)g(inside)g(clusters.)f(But)h(this)g(cr)o(eates)e (cache)440 1333 y(coher)o(ency)k(pr)o(oblems)h(when)g(updating)g(data,) e(as)i(it)g(is)g(expensive)f(to)h(locate)g(all)f(cached)440 1448 y(copies)24 b(of)g(the)h(data)e(item)h(to)h(perform)e(the)h (update.)f(Hence,)h(sloppy)h(hashing)g(is)f(most)440 1562 y(appr)o(opriate)19 b(with)i(few)g(writes)g(and)f(many)h(r)o (eads.)440 1871 y Fr(1.5)119 b(System)30 b(Requirements)440 2075 y Fz(In)e(this)h(section)f(we)g(pr)o(esent)f(the)h(r)o(equir)o (ements)g(for)f(our)i(grid)e(softwar)o(e.)g(W)-8 b(e)28 b(aim)g(to)440 2189 y(design)c(a)f(grid)h(system)g(that)g(is)g (functionally)h(equivalent)f(to)g(the)g(curr)o(ent)f(Nor)o(duGrid)440 2304 y(ARC)i(with)h(some)g(exceptions.)f(That)g(is,)g(a)g(grid)g (system)g(that)g(allows)h(r)o(esour)o(ces)e(to)i(be)440 2418 y(shar)o(ed)f(among)j(the)e(users)h(of)f(the)h(grid,)f(acr)o(oss)g (administrative)g(and)g(or)o(ganisational)440 2533 y(domains.)f (Returning)h(to)f(Figur)o(e)f(1.1,)f(the)i(system)h(to)f(be)f (implemented)h(is)g(the)g(global)440 2648 y(grid)c(entity)-9 b(.)440 2908 y Fp(1.5.1)99 b(Basic)26 b(Requirements)440 3081 y Fz(Fr)o(om)21 b(the)g(point)g(of)g(view)g(of)g(the)f(users,)h (the)g(grid)g(must)g(support:)565 3262 y Fo(\017)41 b Fz(Submission)21 b(of)e(jobs)i(without)g(r)o(equiring)f(the)g(user)g (to)g(\002nd)g(a)f(r)o(esour)o(ce,)f(and)i(in)g(a)648 3376 y(\003exible)g(manner)h(that)g(can)f(support)h(diverse)f(types)h (of)g(r)o(esour)o(ces.)565 3557 y Fo(\017)41 b Fz(Monitoring)30 b(of)g(jobs,)g(including)h(getting)f(a)f(noti\002cation)i(when)f(a)f (job)h(is)g(com-)648 3672 y(pleted.)565 3853 y Fo(\017)41 b Fz(Managing)20 b(of)h(jobs.)g(The)g(details)g(depend)f(on)h(the)g (type)g(of)g(job,)g(but)g(at)f(least)h(can-)648 3967 y(celling)g(the)g(job.)565 4148 y Fo(\017)41 b Fz(Collections)22 b(of)e(jobs)i(so)f(that)g(a)f(lar)o(ge)g(batch)g(can)h(be)f(tr)o(eated) f(easily)-9 b(.)565 4329 y Fo(\017)41 b Fz(Handling)21 b(of)f(the)h(input)h(data)d(for)i(the)g(job.)565 4510 y(Fr)o(om)f(the)h(point)h(of)f(view)f(of)h(the)g(r)o(esour)o(ces,)e (the)i(system)h(must)f(support:)565 4691 y Fo(\017)41 b Fz(Retrieving)19 b(a)f(job)h(and)f(pr)o(ocessing)h(it)g(without)g (having)g(to)g(concern)g(the)g(r)o(esour)o(ce)648 4806 y(with)i(who)h(submitted)f(it.)565 4987 y Fo(\017)41 b Fz(Registration)35 b(of)g(the)g(r)o(esour)o(ce,)e(with)j(\003exible)f (commitment)h(so)g(that)f(the)g(r)o(e-)648 5102 y(sour)o(ce)20 b(owner)h(r)o(emain)f(in)h(contr)o(ol.)565 5282 y Fo(\017)41 b Fz(Ef)o(\002cient)28 b(handling)i(of)g(data,)e(i.e.)h(r)o(etrieval)f (of)h(data)f(fr)o(om)h(a)g(storage)h(r)o(esour)o(ce)648 5397 y(and)20 b(sending)h(output)h(back.)1831 5662 y(20)p eop %%Page: 21 23 21 22 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(Since)16 b(the)g(focus)g(is)g(on)g(the)h (curr)o(ent)e(Nor)o(duGrid)g(ARC)h(functionality)-9 b(,)16 b(the)g(system)h(must)440 646 y(also)g(speci\002cally)g(support)h (cluster)f(r)o(esour)o(ces)e(and)i(storage)g(r)o(esour)o(ces.)f(The)h (cluster)g(r)o(e-)440 760 y(sour)o(ce)j(must)g(pr)o(ovide)f(a)h (\003exible)g(interface)f(to)h(the)h(local)f(cluster)g(softwar)o(e)f (to)h(support)440 875 y(dif)o(fer)o(ent)e(cluster)i(batch)g(systems.)h (The)f(storage)g(r)o(esour)o(ces)f(must)i(pr)o(ovide)e(data)g(space)440 990 y(and)k(support)h(handling)g(lar)o(ge)e(amounts)j(of)e(data)f(ef)o (\002ciently)-9 b(,)23 b(support)h(r)o(eplication)f(to)440 1104 y(guar)o(d)c(against)i(failur)o(es)e(and)i(\002le)f(collections)i (to)f(make)g(it)g(easy)f(to)h(deal)f(with)h(complex)440 1219 y(data)f(sets.)565 1333 y(Furthermor)o(e,)g(the)h(global)g(grid)f (entity)h(must)h(support:)565 1514 y Fo(\017)41 b Fz(The)22 b(basic)g(infrastr)o(uctur)o(e)g(for)g(the)h(grid)f(for)h(distributing) g(information)g(and)f(co-)648 1629 y(or)o(dination.)565 1810 y Fo(\017)41 b Fz(Modeling)31 b(of)h(virtual)f(or)o(ganisations)h (that)f(consists)i(of)e(users,)g(r)o(esour)o(ces)g(and)648 1924 y(jobs)21 b(and)g(r)o(estricts)f(access)g(for)g(all)h(others.)565 2105 y Fo(\017)41 b Fz(Pairing)21 b(of)f(jobs)i(and)e(r)o(esour)o(ces)g (to)h(avoid)f(having)h(the)g(user)g(do)g(it.)565 2286 y Fo(\017)41 b Fz(Any)20 b(maintenance)h(that)g(goes)g(beyond)g(one)g (grid)g(participiant.)440 2547 y Fp(1.5.2)99 b(Requirements)24 b(for)g(Design)440 2720 y Fz(Ther)o(e)c(ar)o(e)f(also)i(some)g (abstract)f(r)o(equir)o(ements)g(for)h(the)g(system)g(which)h(must)f (be:)565 2917 y Fo(\017)41 b Fz(Scalable.)28 b(It)i(must)h(employ)g(an) f(ar)o(chitectur)o(e)f(that)h(is)g(mor)o(e)g(scalable)g(than)g(the)648 3032 y(curr)o(ent)18 b(Nor)o(duGrid)h(ar)o(chitectur)o(e.)e (Centralised)h(administration)i(must)g(also)g(be)648 3146 y(avoided)f(to)j(avoid)e(ending)h(with)h(a)e(human)h(bottleneck.) 565 3327 y Fo(\017)41 b Fz(Robust)19 b(and)e(highly)i(available,)e(r)o (eally)g(pr)o(eventing)g(any)h(single)h(point)g(of)f(failur)o(e.)565 3508 y Fo(\017)41 b Fz(Flexible.)26 b(As)g(mentioned)h(in)g(Section)f (1.1.1,)e(a)i(grid)g(should)h(be)f(designed)g(with)648 3623 y(\003exibility)31 b(in)f(mind,)g(so)h(that)f(additional)g(featur) o(es)e(and)i(support)g(for)g(new)h(r)o(e-)648 3737 y(sour)o(ces)20 b(can)g(be)h(added)e(in)i(further)g(development.)565 3918 y Fo(\017)41 b Fz(Easy)27 b(to)h(setup,)f(maintain)h(and)f (access,)f(since)i(grids)g(curr)o(ently)f(r)o(equir)o(e)f(gentle)648 4033 y(cooperation)21 b(and)f(mostly)i(thrive)f(on)g(people's)g (goodwill.)440 4341 y Fr(1.6)119 b(Project)29 b(Overview)440 4545 y Fz(Based)e(on)i(the)g(considerations)g(in)g(this)g(chapter)-6 b(,)27 b(we)i(have)f(come)g(up)h(with)g(a)f(design)440 4660 y(for)23 b(ful\002lling)g(the)g(r)o(equir)o(ements)g(pr)o(esented) e(in)i(the)g(pr)o(evious)g(section.)g(W)-8 b(e)23 b(have)f(also)440 4774 y(implemented)d(and)f(tested)h(some)g(of)g(the)g(most)h(basic)e (parts)g(of)h(this)h(design.)e(The)h(r)o(est)f(of)440 4889 y(the)j(r)o(eport)f(describes)g(our)h(ef)o(forts.)565 5004 y(Chapter)29 b(2)h(pr)o(esents)g(the)h(design)g(of)f(a)g(basic)h (infrastr)o(uctur)o(e,)e(the)h(decentralised)440 5118 y(distributed)c(\002le)h(system,)g(how)g(it)f(implements)i(the)e (featur)o(es)f(that)i(ar)o(e)e(necessary)h(for)440 5233 y(building)i(the)f(r)o(est)g(of)g(the)g(grid)h(on)f(top)h(of)f(it)h (and)e(how)j(it)e(enables)g(modeling)h(of)f(vir)o(-)440 5347 y(tual)22 b(or)o(ganisations.)h(A)e(simple)i(design)g(for)f (handling)g(transfers)g(of)g(lar)o(ge)f(amounts)i(of)1831 5662 y(21)p eop %%Page: 22 24 22 23 bop 1427 211 a Ft(Chapter)20 b(1.)46 b(Intr)o(oduction)p 440 244 2865 4 v 440 531 a Fz(data)19 b(is)h(also)g(pr)o(esented)f (together)i(with)f(an)g(outline)h(of)f(common)i(r)o(esour)o(ce)c (types.)i(Our)440 646 y(design)k(enables)f(both)h(scheduling,)g(a)f Fu(push)g Fz(model,)h(and)f(simple)h(job)g(selection,)g(a)f Fu(pull)440 760 y Fz(model.)565 875 y(Due)33 b(to)g(time)g(constraints) h(we)e(have)h(primarily)g(focused)f(our)h(attention)h(on)f(the)440 990 y(foundations)17 b(of)g(the)g(ar)o(chitectur)o(e,)d(and)j(only)g (sketched)g(the)g(upper)f(level)g(components,)440 1104 y(including)22 b(the)f(r)o(esour)o(ce)e(and)h(user)h(components.)565 1219 y(After)i(having)i(the)g(design)g(of)g(the)g(basics)g(r)o(eady)-9 b(,)22 b(we)j(have)g(implemented)g(in)g(C++)440 1333 y(a)j(working)h(pr)o(ototype)e(of)h(the)h(featur)o(es)d(needed)h(for)h (the)g(decentralised)f(distributed)440 1448 y(\002le)d(system.)g (Chapter)e(3)h(pr)o(esents)g(the)h(tests)g(performed)e(on)i(the)g(pr)o (ototype)f(to)h(evalu-)440 1562 y(ate)d(its)h(performance)e(and)h (feasibility)-9 b(.)21 b(Access)g(contr)o(ol)h(featur)o(es,)e(a)h (mutual)h(exclusion)440 1677 y(algorithm)i(and)f(noti\002cation)h(of)f (\002le)h(changes)f(have)g(been)g(tested)g(and)f(the)i(r)o(esults)f(ar) o(e)440 1792 y(pr)o(esented)d(and)g(evaluated.)565 1906 y(Chapter)f(4)g(concludes)h(by)h(pr)o(esenting)e(a)h(summary)g(of)g (the)g(pr)o(oject,)g(an)f(evaluation)440 2021 y(of)i(our)g(design)g (and)f(a)g(discussion)i(of)f(futur)o(e)f(work.)1831 5662 y(22)p eop %%Page: 23 25 23 24 bop 440 1185 a Fs(Chapter)44 b(2)440 1638 y FC(Design)440 2084 y Fz(This)24 b(chapter)g(pr)o(esents)f(the)h(design)g(of)g(our)g (pr)o(oposed)f(system.)i(Section)f(2.1)e(gives)i(an)440 2199 y(overview)j(of)g(the)g(ar)o(chitectur)o(e)e(and)h(the)h (components,)h(and)f(the)g(following)h(sections)440 2313 y(explains)21 b(the)g(detailed)e(design)i(of)g(each)f(component.)440 2615 y Fr(2.1)119 b(Overview)440 2820 y Fz(As)25 b(explained)g(in)h (Chapter)f(1,)f(we)i(base)f(the)g(design)h(on)g(a)f(decentralised)g (distributed)440 2934 y(\002le)20 b(system,)h(the)f Fu(information)g (service)p Fz(,)g(and)g(use)g(that)g(for)g(communication)h(and)f(coor)o (di-)440 3049 y(nation.)j(T)-8 b(o)24 b(be)e(fault-tolerant)g(and)g (highly)j(available,)c(the)i(information)g(service)g(must)440 3163 y(r)o(un)30 b(on)g(several)e(machines.)h(T)-8 b(o)30 b(\002nd)g(out)g(which,)f(we)h(divide)e(the)i(grid)f(participants)440 3278 y(into)22 b(thr)o(ee)e(categories:)544 3433 y(1.)41 b(The)20 b Fu(users)i Fz(who)g(submit)g(and)e(monitor)i(jobs.)544 3601 y(2.)41 b(The)20 b Fu(r)o(esour)o(ces)i Fz(that)e(of)o(fer)g (storage)g(or)h(pr)o(ocess)g(jobs.)544 3769 y(3.)41 b(The)20 b Fu(fabric)i Fz(that)e(keeps)h(the)g(grid)f(up.)440 3924 y(Keeping)32 b(the)g(information)g(service)g(up)f(is)h(clearly)f (part)g(of)h(the)g(duty)f(of)h(the)g(fabric,)440 4038 y(wher)o(eas)d(conceptually)h(the)g(users)h(and)e(r)o(esour)o(ces)g (will)i(be)e(mer)o(e)g(clients)i(of)f(the)g(in-)440 4153 y(formation)20 b(service.)f(In)h(r)o(eality)-9 b(,)18 b(most)i(r)o(esour)o(ce)e(machines)i(\(such)g(as)f(cluster)h(gateways) 440 4267 y(or)h(storage)f(servers\))f(ar)o(e)g(pr)o(obably)h(very)g (stable)g(and)g(r)o(eliable)f(and)h(thus)h(prime)f(candi-)440 4382 y(dates)c(for)g(being)h(part)f(of)g(the)h(fabric.)e(But)i(some)g (r)o(esour)o(ces)e(may)i(have)f(a)g(mor)o(e)g(transient)440 4496 y(connection,)26 b(e.g.)f(desktop)h(machines,)f(or)h(may)f(for)g (other)h(r)o(easons)f(simply)h(not)g(want)440 4611 y(to)j(or)h(be)e (unable)h(to)g(contribute)h(to)f(the)g(fabric,)f(for)h(instance)g (because)f(of)h(r)o(estrictive)440 4726 y(\002r)o(ewalls.)18 b(Hence,)g(we)g(make)g(the)h(distinction)g(between)g(the)f(fabric)f (and)h(the)h(r)o(esour)o(ces.)565 4840 y(Apart)g(fr)o(om)h(the)g(coor)o (dination)h(information)g(that)f(is)h(transferr)o(ed)d(thr)o(ough)j (the)f(in-)440 4955 y(formation)j(service,)f(ther)o(e)f(is)i(also)g(a)f (need)g(for)g(transporting)i(lar)o(ge)d(amounts)i(of)g(input)440 5069 y(and)18 b(output)h(data)e(ef)o(\002ciently)h(between)g(the)g (users)g(and)g(the)h(r)o(esour)o(ces.)d(These)j(ar)o(e)d(han-)440 5184 y(dled)k(by)h(the)g Fu(data)f(service)p Fz(.)565 5298 y(Furthermor)o(e,)c(we)h(need)g(components)i(for)e(r)o(esour)o (ces)f(and)h(components)h(for)f(users.)440 5413 y(In)k(total,)g(we)f (split)i(the)f(design)g(into)g(the)g(following)h(parts:)1831 5662 y(23)p eop %%Page: 24 26 24 25 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 565 531 a Fo(\017)41 b Fz(Information)21 b(service)f(component)565 701 y Fo(\017)41 b Fz(Data)20 b(service)g(component)565 870 y Fo(\017)41 b Fz(Resour)o(ce)20 b(components)i(\(e.g.)e(cluster)h(r)o(esour)o(ce,)e(storage)h(r)o (esour)o(ce\))565 1040 y Fo(\017)41 b Fz(User)20 b(components)i(\(for)e (job)h(submitting,)h(WWW)f(monitoring)i(interface\))440 1197 y(The)30 b(basic)g(idea)f(is)h(that)g(a)g(user)g(or)g(r)o(esour)o (ce)f(component)i(sets)f(up)g(the)g(information)440 1312 y(service)22 b(component)h(either)f(as)g(a)f(client)i(or)f(as)g(part)f (of)h(the)g(fabric)f(and)h(uses)g(it)h(to)f(com-)440 1427 y(municate)i(with)g(the)g(r)o(est)e(of)i(grid,)f(activating)g(a)g (data)g(service)g(component)h(if)g(it)f(needs)440 1541 y(to)e(transfer)f(data,)f(see)i(Figur)o(e)f(2.1.)440 3240 y @beginspecial 91 @llx 460 @lly 562 @urx 721 @ury 3437 @rwi @setspecial %%BeginDocument: design/images/component-overview.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: component-overview.dvi %%BoundingBox: 91 460 562 721 %%DocumentFonts: Palatino-Roman %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o component-overview.eps %+ component-overview.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.09.24:1603 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (component-overview.dvi) @start /Fa 186[812 1028 942 812 1033 65[{ TeXBase1Encoding ReEncodeFont }5 1328.35 /Palatino-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 28747 a @beginspecial 0 @llx 0 @lly 469 @urx 259 @ury 4690 @rwi @setspecial %%BeginDocument: component-overview.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: component-overview.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Fri Sep 24 16:03:11 2004 %%For: lau@night (Lau Bech Lauritzen,,,) %%BoundingBox: 0 0 469 259 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 259 moveto 0 0 lineto 469 0 lineto 469 259 lineto closepath clip newpath -29.9 297.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Arc 7.500 slw 0 slc n 1504.8 1279.3 122.7 128.7645 55.1318 arcn gs col0 s gr % Arc n 1504.1 1447.7 126.3 128.2098 56.4332 arcn gs col0 s gr % Arc n 1493.2 1507.3 155.6 -115.5797 -58.2739 arc gs col0 s gr % Polyline 0 slj n 1425 1368 m 1425 1551 l gs col0 s gr % Polyline n 1575 1557 m 1575 1375 l gs col0 s gr % Arc n 1729.8 1279.3 122.7 128.7645 55.1318 arcn gs col0 s gr % Arc n 1729.1 1447.7 126.3 128.2098 56.4332 arcn gs col0 s gr % Arc n 1718.2 1507.3 155.6 -115.5797 -58.2739 arc gs col0 s gr % Polyline n 1650 1368 m 1650 1551 l gs col0 s gr % Polyline n 1800 1557 m 1800 1375 l gs col0 s gr % Arc n 1954.8 1279.3 122.7 128.7645 55.1318 arcn gs col0 s gr % Arc n 1954.1 1447.7 126.3 128.2098 56.4332 arcn gs col0 s gr % Arc n 1943.2 1507.3 155.6 -115.5797 -58.2739 arc gs col0 s gr % Polyline n 1875 1368 m 1875 1551 l gs col0 s gr % Polyline n 2025 1557 m 2025 1375 l gs col0 s gr % Arc n 2179.8 1279.3 122.7 128.7645 55.1318 arcn gs col0 s gr % Arc n 2179.1 1447.7 126.3 128.2098 56.4332 arcn gs col0 s gr % Arc n 2168.2 1507.3 155.6 -115.5797 -58.2739 arc gs col0 s gr % Polyline n 2100 1368 m 2100 1551 l gs col0 s gr % Polyline n 2250 1557 m 2250 1375 l gs col0 s gr % Arc n 2404.8 1279.3 122.7 128.7645 55.1318 arcn gs col0 s gr % Arc n 2404.1 1447.7 126.3 128.2098 56.4332 arcn gs col0 s gr % Arc n 2393.2 1507.3 155.6 -115.5797 -58.2739 arc gs col0 s gr % Polyline n 2325 1368 m 2325 1551 l gs col0 s gr % Polyline n 2475 1557 m 2475 1375 l gs col0 s gr % Polyline n 1500 1575 m 1500 1650 l gs col0 s gr % Polyline n 1725 1575 m 1725 1650 l gs col0 s gr % Polyline n 1950 1575 m 1950 1650 l gs col0 s gr % Polyline n 2175 1575 m 2175 1650 l gs col0 s gr % Polyline n 2400 1575 m 2400 1650 l gs col0 s gr % Polyline n 1500 1650 m 2475 1650 l 2625 1950 l gs col0 s gr % Polyline n 1575 2550 m 3225 2550 l 3225 2850 l 1575 2850 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 2400 2775 m gs 1 -1 sc (data service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 1575 2250 m 3225 2250 l 3225 2550 l 1575 2550 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 2400 2475 m gs 1 -1 sc (cluster resource) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 1575 1950 m 3225 1950 l 3225 2250 l 1575 2250 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 2400 2175 m gs 1 -1 sc (storage resource) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 3525 1500 m 5175 1500 l 5175 1800 l 3525 1800 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 4350 1725 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 3525 1200 m 5175 1200 l 5175 1500 l 3525 1500 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 4350 1425 m gs 1 -1 sc (WWW interface) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5625 2625 m 7275 2625 l 7275 2925 l 5625 2925 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 6450 2850 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5625 2325 m 7275 2325 l 7275 2625 l 5625 2625 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 6450 2550 m gs 1 -1 sc (data service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5625 2025 m 7275 2025 l 7275 2325 l 5625 2325 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 6450 2250 m gs 1 -1 sc (storage resource) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5550 4050 m 7200 4050 l 7200 4350 l 5550 4350 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 6375 4275 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5550 4350 m 7200 4350 l 7200 4650 l 5550 4650 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 6375 4575 m gs 1 -1 sc (data service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 5550 4650 m 7200 4650 l 7200 4950 l 5550 4950 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 6375 4875 m gs 1 -1 sc (cluster resource) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 2250 3975 m 3900 3975 l 3900 4275 l 2250 4275 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 3075 4200 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 2250 4275 m 3900 4275 l 3900 4575 l 2250 4575 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 3075 4500 m gs 1 -1 sc (job submitter) dup sw pop 2 div neg 0 rm col0 sh gr % Arc n 6970.2 1354.3 122.7 51.2355 124.8682 arc gs col0 s gr % Arc n 6970.9 1522.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 6981.8 1582.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 7050 1443 m 7050 1626 l gs col0 s gr % Polyline n 6900 1632 m 6900 1450 l gs col0 s gr % Arc n 6745.2 1354.3 122.7 51.2355 124.8682 arc gs col0 s gr % Arc n 6745.9 1522.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 6756.8 1582.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 6825 1443 m 6825 1626 l gs col0 s gr % Polyline n 6675 1632 m 6675 1450 l gs col0 s gr % Arc n 6520.2 1354.3 122.7 51.2355 124.8682 arc gs col0 s gr % Arc n 6520.9 1522.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 6531.8 1582.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 6600 1443 m 6600 1626 l gs col0 s gr % Polyline n 6450 1632 m 6450 1450 l gs col0 s gr % Arc n 6295.2 1354.3 122.7 51.2355 124.8682 arc gs col0 s gr % Arc n 6295.9 1522.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 6306.8 1582.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 6375 1443 m 6375 1626 l gs col0 s gr % Polyline n 6225 1632 m 6225 1450 l gs col0 s gr % Arc n 6070.2 1354.3 122.7 51.2355 124.8682 arc gs col0 s gr % Arc n 6070.9 1522.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 6081.8 1582.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 6150 1443 m 6150 1626 l gs col0 s gr % Polyline n 6000 1632 m 6000 1450 l gs col0 s gr % Polyline n 6975 1650 m 6975 1725 l gs col0 s gr % Polyline n 6750 1650 m 6750 1725 l gs col0 s gr % Polyline n 6525 1650 m 6525 1725 l gs col0 s gr % Polyline n 6300 1650 m 6300 1725 l gs col0 s gr % Polyline n 6075 1650 m 6075 1725 l gs col0 s gr % Polyline n 6975 1725 m 6000 1725 l 5850 2025 l gs col0 s gr % Ellipse n 582 1980 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 769 1980 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 957 1980 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 1144 1980 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 1332 1980 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 582 2295 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 769 2295 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 957 2295 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 1144 2295 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 1332 2295 75 84 0 360 DrawEllipse gs col0 s gr % Polyline n 583 2213 m 582 2064 l gs col0 s gr % Polyline n 768 2213 m 769 2064 l gs col0 s gr % Polyline n 957 2211 m 957 2064 l gs col0 s gr % Polyline n 1145 2213 m 1144 2064 l gs col0 s gr % Polyline n 1332 2213 m 1332 2064 l gs col0 s gr % Ellipse n 7482 4530 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 7669 4530 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 7857 4530 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 8044 4530 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 8232 4530 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 7482 4845 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 7669 4845 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 7857 4845 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 8044 4845 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 8232 4845 75 84 0 360 DrawEllipse gs col0 s gr % Polyline n 7483 4763 m 7482 4614 l gs col0 s gr % Polyline n 7668 4763 m 7669 4614 l gs col0 s gr % Polyline n 7857 4761 m 7857 4614 l gs col0 s gr % Polyline n 8045 4763 m 8044 4614 l gs col0 s gr % Polyline n 8232 4763 m 8232 4614 l gs col0 s gr % Ellipse n 4050 825 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 5625 2775 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 3225 3075 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 5550 4125 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 3000 3150 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 4425 1800 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 6375 2925 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 6225 4050 15 15 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr % Polyline 15.000 slw n 3225 3075 m 5550 4125 l gs col0 s gr % Polyline 30.000 slw [15 30] 30 sd n 3000 3150 m 3000 3975 l gs col0 s gr [] 0 sd % Polyline 7.500 slw n 4125 975 m 4200 1200 l gs col0 s gr % Polyline 45.000 slw [45] 0 sd n 7275 2475 m 7500 2775 l 7500 4200 l 7200 4500 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 6375 2925 m 6225 4050 l gs col0 s gr % Polyline n 5625 2775 m 3225 3075 l gs col0 s gr % Polyline n 4425 1800 m 5625 2775 l gs col0 s gr % Polyline 7.500 slw n 1575 2850 m 3225 2850 l 3225 3150 l 1575 3150 l cp gs col0 s gr % Polyline 15.000 slw n 4425 1800 m 3225 3075 l gs col0 s gr % Polyline 45.000 slw [45] 0 sd n 5625 2475 m 3225 2700 l gs col0 s gr [] 0 sd % Polyline 7.500 slw n 582 2148 m 1444 2148 l 1575 2400 l gs col0 s gr % Polyline n 8231 4698 m 7331 4698 l 7200 4800 l gs col0 s gr /Times-Italic ff 180.00 scf sf 4650 825 m gs 1 -1 sc (web server) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Italic ff 180.00 scf sf 2025 1275 m gs 1 -1 sc (RAID) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Italic ff 180.00 scf sf 975 1800 m gs 1 -1 sc (cluster) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Italic ff 180.00 scf sf 6525 1350 m gs 1 -1 sc (RAID) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 180.00 scf sf 2400 3075 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Italic ff 180.00 scf sf 7950 4350 m gs 1 -1 sc (cluster) dup sw pop 2 div neg 0 rm col0 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial 0 0 0 TeXcolorrgb 7387 13667 a Fa(A)p Black 0 0 0 TeXcolorrgb 34388 26167 a(B)p Black 0 0 0 TeXcolorrgb 12387 24667 a(E)p Black 0 0 0 TeXcolorrgb 47888 10667 a(C)p Black 0 0 0 TeXcolorrgb 20888 4667 a(D)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 511 3542 a Fq(Figur)o(e)15 b(2.1:)28 b(An)15 b(example)i(of)f(deployment)h(of)f(our)g(grid)g(design)g(with)g(\002ve) h(hosts.)g(Host)k(A)c(is)e(a)i(cluster)511 3647 y(with)i(mass)h (storage)g(attached,)h(host)g(B)g(is)e(a)h(cluster)-6 b(,)19 b(host)i(C)f(is)g(a)f(mass)h(storage)g(r)o(esour)o(ce,)f(host)j (D)g(is)511 3752 y(a)17 b(web)f(server)i(which)g(is)e(connected)i(to)f (the)g(grid)g(for)g(easy)g(monitoring)g(access,)g(and)g(host)h(E)e(is)h (a)g(client)511 3857 y(with)22 b(a)g(job)g(submitting)e(interface)i (\226)g(the)h(information)e(service)h(component)h(on)e(host)k(E)d(is)g (not)g(part)511 3962 y(of)g(the)g(fabric.)g(Communication)f(takes)h (place)h(indir)o(ectly)f(via)g(the)g(information)f(service)i(with)f (input)511 4068 y(and)d(output)f(data)h(being)f(transferr)o(ed)g(dir)o (ectly)h(to)g(the)g(end-points)g(thr)o(ough)g(the)g(data)g(service.)565 4267 y Fz(The)31 b(information)i(service)f(is)g(used)g(to)g(r)o (egister)f(grid)h(r)o(esour)o(ces)e(and)i(users)g(and)440 4382 y(user)22 b(gr)o(oups,)f(to)i(submit)f(and)g(manage)f(jobs)i(and)e (to)h(coor)o(dinate)g(the)g(handling)g(of)g(the)440 4496 y(data)g(on)h(the)g(grid.)f(T)-8 b(o)23 b(illustrate)g(the)g(work)g (\003ow)-8 b(,)24 b(we)f(now)g(give)g(an)g(example)f(of)g(a)h(job)440 4611 y(submission)g(based)c(on)j(the)f(grid)f(shown)j(in)e(Figur)o(e)f (2.1.)565 4726 y(A)g(user)j Fu(E)f Fz(needs)f(to)g(have)g(some)h (computing)g(intensive)g(analysis)f(done)g(on)h(a)e(lar)o(ge)440 4840 y(data)27 b(set.)j Fu(E)f Fz(writes)f(the)h(analysis)f(softwar)o (e,)f(pr)o(epar)o(es)f(a)h(job)i(description,)f(authenti-)440 4955 y(cates)20 b(with)i(the)f(grid)f(and)h(submits)g(the)g(job.)h(At)e (this)i(point,)f(the)g(job)g(is)g(in)h(the)f(informa-)440 5069 y(tion)c(service)e(and)h(available)e(to)j(the)f(other)g(grid)g (participants)f(so)k Fu(E)e Fz(is)f(fr)o(ee)e(to)j(disconnect)440 5184 y(fr)o(om)j(the)h(grid.)565 5298 y(A)29 b(r)o(esour)o(ce,)f(say)i (the)g(cluster)j Fu(B)q Fz(,)c(then)h(picks)h(up)f(the)g(job.)g(The)g (cluster)g(r)o(esour)o(ce)440 5413 y(component)j(on)i Fu(B)d Fz(r)o(eads)e(the)i(job)g(description)g(and)f(r)o(equests)h(the) g(necessary)f(input)1831 5662 y(24)p eop %%Page: 25 27 25 26 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(data)21 b(fr)o(om)g(its)h(local)g(data)e (service)h(component,)i(which)f(locates)g(the)g(closest)g(r)o(eplica)e (of)440 646 y(the)30 b(data)e(and)i(begins)g(r)o(etrieving)f(it.)h (When)g(the)g(r)o(etrieval)e(is)i(complete,)g(the)f(cluster)440 760 y(r)o(esour)o(ce)24 b(component)i(starts)f(executing)g(the)h(job)g (by)f(placing)g(it)h(in)f(the)h(batch)f(system)440 875 y(on)18 b(the)f(cluster)-6 b(,)17 b(and)g(keeps)g(monitoring)i(it)f(to) g(be)f(able)f(to)i(r)o(eport)f(status)g(and)g(any)g(err)o(ors)440 990 y(that)k(may)f(occur)h(to)g(the)g(information)h(service.)565 1104 y(When)e(the)f(execution)h(has)g(ended,)e(the)i(cluster)f(r)o (esour)o(ce)g(components)i(hands)e(any)440 1219 y(output)i(to)h(the)f (local)f(data)g(service.)i Fu(E)g Fz(can)f(then)g(connect)g(to)h(the)f (grid)f(and)h(r)o(etrieve)e(the)440 1333 y(data.)565 1448 y(The)29 b(following)i(sections)f(give)g(an)f(overview)h(of)f (each)g(of)g(the)h(components,)h(and)440 1562 y(the)c(r)o(est)e(of)i (the)f(chapter)g(discusses)h(each)f(in)h(detail,)e(covering)i(what)g (this)g(simple)g(ex-)440 1677 y(ample)d(does)h(not)h(mention,)f (including)h(job)f(failur)o(e)f(and)g(cancellation)h(and)f(how)h(data) 440 1792 y(is)c(actually)f(managed.)440 2052 y Fp(2.1.1)99 b(Information)24 b(Service)h(Component)440 2225 y Fz(The)c(str)o(uctur) o(ed)g(decentralised)f(overlay)h(network)h(designs)g(described)e(in)i (Section)f(1.4)440 2339 y(support)32 b(a)g(hash)g(table)f(interface.)g (On)i(top)f(of)g(this,)g(the)g(information)h(service)f(must)440 2454 y(pr)o(esent)25 b(a)f(\002le)i(system)f(interface)g(with)g (several)g(featur)o(es,)e(to)j(some)f(extent)g(similar)h(to)440 2569 y(what)21 b(operating)g(systems)g(pr)o(ovide.)565 2683 y(First)k(of)f(all,)g(with)i(a)e(lar)o(ge-scale)e(system)k(it)f (is)g(important)g(to)g(be)f(able)g(to)h(str)o(uctur)o(e)440 2798 y(the)30 b(information.)g(The)g(classical)f(way)h(to)g(do)f(this)i (is)f(to)g(support)g(dir)o(ectories)e(which)440 2912 y(gives)j(a)f(tr)o(ee)f(str)o(uctur)o(e)h(\(or)g(just)h(a)f(dir)o (ected)f(acyclic)h(graph)g(if)g(a)g(\002le)h(can)f(appear)f(in)440 3027 y(multiple)k(dir)o(ectories\).)e(The)i(information)g(service)f (should)i(support)f(dir)o(ectories)e(by)440 3141 y(having)26 b(the)g(\002le)g(operations)h(in)f(its)g(interface)f(be)h(awar)o(e)e (of)i(them)g(and)f(by)h(supplying)440 3256 y(special)20 b(operations)h(for)g(cr)o(eating)f(and)g(listing)i(dir)o(ectory)e (contents.)565 3370 y(Furthermor)o(e,)g(since)g(the)h(grid)f(is)h (intended)g(to)g(span)f(multiple)h(or)o(ganisations,)g(it)g(is)440 3485 y(important)h(to)h(support)f(access)f(contr)o(ol.)h(This)h (implies)f(the)g(need)g(for)g(the)g(concept)g(of)g(a)440 3600 y(user)j(in)h(the)f(system)h(and)f(for)g(user)g(authentication.)h (T)-8 b(o)26 b(be)f(able)g(to)g(administrate)g(the)440 3714 y(users)d(conveniently)-9 b(,)23 b(the)f(information)h(service)e (must)i(also)f(support)h(forming)f(gr)o(oups)440 3829 y(of)31 b(users)g(so)h(that)f(rights)h(can)e(be)h(granted)f(to)i(a)f (certain)f(gr)o(oup.)h(The)g(gr)o(oup)g(system)440 3943 y(should)f(be)f(\003exible)g(enough)h(that)f(it)g(is)g(possible)h(for)f (any)g(users)g(to)g(cr)o(eate)f(arbitrary)440 4058 y(gr)o(oups.)19 b(This,)h(together)f(with)h(the)g(access)e(contr)o(ol,)i(makes)f(it)g (possible)h(to)g(form)f(ad)g(hoc)440 4172 y(virtual)h(or)o (ganisations.)565 4287 y(As)34 b(mentioned)i(in)g(Section)f(1.3,)e(the) j(information)g(service)e(must)i(also)f(support)440 4402 y(some)22 b(means)g(of)g(synchr)o(onisation.)h(One)f(part)e(of)i(this)g (is)g(to)g(be)g(able)f(to)h(make)f(changes)440 4516 y(to)27 b(a)g(\002le)g(without)h(experiencing)e(race)g(conditions)j(that)d(may) h(lead)f(to)i(a)e(lost)h(update.)440 4631 y(For)17 b(instance,)f(if)g (two)i(grid)e(participants)g(at)g(the)g(same)h(time)f(r)o(ead)f(the)i (same)f(\002le,)g(change)440 4745 y(it)23 b(and)f(write)h(the)g(r)o (esult)f(in)h(the)g(\002le)g(system,)g(one)g(of)g(the)g(participants)f (will)h(overwrite)440 4860 y(the)29 b(changes)f(of)h(the)g(other)f (participants.)g(T)-8 b(o)29 b(solve)g(this)h(pr)o(oblem,)e(the)g (information)440 4974 y(service)22 b(should)h(support)g(\002le)g (locks,)g(so)g(that)g(a)f(grid)g(participant)g(can)h(lock)g(a)f(\002le) g(tem-)440 5089 y(porarily)f(to)g(exclude)f(others)h(fr)o(om)f(it.)565 5204 y(Another)35 b(part)f(of)h(coor)o(dination)g(is)g(the)h(ability)f (to)g(let)g(other)g(grid)g(participants)440 5318 y(know)25 b(that)f(something)h(has)f(happened.)f(Since)g(the)h(information)h(in)f (the)g(information)1831 5662 y(25)p eop %%Page: 26 28 26 27 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(service)21 b(is)i(divided)e(into)i (\002les,)f(it)g(is)g(natural)f(to)i(support)f(subscription)h(to)f (noti\002cation)440 646 y(of)g(\002le)h(changes)f(so)h(that)f(when)h (the)f(\002le)g(is)h(changed,)e(the)i(subscribers)f(ar)o(e)e (noti\002ed)j(by)440 760 y(the)18 b(information)h(service.)f(W)-5 b(ithout)19 b(this)g(featur)o(e,)d(the)j(other)f(grid)g(participants)g (would)440 875 y(have)g(to)i(r)o(esort)e(to)h(polling)h(the)f(\002le)g (which)h(r)o(esults)e(in)i(either)e(slower)i(r)o(esponse)e(times)h(if) 440 990 y(the)h(polling)g(interval)f(is)h(long,)h(or)e(a)g(higher)h (over)o(head)e(if)i(the)f(polling)i(interval)e(is)h(short.)565 1104 y(Finally)-9 b(,)29 b(while)h(most)g(distributed)f(hash)h(tables)f (consider)g(all)g(participants)g(to)h(be)440 1219 y(peers,)18 b(the)i(information)g(service)f(must)h(also)f(support)h(a)f(client)g (mode)h(of)f(operation)h(for)440 1333 y(those)h(participants)g(that)f (ar)o(e)g(not)h(part)f(of)h(the)g(fabric.)565 1448 y(T)-8 b(o)32 b(sum)g(up,)f(the)g(information)i(service)e(is)h(a)f(str)o (uctur)o(ed)f(decentralised)h(overlay)440 1562 y(network)21 b(that)g(supports:)565 1743 y Fo(\017)41 b Fz(A)20 b(\002le)h(system)g (interface)f(with)h(support)g(for)g(dir)o(ectories.)565 1924 y Fo(\017)41 b Fz(Users,)20 b(gr)o(oups)g(and)h(access)f(contr)o (ol.)565 2105 y Fo(\017)41 b Fz(File)21 b(locks)g(for)g(mutual)f (exclusion.)565 2286 y Fo(\017)41 b Fz(Noti\002cation)21 b(of)g(\002le)g(changes.)565 2467 y Fo(\017)41 b Fz(Fabric)20 b(mode)h(and)f(client)h(mode.)440 2728 y Fp(2.1.2)99 b(Data)25 b(Service)g(Component)440 2901 y Fz(The)h(lar)o(ge)f (quantity)i(of)f(input)h(and)e(output)i(data)e(involved)h(in)h(the)f (curr)o(ent)f(and)h(pr)o(e-)440 3015 y(dicted)g(futur)o(e)g(grid)h (jobs)h(means)f(that)f(it)h(is)h(important)f(to)g(handle)g (transportation)g(of)440 3130 y(the)20 b(data)f(on)i(the)g(grid)f(ef)o (\002ciently)-9 b(.)19 b(For)h(instance,)h(although)g(it)f(would)h(be)f (theor)o(etically)440 3244 y(possible)29 b(to)g(stor)o(e)f(the)h(12-14) d(petabytes)i(pr)-6 b(.)28 b(year)f(generated)h(in)h(the)f(A)-6 b(TLAS)27 b(exper)o(-)440 3359 y(iment)k(in)f(the)g(information)h (service,)e(doing)i(so)g(would)f(add)f(a)h(sever)o(e)e(performance)440 3473 y(r)o(equir)o(ement)c(that)h(may)f(be)h(dif)o(\002cult)f(to)h (ful\002l)g(given)g(the)f(other)h(r)o(equir)o(ements)f(of)h(the)440 3588 y(information)18 b(service.)d(A)i(separate)e(data)g(service)h(is)h (mor)o(e)g(\003exible)f(\226)h(it)f(can)h(focus)g(solely)440 3703 y(on)k(delivering)g(and)f(storing)i(lar)o(ge)e(amounts)h(of)g (data.)565 3817 y(The)28 b(data)f(service)h(design)h(we)f(describe)g (is)h(quite)g(simple)f(and)g(based)g(on)h(an)f(un-)440 3932 y(derlying)23 b(transportation)h(pr)o(otocol)f(and)g(storage)g (method,)g(e.g.)f(HTTP)-11 b(,)24 b(FTP)-11 b(,)23 b(scp)g([52)o(])440 4046 y(or)g(SFS)g([32)n(].)g(The)g(interface)f(should)i(be)e(minimal)i (to)g(make)e(it)i(easy)e(to)i(r)o(eplace)d(it)i(with)440 4161 y(another)e(mor)o(e)f(advanced)f(design,)i(if)g(needed.)565 4275 y(Fr)o(om)e(the)g(system)g(r)o(equir)o(ements,)g(it)g(must)g(be)g (possible)g(to)h(str)o(uctur)o(e)e(the)h(data)f(sets)440 4390 y(and)25 b(the)h(management)f(of)h(them)g(needs)f(to)h(be)f(under) g(access)g(contr)o(ol.)g(T)-8 b(o)27 b(avoid)e(two)440 4505 y(parallel)32 b(systems)i(of)e(users)h(and)g(access)f(contr)o(ol)h (mechanisms,)h(the)f(access)f(contr)o(ol)440 4619 y(for)d(the)g(data)g (service)f(should)i(be)f(based)g(on)h(the)f(information)h(service.)f (This)h(can)f(be)440 4734 y(done)23 b(by)f(mapping)h(the)g(str)o(uctur) o(e)f(of)h(the)f(data)g(sets)h(into)g(the)g(information)h(service)e(as) 440 4848 y(a)e(dir)o(ectory)g(hierar)o(chy)-9 b(.)565 4963 y(Since)29 b(the)h(data)f(service)h(must)g(support)g(basic)g(r)o (eplica)f(management)h(to)g(pr)o(otect)440 5077 y(against)19 b(unavailable)f(hosts,)h(the)g(dir)o(ectory)g(hierar)o(chy)f(also)h(pr) o(ovides)f(a)g(place)g(to)i(stor)o(e)440 5192 y(information)31 b(about)f(wher)o(e)f(the)h(r)o(eplicas)e(ar)o(e)h(located.)g(Our)h (simple)g(design)g(should)440 5307 y(only)22 b(support)f(r)o (egistering)f(r)o(eplicas)g(and)g(transferring)h(them.)1831 5662 y(26)p eop %%Page: 27 29 27 28 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 565 531 a Fz(However)-6 b(,)29 b(when)i(a)f(data)f (set)h(is)h(r)o(eplicated,)d(it)i(is)h(possible)g(to)f(choose)h(wher)o (e)f(to)440 646 y(r)o(etrieve)25 b(data)g(fr)o(om)g(and)h(the)g(design) h(should)g(not)g(just)g(try)f(a)f(random)i(site,)f(but)g(base)440 760 y(the)k(choice)h(on)g(measur)o(ements)e(of)h(the)h(network)g (capacity)-9 b(.)28 b(This)j(makes)f(it)h(possible)440 875 y(to)23 b(avoid)f(scenarios)h(wher)o(e)f(a)g(far)o(-away)e(r)o (eplica)h(is)i(chosen)g(instead)g(of)f(a)g(much)h(faster)440 990 y(local)e(r)o(eplica.)565 1104 y(In)29 b(summary)-9 b(,)29 b(the)h(data)e(service)g(is)i(closely)g(r)o(elated)e(to)h(the)h (information)g(service)440 1219 y(and)20 b(should)i(support:)565 1400 y Fo(\017)41 b Fz(A)20 b(minimal)j(interface)d(for)h(r)o (etrieving)f(and)h(storing)h(data,)e(based)h(on)h(an)f(existing)648 1514 y(transfer)16 b(pr)o(otocol.)g(Higher)o(-level)h(str)o(uctur)o(e)f (is)h(achieved)f(thr)o(ough)i(the)f(informa-)648 1629 y(tion)k(service)f(interface.)565 1810 y Fo(\017)41 b Fz(Basic)20 b(r)o(eplica)f(management)i(to)g(avoid)g(unavailable)e (data.)565 1991 y Fo(\017)41 b Fz(Bandwidth)20 b(measur)o(ements)g(to)i (optimise)f(the)g(data)f(transfers.)565 2172 y(Mor)o(e)h(advanced)g (designs)i(ar)o(e)e(possible.)i(For)g(instance,)g(one)g(could)g(design) g(a)f(self-)440 2286 y(or)o(ganising)d(data)e(service)h(that)g (automatically)h(handled)f(r)o(eplication,)f(either)h(designed)440 2401 y(fr)o(om)28 b(the)h(gr)o(ound)g(up)f(or)h(based)f(on)h(a)f (distributed)g(hash)h(table.)f(Unfortunately)-9 b(,)28 b(the)440 2516 y(curr)o(ent)16 b(distributed)g(hash)i(table)e(designs)h (have)g(not)g(been)g(tried)f(and)g(tested)h(with)g(lar)o(ge)440 2630 y(amounts)32 b(of)g(data)e(and)h(suf)o(fer)f(to)h(some)h(degr)o (ee)e(fr)o(om)h(a)g(very)g(rigid)g(str)o(uctur)o(e)g(that)440 2745 y(implies)20 b(loss)f(of)g(contr)o(ol.)g(It)g(would)h(be)e(a)h (major)g(undertaking)g(to)g(addr)o(ess)f(these)h(issues)440 2859 y(in)i(a)g(design)g(and)f(test)h(the)g(r)o(esult,)f(and)g(outside) h(the)g(time)g(frame)f(of)h(this)g(pr)o(oject.)440 3119 y Fp(2.1.3)99 b(Resource)25 b(Components)440 3292 y Fz(Each)20 b(grid)h(r)o(esour)o(ce)f(is)h(r)o(epr)o(esented)e(by)i(a)g(component)h (that)f(acts)f(as)h(an)g(intermediary)440 3407 y(between)e(the)g(grid)g (and)g(the)g(r)o(esour)o(ce,)f(e.g.)g(a)h(cluster)g(gateway)f(or)h(a)g (storage)g(server)-6 b(.)18 b(In)440 3522 y(general,)j(the)h(component) h(needs)f(to)g(r)o(egister)g(itself)g(in)g(the)g(information)h (service,)e(con-)440 3636 y(tinually)g(r)o(eport)f(its)h(status,)g(r)o (eceive)e(and)i(r)o(un)g(available)e(jobs)j(and)e(deal)g(with)i(failur) o(es.)565 3751 y(The)h(actual)g(execution)i(of)e(a)h(job)g(and)g (management)g(of)g(the)g(r)o(esour)o(ce)e(is)i(of)g(course)440 3865 y(speci\002c)f(for)f(the)h(type)f(of)h(r)o(esour)o(ce.)e(T)-8 b(o)23 b(be)f(able)g(to)h(work)g(for)g(a)f(grid)g(like)h(Nor)o(duGrid,) 440 3980 y(a)d(cluster)h(r)o(esour)o(ce)e(and)i(a)f(storage)g(r)o (esour)o(ce)g(component)i(must)f(be)g(designed.)440 4240 y Fp(2.1.4)99 b(User)24 b(Components)440 4413 y Fz(The)d(most)h(basic)f (user)g(component)h(is)g(a)e(job)i(submission)h(component.)f(It)g (should)f(sup-)440 4528 y(port:)565 4709 y Fo(\017)41 b Fz(Submitting)21 b(jobs)h(via)e(the)h(information)h(service.)565 4890 y Fo(\017)41 b Fz(Monitoring)21 b(and)g(management)g(of)f(the)h (submitted)g(jobs)h(of)f(the)g(user)-6 b(.)565 5071 y Fo(\017)41 b Fz(Handle)20 b(input)h(and)f(output)i(data)d(via)i(the)f (data)g(service.)565 5252 y(A)j(deployed)h(grid)g(will)h(most)g(likely) f(have)g(several)f(other)i(user)f(components.)h(For)440 5366 y(instance,)c(Nor)o(duGrid)f(curr)o(ently)h(has)g(a)g(web)f (monitoring)j(interface)d(which)i(with)g(our)1831 5662 y(27)p eop %%Page: 28 30 28 29 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(design)23 b(simply)h(would)g(be)e (another)h(user)g(component)h(with)g(some)g(glue)f(code)f(for)h(ex-)440 646 y(tracting)h(information)i(fr)o(om)e(the)h(information)g(service)f (and)g(formatting)h(it)g(as)f(HTML)440 760 y(upon)d(r)o(equests)g(fr)o (om)f(a)h(web)f(server)-6 b(.)565 875 y(Given)32 b(the)f(design)h(of)g (the)f(other)h(components)h(as)e(explained)g(in)h(the)g(following)440 990 y(sections,)24 b(the)f(job)h(submission)h(component)g(should)f(be)f (straight-forwar)o(d)f(to)h(design.)440 1104 y(Hence,)d(we)h(do)g(not)g (discuss)h(it)f(in)g(the)g(following.)440 1412 y Fr(2.2)119 b(Information)29 b(Service)440 1616 y Fz(As)18 b(mentioned,)g(the)g (information)h(service)e(is)h(a)f(\002le)h(system)h(in)f(which)h (\002les)f(contain)g(the)440 1731 y(information)k(and)e(dir)o(ectories) g(give)h(the)g(str)o(uctur)o(e.)565 1846 y(Although)d(the)f(grid)g(is)g (built)h(upon)g(collaboration,)f(it)g(is)h(important)f(for)g(many)h (prac-)440 1960 y(tical)j(use)g(cases)g(that)g(the)g(collaboration)g (can)g(be)g(contr)o(olled)g(to)h(pr)o(otect)e(the)h(virtual)g(or)o(-) 440 2075 y(ganisations)29 b(fr)o(om)f(each)g(other)-6 b(.)28 b(W)-8 b(e)29 b(implement)g(this)g(in)g(the)f(design)h(by)f(str) o(ucturing)440 2189 y(the)i(\002le)f(system)i(with)f(multiple)g(r)o (oots.)g(Each)f(grid)g(participant)g(and)g(each)g(gr)o(oup)g(of)440 2304 y(participants)20 b(get)h(their)g(own)g(dir)o(ectory)f(r)o(oot,)h (in)g(which)h(they)f(have)f(the)h(full)g(contr)o(ol.)565 2418 y(A)j(virtual)h(or)o(ganisation)h(is)g(then)f(a)g(separate)f(dir)o (ectory)g(r)o(oot)i(in)f(which)i(ther)o(e)d(is)i(a)440 2533 y(list)i(of)f(associated)g(users)h(and)f(r)o(esour)o(ces)f(and)h (a)g(job)h(queue)f(with)i(scheduling)f(infor)o(-)440 2648 y(mation.)e(Jobs)h(ar)o(e)d(submitted)i(in)h(the)f(virtual)g(or)o (ganisation)g(by)g(placing)g(them)h(in)f(the)440 2762 y(job)21 b(queue.)565 2877 y(The)f(following)j(sections)f(explain)e(in) h(detail)g(how)g(users)g(and)g(gr)o(oups)f(ar)o(e)g(r)o(ealised,)440 2991 y(how)j(the)f(\002le)g(system)g(is)g(mapped)f(to)h(a)g (distributed)f(hash)h(table,)f(the)h(means)g(of)g(access)440 3106 y(contr)o(ol,)17 b(security)h(considerations)g(for)f(the)h (distributed)f(hash)g(table)g(and)g(how)h(noti\002ca-)440 3220 y(tion)k(and)e(mutual)i(exclusion)f(ar)o(e)f(grafted)f(onto)j(the) f(decentralised)f(overlay)h(network.)440 3335 y(Note)28 b(that)g(in)g(the)g(context)h(of)f(the)g(information)g(service,)g(a)f (user)h(denotes)g(any)g(party)440 3450 y(with)23 b(access)f(to)h(the)g (service)e(and)i(could)f(be)g(a)g(r)o(esour)o(ce)f(as)h(well)h(as)f(a)g (human)h(job)g(sub-)440 3564 y(mitter)-6 b(.)565 3679 y(The)18 b(information)i(system)f(has)g(a)f(high-level)h(interface.)e (For)i(the)g(\002le)g(system)g Ft(cr)o(eate)440 3793 y(dir)o(ectory)p Fz(,)f Ft(r)o(emove)h(dir)o(ectory)p Fz(,)g Ft(list)h(dir)o(ectory)p Fz(,)e Ft(cr)o(eate)g(\002le)p Fz(,)h Ft(delete)g(\002le)p Fz(,)g Ft(write)h(\002le)p Fz(,)f Ft(r)o(ead)440 3908 y(\002le)p Fz(,)k Ft(subscript)g(to)g (noti\002cation)p Fz(,)h Ft(cancel)e(noti\002cation)i(subscription)p Fz(,)g Ft(lock)33 b Fz(and)22 b Ft(unlock)440 4022 y Fz(ar)o(e)16 b(supported.)i(For)g(administrating)g(users)f(the)h (system)h(pr)o(ovides)e Ft(cr)o(eate)f(user)p Fz(,)h Ft(delete)440 4137 y(user)p Fz(,)30 b Ft(cr)o(eate)e(gr)o(oup)p Fz(,)h Ft(delete)h(gr)o(oup)p Fz(.)f(For)h(rights)h(on)g(individual)f (\002les)g(or)g(dir)o(ectories)440 4252 y Ft(grant)21 b(right)p Fz(,)g Ft(deny)f(right)30 b Fz(and)20 b Ft(list)i(rights)28 b Fz(ar)o(e)19 b(supported.)440 4512 y Fp(2.2.1)99 b(Users)24 b(and)h(Groups)440 4685 y Fz(A)20 b(cornerstone)i(in)f(access)f(contr)o (ol)h(is)g(that)g(the)g(parties)f(have)g(some)i(means)e(of)h(pr)o (oving)440 4799 y(their)26 b(identity)-9 b(.)25 b(Cryptography)g (enables)g(this)h(with)h(an)e(asymmetric)g(key)h(pair)f(with)h(a)440 4914 y(public)21 b(and)f(a)g(private)g(key)-9 b(.)21 b(The)g(private)e(key)i(can)g(be)f(used)h(to)g(pr)o(oduce)f(signatur)o (es)g(or)440 5028 y(r)o(espond)h(to)i(authentication)f(messages)g(in)g (such)h(a)e(way)h(that)g(the)g(authenticity)g(can)g(be)440 5143 y(veri\002ed)e(with)i(the)f(public)f(key)-9 b(.)565 5258 y(Hence,)21 b(each)g(user)h(of)f(the)h(information)h(service,)e (both)h(grid)g(users,)f(r)o(esour)o(ces)g(and)440 5372 y(the)i(fabric,)e(must)i(be)g(equipped)f(with)i(a)e(private)g(key)g (and)h(the)f(corr)o(esponding)h(public)1831 5662 y(28)p eop %%Page: 29 31 29 30 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(key)19 b(must)g(be)f(made)g(available)f (to)i(all)g(participants,)f(in)h(a)f(scalable)g(and)g(r)o(obust)g (manner)440 646 y(to)j(ful\002l)g(the)g(design)g(goals.)565 760 y(The)g(distribution)h(of)f(the)g(public)h(keys)f(can)g(be)g(done)g (within)i(the)e(information)h(ser)o(-)440 875 y(vice)c(itself,)f (however)-6 b(.)18 b(Each)f(user)h(is)g(given)g(a)f(separate)g(dir)o (ectory)g(r)o(oot)h(wher)o(e)f(the)h(pub-)440 990 y(lic)k(key)f(is)h (placed)e(in)i(a)f(special)g(\002le.)g(T)-8 b(o)22 b(make)f(it)h (impossible)g(to)g(tamper)f(with)h(the)g(key)-9 b(,)440 1104 y(we)22 b(employ)i(a)d(trick,)i(self-certifying)f(pathnames,)g (inspir)o(ed)g(fr)o(om)g(the)g(Self-certifying)440 1219 y(File)h(System)f(\(SFS\))f([32)o(].)g(The)i(idea)e(is)i(that)f(the)h (name)f(of)g(the)h(dir)o(ectory)e(r)o(oot)h(of)h(a)e(user)440 1333 y(is)30 b(the)g(hash)h(of)f(the)g(user)6 b('s)30 b(public)g(key)-9 b(.)30 b(The)f(public)h(key)g(can)g(then)g(be)g (checked)g(for)440 1448 y(alterations)21 b(by)f(hashing)i(it)f(and)g (comparing)g(it)g(with)g(its)g(path.)565 1562 y(W)-5 b(ith)23 b(this)g(simple)f(idea,)f(it)i(is)f(possible)h(to)g(interact)e (with)i(the)g(information)g(service)440 1677 y(only)i(if)g(one)g(has)f (a)g(private)g(key)g(corr)o(esponding)h(to)g(an)f(existing)h(dir)o (ectory)f(r)o(oot)g(with)440 1792 y(an)30 b(public)h(key)f(\002le.)g (Requests)i(that)e(cannot)h(be)f(veri\002ed)f(with)j(a)d(public)i(key)f (in)h(the)440 1906 y(information)22 b(service)e(should)h(be)g(denied.) 440 2147 y Fv(Adding)e(users)440 2320 y Fz(It)e(is)h(still)g(necessary) f(with)h(some)g(pr)o(ocedur)o(e)d(for)i(adding)g(new)g(users.)g(They)h (should)g(not)440 2435 y(be)e(allowed)g(\226)g(and)g(ar)o(e)f(not)i (allowed,)f(due)g(to)g(the)h(above)f(scheme)g(\226)g(to)h(add)e (themselves.)440 2549 y(Instead,)22 b(a)f(pr)o(ospective)h(user)g (generates)g(a)f(new)i(key)f(pair)g(and)g(sends)g(the)h(public)f(key) 440 2664 y(to)g(someone)g(with)g(access)f(to)h(the)g(information)g (service.)f(The)g(latter)g(can)g(then)h(sign)g(the)440 2779 y(key)17 b(and)f(write)g(a)g(new)h(key)g(\002le)g(on)g(behalf)f (of)g(the)h(pr)o(ospective)f(user)-6 b(.)16 b(When)h(the)f(key)h (\002le)440 2893 y(is)h(in)h(the)f(information)h(service,)e(the)h(user) g(is)g(ef)o(fectively)e(added)h(and)g(can)h(start)f(cr)o(eating)440 3008 y(\002les)27 b(in)h(the)f(dir)o(ectory)f(r)o(oot)h(\226)f(all)h (\002les)g(under)g(the)g(r)o(oot)g(of)g(the)g(user)f(belongs)i(to)f (that)440 3122 y(user)21 b(and)f(can)g(only)i(be)f(accessed)e(by)i (others)g(if)g(the)g(user)f(grants)h(the)g(access.)565 3237 y(Ther)o(e)14 b(still)j(seems)f(to)h(be)e(a)h(chicken-and-egg)f (pr)o(oblem)g(with)i(adding)f(the)g(\002rst)g(user)-6 b(.)440 3351 y(The)27 b(solution)h(is)f(to)f(generate)g(a)g(key)h(pair) f(when)h(the)f(grid)h(is)g(started)e(and)h(distribute)440 3466 y(the)i(public)f(key)h(of)g(that)f(key)h(pair)f(with)h(the)g (softwar)o(e.)e(The)i(private)e(key)i(of)f(the)h(key)440 3581 y(pair)23 b(is)h(then)g(used)f(to)h(sign)g(the)g(public)g(key)f (of)h(the)f(\002rst)h(r)o(eal)e(user)i(and)f(thr)o(own)h(away)440 3695 y(afterwar)o(ds.)565 3810 y(The)k(key)h(signing)h(step)e(is)h (important)g(for)g(two)g(r)o(easons.)f(It)g(enables)h(a)f(node)g(that) 440 3924 y(r)o(eceives)16 b(a)g(key)h(\002le)g(to)g(check)g(that)f(the) h(key)g(is)g(indeed)f(added)g(by)h(someone)g(with)h(access)440 4039 y(to)j(the)g(information)h(service)e(and)h(not)g(just)h(somehow)g (smuggled)g(in.)f(It)g(also)g(pr)o(ovides)440 4153 y(traceability)g (\226)h(it)g(is)h(possible)f(to)h(\002nd)f(out)h(who)g(is)f (authorising)i(someone)f(to)f(enter)g(the)440 4268 y(grid.)k(Since)g (the)g(authorising)i(user)e(may)g(leave)f(the)i(system)g(at)f(some)g (point,)h(another)440 4383 y(user)21 b(may)f(have)h(to)g(sign)g(the)g (key)g(to)g(avoid)g(that)f(it)h(is)g(invalidated.)565 4497 y(The)26 b(traceability)f(yields)i(several)e(possibilities)i(for)f (tr)o(ust)h(models.)g(By)f(de\002ning)h(a)440 4612 y(global)i(policy)h (that)f(only)h(allows)f(a)g(well-de\002ned)f(gr)o(oup)h(to)h(sign)f (keys,)g(the)h(system)440 4726 y(can)24 b(be)f(tightly)i(contr)o (olled,)f(similar)g(to)h(a)e(UNIX)h(system)h(wher)o(e)e(by)h(default)f (only)i(the)440 4841 y(r)o(oot)d(user)g(can)g(add)f(users.)h(But)f (allowing)j(everyone)d(with)i(access)f(to)g(the)g(information)440 4955 y(service)g(to)h(sign)h(keys)f(is)g(much)g(mor)o(e)g(\003exible)f (and)h(r)o(elatively)e(safe.)h(If)g(a)h(user)k Fu(A)d Fz(adds)440 5070 y(a)k(malicious)i(user)i Fu(B)q Fz(,)f Fu(B)e Fz(cannot)g(access)g(any)f(of)h(the)g(other)g(data)f(in)h(the)g (information)440 5185 y(service)22 b(unless)h(speci\002cally)g(given)f (access)g(to)h(it.)j Fu(B)d Fz(can)f(only)h(add)f(data)f(or)h(new)h (users)440 5299 y(\226)d(and)h(once)g(he)f(is)i(r)o(evealed,)c(the)j (data)e(can)i(be)f(r)o(emoved.)1831 5662 y(29)p eop %%Page: 30 32 30 31 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 565 531 a Fz(One)27 b(thing)h(that)f(is)h(lacking)f (fr)o(om)g(the)g(above)f(description)i(is)f(how)h(to)g(determine)440 646 y(who)35 b(may)e(r)o(emove)h(a)f(user)g(and)h(how)g(a)g(user)f(is)h (r)o(emoved.)f(W)-8 b(e)34 b(cannot)g(allow)g(the)440 760 y(user)d(himself)g(to)g(change)f(who)i(has)f(the)f(contr)o(ol)i (over)e(him,)h(and)f(at)h(the)g(same)f(time)440 875 y(it)g(is)g(dif)o (\002cult)f(to)h(support)g(changes)f(in)h(this)h(at)e(all)g(while)i (still)f(keeping)g(the)f(key)h(\002le)440 990 y(self-contained.)20 b(So)g(we)h(opt)g(for)f(a)g(write-once)h(solution)h(wher)o(e)e(the)h (list)g(of)f(authorised)440 1104 y(r)o(emovers)27 b(is)g(appended)f(to) h(the)h(key)f(\002le)g(and)g(cover)o(ed)f(by)h(the)g(signing)i(by)e (the)g(user)440 1219 y(who)20 b(authorises)f(the)g(new)h(user)-6 b(.)18 b(The)h(hash)g(of)g(the)h(key)f(\002le)g(should)h(include)f (this)g(list)h(to)440 1333 y(ensur)o(e)j(that)g(it)g(is)h(invariant.)e (When)i(a)f(user)g(is)g(deleted,)f(his)i(public)f(key)h(is)f(marked)g (as)440 1448 y(being)i(invalid.)g(If)f(the)h(key)g(was)g(just)g(r)o (emoved)f(fr)o(om)h(the)g(system,)g(he)g(could)g(insert)g(it)440 1562 y(again)20 b(and)h(r)o(egain)f(his)h(former)g(status)f(since)h(it) g(appears)f(to)h(be)f(valid.)440 1804 y Fv(Groups)440 1977 y Fz(W)-8 b(e)33 b(design)f(gr)o(oups)h(in)g(a)f(manner)g(similar) h(to)g(the)f(users)h(by)f(giving)i(each)e(gr)o(oup)g(a)440 2091 y(public)24 b(key)f(\002le.)h(However)-6 b(,)23 b(this)h(administrative)f(key)h(is)g(only)g(used)f(to)h(de\002ne)g(gr)o (oup)440 2206 y(membership)j(since)f(each)g(gr)o(oup)g(should)i(have)d (two)i(types)g(of)f(users)h(associated,)e(or)o(-)440 2320 y(dinary)h(gr)o(oup)f(members)h(and)f(gr)o(oup)h(administrators,)g (wher)o(e)f(only)i(the)f(latter)f(have)440 2435 y(access)20 b(to)h(the)g(private)f(administrative)g(key)h(of)g(the)g(gr)o(oup.)565 2549 y(Then)f(a)g(list)g(of)g(special)g(gr)o(oup)g(keys)g(is)h(placed)e (in)h(the)h(r)o(oot)f(dir)o(ectory)f(of)h(the)h(gr)o(oup)440 2664 y(with)e(the)g(last)g(of)f(the)h(keys)g(being)g(the)f(active)g (one.)h(The)f(active)g(key)h(is)g(used)f(for)g(r)o(eading)440 2779 y(and)h(writing)i(\002les)f(and)f(in)i(general)e(authenticating)h (actions)g(done)g(by)g(someone)h(in)f(the)440 2893 y(gr)o(oup.)i(The)h (r)o(eason)f(ther)o(e)g(needs)g(to)h(be)f(mor)o(e)g(than)h(one)g(of)g (these)f(keys)h(is)g(that)g(a)f(new)440 3008 y(key)d(must)g(be)f (generated)g(every)g(time)h(someone)g(is)g(r)o(emoved)f(fr)o(om)g(the)h (gr)o(oup)f(\226)g(hence)440 3122 y(only)h(the)f(latest)f(key)h(is)h (active.)d(The)i(old)g(keys)g(ar)o(e)f(kept)h(to)g(not)g(have)g(to)g(r) o(ewrite)f(all)g(data)440 3237 y(when)k(a)g(user)f(is)h(r)o(emoved.)565 3351 y(The)c(private)g(key)h(of)g(the)g(active)g(key)g(must)g(somehow)i (be)d(distributed)h(to)g(the)g(mem-)440 3466 y(bers)29 b(of)h(the)g(gr)o(oups.)g(This)g(is)g(possible)h(by)e(making)i(a)e (copy)h(of)g(the)g(private)f(key)h(for)440 3581 y(each)c(member)h(and)f (encrypting)i(that)f(copy)g(with)g(the)g(public)g(key)g(of)g(the)g (member)g(\226)440 3695 y(the)e(technique)h(is)f(further)f(discussed)h (under)f(the)h(topic)h(of)e(access)h(contr)o(ol)g(in)g(Section)440 3810 y(2.2.3.)565 3924 y(The)e(administrative)h(key)f(is)i(separate)d (fr)o(om)h(the)h(gr)o(oup)g(keys)g(since)g(it)g(is)g(not)g(pos-)440 4039 y(sible)c(to)f(change)h(this)g(key)f(without)i(cr)o(eating)d(a)h (new)h(gr)o(oup)f(because)f(of)i(\002le)f(of)h(the)f(key)440 4153 y(is)k(using)g(a)f(self-certifying)g(pathname.)f(Thus)i(it)g(is)f (possible)h(to)g(add)e(new)i(administra-)440 4268 y(tors)h(to)f(a)g(gr) o(oup)g(simply)i(by)e(giving)h(them)g(the)g(private)e(administrative)h (key)-9 b(,)23 b(but)g(it)h(is)440 4383 y(not)h(possible)g(to)g(r)o (emove)e(administrators)i(again)e(because)h(they)g(cannot)h(be)f(for)o (ced)f(to)440 4497 y(for)o(get)i(the)h(private)f(key)-9 b(.)26 b(For)g(the)g(same)g(r)o(eason,)f(the)h(administrative)g(key)g (should)h(be)440 4612 y(handled)20 b(with)i(car)o(e.)565 4726 y(Note)i(that)h(users)g(may)g(still)g(be)g(able)f(to)h(write)g (new)g(data)f(with)h(an)g(old)g(gr)o(oup)f(key)440 4841 y(as)f(it)g(may)g(not)h(be)f(possible)g(to)h(determine)e(whether)i(a)e (\002le)i(is)f(just)h(an)f(old)g(r)o(eplica)f(or)h(a)440 4955 y(completely)d(new)g(\002le.)f(But)g(it)h(is)g(not)g(possible)g (to)g(overwrite)f(data)f(written)i(with)g(a)f(later)440 5070 y(key)-9 b(,)24 b(so)h(if)f(necessary)h(this)g(can)f(be)g (combated)g(by)h(r)o(ewriting)f(all)g(information)i(written)440 5185 y(by)21 b(a)f(gr)o(oup.)565 5299 y(T)-8 b(o)21 b(sum)g(up,)g(the)g (user)f(and)g(gr)o(oup)h(design)g(just)h(described)d(supports)i(that:) 1831 5662 y(30)p eop %%Page: 31 33 31 32 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 565 531 a Fo(\017)41 b Fz(Everyone)20 b(can)h(add)e(a)i(new)g(user)f(or)h(gr)o(oup.)565 710 y Fo(\017)41 b Fz(New)22 b(users)h(and)g(gr)o(oups)g(get)g(their)g(own) g(dir)o(ectory)f(r)o(oot)h(wher)o(e)g(they)g(have)f(the)648 824 y(full)e(contr)o(ol.)565 1003 y Fo(\017)41 b Fz(Users)26 b(and)g(gr)o(oups)h(can)f(be)h(deleted)e(only)j(by)f(a)f(pr)o (ede\002ned)f(list)j(of)f(users)f(that)648 1118 y(the)20 b(authorising)i(user)f(has)g(agr)o(eed)e(to.)565 1296 y Fo(\017)41 b Fz(Gr)o(oups)30 b(have)g(administrators)g(that)g(fully)h (contr)o(ol)f(the)g(gr)o(oup,)g(and)g(or)o(dinary)648 1411 y(members)20 b(that)h(can)g(be)f(added)f(and)h(r)o(emoved)g(at)h (will.)565 1589 y Fo(\017)41 b Fz(The)20 b(members)g(of)g(a)g(gr)o(oup) g(can)g(be)g(chosen)h(arbitrarily)-9 b(,)18 b(so)j(that)f(it)h(is)f (possible)h(to)648 1704 y(form)f(gr)o(oups)h(of)g(gr)o(oups.)440 1963 y Fp(2.2.2)99 b(Files)26 b(and)e(Directories)440 2136 y Fz(T)-8 b(o)32 b(stor)o(e)e(the)h(\002le)g(system)h(in)f(the)g (distributed)g(overlay)g(network,)g(the)g(\002les)g(and)g(di-)440 2250 y(r)o(ectories)g(must)i(be)f(mapped)f(to)h(data)f(blocks)i(r)o (efer)o(enced)c(by)j(keys,)g(as)g(outlined)h(in)440 2365 y(Section)23 b(1.4.)f(Our)h(mapping)g(is)h(simple:)f(each)f(\002le)i (is)f(mapped)f(to)i(a)e(single)i(block)f(with)440 2480 y(the)h(key)h(being)f(the)h(hash)f(of)h(the)f(\002le)g(path)h(\(which)f (is)h(plainly)g(unique\).)f(The)g(key)h(and)440 2594 y(some)c(other)g(metadata)e(ar)o(e)g(stor)o(ed)h(along)h(with)g(the)f (contents)i(of)e(the)h(\002le)g(in)f(the)h(block.)440 2709 y(A)28 b(dir)o(ectory)f(is)h(mapped)f(as)h(an)f(or)o(dinary)h (\002le)g(that)g(contains)g(a)g(list)g(of)g(the)g(\002les)h(and)440 2823 y(subdir)o(ectories)20 b(in)h(the)g(dir)o(ectory)-9 b(.)565 2938 y(In)22 b(general,)e(\002les)i(could)g(be)g(so)g(lar)o(ge) e(that)i(storing)h(them)f(in)g(a)f(single)i(block)f(would)440 3052 y(hurt)27 b(the)g(load)g(balancing)f(of)h(the)g(overlay)f (network.)i(T)-8 b(o)27 b(alleviate)f(this,)h(it)g(would)h(be)440 3167 y(possible)23 b(to)g(split)f(a)g(\002le)h(into)g(several)e (blocks.)i(But)f(this)h(r)o(equir)o(es)f(some)h(extra)e(work)i(to)440 3282 y(ensur)o(e)d(that)h(\002le)g(changes)f(ar)o(e)g(atomic)h(to)g (avoid)f(that)h(\002les)g(end)f(up)h(in)g(an)g(inconsistent)440 3396 y(state)c(if)f(a)h(\002le)g(writer)g(crashes)f(half-way)h(thr)o (ough)g(a)g(write)g(operation.)f(Since)h(we)g(expect)440 3511 y(only)25 b(small)f(amounts)g(of)g(data)e(to)i(be)f(stor)o(ed)g (in)h(the)g(information)h(service,)e(we)g(decide)440 3625 y(against)e(the)g(added)e(complexity)i(of)g(splitting)h(\002les.) 565 3740 y(Lar)o(ge)j(dir)o(ectories)h(could)h(possibly)h(be)f(a)g (performance)f(issue.)h(An)g(informal)g(test)440 3854 y(on)g(a)f(desktop)h(Linux)f(machine)h(listing)g(140175)d(\002les,)i (stor)o(ed)g(in)h(a)f(single)h(\002le)g(would)440 3969 y(consume)c(1912)c(kilobytes,)k(with)f(an)g(average)e(\002le)i(name)f (length)i(of)f Fo(\030)q Fz(13.6)e(characters.)440 4084 y(T)-8 b(o)30 b(r)o(educe)d(the)i(size)g(lar)o(ge)e(dir)o(ectory)i (\002les)g(could)g(be)g(compr)o(essed.)f(The)h(mentioned)440 4198 y(\002le)e(list)g(could)f(be)h(r)o(educed)d(to)j(476)e(kilobytes)j (of)e Fn(gzip)p Fz(-compr)o(essed)f(data.)g(Another)440 4313 y(possibility)h(would)e(be)g(to)h(use)f(a)f(mor)o(e)h(advanced)f (indexing)h(str)o(uctur)o(e,)g(as)f(is)i(used)f(in)440 4427 y(databases,)19 b(instead)h(of)h(a)f(\003at)h(list.)440 4667 y Fv(Block)g(Structure)440 4840 y Fz(A)j(\002le)h(block)g (consists)h(of)e(a)g(header)-6 b(,)23 b(a)h(body)h(and)f(a)g(signatur)o (e.)g(The)g(header)g(contains)440 4955 y(the)j(path)f(of)g(the)h (\002le,)f(a)g(version)h(number)f(to)h(detect)e(and)h(pr)o(event)g(old) g(versions)h(of)g(a)440 5069 y(block)20 b(to)f(overwrite)g(a)g(new)h (version,)f(an)g(access)g(contr)o(ol)h(list)g(to)f(handle)g(access)g (contr)o(ol)440 5184 y(on)29 b(the)f(block)g(\(further)g(described)f (in)h(Section)g(2.2.3\))e(and)i(a)f(number)h(of)g(copies)h(of)f(a)440 5298 y(r)o(ead)22 b(key)h(that)g(enables)g(the)g(users)g(who)h(ar)o(e)e (authorised)h(to)h(r)o(ead)d(the)j(contents)g(of)f(the)440 5413 y(\002le)e(to)g(decrypt)f(the)h(block)h(body)-9 b(.)20 b(Ther)o(e)g(is)h(one)h(copy)f(of)f(the)h(key)g(for)g(each)f (authorised)1831 5662 y(31)p eop %%Page: 32 34 32 33 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(r)o(eader)-6 b(,)26 b(encrypted)i(with)i (the)f(public)f(key)h(of)g(that)g(r)o(eader)-6 b(.)26 b(The)j(body)f(is)i(simply)f(the)440 646 y(contents)22 b(of)e(the)h(\002le,)g(encrypted)f(with)i(the)f(r)o(ead)e(key)-9 b(.)565 760 y(Finally)g(,)29 b(a)g(\002le)h(block)g(is)f(signed)h(by)g (the)f(last)h(user)f(who)h(changed)f(it.)h(This)g(along)440 875 y(with)25 b(the)g(access)f(contr)o(ol)h(list)g(makes)g(it)g (possible)g(for)f(a)g(node)h(r)o(eceiving)f(the)h(block)g(to)440 990 y(determine)e(its)h(authenticity)g(and)f(legality)-9 b(.)23 b(If)g(the)h(block)g(is)g(not)g(authentic)g(or)f(violates)440 1104 y(the)e(access)f(contr)o(ol)h(r)o(estrictions,)g(the)g(r)o (eceiving)f(node)h(should)g(discar)o(d)f(it.)565 1219 y(Public)28 b(key)g(\002les)g(ar)o(e)f(a)g(bit)h(dif)o(fer)o(ent.)e(As) i(mentioned,)g(they)h(consist)g(of)f(a)f(public)440 1333 y(key)22 b(and)g(a)f(list)i(of)f(users)g(and)g(gr)o(oups)g(that)g(may)g (delete)g(the)g(key)-9 b(,)22 b(plus)g(a)g(signatur)o(e)f(by)440 1448 y(the)29 b(party)g(who)h(authorised)f(the)g(key)g(\002le,)g(i.e.)g (someone)h(else)f(than)g(the)g(key)g(owner)-6 b(.)440 1562 y(Furthermor)o(e,)18 b(the)g(position)i(of)f(key)f(\002les)h(in)g (the)f(\002le)h(system)g(is)g(\002xed)f(and)g(determined)440 1677 y(by)i(their)g(contents.)h(This)g(simple)f(str)o(uctur)o(e)g (makes)g(them)g(self-contained)g(and)f(easy)h(to)440 1792 y(check.)440 2033 y Fv(File)g(Operations)440 2206 y Fz(The)e(overlay)g(network)h(consists)g(of)f(client)h(and)e(fabric)g (nodes,)i(as)f(discussed)g(in)g(Section)440 2320 y(2.1.)31 b(The)i(clients)h(do)f(not)g(participate)f(in)h(the)g(data)f(storing)i (and)e(r)o(outing)h(of)g(sear)o(ch)440 2435 y(r)o(equests,)27 b(but)g(instead)g(just)h(contact)f(the)g(fabric)f(nodes.)h(All)g (clients)h(must,)g(however)-6 b(,)440 2549 y(support)30 b(the)g(\002le)h(operations)f(mentioned)h(in)f(the)g(beginning)i(of)e (this)g(section,)h(since)440 2664 y(the)21 b(network)g(communication)i (is)e(on)g(the)g(block)g(level.)565 2779 y(A)29 b(\002le)h(can)f(be)g (r)o(ead)f(by)i(r)o(etrieving)f(the)h(block)g(of)g(the)g(\002le,)g (decrypting)f(the)h(r)o(ead)440 2893 y(key)e(and)f(then)h(decrypting)f (the)h(body)g(using)g(the)g(r)o(ead)e(key)-9 b(.)27 b(T)-8 b(o)28 b(write)g(a)f(\002le,)g(a)g(node)440 3008 y(r)o(etrieves)k(the)h (block)h(of)f(the)h(\002le,)f(r)o(eads)f(it,)h(updates)f(the)i (contents,)g(\002lling)g(in)g(some)440 3122 y(of)f(the)g(meta)g(data,)e (and)i(\002nally)g(stor)o(es)g(the)g(block)g(in)h(the)f(overlay)f (network)i(again.)440 3237 y(Cr)o(eating)f(a)f(\002le)i(or)g(dir)o (ectory)e(involves)i(cr)o(eating)f(the)g(block)h(and)f(storing)i(it)e (in)h(the)440 3351 y(overlay)28 b(network,)i(after)d(which)j(an)e (entry)h(with)h(the)e(name)h(is)g(added)e(to)j(the)e(par)o(ent)440 3466 y(dir)o(ectory)-9 b(.)18 b(Deleting)h(a)g(\002le)g(or)g(dir)o (ectory)g(is)g(done)g(by)g(deleting)g(the)h(entry)f(in)g(the)g(par)o (ent)440 3581 y(dir)o(ectory)h(and)g(then)h(deleting)g(the)g(blocks)h (fr)o(om)e(the)h(network.)565 3695 y(The)28 b(operations)h(that)g (change)f(\002les)h(may)g(r)o(esult)f(in)h(race)f(conditions)i(if)f (multiple)440 3810 y(users)23 b(ar)o(e)f(updating)i(the)f(same)g (\002le.)h(In)f(this)h(case,)f(it)g(is)h(necessary)f(to)h(obtain)f(a)g (mutex)440 3924 y(on)e(the)g(changed)g(\002le.)440 4184 y Fp(2.2.3)99 b(Access)25 b(Control)440 4357 y Fz(Access)e(contr)o(ol)g (in)h(the)g(information)g(system)g(must)g(follow)g(a)f(radically)f(dif) o(fer)o(ent)f(ap-)440 4472 y(pr)o(oach)i(than)h(with)g(a)g(centralised) f(system.)h(Ther)o(e)e(is)j(no)f(central)f(place)g(to)h(ask)g(for)f (au-)440 4587 y(thorisation,)d(which)g(means)f(that)f(each)h(node)g(in) g(the)g(network)h(has)f(to)g(be)f(able)h(to)g(verify)440 4701 y(incoming)24 b(blocks)e(by)h(itself.)e(W)-8 b(e)23 b(operate)e(with)i(two)g(types)f(of)g(r)o(estrictions:)g(only)h(r)o (ead)440 4816 y(and)h(both)h(r)o(ead)e(and)h(write.)g(The)g(permission) i(to)f(add)e(and)h(delete)f(\002les)i(follows)h(fr)o(om)440 4930 y(the)21 b(write)g(permissions)h(of)f(the)f(par)o(ent)g(dir)o (ectory)-9 b(.)1831 5662 y(32)p eop %%Page: 33 35 33 34 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fv(Enforcing)20 b(Read)g(and)g(W)-6 b(rite)19 b(Restrictions)440 704 y Fz(Read)j(r)o(estrictions)h(ar)o(e)f (enfor)o(ced)f(by)i(encrypting)h(the)f(contents)h(of)e(each)h(block)g (with)h(a)440 819 y(randomly)j(generated)f(key)g(that)h(is)g (distributed)g(with)g(the)g(block,)g(encrypted)f(so)h(that)440 933 y(only)c(the)f(authorised)f(r)o(eaders)f(can)i(r)o(ead)e(the)i(key) -9 b(,)21 b(as)g(explained)g(in)i(the)e(pr)o(evious)h(sec-)440 1048 y(tion.)27 b(Since)e(blocks)i(ar)o(e)d(available)h(everywher)o(e)g (in)h(the)g(network,)h(the)f(contents)h Fu(must)440 1163 y Fz(be)20 b(encrypted)h(to)g(be)f(kept)h(secr)o(et.)565 1277 y(Distributing)37 b(the)g(r)o(ead)e(keys)h(with)h(the)g(blocks)g (makes)f(the)h(blocks)g(quite)g(self-)440 1392 y(contained)26 b(and)f(only)i(adds)e(little)h(over)o(head)f(since)h(symmetric)g (encryption)h(keys)f(ar)o(e)440 1506 y(quite)18 b(small)g(\(128-256)c (bits)k(or)f(only)i(16-32)c(bytes\).)i(An)h(alternative)e(is)i(to)g (use)g(static)f(r)o(ead)440 1621 y(keys)24 b(that)g(ar)o(e)f(common)j (to)e(all)g(blocks)h(and)e(stor)o(e)h(them)g(in)h(the)f(information)h (service.)440 1735 y(But)h(the)h(number)g(of)f(possible)i(keys)e(gr)o (ows)h(exponentially)g(in)g(the)g(number)g(of)f(users)440 1850 y(and)i(gr)o(oups)g(since)h(any)f(subset)h(of)g(them)f(may)h(need) f(to)h(be)f(given)g(r)o(ead)f(access,)h(and)440 1965 y(static)21 b(long-term)g(keys)g(ar)o(e)e(mor)o(e)i(susceptible)g(to)g (attacks.)565 2079 y(W)-6 b(rite)22 b(r)o(estrictions)g(ar)o(e)g(enfor) o(ced)f(by)h(verifying)h(incoming)h(blocks.)f(When)g(a)f(node)440 2194 y(r)o(eceives)15 b(an)h(incoming)i(block,)e(it)g(has)h(two)f(ways) h(to)f(check)g(it)h(depending)f(on)h(what)f(kind)440 2308 y(of)23 b(block)h(it)g(is.)g(A)f(key)g(block)h(is)g(veri\002ed)f (by)g(checking)h(that)g(the)f(hash)h(of)g(the)f(contents)440 2423 y(matches)18 b(the)h(r)o(oot)f(part)g(of)g(the)h(\002le)f(path,)g (and)g(checking)h(that)f(the)h(signatur)o(e)f(is)h(corr)o(ect.)565 2537 y(The)29 b(signatur)o(e)g(check)g(may)g(r)o(equir)o(e)f(that)h (the)h(key)f(used)g(for)g(signing)i(is)e(fetched)440 2652 y(and)c(checked,)g(and)g(so)h(forth,)f(but)h(the)f(pr)o(ocedur)o (e)f(should)i(stop)g(at)f(some)h(point)g(with)440 2767 y(the)i(built-in)h(r)o(oot)f(key)g(that)g(is)g(distributed)g(with)h (the)f(softwar)o(e.)f(Otherwise)i(ther)o(e)e(is)440 2881 y(a)f(signing)i(loop,)f(and)g(the)f(key)h(should)g(be)g(r)o(ejected.)e (Since)h(the)h(path)f(of)h(signed)g(keys)440 2996 y(to)f(the)f(r)o(oot) g(key)h(may)f(be)g(quite)h(long,)g(the)f(nodes)h(should)g(cache)f (veri\002ed)f(keys.)i(This)440 3110 y(cache)c(must)i(expir)o(e)e(at)g (some)i(point,)g(though,)g(otherwise)f(it)h(would)f(be)g(impossible)h (to)440 3225 y(delete)c(users.)565 3339 y(An)26 b(or)o(dinary)h(data)f (block)h(is)h(veri\002ed)e(by)h(checking)h(that)f(the)g(block)g (signatur)o(e)g(is)440 3454 y(corr)o(ect)17 b(\226)h(to)h(verify)e(the) i(authenticity)g(\226)f(and)f(checking)i(that)f(the)h(signing)h(user)e (actually)440 3569 y(is)32 b(authorised)f(to)h(write)f(the)g(block)h (by)g(scanning)g(the)f(access)g(contr)o(ol)h(list)f(included)440 3683 y(with)22 b(the)e(block.)440 3924 y Fv(Structure)f(of)i(Access)f (Control)g(Lists)440 4097 y Fz(Distributing)i(the)f(access)g(contr)o (ol)g(list)h(for)e(a)h(block)g(with)h(the)f(block)h(is)f(convenient)h (and)440 4212 y(helps)34 b(making)h(the)f(block)g(self-contained.)g (But)f(with)i(a)f(naive)f(implementation,)i(it)440 4326 y(would)f(be)e(possible)i(for)f(a)g(malicious)g(user)g(to)h(r)o(ewrite) e(a)h(block,)g(insert)g(himself)h(in)440 4441 y(the)24 b(access)f(contr)o(ol)h(list)g(and)g(sign)g(it)g(with)h(his)f(own)h (key)-9 b(.)23 b(It)h(must)g(be)f(possible)i(for)e(the)440 4555 y(r)o(eceiving)d(node)h(to)g(detect)f(that)h(this)g(has)g (happened.)565 4670 y(A)31 b(solution)i(for)f(this)g(pr)o(oblem)f(is)h (to)g(have)g(the)f(users)h(granting)g(rights)h(sign)f(the)440 4785 y(grants.)16 b(At)g(\002rst,)g(only)i(the)e(user)g(or)h(gr)o(oup)f (that)g(owns)h(the)g(dir)o(ectory)e(r)o(oot)h(under)g(which)440 4899 y(the)h(block)g(is)f(placed)g(can)g(grant)g(rights)i(by)e(adding)g (them)h(to)g(the)g(access)f(contr)o(ol)h(list)g(and)440 5014 y(signing)i(it.)e(The)g(rights)g(can)g(either)g(be)f(the)i(right)f (to)h(r)o(ead)d(the)i(block)g(or)h(the)f(right)g(to)h(both)440 5128 y(r)o(ead)24 b(and)g(write)i(the)f(block.)h(The)f(users)g(and)g (gr)o(oups)g(that)h(have)f(been)g(granted)f(write)440 5243 y(permissions)k(can)f(afterwar)o(ds)e(also)i(add)f(mor)o(e)g (entries,)h(signing)h(the)f(list)h(as)f(they)g(go)440 5357 y(along.)21 b(The)g(idea)f(is)h(illustrated)f(in)h(Figur)o(e)g (2.2.)1831 5662 y(33)p eop %%Page: 34 36 34 35 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 917 1013 a @beginspecial 0 @llx 0 @lly 321 @urx 96 @ury 2267 @rwi @setspecial %%BeginDocument: design/images/permission-list-add.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: permission-list-add.fig %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Thu Oct 21 16:39:55 2004 %%For: arj@delight () %%BoundingBox: 0 0 321 96 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 96 moveto 0 0 lineto 321 0 lineto 321 96 lineto closepath clip newpath -71.3 198.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 /Times-Roman ff 180.00 scf sf 1350 2325 m gs 1 -1 sc (b) col0 sh gr /Times-Roman ff 180.00 scf sf 2700 2325 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 2175 2325 m gs 1 -1 sc (r) col0 sh gr /Times-Roman ff 180.00 scf sf 1350 2550 m gs 1 -1 sc (c) col0 sh gr /Times-Roman ff 180.00 scf sf 2700 2550 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 2175 2550 m gs 1 -1 sc (rw) col0 sh gr % Polyline 7.500 slw n 3000 2925 m 1200 2925 l 1200 2100 l 3000 2100 l cp gs col0 s gr /Times-Italic ff 180.00 scf sf 2250 2775 m gs 1 -1 sc (signed a) col0 sh gr /Times-Roman ff 180.00 scf sf 4800 2025 m gs 1 -1 sc (b) col0 sh gr /Times-Roman ff 180.00 scf sf 6150 2025 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 5625 2025 m gs 1 -1 sc (r) col0 sh gr /Times-Roman ff 180.00 scf sf 4800 2250 m gs 1 -1 sc (c) col0 sh gr /Times-Roman ff 180.00 scf sf 6150 2250 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 5625 2250 m gs 1 -1 sc (rw) col0 sh gr % Polyline n 6450 2625 m 4650 2625 l 4650 1800 l 6450 1800 l cp gs col0 s gr /Times-Italic ff 180.00 scf sf 5700 2475 m gs 1 -1 sc (signed a) col0 sh gr /Times-Roman ff 180.00 scf sf 4725 2850 m gs 1 -1 sc (d) col0 sh gr /Times-Italic ff 180.00 scf sf 5775 3150 m gs 1 -1 sc (signed c) col0 sh gr /Times-Roman ff 180.00 scf sf 6075 2850 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 5550 2850 m gs 1 -1 sc (rw) col0 sh gr % Polyline n 4575 1725 m 6525 1725 l 6525 3300 l 4575 3300 l cp gs col0 s gr % Polyline 15.000 slw gs clippath 4365 2437 m 4365 2362 l 4151 2362 l 4271 2400 l 4151 2437 l cp eoclip n 3300 2400 m 4350 2400 l gs col0 s gr gr % arrowhead 45.000 slw n 4151 2437 m 4271 2400 l 4151 2362 l 4151 2437 l cp gs 0.00 setgray ef gr col0 s % here ends figure; $F2psEnd rs showpage %%EndDocument @endspecial 511 1202 a Fq(Figur)o(e)18 b(2.2:)28 b(An)18 b(example)i(of)f(granting)f(permissions.)h(The)g(user)g(name)g(is)f (shown)h(to)g(the)h(left,)e(in)g(the)511 1307 y(middle)23 b(is)g(the)g(permission)g(type)g(\(r)o(ead)g(or)g(r)o(ead-write\))g (and)g(to)f(the)i(right)f(is)f(the)h(path.)h(User)h(a)f(has)511 1412 y(initially)c(granted)i(b)f(r)o(ead-only)g(and)h(c)h(r)o (ead-write)d(access)j(to)e(the)g(dir)o(ectory)h(r)o(oot)e(of)j(a)q(.)e (User)h(c)h(then)511 1517 y(grants)d(d)g(r)o(ead-write)e(access)i(by)f (adding)g(the)g(r)o(equir)o(ed)e(permission)i(and)g(signing)f(the)h (whole)g(list.)565 1786 y Fz(When)f(a)f(new)i(block)f(is)g(cr)o(eated,) e(the)i(access)f(contr)o(ol)i(list)f(is)g(initially)h(just)g(the)f (access)440 1901 y(contr)o(ol)32 b(list)g(of)g(the)f(par)o(ent)g(dir)o (ectory)-9 b(.)30 b(Each)h(entry)h(in)g(the)g(list)g(should)g(include)g (the)440 2015 y(path)19 b(of)h(the)g(\002le)g(or)f(dir)o(ectory)g(that) h(the)g(grant)f(is)h(covering.)g(This)g(ensur)o(es)f(that)h(it)g(is)g (not)440 2130 y(possible)j(to)f(copy)g(part)g(of)g(the)g(list)h(and)e (r)o(euse)g(it)i(at)e(another)i(place)e(in)h(the)h(\002le)f(system,)440 2245 y(and)f(also)g(makes)g(it)g(possible)h(to)f(let)g(a)g(permission)h (extend)f(r)o(ecursively)f(to)i(a)e(dir)o(ectory)440 2359 y(with)f(all)g(its)g(subdir)o(ectories.)f(If)g(a)g(new)h(block)h (is)f(a)f(r)o(oot)h(dir)o(ectory)-9 b(,)17 b(the)i(list)g(will)g (initially)440 2474 y(be)h(empty)h(\226)g(only)g(the)g(owner)g(of)g (the)g(dir)o(ectory)f(r)o(oot)h(has)g(access)f(to)h(it.)565 2588 y(It)i(is)h(necessary)e(to)i(check)f(the)h(access)f(contr)o(ol)g (list)h(befor)o(e)e(it)i(can)f(be)g(tr)o(usted.)g(Each)440 2703 y(signatur)o(e)f(in)h(the)g(list)g(should)h(be)e(veri\002ed,)g (and)g(the)h(\002le)g(paths)g(in)g(each)f(grant)g(should)440 2817 y(be)e(checked)h(to)g(ensur)o(e)f(that)h(the)g(access)f(r)o (estrictions)h(ar)o(e)e(enfor)o(ced.)917 3484 y @beginspecial 0 @llx 0 @lly 321 @urx 96 @ury 2267 @rwi @setspecial %%BeginDocument: design/images/permission-list-remove.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: /home/arj/report/design/images/permission-list-remove.fig %%Creator: fig2dev Version 3.2 Patchlevel 4 %%CreationDate: Fri Oct 22 12:42:52 2004 %%For: arj@delight () %%BoundingBox: 0 0 321 96 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 96 moveto 0 0 lineto 321 0 lineto 321 96 lineto closepath clip newpath -84.8 198.7 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 /Times-Roman ff 180.00 scf sf 1650 2025 m gs 1 -1 sc (b) col0 sh gr /Times-Roman ff 180.00 scf sf 3000 2025 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 2475 2025 m gs 1 -1 sc (r) col0 sh gr /Times-Roman ff 180.00 scf sf 1650 2250 m gs 1 -1 sc (c) col0 sh gr /Times-Roman ff 180.00 scf sf 3000 2250 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 2475 2250 m gs 1 -1 sc (rw) col0 sh gr % Polyline 7.500 slw n 3300 2625 m 1500 2625 l 1500 1800 l 3300 1800 l cp gs col0 s gr /Times-Italic ff 180.00 scf sf 2550 2475 m gs 1 -1 sc (signed a) col0 sh gr /Times-Roman ff 180.00 scf sf 1575 2850 m gs 1 -1 sc (d) col0 sh gr /Times-Italic ff 180.00 scf sf 2625 3150 m gs 1 -1 sc (signed c) col0 sh gr /Times-Roman ff 180.00 scf sf 2925 2850 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 2400 2850 m gs 1 -1 sc (rw) col0 sh gr % Polyline n 1425 1725 m 3375 1725 l 3375 3300 l 1425 3300 l cp gs col0 s gr % Polyline n 4800 1950 m 6750 1950 l 6750 2925 l 4800 2925 l cp gs col0 s gr % Polyline 15.000 slw gs clippath 4665 2512 m 4665 2437 l 4451 2437 l 4571 2475 l 4451 2512 l cp eoclip n 3600 2475 m 4650 2475 l gs col0 s gr gr % arrowhead 45.000 slw n 4451 2512 m 4571 2475 l 4451 2437 l 4451 2512 l cp gs 0.00 setgray ef gr col0 s /Times-Italic ff 180.00 scf sf 6000 2775 m gs 1 -1 sc (signed a) col0 sh gr /Times-Roman ff 180.00 scf sf 4950 2475 m gs 1 -1 sc (d) col0 sh gr /Times-Roman ff 180.00 scf sf 4950 2175 m gs 1 -1 sc (b) col0 sh gr /Times-Roman ff 180.00 scf sf 5625 2475 m gs 1 -1 sc (rw) col0 sh gr /Times-Roman ff 180.00 scf sf 5625 2175 m gs 1 -1 sc (r) col0 sh gr /Times-Roman ff 180.00 scf sf 6300 2175 m gs 1 -1 sc (/a/) col0 sh gr /Times-Roman ff 180.00 scf sf 6300 2475 m gs 1 -1 sc (/a/) col0 sh gr % here ends figure; $F2psEnd rs showpage %%EndDocument @endspecial 511 3672 a Fq(Figur)o(e)d(2.3:)28 b(An)16 b(example)i(of)g(r)o(emoving)f(permissions.)g(User)i(a)f(r)o(emoves)h (c)q(')l(s)e(r)o(ead-write)g(permission)511 3777 y(by)i(r)o(emoving)g (c)h(fr)o(om)f(the)g(list)f(and)h(r)o(e-signing)e(the)i(r)o(emaining)f (grants)h(after)h(c)q(.)565 4010 y Fz(Removing)e(a)e(permission)i(is)f (a)g(bit)g(complicated)f(because)g(it)h(might)h(br)o(eak)e(the)h(sign-) 440 4125 y(ing)j(chain.)f(For)h(instance,)f(if)i Fu(a)g Fz(has)e(authorised)i Fu(c)f Fz(who)g(in)g(turn)f(has)h(authorised)g Fu(d)q Fz(,)f(then)440 4239 y(if)30 b Fu(a)f Fz(r)o(emoves)f Fu(c)q Fz(,)g(the)g(authorisation)g(of)h Fu(d)g Fz(will)f(no)h(longer)f (be)g(valid.)f(The)g(solution)j(is)440 4354 y(to)c(let)h Fu(a)g Fz(r)o(e-sign)e(any)h(permissions)h(that)e(was)g(granted)g (after)h Fu(c)q Fz(,)f(as)g(illustrated)g(in)h(Fig-)440 4468 y(ur)o(e)g(2.3.)e(Note)j(that)f(when)h(a)f(user)g(is)h(r)o(emoved) e(fr)o(om)h(the)h(access)f(contr)o(ol)g(list,)h(a)f(new)440 4583 y(r)o(ead)f(key)h(for)g(the)h(\002le)f(must)h(be)f(generated)f (and)h(the)g(contents)i(r)o(e-encrypted)c(to)j(pr)o(e-)440 4697 y(vent)21 b(the)g(user)f(fr)o(om)h(being)g(able)f(to)h(r)o(ead)e (it.)565 4812 y(W)-5 b(ith)27 b(this)h(design,)f(it)g(is)g(not)h (possible)g(for)e(a)h(user)f(with)i(r)o(ead-write)d(access)h(to)i(r)o (e-)440 4927 y(move)33 b(permissions)g(that)g(have)f(been)g(granted)f (befor)o(e)h(that)g(user)g(was)g(granted)g(the)440 5041 y(r)o(ead-write)16 b(access.)h(In)i(the)f(pr)o(evious)g(example,)g Fu(d)g Fz(cannot)h(r)o(emove)f Fu(c)h Fz(since)g(that)f(would)440 5156 y(r)o(equir)o(e)f(unfolding)h(the)g(permission)h(list)f(to)g(a)f (point)i(wher)o(e)f Fu(d)g Fz(does)g(not)g(have)f(the)h(r)o(ead-)440 5270 y(write)j(permission)h(anymor)o(e.)565 5385 y(Another)e(pr)o (oblem)f(is)h(that)g(the)g(design)g(is)g(susceptible)g(to)g(r)o(eplay)f (attacks.)g(If)g(a)g(user)1831 5662 y(34)p eop %%Page: 35 37 35 36 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(at)19 b(some)g(point)h(is)g(granted)e(r)o (ead-write)f(access)h(to)i(a)e(\002le,)h(it)h(is)f(always)g(possible)h (for)e(that)440 646 y(user)24 b(to)h(save)e(the)i(access)e(contr)o(ol)i (list)g(and)f(later)f(r)o(ewrite)h(the)g(block)h(with)g(that)f(access) 440 760 y(contr)o(ol)31 b(if)f(he)h(is)f(r)o(emoved)g(fr)o(om)g(the)g (list.)h(This)g(attack)f(does)g(r)o(equir)o(e)g(that)g(the)g(user)440 875 y(saves)25 b(the)g(access)f(contr)o(ol)i(list,)f(though.)h(One)g (way)f(to)g(counter)h(the)f(attack)f(would)i(be)440 990 y(to)f(include)g(a)f(time)h(limit)h(in)f(the)g(granted)f(permissions;)i (this)g(of)e(course)h(r)o(equir)o(es)f(one)440 1104 y(to)d(grant)g(the) g(permissions)h(again)e(periodically)-9 b(.)440 1364 y Fp(2.2.4)99 b(Preventing)25 b(Intruders)f(in)h(the)g(Distributed)g (Hash)f(T)-11 b(able)440 1537 y Fz(Although)36 b(the)f(described)e (access)h(contr)o(ol)h(means)g(should)h(be)e(able)g(to)h(pr)o(otect)f (the)440 1652 y(blocks)h(themselves)f(fr)o(om)g(being)g(tamper)o(ed)e (with)j(or)f(r)o(ead)f(by)h(unauthorised)g(par)o(-)440 1767 y(ties,)23 b(it)h(is)f(still)i(easy)d(to)i(br)o(eak)e(down)i(the)g (information)g(service)f(by)g(attacking)g(the)h(dis-)440 1881 y(tributed)c(hash)h(table.)565 1996 y(One)c(such)h(an)f(attack)g (that)g(can)g(cause)g(data)f(loss)i(is)g(if)f(a)g(malicious)h(host)g (starts)f(many)440 2110 y(fabric)j(nodes)i(on)g(the)f(same)g(host)i (and)e(let)g(them)h(connect)g(to)f(the)h(information)g(service.)440 2225 y(After)c(a)g(while,)i(some)f(of)g(other)h(fabric)e(nodes)h(will)h (send)f(block)g(r)o(eplicas)f(to)h(these)g(mali-)440 2339 y(cious)f(nodes,)f(and)g(eventually)f(the)i(malicious)f(host)h (may)g(end)e(up)h(with)h(all)f(the)g(r)o(eplicas)440 2454 y(of)k(some)g(blocks.)g(Then)g(it)g(can)g(cause)f(data)f(loss)j (simply)g(by)f(discar)o(ding)e(them.)565 2569 y(T)-8 b(o)27 b(combat)g(this)h(attack,)d(the)i(fabric)f(nodes)h(should)h(not) g(insert)f(other)g(nodes)g(into)440 2683 y(their)32 b(r)o(outing)f (tables)g(until)i(they)e(have)g(been)h(able)e(to)i(authenticate)f (them.)h(For)g(this)440 2798 y(r)o(eason,)18 b(each)g(fabric)f(node)i (must)h(have)e(a)g(public)g(key)h(in)g(the)g(information)h(service,)e (just)440 2912 y(like)j(the)h(users.)f(The)g(authentication)h(pr)o (ocedur)o(e)d(need)i(not)h(add)e(to)i(the)f(latency)g(of)g(the)440 3027 y(operations)31 b(and)e(can)h(be)g(done)h(in)f(the)h(backgr)o (ound)e(because)h(the)g(fabric)f(nodes)i(ar)o(e)440 3141 y(fr)o(ee)25 b(to)i(r)o(espond)f(to)h(r)o(equests)f(without)i (authentication;)e(the)h(blocks)g(ar)o(e)e(suf)o(\002ciently)440 3256 y(pr)o(otected)20 b(in)h(themselves.)565 3370 y(A)31 b(r)o(elated)f(pr)o(oblem)i(is)g(denial-of-service)e(attacks.)h(These)h (ar)o(e)f(dif)o(\002cult)g(to)h(deal)440 3485 y(with,)f(but)g(it)g(may) f(be)h(possible)g(to)g(counter)g(most)g(attempts)g(by)f(enfor)o(cing)h (sensible)440 3600 y(limits)24 b(to)g(what)f(a)f(fabric)g(node)h(will)h (do)f(for)g(a)g(client)g(simultaneously)-9 b(,)24 b(including)g(lim-) 440 3714 y(iting)i(the)f(number)h(of)f(r)o(equest)f(served)h(per)f (second.)h(Another)h(possibility)g(is)g(to)f(for)o(ce)440 3829 y(r)o(equesters)20 b(to)h(do)g(some)h(work)f(by)g(incorporating)g (a)f(hash)h(cash)g(scheme)g([6)o(].)440 4089 y Fp(2.2.5)99 b(Noti\002cation)26 b(of)f(File)h(Changes)440 4262 y Fz(When)j(a)g(\002le)g(is)g(changed,)g(ther)o(e)f(ar)o(e)g(initially)h (only)h(two)g(parties)e(that)h(ar)o(e)f(awar)o(e)f(of)440 4377 y(the)i(changes.)g(The)f(entity)i(who)f(changed)g(the)g(\002le)g (and)f(the)h Fu(r)i Fz(nodes)e(in)h(the)f(overlay)440 4491 y(network)23 b(which)h(the)e(block)h(of)g(the)f(\002le)h(is)g (distributed)f(to.)h(Since)f(the)h(changes)f(ar)o(e)g(not)440 4606 y(persistent)31 b(in)g(the)f(information)i(service)d(befor)o(e)h (the)g(block)h(r)o(eaches)e(at)h(least)g(one)h(of)440 4720 y(these)f Fu(r)j Fz(nodes,)d(we)h(can)f(conveniently)h(let)f(them) h(keep)f(track)f(of)i(inter)o(ested)e(parties)440 4835 y(and)20 b(see)h(to)g(that)g(they)g(ar)o(e)e(noti\002ed.)565 4949 y(Hence,)35 b(an)g(inter)o(ested)g(participant)g(should)i(send)e (a)h(subscription)g(message)g(to)440 5064 y(each)28 b(of)h(the)g Fu(r)i Fz(nodes)e(storing)g(the)g(block)g(and)f(send)h(a)f (cancellation)h(message)g(when)440 5179 y(the)23 b(subscription)h (should)g(be)f(stopped.)g(This)h(means)f(that)g(when)h(an)f(incoming)i (block)440 5293 y(has)20 b(been)f(veri\002ed)h(and)f(accepted,)f(it)i (is)g(necessary)g(to)g(check)g(whether)g(anyone)g(is)g(sub-)1831 5662 y(35)p eop %%Page: 36 38 36 37 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(scribing)20 b(to)f(changes)g(on)h(that)f (block,)g(and)g(if)g(so)g(send)g(a)g(noti\002cation)h(message)f(to)h (them)440 646 y(with)i(the)e(version)i(number)f(of)f(the)h(new)g (block.)565 760 y(In)g(or)o(der)g(to)g(be)g(able)g(to)h(tolerate)f (failur)o(es,)f(the)h(list)h(of)g(subscribers)f(should)h(be)f(con-)440 875 y(sider)o(ed)k(soft)h(state)f(so)i(that)f(the)g(subscribers)g(have) f(to)i(r)o(enew)e(their)h(subscription)h(pe-)440 990 y(riodically)f(to)h(avoid)e(losing)j(it.)e(This)h(means)f(that)g(a)g (failed)f(subscribed)g(node)i(will)g(be)440 1104 y(r)o(emoved)h(fr)o (om)h(the)g(subscription)g(list)h(after)e(some)h(time,)g(and)g(that)f (the)h(subscribers)440 1219 y(will)21 b(detect)f(when)i(a)e(notifying)i (node)f(has)g(failed.)565 1333 y(Note)27 b(that)g(in)g(the)g(case)g (without)h(failur)o(es,)e Fu(r)j Fz(nodes)e(will)h(send)f (noti\002cation)h(mes-)440 1448 y(sages,)18 b(which)h(means)f(that)h (the)f(subscribers)g(will)h(r)o(eceive)e Fu(r)g Fo(\000)e Fz(1)i(r)o(edundant)g(messages,)440 1562 y(see)30 b(Figur)o(e)f(2.4.)g (The)h(subscribers)g(must)h(be)e(able)h(to)g(cope)g(with)h(this,)g(but) f(since)g(the)440 1677 y(noti\002cation)h(messages)e(contain)h(the)g (version)g(number)f(of)h(the)f(block,)h(they)f(can)h(just)440 1792 y(discar)o(d)19 b(r)o(edundant)h(and)g(old)h(messages.)1212 2534 y @beginspecial 91 @llx 609 @lly 328 @urx 722 @ury 1559 @rwi @setspecial %%BeginDocument: design/images/notification-many.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: notification-many.dvi %%BoundingBox: 91 609 328 722 %%DocumentFonts: PazoMath-Italic Palatino-Italic Palatino-Roman %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o notification-many.eps %+ notification-many.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.10.25:1616 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (notification-many.dvi) @start /Fa 141[517 114[{ TeXBase1Encoding ReEncodeFont }1 1328.35 /Palatino-Italic rf /Fb 136[1108 1[801 433 563 525 2[725 773 1[387 739 1[387 3[636 1[590 735 95[804 2[{ TeXBase1Encoding ReEncodeFont }14 1328.35 /Palatino-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 12260 a @beginspecial 0 @llx 0 @lly 212 @urx 111 @ury 2120 @rwi @setspecial %%BeginDocument: notification-many.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: notification-many.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Mon Oct 25 16:16:34 2004 %%For: arj@homer.cs.aau.dk (Anders Rune Jensen) %%BoundingBox: 0 0 212 111 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 111 moveto 0 0 lineto 212 0 lineto 212 111 lineto closepath clip newpath -13.5 145.6 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % 7.500 slw % Ellipse n 2250 1650 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 914 2107 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 3582 1800 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 2263 1017 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 2267 2252 168 168 0 360 DrawEllipse gs col0 s gr % Polyline gs clippath 3368 1757 m 3405 1710 l 3284 1618 l 3362 1715 l 3248 1666 l cp eoclip n 2437 1020 m 3375 1725 l gs col0 s gr gr % arrowhead n 3248 1666 m 3362 1715 l 3284 1618 l 3248 1666 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2087 2266 m 2096 2207 l 1946 2185 l 2061 2233 l 1937 2244 l cp eoclip n 1087 2085 m 2077 2235 l gs col0 s gr gr % arrowhead n 1937 2244 m 2061 2233 l 1946 2185 l 1937 2244 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2051 1670 m 2025 1616 l 1888 1680 l 2010 1657 l 1913 1734 l cp eoclip n 1087 2085 m 2025 1650 l gs col0 s gr gr % arrowhead n 1913 1734 m 2010 1657 l 1888 1680 l 1913 1734 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2079 1044 m 2035 1003 l 1932 1114 l 2036 1047 l 1976 1155 l cp eoclip n 1072 2085 m 2047 1035 l gs col0 s gr gr % arrowhead n 1976 1155 m 2036 1047 l 1932 1114 l 1976 1155 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 3385 1831 m 3394 1772 l 3245 1748 l 3359 1797 l 3235 1807 l cp eoclip n 2422 1650 m 3375 1800 l gs col0 s gr gr [] 0 sd % arrowhead n 3235 1807 m 3359 1797 l 3245 1748 l 3235 1807 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 3400 1897 m 3377 1841 l 3237 1897 l 3360 1881 l 3259 1953 l cp eoclip n 2437 2250 m 3375 1875 l gs col0 s gr gr [] 0 sd % arrowhead n 3259 1953 m 3360 1881 l 3237 1897 l 3259 1953 l cp gs 0.00 setgray ef gr col0 s $F2psEnd rs %%EndDocument @endspecial 0 0 0 TeXcolorrgb 13118 880 a Fa(r)361 b Fb(noti\002ers)p Black 0 0 0 TeXcolorrgb 2214 7580 a(block)331 b(writer)p Black 0 0 0 TeXcolorrgb 22314 5580 a(subscriber)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 511 2722 a Fq(Figur)o(e)e(2.4:)27 b(A)20 b(block)g(is)g(written)f(and)h(the)g(r)i(nodes)e(r)o(esponsible)f(for)h (it)f(noti\002es)h(the)g(subscriber)-6 b(.)19 b(The)511 2827 y(stippled)g(arr)o(ows)g(ar)o(e)g(r)o(edundant)f(messages.)565 3039 y Fz(W)-5 b(ith)18 b(a)f(slightly)i(mor)o(e)e(complicated)g(pr)o (otocol,)h(we)f(can)g(also)h(optimise)g(most)h(of)e(the)440 3153 y(r)o(edundant)26 b(messages)i(away)-9 b(,)26 b(at)h(least)g(as)h (long)g(as)f(ther)o(e)g(ar)o(e)f(no)i(failur)o(es.)e(The)i(basic)440 3268 y(idea)20 b(is)h(that)f(the)h(nodes)g(that)g(ar)o(e)e(farthest)h (away)g(fr)o(om)g(the)h(block)g(give)g(the)f(nodes)h(that)440 3382 y(ar)o(e)e(closest)i(to)g(the)f(block)h(some)g(time)g(to)g(send)f (noti\002cation)i(messages.)e(The)h(node)f(that)440 3497 y(is)e(closest)g(to)g(the)g(block)g(should)g(send)g(noti\002cations)h (immediately)-9 b(,)17 b(the)h(second-closest)440 3611 y(node)j(should)g(wait)f(one)h(pr)o(ede\002ned)e(period)h(of)g(time,)g (the)h(thir)o(d-closest)f(node)g(should)440 3726 y(wait)h(two)g (periods)g(of)f(time,)h(etc.)565 3841 y(Then)16 b(when)h(a)e(node)h(is) h(about)f(to)g(begin)g(sending)h(noti\002cation)g(messages,)f(it)g (should)440 3955 y(\002rst)24 b(inform)h(the)f(other)g Fu(r)d Fo(\000)d Fz(1)23 b(nodes)i(that)f(it)g(is)g(sending)h (noti\002cations,)g(as)f(illustrated)440 4070 y(in)i(Figur)o(e)f(2.5.)f (This)i(makes)f(them)h(wait)g(some)g(extra)e(time.)i(It)f(then)h(sends) g(the)g(noti\002-)440 4184 y(cation)h(messages)g(to)h(the)f (subscribers,)g(and)f(when)i(it)f(is)g(done)g(and)g(has)g(r)o(eceived)e (ac-)440 4299 y(knowledgements)d(fr)o(om)e(the)h(subscribers,)f(it)h (can)g(inform)g(the)g Fu(r)e Fo(\000)e Fz(1)j(other)h(nodes)g(that)440 4413 y(it)g(is)g(done.)g(The)f(other)i(nodes)f(then)g(do)g(not)g(need)f (to)i(send)e(noti\002cations)j(themselves.)565 4528 y(Assuming)d(ther)o (e)f(ar)o(e)g(no)h(failur)o(es,)f(this)h(r)o(esults)g(in)g(2)q Fd(\()q Fu(r)f Fo(\000)c Fz(1)q Fd(\))j(+)e Fu(s)22 b Fz(messages)e(instead)440 4643 y(of)h Fu(r)s(s)h Fz(messages,)e(wher)o (e)h Fu(s)h Fz(is)f(the)f(number)h(of)g(subscribers.)f(For)i Fu(s)j Fd(=)f Fz(2)c(this)h(implies)g(the)440 4757 y(same)28 b(number)g(of)g(messages,)g(for)g Fu(s)39 b Ff(>)e Fz(2)28 b(the)g(r)o(esult)f(is)i(fewer)e(messages.)h(However)-6 b(,)440 4872 y(the)33 b(messages)f(that)h(ar)o(e)e(sent)h(to)h(inform)g (the)g(other)g Fu(r)23 b Fo(\000)f Fz(1)32 b(nodes)g(befor)o(e)f(and)h (after)440 4986 y(notifying)f(the)e(subscribers)h(need)f(to)h(include)f (the)h(addr)o(esses)e(of)h(the)h(subscribers)f(to)440 5101 y(guar)o(d)h(against)g(incomplete)i(knowledge.)f(Since)f(the)h (other)g(nodes)g(will)h(continue)f(if)440 5215 y(the)20 b(delay)g(is)g(too)h(long,)g(the)f(algorithm)h(can)f(still)h(sustain)f Fu(r)f Fo(\000)d Fz(1)k(node)g(failur)o(es)f(without)440 5330 y(malfunction.)1831 5662 y(36)p eop %%Page: 37 39 37 38 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 561 1226 a @beginspecial 91 @llx 585 @lly 299 @urx 722 @ury 1417 @rwi @setspecial %%BeginDocument: design/images/notification-1.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: notification-1.dvi %%BoundingBox: 91 585 299 722 %%DocumentFonts: PazoMath-Italic Palatino-Italic Palatino-Roman %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o notification-1.eps %+ notification-1.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.10.25:1612 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (notification-1.dvi) @start /Fa 134[664 664 3[442 517 517 2[590 739 4[369 1[664 369 2[541 1[590 52[332 41[701 2[{ TeXBase1Encoding ReEncodeFont } 14 1328.35 /Palatino-Italic rf /Fb 138[801 433 563 525 2[725 773 4[387 3[636 1[590 735 95[804 2[{ TeXBase1Encoding ReEncodeFont }11 1328.35 /Palatino-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 14927 a @beginspecial 0 @llx 0 @lly 206 @urx 135 @ury 2060 @rwi @setspecial %%BeginDocument: notification-1.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: notification-1.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Mon Oct 25 16:12:41 2004 %%For: arj@homer.cs.aau.dk (Anders Rune Jensen) %%BoundingBox: 0 0 206 135 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 135 moveto 0 0 lineto 206 0 lineto 206 135 lineto closepath clip newpath -68.4 233.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Arc 7.500 slw gs clippath 3529 2248 m 3560 2196 l 3430 2119 l 3518 2207 l 3399 2171 l cp eoclip n 3194.9 2647.6 548.4 -134.3 -52.1 arc gs col0 s gr gr % arrowhead n 3399 2171 m 3518 2207 l 3430 2119 l 3399 2171 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 4366 2258 m 4401 2209 l 4280 2119 l 4359 2215 l 4244 2167 l cp eoclip n 3606.9 3143.3 1195.3 -132.1 -50.2 arc gs col0 s gr gr % arrowhead n 4244 2167 m 4359 2215 l 4280 2119 l 4244 2167 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 4394 2444 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 2393 3437 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 3569 2444 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 3225 3450 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 2819 2444 168 168 0 360 DrawEllipse gs col0 s gr % Polyline gs clippath 3131 3252 m 3183 3223 l 3109 3091 l 3142 3211 l 3056 3121 l cp eoclip n 2812 2625 m 3150 3225 l gs col0 s gr gr % arrowhead n 3056 3121 m 3142 3211 l 3109 3091 l 3056 3121 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2441 3223 m 2494 3252 l 2566 3120 l 2483 3211 l 2514 3091 l cp eoclip n 2812 2610 m 2475 3225 l gs col0 s gr gr % arrowhead n 2514 3091 m 2483 3211 l 2566 3120 l 2514 3091 l cp gs 0.00 setgray ef gr col0 s $F2psEnd rs %%EndDocument @endspecial 0 0 0 TeXcolorrgb 9654 14540 a Fa(x)p Black 0 0 0 TeXcolorrgb 5313 w(y)p Black 0 0 0 TeXcolorrgb 14114 1040 a(notifying)373 b(x)30 b(,)348 b(y)p Black 0 0 0 TeXcolorrgb 15614 8540 a(noti\002cations)p Black 0 0 0 TeXcolorrgb 6118 5540 a(r)361 b Fb(noti\002ers)p Black 0 0 0 TeXcolorrgb 2214 12040 a(subscribers)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 1420 w @beginspecial 91 @llx 585 @lly 309 @urx 722 @ury 1417 @rwi @setspecial %%BeginDocument: design/images/notification-2.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: notification-2.dvi %%BoundingBox: 91 585 309 722 %%DocumentFonts: PazoMath-Italic Palatino-Italic Palatino-Roman %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o notification-2.eps %+ notification-2.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.10.25:1613 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (notification-2.dvi) @start /Fa 134[664 664 959 2[442 517 517 2[590 739 1033 369 590 1[369 1[664 1[517 664 541 1[590 52[332 41[701 2[{ TeXBase1Encoding ReEncodeFont }19 1328.35 /Palatino-Italic rf /Fb 138[801 433 563 525 2[725 773 4[387 3[636 1[590 735 95[804 2[{ TeXBase1Encoding ReEncodeFont }11 1328.35 /Palatino-Roman rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 14927 a @beginspecial 0 @llx 0 @lly 206 @urx 135 @ury 2060 @rwi @setspecial %%BeginDocument: notification-2.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: notification-2.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Mon Oct 25 16:13:40 2004 %%For: arj@homer.cs.aau.dk (Anders Rune Jensen) %%BoundingBox: 0 0 206 135 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 135 moveto 0 0 lineto 206 0 lineto 206 135 lineto closepath clip newpath -68.4 233.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Arc 7.500 slw gs clippath 4366 2258 m 4402 2209 l 4280 2119 l 4359 2215 l 4244 2167 l cp eoclip n 3614.5 3124.0 1175.6 -133.1 -49.9 arc gs col0 s gr gr % arrowhead n 4244 2167 m 4359 2215 l 4280 2119 l 4244 2167 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 3542 2258 m 3568 2204 l 3432 2137 l 3527 2218 l 3406 2191 l cp eoclip n 3208.7 2744.2 617.0 -129.0 -57.3 arc gs col0 s gr gr % arrowhead n 3406 2191 m 3527 2218 l 3432 2137 l 3406 2191 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 4394 2444 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 2393 3437 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 3569 2444 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 3225 3450 168 168 0 360 DrawEllipse gs col0 s gr % Ellipse n 2819 2444 168 168 0 360 DrawEllipse gs col0 s gr % Polyline gs clippath 2839 2596 m 2788 2628 l 2868 2756 l 2831 2639 l 2919 2725 l cp eoclip n 2822 2625 m 3232 3285 l gs col0 s gr gr % arrowhead n 2919 2725 m 2831 2639 l 2868 2756 l 2919 2725 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 2855 2629 m 2805 2595 l 2721 2721 l 2813 2638 l 2771 2754 l cp eoclip n 2822 2625 m 2392 3270 l gs col0 s gr gr % arrowhead n 2771 2754 m 2813 2638 l 2721 2721 l 2771 2754 l cp gs 0.00 setgray ef gr col0 s $F2psEnd rs %%EndDocument @endspecial 0 0 0 TeXcolorrgb 9654 14540 a Fa(x)p Black 0 0 0 TeXcolorrgb 5313 w(y)p Black 0 0 0 TeXcolorrgb 14614 1040 a(noti\002ed)372 b(x)30 b(,)349 b(y)p Black 0 0 0 TeXcolorrgb 16114 9040 a(acknowledgements)p Black 0 0 0 TeXcolorrgb 6118 5540 a(r)361 b Fb(noti\002ers)p Black 0 0 0 TeXcolorrgb 2214 12040 a(subscribers)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 511 1406 a Fq(Figur)o(e)22 b(2.5:)28 b(A)c(mor)o(e)f (elaborate)h(noti\002cation)f(algorithm.)h(T)-8 b(o)23 b(the)h(left)f(the)g(closest)h(node)g(to)g(a)f(block)511 1511 y(informs)e(the)h(two)g(other)g(nodes)h(that)f(is)f(notifying)g (and)h(then)g(sends)g(noti\002cation)f(messages.)i(T)-8 b(o)21 b(the)511 1616 y(right)16 b(it)g(r)o(eceives)h(acknowledgements) f(and)g(informs)g(the)g(other)h(nodes)f(that)h(the)f(noti\002cation)g (is)g(done.)565 1886 y Fz(An)27 b(important)h(use)g(case)f(for)g (noti\002cations)i(that)e(is)h(not)h(discussed)e(in)h(the)g(above)440 2000 y(is)23 b(when)g(a)e(participant)h(r)o(etrieves)f(a)h(\002le,)g(r) o(eads)f(it)h(and)g(then)h(wish)g(to)g(subscribe)f(to)h(fu-)440 2115 y(tur)o(e)j(changes.)h(Befor)o(e)e(the)j(subscription)f(message)g (arrives)f(at)h(the)g(notifying)h(nodes,)440 2229 y(another)18 b(node)h(may)f(alr)o(eady)e(have)i(changed)f(the)i(\002le.)f(This)h (change)f(would)g(not)h(be)f(no-)440 2344 y(ticed)i(by)g(the)g(new)h (subscriber)f(until)h(the)f(next)g(change)h(arrives)e(after)g(the)h (subscription)440 2459 y(has)h(succeeded.)565 2573 y(The)j(participant) f(can)h(alleviate)f(this)i(pr)o(oblem)f(by)g(r)o(etrieving)f(the)h (\002le)h(again)e(after)440 2688 y(having)i(subscribed)g(to)g(changes.) g(But)g(a)f(mor)o(e)h(elegant)f(solution)j(is)e(to)g(have)g(the)g(par)o (-)440 2802 y(ticipant)k(send)g(the)f(last)h(version)g(number)g(seen)g (with)h(the)e(subscription)i(message.)f(If)440 2917 y(the)c(version)g (number)f(is)h(older)g(than)f(the)h(version)g(curr)o(ently)f(stor)o(ed) g(at)g(the)h(notifying)440 3031 y(node,)c(that)f(node)h(can)g(then)g (immediately)g(send)g(back)f(a)g(noti\002cation.)440 3292 y Fp(2.2.6)99 b(Distributed)25 b(Mutual)f(Exclusion)440 3465 y Fz(A)15 b(distributed)h(algorithm)g(for)g(mutual)g(exclusion)g (r)o(equir)o(es)f(r)o(eaching)g(consensus)i(among)440 3579 y(the)22 b(participants)g(over)g(who)h(has)f(the)g(right)g(to)h(a) e(r)o(esour)o(ce.)g(In)h(our)h(case,)e(a)g(r)o(esour)o(ce)g(is)440 3694 y(simply)i(a)e(name)h(in)h(the)f(form)g(of)g(a)f(\002le)h(path)g (which)h(may)f(coincide)g(with)g(the)g(name)g(of)440 3808 y(a)j(r)o(eal)g(\002le)h(or)g(dir)o(ectory)-9 b(,)25 b(but)h(not)g(necessarily)-9 b(.)25 b(Using)i(this)f(path)g(as)g(the)g (key)g(for)f(mu-)440 3923 y(tual)18 b(exclusion)h(on)g(a)e(r)o(esour)o (ce)g(gives)h Fu(r)j Fz(nodes)d(that)g(can)g(be)g(made)f(r)o (esponsible)h(for)g(that)440 4037 y(mutex.)565 4152 y(Hence,)k(we)i (constr)o(uct)g(an)f(algorithm)i(that)e(by)g(contacting)h(these)g Fu(r)i Fz(nodes)d(can)h(en-)440 4267 y(sur)o(e)k(that)h(an)g(agr)o (eement)f(over)h(who)h(has)f(obtained)g(the)g(mutex)g(will)h (eventually)f(be)440 4381 y(r)o(eached.)d(One)j(possibility)g(is)g(to)f (ask)g(the)h(nodes)f(sequentially)h(for)f(the)g(mutex)h(\226)e(but)440 4496 y(then)e(the)f(latency)g(for)g(obtaining)h(a)f(mutex)g(will)h(be)f (the)h(sum)f(of)h(the)f(latencies)g(for)g(the)440 4610 y Fu(r)h Fz(nodes.)e(Instead,)g(we)g(\002rst)g(optimistically)h(try)f (to)g(obtain)h(the)f(mutex)g(by)g(sending)h(r)o(e-)440 4725 y(quests)18 b(in)h(parallel,)d(which)i(r)o(educes)f(the)g(latency) h(to)g(the)g(r)o(esponse)f(time)h(of)g(the)f(slowest)440 4839 y(node)k(in)g(case)f(ther)o(e)g(ar)o(e)g(no)h(con\003icts.)565 4954 y(Thus,)16 b(in)i(the)e(\002rst)h(phase)g(of)g(our)f(algorithm)i (the)f(r)o(equesting)g(node)g(asks)f(all)h Fu(r)i Fz(nodes)440 5069 y(in)25 b(parallel)e(for)h(the)g(mutex.)h(If)e(all)i Fu(r)h Fz(nodes)f(grant)f(the)g(mutex,)g(it)h(can)f(go)h(on)g(since)f (the)440 5183 y Fu(r)30 b Fz(nodes)f(will)g(henceforth)f(claim)g(that)g (it)g(has)g(the)g(mutex.)g(Otherwise)h(another)f(node)440 5298 y(is)h(holding)h(the)f(mutex,)g(or)g(at)g(least)f(trying)i(to)f (obtain)g(it,)g(and)g(the)g(r)o(equesting)g(node)440 5412 y(cancels)h(the)g(r)o(equests)g(for)g(the)g(mutex)g(it)g(has)h (alr)o(eady)d(sent)i(and)g(enters)g(the)g(second)1831 5662 y(37)p eop %%Page: 38 40 38 39 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(phase)20 b(of)h(the)g(algorithm.)565 646 y(In)28 b(the)g(second)g(phase,)f(the)h(r)o(equesting)h(node)f(or)o (ders)f(the)h Fu(r)i Fz(nodes)f(by)f(their)g(dis-)440 760 y(tance)23 b(to)h(the)g(key)g(and)f(ask)h(each)f(of)h(them)g(in)g (turn)g(for)f(the)h(mutex,)g(starting)g(fr)o(om)f(the)440 875 y(node)28 b(closest)g(to)f(the)h(key)-9 b(.)27 b(If)g(one)h(of)f (the)h(nodes)f(does)h(not)g(grant)f(the)h(mutex,)f(the)h(r)o(e-)440 990 y(questing)h(node)e(cancels)g(its)h(r)o(equests)f(and)g(waits)g(a)g (random)h(period)f(of)g(time)h(befor)o(e)440 1104 y(r)o(estarting)18 b(the)h(second)f(phase.)g(An)h(example)e(is)i(shown)h(in)f(Figur)o(e)f (2.6.)f(The)i(maximum)440 1219 y(value)k(of)g(the)g(random)h(period)f (of)g(time)g(should)h(be)f(incr)o(eased)f(for)h(each)g(denial)g(of)g (the)440 1333 y(mutex)e(to)g(avoid)f(overloading)h(the)g(granting)g (nodes)h(if)e(the)h(mutex)g(is)g(very)f(popular)-6 b(.)798 2372 y @beginspecial 91 @llx 568 @lly 250 @urx 722 @ury 1133 @rwi @setspecial %%BeginDocument: design/images/mutex.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: mutex.dvi %%BoundingBox: 91 568 250 722 %%DocumentFonts: PazoMath-Italic Palatino-Italic %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o mutex.eps mutex.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.10.26:1106 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (mutex.dvi) @start /Fa 134[664 664 19[664 541 615 590 97[{ TeXBase1Encoding ReEncodeFont }6 1328.35 /Palatino-Italic rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 16767 a @beginspecial 0 @llx 0 @lly 157 @urx 151 @ury 1570 @rwi @setspecial %%BeginDocument: mutex.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: mutex.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue Oct 26 11:06:50 2004 %%For: arj@homer.cs.aau.dk (Anders Rune Jensen) %%BoundingBox: 0 0 157 151 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 151 moveto 0 0 lineto 157 0 lineto 157 151 lineto closepath clip newpath -140.8 260.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % 7.500 slw % Ellipse n 2531 2201 176 176 0 360 DrawEllipse gs col0 s gr % Ellipse n 3277 2201 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 4027 2201 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 4777 2201 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 3290 3930 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 4293 3944 171 171 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw gs clippath 4075 2376 m 4022 2347 l 3950 2480 l 4034 2389 l 4002 2508 l cp eoclip n 3285 3765 m 4042 2375 l gs col0 s gr gr % arrowhead 7.500 slw n 4002 2508 m 4034 2389 l 3950 2480 l 4002 2508 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw [60] 0 sd gs clippath 3297 2345 m 3248 2380 l 3338 2502 l 3292 2388 l 3386 2467 l cp eoclip n 4290 3765 m 3282 2375 l gs col0 s gr gr [] 0 sd % arrowhead 7.500 slw n 3386 2467 m 3292 2388 l 3338 2502 l 3386 2467 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw [60] 0 sd gs clippath 4815 2370 m 4758 2350 l 4709 2493 l 4777 2390 l 4765 2513 l cp eoclip n 4290 3780 m 4782 2375 l gs col0 s gr gr [] 0 sd % arrowhead 7.500 slw n 4765 2513 m 4777 2390 l 4709 2493 l 4765 2513 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4593 2586 m 4552 2542 l 4441 2645 l 4550 2586 l 4482 2689 l cp eoclip n 3285 3765 m 4562 2575 l gs col0 s gr gr % arrowhead n 4482 2689 m 4550 2586 l 4441 2645 l 4482 2689 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 4149 2556 m 4090 2564 l 4110 2713 l 4124 2591 l 4170 2705 l cp eoclip n 4290 3780 m 4122 2575 l gs col0 s gr gr [] 0 sd % arrowhead n 4170 2705 m 4124 2591 l 4110 2713 l 4170 2705 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw gs clippath 2569 2372 m 2516 2401 l 2588 2533 l 2558 2414 l 2641 2505 l cp eoclip n 3285 3765 m 2550 2400 l gs col0 s gr gr % arrowhead 7.500 slw n 2641 2505 m 2558 2414 l 2588 2533 l 2641 2505 l cp gs 0.00 setgray ef gr col0 s $F2psEnd rs %%EndDocument @endspecial 0 0 0 TeXcolorrgb 8107 16380 a Fa(x)p Black 0 0 0 TeXcolorrgb 18185 880 a(d)p Black 0 0 0 TeXcolorrgb -5664 w(c)p Black 0 0 0 TeXcolorrgb -10622 w(a)p Black 0 0 0 TeXcolorrgb 4490 w(b)p Black 0 0 0 TeXcolorrgb 15085 16380 a(y)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 1183 w @beginspecial 91 @llx 567 @lly 257 @urx 722 @ury 1133 @rwi @setspecial %%BeginDocument: design/images/mutex-good.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: mutex-good.dvi %%BoundingBox: 91 567 257 722 %%DocumentFonts: PazoMath-Italic Palatino-Italic %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o mutex-good.eps mutex-good.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.10.26:1058 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % File 8r.enc as of 2002-03-12 for PSNFSS 9 % % This is the encoding vector for Type1 and TrueType fonts to be used % with TeX. This file is part of the PSNFSS bundle, version 9 % % Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both ASCII and Windows. % % (6) /Euro is assigned to 128, as in Windows ANSI % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there down to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (mutex-good.dvi) @start /Fa 134[664 664 19[664 541 615 590 97[{ TeXBase1Encoding ReEncodeFont } 6 1328.35 /Palatino-Italic rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 16867 a @beginspecial 0 @llx 0 @lly 164 @urx 152 @ury 1640 @rwi @setspecial %%BeginDocument: mutex-good.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: mutex-good.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Tue Oct 26 10:57:59 2004 %%For: arj@homer.cs.aau.dk (Anders Rune Jensen) %%BoundingBox: 0 0 164 152 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 152 moveto 0 0 lineto 164 0 lineto 164 152 lineto closepath clip newpath -141.1 260.9 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % 7.500 slw % Ellipse n 3502 3926 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 2531 2201 171 171 0 360 DrawEllipse gs col0 s gr % Ellipse n 3277 2201 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 4554 3921 171 171 0 360 DrawEllipse gs col0 s gr % Ellipse n 4069 2201 175 175 0 360 DrawEllipse gs col0 s gr % Ellipse n 4898 2202 175 175 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw gs clippath 4008 2546 m 3952 2525 l 3897 2665 l 3969 2565 l 3953 2687 l cp eoclip n 3502 3755 m 3975 2550 l gs col0 s gr gr % arrowhead 7.500 slw n 3953 2687 m 3969 2565 l 3897 2665 l 3953 2687 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 2766 2461 m 2732 2510 l 2856 2597 l 2775 2504 l 2890 2548 l cp eoclip n 4562 3755 m 2762 2495 l gs col0 s gr gr [] 0 sd % arrowhead n 2890 2548 m 2775 2504 l 2856 2597 l 2890 2548 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw gs clippath 2558 2345 m 2508 2379 l 2594 2503 l 2551 2388 l 2644 2469 l cp eoclip n 3502 3755 m 2542 2375 l gs col0 s gr gr % arrowhead 7.500 slw n 2644 2469 m 2551 2388 l 2594 2503 l 2644 2469 l cp gs 0.00 setgray ef gr col0 s % Polyline 15.000 slw gs clippath 3312 2350 m 3253 2359 l 3276 2509 l 3288 2386 l 3336 2499 l cp eoclip n 3502 3755 m 3285 2370 l gs col0 s gr gr % arrowhead 7.500 slw n 3336 2499 m 3288 2386 l 3276 2509 l 3336 2499 l cp gs 0.00 setgray ef gr col0 s $F2psEnd rs %%EndDocument @endspecial 0 0 0 TeXcolorrgb 16551 16480 a Fa(y)p Black 0 0 0 TeXcolorrgb -7841 w(x)p Black 0 0 0 TeXcolorrgb 3071 880 a(a)p Black 0 0 0 TeXcolorrgb 4390 w(b)p Black 0 0 0 TeXcolorrgb 4885 w(c)p Black 0 0 0 TeXcolorrgb 4959 w(d)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 511 2551 a Fq(Figur)o(e)16 b(2.6:)28 b(T)-8 b(o)17 b(the)h(left,)f(two)g(nodes)h(have)g(simultanously)e(tried)i(to) g(obtain)e(a)i(mutex)f(using)g(the)h(\002rst)511 2656 y(phase)e(of)g(the)g(algorithm.)g(T)-8 b(o)15 b(the)g(right,)h(they)g (pr)o(oceed)h(with)e(the)h(second)g(phase.)h(Since)f(x)i(was)e(granted) 511 2761 y(the)22 b(mutex)g(by)h(the)f(node)g(that)h(is)f(closest)g(to) g(the)h(mutex)f(key)m(,)h(the)f(r)o(equest)f(of)i(y)h(will)d(fail)h (wher)o(eas)i(x)511 2866 y(continues)18 b(undisturbed.)565 3058 y Fz(Since)f(the)i(r)o(equests)f(ar)o(e)e(sent)j(in)g(a)e(pr)o (ede\002ned)g(or)o(der)g(in)i(the)f(second)g(phase,)g(simul-)440 3172 y(taneously)i(r)o(equesting)f(nodes)g(cannot)h(end)f(up)g(in)g(a)g (deadlock.)f(If)g(two)i(nodes)f(wer)o(e)g(r)o(e-)440 3287 y(questing)g(the)e(mutex)g(at)g(the)h(same)f(time,)g(one)h(of)f (them)h(would)f(discover)g(that)h(the)f(other)440 3402 y(has)24 b(alr)o(eady)e(been)h(granted)g(the)h(mutex)g(by)g(one)g(of)g (the)g(nodes)g(and)f(hence)h(stop.)g(This)440 3516 y(works)19 b(even)g(in)g(the)f(case)g(wher)o(e)g(the)h(two)g(r)o(equesting)g (nodes)g(do)g(not)g(have)f(exactly)g(the)440 3631 y(same)j(view)f(of)h (which)h(nodes)f(to)g(contact,)g(since)g(they)g(still)g(agr)o(ee)e(on)j (the)f(or)o(der)-6 b(.)565 3745 y(The)22 b(algorithm)g(thus)h(ensur)o (es)f(mutual)g(exclusion)h(in)f(case)g(of)g(failur)o(es)e(among)j(the) 440 3860 y(mutex)k(granters)g(as)g(long)i(as)e(just)h(one)g(of)f(the)g (nodes)h(that)f(have)g(granted)g(the)g(mutex)440 3974 y(is)g(still)h(up)f(and)f(among)i(the)f Fu(r)i Fz(closest)f(to)f(the)g (key)-9 b(,)27 b(because)f(another)h(node)g(can)f(only)440 4089 y(claim)20 b(to)f(have)g(the)h(mutex)g(when)g(it)f(has)h(r)o (eceived)e Fu(r)k Fz(grants,)d(and)g(the)h(r)o(emaining)f(node)440 4204 y(will)i(deny)g(it.)565 4318 y(T)-8 b(o)29 b(avoid)f(that)g(a)g (failed)g(r)o(equester)f(holds)i(a)f(mutex)h(for)o(ever)-6 b(,)27 b(the)h(mutexes)h(must)440 4433 y(have)h(a)h(limited)g (lifetime.)f(If)h(a)f(r)o(equester)g(fails,)g(then)i(the)f(grants)g(of) f(that)h(r)o(equester)440 4547 y(eventually)22 b(expir)o(e)f(so)i(that) f(the)g(algorithm)h(can)f(continue.)g(This)h(works)g(r)o(egar)o(dless)d (of)440 4662 y(whether)g(the)h(failed)e(r)o(equester)g(was)h(in)g(the)h (midst)f(of)g(obtaining)h(the)f(mutex)g(\(r)o(eceived)440 4776 y(less)h(than)g Fu(r)i Fz(grants\))e(or)g(had)f(alr)o(eady)f (obtained)h(it)h(\(r)o(eceived)e Fu(r)k Fz(grants\).)565 4891 y(Like)g(other)i(mutual)f(exclusion)g(algorithms,)h(the)f (algorithm)h(does)f(not)g(in)h(general)440 5006 y(avoid)20 b(deadlocks)g(since)g(a)g(wait-for)f(cycle)h(with)h(two)g(mutexes)f (may)h(appear)-6 b(.)18 b(The)i(lim-)440 5120 y(ited)31 b(lifetime)g(of)h(the)f(mutexes)g(may)-9 b(,)31 b(however)-6 b(,)31 b(be)g(able)g(to)h(clear)e(a)h(deadlock)f(with)440 5235 y(some)25 b(luck.)e(Another)i(pr)o(oblem)e(with)i(the)f(above)f (algorithm)i(is)f(that)g(it)g(makes)g(it)g(pos-)440 5349 y(sible)h(for)g(a)f(r)o(equesting)h(node)g(to)h(starve)e (inde\002nitely)i(if)e(the)h(mutex)g(is)g(very)g(popular)-6 b(.)1831 5662 y(38)p eop %%Page: 39 41 39 40 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(One)21 b(bene\002t)g(of)g(the)g (algorithm)g(is)g(that)g(it)g(is)g(quite)g(simple.)440 839 y Fr(2.3)119 b(Data)29 b(Service)440 1044 y Fz(The)23 b(simple)h(data)e(service)h(we)g(describe)g(uses)g(the)h(information)g (service)f(for)g(str)o(uctur)o(-)440 1158 y(ing)c(the)f(data.)f(Any)i (user)f(or)g(gr)o(oup)g(can)g(cr)o(eate)f(a)g(data)h(dir)o(ectory)f(in) i(their)f(r)o(oot)g(and)g(use)440 1273 y(the)28 b(information)g (service)f(to)h(setup)g(the)f(str)o(uctur)o(e,)g(br)o(owse)h(the)f (available)f(data)h(and)440 1387 y(grant)22 b(or)g(deny)h(rights.)f(It) g(is)h(only)g(when)g(the)f(actual)g(data)f(needs)h(to)g(be)g(transferr) o(ed)e(or)440 1502 y(r)o(emoved)g(that)h(the)f(data)g(service)g(must)i (to)f(be)f(invoked.)565 1616 y(Hence)g(it)g(only)i(needs)e(a)g(simple)h (user)f(interface.)f(For)i(transferring)f(data,)f(it)h(should)440 1731 y(support)g Ft(stor)o(e)25 b Fz(that)19 b(given)h(an)f (information)i(service)d(path,)h(a)g(data)f(chunk)j(and)d(a)h(list)h (of)440 1846 y(r)o(eplication)d(hosts)i(stor)o(es)f(the)g(data)f(at)g (those)i(hosts)g(and)e Ft(r)o(etrieve)23 b Fz(that)18 b(given)g(a)g(path)g(r)o(e-)440 1960 y(trieves)f(a)g(data)f(chunk.)i (Since)f(the)g Ft(stor)o(e)23 b Fz(operation)18 b(adds)e(r)o(eplicas,)g (it)i(is)f(also)h(necessary)440 2075 y(with)k(a)e Ft(delete)26 b Fz(operation)21 b(to)g(r)o(emove)g(r)o(eplicas.)565 2189 y(Ther)o(e)30 b(must)i(also)f(be)g(a)g(network)h(interface)e(for)h (communication)i(between)e(two)440 2304 y(data)22 b(service)i(hosts)g (but)g(for)f(simplicity)i(we)f(assume)g(this)g(to)g(be)f(handled)g(by)h (another)440 2418 y(pr)o(otocol,)d(such)g(as)f(HTTP)-11 b(,)21 b(FTP)-11 b(,)21 b(scp)g(or)g(SFS.)565 2533 y(The)e(following)j (sections)e(discuss)h(the)f(interaction)g(with)g(the)g(information)h (service,)440 2648 y(wher)o(e)h(r)o(eplicas)g(may)h(be)g(located)g(and) f(how)i(to)f(transfer)g(data)e(between)i(the)h(data)d(ser)o(-)440 2762 y(vice)f(hosts)i(thr)o(ough)g(the)f(network)g(interface.)440 3022 y Fp(2.3.1)99 b(Structure)24 b(in)h(Information)g(Service)440 3195 y Fz(A)i(convenient)h(way)g(to)g(r)o(epr)o(esent)e(the)h(data)g (in)h(the)f(information)i(service)e(is)h(to)g(have)440 3310 y(a)e(dir)o(ect)g(corr)o(espondence)f(between)i(a)f(\002le)h(in)g (a)f(data)f(dir)o(ectory)h(and)g(an)h(actual)e(data)440 3424 y(chunk.)f(Then)f(the)g(users)h(can)e(manipulate)h(the)h(dir)o (ectory)e(str)o(uctur)o(e)h(and)f(the)i(permis-)440 3539 y(sions)j(of)f(the)g(\002les,)g(wher)o(eas)e(the)i(data)f(service)g (manipulates)h(the)g(actual)f(contents)h(of)440 3654 y(the)18 b(\002les.)h(The)f(contents)h(of)f(each)g(\002le)h(is)f(some)h (coor)o(dination)g(information)g(for)f(the)g(data)440 3768 y(chunk)24 b(it)g(corr)o(esponds)f(to.)h(This)g(consists)h(of)f(a) f(list)h(of)f(r)o(eplica)g(locations)h(and)f(a)g(check)440 3883 y(sum)f(of)g(the)g(data)e(to)i(be)f(able)g(to)h(detect)f(corr)o (upted)g(chunks;)i(an)e(example)g(is)h(shown)h(in)440 3997 y(T)-8 b(able)20 b(2.1.)p 901 4105 1922 7 v 951 4200 a(chunk)h(path)581 b(check-sum)102 b(locations)p 901 4253 1922 5 v 951 4356 a Fn(/a/data/lhc/chunk1)96 b(a314b3)p Fz(.)12 b(.)g(.)171 b Fu(x)r Fz(,)22 b Fu(y)q Fz(,)f Fu(z)951 4471 y Fn(/a/data/lhc/chunk2)96 b(ef2f34)p Fz(.)12 b(.)g(.)254 b Fu(x)951 4585 y Fn(/a/data/uppaal/mdl)96 b(ef2f34)p Fz(.)12 b(.)g(.)254 b Fu(y)p 901 4641 1922 7 v 511 4786 a Fq(T)-8 b(able)20 b(2.1:)28 b(An)21 b(example)i(of)e(a)h (data)g(dir)o(ectory)h(under)e(the)h(r)o(oot)f(of)j(a)q(.)d(The)h (\002rst)g(chunk)f(is)h(r)o(eplicated)511 4891 y(thr)o(ee)d(times)f (\(at)h(the)g(hosts)i(x)r(,)f(y)g(and)f(z)q(\),)g(the)g(two)f(others)i (have)f(only)g(one)f(r)o(eplica.)565 5124 y Fz(The)e(data)f(service)g (must)i(authenticate)f(all)g(r)o(equest)g(to)g(ensur)o(e)g(that)g(it)g (does)g(not)h(send)440 5239 y(or)k(r)o(eceive)f(data)g(fr)o(om)h(a)f (party)h(who)h(is)g(not)f(authorised.)g(It)g(can)g(do)h(that)f(by)g(r)o (etrieving)440 5353 y(the)28 b(public)g(key)g(of)h(that)f(party)f(fr)o (om)h(the)g(information)h(service,)e(for)h(authentication,)1831 5662 y(39)p eop %%Page: 40 42 40 41 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(and)24 b(checking)i(the)f(permissions)h (of)f(the)g(\002le)g(corr)o(esponding)f(to)i(the)f(data)e(chunk,)j(for) 440 646 y(authorisation.)565 760 y(The)g(data)f(chunks)i(ar)o(e)e(not)i (encrypted,)f(however)-6 b(,)26 b(so)h(if)f(a)g(user)g(wants)h(to)g (ensur)o(e)440 875 y(that)21 b(the)h(data)e(is)i(kept)f(secr)o(et)g(fr) o(om)g(the)h(storage)f(r)o(esour)o(ces)f(storing)j(them,)e(it)h(is)g (neces-)440 990 y(sary)e(to)i(encrypt)e(them)h(befor)o(ehand.)440 1250 y Fp(2.3.2)99 b(Replica)25 b(Locations)440 1423 y Fz(Data)32 b(sets)g(can)g(be)g(located)f(at)h(basically)g(two)h (kinds)f(of)g(places:)g(storage)g(r)o(esour)o(ces,)440 1537 y(which)c(act)e(as)g(long-term)h(storage)g(and)f(have)g(very)h (lar)o(ge)e(data)h(capacities,)f(and)h(user)440 1652 y(and)18 b(r)o(esour)o(ce)f(hosts)i(with)h(smaller)e(capacities)f(wher) o(e)h(data)f(is)i(kept)f(only)i(temporarily)-9 b(.)565 1767 y(The)27 b(storage)h(r)o(esour)o(ces)e(need)h(to)h(r)o(egister)f (themselves)h(in)g(the)g(virtual)f(or)o(ganisa-)440 1881 y(tions)e(they)f(ar)o(e)f(pr)o(oviding)g(storage)h(to,)g(so)g(that)g (it)g(is)h(possible)f(for)g(other)g(participants)440 1996 y(to)j(\002nd)f(out)h(wher)o(e)e(to)i(place)e(input)i(and)e (output)i(data.)e(The)h(r)o(egister)o(ed)e(information)440 2110 y(should)c(include)g(the)g(available)e(fr)o(ee)g(space)h(which)i (must)f(be)g(updated)e(whenever)h(data)440 2225 y(is)i(stor)o(ed)f(or)h (deleted.)f(Otherwise,)h(the)g(storage)f(r)o(esour)o(ces)g(ar)o(e)f (simple)i(\002le)g(servers.)565 2339 y(For)26 b(the)f(temporary)h(data) e(locations,)i(the)g(situation)h(is)f(mor)o(e)f(complex.)h(The)f(data) 440 2454 y(may)20 b(be)f(stor)o(ed)g(at)g(a)g(grid)h(user)f(who)i (needs)e(to)h(submit)h(it)f(with)g(a)f(job,)h(or)g(the)g(data)e(may)440 2569 y(r)o(eside)k(at)g(a)g(grid)h(r)o(esour)o(ce,)e(either)i(because)f (it)h(is)g(the)g(input)g(for)f(a)h(job)g(or)g(because)f(it)h(is)440 2683 y(the)e(output)g(fr)o(om)f(a)h(job.)565 2798 y(The)28 b(users)h(have)g(thr)o(ee)f(possible)h(ways)g(of)g(submitting)h(the)f (data.)f(A)g(stable)g(user)440 2912 y(can)e(setup)f(a)h(data)e(service) i(on)g(his)h(host)g(and)e(write)h(in)g(the)g(information)h(service)e (that)440 3027 y(the)k(data)f(is)h(available)e(fr)o(om)i(that)g(host.)g (This)h(allows)f(the)g(r)o(esour)o(ce)f(that)g(eventually)440 3141 y(r)o(eceives)22 b(the)i(job)g(to)g(r)o(etrieve)e(the)i(data)e (dir)o(ectly)h(fr)o(om)g(the)g(user)-6 b(.)23 b(Another)h(possibility) 440 3256 y(is)d(that)f(the)h(user)g(picks)f(a)h(speci\002c)f(r)o(esour) o(ce,)f(transfers)h(the)h(data)e(to)i(that)g(r)o(esour)o(ce)e(and)440 3370 y(speci\002es)i(in)g(the)g(job)g(description)g(that)g(this)h (particular)d(r)o(esour)o(ce)h(is)h(pr)o(eferr)o(ed.)565 3485 y(Both)f(of)f(these)h(ideas)f(avoids)g(transferring)h(the)f(data)g (mor)o(e)g(than)h(once,)g(but)f(ar)o(e)g(not)440 3600 y(fault-tolerant)24 b(since)h(the)g(user)g(or)g(the)g(r)o(esour)o(ce)f (may)h(fail.)f(The)h(safe)f(possibility)j(is)e(to)440 3714 y(transfer)f(the)i(data)e(to)i(at)f(least)g(one)h(storage)f(r)o (esour)o(ce)f(and)h(let)g(the)h(r)o(esour)o(ce)e(r)o(unning)440 3829 y(the)d(job)g(r)o(etrieve)f(the)h(data)e(fr)o(om)h(ther)o(e.)565 3943 y(Since)g(the)h(computational)h(r)o(esour)o(ces)d(need)i(to)g (have)f(enough)i(space)e(available)g(for)440 4058 y(pr)o(ocessing)d (jobs,)h(it)f(is)g(likely)g(that)g(ther)o(e)f(will)i(be)e(excess)h(fr)o (ee)e(space,)h(at)g(least)h(temporar)o(-)440 4172 y(ily)-9 b(.)21 b(This)g(extra)f(space)g(can)g(be)h(used)f(in)h(several)f(ways.) 565 4287 y(First,)j(by)g(letting)g(r)o(etrieved)e(input)j(data)e(r)o (eside)g(at)g(the)h(r)o(esour)o(ce)f(even)g(after)g(it)h(has)440 4402 y(been)18 b(used,)g(it)h(can)f(be)h(used)f(as)g(a)g(cache)g(for)g (that)h(r)o(esour)o(ce)e(in)i(case)f(other)h(jobs)g(need)f(the)440 4516 y(same)26 b(data.)f(This)j(is)e(most)i(ef)o(fective)c(if)j(the)g (job)g(scheduler)f(is)h(made)f(awar)o(e)e(of)j(it)g(and)440 4631 y(capable)19 b(of)i(taking)g(it)g(into)h(account.)565 4745 y(But)17 b(the)h(cache)g(can)f(also)h(act)g(as)f(an)h(extra)f(r)o (epository)h(for)g(the)g(input)g(data)f(that)h(other)440 4860 y(computational)j(r)o(esour)o(ces)d(in)j(the)f(vicinity)h(can)f (exploit.)g(This)g(helps)g(avoid)g(overload-)440 4974 y(ing)32 b(storage)f(r)o(esour)o(ces)f(with)i(popular)e(input)i(data.)e (The)h(cached)f(r)o(eplicas)g(must)i(be)440 5089 y(r)o(egister)o(ed)24 b(in)i(the)f(information)i(service)d(by)i(the)f(data)g(service)g(r)o (unning)h(on)h(the)e(com-)440 5204 y(putational)18 b(r)o(esour)o(ce.)e (A)h(cache-clearing)f(scheme)i(such)g(as)f(evicting)h(the)g(least)f(r)o (ecently)440 5318 y(used)k(data)e(must)i(be)g(employed)g(when)g(the)g (available)e(space)h(is)i(low)-8 b(.)1831 5662 y(40)p eop %%Page: 41 43 41 42 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 565 531 a Fz(The)15 b(extra)g(space)h(can)f(also)h(be) g(used)g(to)g(stor)o(e)g(the)g(output)g(data)f(over)h(longer)g(periods) 440 646 y(of)25 b(time)h(to)g(avoid)e(transferring)h(them)h(to)g(a)f (storage)g(r)o(esour)o(ce.)e(If)i(the)h(computational)440 760 y(r)o(esour)o(ce)j(fails,)g(the)h(data)f(will,)h(however)-6 b(,)30 b(be)f(unavailable,)g(and)g(at)h(some)g(point)h(the)440 875 y(data)21 b(must)i(be)f(forwar)o(ded)f(to)i(a)f(storage)g(r)o (esour)o(ce)f(anyway)h(to)h(make)f(r)o(oom)h(for)f(other)440 990 y(data)k(if)g(they)h(ar)o(e)e(not)j(r)o(etrieved)d(and)h(deleted)f (by)i(the)g(user)-6 b(.)26 b(But)h(in)g(cases)f(wher)o(e)g(the)440 1104 y(computational)33 b(r)o(esour)o(ces)e(ar)o(e)h(r)o(easonably)f (stable,)h(this)i(way)e(of)h(handling)g(output)440 1219 y(data)20 b(may)g(be)h(pr)o(eferable.)440 1479 y Fp(2.3.3)99 b(Data)25 b(T)-11 b(ransfers)440 1652 y Fz(Except)22 b(for)g(the)g(coor)o(dination)h(via)f(the)g(information)i(service,)d (the)i(communication)h(in)440 1767 y(the)19 b(data)e(service)h(is)h (done)f(in)h(a)f(point-to-point)i(manner)e(wher)o(e)g(one)h(data)e (service)h(host)440 1881 y(dir)o(ectly)j(contacts)g(the)h(destination)g (of)f(a)g Ft(stor)o(e)27 b Fz(operation)22 b(or)f(the)h(sour)o(ce)f(of) g(a)g Ft(r)o(etrieve)440 1996 y Fz(operation.)k(The)g(underlying)h (transfer)e(method,)h(such)h(as)e(HTTP)-11 b(,)25 b(FTP)-11 b(,)26 b(scp)f(or)g(SFS,)f(is)440 2110 y(used)d(to)g(connect)g(to)g (the)g(speci\002ed)f(host,)i(authenticate)e(and)g(transfer)g(the)h (data.)565 2225 y(When)28 b(a)f(data)g(set)h(is)g(r)o(eplicated,)e (ther)o(e)h(ar)o(e)f(many)j(possible)f(strategies)g(for)f(opti-)440 2339 y(mising)f(the)f(time)h(it)f(takes)g(to)g(r)o(etrieve)f(it.)h(One) g(possibility)h(is)g(to)f(test)g(the)g(bandwidth)440 2454 y(to)g(all)f(r)o(eplicating)g(hosts)i(just)f(befor)o(e)f(the)g (transfer)g(is)h(initiated)g(and)f(then)h(choose)g(the)440 2569 y(fastest)k(host.)h(Unfortunately)-9 b(,)28 b(small)i(test)g (packages)e(may)h(not)h(be)f(r)o(epr)o(esentative)e(of)440 2683 y(the)21 b(speed)f(at)g(which)i(lar)o(ge)e(amounts)h(of)g(data)f (can)g(be)g(transferr)o(ed.)565 2798 y(Another)k(strategy)h(is)g(to)g (r)o(etrieve)e(the)i(data)f(set)g(fr)o(om)h(all)f(hosts)i(in)f (parallel.)f(If)g(the)440 2912 y(data)g(is)h(divided)f(into)i(mor)o(e)f (chunks)h(than)f(ther)o(e)g(ar)o(e)e(hosts,)j(the)f(hosts)i(that)e (turn)g(out)440 3027 y(to)k(have)e(the)i(fastest)f(connection)h(can)f (be)g(assigned)g(most)h(of)g(the)f(chunks.)h(A)f(simple)440 3141 y(policy)19 b(that)g(achieves)f(this)h(is)g(to)g(r)o(equest)f(a)g (chunk)h(fr)o(om)f(each)g(of)h(the)f(hosts)i(at)e(\002rst)h(and)440 3256 y(then)f(r)o(equest)e(another)h(chunk)h(fr)o(om)f(a)f(given)i (host)g(when)f(the)g(transfer)f(of)h(the)h(pr)o(evious)440 3370 y(chunk)26 b(fr)o(om)f(that)g(host)h(is)g(completed.)f(Of)g (course)g(a)g(mor)o(e)g(sophisticated)g(algorithm)440 3485 y(is)c(needed)f(to)h(pr)o(event)f(the)h(transfer)f(to)h(be)f (bounded)h(by)g(the)g(latency)-9 b(.)440 3793 y Fr(2.4)119 b(Grid)29 b(Resources)440 3997 y Fz(In)c(this)g(section)g(we)f(explain) g(how)h(the)g(r)o(esour)o(ces)e(that)h(the)h(grid)f(participants)f (choose)440 4112 y(to)g(make)e(available)g(can)h(be)g(connected)g(to)g (the)g(grid)g(with)h(the)f(design)h(outlined)g(in)f(the)440 4226 y(pr)o(evious)e(sections.)565 4341 y(W)-8 b(e)25 b(\002rst)h(describe)f(some)i(general)e(issues:)h(how)h(to)f(r)o (egister)f(the)g(r)o(esour)o(ces)g(in)h(the)440 4456 y(information)h(service)e(so)h(that)f(it)h(is)g(possible)g(to)g(manage) f(them,)h(how)g(to)g(submit)h(and)440 4570 y(schedule)k(jobs,)h(how)g (to)g(cope)f(with)h(failur)o(es,)d(how)j(to)g(contr)o(ol)g(the)f (submitted)g(jobs)440 4685 y(and)20 b(how)i(to)f(log)g(the)f(major)h (events)g(so)g(that)g(the)f(execution)h(trail)f(is)h(r)o(ecor)o(ded)e (for)h(later)440 4799 y(examination.)27 b(The)g(design)h(emphasises)f (\003exibility)h(so)f(it)h(is)f(possible)h(to)f(use)g(it)g(with)440 4914 y(many)20 b(possible)g(types)g(of)g(r)o(esour)o(ces.)e(Afterwar)o (ds,)f(we)j(outline)h(the)f(design)g(of)f(a)h(batch)440 5028 y(cluster)h(and)f(storage)h(r)o(esour)o(ce)e(component.)1831 5662 y(41)p eop %%Page: 42 44 42 43 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fp(2.4.1)99 b(Resource)25 b(Registration)440 704 y Fz(The)17 b(r)o(esour)o(ces)g(need)g(to)g(r)o (egister)g(themselves)h(on)g(the)f(grid)h(so)g(that)f(it)h(is)f (possible)h(to)g(get)440 819 y(an)f(overview)h(of)g(the)f(available)f (r)o(esour)o(ces.)h(For)h(instance,)f(the)h(storage)f(r)o(esour)o(ces)g (need)440 933 y(to)22 b(announce)g(their)f(available)f(fr)o(ee)g(space) h(so)h(that)f(it)h(is)g(possible)g(to)g(determine)f(wher)o(e)440 1048 y(to)28 b(send)g(data.)e(Similarly)-9 b(,)28 b(a)f(scheduler)g (for)h(the)g(computational)g(r)o(esour)o(ces)e(needs)i(to)440 1163 y(know)33 b(what)g(r)o(esour)o(ces)e(ar)o(e)f(available,)h(unless) i(the)f(scheduling)h(algorithm)g(is)g(very)440 1277 y(simple.)565 1392 y(Each)15 b(virtual)h(or)o(ganisation)g(cr)o(eates)f(a)h(r)o (esour)o(ce)e(dir)o(ectory)i(in)g(which)h(the)f(r)o(esour)o(ces)440 1506 y(write)24 b(their)f(r)o(egistration)h(information.)g(One)g(way)f (to)h(manage)g(the)f(information)i(is)f(to)440 1621 y(cr)o(eate)d(a)h (subdir)o(ectory)g(for)g(each)g(category)g(of)g(r)o(esour)o(ce)g (\(e.g.)f(storage,)h(clusters,)h(mas-)440 1735 y(sively)h(parallel)e (super)o(computers\),)g(and)h(assign)h(a)f(dir)o(ectory)f(in)i(this)g (subdir)o(ectory)f(to)440 1850 y(a)e(given)g(r)o(esour)o(ce.)e(The)i(r) o(esour)o(ce)f(must)h(be)g(given)g(write)h(permission)g(to)f(the)g (assigned)440 1965 y(dir)o(ectory)f(and)g(can)h(then)g(\002ll)g(in)g (the)g(information)h(on)f(its)h(own.)565 2079 y(Exactly)g(what)i (information)h(is)f(r)o(egister)o(ed)e(depends)h(on)h(the)g(type)f(of)h (r)o(esour)o(ce;)e(in)440 2194 y(general)d(ther)o(e)g(is)h(a)f(fairly)g (static)g(part)g(that)g(describes)g(the)h(capabilities)f(of)g(the)h(r)o (esour)o(ce)440 2308 y(and)g(a)h(mor)o(e)f(dynamic)h(part)f(that)h (describes)f(the)h(curr)o(ent)f(status)g(of)h(the)g(r)o(esour)o(ce.)565 2423 y(For)32 b(a)h(storage)f(r)o(esour)o(ce,)f(in)i(addition)g(to)g (the)g(name)f(and)h(contact)f(information)440 2537 y(intended)19 b(for)f(human)h(administration)h(the)f(static)f(part)g(would)i(be)e(a)g (network)i(addr)o(ess)440 2652 y(for)25 b(establishing)i(a)e (connection)i(to)f(the)g(r)o(esour)o(ce)e(when)i(r)o(etrieving)f(or)h (sending)g(data)440 2767 y(and)18 b(the)g(maximum)g(amount)h(of)f (space)f(available.)g(The)h(dynamic)g(information)h(would)440 2881 y(be)h(the)g(amount)h(of)f(fr)o(ee)e(disk)i(space)g(and)f(a)h (time)g(stamp)g(that)g(is)h(updated)e(periodically)440 2996 y(so)32 b(that)f(other)h(grid)f(participants)f(can)h(discover)g (if)g(the)h(r)o(esour)o(ce)e(is)h(down)h(without)440 3110 y(having)21 b(to)g(contact)g(it.)565 3225 y(For)e(a)g (computational)g(r)o(esour)o(ce)f(such)i(as)f(a)f(cluster)h(the)h (static)f(information)h(would)440 3339 y(be)26 b(the)g(available)f(pr)o (ocessors,)h(memory)h(and)f(disk)h(space)e(and)h(the)h(system)g(ar)o (chitec-)440 3454 y(tur)o(e)d(in)h(addition)f(to)h(the)f (administration)h(information,)h(and)e(the)g(dynamic)h(informa-)440 3569 y(tion)d(would)f(be)f(the)h(curr)o(ent)f(and)g(possibly)i (scheduled)f(load.)440 3829 y Fp(2.4.2)99 b(Job)25 b(Scheduling)440 4002 y Fz(Some)i(r)o(esour)o(ces)f(ar)o(e)f(active)i(r)o(esour)o(ces)f (in)h(the)g(sense)g(that)g(it)h(should)g(be)e(possible)i(to)440 4116 y(submit)g(jobs)f(that)g(they)g(will)h(then)f(start)f(executing)h (on)h(their)f(own)g(at)g(some)g(point)h(in)440 4231 y(the)d(futur)o(e,) e(while)i(other)g(r)o(esour)o(ces)f(ar)o(e)f(passive,)h(e.g.)g(the)h (storage)f(r)o(esour)o(ces)f(which)440 4345 y(simply)34 b(accept)d(and)i(deliver)f(data)f(when)j(r)o(equested.)e(For)h(the)g (active)f(r)o(esour)o(ces,)f(it)440 4460 y(is)26 b(necessary)e(with)i (a)f(scheduling)h(scheme)f(for)g(deciding)g(wher)o(e)g(and)g(when)h (jobs)g(ar)o(e)440 4575 y(executed.)565 4689 y(As)34 b(mentioned)h(in)h(Section)e(2.2,)g(our)h(basic)f(idea)g(is)h(that)f (job)i(submitters)f(place)440 4804 y(their)29 b(job)h(in)g(the)g (information)g(service.)f(As)g(a)g(consequence,)g(our)h(design)g(is)f (\003exible)440 4918 y(enough)i(to)g(accommodate)f(several)f (scheduling)i(models,)g(although)g(the)f(particular)440 5033 y(model)e(chosen)h(af)o(fects)c(wher)o(e)j(submitted)f(jobs)i (should)g(be)e(placed)g(in)h(the)g(informa-)440 5147 y(tion)22 b(service.)565 5262 y(The)32 b(model)g(that)h(Nor)o(duGrid)f (is)g(following)i(makes)e(the)h(users)f(r)o(esponsible)h(for)440 5377 y(scheduling)18 b(their)g(jobs)h(at)e(r)o(esour)o(ces)f(\226)i (this)g(corr)o(esponds)f(to)h(each)g(r)o(esour)o(ce)e(having)i(its)1831 5662 y(42)p eop %%Page: 43 45 43 44 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(own)21 b(job)f(queue)g(wher)o(e)f(users)h (place)f(their)h(jobs.)g(However)-6 b(,)19 b(the)h(pr)o(oblems)g (associated)440 646 y(with)i(this)g(scheduling)f(model,)h(as)e (discussed)h(in)h(Chapter)e(1,)g(pr)o(ompts)h(us)h(to)f(consider)440 760 y(alternative)15 b(models.)h(If)g(each)f(virtual)h(or)o(ganisation) g(has)g(a)f(queue)h(of)g(incoming)i(jobs)f(for)440 875 y(each)g(r)o(esour)o(ce)e(category)-9 b(,)17 b(i.e.)f(common)j(to)f (the)f(r)o(esour)o(ces)f(belonging)i(to)g(that)f(category)-9 b(,)440 990 y(then)21 b(the)g(grid)g(itself)f(can)h(take)f(car)o(e)f (of)i(the)g(scheduling.)565 1104 y(It)k(is)h(in)g(principle)g(possible) g(to)h(deploy)e(any)h(scheduling)g(algorithm)h(with)f(the)g(in-)440 1219 y(formation)h(about)f(r)o(esour)o(ces)f(that)i(is)f(available)f (thr)o(ough)i(their)g(r)o(egistration)f(and)g(the)440 1333 y(job)e(information)g(available)e(in)i(the)g(incoming)h(queue.)e (It)h(is)f(also)h(likely)g(that)f(dif)o(fer)o(ent)440 1448 y(algorithms)f(will)f(be)g(pr)o(eferable)d(in)k(dif)o(fer)o(ent)c (cases.)j(The)f(choice)i(of)e(algorithm)i(af)o(fects)440 1562 y(which)g(grid)e(participants)g(do)h(the)g(scheduling.)565 1677 y(If)g(the)h(grid)f(is)h(employing)h(desktop)f(machines)g(with)g (unpr)o(edictable)e(uptimes)i(but)440 1792 y(an)28 b(abundance)f(of)g (r)o(esour)o(ces,)g(then)h(it)g(may)g(make)g(sense)g(to)g(choose)h(a)e (simple)h(algo-)440 1906 y(rithm)19 b(such)g(as)f(\002rst-in,)h (\002rst-out)g(and)f(let)h(the)g(r)o(esour)o(ces)e(themselves)i(select) f(jobs)i(fr)o(om)440 2021 y(the)32 b(job)h(queue)g(when)f(they)h(ar)o (e)e(idle.)h(Selecting)g(jobs)h(in)f(this)h(manner)g(rather)e(than)440 2135 y(scheduling)22 b(them)f(only)g(r)o(equir)o(es)f(little)h(ef)o (fort)f(fr)o(om)g(the)h(r)o(esour)o(ces.)565 2250 y(It)h(is)h(also)g (simple)g(to)g(implement.)g(A)f(r)o(esour)o(ce)f(that)i(thinks)h(it)e (will)i(be)e(idle)g(shortly)440 2364 y(\002rst)17 b(r)o(eads)d(the)j (job)g(queue)f(to)h(see)f(whether)h(ther)o(e)e(is)i(a)f(suitable)g (job.)h(If)f(not)h(it)f(subscribes)440 2479 y(to)21 b(noti\002cation)g (of)f(changes)g(to)h(the)f(queue)g(and)g(r)o(emains)g(idle.)f (Otherwise)i(it)f(locks)h(the)440 2594 y(job)30 b(queue,)f(marks)h(the) f(job)h(as)f(being)h(taken)f(if)g(another)h(r)o(esour)o(ce)e(did)h(not) h(get)f(to)h(it)440 2708 y(\002rst,)17 b(timestamps)g(the)g(mark)f(and) h(r)o(emoves)f(the)h(lock)g(again.)f(Resour)o(ce)h(failur)o(es)e(can)i (be)440 2823 y(handled)23 b(by)g(ignoring)i(old)f(marks)f(when)h (considering)g(whether)g(a)f(job)h(is)g(fr)o(ee.)d(Ther)o(e)440 2937 y(is)d(a)f(risk)h(that)g(the)g(job)g(queue)g(in)g(this)h(simple)f (implementation)h(becomes)f(a)f(bottleneck,)440 3052 y(though,)22 b(in)f(which)h(case)e(it)h(must)g(somehow)h(be)f (splitted.)565 3166 y(For)d(a)h(grid)f(like)h(Nor)o(duGrid)f(wher)o(e)g (the)h(number)g(of)f(r)o(esour)o(ces)g(is)h(limited,)f(a)h(mor)o(e)440 3281 y(advanced)29 b(scheduling)j(algorithm)g(may)f(be)g(able)f(to)i (give)f(higher)g(thr)o(oughput)h(and)440 3396 y(better)21 b(r)o(esponse)g(times)i(than)e(simple)i(job)f(selection.)g(Ther)o(e)f (ar)o(e)f(plenty)i(of)f(things)i(that)440 3510 y(can)e(be)f(taken)h (into)h(account)f(\226)f(the)h(ar)o(chitectur)o(e)e(of)i(the)g (clusters,)g(e.g.)f(number)h(of)g(pr)o(o-)440 3625 y(cessors,)32 b(pr)o(ocessor)f(performance)g(for)h(various)f(tasks,)h(memory)h (bandwidth,)e(node)440 3739 y(inter)o(connections;)g(the)e(load)h(and)f (failur)o(e)f(rates)h(of)g(the)h(clusters;)g(input)g(and)f(output)440 3854 y(data)20 b(placement)g(and)g(transfer)g(cost;)h(and)f(so)i (forth.)565 3968 y(Because)h(of)i(the)g(information)g(service)g(it)g (should)g(be)f(possible)i(for)e(a)h(scheduler)f(to)440 4083 y(collect)19 b(the)f(necessary)h(information)g(and)f(the)h(most)g (dif)o(\002cult)f(task)h(is)g(per)o(haps)e(to)i(come)440 4198 y(up)24 b(with)g(an)g(algorithm)g(that)g(actually)f(makes)h(use)f (of)h(all)f(this)i(information)g(in)f(a)f(scal-)440 4312 y(able)d(manner)-6 b(.)565 4427 y(In)27 b(any)h(case,)e(the)i(most)g (\003exible)f(appr)o(oach)f(is)i(to)g(have)f(the)g(scheduler)g(be)h(a)e (grid)440 4541 y(fabric)g(component)i(separate)e(fr)o(om)h(the)g(r)o (esour)o(ce)f(components.)i(Then)g(for)f(each)f(vir)o(-)440 4656 y(tual)c(or)o(ganisation)g(with)h(a)f(job)h(queue,)f(a)f(few)h (selected)f(sites)i(should)g(r)o(un)f(an)g(instance)440 4770 y(of)17 b(the)h(scheduler)e(that)i(subscribes)f(to)g(changes)h(in) g(the)f(job)h(queue.)f(It)g(is)h(necessary)e(with)440 4885 y(multiple)26 b(schedulers)f(to)h(avoid)f(paralysing)h(the)f(grid) h(when)g(one)g(of)f(them)h(fails.)f(The)440 5000 y(schedulers)19 b(can)h(coor)o(dinate)f(thr)o(ough)h(the)g(information)g(service)f(and) g(use)h(it)g(to)g(ensur)o(e)440 5114 y(that)h(only)g(one)h(scheduler)e (is)h(active)f(at)h(a)f(time.)565 5229 y(Apart)28 b(fr)o(om)g (\003exibility)-9 b(,)30 b(separating)e(the)h(scheduling)h(task)f(fr)o (om)g(the)g(grid)g(users)440 5343 y(and)19 b(r)o(esour)o(ces)e(also)j (makes)f(it)g(easier)f(to)i(enfor)o(ce)e(optimisation)i(of)f(the)g (overall)g(perfor)o(-)1831 5662 y(43)p eop %%Page: 44 46 44 45 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(mance.)21 b(When)h(individual)g(users)g (and)f(r)o(esour)o(ces)f(ar)o(e)g(tr)o(usted)i(to)g(do)g(the)g (scheduling,)440 646 y(they)e(have)f(the)h(possibility)h(of)e(choosing) j(schedules)d(that)h(bene\002t)f(themselves)i(instead)440 760 y(of)g(the)g(schedules)f(that)h(ar)o(e)f(best)g(for)h(the)g (virtual)f(or)o(ganisation)h(as)g(a)f(whole.)440 1021 y Fp(2.4.3)99 b(Job)25 b(and)f(Resource)h(Failures)440 1194 y Fz(Both)f(r)o(esour)o(ces)e(and)i(jobs)g(can)f(fail,)g(and)g(it) h(is)g(important)g(that)g(the)f(grid)h(itself)f(tries)h(to)440 1308 y(cope)29 b(with)h(these)g(failur)o(es)e(on)i(its)f(own)i(as)e (much)h(as)f(possible.)g(The)h(risk)f(of)g(failur)o(es)440 1423 y(incr)o(eases)e(in)h(a)g(lar)o(ge)f(distributed)g(system)i(such)f (as)g(a)f(grid,)h(and)f(we)h(want)g(to)h(avoid)440 1537 y(that)23 b(this)h(incr)o(eased)e(risk)i(becomes)g(a)e(bur)o(den)h(for) g(the)g(users.)h(One)f(of)h(the)f(most)h(time-)440 1652 y(consuming)e(pr)o(oblems)e(with)g(Nor)o(duGrid)g(in)g(practice)f(was)h (found)g(to)h(be)e(that)h(failur)o(es)440 1767 y(had)g(to)h(be)g(r)o (esolved)f(manually)h([25)n(].)565 1881 y(When)g(a)g(job)h(has)g(been)f (picked)g(up)g(by)h(a)f(r)o(esour)o(ces,)f(ther)o(e)h(ar)o(e)f(thr)o (ee)g(types)i(of)f(fail-)440 1996 y(ur)o(es)f(that)h(can)f(occur:)544 2177 y(1.)41 b(The)18 b(r)o(esour)o(ce)g(that)h(is)g(r)o(unning)h(the)f (job)g(can)g(crash)f(or)h(lose)h(its)f(connection)h(to)f(the)648 2291 y(r)o(est)25 b(of)h(the)g(grid,)f(which)i(means)f(that)g(it)g(is)h (unable)e(\002nish)i(the)f(job)h(and)f(submit)648 2406 y(the)31 b(r)o(esult.)g(Unless)g(the)g(r)o(esour)o(ce)f(can)h(r)o (ecover)f(fr)o(om)h(the)g(situation)h(within)h(a)648 2520 y(r)o(elatively)17 b(short)j(period)e(of)g(time,)h(the)g(job)g(is) g(lost)h(in)f(some)g(sense)g(and)f(should)i(be)648 2635 y(r)o(estarted)f(elsewher)o(e)h(by)g(the)h(grid.)544 2816 y(2.)41 b(The)28 b(job)h(can)f(fail)g(because)g(of)g(temporary)g (err)o(oneous)h(conditions)h(in)f(its)f(envi-)648 2930 y(r)o(onment,)18 b(e.g.)f(an)h(I/O)g(err)o(or)-6 b(.)17 b(Many)g(grid)h(applications)g(r)o(equir)o(es)f(much)h(of)g(their)648 3045 y(envir)o(onment)k(in)g(terms)g(of)f(CPU)g(and)h(disk)f(r)o(esour) o(ces)g(and)g(may)h(push)g(the)f(host)648 3160 y(systems)h(to)g(their)g (limits)h(wher)o(e)e(failur)o(es)f(ar)o(e)h(mor)o(e)g(likely)h(to)g (occur)-6 b(.)21 b(When)i(this)648 3274 y(kind)18 b(of)g(failur)o(e)f (occurs,)h(simply)h(r)o(er)o(unning)g(the)f(job)h(may)f(be)g(enough)h (to)g(be)f(able)648 3389 y(to)j(\002nish)h(it.)544 3570 y(3.)41 b(The)25 b(job)h(can)f(fail)g(because)g(it)h(contains)g(an)f (err)o(or)g(itself.)g(The)g(only)i(way)e(to)h(deal)648 3684 y(with)f(this)h(kind)f(of)g(err)o(or)f(is)i(to)f(\002nish)h(the)g (job)f(with)h(an)f(err)o(or)f(r)o(eport)g(to)h(the)h(job)648 3799 y(submitter)-6 b(.)565 3980 y(The)18 b(r)o(esour)o(ce)e(failur)o (es)h(can)h(be)g(detected)f(by)h(letting)h(a)f(schedule)g(monitoring)i (com-)440 4094 y(ponent)f(see)e(to,)h(in)h(cooperation)f(with)h(the)f (scheduler)-6 b(,)17 b(that)h(everything)g(is)g(pr)o(ogr)o(essing)440 4209 y(accor)o(ding)g(to)i(the)f(schedule.)f(The)h(pr)o(ogr)o(ess)f (can)h(be)g(followed)g(by)g(r)o(eading)f(the)h(job)h(sta-)440 4324 y(tus)33 b(and)f(checking)h(time)g(stamps)g(\226)f(a)g(failed)f(r) o(esour)o(ce)g(will)i(not)h(have)e(updated)f(its)440 4438 y(status)19 b(for)g(some)h(time.)f(If)f(a)h(r)o(esour)o(ce)e(is)j (determined)e(to)i(have)e(failed,)g(its)h(jobs)h(ar)o(e)e(then)440 4553 y(r)o(escheduled)h(elsewher)o(e.)565 4667 y(Job)f(failur)o(es)f (ar)o(e)g(mor)o(e)h(local)h(in)g(natur)o(e)e(and)h(can)g(be)g(handled)g (within)i(the)f(r)o(esour)o(ce)440 4782 y(itself.)29 b(However)-6 b(,)28 b(a)g(major)h(pr)o(oblem)g(is)g(how)g(to)h (distinguish)g(between)e(intermittent)440 4896 y(job)e(failur)o(es)e (and)h(deterministic)g(failur)o(es)f(that)h(will)h(occur)f(each)g(time) g(the)h(job)f(is)h(r)o(un.)440 5011 y(The)21 b(dif)o(fer)o(ence)d(may)i (not)h(even)g(be)f(obvious)h(to)g(the)g(job)g(submitter)g(himself)g (without)h(a)440 5126 y(pr)o(oper)e(examination)h(of)g(the)f(job)i (sour)o(ce)e(code.)565 5240 y(One)k(way)f(to)h(r)o(esolve)f(this)i(pr)o (oblem)e(is)h(to)g(supply)g(the)g(maximum)g(number)g(of)g(r)o(e-)440 5355 y(tries)c(upon)g(failur)o(e)e(when)i(the)g(job)g(is)g(submitted.)g (If)f(the)g(r)o(esour)o(ces)g(ar)o(e)f(scar)o(ce)g(or)i(if)f(the)1831 5662 y(44)p eop %%Page: 45 47 45 46 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(job)27 b(submitter)f(is)g(not)h (con\002dent)f(that)g(the)g(job)h(is)f(corr)o(ect,)e(then)j(r)o(etries) e(can)g(be)h(disal-)440 646 y(lowed.)h(But)h(if)f(the)g(job)i (submitter)e(is)h(con\002dent)g(that)f(the)h(job)g(should)g(work,)g (the)g(job)440 760 y(can)20 b(be)h(r)o(etried)e(a)h(couple)h(of)g (times)g(befor)o(e)f(giving)h(up.)565 875 y(A)k(r)o(elated)g(pr)o (oblem)h(is)h(that)f(intermittent)h(job)g(failur)o(es)e(may)h(be)g(due) g(to)h(r)o(esour)o(ce)440 990 y(contention.)d(Although)g(this)f(is)g (dif)o(\002cult)f(to)h(deal)f(with)i(in)f(general,)f(it)h(might)g(be)g (bene-)440 1104 y(\002cial)e(to)g(wait)g(some)g(time)g(befor)o(e)e(r)o (estarting)i(a)f(failed)g(job.)440 1364 y Fp(2.4.4)99 b(Controlling)26 b(Submitted)e(Jobs)440 1537 y Fz(When)g(a)g(job)g(has) g(been)g(submitted)g(to)h(the)f(grid,)f(it)h(will)h(at)e(some)i(point)g (be)e(pr)o(ocessed)440 1652 y(and)j(the)g(r)o(esult)g(made)f(available) g(to)h(the)h(user)-6 b(.)25 b(But)h(meanwhile)h(the)f(user)g(might)i (dis-)440 1767 y(cover)j(that)f(the)i(job)f(is)g(faulty)g(or)g (otherwise)h(change)e(his)i(mind)f(about)g(it.)g(T)-8 b(o)32 b(avoid)440 1881 y(wasting)16 b(r)o(esour)o(ces)f(and)g(pr)o (ovide)g(a)g(r)o(esponsive)h(interface)f(to)h(the)g(user)-6 b(,)15 b(the)h(grid)g(should)440 1996 y(support)31 b(changing)h(the)f (job)g(parameters)f(and)g(cancelling)h(the)g(job,)g(as)g(was)g(also)g (r)o(e-)440 2110 y(quir)o(ed)20 b(in)i(Section)e(1.5.)565 2225 y(A)27 b(general)h(solution)i(to)f(this)g(pr)o(oblem)f(is)g(to)h (simply)g(change)f(the)h(parameters)e(in)440 2339 y(the)j(job)h (description.)f(Any)g(entity)h(that)f(is)g(depending)g(on)g(the)h (information)f(should)440 2454 y(be)d(subscribed)g(to)h(be)g (noti\002ed)g(of)f(changes)h(to)g(the)f(information)i(and)e(can)g (hence)h(act)440 2569 y(accor)o(dingly)-9 b(.)31 b(The)g(scheduling)i (monitoring)g(component)g(would)f(possibly)h(need)e(to)440 2683 y(r)o(eact)24 b(to)h(such)h(changes,)f(as)g(would)g(a)g(r)o(esour) o(ce)f(that)h(is)g(in)h(the)f(midst)h(pr)o(ocessing)f(the)440 2798 y(job.)565 2912 y(An)c(alternative)g(solution)i(in)f(the)g (situation)h(wher)o(e)e(a)g(job)h(is)g(being)g(pr)o(ocessed)f(by)h(a) 440 3027 y(r)o(esour)o(ce)h(is)i(to)g(have)g(a)f(pr)o(otocol)h(for)f (contacting)i(the)f(r)o(esour)o(ce)e(dir)o(ectly)-9 b(.)23 b(Such)i(a)f(pr)o(o-)440 3141 y(tocol)k(is)f(likely)g(to)g(be)g(needed) f(anyway)h(if)f(one)i(wants)f(interactive)f(job)h(sessions.)h(But)440 3256 y(a)c(dir)o(ect)f(pr)o(otocol)h(is)h(not)f(enough)h(in)g(itself)f (since)h(the)f(information)h(must)g(be)f(enter)o(ed)440 3370 y(into)j(the)f(information)i(service)d(anyway)h(if)g(the)h(r)o (esour)o(ce)d(should)j(fail.)f(Furthermor)o(e,)440 3485 y(ther)o(e)21 b(would)g(be)g(an)h(added)d(complexity)j(fr)o(om)f(such)h (as)f(pr)o(otocol)h(which)g(for)f(instance)440 3600 y(also)27 b(would)h(have)e(to)i(addr)o(ess)d(access)h(contr)o(ol)i(and)e (security)-9 b(.)27 b(And)f(even)h(though)h(an)440 3714 y(interactive)23 b(pr)o(otocol)h(is)f(devised)g(\226)g(our)h(pr)o (oject)f(is)h(not)g(addr)o(essing)e(it)i(\226)f(it)h(seems)f(un-)440 3829 y(likely)e(that)g(all)g(r)o(esour)o(ces)e(would)i(support)g(it.) 440 4089 y Fp(2.4.5)99 b(Logging)440 4262 y Fz(W)-5 b(ith)26 b(the)g(data)e(service)g(in)i(place,)e(it)i(is)f(easy)g(to)h(make)f (the)g(logs)i(of)e(the)g(job)h(execution)440 4377 y(trails)e (available.)f(Each)h(job)h(has)f(an)g(associated)g(log)h(\002le)g (which)g(is)g(placed)e(in)i(the)f(data)440 4491 y(service.)h(The)i (grid)f(participants)f(that)i(pr)o(ocess)e(a)h(given)h(job)f(should)i (append)d(data)g(to)440 4606 y(the)30 b(log)g(at)f(appr)o(opriate)f (places)g(in)i(the)g(pr)o(ocessing,)g(e.g.)e(when)j(a)e(job)h(is)g (scheduled)440 4720 y(to)d(r)o(un)g(and)e(when)i(it)g(has)f(\002nished) h(executing.)g(The)f(details)g(depends)f(on)i(particular)440 4835 y(participants)20 b(that)h(handle)f(the)h(job.)565 4949 y(The)e(logging)j(facility)d(also)h(pr)o(ovides)g(a)f(foundation)h (for)g(billing)h(the)f(grid)g(users)g(for)440 5064 y(their)j(usage.)f (W)-5 b(ith)23 b(pr)o(ecise)f(and)g(authenticated)f(logs)j(about)e (what)h(happened)e(to)i(jobs)440 5179 y(after)e(they)i(wer)o(e)e (submitted,)h(a)g(r)o(esour)o(ce)f(owner)h(can)g(collect)h(the)f(data)f (on)i(a)f(monthly)440 5293 y(basis)28 b(and)f(send)g(out)h(bills.)g(Of) g(course,)f(to)h(have)f(a)g(r)o(eal)f(grid)i(economy)-9 b(,)28 b(it)g(would)g(be)440 5408 y(necessary)e(with)g(a)g(mor)o(e)f (elaborate)g(accounting)i(system)f(\226)g(for)f(example,)g(in)i (general)1831 5662 y(45)p eop %%Page: 46 48 46 47 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(a)25 b(r)o(esour)o(ce)f(owner)j(would)f (pr)o(obably)f(pr)o(efer)e(that)j(the)g(user)f(pr)o(oved)g(that)h(he)f (has)h(the)440 646 y(money)c(to)f(pay)f(for)h(pr)o(ocessing)g(a)f(job)h (befor)o(e)f(the)h(job)g(was)g(started.)440 906 y Fp(2.4.6)99 b(Batch)25 b(Cluster)g(Resource)440 1079 y Fz(Having)32 b(discussed)f(some)h(general)f(issues,)h(we)f(will)h(now)h(outline)f (the)g(design)f(of)h(a)440 1194 y(batch)17 b(cluster)g(r)o(esour)o(ce.) e(It)i(consists)h(of)f(an)g(information)h(service)e(component)i(for)f (com-)440 1308 y(municating)27 b(with)g(the)f(grid,)g(a)g(data)f (service)g(component)i(for)f(r)o(etrieving)g(input)g(data)440 1423 y(and)33 b(saving)g(output)g(data,)f(a)g(batch)h(cluster)f (interface)g(component)i(for)f(interacting)440 1537 y(with)d(the)g (local)f(batch)g(queueing)i(system)f(and)f(a)g(manager)g(component)h (that)g(r)o(epr)o(e-)440 1652 y(sents)d(the)f(cluster)g(on)h(the)f (grid)g(and)g(sees)g(to)g(that)h(grid)f(jobs)h(ar)o(e)d(pr)o(ocessed,)h (see)h(Fig-)440 1767 y(ur)o(e)20 b(2.7.)788 3280 y @beginspecial 91 @llx 530 @lly 383 @urx 722 @ury 2577 @rwi @setspecial %%BeginDocument: design/images/batchsystem-overview.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: batchsystem-overview.dvi %%BoundingBox: 91 530 383 722 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o batchsystem-overview.eps %+ batchsystem-overview.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.12.13:1220 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin 40258437 52099154 1000 8000 8000 (batchsystem-overview.dvi) @start end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin %%EndSetup 1 0 bop Black Black 2214 21047 a @beginspecial 0 @llx 0 @lly 290 @urx 190 @ury 2900 @rwi @setspecial %%BeginDocument: batchsystem-overview.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: batchsystem-overview.fig %%Creator: fig2dev Version 3.2 Patchlevel 3d %%CreationDate: Mon Dec 13 12:20:58 2004 %%For: thomas@homer.cs.aau.dk (Thomas Christensen) %%BoundingBox: 0 0 290 190 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 190 moveto 0 0 lineto 290 0 lineto 290 190 lineto closepath clip newpath -125.3 400.9 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw n 2100 4350 m 4200 4350 l 4200 4650 l 2100 4650 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 3150 4575 m gs 1 -1 sc (data service) dup sw pop 2 div neg 0 rm col0 sh gr % Arc n 4195.2 3679.3 122.7 51.2 124.9 arc gs col0 s gr % Arc n 4195.9 3847.7 126.3 51.8 123.6 arc gs col0 s gr % Arc n 4206.8 3907.3 155.6 -64.4 -121.7 arcn gs col0 s gr % Polyline n 4275 3768 m 4275 3951 l gs col0 s gr % Polyline n 4125 3957 m 4125 3775 l gs col0 s gr % Arc n 3970.2 3679.3 122.7 51.2 124.9 arc gs col0 s gr % Arc n 3970.9 3847.7 126.3 51.8 123.6 arc gs col0 s gr % Arc n 3981.8 3907.3 155.6 -64.4 -121.7 arcn gs col0 s gr % Polyline n 4050 3768 m 4050 3951 l gs col0 s gr % Polyline n 3900 3957 m 3900 3775 l gs col0 s gr % Arc n 3745.2 3679.3 122.7 51.2 124.9 arc gs col0 s gr % Arc n 3745.9 3847.7 126.3 51.8 123.6 arc gs col0 s gr % Arc n 3756.8 3907.3 155.6 -64.4 -121.7 arcn gs col0 s gr % Polyline n 3825 3768 m 3825 3951 l gs col0 s gr % Polyline n 3675 3957 m 3675 3775 l gs col0 s gr % Arc n 3520.2 3679.3 122.7 51.2 124.9 arc gs col0 s gr % Arc n 3520.9 3847.7 126.3 51.8 123.6 arc gs col0 s gr % Arc n 3531.8 3907.3 155.6 -64.4 -121.7 arcn gs col0 s gr % Polyline n 3600 3768 m 3600 3951 l gs col0 s gr % Polyline n 3450 3957 m 3450 3775 l gs col0 s gr % Arc n 3295.2 3679.3 122.7 51.2 124.9 arc gs col0 s gr % Arc n 3295.9 3847.7 126.3 51.8 123.6 arc gs col0 s gr % Arc n 3306.8 3907.3 155.6 -64.4 -121.7 arcn gs col0 s gr % Polyline n 3375 3768 m 3375 3951 l gs col0 s gr % Polyline n 3225 3957 m 3225 3775 l gs col0 s gr % Polyline n 4200 3975 m 4200 4050 l gs col0 s gr % Polyline n 3975 3975 m 3975 4050 l gs col0 s gr % Polyline n 3750 3975 m 3750 4050 l gs col0 s gr % Polyline n 3525 3975 m 3525 4050 l gs col0 s gr % Polyline n 3300 3975 m 3300 4050 l gs col0 s gr % Polyline n 4200 4050 m 3225 4050 l 3075 4350 l gs col0 s gr /Times-Italic ff 180.00 scf sf 3825 3675 m gs 1 -1 sc (RAID) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 2100 4650 m 4200 4650 l 4200 4950 l 2100 4950 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 3150 4875 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4800 4500 m 6900 4500 l 6900 4800 l 4800 4800 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 5850 4725 m gs 1 -1 sc (batch manager) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4800 5100 m 6900 5100 l 6900 5400 l 4800 5400 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 5850 5325 m gs 1 -1 sc (batch cluster interface) dup sw pop 2 div neg 0 rm col0 sh gr % Ellipse n 6059 5688 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6246 5688 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6434 5688 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6621 5688 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6809 5688 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6059 6003 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6246 6003 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6434 6003 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6621 6003 75 84 0 360 DrawEllipse gs col0 s gr % Ellipse n 6809 6003 75 84 0 360 DrawEllipse gs col0 s gr % Polyline n 6809 5921 m 6809 5772 l gs col0 s gr % Polyline n 6060 5921 m 6059 5772 l gs col0 s gr % Polyline n 6245 5921 m 6246 5772 l gs col0 s gr % Polyline n 6434 5919 m 6434 5772 l gs col0 s gr % Polyline n 6622 5921 m 6621 5772 l gs col0 s gr % Polyline n 6825 5850 m 5925 5850 l 5775 5700 l 5775 5400 l gs col0 s gr /Times-Italic ff 180.00 scf sf 6466 6311 m gs 1 -1 sc (cluster) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline 2 slj 30.000 slw [15 30] 30 sd n 2590 5384 m 2572 5398 l 2556 5413 l 2540 5431 l 2525 5449 l 2510 5470 l 2497 5492 l 2484 5516 l 2473 5541 l 2462 5568 l 2452 5596 l 2443 5625 l 2435 5655 l 2427 5685 l 2421 5716 l 2415 5748 l 2411 5779 l 2407 5810 l 2404 5840 l 2402 5870 l 2400 5900 l 2399 5929 l 2399 5957 l 2399 5985 l 2399 6012 l 2400 6037 l 2401 6061 l 2403 6085 l 2405 6110 l 2408 6134 l 2411 6159 l 2415 6183 l 2420 6207 l 2425 6232 l 2432 6256 l 2439 6279 l 2447 6303 l 2456 6326 l 2466 6348 l 2476 6369 l 2488 6390 l 2501 6410 l 2514 6429 l 2528 6447 l 2543 6464 l 2559 6481 l 2575 6496 l 2593 6510 l 2611 6524 l 2630 6536 l 2650 6548 l 2672 6559 l 2694 6570 l 2718 6580 l 2744 6589 l 2770 6598 l 2798 6606 l 2828 6614 l 2858 6621 l 2890 6627 l 2923 6632 l 2956 6637 l 2990 6641 l 3025 6644 l 3059 6647 l 3094 6648 l 3128 6649 l 3162 6648 l 3195 6647 l 3227 6645 l 3259 6643 l 3289 6639 l 3318 6635 l 3347 6630 l 3374 6625 l 3400 6618 l 3425 6611 l 3449 6603 l 3473 6595 l 3495 6585 l 3518 6575 l 3539 6564 l 3561 6552 l 3581 6538 l 3601 6524 l 3621 6510 l 3640 6494 l 3658 6477 l 3676 6460 l 3692 6442 l 3708 6424 l 3723 6405 l 3737 6385 l 3750 6366 l 3761 6346 l 3772 6326 l 3782 6306 l 3791 6286 l 3800 6266 l 3807 6247 l 3814 6227 l 3819 6207 l 3825 6187 l 3830 6163 l 3835 6139 l 3838 6114 l 3841 6089 l 3844 6063 l 3845 6036 l 3845 6009 l 3845 5981 l 3843 5954 l 3841 5926 l 3837 5898 l 3833 5870 l 3828 5843 l 3822 5817 l 3815 5792 l 3807 5767 l 3799 5744 l 3789 5721 l 3780 5700 l 3769 5680 l 3758 5661 l 3747 5642 l 3734 5625 l 3721 5608 l 3707 5592 l 3691 5576 l 3675 5560 l 3657 5545 l 3638 5530 l 3617 5516 l 3596 5502 l 3574 5488 l 3550 5475 l 3526 5463 l 3501 5451 l 3475 5440 l 3449 5429 l 3423 5419 l 3397 5409 l 3370 5401 l 3343 5392 l 3316 5384 l 3289 5377 l 3261 5369 l 3235 5363 l 3208 5356 l 3180 5350 l 3152 5344 l 3123 5338 l 3093 5333 l 3062 5328 l 3031 5323 l 2999 5320 l 2967 5317 l 2934 5315 l 2902 5313 l 2871 5313 l 2840 5314 l 2809 5315 l 2780 5318 l 2751 5322 l 2724 5327 l 2699 5333 l 2674 5341 l 2651 5350 l 2630 5360 l 2609 5371 l cp gs col0 s gr [] 0 sd /Times-Bold ff 300.00 scf sf 3147 6075 m gs 1 -1 sc (grid) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline 0 slj 7.500 slw n 4800 4650 m 4200 4650 l gs col0 s gr % Polyline n 5775 5100 m 5775 4800 l gs col0 s gr % Polyline n 3075 4950 m 3075 5325 l gs col0 s gr $F2psEnd rs %%EndDocument @endspecial Black Black eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 1010 3468 a Fq(Figur)o(e)e(2.7:)28 b(A)18 b(conceptual)i(view)e(of)h(a)g(batch)g(cluster)f(r)o(esour)o(ce.)565 3702 y Fz(The)k(information)i(and)e(data)g(service)g(components)j(have) d(been)g(discussed)h(in)g(Sec-)440 3816 y(tion)29 b(2.2)e(and)h(2.3)f (so)i(the)f(following)i(sections)f(discuss)g(the)g(batch)f(manager)f (and)h(the)440 3931 y(batch)20 b(cluster)h(interface)f(components.)440 4172 y Fv(Batch)g(Manager)f(Component)440 4345 y Fz(The)29 b(r)o(esponsibility)i(of)e(the)h(manager)f(is)g(to)h(keep)f(the)h (status)f(of)h(the)g(cluster)f(known)440 4459 y(thr)o(ough)i(the)g (information)h(service)e(and)h(r)o(un)g(the)g(appr)o(opriate)e(jobs)j (on)f(the)g(cluster)440 4574 y(it)26 b(r)o(epr)o(esents.)e(T)-8 b(o)26 b(keep)f(the)h(status)f(updated)g(it)h(polls)g(the)g(batch)f (cluster)g(interface)g(at)440 4688 y(certain)17 b(intervals)g(and)g (updates)f(the)i(information)g(service)f(entry)g(for)g(the)g(batch)g (cluster)440 4803 y(r)o(esour)o(ce.)565 4918 y(T)-8 b(o)25 b(r)o(un)g(jobs)h(on)g(the)f(cluster)-6 b(,)24 b(the)h(manager)f (interacts)h(with)h(the)f(information)g(ser)o(-)440 5032 y(vice)g(to)g(\002nd)g(appr)o(opriate)e(jobs)j(accor)o(ding)f(to)g(the) g(scheduling)h(model,)f(i.e.)f(either)h(by)440 5147 y(\002nding)20 b(jobs)f(itself)g(or)g(by)g(accepting)f(jobs)i(fr)o(om)e(a)g (scheduling)i(entity)-9 b(.)18 b(When)i(a)e(job)h(has)440 5261 y(been)27 b(selected,)g(the)h(manager)f(r)o(etrieves)f(the)i (needed)f(input)h(data)e(thr)o(ough)j(the)e(data)440 5376 y(service.)20 b(It)h(then)g(starts)g(the)f(job)i(on)f(the)g (cluster)g(thr)o(ough)g(the)g(batch)g(cluster)f(interface.)1831 5662 y(46)p eop %%Page: 47 49 47 48 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 565 531 a Fz(T)-7 b(wo)22 b(possible)h(scenarios)g (follow)-8 b(,)23 b(either)g(the)f(job)h(has)g(completed)f (successfully)h(or)440 646 y(the)f(job)g(has)g(failed.)e(In)i(case)f (of)g(a)g(successful)h(completion)h(the)e(output)i(data)d(is)i(written) 440 760 y(with)j(the)f(data)e(service)i(and)f(the)h(job)h(status)f(is)g (updated)f(in)h(the)g(information)h(service.)440 875 y(In)c(case)f(of)g(a)g(job)i(failur)o(e)d(the)h(job)i(is)e(optionally)i (r)o(estarted)d(depending)h(on)h(the)g(number)440 990 y(of)28 b(r)o(etries)g(speci\002ed)g(in)h(the)f(job)h(speci\002cation.) g(If)f(the)g(job)h(has)f(no)h(mor)o(e)f(r)o(etries)g(left,)440 1104 y(the)21 b(job)h(output)g(data)e(is)h(written)h(to)f(the)g(data)f (service)h(and)f(the)i(failur)o(e)d(is)j(signalled)f(by)440 1219 y(updating)g(the)g(status)f(in)i(the)f(information)g(service.)440 1459 y Fv(Batch)f(Cluster)f(Interface)440 1632 y Fz(The)25 b(batch)f(cluster)h(interface)e(is)i(an)g(abstraction)g(over)f(the)h (details)f(of)h(dif)o(fer)o(ent)e(batch)440 1746 y(cluster)17 b(queueing)h(systems)g(such)g(as)f(OpenPBS)f([36)o(])h(\(and)f(r)o (elatives)g(like)i(PBS)e(Pr)o(o)h([38)o(],)440 1861 y(T)o(ORQUE)23 b([48)n(]\))f(and)h(Condor)g([47)o(].)f(The)h(ar)o(chitectur)o(e)e(of)i (the)g(component)h(should)g(be)440 1975 y(\003exible)16 b(enough)h(to)g(allow)g(dif)o(fer)o(ent)d(back-ends)h(for)h(the)g(dif)o (fer)o(ent)f(queueing)i(systems.)440 2090 y(The)k(following)h(basic)e (operations)i(ar)o(e)d(needed)h(fr)o(om)g(the)h(interface:)565 2281 y Fo(\017)41 b Fu(Submit)29 b(job.)g Fz(This)g(consists)h(of)f (putting)h(the)f(job)h(into)f(the)g(queue,)g(and)g(making)648 2395 y(sur)o(e)15 b(that)h(data)e(and)i(pr)o(ogram)f(\002les)h(ar)o(e)e (available)h(while)h(avoiding)g(that)g(security)648 2510 y(is)i(compr)o(omised.)g(After)f(the)h(job)g(has)g(terminated,)g(the)g (execution)g(envir)o(onment)648 2624 y(must)j(be)f(cleaned)g(up)h(and)f (the)h(output)g(pr)o(epar)o(ed)d(to)j(the)g(job)h(submitter)-6 b(.)565 2802 y Fo(\017)41 b Fu(Remove)34 b(job.)h Fz(The)f(job)h(must)g (be)f(r)o(emoved)g(and)g(the)g(execution)h(envir)o(onment)648 2917 y(cleaned)19 b(up.)565 3095 y Fo(\017)41 b Fu(Status)27 b(of)g(jobs.)g Fz(For)h(instance,)f(whether)g(they)h(have)e(started,)g (ar)o(e)g(still)i(r)o(unning,)648 3210 y(etc.)440 3469 y Fp(2.4.7)99 b(Storage)25 b(Resource)716 4789 y @beginspecial 91 @llx 530 @lly 477 @urx 722 @ury 2749 @rwi @setspecial %%BeginDocument: design/images/storagesystem-overview.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: storagesystem-overview.dvi %%BoundingBox: 91 530 477 722 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -Ppdf -E -o storagesystem-overview.eps %+ storagesystem-overview.dvi %DVIPSParameters: dpi=8000, compressed %DVIPSSource: TeX output 2004.12.16:1220 %%BeginProcSet: tex.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: alt-rule.pro %! % Patch by TVZ % Makes dvips files draw rules with stroke rather than fill. % Makes narrow rules more predictable at low resolutions % after distilling to PDF. % May have unknown consequences for very thick rules. % Tested only with dvips 5.85(k). TeXDict begin /QV { gsave newpath /ruleY X /ruleX X Rx Ry gt { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } ifelse setlinewidth 0 setlinecap stroke grestore } bind def end %%EndProcSet %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet TeXDict begin @defspecial /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def /H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF /pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict /pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} if @fedspecial end TeXDict begin 40258437 52099154 1000 8000 8000 (storagesystem-overview.dvi) @start end %%EndProlog %%BeginSetup %%Feature: *Resolution 8000dpi TeXDict begin end %%EndSetup TeXDict begin 1 0 bop 0 0 a SDict begin /product where{pop product(Distiller)search{pop pop pop version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show grestore}if}{pop}ifelse}{pop}ifelse}if end 0 0 a 0 0 a SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark end 0 0 a Black 0 0 a SDict begin H.S end 0 0 a Black Black 0 0 a SDict begin H.R end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark end 0 0 a Black 0 0 a SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW pdfmark end 0 0 a 0 0 a SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark end 0 0 a 0 0 a SDict begin H.S end 0 0 a 0 0 a SDict begin 13.79993 H.A end 0 0 a 0 0 a SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark end 0 0 a 2214 21007 a @beginspecial 0 @llx 0 @lly 384 @urx 190 @ury 3840 @rwi @setspecial %%BeginDocument: storagesystem-overview.pstex %!PS-Adobe-2.0 EPSF-2.0 %%Title: storagesystem-overview.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Thu Dec 16 12:20:12 2004 %%For: thomas@h169.s.cs.auc.dk (Thomas Christensen,,,) %%BoundingBox: 0 0 384 190 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 190 moveto 0 0 lineto 384 0 lineto 384 190 lineto closepath clip newpath -125.3 467.2 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Polyline 0 slj 0 slc 7.500 slw n 2100 4650 m 4200 4650 l 4200 4950 l 2100 4950 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 3150 4875 m gs 1 -1 sc (information service) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4800 4650 m 6900 4650 l 6900 4950 l 4800 4950 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 5850 4875 m gs 1 -1 sc (storage manager) dup sw pop 2 div neg 0 rm col0 sh gr % Arc n 8395.2 4804.3 122.7 51.2352 124.8685 arc gs col0 s gr % Arc n 8395.9 4972.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 8406.8 5032.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 8475 4893 m 8475 5076 l gs col0 s gr % Polyline n 8325 5082 m 8325 4900 l gs col0 s gr % Arc n 8170.2 4804.3 122.7 51.2352 124.8685 arc gs col0 s gr % Arc n 8170.9 4972.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 8181.8 5032.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 8250 4893 m 8250 5076 l gs col0 s gr % Polyline n 8100 5082 m 8100 4900 l gs col0 s gr % Arc n 7945.2 4804.3 122.7 51.2352 124.8685 arc gs col0 s gr % Arc n 7945.9 4972.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 7956.8 5032.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 8025 4893 m 8025 5076 l gs col0 s gr % Polyline n 7875 5082 m 7875 4900 l gs col0 s gr % Arc n 7720.2 4804.3 122.7 51.2352 124.8685 arc gs col0 s gr % Arc n 7720.9 4972.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 7731.8 5032.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 7800 4893 m 7800 5076 l gs col0 s gr % Polyline n 7650 5082 m 7650 4900 l gs col0 s gr % Arc n 7495.2 4804.3 122.7 51.2352 124.8685 arc gs col0 s gr % Arc n 7495.9 4972.7 126.3 51.7902 123.5668 arc gs col0 s gr % Arc n 7506.8 5032.3 155.6 -64.4203 -121.7261 arcn gs col0 s gr % Polyline n 7575 4893 m 7575 5076 l gs col0 s gr % Polyline n 7425 5082 m 7425 4900 l gs col0 s gr % Polyline n 8400 5100 m 8400 5175 l gs col0 s gr % Polyline n 8175 5100 m 8175 5175 l gs col0 s gr % Polyline n 7950 5100 m 7950 5175 l gs col0 s gr % Polyline n 7725 5100 m 7725 5175 l gs col0 s gr % Polyline n 7500 5100 m 7500 5175 l gs col0 s gr % Polyline n 8400 5175 m 7425 5175 l 6900 5250 l gs col0 s gr /Times-Italic ff 180.00 scf sf 8025 4800 m gs 1 -1 sc (RAID) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4800 5100 m 6900 5100 l 6900 5400 l 4800 5400 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 5850 5325 m gs 1 -1 sc (transfer component) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4800 6450 m 6900 6450 l 6900 6750 l 4800 6750 l cp gs col0 s gr /Times-Roman ff 180.00 scf sf 5850 6675 m gs 1 -1 sc (transfer component) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4800 4800 m 4200 4800 l gs col0 s gr % Polyline n 5775 5100 m 5775 4950 l gs col0 s gr % Polyline n 3075 4950 m 3075 5700 l gs col0 s gr % Polyline 75.000 slw [60] 0 sd gs clippath 5729 6298 m 5729 6465 l 5821 6465 l 5821 6298 l 5805 6298 l 5775 6418 l 5745 6298 l cp 5821 5552 m 5821 5385 l 5729 5385 l 5729 5552 l 5745 5552 l 5775 5432 l 5805 5552 l cp eoclip n 5775 5400 m 5775 6450 l gs col0 s gr gr [] 0 sd % arrowhead 7.500 slw n 5805 5552 m 5775 5432 l 5745 5552 l 5805 5552 l cp gs 0.00 setgray ef gr col0 s % arrowhead n 5745 6298 m 5775 6418 l 5805 6298 l 5745 6298 l cp gs 0.00 setgray ef gr col0 s % Polyline n 5775 6750 m 5775 7125 l gs col0 s gr % Polyline 2 slj 30.000 slw [30 15 15 15] 0 sd n 4725 6363 m 4700 6382 l 4677 6403 l 4655 6425 l 4634 6448 l 4614 6471 l 4595 6496 l 4577 6522 l 4560 6548 l 4544 6576 l 4529 6604 l 4516 6633 l 4503 6663 l 4492 6693 l 4482 6724 l 4474 6755 l 4466 6786 l 4460 6817 l 4455 6848 l 4451 6879 l 4448 6909 l 4446 6939 l 4446 6968 l 4446 6997 l 4448 7025 l 4450 7052 l 4454 7078 l 4458 7103 l 4463 7128 l 4468 7152 l 4475 7175 l 4483 7199 l 4492 7223 l 4501 7246 l 4512 7269 l 4524 7292 l 4537 7314 l 4551 7336 l 4566 7357 l 4583 7378 l 4601 7399 l 4619 7420 l 4640 7439 l 4661 7459 l 4683 7477 l 4706 7496 l 4730 7513 l 4755 7530 l 4780 7545 l 4807 7560 l 4833 7575 l 4860 7588 l 4888 7601 l 4916 7613 l 4944 7624 l 4973 7634 l 5002 7644 l 5032 7654 l 5063 7663 l 5090 7670 l 5118 7677 l 5146 7684 l 5176 7690 l 5206 7696 l 5237 7702 l 5270 7708 l 5303 7714 l 5337 7719 l 5372 7723 l 5408 7728 l 5444 7732 l 5482 7736 l 5519 7739 l 5558 7742 l 5596 7745 l 5635 7748 l 5674 7749 l 5712 7751 l 5751 7752 l 5789 7753 l 5827 7753 l 5865 7753 l 5901 7753 l 5938 7752 l 5973 7751 l 6008 7750 l 6043 7748 l 6077 7746 l 6110 7743 l 6143 7741 l 6175 7738 l 6209 7734 l 6243 7730 l 6277 7725 l 6312 7720 l 6346 7715 l 6380 7709 l 6414 7702 l 6449 7694 l 6483 7686 l 6518 7677 l 6552 7668 l 6586 7658 l 6620 7647 l 6654 7635 l 6687 7622 l 6719 7609 l 6750 7595 l 6781 7581 l 6810 7566 l 6839 7550 l 6866 7534 l 6893 7517 l 6918 7499 l 6942 7481 l 6965 7463 l 6986 7444 l 7007 7425 l 7026 7405 l 7045 7384 l 7063 7363 l 7079 7340 l 7095 7317 l 7111 7293 l 7125 7268 l 7139 7242 l 7152 7215 l 7164 7187 l 7175 7158 l 7185 7128 l 7194 7098 l 7202 7066 l 7209 7034 l 7214 7002 l 7218 6969 l 7221 6936 l 7223 6903 l 7223 6870 l 7222 6837 l 7219 6805 l 7215 6773 l 7210 6742 l 7203 6711 l 7195 6682 l 7185 6653 l 7174 6625 l 7162 6598 l 7149 6572 l 7134 6547 l 7118 6523 l 7100 6500 l 7083 6480 l 7065 6461 l 7046 6442 l 7025 6423 l 7004 6405 l 6980 6387 l 6956 6370 l 6929 6353 l 6902 6336 l 6873 6320 l 6843 6304 l 6811 6288 l 6779 6273 l 6745 6259 l 6710 6245 l 6674 6231 l 6637 6219 l 6599 6207 l 6561 6195 l 6522 6184 l 6483 6174 l 6444 6164 l 6404 6156 l 6365 6147 l 6325 6140 l 6285 6133 l 6246 6127 l 6207 6121 l 6168 6116 l 6129 6112 l 6090 6108 l 6052 6105 l 6013 6102 l 5975 6100 l 5937 6098 l 5898 6097 l 5859 6096 l 5819 6096 l 5779 6096 l 5739 6097 l 5698 6098 l 5657 6100 l 5615 6102 l 5573 6105 l 5531 6109 l 5489 6114 l 5446 6119 l 5404 6124 l 5361 6131 l 5319 6138 l 5278 6145 l 5237 6154 l 5196 6163 l 5157 6172 l 5118 6183 l 5080 6193 l 5044 6205 l 5008 6217 l 4974 6229 l 4941 6242 l 4910 6255 l 4880 6269 l 4851 6283 l 4823 6298 l 4797 6314 l 4772 6329 l 4748 6346 l cp gs col0 s gr [] 0 sd % Polyline [15 30] 30 sd n 2724 5843 m 2704 5855 l 2685 5869 l 2665 5883 l 2646 5898 l 2627 5914 l 2609 5930 l 2590 5948 l 2572 5967 l 2554 5986 l 2536 6006 l 2519 6028 l 2502 6050 l 2486 6072 l 2470 6096 l 2456 6120 l 2442 6144 l 2429 6169 l 2417 6194 l 2405 6219 l 2395 6245 l 2386 6270 l 2378 6296 l 2371 6322 l 2364 6347 l 2359 6373 l 2355 6399 l 2352 6425 l 2349 6451 l 2348 6476 l 2347 6501 l 2347 6526 l 2348 6553 l 2350 6579 l 2353 6607 l 2357 6634 l 2361 6663 l 2367 6691 l 2373 6720 l 2381 6750 l 2389 6779 l 2398 6809 l 2409 6838 l 2420 6867 l 2432 6896 l 2445 6925 l 2459 6953 l 2473 6980 l 2488 7006 l 2504 7032 l 2520 7056 l 2537 7080 l 2555 7103 l 2573 7124 l 2591 7144 l 2610 7164 l 2630 7182 l 2650 7199 l 2670 7216 l 2692 7231 l 2714 7246 l 2737 7260 l 2760 7273 l 2785 7285 l 2811 7297 l 2837 7307 l 2865 7317 l 2893 7326 l 2922 7334 l 2952 7341 l 2983 7347 l 3013 7352 l 3045 7356 l 3076 7358 l 3108 7360 l 3140 7361 l 3171 7360 l 3202 7358 l 3233 7355 l 3264 7352 l 3294 7347 l 3323 7341 l 3351 7334 l 3379 7326 l 3406 7317 l 3432 7308 l 3458 7297 l 3483 7286 l 3508 7273 l 3533 7259 l 3558 7243 l 3583 7226 l 3608 7208 l 3632 7189 l 3656 7168 l 3679 7146 l 3703 7123 l 3725 7099 l 3748 7074 l 3769 7048 l 3790 7021 l 3811 6993 l 3830 6965 l 3848 6936 l 3866 6907 l 3882 6878 l 3898 6849 l 3912 6821 l 3925 6792 l 3936 6764 l 3947 6737 l 3956 6710 l 3964 6684 l 3971 6658 l 3977 6633 l 3982 6609 l 3986 6585 l 3989 6558 l 3990 6531 l 3991 6505 l 3990 6478 l 3988 6452 l 3984 6426 l 3980 6400 l 3974 6374 l 3967 6348 l 3959 6322 l 3949 6297 l 3939 6272 l 3928 6247 l 3917 6224 l 3905 6201 l 3892 6178 l 3879 6157 l 3866 6136 l 3852 6116 l 3839 6096 l 3825 6078 l 3812 6060 l 3798 6043 l 3785 6026 l 3770 6007 l 3756 5989 l 3741 5971 l 3725 5953 l 3709 5935 l 3692 5917 l 3675 5900 l 3657 5882 l 3639 5865 l 3620 5848 l 3600 5832 l 3581 5817 l 3560 5802 l 3540 5789 l 3519 5776 l 3498 5764 l 3476 5754 l 3455 5744 l 3433 5735 l 3411 5728 l 3389 5722 l 3366 5716 l 3345 5712 l 3322 5708 l 3299 5705 l 3275 5703 l 3250 5702 l 3224 5702 l 3197 5702 l 3169 5704 l 3140 5706 l 3111 5709 l 3081 5714 l 3052 5719 l 3022 5725 l 2992 5732 l 2962 5740 l 2933 5748 l 2904 5758 l 2876 5768 l 2849 5779 l 2822 5790 l 2797 5802 l 2772 5815 l 2748 5828 l cp gs col0 s gr [] 0 sd /Times-Bold ff 300.00 scf sf 5925 7425 m gs 1 -1 sc (remote site) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Bold ff 300.00 scf sf 3150 6525 m gs 1 -1 sc (grid) dup sw pop 2 div neg 0 rm col0 sh gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 952 4977 a Fq(Figur)o(e)18 b(2.8:)28 b(A)18 b(storage)i(r)o(esour)o(ce)e(with)h(an)f(ongoing)h(data)g(transfer)-6 b(.)565 5184 y Fz(A)30 b(storage)g(r)o(esour)o(ce)f(consists)j(of)e (thr)o(ee)g(components.)i(An)e(information)i(service)440 5298 y(component)i(for)f(authentication)g(and)f(authorisation)i(befor)o (e)e(transfers.)g(A)g(transfer)440 5413 y(component,)25 b(e.g.)e(based)g(on)h(HTTP)-11 b(,)24 b(FTP)-11 b(,)24 b(scp)g(or)g(SFS,)e(for)i(the)g(actual)f(data)f(transfers.)1831 5662 y(47)p eop %%Page: 48 50 48 49 bop 1529 211 a Ft(Chapter)20 b(2.)46 b(Design)p 440 244 2865 4 v 440 531 a Fz(And)28 b(a)f(manager)g(component)i(which) g(glues)f(the)g(two)h(other)f(components)h(together)-6 b(,)440 646 y(handles)24 b(con\002guration)h(such)f(as)g(the)g(level)g (of)g(participation)f(in)i(the)f(grid)f(and)h(wher)o(e)440 760 y(to)d(place)f(the)h(data,)e(and)i(publishes)g(the)g(r)o(esour)o (ce)e(status)i(in)g(the)g(information)h(service.)565 875 y(Figur)o(e)g(2.8)f(shows)j(a)e(conceptual)g(view)h(of)g(a)f(data)f (transfer)h(between)g(a)g(local)h(stor)o(-)440 990 y(age)d(r)o(esour)o (ce)g(and)g(a)g(r)o(emote)g(data)g(service.)1831 5662 y(48)p eop %%Page: 49 51 49 50 bop 440 1185 a Fs(Chapter)44 b(3)440 1638 y FC(Empirical)51 b(Evaluation)h(of)440 1924 y(Information)g(Service)440 2371 y Fz(Since)31 b(the)g(information)h(service)e(is)i(the)f (foundation)g(which)h(the)f(r)o(est)g(of)g(the)g(design)440 2485 y(is)g(built)g(upon,)g(it)g(is)g(important)g(to)g(evaluate)e (whether)i(our)g(pr)o(oposed)f(information)440 2600 y(service)18 b(design)h(is)g(feasible.)f(Hence,)g(we)h(have)f(implemented)h(the)f (access)g(contr)o(ol,)h(mu-)440 2714 y(tual)31 b(exclusion)h(\(\002le)f (locking\))i(and)d(noti\002cation)j(featur)o(es)d(on)i(top)f(of)h(a)f (distributed)440 2829 y(hash)21 b(table)g(implementation)h(and)f (arranged)f(a)g(number)i(of)f(experiments.)f(This)i(chap-)440 2944 y(ter)g(describes)g(the)g(test)h(implementation)g(and)f(setup)g (and)g(our)h(experiments)f(with)h(the)440 3058 y(\002le)g(system)g (with)h(access)e(contr)o(ol,)h(the)g(mutual)g(exclusion)h(algorithm)f (and)g(the)g(noti\002-)440 3173 y(cation)e(algorithm.)440 3481 y Fr(3.1)119 b(T)-13 b(est)29 b(Implementation)440 3685 y Fz(The)21 b(implementation)h(is)f(an)g(enhancement)g(and)g (adaptation)e(of)i(Heurika)g([24)n(],)g(a)f(pr)o(o-)440 3800 y(totype)28 b(of)f(a)g(distributed)g(\002le)g(system)h(for)g (local-ar)o(ea)d(networks)j(implemented)f(with)440 3914 y(a)32 b(distributed)f(hash)i(table)e(design)h(that)h(is)f(a)f(slight)j (adaptation)d(of)h(Kademlia)f([31)o(].)440 4029 y(Heurika)g(uses)h(UDP) g(for)f(communication)i(and)e(lacks)h(support)g(for)f(access)g(contr)o (ol,)440 4143 y(mutual)21 b(exclusion)g(and)g(noti\002cation.)565 4258 y(Heurika)35 b(is)i(a)f(multi-thr)o(eaded)e(design)j(implemented)g (in)f(C++.)h(It)f(utilises)h(the)440 4372 y(Boost)21 b([7)o(])g(and)f(GNU)g(Common)i(C++)g([10)n(])e(libraries)h(that)f(pr)o (ovide)g(access)g(to)h(portable)440 4487 y(thr)o(eads,)d(the)h(network) h(stack,)f(function)h(pointers)g(and)f(smart)g(pointers.)g(The)g (design)h(is)440 4601 y(based)f(on)h(the)f(concepts)h(of)f(tasks,)g (task)h(queues,)f(workers)h(and)f(callbacks.)f(T)-8 b(asks)20 b(com-)440 4716 y(pr)o(omise)25 b(the)g(basic)g(\002le)g(system)h (operations,)f(e.g.)f(r)o(equesting)i(a)e(mutex,)h(getting)h(and)440 4831 y(putting)d(a)e(block,)i(making)f(look)h(ups,)f(etc.)g(The)g (execution)g(of)g(a)f(task)h(can)g(r)o(esult)g(in)g(the)440 4945 y(cr)o(eation)g(of)g(new)g(tasks,)h(e.g.)e(r)o(equesting)i(a)f (mutex)g(will)h(r)o(esult)f(in)h(a)f(new)g(lookup)h(task)440 5060 y(to)k(\002nd)h(the)f(closest)g(nodes)h(to)f(the)g(mutex.)g(T)-8 b(asks)27 b(ar)o(e)f(executed)f(by)i(worker)g(thr)o(eads)440 5174 y(that)c(r)o(epeatedly)d(r)o(equest)j(tasks)f(to)h(execute)f(fr)o (om)g(a)g(task)h(queue.)g(Callback)e(functions)440 5289 y(ar)o(e)e(used)i(to)g(signal)g(the)g(completion)h(of)f(tasks.)565 5403 y(The)e(adaptations)g(for)g(this)h(pr)o(oject)g(includes)f (implementing)i(the)f(lacking)g(featur)o(es)1831 5662 y(49)p eop %%Page: 50 52 50 51 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(and)h(changing)h(the)f(communication)i(pr)o(otocol)e (to)h(TCP)-11 b(.)23 b(The)g(move)g(to)h(TCP)f(was)g(mo-)440 646 y(tivated)32 b(by)h(the)g(need)g(for)f(a)h(grid)g(to)g(operate)f (over)h(the)g(Internet)g(as)f(opposed)h(to)h(a)440 760 y(local-ar)o(ea)22 b(network,)i(and)f(to)i(support)f(arbitrary)e (message)i(sizes)g(since)g(the)g(UDP)g(im-)440 875 y(plementation)d (was)g(limited)g(in)g(practise)f(to)i(message)e(sizes)h(of)g(about)f (40)g(KB.)565 990 y(The)32 b(implementation)h(of)f(the)g(access)g (contr)o(ol)g(featur)o(es)f(on)h(top)h(of)f(the)g(Kadem-)440 1104 y(lia)c(blocks)h(and)f(the)g(mutual)g(exclusion)h(and)f (noti\002cation)i(pr)o(otocols)e(was)g(r)o(elatively)440 1219 y(straight-forwar)o(d)h(given)j(the)f(existing)g(Heurika)f (design.)i(OpenSSL)e([37)n(])h(was)g(used)440 1333 y(for)20 b(the)g(cryptographic)g(operations.)h(Note)f(that)g(the)g (authentication)h(pr)o(ocedur)o(e)d(men-)440 1448 y(tioned)j(in)g (Section)g(2.2.4)e(was)i(not)g(implemented)g(for)g(the)g(tests.)565 1562 y(The)26 b(TCP)g(design)h(maintains)g(a)f(pool)h(of)f(open)h (connections)h(so)f(that)f(ther)o(e)g(ar)o(e)f(at)440 1677 y(most)h(one)f(connection)i(open)e(between)g(two)h(nodes.)f(The)g (connection)h(is)f(closed)g(after)440 1792 y(30)19 b(seconds)h(of)f (inactivity)-9 b(.)20 b(Each)e(connection)j(has)f(an)f(associated)g(r)o (eceiver)f(thr)o(ead)g(that)440 1906 y(r)o(eceives)29 b(the)i(incoming)h(messages)f(and)f(put)g(them)h(in)g(a)f(work)h(queue) g(for)f(pr)o(ocess-)440 2021 y(ing)d(by)f(a)g(worker)h(thr)o(ead.)d (The)j(r)o(eason)e(we)i(implemented)f(this)h(connection)h(caching)440 2135 y(scheme)18 b(is)h(that)f(many)g(of)g(the)g(communication)h (patterns)f(involve)h(multiple)f(messages)440 2250 y(back)h(and)g (forth,)h(and)f(ther)o(e)g(is)h(a)f(considerable)g(latency)h(over)o (head)e(in)i(the)g(connection-)440 2364 y(establishment)i(handshake)e (that)h(TCP)f(performs.)565 2479 y(The)k(number)h(of)f(lines)h(of)g(r)o (eused)e(sour)o(ce)h(code)h(fr)o(om)f(the)g(Heurika)g(implementa-)440 2594 y(tion)30 b(at)e(time)h(of)g(import)h(was)e(3289.)f(Our)i (extensions)h(and)e(adaptation)g(have)h(added)440 2708 y(5357)19 b(lines)i(of)g(code)f(for)h(a)f(total)h(of)g(8646)e(lines.) 565 2823 y(A)30 b(last)h(point)h(to)f(note)g(about)g(the)g (implementation)h(is)g(that)f(since)g(Heurika)f(was)440 2937 y(intended)g(to)h(operate)f(on)h(local-ar)o(ea)d(networks,)j(its)g (implementation)g(of)g(Kademlia)440 3052 y(is)23 b(not)h(optimised)g (to)f(work)g(on)h(the)f(less)g(homogeneous)i(and)e(stable)f(Internet.)h (For)g(in-)440 3166 y(stance,)17 b(it)i(does)f(not)g(try)g(to)h(avoid)f (communication)h(with)g(high-latency)f(nodes.)g(Unfor)o(-)440 3281 y(tunately)-9 b(,)22 b(we)h(did)f(not)h(have)f(time)h(to)g(amend)f (this)i(pr)o(oblem.)e(So)g(the)h(time-dependent)440 3396 y(r)o(esults)k(fr)o(om)h(our)f(pr)o(ototype)h(may)f(be)h(considerably)f (worse)h(than)g(what)g(is)g(possible)440 3510 y(to)23 b(achieve.)e(For)h(example,)f(the)i(simulations)g(in)g(SkipNet)e([23)o (])h(\(Figur)o(e)f(12\))g(show)i(that)440 3625 y(on)c(average)f(the)h (latencies)f(for)h(the)g(latency-optimised)g(implementations)h(is)f (less)g(than)440 3739 y(half)h(the)h(latencies)g(of)g(the)g (unoptimised)g(implementations.)440 4047 y Fr(3.2)119 b(T)-13 b(est)29 b(Setup)440 4252 y Fz(The)21 b(tests)f(wer)o(e)g (performed)g(on)h(7)f(dual-pr)o(ocessor)f(Intel)i(Pentium)h(III)e(733)f (MHz)h(com-)440 4366 y(puters)28 b(with)g(2)g(GB)g(memory)g(r)o(unning) i(the)e(Sar)o(ge)e(r)o(elease)g(of)i(Debian)g(GNU/Linux,)440 4481 y(connected)f(via)f(100)f(Mb)h(Ethernet.)g(Each)g(computer)h (hosted)g(a)f(number)h(of)g(nodes)g(in)440 4595 y(the)21 b(system,)g(e.g.)f(142)g(each)g(for)g(a)h(total)g(of)f(994)g(nodes.)565 4710 y(In)i(or)o(der)f(to)i(simulate)g(Internet)f(conditions,)i(delay)d (on)i(the)g(network)g(connections)440 4824 y(should)h(be)g(intr)o (oduced.)f(The)g(\002rst)h(attempt)f(at)h(this)g(was)g(to)g(use)f(the)h (Dummynet)h([41)o(])440 4939 y(featur)o(e)17 b(of)h(Fr)o(eeBSD)f(that)h (can)h(modify)f(a)g(\003ow)i(of)e(IP)h(packets,)f(e.g.)g(to)g(intr)o (oduce)g(delay)-9 b(,)440 5054 y(limit)32 b(bandwidth)g(or)f(simulate)h (packet)e(loss.)j(The)e(solution)i(had)e(the)g(kernel)h(of)f(the)440 5168 y(Linux)20 b(machines)g(change)g(the)g(destination)g(addr)o(esses) e(to)i(the)g(Fr)o(eeBSD)e(r)o(outer)h(which)440 5283 y(was)26 b(supposed)g(to)h(r)o(eset)e(the)i(destinations,)f(pass)g(the) h(packets)e(thr)o(ough)i(Dummynet)440 5397 y(and)20 b(send)h(them)g (back)f(to)h(the)g(Linux)g(machines.)g(Unfortunately)-9 b(,)20 b(the)h(Fr)o(eeBSD)e(r)o(outer)1831 5662 y(50)p eop %%Page: 51 53 51 52 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(could)f(not)g(handle)g(the)g(load)f(so)i(this)f (solution)h(was)f(abandoned.)565 646 y(Instead)j(we)g(modi\002ed)h(our) f(implementation)i(so)f(that)g(the)f(r)o(eceiver)f(thr)o(eads)g(wait) 440 760 y(just)g(after)e(having)i(r)o(eceived)e(a)h(message)g(and)g (befor)o(e)g(inserting)h(it)g(in)g(the)f(work)h(queue)440 875 y(for)i(further)f(pr)o(ocessing.)h(The)g(delay)f(used)h(is)h(based) e(on)h(a)g(simple)g(model)h(that)f(corr)o(e-)440 990 y(sponds)18 b(to)g(each)f(node)h(being)g(connected)g(to)g(a)f(lar)o(ge) g(switch)h(with)g(a)g(high-latency)g(link.)440 1104 y(Hence,)i(the)h(r) o(eception)g(delay)f(is)h(calculated)e(as)i(the)g(latency)g(between)f (the)h(sender)g(and)440 1219 y(the)g(switch)h(plus)f(the)f(latency)h (between)g(the)g(switch)g(and)f(the)h(r)o(eceiver)-6 b(.)565 1333 y(The)19 b(latencies)g(of)h(the)g(links)g(to)g(this)g (hypothetical)h(switch)f(wer)o(e)f(randomly)g(chosen)440 1448 y(in)g(the)g(range)g Fd([)q Fz(7;)14 b(55)q Fd(])k Fz(ms)h(for)f(each)h(node)f(befor)o(e)g(the)g(tests)h(began.)f(This)i (corr)o(esponds)e(to)440 1562 y(the)23 b(r)o(ound-trip)f(times)h(being) g(twice)f(the)h(common)h(r)o(ound-trip)e(times)h(in)g(Nor)o(duGrid,)440 1677 y(as)d(measur)o(ed)g(fr)o(om)g(the)h(cluster)g(at)f(Aalbor)o(g)g (University)-9 b(.)565 1792 y(T)h(o)22 b(avoid)g(having)h(to)f(wait)g (for)g(the)g(overlay)g(network)h(in)f(the)h(information)g(service)440 1906 y(to)g(stabilise)g(at)g(the)g(beginning)h(of)f(each)f(test,)h(the) g(addr)o(esses)e(of)i(all)g(other)g(nodes)g(wer)o(e)440 2021 y(inserted)f(into)g(the)h(r)o(outing)f(tables)f(of)h(each)g(node)g (befor)o(e)e(the)i(tests)g(began.)g(This)g(is)h(not)440 2135 y(an)f(unr)o(ealistic)h(pr)o(emise,)e(as)i(most)g(nodes)g(in)g(a)f (r)o(eal)g(setting)h(would)g(know)h(each)e(other)440 2250 y(for)j(an)h(established)f(overlay)h(network)g(of)g(the)g(size)f (the)h(tests)g(wer)o(e)e(conducted)i(with.)440 2364 y(And)32 b(the)g(nodes)g(still)h(had)f(to)g(sent)g(lookup)h(messages)f(befor)o (e)f(most)i(operations)g(as)440 2479 y(speci\002ed)18 b(by)h(the)g(Kademlia)f(pr)o(otocol.)h(Furthermor)o(e,)f(the)g (periodic)h(block)g(r)o(epublish-)440 2594 y(ing)f(and)f(r)o(outing)h (table)f(maintenance)g(was)g(disabled)g(to)h(avoid)f(having)h(them)g (interfer)o(e)440 2708 y(with)k(the)e(r)o(esults.)565 2823 y(A)d(last)g(point)h(that)f(must)h(be)f(kept)h(in)g(mind)f(when)i (evaluating)e(the)g(tests)h(is)f(that)h(each)440 2937 y(test)k(machine)g(was)g(loaded)f(with)h(many)g(information)h(service)f (nodes)g(\(142)e(nodes)i(per)440 3052 y(machine)f(for)g(most)h (tests\).)e(During)i(peek)f(periods)g(of)f(activity)-9 b(,)21 b(this)h(may)e(have)h(had)f(an)440 3166 y(ef)o(fect)f(on)i(the)g (r)o(esults.)440 3475 y Fr(3.3)119 b(File)30 b(System)g(T)-13 b(ests)440 3679 y Fz(The)18 b(\002le)h(system)g(tests)g(explor)o(es)e (some)i(aspects)f(of)g(the)h(performance)e(of)h(the)h(two)g(block)440 3793 y(types)29 b(described)f(in)i(Section)f(2.2.2.)e(In)i(the)g (\002rst)h(test)f(the)g(over)o(head)f(of)h(authenticat-)440 3908 y(ing)23 b(key)f(blocks)h(ar)o(e)e(measur)o(ed.)g(The)h(purpose)g (of)g(the)h(second)f(test)h(is)f(to)h(measur)o(e)e(the)440 4022 y(over)o(head)c(of)i(authenticating)f(data)g(blocks,)h(and)f(in)h (the)f(thir)o(d)g(test)h(concludes)f(by)h(mea-)440 4137 y(suring)i(the)g(time)g(it)g(takes)g(to)g(do)g(a)f(complete)h(r)o(ead)e (and)h(write)h(of)g(a)f(data)g(block.)565 4252 y(The)d(test)h(setup)g (in)h(all)e(thr)o(ee)g(tests)h(consisted)h(of)f(a)f(network)i(with)f (994)f(nodes)h(wher)o(e)440 4366 y(one)25 b(node)g(was)g(writing)h (blocks)f(\(and)g(r)o(eading)e(them)j(again)e(in)i(the)f(thir)o(d)f (test\))h(while)440 4481 y(the)h(other)h(nodes)f(wer)o(e)f(passive)h (storage)g(nodes.)g(The)g(r)o(eplication)g(constant)g(was)g(set)440 4595 y(to)21 b(5.)f(The)g(tests)h(was)g(r)o(un)g(\002ve)g(times)g(with) g(similar)g(overall)f(r)o(esults,)g(so)h(the)g(graphs)g(ar)o(e)440 4710 y(r)o(epr)o(esentative)e(examples.)440 4970 y Fp(3.3.1)99 b(Adding)24 b(Users)440 5143 y Fz(The)17 b(purpose)f(of)h(this)h(test)e (is)i(to)f(examine)f(the)h(number)g(of)g(keys)g(that)f(must)i(be)e(r)o (etrieved)440 5258 y(to)27 b(authenticate)f(a)g(key)g(block)h(as)f(the) g(number)h(of)f(users)h(in)g(the)f(system)h(gr)o(ows.)g(This)440 5372 y(is)e(inter)o(esting)f(partly)g(because)g(of)g(latency)g(issues,) h(partly)f(to)g(keep)g(the)h(network)g(and)1831 5662 y(51)p eop %%Page: 52 54 52 53 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(pr)o(ocessor)28 b(usage)g(to)h(an)f(acceptable)f (level.)h(Key)g(blocks)h(must)g(be)f(authenticated)g(on)440 646 y(many)21 b(occasions,)g(not)g(only)h(when)f(new)g(users)f(join)i (the)f(system)g(but)f(also)h(when)g(a)f(key)440 760 y(is)h(r)o (etrieved,)e(e.g.)h(to)h(authenticate)f(a)h(data)e(blocks.)565 875 y(It)g(is)g(dif)o(\002cult)g(to)g(pr)o(edict)f(the)h(r)o(esult)g (of)g(this)h(test.)f(The)g(average)e(path)i(fr)o(om)g(a)g(key)g(to)440 990 y(the)d(r)o(oot)h(node)f(is)h(pr)o(olonged)f(as)g(the)h(number)f (of)g(user)h(keys)f(in)h(the)f(system)h(gr)o(ows.)g(This)440 1104 y(means)k(that)f(we)g(would)h(expect)f(that)g(mor)o(e)h(keys)f (need)g(to)h(be)f(fetched)g(to)h(authenticate)440 1219 y(a)e(key)g(block)h(as)f(time)h(goes.)g(On)g(the)f(other)h(hand,)f (when)h(mor)o(e)f(users)g(ar)o(e)f(added,)g(ther)o(e)440 1333 y(will)k(be)f(mor)o(e)f(activity)h(on)h(the)f(nodes)h(and)e(hence) h(a)g(gr)o(eater)e(pr)o(obability)i(that)g(the)g(key)440 1448 y(caches)f(\(mentioned)h(in)h(Section)f(2.2.3\))d(contain)j(the)g (needed)f(keys)h(alr)o(eady)-9 b(.)440 1689 y Fv(Description)440 1862 y Fz(The)24 b(writer)h(node)f(constr)o(ucts)i(2000)c(new)j(public) f(user)g(keys)h(and)f(writes)h(them)f(to)h(the)440 1977 y(network)32 b(one)f(at)f(a)g(time)i(as)e(key)h(blocks,)g(signing)i (them)e(with)g(a)g(random)g(user)f(key)440 2091 y(fr)o(om)18 b(the)i(users)e(it)i(has)e(alr)o(eady)f(added)h(\(it)h(keeps)f(the)h (private)f(keys)h(of)g(the)g(users)g(it)g(has)440 2206 y(added)h(to)i(be)f(able)f(to)i(this\).)g(This)g(means)f(that)g(the)h (\002rst)g(new)f(user)g(must)h(be)g(signed)f(by)440 2320 y(the)i(r)o(oot)g(key)-9 b(,)22 b(wher)o(eas)g(the)h(second)g(user)g (can)g(be)f(signed)h(with)h(equal)f(pr)o(obability)f(by)440 2435 y(either)e(the)g(r)o(oot)g(key)g(or)h(the)f(key)g(of)g(the)g (\002rst)h(user)-6 b(,)19 b(etc.)h(Initially)g(the)h(other)f(nodes)g (only)440 2549 y(knows)h(of)g(the)f(r)o(oot)g(key)-9 b(,)20 b(but)g(later)g(insert)g(all)g(keys)g(they)h(have)f(veri\002ed)f (themselves)i(in)440 2664 y(their)g(local)g(key)f(cache)h(as)f(the)h (test)g(pr)o(oceeds.)440 2905 y Fv(Results)440 3078 y Fz(Figur)o(e)32 b(3.1)f(illustrates)h(that)g(the)g(number)h(of)f(keys)g (fetched)f(when)i(r)o(eceiving)f(a)f(key)440 3193 y(block)21 b(is)g(on)h(average)d(constant)i(as)g(the)g(number)g(of)f(users)h(in)g (the)g(system)h(gr)o(ows.)681 4969 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 1984 @rhi @setspecial %%BeginDocument: test/images/adding-users1.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out-key4.eps %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Thu Dec 16 11:16:25 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 546 420 M 63 0 V 6353 0 R -63 0 V 462 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 546 977 M 63 0 V 6353 0 R -63 0 V 462 977 M gsave 0 setgray ( 1) Rshow grestore 1.000 UL LTb 546 1533 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 2) Rshow grestore 1.000 UL LTb 546 2090 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 3) Rshow grestore 1.000 UL LTb 546 2646 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 4) Rshow grestore 1.000 UL LTb 546 3203 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 5) Rshow grestore 1.000 UL LTb 546 3759 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 6) Rshow grestore 1.000 UL LTb 546 4316 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 7) Rshow grestore 1.000 UL LTb 546 4872 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 8) Rshow grestore 1.000 UL LTb 546 420 M 0 63 V 0 4389 R 0 -63 V 546 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1188 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 200) Cshow grestore 1.000 UL LTb 1829 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 400) Cshow grestore 1.000 UL LTb 2471 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 600) Cshow grestore 1.000 UL LTb 3112 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 800) Cshow grestore 1.000 UL LTb 3754 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1000) Cshow grestore 1.000 UL LTb 4396 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1200) Cshow grestore 1.000 UL LTb 5037 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1400) Cshow grestore 1.000 UL LTb 5679 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1600) Cshow grestore 1.000 UL LTb 6320 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1800) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2000) Cshow grestore 1.000 UL LTb 1.000 UL LTb 546 420 M 6416 0 V 0 4452 V -6416 0 V 546 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Keys fetched \(avg.\)) Cshow grestore grestore LTb 3754 70 M gsave 0 setgray (User keys added) Cshow grestore 1.000 UP 2.000 UL LT0 546 420 M 0 1291 V 160 0 V 0 484 V 161 0 V 0 217 V 160 0 V 0 234 V 161 0 V 0 -217 V 160 0 V 0 206 V 160 0 V 0 389 V 161 0 V 0 -150 V 160 0 V 0 -67 V 161 0 V 0 -144 V 160 0 V 0 384 V 160 0 V 0 28 V 161 0 V 0 -17 V 160 0 V 0 -490 V 161 0 V 0 212 V 160 0 V 0 178 V 160 0 V 0 -212 V 161 0 V 0 301 V 160 0 V 0 -195 V 161 0 V 0 351 V 160 0 V 0 -134 V 160 0 V 0 -345 V 161 0 V 0 167 V 160 0 V 0 11 V 161 0 V 0 378 V 160 0 V 0 -534 V 160 0 V 0 284 V 161 0 V 0 -239 V 160 0 V 0 -11 V 161 0 V 0 367 V 160 0 V 0 -267 V 160 0 V 0 55 V 161 0 V 0 101 V 160 0 V 0 89 V 161 0 V 0 -245 V 160 0 V 0 284 V 160 0 V 0 -468 V 161 0 V 0 245 V 160 0 V 0 -33 V 161 0 V 0 83 V 160 0 V 0 -2571 V 1.000 UL LT1 546 420 M 0 2209 V 160 0 V 0 601 V 161 0 V 0 151 V 160 0 V 0 434 V 161 0 V 0 -262 V 160 0 V 0 251 V 160 0 V 0 489 V 161 0 V 0 -78 V 160 0 V 0 -217 V 161 0 V 0 -200 V 160 0 V 0 868 V 160 0 V 0 -367 V 161 0 V 0 78 V 160 0 V 0 -657 V 161 0 V 0 390 V 160 0 V 0 55 V 160 0 V 0 -89 V 161 0 V 0 518 V 160 0 V 0 -334 V 161 0 V 0 501 V 160 0 V 0 -507 V 160 0 V 0 -350 V 161 0 V 0 261 V 160 0 V 0 39 V 161 0 V 0 367 V 160 0 V 0 -578 V 160 0 V 0 467 V 161 0 V 0 -428 V 160 0 V 0 -262 V 161 0 V 0 918 V 160 0 V 0 -411 V 160 0 V 0 -123 V 161 0 V 0 167 V 160 0 V 0 -217 V 161 0 V 0 -50 V 160 0 V 0 428 V 160 0 V 0 -523 V 161 0 V 0 117 V 160 0 V 0 223 V 161 0 V 0 5 V 160 0 V 0 -3884 V 1.000 UL LT1 546 420 M 0 367 V 160 0 V 0 373 V 161 0 V 0 284 V 160 0 V 0 33 V 161 0 V 0 -172 V 160 0 V 0 156 V 160 0 V 0 295 V 161 0 V 0 -223 V 160 0 V 0 83 V 161 0 V 0 -89 V 160 0 V 0 -105 V 160 0 V 0 423 V 161 0 V 0 -101 V 160 0 V 0 -333 V 161 0 V 0 44 V 160 0 V 0 289 V 160 0 V 0 -333 V 161 0 V 0 83 V 160 0 V 0 -50 V 161 0 V 0 206 V 160 0 V 0 234 V 160 0 V 0 -340 V 161 0 V 0 72 V 160 0 V 0 -22 V 161 0 V 0 401 V 160 0 V 0 -495 V 160 0 V 0 100 V 161 0 V 0 -56 V 160 0 V 0 251 V 161 0 V 0 -190 V 160 0 V 0 -128 V 160 0 V 0 240 V 161 0 V 0 33 V 160 0 V 0 395 V 161 0 V 0 -445 V 160 0 V 0 145 V 160 0 V 0 -412 V 161 0 V 0 373 V 160 0 V 0 -290 V 161 0 V 0 162 V 160 0 V 0 -1258 V 1.000 UL LTb 546 420 M 6416 0 V 0 4452 V -6416 0 V 546 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 5157 a Fq(Figur)o(e)17 b(3.1:)27 b(The)18 b(middle)g(graph)h(shows)f(the)g(number)f(of)g(keys)h(fetched)h(to)f (check)h(a)f(key)g(block)f(as)h(mor)o(e)511 5262 y(users)g(ar)o(e)g (added.)h(Each)f(data)h(point)f(is)g(an)g(average)h(of)f(the)g(50)h (keys.)f(The)h(standard)f(deviation)g(is)g(also)511 5367 y(plotted)h(as)g(the)g(line)f(above)h(and)g(below)l(.)1831 5662 y Fz(52)p eop %%Page: 53 55 53 54 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 565 531 a Fz(Between)28 b(0)h(to)g(200)f(added)g(users,)g(only)j (few)d(keys)i(ar)o(e)d(cached)h(but)i(the)f(average)440 646 y(path)24 b(length)h(fr)o(om)e(the)i(r)o(oot)f(key)g(to)g(the)h (added)d(keys)j(ar)o(e)d(small,)j(and)e(only)i(few)f(keys)440 760 y(need)18 b(to)i(be)e(fetched.)g(After)g(200-300)d(key)k(blocks,)g (the)g(test)g(enters)g(a)f(phase)h(wher)o(e)f(each)440 875 y(node)23 b(has)g(r)o(eceived)f(one)h(key)g(on)h(average)d(\(since) j(the)f(r)o(eplication)f(constant)i(is)f(5\))g(and)440 990 y(the)h(caching)h(mechanism)g(begins)f(to)h(have)f(an)g(ef)o(fect.) e(About)i(this)h(point)g(in)g(time,)f(the)440 1104 y(curve)c (stabilises.)h(W)-8 b(e)21 b(attribute)f(this)i(to)f(the)g(ef)o (fectiveness)e(of)i(the)g(caching)g(scheme.)565 1219 y(Figur)o(e)c(3.2)h(illustrates)g(the)g(signing)i(str)o(uctur)o(e)e (for)g(the)g(\002rst)h(100)e(keys)h(and)g(can)g(give)440 1333 y(an)29 b(insight)i(into)g(why)f(the)g(caching)f(scheme)h(is)g(ef) o(fective.)e(The)h(tr)o(ee)g(is)g(smaller)h(near)440 1448 y(the)e(r)o(oot)f(than)h(at)f(the)h(leaves,)e(and)h(at)h(the)f (same)h(time)f(all)h(signing)h(paths)e(must)h(pass)440 1562 y(thr)o(ough)c(the)f(part)f(near)g(the)h(r)o(oot)g(since)h(they)f (originate)g(fr)o(om)g(it.)f(Hence,)h(caching)g(the)440 1677 y(small)31 b(bottom)g(part)e(of)h(the)h(tr)o(ee)e(can)g(decr)o (ease)f(the)j(number)f(of)g(keys)h(that)f(must)h(be)440 1792 y(r)o(etrieved)24 b(substantially)-9 b(.)26 b(For)g(instance,)g (caching)g(the)g(node)g(labeled)f(1)g(will)h(decr)o(ease)440 1906 y(the)f(number)g(of)f(keys)h(that)g(must)g(be)f(r)o(etrieved)f(by) i(one)g(for)g(about)f(50\045)g(of)g(the)h(nodes)440 2021 y(in)c(the)g(tr)o(ee.)440 2960 y @beginspecial 35 @llx 35 @lly 2395 @urx 725 @ury 3437 @rwi @setspecial %%BeginDocument: test/images/cache-graph.eps %!PS-Adobe-2.0 %%Creator: dot version 1.12 (Wed May 12 10:46:29 GMT 2004) %%For: (arj) Anders Rune Jensen %%Title: G %%Pages: (atend) %%BoundingBox: 35 35 2395 725 %%EndComments save %%BeginProlog /DotDict 200 dict def DotDict begin /setupLatin1 { mark /EncodingVector 256 array def EncodingVector 0 ISOLatin1Encoding 0 255 getinterval putinterval EncodingVector dup 306 /AE dup 301 /Aacute dup 302 /Acircumflex dup 304 /Adieresis dup 300 /Agrave dup 305 /Aring dup 303 /Atilde dup 307 /Ccedilla dup 311 /Eacute dup 312 /Ecircumflex dup 313 /Edieresis dup 310 /Egrave dup 315 /Iacute dup 316 /Icircumflex dup 317 /Idieresis dup 314 /Igrave dup 334 /Udieresis dup 335 /Yacute dup 376 /thorn dup 337 /germandbls dup 341 /aacute dup 342 /acircumflex dup 344 /adieresis dup 346 /ae dup 340 /agrave dup 345 /aring dup 347 /ccedilla dup 351 /eacute dup 352 /ecircumflex dup 353 /edieresis dup 350 /egrave dup 355 /iacute dup 356 /icircumflex dup 357 /idieresis dup 354 /igrave dup 360 /dcroat dup 361 /ntilde dup 363 /oacute dup 364 /ocircumflex dup 366 /odieresis dup 362 /ograve dup 365 /otilde dup 370 /oslash dup 372 /uacute dup 373 /ucircumflex dup 374 /udieresis dup 371 /ugrave dup 375 /yacute dup 377 /ydieresis % Set up ISO Latin 1 character encoding /starnetISO { dup dup findfont dup length dict begin { 1 index /FID ne { def }{ pop pop } ifelse } forall /Encoding EncodingVector def currentdict end definefont } def /Times-Roman starnetISO def /Times-Italic starnetISO def /Times-Bold starnetISO def /Times-BoldItalic starnetISO def /Helvetica starnetISO def /Helvetica-Oblique starnetISO def /Helvetica-Bold starnetISO def /Helvetica-BoldOblique starnetISO def /Courier starnetISO def /Courier-Oblique starnetISO def /Courier-Bold starnetISO def /Courier-BoldOblique starnetISO def cleartomark } bind def %%BeginResource: procset /coord-font-family /Times-Roman def /default-font-family /Times-Roman def /coordfont coord-font-family findfont 8 scalefont def /InvScaleFactor 1.0 def /set_scale { dup 1 exch div /InvScaleFactor exch def dup scale } bind def % styles /solid { [] 0 setdash } bind def /dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def /dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def /invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def /bold { 2 setlinewidth } bind def /filled { } bind def /unfilled { } bind def /rounded { } bind def /diagonals { } bind def % hooks for setting color /nodecolor { sethsbcolor } bind def /edgecolor { sethsbcolor } bind def /graphcolor { sethsbcolor } bind def /nopcolor {pop pop pop} bind def /beginpage { % i j npages /npages exch def /j exch def /i exch def /str 10 string def npages 1 gt { gsave coordfont setfont 0 0 moveto (\() show i str cvs show (,) show j str cvs show (\)) show grestore } if } bind def /set_font { findfont exch scalefont setfont } def % draw aligned label in bounding box aligned to current point /alignedtext { % width adj text /text exch def /adj exch def /width exch def gsave width 0 gt { text stringwidth pop adj mul 0 rmoveto } if [] 0 setdash text show grestore } def /boxprim { % xcorner ycorner xsize ysize 4 2 roll moveto 2 copy exch 0 rlineto 0 exch rlineto pop neg 0 rlineto closepath } bind def /ellipse_path { /ry exch def /rx exch def /y exch def /x exch def matrix currentmatrix newpath x y translate rx ry scale 0 0 1 0 360 arc setmatrix } bind def /endpage { showpage } bind def /showpage { } def /layercolorseq [ % layer color sequence - darkest to lightest [0 0 0] [.2 .8 .8] [.4 .8 .8] [.6 .8 .8] [.8 .8 .8] ] def /layerlen layercolorseq length def /setlayer {/maxlayer exch def /curlayer exch def layercolorseq curlayer 1 sub layerlen mod get aload pop sethsbcolor /nodecolor {nopcolor} def /edgecolor {nopcolor} def /graphcolor {nopcolor} def } bind def /onlayer { curlayer ne {invis} if } def /onlayers { /myupper exch def /mylower exch def curlayer mylower lt curlayer myupper gt or {invis} if } def /curlayer 0 def %%EndResource %%EndProlog %%BeginSetup 14 default-font-family set_font 1 setmiterlimit % /arrowlength 10 def % /arrowwidth 5 def % make sure pdfmark is harmless for PS-interpreters other than Distiller /pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse % make '<<' and '>>' safe on PS Level 1 devices /languagelevel where {pop languagelevel}{1} ifelse 2 lt { userdict (<<) cvn ([) cvn load put userdict (>>) cvn ([) cvn load put } if %%EndSetup %%Page: 1 1 %%PageBoundingBox: 36 36 2395 725 %%PageOrientation: Portrait gsave 35 35 2360 690 boxprim clip newpath 36 36 translate 0 0 1 beginpage 0 0 translate 0 rotate 0.000 0.000 0.000 graphcolor 14.00 /Times-Roman set_font % 0 gsave 10 dict begin filled 0.000 0.000 0.827 nodecolor newpath 1920 32 moveto 1878 32 lineto 1878 8 lineto 1920 8 lineto closepath fill 0.000 0.000 0.000 nodecolor newpath 1920 32 moveto 1878 32 lineto 1878 8 lineto 1920 8 lineto closepath stroke gsave 10 dict begin 1899 15 moveto 27 -0.5 (root) alignedtext end grestore end grestore % 1 gsave 10 dict begin 1071 86 27 18 ellipse_path stroke gsave 10 dict begin 1071 81 moveto 4 -0.5 (1) alignedtext end grestore end grestore % 1 -> 0 newpath 1098 84 moveto 1222 73 1735 33 1868 23 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1868 26 moveto 1878 22 lineto 1868 20 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1868 26 moveto 1878 22 lineto 1868 20 lineto closepath stroke end grestore % 2 gsave 10 dict begin 603 158 27 18 ellipse_path stroke gsave 10 dict begin 603 153 moveto 8 -0.5 (2) alignedtext end grestore end grestore % 2 -> 1 newpath 630 154 moveto 709 142 944 106 1035 92 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1036 95 moveto 1045 90 lineto 1035 89 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1036 95 moveto 1045 90 lineto 1035 89 lineto closepath stroke end grestore % 3 gsave 10 dict begin 819 158 27 18 ellipse_path stroke gsave 10 dict begin 819 153 moveto 7 -0.5 (3) alignedtext end grestore end grestore % 3 -> 1 newpath 840 146 moveto 845 144 850 142 855 140 curveto 916 117 991 101 1035 93 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1036 96 moveto 1045 91 lineto 1035 90 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1036 96 moveto 1045 91 lineto 1035 90 lineto closepath stroke end grestore % 4 gsave 10 dict begin 891 158 27 18 ellipse_path stroke gsave 10 dict begin 891 153 moveto 8 -0.5 (4) alignedtext end grestore end grestore % 4 -> 1 newpath 914 149 moveto 946 136 1002 113 1038 99 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1040 102 moveto 1048 95 lineto 1037 95 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1040 102 moveto 1048 95 lineto 1037 95 lineto closepath stroke end grestore % 5 gsave 10 dict begin 1071 158 27 18 ellipse_path stroke gsave 10 dict begin 1071 153 moveto 7 -0.5 (5) alignedtext end grestore end grestore % 5 -> 1 newpath 1071 140 moveto 1071 132 1071 123 1071 114 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1075 114 moveto 1071 104 lineto 1068 114 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1075 114 moveto 1071 104 lineto 1068 114 lineto closepath stroke end grestore % 6 gsave 10 dict begin 1575 86 27 18 ellipse_path stroke gsave 10 dict begin 1575 81 moveto 7 -0.5 (6) alignedtext end grestore end grestore % 6 -> 0 newpath 1601 81 moveto 1660 69 1804 39 1868 26 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1869 29 moveto 1878 24 lineto 1868 23 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1869 29 moveto 1878 24 lineto 1868 23 lineto closepath stroke end grestore % 7 gsave 10 dict begin 495 230 27 18 ellipse_path stroke gsave 10 dict begin 495 225 moveto 7 -0.5 (7) alignedtext end grestore end grestore % 7 -> 2 newpath 514 217 moveto 531 206 556 189 576 177 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 578 180 moveto 584 171 lineto 574 174 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 578 180 moveto 584 171 lineto 574 174 lineto closepath stroke end grestore % 8 gsave 10 dict begin 1143 158 27 18 ellipse_path stroke gsave 10 dict begin 1143 153 moveto 7 -0.5 (8) alignedtext end grestore end grestore % 8 -> 1 newpath 1128 143 moveto 1118 133 1105 120 1093 108 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1096 106 moveto 1086 101 lineto 1091 111 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1096 106 moveto 1086 101 lineto 1091 111 lineto closepath stroke end grestore % 9 gsave 10 dict begin 1899 86 27 18 ellipse_path stroke gsave 10 dict begin 1899 81 moveto 7 -0.5 (9) alignedtext end grestore end grestore % 9 -> 0 newpath 1899 68 moveto 1899 60 1899 50 1899 42 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1903 42 moveto 1899 32 lineto 1896 42 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1903 42 moveto 1899 32 lineto 1896 42 lineto closepath stroke end grestore % 10 gsave 10 dict begin 1755 158 27 18 ellipse_path stroke gsave 10 dict begin 1755 153 moveto 12 -0.5 (10) alignedtext end grestore end grestore % 10 -> 9 newpath 1777 147 moveto 1801 134 1841 115 1868 101 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1869 104 moveto 1877 97 lineto 1866 98 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1869 104 moveto 1877 97 lineto 1866 98 lineto closepath stroke end grestore % 11 gsave 10 dict begin 1395 158 27 18 ellipse_path stroke gsave 10 dict begin 1395 153 moveto 9 -0.5 (11) alignedtext end grestore end grestore % 11 -> 6 newpath 1416 147 moveto 1421 145 1426 142 1431 140 curveto 1469 124 1512 108 1541 97 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1542 100 moveto 1551 94 lineto 1540 94 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1542 100 moveto 1551 94 lineto 1540 94 lineto closepath stroke end grestore % 12 gsave 10 dict begin 1827 158 27 18 ellipse_path stroke gsave 10 dict begin 1827 153 moveto 12 -0.5 (12) alignedtext end grestore end grestore % 12 -> 9 newpath 1842 143 moveto 1852 133 1865 120 1877 108 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1879 111 moveto 1884 101 lineto 1874 106 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1879 111 moveto 1884 101 lineto 1874 106 lineto closepath stroke end grestore % 13 gsave 10 dict begin 675 230 27 18 ellipse_path stroke gsave 10 dict begin 675 225 moveto 11 -0.5 (13) alignedtext end grestore end grestore % 13 -> 4 newpath 696 218 moveto 701 216 706 214 711 212 curveto 773 189 794 198 855 176 curveto 857 175 859 175 861 174 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 863 177 moveto 870 169 lineto 860 171 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 863 177 moveto 870 169 lineto 860 171 lineto closepath stroke end grestore % 14 gsave 10 dict begin 1683 230 27 18 ellipse_path stroke gsave 10 dict begin 1683 225 moveto 13 -0.5 (14) alignedtext end grestore end grestore % 14 -> 10 newpath 1698 215 moveto 1708 205 1721 192 1733 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1735 183 moveto 1740 173 lineto 1730 178 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1735 183 moveto 1740 173 lineto 1730 178 lineto closepath stroke end grestore % 15 gsave 10 dict begin 2151 86 27 18 ellipse_path stroke gsave 10 dict begin 2151 81 moveto 12 -0.5 (15) alignedtext end grestore end grestore % 15 -> 0 newpath 2125 79 moveto 2078 68 1980 42 1930 29 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1931 26 moveto 1920 26 lineto 1929 32 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1931 26 moveto 1920 26 lineto 1929 32 lineto closepath stroke end grestore % 16 gsave 10 dict begin 603 302 27 18 ellipse_path stroke gsave 10 dict begin 603 297 moveto 12 -0.5 (16) alignedtext end grestore end grestore % 16 -> 13 newpath 618 287 moveto 628 277 641 264 653 252 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 655 255 moveto 660 245 lineto 650 250 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 655 255 moveto 660 245 lineto 650 250 lineto closepath stroke end grestore % 17 gsave 10 dict begin 351 302 27 18 ellipse_path stroke gsave 10 dict begin 351 297 moveto 12 -0.5 (17) alignedtext end grestore end grestore % 17 -> 7 newpath 373 291 moveto 397 278 437 259 464 245 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 465 248 moveto 473 241 lineto 462 242 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 465 248 moveto 473 241 lineto 462 242 lineto closepath stroke end grestore % 18 gsave 10 dict begin 1899 158 27 18 ellipse_path stroke gsave 10 dict begin 1899 153 moveto 11 -0.5 (18) alignedtext end grestore end grestore % 18 -> 9 newpath 1899 140 moveto 1899 132 1899 123 1899 114 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1903 114 moveto 1899 104 lineto 1896 114 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1903 114 moveto 1899 104 lineto 1896 114 lineto closepath stroke end grestore % 19 gsave 10 dict begin 99 374 27 18 ellipse_path stroke gsave 10 dict begin 99 369 moveto 12 -0.5 (19) alignedtext end grestore end grestore % 19 -> 17 newpath 124 367 moveto 169 354 265 327 316 312 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 317 315 moveto 326 309 lineto 315 309 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 317 315 moveto 326 309 lineto 315 309 lineto closepath stroke end grestore % 20 gsave 10 dict begin 1755 230 27 18 ellipse_path stroke gsave 10 dict begin 1755 225 moveto 16 -0.5 (20) alignedtext end grestore end grestore % 20 -> 12 newpath 1770 215 moveto 1780 205 1793 192 1805 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1807 183 moveto 1812 173 lineto 1802 178 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1807 183 moveto 1812 173 lineto 1802 178 lineto closepath stroke end grestore % 21 gsave 10 dict begin 315 374 27 18 ellipse_path stroke gsave 10 dict begin 315 369 moveto 12 -0.5 (21) alignedtext end grestore end grestore % 21 -> 17 newpath 324 357 moveto 328 348 333 338 338 328 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 341 330 moveto 342 319 lineto 335 327 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 341 330 moveto 342 319 lineto 335 327 lineto closepath stroke end grestore % 22 gsave 10 dict begin 1323 230 27 18 ellipse_path stroke gsave 10 dict begin 1323 225 moveto 16 -0.5 (22) alignedtext end grestore end grestore % 22 -> 11 newpath 1338 215 moveto 1348 205 1361 192 1373 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1375 183 moveto 1380 173 lineto 1370 178 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1375 183 moveto 1380 173 lineto 1370 178 lineto closepath stroke end grestore % 23 gsave 10 dict begin 747 230 27 18 ellipse_path stroke gsave 10 dict begin 747 225 moveto 15 -0.5 (23) alignedtext end grestore end grestore % 23 -> 4 newpath 769 219 moveto 793 206 833 187 860 173 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 861 176 moveto 869 169 lineto 858 170 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 861 176 moveto 869 169 lineto 858 170 lineto closepath stroke end grestore % 24 gsave 10 dict begin 1467 158 27 18 ellipse_path stroke gsave 10 dict begin 1467 153 moveto 16 -0.5 (24) alignedtext end grestore end grestore % 24 -> 6 newpath 1486 145 moveto 1503 134 1528 117 1548 105 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1550 108 moveto 1556 99 lineto 1546 102 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1550 108 moveto 1556 99 lineto 1546 102 lineto closepath stroke end grestore % 25 gsave 10 dict begin 423 374 27 18 ellipse_path stroke gsave 10 dict begin 423 369 moveto 15 -0.5 (25) alignedtext end grestore end grestore % 25 -> 17 newpath 408 359 moveto 398 349 385 336 373 324 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 376 322 moveto 366 317 lineto 371 327 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 376 322 moveto 366 317 lineto 371 327 lineto closepath stroke end grestore % 26 gsave 10 dict begin 819 230 27 18 ellipse_path stroke gsave 10 dict begin 819 225 moveto 16 -0.5 (26) alignedtext end grestore end grestore % 26 -> 4 newpath 834 215 moveto 844 205 857 192 869 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 871 183 moveto 876 173 lineto 866 178 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 871 183 moveto 876 173 lineto 866 178 lineto closepath stroke end grestore % 27 gsave 10 dict begin 171 446 27 18 ellipse_path stroke gsave 10 dict begin 171 441 moveto 16 -0.5 (27) alignedtext end grestore end grestore % 27 -> 21 newpath 193 435 moveto 217 422 257 403 284 389 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 285 392 moveto 293 385 lineto 282 386 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 285 392 moveto 293 385 lineto 282 386 lineto closepath stroke end grestore % 28 gsave 10 dict begin 891 230 27 18 ellipse_path stroke gsave 10 dict begin 891 225 moveto 15 -0.5 (28) alignedtext end grestore end grestore % 28 -> 4 newpath 891 212 moveto 891 204 891 195 891 186 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 895 186 moveto 891 176 lineto 888 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 895 186 moveto 891 176 lineto 888 186 lineto closepath stroke end grestore % 29 gsave 10 dict begin 1539 158 27 18 ellipse_path stroke gsave 10 dict begin 1539 153 moveto 15 -0.5 (29) alignedtext end grestore end grestore % 29 -> 6 newpath 1548 141 moveto 1552 132 1557 122 1562 112 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1565 114 moveto 1566 103 lineto 1559 111 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1565 114 moveto 1566 103 lineto 1559 111 lineto closepath stroke end grestore % 30 gsave 10 dict begin 1215 158 27 18 ellipse_path stroke gsave 10 dict begin 1215 153 moveto 15 -0.5 (30) alignedtext end grestore end grestore % 30 -> 1 newpath 1193 147 moveto 1169 134 1129 115 1102 101 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1104 98 moveto 1093 97 lineto 1101 104 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1104 98 moveto 1093 97 lineto 1101 104 lineto closepath stroke end grestore % 31 gsave 10 dict begin 1611 158 27 18 ellipse_path stroke gsave 10 dict begin 1611 153 moveto 11 -0.5 (31) alignedtext end grestore end grestore % 31 -> 6 newpath 1602 141 moveto 1598 132 1593 122 1588 112 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1591 111 moveto 1584 103 lineto 1585 114 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1591 111 moveto 1584 103 lineto 1585 114 lineto closepath stroke end grestore % 32 gsave 10 dict begin 2295 86 27 18 ellipse_path stroke gsave 10 dict begin 2295 81 moveto 15 -0.5 (32) alignedtext end grestore end grestore % 32 -> 0 newpath 2269 82 moveto 2198 70 2006 38 1930 26 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1930 23 moveto 1920 24 lineto 1929 29 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1930 23 moveto 1920 24 lineto 1929 29 lineto closepath stroke end grestore % 33 gsave 10 dict begin 1683 302 27 18 ellipse_path stroke gsave 10 dict begin 1683 297 moveto 14 -0.5 (33) alignedtext end grestore end grestore % 33 -> 14 newpath 1683 284 moveto 1683 276 1683 267 1683 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1687 258 moveto 1683 248 lineto 1680 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1687 258 moveto 1683 248 lineto 1680 258 lineto closepath stroke end grestore % 34 gsave 10 dict begin 1827 230 27 18 ellipse_path stroke gsave 10 dict begin 1827 225 moveto 15 -0.5 (34) alignedtext end grestore end grestore % 34 -> 12 newpath 1827 212 moveto 1827 204 1827 195 1827 186 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1831 186 moveto 1827 176 lineto 1824 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1831 186 moveto 1827 176 lineto 1824 186 lineto closepath stroke end grestore % 35 gsave 10 dict begin 603 374 27 18 ellipse_path stroke gsave 10 dict begin 603 369 moveto 14 -0.5 (35) alignedtext end grestore end grestore % 35 -> 16 newpath 603 356 moveto 603 348 603 339 603 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 607 330 moveto 603 320 lineto 600 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 607 330 moveto 603 320 lineto 600 330 lineto closepath stroke end grestore % 36 gsave 10 dict begin 243 446 27 18 ellipse_path stroke gsave 10 dict begin 243 441 moveto 15 -0.5 (36) alignedtext end grestore end grestore % 36 -> 21 newpath 258 431 moveto 268 421 281 408 293 396 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 295 399 moveto 300 389 lineto 290 394 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 295 399 moveto 300 389 lineto 290 394 lineto closepath stroke end grestore % 37 gsave 10 dict begin 315 446 27 18 ellipse_path stroke gsave 10 dict begin 315 441 moveto 15 -0.5 (37) alignedtext end grestore end grestore % 37 -> 21 newpath 315 428 moveto 315 420 315 411 315 402 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 319 402 moveto 315 392 lineto 312 402 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 319 402 moveto 315 392 lineto 312 402 lineto closepath stroke end grestore % 38 gsave 10 dict begin 1395 230 27 18 ellipse_path stroke gsave 10 dict begin 1395 225 moveto 14 -0.5 (38) alignedtext end grestore end grestore % 38 -> 11 newpath 1395 212 moveto 1395 204 1395 195 1395 186 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1399 186 moveto 1395 176 lineto 1392 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1399 186 moveto 1395 176 lineto 1392 186 lineto closepath stroke end grestore % 39 gsave 10 dict begin 459 446 27 18 ellipse_path stroke gsave 10 dict begin 459 441 moveto 14 -0.5 (39) alignedtext end grestore end grestore % 39 -> 25 newpath 450 429 moveto 446 420 441 410 436 400 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 439 399 moveto 432 391 lineto 433 402 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 439 399 moveto 432 391 lineto 433 402 lineto closepath stroke end grestore % 40 gsave 10 dict begin 1395 302 27 18 ellipse_path stroke gsave 10 dict begin 1395 297 moveto 16 -0.5 (40) alignedtext end grestore end grestore % 40 -> 38 newpath 1395 284 moveto 1395 276 1395 267 1395 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1399 258 moveto 1395 248 lineto 1392 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1399 258 moveto 1395 248 lineto 1392 258 lineto closepath stroke end grestore % 41 gsave 10 dict begin 1251 302 27 18 ellipse_path stroke gsave 10 dict begin 1251 297 moveto 13 -0.5 (41) alignedtext end grestore end grestore % 41 -> 22 newpath 1266 287 moveto 1276 277 1289 264 1301 252 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1303 255 moveto 1308 245 lineto 1298 250 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1303 255 moveto 1308 245 lineto 1298 250 lineto closepath stroke end grestore % 42 gsave 10 dict begin 1755 302 27 18 ellipse_path stroke gsave 10 dict begin 1755 297 moveto 16 -0.5 (42) alignedtext end grestore end grestore % 42 -> 14 newpath 1740 287 moveto 1730 277 1717 264 1705 252 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1708 250 moveto 1698 245 lineto 1703 255 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1708 250 moveto 1698 245 lineto 1703 255 lineto closepath stroke end grestore % 43 gsave 10 dict begin 1467 230 27 18 ellipse_path stroke gsave 10 dict begin 1467 225 moveto 15 -0.5 (43) alignedtext end grestore end grestore % 43 -> 24 newpath 1467 212 moveto 1467 204 1467 195 1467 186 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1471 186 moveto 1467 176 lineto 1464 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1471 186 moveto 1467 176 lineto 1464 186 lineto closepath stroke end grestore % 44 gsave 10 dict begin 603 446 27 18 ellipse_path stroke gsave 10 dict begin 603 441 moveto 16 -0.5 (44) alignedtext end grestore end grestore % 44 -> 35 newpath 603 428 moveto 603 420 603 411 603 402 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 607 402 moveto 603 392 lineto 600 402 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 607 402 moveto 603 392 lineto 600 402 lineto closepath stroke end grestore % 45 gsave 10 dict begin 1179 374 27 18 ellipse_path stroke gsave 10 dict begin 1179 369 moveto 15 -0.5 (45) alignedtext end grestore end grestore % 45 -> 41 newpath 1194 359 moveto 1204 349 1217 336 1229 324 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1231 327 moveto 1236 317 lineto 1226 322 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1231 327 moveto 1236 317 lineto 1226 322 lineto closepath stroke end grestore % 46 gsave 10 dict begin 603 518 27 18 ellipse_path stroke gsave 10 dict begin 603 513 moveto 16 -0.5 (46) alignedtext end grestore end grestore % 46 -> 44 newpath 603 500 moveto 603 492 603 483 603 474 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 607 474 moveto 603 464 lineto 600 474 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 607 474 moveto 603 464 lineto 600 474 lineto closepath stroke end grestore % 47 gsave 10 dict begin 1323 302 27 18 ellipse_path stroke gsave 10 dict begin 1323 297 moveto 16 -0.5 (47) alignedtext end grestore end grestore % 47 -> 22 newpath 1323 284 moveto 1323 276 1323 267 1323 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1327 258 moveto 1323 248 lineto 1320 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1327 258 moveto 1323 248 lineto 1320 258 lineto closepath stroke end grestore % 48 gsave 10 dict begin 963 230 27 18 ellipse_path stroke gsave 10 dict begin 963 225 moveto 15 -0.5 (48) alignedtext end grestore end grestore % 48 -> 4 newpath 948 215 moveto 938 205 925 192 913 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 916 178 moveto 906 173 lineto 911 183 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 916 178 moveto 906 173 lineto 911 183 lineto closepath stroke end grestore % 49 gsave 10 dict begin 171 518 27 18 ellipse_path stroke gsave 10 dict begin 171 513 moveto 16 -0.5 (49) alignedtext end grestore end grestore % 49 -> 27 newpath 171 500 moveto 171 492 171 483 171 474 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 175 474 moveto 171 464 lineto 168 474 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 175 474 moveto 171 464 lineto 168 474 lineto closepath stroke end grestore % 50 gsave 10 dict begin 459 302 27 18 ellipse_path stroke gsave 10 dict begin 459 297 moveto 15 -0.5 (50) alignedtext end grestore end grestore % 50 -> 7 newpath 468 285 moveto 472 276 477 266 482 256 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 485 258 moveto 486 247 lineto 479 255 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 485 258 moveto 486 247 lineto 479 255 lineto closepath stroke end grestore % 51 gsave 10 dict begin 1539 230 27 18 ellipse_path stroke gsave 10 dict begin 1539 225 moveto 12 -0.5 (51) alignedtext end grestore end grestore % 51 -> 29 newpath 1539 212 moveto 1539 204 1539 195 1539 186 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1543 186 moveto 1539 176 lineto 1536 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1543 186 moveto 1539 176 lineto 1536 186 lineto closepath stroke end grestore % 52 gsave 10 dict begin 1737 374 27 18 ellipse_path stroke gsave 10 dict begin 1737 369 moveto 15 -0.5 (52) alignedtext end grestore end grestore % 52 -> 42 newpath 1741 356 moveto 1743 348 1746 339 1748 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1751 331 moveto 1751 320 lineto 1745 329 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1751 331 moveto 1751 320 lineto 1745 329 lineto closepath stroke end grestore % 53 gsave 10 dict begin 1611 230 27 18 ellipse_path stroke gsave 10 dict begin 1611 225 moveto 14 -0.5 (53) alignedtext end grestore end grestore % 53 -> 29 newpath 1596 215 moveto 1586 205 1573 192 1561 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1564 178 moveto 1554 173 lineto 1559 183 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1564 178 moveto 1554 173 lineto 1559 183 lineto closepath stroke end grestore % 54 gsave 10 dict begin 1467 302 27 18 ellipse_path stroke gsave 10 dict begin 1467 297 moveto 15 -0.5 (54) alignedtext end grestore end grestore % 54 -> 43 newpath 1467 284 moveto 1467 276 1467 267 1467 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1471 258 moveto 1467 248 lineto 1464 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1471 258 moveto 1467 248 lineto 1464 258 lineto closepath stroke end grestore % 55 gsave 10 dict begin 1035 230 27 18 ellipse_path stroke gsave 10 dict begin 1035 225 moveto 14 -0.5 (55) alignedtext end grestore end grestore % 55 -> 5 newpath 1044 213 moveto 1048 204 1053 194 1058 184 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1061 186 moveto 1062 175 lineto 1055 183 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1061 186 moveto 1062 175 lineto 1055 183 lineto closepath stroke end grestore % 56 gsave 10 dict begin 1899 230 27 18 ellipse_path stroke gsave 10 dict begin 1899 225 moveto 15 -0.5 (56) alignedtext end grestore end grestore % 56 -> 12 newpath 1884 215 moveto 1874 205 1861 192 1849 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1852 178 moveto 1842 173 lineto 1847 183 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1852 178 moveto 1842 173 lineto 1847 183 lineto closepath stroke end grestore % 57 gsave 10 dict begin 1251 374 27 18 ellipse_path stroke gsave 10 dict begin 1251 369 moveto 15 -0.5 (57) alignedtext end grestore end grestore % 57 -> 41 newpath 1251 356 moveto 1251 348 1251 339 1251 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1255 330 moveto 1251 320 lineto 1248 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1255 330 moveto 1251 320 lineto 1248 330 lineto closepath stroke end grestore % 58 gsave 10 dict begin 819 302 27 18 ellipse_path stroke gsave 10 dict begin 819 297 moveto 14 -0.5 (58) alignedtext end grestore end grestore % 58 -> 23 newpath 804 287 moveto 794 277 781 264 769 252 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 772 250 moveto 762 245 lineto 767 255 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 772 250 moveto 762 245 lineto 767 255 lineto closepath stroke end grestore % 59 gsave 10 dict begin 2115 158 27 18 ellipse_path stroke gsave 10 dict begin 2115 153 moveto 15 -0.5 (59) alignedtext end grestore end grestore % 59 -> 15 newpath 2124 141 moveto 2128 132 2133 122 2138 112 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 2141 114 moveto 2142 103 lineto 2135 111 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 2141 114 moveto 2142 103 lineto 2135 111 lineto closepath stroke end grestore % 60 gsave 10 dict begin 1863 302 27 18 ellipse_path stroke gsave 10 dict begin 1863 297 moveto 15 -0.5 (60) alignedtext end grestore end grestore % 60 -> 34 newpath 1854 285 moveto 1850 276 1845 266 1840 256 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1843 255 moveto 1836 247 lineto 1837 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1843 255 moveto 1836 247 lineto 1837 258 lineto closepath stroke end grestore % 61 gsave 10 dict begin 2115 230 27 18 ellipse_path stroke gsave 10 dict begin 2115 225 moveto 12 -0.5 (61) alignedtext end grestore end grestore % 61 -> 59 newpath 2115 212 moveto 2115 204 2115 195 2115 186 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 2119 186 moveto 2115 176 lineto 2112 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 2119 186 moveto 2115 176 lineto 2112 186 lineto closepath stroke end grestore % 62 gsave 10 dict begin 1971 158 27 18 ellipse_path stroke gsave 10 dict begin 1971 153 moveto 16 -0.5 (62) alignedtext end grestore end grestore % 62 -> 9 newpath 1956 143 moveto 1946 133 1933 120 1921 108 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1924 106 moveto 1914 101 lineto 1919 111 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1924 106 moveto 1914 101 lineto 1919 111 lineto closepath stroke end grestore % 63 gsave 10 dict begin 1035 302 27 18 ellipse_path stroke gsave 10 dict begin 1035 297 moveto 15 -0.5 (63) alignedtext end grestore end grestore % 63 -> 55 newpath 1035 284 moveto 1035 276 1035 267 1035 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1039 258 moveto 1035 248 lineto 1032 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1039 258 moveto 1035 248 lineto 1032 258 lineto closepath stroke end grestore % 64 gsave 10 dict begin 1107 230 27 18 ellipse_path stroke gsave 10 dict begin 1107 225 moveto 16 -0.5 (64) alignedtext end grestore end grestore % 64 -> 5 newpath 1098 213 moveto 1094 204 1089 194 1084 184 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1087 183 moveto 1080 175 lineto 1081 186 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1087 183 moveto 1080 175 lineto 1081 186 lineto closepath stroke end grestore % 65 gsave 10 dict begin 2043 158 27 18 ellipse_path stroke gsave 10 dict begin 2043 153 moveto 15 -0.5 (65) alignedtext end grestore end grestore % 65 -> 9 newpath 2021 147 moveto 1997 134 1957 115 1930 101 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1932 98 moveto 1921 97 lineto 1929 104 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1932 98 moveto 1921 97 lineto 1929 104 lineto closepath stroke end grestore % 66 gsave 10 dict begin 459 518 27 18 ellipse_path stroke gsave 10 dict begin 459 513 moveto 15 -0.5 (66) alignedtext end grestore end grestore % 66 -> 39 newpath 459 500 moveto 459 492 459 483 459 474 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 463 474 moveto 459 464 lineto 456 474 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 463 474 moveto 459 464 lineto 456 474 lineto closepath stroke end grestore % 67 gsave 10 dict begin 2331 158 27 18 ellipse_path stroke gsave 10 dict begin 2331 153 moveto 15 -0.5 (67) alignedtext end grestore end grestore % 67 -> 32 newpath 2322 141 moveto 2318 132 2313 122 2308 112 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 2311 111 moveto 2304 103 lineto 2305 114 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 2311 111 moveto 2304 103 lineto 2305 114 lineto closepath stroke end grestore % 68 gsave 10 dict begin 531 446 27 18 ellipse_path stroke gsave 10 dict begin 531 441 moveto 15 -0.5 (68) alignedtext end grestore end grestore % 68 -> 25 newpath 512 433 moveto 495 422 470 405 450 393 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 452 390 moveto 442 387 lineto 448 396 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 452 390 moveto 442 387 lineto 448 396 lineto closepath stroke end grestore % 69 gsave 10 dict begin 1971 230 27 18 ellipse_path stroke gsave 10 dict begin 1971 225 moveto 15 -0.5 (69) alignedtext end grestore end grestore % 69 -> 18 newpath 1956 215 moveto 1946 205 1933 192 1921 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1924 178 moveto 1914 173 lineto 1919 183 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1924 178 moveto 1914 173 lineto 1919 183 lineto closepath stroke end grestore % 70 gsave 10 dict begin 999 374 27 18 ellipse_path stroke gsave 10 dict begin 999 369 moveto 15 -0.5 (70) alignedtext end grestore end grestore % 70 -> 63 newpath 1008 357 moveto 1012 348 1017 338 1022 328 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1025 330 moveto 1026 319 lineto 1019 327 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1025 330 moveto 1026 319 lineto 1019 327 lineto closepath stroke end grestore % 71 gsave 10 dict begin 603 590 27 18 ellipse_path stroke gsave 10 dict begin 603 585 moveto 12 -0.5 (71) alignedtext end grestore end grestore % 71 -> 46 newpath 603 572 moveto 603 564 603 555 603 546 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 607 546 moveto 603 536 lineto 600 546 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 607 546 moveto 603 536 lineto 600 546 lineto closepath stroke end grestore % 72 gsave 10 dict begin 531 518 27 18 ellipse_path stroke gsave 10 dict begin 531 513 moveto 16 -0.5 (72) alignedtext end grestore end grestore % 72 -> 68 newpath 531 500 moveto 531 492 531 483 531 474 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 535 474 moveto 531 464 lineto 528 474 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 535 474 moveto 531 464 lineto 528 474 lineto closepath stroke end grestore % 73 gsave 10 dict begin 1179 230 27 18 ellipse_path stroke gsave 10 dict begin 1179 225 moveto 15 -0.5 (73) alignedtext end grestore end grestore % 73 -> 5 newpath 1160 217 moveto 1143 206 1118 189 1098 177 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1100 174 moveto 1090 171 lineto 1096 180 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1100 174 moveto 1090 171 lineto 1096 180 lineto closepath stroke end grestore % 74 gsave 10 dict begin 423 590 27 18 ellipse_path stroke gsave 10 dict begin 423 585 moveto 16 -0.5 (74) alignedtext end grestore end grestore % 74 -> 66 newpath 432 573 moveto 436 564 441 554 446 544 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 449 546 moveto 450 535 lineto 443 543 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 449 546 moveto 450 535 lineto 443 543 lineto closepath stroke end grestore % 75 gsave 10 dict begin 531 302 27 18 ellipse_path stroke gsave 10 dict begin 531 297 moveto 15 -0.5 (75) alignedtext end grestore end grestore % 75 -> 7 newpath 522 285 moveto 518 276 513 266 508 256 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 511 255 moveto 504 247 lineto 505 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 511 255 moveto 504 247 lineto 505 258 lineto closepath stroke end grestore % 76 gsave 10 dict begin 387 446 27 18 ellipse_path stroke gsave 10 dict begin 387 441 moveto 15 -0.5 (76) alignedtext end grestore end grestore % 76 -> 21 newpath 372 431 moveto 362 421 349 408 337 396 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 340 394 moveto 330 389 lineto 335 399 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 340 394 moveto 330 389 lineto 335 399 lineto closepath stroke end grestore % 77 gsave 10 dict begin 567 662 27 18 ellipse_path stroke gsave 10 dict begin 567 657 moveto 15 -0.5 (77) alignedtext end grestore end grestore % 77 -> 71 newpath 576 645 moveto 580 636 585 626 590 616 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 593 618 moveto 594 607 lineto 587 615 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 593 618 moveto 594 607 lineto 587 615 lineto closepath stroke end grestore % 78 gsave 10 dict begin 1539 302 27 18 ellipse_path stroke gsave 10 dict begin 1539 297 moveto 15 -0.5 (78) alignedtext end grestore end grestore % 78 -> 51 newpath 1539 284 moveto 1539 276 1539 267 1539 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1543 258 moveto 1539 248 lineto 1536 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1543 258 moveto 1539 248 lineto 1536 258 lineto closepath stroke end grestore % 79 gsave 10 dict begin 1071 374 27 18 ellipse_path stroke gsave 10 dict begin 1071 369 moveto 15 -0.5 (79) alignedtext end grestore end grestore % 79 -> 63 newpath 1062 357 moveto 1058 348 1053 338 1048 328 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1051 327 moveto 1044 319 lineto 1045 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1051 327 moveto 1044 319 lineto 1045 330 lineto closepath stroke end grestore % 80 gsave 10 dict begin 1611 302 27 18 ellipse_path stroke gsave 10 dict begin 1611 297 moveto 15 -0.5 (80) alignedtext end grestore end grestore % 80 -> 51 newpath 1596 287 moveto 1586 277 1573 264 1561 252 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1564 250 moveto 1554 245 lineto 1559 255 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1564 250 moveto 1554 245 lineto 1559 255 lineto closepath stroke end grestore % 81 gsave 10 dict begin 2187 158 27 18 ellipse_path stroke gsave 10 dict begin 2187 153 moveto 11 -0.5 (81) alignedtext end grestore end grestore % 81 -> 15 newpath 2178 141 moveto 2174 132 2169 122 2164 112 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 2167 111 moveto 2160 103 lineto 2161 114 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 2167 111 moveto 2160 103 lineto 2161 114 lineto closepath stroke end grestore % 82 gsave 10 dict begin 639 662 27 18 ellipse_path stroke gsave 10 dict begin 639 657 moveto 15 -0.5 (82) alignedtext end grestore end grestore % 82 -> 71 newpath 630 645 moveto 626 636 621 626 616 616 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 619 615 moveto 612 607 lineto 613 618 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 619 615 moveto 612 607 lineto 613 618 lineto closepath stroke end grestore % 83 gsave 10 dict begin 1251 230 27 18 ellipse_path stroke gsave 10 dict begin 1251 225 moveto 14 -0.5 (83) alignedtext end grestore end grestore % 83 -> 8 newpath 1232 217 moveto 1215 206 1190 189 1170 177 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1172 174 moveto 1162 171 lineto 1168 180 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1172 174 moveto 1162 171 lineto 1168 180 lineto closepath stroke end grestore % 84 gsave 10 dict begin 1539 374 27 18 ellipse_path stroke gsave 10 dict begin 1539 369 moveto 15 -0.5 (84) alignedtext end grestore end grestore % 84 -> 78 newpath 1539 356 moveto 1539 348 1539 339 1539 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1543 330 moveto 1539 320 lineto 1536 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1543 330 moveto 1539 320 lineto 1536 330 lineto closepath stroke end grestore % 85 gsave 10 dict begin 27 446 27 18 ellipse_path stroke gsave 10 dict begin 27 441 moveto 14 -0.5 (85) alignedtext end grestore end grestore % 85 -> 19 newpath 42 431 moveto 52 421 65 408 77 396 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 79 399 moveto 84 389 lineto 74 394 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 79 399 moveto 84 389 lineto 74 394 lineto closepath stroke end grestore % 86 gsave 10 dict begin 1809 374 27 18 ellipse_path stroke gsave 10 dict begin 1809 369 moveto 15 -0.5 (86) alignedtext end grestore end grestore % 86 -> 42 newpath 1797 358 moveto 1790 349 1781 337 1773 326 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1776 324 moveto 1767 318 lineto 1770 328 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1776 324 moveto 1767 318 lineto 1770 328 lineto closepath stroke end grestore % 87 gsave 10 dict begin 1665 374 27 18 ellipse_path stroke gsave 10 dict begin 1665 369 moveto 15 -0.5 (87) alignedtext end grestore end grestore % 87 -> 33 newpath 1669 356 moveto 1671 348 1674 339 1676 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1679 331 moveto 1679 320 lineto 1673 329 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1679 331 moveto 1679 320 lineto 1673 329 lineto closepath stroke end grestore % 88 gsave 10 dict begin 1323 374 27 18 ellipse_path stroke gsave 10 dict begin 1323 369 moveto 14 -0.5 (88) alignedtext end grestore end grestore % 88 -> 41 newpath 1308 359 moveto 1298 349 1285 336 1273 324 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1276 322 moveto 1266 317 lineto 1271 327 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1276 322 moveto 1266 317 lineto 1271 327 lineto closepath stroke end grestore % 89 gsave 10 dict begin 2043 230 27 18 ellipse_path stroke gsave 10 dict begin 2043 225 moveto 14 -0.5 (89) alignedtext end grestore end grestore % 89 -> 62 newpath 2028 215 moveto 2018 205 2005 192 1993 180 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1996 178 moveto 1986 173 lineto 1991 183 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1996 178 moveto 1986 173 lineto 1991 183 lineto closepath stroke end grestore % 90 gsave 10 dict begin 1881 374 27 18 ellipse_path stroke gsave 10 dict begin 1881 369 moveto 15 -0.5 (90) alignedtext end grestore end grestore % 90 -> 60 newpath 1877 356 moveto 1875 348 1872 339 1870 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1873 329 moveto 1867 320 lineto 1867 331 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1873 329 moveto 1867 320 lineto 1867 331 lineto closepath stroke end grestore % 91 gsave 10 dict begin 819 374 27 18 ellipse_path stroke gsave 10 dict begin 819 369 moveto 12 -0.5 (91) alignedtext end grestore end grestore % 91 -> 58 newpath 819 356 moveto 819 348 819 339 819 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 823 330 moveto 819 320 lineto 816 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 823 330 moveto 819 320 lineto 816 330 lineto closepath stroke end grestore % 92 gsave 10 dict begin 495 590 27 18 ellipse_path stroke gsave 10 dict begin 495 585 moveto 15 -0.5 (92) alignedtext end grestore end grestore % 92 -> 66 newpath 486 573 moveto 482 564 477 554 472 544 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 475 543 moveto 468 535 lineto 469 546 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 475 543 moveto 468 535 lineto 469 546 lineto closepath stroke end grestore % 93 gsave 10 dict begin 675 302 27 18 ellipse_path stroke gsave 10 dict begin 675 297 moveto 14 -0.5 (93) alignedtext end grestore end grestore % 93 -> 13 newpath 675 284 moveto 675 276 675 267 675 258 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 679 258 moveto 675 248 lineto 672 258 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 679 258 moveto 675 248 lineto 672 258 lineto closepath stroke end grestore % 94 gsave 10 dict begin 99 446 27 18 ellipse_path stroke gsave 10 dict begin 99 441 moveto 16 -0.5 (94) alignedtext end grestore end grestore % 94 -> 19 newpath 99 428 moveto 99 420 99 411 99 402 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 103 402 moveto 99 392 lineto 96 402 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 103 402 moveto 99 392 lineto 96 402 lineto closepath stroke end grestore % 95 gsave 10 dict begin 747 302 27 18 ellipse_path stroke gsave 10 dict begin 747 297 moveto 15 -0.5 (95) alignedtext end grestore end grestore % 95 -> 13 newpath 732 287 moveto 722 277 709 264 697 252 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 700 250 moveto 690 245 lineto 695 255 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 700 250 moveto 690 245 lineto 695 255 lineto closepath stroke end grestore % 96 gsave 10 dict begin 2259 158 27 18 ellipse_path stroke gsave 10 dict begin 2259 153 moveto 15 -0.5 (96) alignedtext end grestore end grestore % 96 -> 15 newpath 2240 145 moveto 2223 134 2198 117 2178 105 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 2180 102 moveto 2170 99 lineto 2176 108 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 2180 102 moveto 2170 99 lineto 2176 108 lineto closepath stroke end grestore % 97 gsave 10 dict begin 1071 446 27 18 ellipse_path stroke gsave 10 dict begin 1071 441 moveto 15 -0.5 (97) alignedtext end grestore end grestore % 97 -> 79 newpath 1071 428 moveto 1071 420 1071 411 1071 402 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1075 402 moveto 1071 392 lineto 1068 402 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1075 402 moveto 1071 392 lineto 1068 402 lineto closepath stroke end grestore % 98 gsave 10 dict begin 1467 374 27 18 ellipse_path stroke gsave 10 dict begin 1467 369 moveto 14 -0.5 (98) alignedtext end grestore end grestore % 98 -> 54 newpath 1467 356 moveto 1467 348 1467 339 1467 330 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1471 330 moveto 1467 320 lineto 1464 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1471 330 moveto 1467 320 lineto 1464 330 lineto closepath stroke end grestore % 99 gsave 10 dict begin 1683 158 27 18 ellipse_path stroke gsave 10 dict begin 1683 153 moveto 15 -0.5 (99) alignedtext end grestore end grestore % 99 -> 6 newpath 1664 145 moveto 1647 134 1622 117 1602 105 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 1604 102 moveto 1594 99 lineto 1600 108 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 1604 102 moveto 1594 99 lineto 1600 108 lineto closepath stroke end grestore % 100 gsave 10 dict begin 495 374 27 18 ellipse_path stroke gsave 10 dict begin 495 369 moveto 20 -0.5 (100) alignedtext end grestore end grestore % 100 -> 50 newpath 486 357 moveto 482 348 477 338 472 328 curveto stroke gsave 10 dict begin solid 1 setlinewidth 0.000 0.000 0.000 edgecolor newpath 475 327 moveto 468 319 lineto 469 330 lineto closepath fill 0.000 0.000 0.000 edgecolor newpath 475 327 moveto 468 319 lineto 469 330 lineto closepath stroke end grestore endpage showpage grestore %%PageTrailer %%EndPage: 1 %%Trailer %%Pages: 1 end restore %%EOF %%EndDocument @endspecial 511 3262 a Fq(Figur)o(e)d(3.2:)28 b(The)19 b(graph)h(shows)g(which)g(key)g(was)f(signed)g(by)g(which)h(key)g(for)f (the)g(\002rst)h(100)g(keys.)f(The)511 3367 y(r)o(oot)g(node)f(is)h(at) g(the)g(bottom.)565 3580 y Fz(Another)d(thing)i(that)e(contributes)h (to)g(keeping)f(the)h(number)f(of)h(r)o(etrieved)d(keys)j(con-)440 3695 y(stant)28 b(is)g(that)f(as)g(the)h(tr)o(ee)e(gr)o(ows)i(in)g (size,)f(the)g(height)i(is)f(likely)g(to)f(only)i(gr)o(ow)e(about)440 3810 y(logarithmically)-9 b(.)22 b(Figur)o(e)g(3.3)f(shows)i(the)f(raw) g(data)f(that)g(Figur)o(e)h(3.1)f(is)h(based)f(on,)i(and)440 3924 y(evidently)18 b(ther)o(e)g(ar)o(e)f(minor)j(variations)e(fr)o(om) g(the)h(constant)g(tendency)f(fr)o(om)g(long,)h(but)440 4039 y(not)i(very)g(long,)g(signing)i(paths.)565 4153 y(A)18 b(test)h(with)g(5000)e(key)h(blocks)i(was)e(also)h(conducted)g (to)g(see)f(if)h(the)f(tr)o(end)g(continues)440 4268 y(for)27 b(mor)o(e)f(users.)h(The)g(r)o(esult)f(is)i(shown)g(in)f (Figur)o(e)g(3.4)e(and)i(con\002rm)h(what)f(has)g(been)440 4382 y(observed.)440 4643 y Fp(3.3.2)99 b(Overhead)24 b(of)h(Data)g(Block)h(Access)f(Control)440 4816 y Fz(The)17 b(purpose)f(of)h(this)h(test)e(is)i(to)f(examine)f(the)h(number)g(of)g (keys)g(that)f(must)i(be)e(r)o(etrieved)440 4930 y(to)29 b(authenticate)g(a)g(data)e(block)j(over)f(time)g(when)h(mor)o(e)f(and) f(mor)o(e)h(data)f(blocks)i(ar)o(e)440 5045 y(written.)19 b(The)f(keys)h(that)f(must)h(be)g(r)o(etrieved)d(stem)j(fr)o(om)f(the)h (signatur)o(es)f(on)h(the)g(access)440 5159 y(contr)o(ol)k(lists)f(and) g(the)g(signatur)o(e)g(on)h(the)f(block)h(itself,)f(as)g(well)g(as)g (the)g(keys)h(that)f(must)440 5274 y(be)e(r)o(etrieved)f(r)o (ecursively)h(to)h(authenticate)g(the)g(keys)g(used)f(for)h(the)g (signatur)o(es.)565 5388 y(W)-8 b(e)32 b(expect)f(that)h(the)g(number)g (of)g(keys)g(r)o(etrieved)e(will)i(decr)o(ease)e(as)i(mor)o(e)f(data) 1831 5662 y(53)p eop %%Page: 54 56 54 55 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 512 2487 a @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2267 @rhi @setspecial %%BeginDocument: test/images/adding-full.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out.eps %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Thu Dec 16 11:14:20 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 630 420 M 63 0 V 6269 0 R -63 0 V 546 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 630 1162 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 5) Rshow grestore 1.000 UL LTb 630 1904 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 10) Rshow grestore 1.000 UL LTb 630 2646 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 15) Rshow grestore 1.000 UL LTb 630 3388 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 20) Rshow grestore 1.000 UL LTb 630 4130 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 25) Rshow grestore 1.000 UL LTb 630 4872 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 30) Rshow grestore 1.000 UL LTb 630 420 M 0 63 V 0 4389 R 0 -63 V 630 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1263 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 200) Cshow grestore 1.000 UL LTb 1896 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 400) Cshow grestore 1.000 UL LTb 2530 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 600) Cshow grestore 1.000 UL LTb 3163 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 800) Cshow grestore 1.000 UL LTb 3796 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1000) Cshow grestore 1.000 UL LTb 4429 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1200) Cshow grestore 1.000 UL LTb 5062 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1400) Cshow grestore 1.000 UL LTb 5696 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1600) Cshow grestore 1.000 UL LTb 6329 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1800) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2000) Cshow grestore 1.000 UL LTb 1.000 UL LTb 630 420 M 6332 0 V 0 4452 V -6332 0 V 630 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Keys fetched \(avg.\)) Cshow grestore grestore LTb 3796 70 M gsave 0 setgray (User keys added) Cshow grestore 1.000 UP 1.000 UP 1.000 UL LT2 630 420 Dia 633 420 Dia 636 568 Dia 639 717 Dia 643 568 Dia 646 420 Dia 649 717 Dia 652 717 Dia 655 865 Dia 658 1014 Dia 662 568 Dia 665 865 Dia 668 717 Dia 671 568 Dia 674 1014 Dia 677 1014 Dia 681 628 Dia 684 717 Dia 687 1162 Dia 690 717 Dia 693 420 Dia 696 865 Dia 700 865 Dia 703 717 Dia 706 1162 Dia 709 1162 Dia 712 865 Dia 715 776 Dia 719 717 Dia 722 1162 Dia 725 865 Dia 728 865 Dia 731 865 Dia 734 865 Dia 738 865 Dia 741 1014 Dia 744 1014 Dia 747 1014 Dia 750 1014 Dia 753 865 Dia 757 1310 Dia 760 746 Dia 763 865 Dia 766 1014 Dia 769 1014 Dia 772 1162 Dia 776 568 Dia 779 1281 Dia 782 1014 Dia 785 1310 Dia 788 687 Dia 791 1014 Dia 795 479 Dia 798 776 Dia 801 1014 Dia 804 1014 Dia 807 1162 Dia 810 1438 Dia 814 1781 Dia 817 568 Dia 820 1162 Dia 823 1014 Dia 826 865 Dia 829 1014 Dia 833 717 Dia 836 1162 Dia 839 1014 Dia 842 1162 Dia 845 1014 Dia 848 717 Dia 852 1014 Dia 855 865 Dia 858 568 Dia 861 1310 Dia 864 776 Dia 867 1014 Dia 871 865 Dia 874 1459 Dia 877 1162 Dia 880 1395 Dia 883 1014 Dia 886 717 Dia 890 865 Dia 893 1014 Dia 896 1162 Dia 899 1073 Dia 902 1904 Dia 905 1014 Dia 909 1162 Dia 912 1459 Dia 915 1014 Dia 918 717 Dia 921 1162 Dia 924 1310 Dia 928 1310 Dia 931 836 Dia 934 1014 Dia 937 568 Dia 940 1073 Dia 943 895 Dia 947 1132 Dia 950 1607 Dia 953 1607 Dia 956 865 Dia 959 1310 Dia 962 754 Dia 966 3042 Dia 969 984 Dia 972 836 Dia 975 1014 Dia 978 1014 Dia 981 1073 Dia 985 717 Dia 988 717 Dia 991 568 Dia 994 717 Dia 997 865 Dia 1000 1043 Dia 1004 420 Dia 1007 1103 Dia 1010 717 Dia 1013 895 Dia 1016 1162 Dia 1019 1162 Dia 1023 1073 Dia 1026 746 Dia 1029 1533 Dia 1032 954 Dia 1035 717 Dia 1038 865 Dia 1042 1162 Dia 1045 717 Dia 1048 1014 Dia 1051 865 Dia 1054 1162 Dia 1057 1162 Dia 1061 806 Dia 1064 420 Dia 1067 1014 Dia 1070 1014 Dia 1073 1103 Dia 1076 1399 Dia 1080 865 Dia 1083 1310 Dia 1086 1251 Dia 1089 1132 Dia 1092 895 Dia 1095 568 Dia 1099 717 Dia 1102 1459 Dia 1105 865 Dia 1108 717 Dia 1111 568 Dia 1114 1192 Dia 1118 568 Dia 1121 1014 Dia 1124 1310 Dia 1127 568 Dia 1130 865 Dia 1133 717 Dia 1137 717 Dia 1140 1607 Dia 1143 1310 Dia 1146 717 Dia 1149 1162 Dia 1152 1429 Dia 1156 865 Dia 1159 1162 Dia 1162 1607 Dia 1165 984 Dia 1168 865 Dia 1171 568 Dia 1175 1637 Dia 1178 2720 Dia 1181 1043 Dia 1184 1429 Dia 1187 1014 Dia 1190 420 Dia 1194 1667 Dia 1197 1162 Dia 1200 865 Dia 1203 865 Dia 1206 1162 Dia 1209 1310 Dia 1213 568 Dia 1216 1830 Dia 1219 568 Dia 1222 836 Dia 1225 1014 Dia 1228 1310 Dia 1232 746 Dia 1235 865 Dia 1238 806 Dia 1241 1014 Dia 1244 568 Dia 1247 1014 Dia 1251 1014 Dia 1254 717 Dia 1257 1558 Dia 1260 776 Dia 1263 865 Dia 1266 628 Dia 1270 954 Dia 1273 1459 Dia 1276 1459 Dia 1279 1014 Dia 1282 1251 Dia 1285 717 Dia 1289 717 Dia 1292 1162 Dia 1295 1162 Dia 1298 1162 Dia 1301 865 Dia 1304 806 Dia 1308 1014 Dia 1311 1014 Dia 1314 717 Dia 1317 1785 Dia 1320 717 Dia 1323 925 Dia 1327 1014 Dia 1330 1014 Dia 1333 865 Dia 1336 865 Dia 1339 1162 Dia 1342 1014 Dia 1346 657 Dia 1349 1756 Dia 1352 865 Dia 1355 1162 Dia 1358 1607 Dia 1361 925 Dia 1365 1014 Dia 1368 1103 Dia 1371 717 Dia 1374 717 Dia 1377 1073 Dia 1380 1162 Dia 1384 1459 Dia 1387 1251 Dia 1390 1043 Dia 1393 687 Dia 1396 1399 Dia 1399 1310 Dia 1403 1043 Dia 1406 1162 Dia 1409 1459 Dia 1412 1014 Dia 1415 954 Dia 1418 1310 Dia 1421 895 Dia 1425 1518 Dia 1428 865 Dia 1431 1043 Dia 1434 1043 Dia 1437 1014 Dia 1440 1459 Dia 1444 420 Dia 1447 568 Dia 1450 1459 Dia 1453 1310 Dia 1456 1578 Dia 1459 1192 Dia 1463 1637 Dia 1466 717 Dia 1469 717 Dia 1472 1459 Dia 1475 420 Dia 1478 1281 Dia 1482 568 Dia 1485 1205 Dia 1488 1607 Dia 1491 954 Dia 1494 1073 Dia 1497 1043 Dia 1501 1192 Dia 1504 1281 Dia 1507 717 Dia 1510 1014 Dia 1513 865 Dia 1516 1607 Dia 1520 1162 Dia 1523 598 Dia 1526 865 Dia 1529 1043 Dia 1532 1162 Dia 1535 865 Dia 1539 1014 Dia 1542 1756 Dia 1545 1014 Dia 1548 1221 Dia 1551 1014 Dia 1554 865 Dia 1558 746 Dia 1561 806 Dia 1564 1162 Dia 1567 836 Dia 1570 1014 Dia 1573 776 Dia 1577 1370 Dia 1580 717 Dia 1583 1310 Dia 1586 568 Dia 1589 568 Dia 1592 1162 Dia 1596 776 Dia 1599 1221 Dia 1602 1459 Dia 1605 1488 Dia 1608 717 Dia 1611 865 Dia 1615 1162 Dia 1618 836 Dia 1621 1073 Dia 1624 1221 Dia 1627 2127 Dia 1630 628 Dia 1634 687 Dia 1637 925 Dia 1640 865 Dia 1643 1221 Dia 1646 1162 Dia 1649 1310 Dia 1653 865 Dia 1656 717 Dia 1659 1310 Dia 1662 568 Dia 1665 1607 Dia 1668 717 Dia 1672 865 Dia 1675 1370 Dia 1678 717 Dia 1681 806 Dia 1684 865 Dia 1687 1726 Dia 1691 1429 Dia 1694 1132 Dia 1697 1014 Dia 1700 1132 Dia 1703 1582 Dia 1706 1459 Dia 1710 865 Dia 1713 1132 Dia 1716 1014 Dia 1719 2794 Dia 1722 539 Dia 1725 1310 Dia 1729 1014 Dia 1732 1162 Dia 1735 1014 Dia 1738 3413 Dia 1741 865 Dia 1744 1508 Dia 1748 1637 Dia 1751 836 Dia 1754 1162 Dia 1757 1014 Dia 1760 1014 Dia 1763 657 Dia 1767 568 Dia 1770 479 Dia 1773 1162 Dia 1776 1310 Dia 1779 925 Dia 1782 954 Dia 1786 717 Dia 1789 1014 Dia 1792 1043 Dia 1795 925 Dia 1798 776 Dia 1801 1162 Dia 1805 925 Dia 1808 717 Dia 1811 954 Dia 1814 865 Dia 1817 1014 Dia 1820 717 Dia 1824 865 Dia 1827 1989 Dia 1830 2009 Dia 1833 1014 Dia 1836 717 Dia 1839 1459 Dia 1843 865 Dia 1846 717 Dia 1849 925 Dia 1852 1667 Dia 1855 806 Dia 1858 1043 Dia 1862 1043 Dia 1865 717 Dia 1868 1459 Dia 1871 717 Dia 1874 1073 Dia 1877 717 Dia 1881 568 Dia 1884 1014 Dia 1887 954 Dia 1890 1073 Dia 1893 1607 Dia 1896 1310 Dia 1900 1014 Dia 1903 1014 Dia 1906 1883 Dia 1909 1162 Dia 1912 717 Dia 1915 1073 Dia 1919 717 Dia 1922 1459 Dia 1925 1192 Dia 1928 836 Dia 1931 746 Dia 1934 1281 Dia 1938 1162 Dia 1941 1073 Dia 1944 657 Dia 1947 1014 Dia 1950 865 Dia 1953 865 Dia 1957 1137 Dia 1960 1014 Dia 1963 776 Dia 1966 1162 Dia 1969 1014 Dia 1972 865 Dia 1976 1014 Dia 1979 539 Dia 1982 1014 Dia 1985 717 Dia 1988 865 Dia 1991 1459 Dia 1995 1310 Dia 1998 1162 Dia 2001 1073 Dia 2004 865 Dia 2007 1310 Dia 2010 954 Dia 2014 746 Dia 2017 865 Dia 2020 568 Dia 2023 1370 Dia 2026 717 Dia 2029 895 Dia 2033 568 Dia 2036 1014 Dia 2039 717 Dia 2042 925 Dia 2045 865 Dia 2048 717 Dia 2052 1785 Dia 2055 717 Dia 2058 1014 Dia 2061 1162 Dia 2064 1221 Dia 2067 1192 Dia 2071 717 Dia 2074 865 Dia 2077 717 Dia 2080 717 Dia 2083 1607 Dia 2086 1518 Dia 2090 657 Dia 2093 865 Dia 2096 568 Dia 2099 628 Dia 2102 1429 Dia 2105 776 Dia 2109 1162 Dia 2112 1518 Dia 2115 865 Dia 2118 776 Dia 2121 865 Dia 2124 865 Dia 2128 984 Dia 2131 1459 Dia 2134 1340 Dia 2137 1162 Dia 2140 717 Dia 2143 1162 Dia 2147 746 Dia 2150 1162 Dia 2153 568 Dia 2156 628 Dia 2159 1162 Dia 2162 925 Dia 2166 628 Dia 2169 1014 Dia 2172 1162 Dia 2175 865 Dia 2178 925 Dia 2181 984 Dia 2185 925 Dia 2188 836 Dia 2191 717 Dia 2194 1103 Dia 2197 1607 Dia 2200 865 Dia 2204 746 Dia 2207 865 Dia 2210 479 Dia 2213 1043 Dia 2216 568 Dia 2219 1162 Dia 2222 1014 Dia 2226 1162 Dia 2229 1310 Dia 2232 865 Dia 2235 628 Dia 2238 895 Dia 2241 865 Dia 2245 865 Dia 2248 717 Dia 2251 568 Dia 2254 420 Dia 2257 1162 Dia 2260 717 Dia 2264 776 Dia 2267 1221 Dia 2270 1073 Dia 2273 568 Dia 2276 865 Dia 2279 2219 Dia 2283 1607 Dia 2286 717 Dia 2289 717 Dia 2292 954 Dia 2295 1310 Dia 2298 806 Dia 2302 1162 Dia 2305 2285 Dia 2308 865 Dia 2311 1014 Dia 2314 1192 Dia 2317 1518 Dia 2321 865 Dia 2324 1014 Dia 2327 717 Dia 2330 1815 Dia 2333 1310 Dia 2336 1518 Dia 2340 1014 Dia 2343 895 Dia 2346 865 Dia 2349 954 Dia 2352 865 Dia 2355 865 Dia 2359 2070 Dia 2362 1162 Dia 2365 1310 Dia 2368 1340 Dia 2371 865 Dia 2374 568 Dia 2378 568 Dia 2381 628 Dia 2384 2052 Dia 2387 984 Dia 2390 717 Dia 2393 1014 Dia 2397 865 Dia 2400 717 Dia 2403 717 Dia 2406 836 Dia 2409 895 Dia 2412 1340 Dia 2416 925 Dia 2419 1014 Dia 2422 865 Dia 2425 1014 Dia 2428 865 Dia 2431 1162 Dia 2435 1221 Dia 2438 598 Dia 2441 1014 Dia 2444 1014 Dia 2447 895 Dia 2450 717 Dia 2454 776 Dia 2457 865 Dia 2460 1014 Dia 2463 450 Dia 2466 420 Dia 2469 598 Dia 2473 1488 Dia 2476 865 Dia 2479 568 Dia 2482 1014 Dia 2485 776 Dia 2488 865 Dia 2492 717 Dia 2495 479 Dia 2498 568 Dia 2501 865 Dia 2504 1310 Dia 2507 865 Dia 2511 1014 Dia 2514 420 Dia 2517 420 Dia 2520 1043 Dia 2523 1459 Dia 2526 568 Dia 2530 717 Dia 2533 568 Dia 2536 1310 Dia 2539 568 Dia 2542 1459 Dia 2545 865 Dia 2549 865 Dia 2552 1756 Dia 2555 865 Dia 2558 1644 Dia 2561 1251 Dia 2564 1310 Dia 2568 717 Dia 2571 1043 Dia 2574 1073 Dia 2577 1014 Dia 2580 568 Dia 2583 3214 Dia 2587 717 Dia 2590 1014 Dia 2593 1310 Dia 2596 1310 Dia 2599 1014 Dia 2602 1399 Dia 2606 1014 Dia 2609 1043 Dia 2612 628 Dia 2615 865 Dia 2618 717 Dia 2621 1310 Dia 2625 865 Dia 2628 925 Dia 2631 1162 Dia 2634 1340 Dia 2637 539 Dia 2640 895 Dia 2644 717 Dia 2647 598 Dia 2650 836 Dia 2653 746 Dia 2656 954 Dia 2659 1607 Dia 2663 1459 Dia 2666 776 Dia 2669 717 Dia 2672 1310 Dia 2675 1103 Dia 2678 865 Dia 2682 1310 Dia 2685 1014 Dia 2688 1310 Dia 2691 1340 Dia 2694 1014 Dia 2697 954 Dia 2701 1310 Dia 2704 1310 Dia 2707 1014 Dia 2710 568 Dia 2713 1162 Dia 2716 717 Dia 2720 1726 Dia 2723 1607 Dia 2726 865 Dia 2729 568 Dia 2732 420 Dia 2735 1162 Dia 2739 806 Dia 2742 1014 Dia 2745 568 Dia 2748 1162 Dia 2751 568 Dia 2754 687 Dia 2758 1310 Dia 2761 598 Dia 2764 1014 Dia 2767 1459 Dia 2770 687 Dia 2773 1756 Dia 2777 1459 Dia 2780 971 Dia 2783 717 Dia 2786 1607 Dia 2789 895 Dia 2792 1607 Dia 2796 746 Dia 2799 1014 Dia 2802 2837 Dia 2805 1014 Dia 2808 1192 Dia 2811 1578 Dia 2815 717 Dia 2818 568 Dia 2821 1162 Dia 2824 1162 Dia 2827 1073 Dia 2830 1014 Dia 2834 717 Dia 2837 717 Dia 2840 895 Dia 2843 687 Dia 2846 1459 Dia 2849 865 Dia 2853 1132 Dia 2856 1162 Dia 2859 1014 Dia 2862 1014 Dia 2865 984 Dia 2868 925 Dia 2872 1043 Dia 2875 717 Dia 2878 1459 Dia 2881 568 Dia 2884 420 Dia 2887 1014 Dia 2891 568 Dia 2894 865 Dia 2897 1192 Dia 2900 836 Dia 2903 1014 Dia 2906 1014 Dia 2910 865 Dia 2913 1014 Dia 2916 2869 Dia 2919 865 Dia 2922 1103 Dia 2925 1014 Dia 2929 1132 Dia 2932 1162 Dia 2935 865 Dia 2938 1014 Dia 2941 925 Dia 2944 1014 Dia 2948 1162 Dia 2951 717 Dia 2954 865 Dia 2957 717 Dia 2960 568 Dia 2963 568 Dia 2967 598 Dia 2970 1370 Dia 2973 717 Dia 2976 1073 Dia 2979 717 Dia 2982 1132 Dia 2986 1014 Dia 2989 1340 Dia 2992 865 Dia 2995 1607 Dia 2998 1370 Dia 3001 1805 Dia 3004 717 Dia 3008 1103 Dia 3011 568 Dia 3014 1340 Dia 3017 865 Dia 3020 865 Dia 3023 865 Dia 3027 1014 Dia 3030 1251 Dia 3033 420 Dia 3036 1162 Dia 3039 1340 Dia 3042 628 Dia 3046 1459 Dia 3049 1162 Dia 3052 1162 Dia 3055 568 Dia 3058 895 Dia 3061 984 Dia 3065 1310 Dia 3068 746 Dia 3071 1221 Dia 3074 1607 Dia 3077 865 Dia 3080 1310 Dia 3084 865 Dia 3087 1014 Dia 3090 1221 Dia 3093 865 Dia 3096 895 Dia 3099 2328 Dia 3103 865 Dia 3106 1192 Dia 3109 2201 Dia 3112 1488 Dia 3115 1132 Dia 3118 1162 Dia 3122 1281 Dia 3125 865 Dia 3128 1103 Dia 3131 1251 Dia 3134 687 Dia 3137 1251 Dia 3141 1132 Dia 3144 420 Dia 3147 1014 Dia 3150 984 Dia 3153 1340 Dia 3156 2423 Dia 3160 1014 Dia 3163 1162 Dia 3166 865 Dia 3169 420 Dia 3172 1459 Dia 3175 1192 Dia 3179 1459 Dia 3182 746 Dia 3185 836 Dia 3188 1459 Dia 3191 1014 Dia 3194 1904 Dia 3198 1281 Dia 3201 865 Dia 3204 865 Dia 3207 1014 Dia 3210 568 Dia 3213 1014 Dia 3217 568 Dia 3220 1043 Dia 3223 865 Dia 3226 1162 Dia 3229 1014 Dia 3232 925 Dia 3236 717 Dia 3239 568 Dia 3242 1162 Dia 3245 1861 Dia 3248 1014 Dia 3251 895 Dia 3255 1103 Dia 3258 1310 Dia 3261 865 Dia 3264 2925 Dia 3267 1162 Dia 3270 598 Dia 3274 865 Dia 3277 925 Dia 3280 717 Dia 3283 746 Dia 3286 1192 Dia 3289 1667 Dia 3293 925 Dia 3296 1607 Dia 3299 717 Dia 3302 1073 Dia 3305 954 Dia 3308 1162 Dia 3312 1459 Dia 3315 568 Dia 3318 717 Dia 3321 1162 Dia 3324 4155 Dia 3327 746 Dia 3331 1310 Dia 3334 984 Dia 3337 1370 Dia 3340 1073 Dia 3343 1607 Dia 3346 865 Dia 3350 1162 Dia 3353 1904 Dia 3356 717 Dia 3359 836 Dia 3362 717 Dia 3365 1162 Dia 3369 1370 Dia 3372 1162 Dia 3375 568 Dia 3378 1667 Dia 3381 1014 Dia 3384 1073 Dia 3388 1162 Dia 3391 1162 Dia 3394 1459 Dia 3397 1459 Dia 3400 717 Dia 3403 1073 Dia 3407 1281 Dia 3410 806 Dia 3413 895 Dia 3416 1162 Dia 3419 1162 Dia 3422 717 Dia 3426 1607 Dia 3429 1310 Dia 3432 1014 Dia 3435 865 Dia 3438 3351 Dia 3441 717 Dia 3445 1162 Dia 3448 598 Dia 3451 1518 Dia 3454 717 Dia 3457 1014 Dia 3460 865 Dia 3464 628 Dia 3467 865 Dia 3470 1336 Dia 3473 1162 Dia 3476 865 Dia 3479 1043 Dia 3483 598 Dia 3486 984 Dia 3489 1459 Dia 3492 1162 Dia 3495 1459 Dia 3498 1162 Dia 3502 865 Dia 3505 1785 Dia 3508 568 Dia 3511 717 Dia 3514 1014 Dia 3517 687 Dia 3521 1162 Dia 3524 1310 Dia 3527 865 Dia 3530 1459 Dia 3533 717 Dia 3536 1162 Dia 3540 1014 Dia 3543 1162 Dia 3546 1162 Dia 3549 1162 Dia 3552 1162 Dia 3555 895 Dia 3559 1399 Dia 3562 1014 Dia 3565 1014 Dia 3568 2413 Dia 3571 1162 Dia 3574 1310 Dia 3578 1310 Dia 3581 1162 Dia 3584 1459 Dia 3587 1310 Dia 3590 717 Dia 3593 1459 Dia 3597 1459 Dia 3600 925 Dia 3603 1014 Dia 3606 1459 Dia 3609 1785 Dia 3612 1488 Dia 3616 836 Dia 3619 1014 Dia 3622 895 Dia 3625 865 Dia 3628 2052 Dia 3631 1014 Dia 3635 895 Dia 3638 1310 Dia 3641 1014 Dia 3644 717 Dia 3647 836 Dia 3650 865 Dia 3654 717 Dia 3657 1904 Dia 3660 568 Dia 3663 568 Dia 3666 746 Dia 3669 2052 Dia 3673 1607 Dia 3676 865 Dia 3679 776 Dia 3682 717 Dia 3685 687 Dia 3688 717 Dia 3692 1607 Dia 3695 1192 Dia 3698 568 Dia 3701 1162 Dia 3704 1014 Dia 3707 1459 Dia 3711 1014 Dia 3714 776 Dia 3717 1073 Dia 3720 1310 Dia 3723 717 Dia 3726 420 Dia 3730 865 Dia 3733 1014 Dia 3736 717 Dia 3739 717 Dia 3742 925 Dia 3745 1162 Dia 3749 1162 Dia 3752 1192 Dia 3755 1459 Dia 3758 717 Dia 3761 717 Dia 3764 1310 Dia 3768 865 Dia 3771 1310 Dia 3774 568 Dia 3777 776 Dia 3780 1726 Dia 3783 865 Dia 3787 1310 Dia 3790 1162 Dia 3793 895 Dia 3796 717 Dia 3799 1103 Dia 3802 717 Dia 3805 1014 Dia 3809 836 Dia 3812 1014 Dia 3815 865 Dia 3818 717 Dia 3821 925 Dia 3824 598 Dia 3828 1162 Dia 3831 1162 Dia 3834 717 Dia 3837 1014 Dia 3840 984 Dia 3843 865 Dia 3847 1073 Dia 3850 865 Dia 3853 954 Dia 3856 925 Dia 3859 1014 Dia 3862 954 Dia 3866 865 Dia 3869 1756 Dia 3872 1281 Dia 3875 1459 Dia 3878 1637 Dia 3881 1162 Dia 3885 598 Dia 3888 1162 Dia 3891 628 Dia 3894 1162 Dia 3897 1014 Dia 3900 1310 Dia 3904 1756 Dia 3907 1014 Dia 3910 865 Dia 3913 1162 Dia 3916 865 Dia 3919 1310 Dia 3923 865 Dia 3926 865 Dia 3929 895 Dia 3932 717 Dia 3935 1162 Dia 3938 568 Dia 3942 1904 Dia 3945 746 Dia 3948 865 Dia 3951 420 Dia 3954 598 Dia 3957 717 Dia 3961 1667 Dia 3964 1162 Dia 3967 1726 Dia 3970 1014 Dia 3973 925 Dia 3976 1162 Dia 3980 1014 Dia 3983 717 Dia 3986 1310 Dia 3989 865 Dia 3992 2073 Dia 3995 1162 Dia 3999 1043 Dia 4002 1310 Dia 4005 1162 Dia 4008 1162 Dia 4011 628 Dia 4014 1014 Dia 4018 865 Dia 4021 568 Dia 4024 1162 Dia 4027 420 Dia 4030 1310 Dia 4033 1162 Dia 4037 865 Dia 4040 1162 Dia 4043 717 Dia 4046 776 Dia 4049 1310 Dia 4052 1014 Dia 4056 717 Dia 4059 836 Dia 4062 1162 Dia 4065 1162 Dia 4068 1132 Dia 4071 1014 Dia 4075 2158 Dia 4078 1014 Dia 4081 2541 Dia 4084 836 Dia 4087 1756 Dia 4090 954 Dia 4094 1310 Dia 4097 1221 Dia 4100 1805 Dia 4103 1162 Dia 4106 1014 Dia 4109 568 Dia 4113 598 Dia 4116 1162 Dia 4119 865 Dia 4122 865 Dia 4125 1014 Dia 4128 687 Dia 4132 2052 Dia 4135 1014 Dia 4138 717 Dia 4141 568 Dia 4144 806 Dia 4147 1192 Dia 4151 1014 Dia 4154 1162 Dia 4157 2003 Dia 4160 1132 Dia 4163 1310 Dia 4166 717 Dia 4170 1043 Dia 4173 746 Dia 4176 1014 Dia 4179 568 Dia 4182 1192 Dia 4185 865 Dia 4189 717 Dia 4192 1310 Dia 4195 1310 Dia 4198 746 Dia 4201 1162 Dia 4204 1162 Dia 4208 3611 Dia 4211 1310 Dia 4214 1518 Dia 4217 2052 Dia 4220 1014 Dia 4223 1162 Dia 4227 1162 Dia 4230 865 Dia 4233 1162 Dia 4236 1162 Dia 4239 836 Dia 4242 1904 Dia 4246 1488 Dia 4249 1548 Dia 4252 1310 Dia 4255 1014 Dia 4258 865 Dia 4261 1696 Dia 4265 865 Dia 4268 1162 Dia 4271 1014 Dia 4274 865 Dia 4277 568 Dia 4280 1014 Dia 4284 717 Dia 4287 1310 Dia 4290 1221 Dia 4293 717 Dia 4296 1103 Dia 4299 1162 Dia 4303 925 Dia 4306 3487 Dia 4309 1162 Dia 4312 1014 Dia 4315 450 Dia 4318 865 Dia 4322 865 Dia 4325 1607 Dia 4328 1043 Dia 4331 1014 Dia 4334 568 Dia 4337 568 Dia 4341 568 Dia 4344 568 Dia 4347 1132 Dia 4350 1607 Dia 4353 776 Dia 4356 746 Dia 4360 1043 Dia 4363 687 Dia 4366 939 Dia 4369 1014 Dia 4372 1607 Dia 4375 954 Dia 4379 420 Dia 4382 1014 Dia 4385 1726 Dia 4388 1607 Dia 4391 598 Dia 4394 1162 Dia 4398 1815 Dia 4401 1488 Dia 4404 717 Dia 4407 717 Dia 4410 1667 Dia 4413 1014 Dia 4417 1014 Dia 4420 1162 Dia 4423 1310 Dia 4426 865 Dia 4429 420 Dia 4432 1014 Dia 4436 717 Dia 4439 865 Dia 4442 1162 Dia 4445 539 Dia 4448 865 Dia 4451 1707 Dia 4455 598 Dia 4458 1014 Dia 4461 1014 Dia 4464 1014 Dia 4467 1162 Dia 4470 1162 Dia 4474 836 Dia 4477 1014 Dia 4480 1192 Dia 4483 1607 Dia 4486 2751 Dia 4489 865 Dia 4493 865 Dia 4496 1014 Dia 4499 717 Dia 4502 954 Dia 4505 1103 Dia 4508 1014 Dia 4512 1014 Dia 4515 1162 Dia 4518 1607 Dia 4521 568 Dia 4524 1043 Dia 4527 865 Dia 4531 895 Dia 4534 1370 Dia 4537 1162 Dia 4540 1014 Dia 4543 1756 Dia 4546 1251 Dia 4550 1162 Dia 4553 717 Dia 4556 509 Dia 4559 1014 Dia 4562 1014 Dia 4565 2922 Dia 4569 1518 Dia 4572 1043 Dia 4575 776 Dia 4578 746 Dia 4581 1162 Dia 4584 1281 Dia 4587 717 Dia 4591 568 Dia 4594 1014 Dia 4597 1014 Dia 4600 1014 Dia 4603 568 Dia 4606 865 Dia 4610 865 Dia 4613 1162 Dia 4616 657 Dia 4619 717 Dia 4622 746 Dia 4625 1192 Dia 4629 954 Dia 4632 1459 Dia 4635 1310 Dia 4638 865 Dia 4641 1310 Dia 4644 1947 Dia 4648 984 Dia 4651 1310 Dia 4654 1014 Dia 4657 1014 Dia 4660 1793 Dia 4663 865 Dia 4667 1073 Dia 4670 568 Dia 4673 717 Dia 4676 1459 Dia 4679 836 Dia 4682 836 Dia 4686 1162 Dia 4689 1459 Dia 4692 865 Dia 4695 1310 Dia 4698 1162 Dia 4701 1459 Dia 4705 836 Dia 4708 1043 Dia 4711 895 Dia 4714 717 Dia 4717 1281 Dia 4720 1667 Dia 4724 1103 Dia 4727 865 Dia 4730 1014 Dia 4733 1043 Dia 4736 865 Dia 4739 865 Dia 4743 865 Dia 4746 1014 Dia 4749 776 Dia 4752 1904 Dia 4755 1162 Dia 4758 1874 Dia 4762 1014 Dia 4765 836 Dia 4768 1162 Dia 4771 1014 Dia 4774 1459 Dia 4777 1014 Dia 4781 1014 Dia 4784 1014 Dia 4787 598 Dia 4790 1904 Dia 4793 717 Dia 4796 1162 Dia 4800 1162 Dia 4803 1162 Dia 4806 1073 Dia 4809 1014 Dia 4812 1014 Dia 4815 1162 Dia 4819 717 Dia 4822 1192 Dia 4825 1014 Dia 4828 1014 Dia 4831 1103 Dia 4834 1162 Dia 4838 865 Dia 4841 687 Dia 4844 717 Dia 4847 836 Dia 4850 865 Dia 4853 1014 Dia 4857 865 Dia 4860 717 Dia 4863 865 Dia 4866 865 Dia 4869 717 Dia 4872 657 Dia 4876 1459 Dia 4879 717 Dia 4882 1756 Dia 4885 1370 Dia 4888 1459 Dia 4891 1756 Dia 4895 865 Dia 4898 1310 Dia 4901 1340 Dia 4904 1310 Dia 4907 865 Dia 4910 1162 Dia 4914 1162 Dia 4917 568 Dia 4920 1726 Dia 4923 1162 Dia 4926 568 Dia 4929 1014 Dia 4933 865 Dia 4936 717 Dia 4939 420 Dia 4942 746 Dia 4945 1162 Dia 4948 598 Dia 4952 1192 Dia 4955 1281 Dia 4958 1014 Dia 4961 598 Dia 4964 539 Dia 4967 1310 Dia 4971 1162 Dia 4974 1014 Dia 4977 717 Dia 4980 865 Dia 4983 1518 Dia 4986 1607 Dia 4990 1310 Dia 4993 1845 Dia 4996 568 Dia 4999 954 Dia 5002 1459 Dia 5005 1310 Dia 5009 1310 Dia 5012 568 Dia 5015 1162 Dia 5018 1340 Dia 5021 1261 Dia 5024 776 Dia 5028 1162 Dia 5031 1162 Dia 5034 1014 Dia 5037 1162 Dia 5040 1162 Dia 5043 687 Dia 5047 717 Dia 5050 1310 Dia 5053 925 Dia 5056 746 Dia 5059 1785 Dia 5062 865 Dia 5066 4304 Dia 5069 1014 Dia 5072 2052 Dia 5075 865 Dia 5078 717 Dia 5081 717 Dia 5085 1014 Dia 5088 717 Dia 5091 1607 Dia 5094 2180 Dia 5097 1162 Dia 5100 1043 Dia 5104 1221 Dia 5107 1014 Dia 5110 1132 Dia 5113 746 Dia 5116 1310 Dia 5119 1756 Dia 5123 717 Dia 5126 1073 Dia 5129 3777 Dia 5132 1459 Dia 5135 1162 Dia 5138 1310 Dia 5142 865 Dia 5145 1310 Dia 5148 420 Dia 5151 1756 Dia 5154 1310 Dia 5157 1310 Dia 5161 1043 Dia 5164 717 Dia 5167 1162 Dia 5170 1310 Dia 5173 479 Dia 5176 420 Dia 5180 1221 Dia 5183 1459 Dia 5186 865 Dia 5189 865 Dia 5192 1162 Dia 5195 1014 Dia 5199 1014 Dia 5202 954 Dia 5205 865 Dia 5208 1310 Dia 5211 865 Dia 5214 717 Dia 5218 1251 Dia 5221 1459 Dia 5224 1340 Dia 5227 1014 Dia 5230 1162 Dia 5233 1637 Dia 5237 865 Dia 5240 1726 Dia 5243 1162 Dia 5246 717 Dia 5249 1162 Dia 5252 1162 Dia 5256 1251 Dia 5259 1192 Dia 5262 1756 Dia 5265 865 Dia 5268 657 Dia 5271 746 Dia 5275 1637 Dia 5278 1162 Dia 5281 746 Dia 5284 1756 Dia 5287 1488 Dia 5290 1103 Dia 5294 1429 Dia 5297 1132 Dia 5300 568 Dia 5303 717 Dia 5306 717 Dia 5309 925 Dia 5313 1667 Dia 5316 717 Dia 5319 1756 Dia 5322 746 Dia 5325 598 Dia 5328 1103 Dia 5332 1310 Dia 5335 1607 Dia 5338 865 Dia 5341 1281 Dia 5344 1073 Dia 5347 939 Dia 5351 1014 Dia 5354 1103 Dia 5357 836 Dia 5360 1459 Dia 5363 1014 Dia 5366 1221 Dia 5370 865 Dia 5373 1162 Dia 5376 1310 Dia 5379 568 Dia 5382 568 Dia 5385 1162 Dia 5388 717 Dia 5392 420 Dia 5395 1162 Dia 5398 865 Dia 5401 1459 Dia 5404 1073 Dia 5407 806 Dia 5411 865 Dia 5414 1162 Dia 5417 628 Dia 5420 1162 Dia 5423 1310 Dia 5426 420 Dia 5430 1043 Dia 5433 865 Dia 5436 806 Dia 5439 1014 Dia 5442 806 Dia 5445 865 Dia 5449 1014 Dia 5452 717 Dia 5455 1073 Dia 5458 865 Dia 5461 1310 Dia 5464 1132 Dia 5468 1014 Dia 5471 568 Dia 5474 865 Dia 5477 1014 Dia 5480 865 Dia 5483 1637 Dia 5487 925 Dia 5490 865 Dia 5493 1192 Dia 5496 1073 Dia 5499 746 Dia 5502 865 Dia 5506 1014 Dia 5509 1251 Dia 5512 1340 Dia 5515 1162 Dia 5518 895 Dia 5521 1162 Dia 5525 865 Dia 5528 717 Dia 5531 984 Dia 5534 1162 Dia 5537 420 Dia 5540 1459 Dia 5544 1192 Dia 5547 1221 Dia 5550 717 Dia 5553 1756 Dia 5556 1162 Dia 5559 1310 Dia 5563 865 Dia 5566 925 Dia 5569 865 Dia 5572 1014 Dia 5575 865 Dia 5578 1310 Dia 5582 717 Dia 5585 1310 Dia 5588 865 Dia 5591 1459 Dia 5594 1162 Dia 5597 954 Dia 5601 717 Dia 5604 925 Dia 5607 776 Dia 5610 1162 Dia 5613 717 Dia 5616 1014 Dia 5620 598 Dia 5623 1014 Dia 5626 1548 Dia 5629 717 Dia 5632 1607 Dia 5635 1548 Dia 5639 954 Dia 5642 1578 Dia 5645 1251 Dia 5648 717 Dia 5651 479 Dia 5654 2582 Dia 5658 1014 Dia 5661 1014 Dia 5664 954 Dia 5667 1162 Dia 5670 717 Dia 5673 1310 Dia 5677 568 Dia 5680 1459 Dia 5683 1310 Dia 5686 1014 Dia 5689 1043 Dia 5692 1162 Dia 5696 954 Dia 5699 1162 Dia 5702 1488 Dia 5705 865 Dia 5708 1162 Dia 5711 717 Dia 5715 865 Dia 5718 806 Dia 5721 954 Dia 5724 1251 Dia 5727 1162 Dia 5730 895 Dia 5734 865 Dia 5737 865 Dia 5740 2472 Dia 5743 1310 Dia 5746 1879 Dia 5749 746 Dia 5753 1607 Dia 5756 1459 Dia 5759 1162 Dia 5762 1953 Dia 5765 895 Dia 5768 1459 Dia 5772 1192 Dia 5775 1132 Dia 5778 746 Dia 5781 568 Dia 5784 1014 Dia 5787 1310 Dia 5791 1310 Dia 5794 568 Dia 5797 717 Dia 5800 420 Dia 5803 1162 Dia 5806 865 Dia 5810 2082 Dia 5813 865 Dia 5816 1310 Dia 5819 1607 Dia 5822 1310 Dia 5825 1459 Dia 5829 1162 Dia 5832 717 Dia 5835 1726 Dia 5838 1340 Dia 5841 1459 Dia 5844 806 Dia 5848 1014 Dia 5851 509 Dia 5854 865 Dia 5857 1162 Dia 5860 865 Dia 5863 1014 Dia 5867 717 Dia 5870 895 Dia 5873 865 Dia 5876 895 Dia 5879 717 Dia 5882 657 Dia 5886 1014 Dia 5889 717 Dia 5892 1014 Dia 5895 1014 Dia 5898 1043 Dia 5901 717 Dia 5905 657 Dia 5908 1162 Dia 5911 717 Dia 5914 1014 Dia 5917 3790 Dia 5920 746 Dia 5924 865 Dia 5927 1043 Dia 5930 1281 Dia 5933 836 Dia 5936 1726 Dia 5939 598 Dia 5943 1162 Dia 5946 1043 Dia 5949 1310 Dia 5952 1014 Dia 5955 1014 Dia 5958 865 Dia 5962 746 Dia 5965 1310 Dia 5968 2112 Dia 5971 2052 Dia 5974 1310 Dia 5977 1370 Dia 5981 1310 Dia 5984 1696 Dia 5987 1310 Dia 5990 717 Dia 5993 717 Dia 5996 865 Dia 6000 1756 Dia 6003 1607 Dia 6006 1014 Dia 6009 1310 Dia 6012 717 Dia 6015 1162 Dia 6019 1162 Dia 6022 568 Dia 6025 1607 Dia 6028 1310 Dia 6031 1162 Dia 6034 925 Dia 6038 836 Dia 6041 568 Dia 6044 717 Dia 6047 1429 Dia 6050 1192 Dia 6053 1667 Dia 6057 1162 Dia 6060 1119 Dia 6063 1014 Dia 6066 1014 Dia 6069 1607 Dia 6072 1340 Dia 6076 806 Dia 6079 1459 Dia 6082 1162 Dia 6085 568 Dia 6088 1162 Dia 6091 1799 Dia 6095 1162 Dia 6098 568 Dia 6101 776 Dia 6104 914 Dia 6107 717 Dia 6110 1014 Dia 6114 657 Dia 6117 806 Dia 6120 1162 Dia 6123 984 Dia 6126 1459 Dia 6129 806 Dia 6133 1310 Dia 6136 1073 Dia 6139 1310 Dia 6142 865 Dia 6145 1459 Dia 6148 1162 Dia 6152 1043 Dia 6155 1073 Dia 6158 1162 Dia 6161 1043 Dia 6164 865 Dia 6167 1993 Dia 6170 420 Dia 6174 568 Dia 6177 1607 Dia 6180 1192 Dia 6183 1340 Dia 6186 865 Dia 6189 568 Dia 6193 1488 Dia 6196 1162 Dia 6199 568 Dia 6202 1310 Dia 6205 1459 Dia 6208 717 Dia 6212 1281 Dia 6215 1904 Dia 6218 1310 Dia 6221 865 Dia 6224 954 Dia 6227 3982 Dia 6231 568 Dia 6234 1488 Dia 6237 1756 Dia 6240 865 Dia 6243 4031 Dia 6246 717 Dia 6250 954 Dia 6253 1162 Dia 6256 1310 Dia 6259 1845 Dia 6262 776 Dia 6265 1310 Dia 6269 1132 Dia 6272 1014 Dia 6275 865 Dia 6278 1607 Dia 6281 1578 Dia 6284 568 Dia 6288 1014 Dia 6291 1607 Dia 6294 1014 Dia 6297 420 Dia 6300 1073 Dia 6303 1014 Dia 6307 1162 Dia 6310 954 Dia 6313 717 Dia 6316 865 Dia 6319 1310 Dia 6322 1756 Dia 6326 568 Dia 6329 865 Dia 6332 865 Dia 6335 1310 Dia 6338 1014 Dia 6341 687 Dia 6345 1251 Dia 6348 1014 Dia 6351 1014 Dia 6354 1014 Dia 6357 1459 Dia 6360 1310 Dia 6364 1459 Dia 6367 420 Dia 6370 1192 Dia 6373 1014 Dia 6376 925 Dia 6379 776 Dia 6383 865 Dia 6386 1340 Dia 6389 1162 Dia 6392 717 Dia 6395 1488 Dia 6398 1370 Dia 6402 1162 Dia 6405 865 Dia 6408 1310 Dia 6411 568 Dia 6414 568 Dia 6417 717 Dia 6421 925 Dia 6424 717 Dia 6427 1370 Dia 6430 717 Dia 6433 1014 Dia 6436 717 Dia 6440 865 Dia 6443 1340 Dia 6446 1285 Dia 6449 1073 Dia 6452 1162 Dia 6455 895 Dia 6459 1459 Dia 6462 1014 Dia 6465 1607 Dia 6468 895 Dia 6471 1014 Dia 6474 776 Dia 6478 717 Dia 6481 1459 Dia 6484 717 Dia 6487 865 Dia 6490 865 Dia 6493 1073 Dia 6497 509 Dia 6500 717 Dia 6503 717 Dia 6506 1310 Dia 6509 865 Dia 6512 1162 Dia 6516 1488 Dia 6519 865 Dia 6522 717 Dia 6525 1632 Dia 6528 954 Dia 6531 1014 Dia 6535 1395 Dia 6538 1310 Dia 6541 628 Dia 6544 806 Dia 6547 568 Dia 6550 2472 Dia 6554 1310 Dia 6557 717 Dia 6560 1637 Dia 6563 1162 Dia 6566 1014 Dia 6569 717 Dia 6573 1014 Dia 6576 1578 Dia 6579 1578 Dia 6582 954 Dia 6585 1073 Dia 6588 1845 Dia 6592 1014 Dia 6595 806 Dia 6598 1830 Dia 6601 925 Dia 6604 1281 Dia 6607 1014 Dia 6611 1014 Dia 6614 687 Dia 6617 984 Dia 6620 598 Dia 6623 806 Dia 6626 1310 Dia 6630 1385 Dia 6633 865 Dia 6636 717 Dia 6639 1192 Dia 6642 1251 Dia 6645 1637 Dia 6649 1310 Dia 6652 865 Dia 6655 895 Dia 6658 1340 Dia 6661 1162 Dia 6664 1043 Dia 6668 717 Dia 6671 1310 Dia 6674 1192 Dia 6677 865 Dia 6680 865 Dia 6683 1359 Dia 6687 1251 Dia 6690 717 Dia 6693 420 Dia 6696 925 Dia 6699 1385 Dia 6702 746 Dia 6706 836 Dia 6709 717 Dia 6712 1310 Dia 6715 717 Dia 6718 1310 Dia 6721 1340 Dia 6725 3685 Dia 6728 776 Dia 6731 865 Dia 6734 865 Dia 6737 1459 Dia 6740 925 Dia 6744 865 Dia 6747 1043 Dia 6750 1132 Dia 6753 1310 Dia 6756 687 Dia 6759 865 Dia 6763 836 Dia 6766 1459 Dia 6769 1073 Dia 6772 1459 Dia 6775 1162 Dia 6778 1014 Dia 6782 1310 Dia 6785 1073 Dia 6788 1310 Dia 6791 717 Dia 6794 1904 Dia 6797 1488 Dia 6801 1607 Dia 6804 1162 Dia 6807 1310 Dia 6810 865 Dia 6813 1014 Dia 6816 1310 Dia 6820 1014 Dia 6823 717 Dia 6826 865 Dia 6829 1043 Dia 6832 717 Dia 6835 1014 Dia 6839 1014 Dia 6842 816 Dia 6845 1103 Dia 6848 1310 Dia 6851 1014 Dia 6854 1014 Dia 6858 1043 Dia 6861 865 Dia 6864 1073 Dia 6867 1014 Dia 6870 1968 Dia 6873 806 Dia 6877 865 Dia 6880 1162 Dia 6883 1607 Dia 6886 925 Dia 6889 1014 Dia 6892 865 Dia 6896 1310 Dia 6899 806 Dia 6902 1310 Dia 6905 984 Dia 6908 865 Dia 6911 836 Dia 6915 836 Dia 6918 865 Dia 6921 746 Dia 6924 1132 Dia 6927 865 Dia 6930 1281 Dia 6934 865 Dia 6937 865 Dia 6940 1607 Dia 6943 865 Dia 6946 1310 Dia 6949 717 Dia 6953 865 Dia 6956 1310 Dia 6959 865 Dia 1.000 UL LTb 630 420 M 6332 0 V 0 4452 V -6332 0 V 630 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 2675 a Fq(Figur)o(e)e(3.3:)28 b(The)21 b(number)e(of)i(keys)h(fetched)g(in)e(average)i(among)f(the)g(\002ve)h (nodes)f(that)g(r)o(eceive)h(a)f(key)m(,)511 2780 y(for)e(each)g(key)h (written;)d(compar)o(e)j(with)e(Figur)o(e)g(3.1.)512 5055 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2267 @rhi @setspecial %%BeginDocument: test/images/adding-users1-5000.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out-key6.eps %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Thu Dec 16 11:16:22 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 546 420 M 63 0 V 6353 0 R -63 0 V 462 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 546 977 M 63 0 V 6353 0 R -63 0 V 462 977 M gsave 0 setgray ( 1) Rshow grestore 1.000 UL LTb 546 1533 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 2) Rshow grestore 1.000 UL LTb 546 2090 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 3) Rshow grestore 1.000 UL LTb 546 2646 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 4) Rshow grestore 1.000 UL LTb 546 3203 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 5) Rshow grestore 1.000 UL LTb 546 3759 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 6) Rshow grestore 1.000 UL LTb 546 4316 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 7) Rshow grestore 1.000 UL LTb 546 4872 M 63 0 V 6353 0 R -63 0 V -6437 0 R gsave 0 setgray ( 8) Rshow grestore 1.000 UL LTb 546 420 M 0 63 V 0 4389 R 0 -63 V 546 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1188 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 500) Cshow grestore 1.000 UL LTb 1829 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1000) Cshow grestore 1.000 UL LTb 2471 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1500) Cshow grestore 1.000 UL LTb 3112 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2000) Cshow grestore 1.000 UL LTb 3754 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2500) Cshow grestore 1.000 UL LTb 4396 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 3000) Cshow grestore 1.000 UL LTb 5037 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 3500) Cshow grestore 1.000 UL LTb 5679 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 4000) Cshow grestore 1.000 UL LTb 6320 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 4500) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 5000) Cshow grestore 1.000 UL LTb 1.000 UL LTb 546 420 M 6416 0 V 0 4452 V -6416 0 V 546 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Keys fetched \(avg.\)) Cshow grestore grestore LTb 3754 70 M gsave 0 setgray (User keys added) Cshow grestore 1.000 UP 2.000 UL LT0 545 420 M 1 1731 R 63 0 V 0 478 V 64 0 V 0 473 V 64 0 V 0 -178 V 64 0 V 0 290 V 65 0 V 0 5 V 64 0 V 0 -44 V 64 0 V 0 -429 V 64 0 V 0 473 V 64 0 V 0 -83 V 64 0 V 0 -317 V 64 0 V 0 172 V 65 0 V 0 206 V 64 0 V 0 -195 V 64 0 V 0 -161 V 64 0 V 0 100 V 64 0 V 0 11 V 64 0 V 0 -44 V 65 0 V 0 16 V 64 0 V 0 112 V 64 0 V 0 89 V 64 0 V 0 -407 V 64 0 V 0 306 V 64 0 V 0 -411 V 65 0 V 0 -78 V 64 0 V 0 367 V 64 0 V 0 17 V 64 0 V 0 -201 V 64 0 V 0 318 V 64 0 V 0 -67 V 65 0 V 0 50 V 64 0 V 0 -84 V 64 0 V 0 -89 V 64 0 V 0 357 V 64 0 V 0 -312 V 64 0 V 0 -173 V 64 0 V 0 101 V 65 0 V 0 217 V 64 0 V 0 -351 V 64 0 V 0 106 V 64 0 V 0 61 V 64 0 V 0 -145 V 64 0 V 0 423 V 65 0 V 0 -273 V 64 0 V 0 123 V 64 0 V 0 -161 V 64 0 V 0 -184 V 64 0 V 0 200 V 64 0 V 0 28 V 65 0 V 0 -11 V 64 0 V 0 -289 V 64 0 V 0 205 V 64 0 V stroke 3881 2768 M 0 -11 V 64 0 V 0 173 V 64 0 V 0 -184 V 65 0 V 0 212 V 64 0 V 0 33 V 64 0 V 0 -33 V 64 0 V 0 -201 V 64 0 V 0 440 V 64 0 V 0 -395 V 64 0 V 0 -206 V 65 0 V 0 367 V 64 0 V 0 -44 V 64 0 V 64 0 V 0 -245 V 64 0 V 0 222 V 64 0 V 0 78 V 65 0 V 0 195 V 64 0 V 0 -250 V 64 0 V 0 122 V 64 0 V 0 -334 V 64 0 V 0 112 V 64 0 V 0 -134 V 65 0 V 0 -17 V 64 0 V 0 256 V 64 0 V 0 -239 V 64 0 V 0 -50 V 64 0 V 0 178 V 64 0 V 0 367 V 65 0 V 0 -178 V 64 0 V 0 -206 V 64 0 V 64 0 V 0 -378 V 64 0 V 0 773 V 64 0 V 0 -500 V 64 0 V 0 100 V 65 0 V 0 -206 V 64 0 V 0 356 V 64 0 V 0 -262 V 64 0 V 0 273 V 64 0 V 0 33 V 64 0 V 0 -66 V 65 0 V 0 -173 V 64 0 V 0 67 V 64 0 V 0 -17 V 64 0 V 0 -222 V 64 0 V 0 256 V 64 0 V 0 100 V 65 0 V 0 -406 V 64 0 V 0 -2104 V 1.000 UL LT1 545 420 M 1 2744 R 63 0 V 0 411 V 64 0 V 0 640 V 64 0 V 0 -161 V 64 0 V 0 289 V 65 0 V 0 267 V 64 0 V 0 -172 V 64 0 V 0 -579 V 64 0 V 0 662 V 64 0 V 0 -22 V 64 0 V 0 -579 V 64 0 V 0 345 V 65 0 V 0 162 V 64 0 V 0 28 V 64 0 V 0 -390 V 64 0 V 0 278 V 64 0 V 0 -189 V 64 0 V 0 -28 V 65 0 V 0 139 V 64 0 V 0 -11 V 64 0 V 0 -39 V 64 0 V 0 -334 V 64 0 V 0 501 V 64 0 V 0 -456 V 65 0 V 0 11 V 64 0 V 0 117 V 64 0 V 0 -28 V 64 0 V 0 -83 V 64 0 V 0 339 V 64 0 V 0 100 V 65 0 V 0 -256 V 64 0 V 0 73 V 64 0 V 0 -206 V 64 0 V 0 501 V 64 0 V 0 -624 V 64 0 V 0 123 V 64 0 V 0 -151 V 65 0 V 0 574 V 64 0 V 0 -735 V 64 0 V 0 212 V 64 0 V 0 295 V 64 0 V 0 -384 V 64 0 V 0 834 V 65 0 V 0 -690 V 64 0 V 0 278 V 64 0 V 0 -133 V 64 0 V 0 -395 V 64 0 V 0 178 V 64 0 V 0 94 V 65 0 V 0 290 V 64 0 V 0 -440 V 64 0 V 0 273 V 64 0 V stroke 3881 4093 M 0 -106 V 64 0 V 0 123 V 64 0 V 0 -156 V 65 0 V 0 423 V 64 0 V 0 83 V 64 0 V 0 -211 V 64 0 V 0 -445 V 64 0 V 0 701 V 64 0 V 0 -624 V 64 0 V 0 -261 V 65 0 V 0 495 V 64 0 V 0 -17 V 64 0 V 0 -22 V 64 0 V 0 -406 V 64 0 V 0 451 V 64 0 V 0 167 V 65 0 V 0 261 V 64 0 V 0 -562 V 64 0 V 0 395 V 64 0 V 0 -322 V 64 0 V 0 -62 V 64 0 V 0 11 V 65 0 V 0 -72 V 64 0 V 0 217 V 64 0 V 0 -211 V 64 0 V 0 -89 V 64 0 V 0 222 V 64 0 V 0 418 V 65 0 V 0 -240 V 64 0 V 0 -378 V 64 0 V 0 5 V 64 0 V 0 -139 V 64 0 V 0 757 V 64 0 V 0 -467 V 64 0 V 0 -17 V 65 0 V 0 -245 V 64 0 V 0 495 V 64 0 V 0 -406 V 64 0 V 0 345 V 64 0 V 0 -44 V 64 0 V 0 -78 V 65 0 V 0 -440 V 64 0 V 0 379 V 64 0 V 0 139 V 64 0 V 0 -551 V 64 0 V 0 423 V 64 0 V 0 78 V 65 0 V 0 -318 V 64 0 V 0 -3372 V 1.000 UL LT1 545 420 M 1 718 R 63 0 V 0 540 V 64 0 V 0 317 V 64 0 V 0 -195 V 64 0 V 0 290 V 65 0 V 0 -262 V 64 0 V 0 83 V 64 0 V 0 -283 V 64 0 V 0 295 V 64 0 V 0 -151 V 64 0 V 0 -61 V 64 0 V 65 0 V 0 256 V 64 0 V 0 -417 V 64 0 V 0 61 V 64 0 V 0 -78 V 64 0 V 0 217 V 64 0 V 0 -67 V 65 0 V 0 -100 V 64 0 V 0 239 V 64 0 V 0 206 V 64 0 V 0 -473 V 64 0 V 0 112 V 64 0 V 0 -362 V 65 0 V 0 -173 V 64 0 V 0 612 V 64 0 V 0 67 V 64 0 V 0 -317 V 64 0 V 0 295 V 64 0 V 0 -234 V 65 0 V 0 356 V 64 0 V 0 -239 V 64 0 V 0 22 V 64 0 V 0 217 V 64 0 V 0 -5 V 64 0 V 0 -468 V 64 0 V 0 351 V 65 0 V 0 -134 V 64 0 V 0 28 V 64 0 V 0 6 V 64 0 V 0 -173 V 64 0 V 0 95 V 64 0 V 0 17 V 65 0 V 0 139 V 64 0 V 0 -39 V 64 0 V 0 -178 V 64 0 V 0 22 V 64 0 V 0 223 V 64 0 V 0 -39 V 65 0 V 0 -312 V 64 0 V 0 -139 V 64 0 V 0 145 V 64 0 V 0 72 V stroke 3881 1522 M 64 0 V 0 222 V 64 0 V 0 -211 V 65 0 V 0 11 V 64 0 V 0 -22 V 64 0 V 0 145 V 64 0 V 0 39 V 64 0 V 0 189 V 64 0 V 0 -178 V 64 0 V 0 -145 V 65 0 V 0 239 V 64 0 V 0 -67 V 64 0 V 0 17 V 64 0 V 0 -83 V 64 0 V 64 0 V 0 -17 V 65 0 V 0 128 V 64 0 V 0 67 V 64 0 V 0 -162 V 64 0 V 0 -339 V 64 0 V 0 284 V 64 0 V 0 -284 V 65 0 V 0 44 V 64 0 V 0 295 V 64 0 V 0 -261 V 64 0 V 0 -11 V 64 0 V 0 128 V 64 0 V 0 311 V 65 0 V 0 -105 V 64 0 V 0 -34 V 64 0 V 0 -16 V 64 0 V 0 -607 V 64 0 V 0 779 V 64 0 V 0 -529 V 64 0 V 0 212 V 65 0 V 0 -156 V 64 0 V 0 211 V 64 0 V 0 -116 V 64 0 V 0 200 V 64 0 V 0 111 V 64 0 V 0 -61 V 65 0 V 0 100 V 64 0 V 0 -239 V 64 0 V 0 -178 V 64 0 V 0 106 V 64 0 V 0 89 V 64 0 V 0 122 V 65 0 V 0 -495 V 64 0 V 0 -835 V 1.000 UL LTb 546 420 M 6416 0 V 0 4452 V -6416 0 V 546 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 700 5243 a(Figur)o(e)f(3.4:)28 b(A)19 b(graph)h(similar)e (to)h(that)g(of)g(Figur)o(e)e(3.1,)i(but)f(with)g(5000)i(users)f(in)f (total.)1831 5662 y Fz(54)p eop %%Page: 55 57 55 56 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(blocks)c(ar)o(e)d(written)j(because)e(of)h(the)g (caching.)g(It)g(is,)g(however)-6 b(,)17 b(not)h(clear)e(by)h(how)h (much)440 646 y(it)j(decr)o(eases.)440 887 y Fv(Description)440 1060 y Fz(The)30 b(test)g(\002rst)g(cr)o(eates)e(1000)g(key)i(blocks)h (signed)f(with)h(random)f(other)g(users)g(in)g(the)440 1175 y(system)g(as)f(in)g(the)h(pr)o(evious)e(test.)h(Afterwar)o(ds,)e (5000)g(data)h(blocks)i(ar)o(e)e(cr)o(eated)f(and)440 1289 y(written)20 b(one)f(by)g(one.)h(The)f(data)f(blocks)h(contain)h (an)f(access)f(contr)o(ol)i(list)g(with)f(between)440 1404 y(one)i(and)f(ten)g(signatur)o(es)g(and)g(between)g(one)h(and)f (ten)h(rights)g(for)f(each)f(of)i(these)f(signa-)440 1518 y(tur)o(es)g(with)i(uniform)f(pr)o(obability)-9 b(.)440 1759 y Fv(Results)440 1932 y Fz(The)20 b(r)o(esults)h(of)f(the) h(test)f(ar)o(e)f(shown)j(in)f(Figur)o(e)f(3.5.)f(As)h(the)h(number)f (of)h(data)e(blocks)i(in)440 2047 y(the)j(system)g(incr)o(eases,)e(the) h(number)h(of)f(average)f(key)i(fetches)f(decr)o(eases.)e(After)h(5000) 440 2162 y(data)j(blocks)i(have)e(been)h(distributed,)g(the)g(average)e (number)j(of)f(fetches)f(is)i(only)g(1/3)440 2276 y(of)c(what)g(it)h (was)f(at)f(the)i(beginning)g(of)f(the)h(data)d(block)j(distribution.)g (Clearly)-9 b(,)22 b(the)h(key)440 2391 y(caches)28 b(can)h(be)g(very)f (ef)o(fective)f(at)i(decr)o(easing)e(the)i(over)o(head)f(of)h(the)g (access)f(contr)o(ol)440 2505 y(featur)o(es)19 b(of)i(the)g(\002le)g (system.)512 4518 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2267 @rhi @setspecial %%BeginDocument: test/images/datablock-acl.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out-data4.eps %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Thu Dec 16 11:17:17 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 630 420 M 63 0 V 6269 0 R -63 0 V 546 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 630 976 M 63 0 V 6269 0 R -63 0 V 546 976 M gsave 0 setgray ( 5) Rshow grestore 1.000 UL LTb 630 1533 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 10) Rshow grestore 1.000 UL LTb 630 2089 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 15) Rshow grestore 1.000 UL LTb 630 2646 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 20) Rshow grestore 1.000 UL LTb 630 3202 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 25) Rshow grestore 1.000 UL LTb 630 3759 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 30) Rshow grestore 1.000 UL LTb 630 4315 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 35) Rshow grestore 1.000 UL LTb 630 4872 M 63 0 V 6269 0 R -63 0 V -6353 0 R gsave 0 setgray ( 40) Rshow grestore 1.000 UL LTb 630 420 M 0 63 V 0 4389 R 0 -63 V 630 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1263 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 500) Cshow grestore 1.000 UL LTb 1896 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1000) Cshow grestore 1.000 UL LTb 2530 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1500) Cshow grestore 1.000 UL LTb 3163 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2000) Cshow grestore 1.000 UL LTb 3796 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2500) Cshow grestore 1.000 UL LTb 4429 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 3000) Cshow grestore 1.000 UL LTb 5062 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 3500) Cshow grestore 1.000 UL LTb 5696 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 4000) Cshow grestore 1.000 UL LTb 6329 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 4500) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 5000) Cshow grestore 1.000 UL LTb 1.000 UL LTb 630 420 M 6332 0 V 0 4452 V -6332 0 V 630 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Keys fetched \(avg.\)) Cshow grestore grestore LTb 3796 70 M gsave 0 setgray (Data blocks added) Cshow grestore 1.000 UP 2.000 UL LT0 629 420 M 1 2716 R 62 0 V 0 -233 V 63 0 V 0 183 V 64 0 V 0 -77 V 63 0 V 0 -47 V 63 0 V 0 -140 V 64 0 V 0 -149 V 63 0 V 0 -6 V 63 0 V 0 -602 V 64 0 V 0 210 V 63 0 V 0 99 V 63 0 V 0 -125 V 64 0 V 0 68 V 63 0 V 0 -34 V 63 0 V 0 180 V 64 0 V 0 -63 V 63 0 V 0 -113 V 63 0 V 0 -2 V 63 0 V 0 -189 V 64 0 V 0 19 V 63 0 V 0 27 V 63 0 V 0 -228 V 64 0 V 0 326 V 63 0 V 0 -352 V 63 0 V 0 72 V 64 0 V 0 72 V 63 0 V 0 -43 V 63 0 V 0 -95 V 64 0 V 0 129 V 63 0 V 0 -94 V 63 0 V 0 -14 V 64 0 V 0 -81 V 63 0 V 0 -107 V 63 0 V 0 -56 V 64 0 V 0 236 V 63 0 V 0 -116 V 63 0 V 0 -210 V 64 0 V 0 313 V 63 0 V 0 -165 V 63 0 V 0 -103 V 64 0 V 0 -90 V 63 0 V 0 124 V 63 0 V 0 103 V 63 0 V 0 -23 V 64 0 V 0 -27 V 63 0 V 0 -63 V 63 0 V 0 97 V 64 0 V 0 -21 V 63 0 V 0 -180 V 63 0 V 0 80 V 64 0 V 0 139 V 63 0 V 0 -274 V 63 0 V stroke 3921 1491 M 0 50 V 64 0 V 0 -147 V 63 0 V 0 140 V 63 0 V 0 224 V 64 0 V 0 -276 V 63 0 V 0 -91 V 63 0 V 0 234 V 64 0 V 0 -2 V 63 0 V 0 -107 V 63 0 V 0 49 V 64 0 V 0 -90 V 63 0 V 0 16 V 63 0 V 0 -93 V 64 0 V 0 185 V 63 0 V 0 -123 V 63 0 V 0 28 V 63 0 V 0 -143 V 64 0 V 0 115 V 63 0 V 0 -31 V 63 0 V 0 35 V 64 0 V 0 83 V 63 0 V 0 -62 V 63 0 V 0 -71 V 64 0 V 0 -20 V 63 0 V 0 -23 V 63 0 V 0 1 V 64 0 V 0 101 V 63 0 V 0 -107 V 63 0 V 0 71 V 64 0 V 0 -119 V 63 0 V 0 -60 V 63 0 V 0 19 V 64 0 V 0 194 V 63 0 V 0 -250 V 63 0 V 0 261 V 64 0 V 0 -217 V 63 0 V 0 72 V 63 0 V 0 9 V 64 0 V 0 -59 V 63 0 V 0 -57 V 63 0 V 0 -62 V 63 0 V 0 126 V 64 0 V 0 -27 V 63 0 V 0 69 V 63 0 V 0 58 V 64 0 V 0 -77 V 63 0 V 0 -185 V 63 0 V 0 98 V 64 0 V 0 -810 V 1.000 UL LT1 629 420 M 1 3976 R 62 0 V 0 -364 V 63 0 V 0 467 V 64 0 V 0 -194 V 63 0 V 0 -69 V 63 0 V 0 -375 V 64 0 V 0 -19 V 63 0 V 0 -129 V 63 0 V 0 -711 V 64 0 V 0 379 V 63 0 V 0 91 V 63 0 V 0 -236 V 64 0 V 0 68 V 63 0 V 0 -135 V 63 0 V 0 460 V 64 0 V 0 -291 V 63 0 V 0 -43 V 63 0 V 0 -80 V 63 0 V 0 -224 V 64 0 V 0 71 V 63 0 V 0 -142 V 63 0 V 0 -77 V 64 0 V 0 305 V 63 0 V 0 -368 V 63 0 V 0 -102 V 64 0 V 0 49 V 63 0 V 0 10 V 63 0 V 0 -71 V 64 0 V 0 122 V 63 0 V 0 -115 V 63 0 V 0 -48 V 64 0 V 0 -91 V 63 0 V 0 11 V 63 0 V 0 -168 V 64 0 V 0 319 V 63 0 V 0 -95 V 63 0 V 0 -356 V 64 0 V 0 389 V 63 0 V 0 -214 V 63 0 V 0 -148 V 64 0 V 0 -82 V 63 0 V 0 198 V 63 0 V 0 123 V 63 0 V 0 -62 V 64 0 V 0 -26 V 63 0 V 0 -105 V 63 0 V 0 71 V 64 0 V 0 112 V 63 0 V 0 -371 V 63 0 V 0 140 V 64 0 V 0 372 V 63 0 V 0 -425 V 63 0 V stroke 3921 2217 M 0 -21 V 64 0 V 0 -272 V 63 0 V 0 248 V 63 0 V 0 253 V 64 0 V 0 -353 V 63 0 V 0 -27 V 63 0 V 0 293 V 64 0 V 0 -5 V 63 0 V 0 -95 V 63 0 V 0 -36 V 64 0 V 0 -143 V 63 0 V 0 69 V 63 0 V 0 -129 V 64 0 V 0 279 V 63 0 V 0 -196 V 63 0 V 0 -25 V 63 0 V 0 -205 V 64 0 V 0 276 V 63 0 V 0 -138 V 63 0 V 0 91 V 64 0 V 0 109 V 63 0 V 0 3 V 63 0 V 0 -121 V 64 0 V 0 -70 V 63 0 V 0 -63 V 63 0 V 64 0 V 0 74 V 63 0 V 0 -118 V 63 0 V 0 120 V 64 0 V 0 -141 V 63 0 V 0 -152 V 63 0 V 0 116 V 64 0 V 0 128 V 63 0 V 0 -278 V 63 0 V 0 357 V 64 0 V 0 -234 V 63 0 V 0 66 V 63 0 V 0 -36 V 64 0 V 0 59 V 63 0 V 0 -142 V 63 0 V 0 -137 V 63 0 V 0 121 V 64 0 V 0 40 V 63 0 V 0 118 V 63 0 V 0 37 V 64 0 V 0 -80 V 63 0 V 0 -297 V 63 0 V 0 186 V 64 0 V 0 -1326 V 1.000 UL LT1 629 420 M 1 1456 R 62 0 V 0 -103 V 63 0 V 0 -100 V 64 0 V 0 39 V 63 0 V 0 -23 V 63 0 V 0 94 V 64 0 V 0 -280 V 63 0 V 0 117 V 63 0 V 0 -491 V 64 0 V 0 41 V 63 0 V 0 107 V 63 0 V 0 -16 V 64 0 V 0 67 V 63 0 V 0 69 V 63 0 V 0 -98 V 64 0 V 0 162 V 63 0 V 0 -182 V 63 0 V 0 78 V 63 0 V 0 -156 V 64 0 V 0 -34 V 63 0 V 0 198 V 63 0 V 0 -381 V 64 0 V 0 348 V 63 0 V 0 -337 V 63 0 V 0 246 V 64 0 V 0 95 V 63 0 V 0 -95 V 63 0 V 0 -120 V 64 0 V 0 135 V 63 0 V 0 -70 V 63 0 V 0 19 V 64 0 V 0 -73 V 63 0 V 0 -222 V 63 0 V 0 54 V 64 0 V 0 154 V 63 0 V 0 -136 V 63 0 V 0 -67 V 64 0 V 0 238 V 63 0 V 0 -115 V 63 0 V 0 -57 V 64 0 V 0 -97 V 63 0 V 0 48 V 63 0 V 0 83 V 63 0 V 0 17 V 64 0 V 0 -29 V 63 0 V 0 -22 V 63 0 V 0 122 V 64 0 V 0 -153 V 63 0 V 0 12 V 63 0 V 0 20 V 64 0 V 0 -95 V 63 0 V 0 -122 V 63 0 V stroke 3921 765 M 0 120 V 64 0 V 0 -22 V 63 0 V 0 34 V 63 0 V 0 194 V 64 0 V 0 -199 V 63 0 V 0 -156 V 63 0 V 0 178 V 64 0 V 0 -2 V 63 0 V 0 -116 V 63 0 V 0 134 V 64 0 V 0 -40 V 63 0 V 0 -37 V 63 0 V 0 -56 V 64 0 V 0 92 V 63 0 V 0 -51 V 63 0 V 0 81 V 63 0 V 0 -82 V 64 0 V 0 -47 V 63 0 V 0 80 V 63 0 V 0 -21 V 64 0 V 0 56 V 63 0 V 0 -128 V 63 0 V 0 -22 V 64 0 V 0 31 V 63 0 V 0 16 V 63 0 V 0 2 V 64 0 V 0 129 V 63 0 V 0 -96 V 63 0 V 0 23 V 64 0 V 0 -97 V 63 0 V 0 30 V 63 0 V 0 -78 V 64 0 V 0 261 V 63 0 V 0 -220 V 63 0 V 0 164 V 64 0 V 0 -202 V 63 0 V 0 79 V 63 0 V 0 53 V 64 0 V 0 -176 V 63 0 V 0 28 V 63 0 V 0 13 V 63 0 V 0 130 V 64 0 V 0 -94 V 63 0 V 0 20 V 63 0 V 0 81 V 64 0 V 0 -76 V 63 0 V 0 -71 V 63 0 V 0 11 V 64 0 V 0 -296 V 1.000 UL LTb 630 420 M 6332 0 V 0 4452 V -6332 0 V 630 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 4706 a Fq(Figur)o(e)15 b(3.5:)28 b(The)16 b(middle)h(graph)g(shows)g(the)f(average)i(number)d(of)h(keys)h (fetched)g(to)f(authenticate)g(data)511 4811 y(blocks)j(as)g(mor)o(e)f (data)i(blocks)f(ar)o(e)f(written)g(to)h(the)g(system.)g(The)f (standard)i(deviation)f(is)f(also)h(plotted.)565 5022 y Fz(But)30 b(the)h(test)f(also)h(shows)h(that)f(ther)o(e)e(is)i(a)f (considerable)g(over)o(head)g(on)h(average)440 5137 y(when)25 b(r)o(eceiving)e(a)g(data)g(block,)h(and)f(the)h(question)h(is)g (whether)f(the)g(over)o(head)e(is)j(still)440 5252 y(r)o(easonable)18 b(in)i(practise.)f(T)-8 b(o)20 b(answer)f(this)i(question,)f(it)g(is)g (necessary)f(with)i(mor)o(e)e(infor)o(-)440 5366 y(mation)24 b(about)e(the)h(actual)f(usage)h(patterns.)f(Fortunately)-9 b(,)23 b(it)g(seems)g(likely)g(that)g(many)1831 5662 y(55)p eop %%Page: 56 58 56 57 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(blocks)j(will)g(be)f(modi\002ed)h(multiple)g(times)g (or)g(likewise)g(r)o(ead)e(multiple)i(times)g(by)f(the)440 646 y(same)k(node)g(so)g(that)g(ther)o(e)f(can)g(be)h(almost)g(100\045) e(cache)i(hits)g(after)f(the)h(\002rst)g(r)o(ead)e(or)440 760 y(write.)440 1021 y Fp(3.3.3)99 b(Read)24 b(and)h(W)-7 b(rite)24 b(Latency)440 1194 y Fz(The)c(purpose)h(of)f(this)i(test)e (is)h(to)g(get)f(an)h(overview)f(of)g(the)h(overall)f(performance)g(of) g(the)440 1308 y(\002le)h(system)h(design.)g(W)-8 b(e)21 b(measur)o(e)f(the)i(time)f(it)h(takes)f(to)g(r)o(ead)f(and)h(write)g (data)f(blocks.)440 1423 y(For)30 b(r)o(eading,)e(this)i(entails)g(how) h(long)f(it)g(takes)f(to)h(r)o(etrieve)e(the)i(block,)g(authenticate) 440 1537 y(it)22 b(and)f(then)h(decrypt)e(the)i(contents.)g(W)-6 b(riting)22 b(measur)o(es)f(how)h(long)h(it)e(takes)g(to)h(send)g(a)440 1652 y(data)17 b(block)h(to)h(each)e(of)h(the)g Fu(r)i Fz(r)o(eplicating)e(nodes)g(and)g(get)f(an)h(acknowledgement)h(fr)o(om) 440 1767 y(each.)440 2008 y Fv(Description)440 2181 y Fz(The)26 b(test)g(\002rst)g(cr)o(eates)f(1000)f(new)i(users)g(one)g (by)g(one,)h(signed)f(with)h(a)e(random)h(other)440 2295 y(user)g(in)g(the)g(system)h(as)e(in)i(the)f(pr)o(evious)f(tests.)h (Then)h(5000)d(data)g(blocks)j(ar)o(e)d(cr)o(eated)440 2410 y(and)19 b(distributed)h(one)g(by)g(one)g(by)-9 b(.)20 b(As)f(in)h(the)g(pr)o(evious)g(test,)g(the)f(data)g(blocks)i (contains)440 2524 y(an)29 b(access)g(contr)o(ol)g(list)h(with)g (between)f(one)g(and)g(ten)g(signatur)o(es)g(and)g(between)g(one)440 2639 y(and)c(ten)g(rights)g(for)g(each)f(of)h(these)g(signatur)o(es.)g (The)g(data)e(part)i(of)g(the)g(block)g(is)g(\002lled)440 2753 y(with)d(1-30)d(kilobytes)i(of)g(random)g(data.)e(After)h(the)h (data)e(blocks)j(have)e(been)h(written)g(to)440 2868 y(the)26 b(network,)g(the)g(writing)g(node)g(clears)f(its)h(local)g (key)f(cache)g(and)g(starts)h(r)o(eading)e(all)440 2983 y(the)d(blocks)g(again.)565 3097 y(The)26 b(latency)g(of)g(writing)h (each)e(data)g(block)i(and)f(r)o(eading)f(each)g(data)g(block)i(is)f (ob-)440 3212 y(served.)440 3453 y Fv(Results)440 3626 y Fz(Figur)o(e)k(3.6)f(shows)i(the)g(output)f(of)g(the)h(write)f (latency)g(test.)g(On)h(the)f(graph)g(one)h(can)440 3740 y(see)23 b(seven)g(dif)o(fer)o(ent)d(layers,)j(the)g(\002rst)g(layer)-6 b(,)22 b(and)h(83\045)e(of)i(the)g(total)g(amount)h(of)f(block)440 3855 y(writes,)e(ar)o(e)e(data)g(block)i(writes)g(that)g(completed)f (normally)-9 b(,)21 b(the)g(layers)f(just)h(above)f(10,)440 3970 y(20,)e(30,)g(40)g(and)h(50)g(seconds)g(ar)o(e)f(caused)g(by)i (the)f(occurr)o(ence)f(of)i(10)e(and)h(20)f(second)h(net-)440 4084 y(work)25 b(timeouts.)g(It)g(is)f(not)i(clear)d(why)i(the)g(layer) f(ar)o(ound)f(8-9)g(seconds)i(occurr)o(ed,)e(but)440 4199 y(we)f(think)i(it)e(is)h(r)o(elated)e(to)i(the)f(high)h(load)g (caused)e(by)h(the)h(cryptographic)f(operations.)440 4313 y(W)-8 b(e)29 b(also)h(believe)e(this)i(caused)e(the)i(network)f (timeouts)h(since)g(the)f(nodes)h(should)g(be)440 4428 y(able)20 b(to)h(contact)g(each)f(other)-6 b(.)565 4542 y(Figur)o(e)18 b(3.7)g(illustrates)h(the)g(\002rst)g(layer)f(and)h (shows)h(that)f(the)g(write)g(latency)g(slightly)440 4657 y(decr)o(eases)26 b(as)i(the)g(number)g(of)h(data)d(blocks)j(in)g (the)f(system)h(incr)o(eases.)e(W)-8 b(e)28 b(attribute)440 4772 y(this)21 b(to)f(the)h(key)f(caches,)f(as)h(explor)o(ed)f(in)i (the)f(two)h(pr)o(evious)f(tests,)g(since)h(the)f(keys)g(that)440 4886 y(need)h(to)h(be)g(r)o(etrieved)e(to)i(verify)f(a)g(block)h(decr)o (eases.)e(The)h(write)h(latency)g(is,)g(however)-6 b(,)440 5001 y(generally)18 b(high.)h(This)g(might)h(not)f(be)f(a)g(pr)o(oblem) g(in)h(practise,)e(though,)j(since)f(the)f(write)440 5115 y(operations)j(in)g(some)h(cases)e(can)g(be)h(done)g(in)g(the)g (backgr)o(ound.)565 5230 y(Figur)o(e)26 b(3.8)f(shows)k(the)d(r)o (esult)h(of)g(the)f(r)o(ead)g(test.)g(The)h(r)o(ead)e(latency)i(decr)o (eases)e(as)440 5344 y(the)k(number)g(of)g(data)f(blocks)h(r)o(ead)e (incr)o(eases.)h(The)h(test)g(starts)g(by)g(clearing)f(the)h(key)1831 5662 y(56)p eop %%Page: 57 59 57 58 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 512 2435 a @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2267 @rhi @setspecial %%BeginDocument: test/images/latency-write-all.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out-totalblock3-write-all.eps %%Creator: gnuplot 3.7 patchlevel 3 %%CreationDate: Mon Dec 20 15:30:27 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth } def /AL { stroke userlinewidth 2 div setlinewidth } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 882 420 M 63 0 V 6017 0 R -63 0 V 798 420 M ( 0) Rshow 882 1162 M 63 0 V 6017 0 R -63 0 V -6101 0 R ( 10000) Rshow 882 1904 M 63 0 V 6017 0 R -63 0 V -6101 0 R ( 20000) Rshow 882 2646 M 63 0 V 6017 0 R -63 0 V -6101 0 R ( 30000) Rshow 882 3388 M 63 0 V 6017 0 R -63 0 V -6101 0 R ( 40000) Rshow 882 4130 M 63 0 V 6017 0 R -63 0 V -6101 0 R ( 50000) Rshow 882 4872 M 63 0 V 6017 0 R -63 0 V -6101 0 R ( 60000) Rshow 882 420 M 0 63 V 0 4389 R 0 -63 V 882 280 M ( 0) Cshow 1490 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 500) Cshow 2098 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 1000) Cshow 2706 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 1500) Cshow 3314 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 2000) Cshow 3922 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 2500) Cshow 4530 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 3000) Cshow 5138 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 3500) Cshow 5746 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 4000) Cshow 6354 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 4500) Cshow 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 5000) Cshow 1.000 UL LTb 882 420 M 6080 0 V 0 4452 V -6080 0 V 882 420 L 140 2646 M currentpoint gsave translate 90 rotate 0 0 M (Latency \(ms\)) Cshow grestore 3922 70 M (Data blocks added) Cshow 1.000 UP 1.000 UL LT0 883 502 Pls 884 555 Pls 886 568 Pls 887 545 Pls 888 520 Pls 889 551 Pls 891 574 Pls 892 550 Pls 893 523 Pls 894 537 Pls 895 511 Pls 897 574 Pls 898 519 Pls 899 543 Pls 900 529 Pls 901 536 Pls 903 593 Pls 904 542 Pls 905 509 Pls 906 548 Pls 908 556 Pls 909 519 Pls 910 573 Pls 911 558 Pls 912 546 Pls 914 519 Pls 915 560 Pls 916 588 Pls 917 522 Pls 918 521 Pls 920 531 Pls 921 536 Pls 922 1105 Pls 923 497 Pls 925 515 Pls 926 594 Pls 927 531 Pls 928 528 Pls 929 508 Pls 931 523 Pls 932 525 Pls 933 551 Pls 934 545 Pls 936 506 Pls 937 549 Pls 938 527 Pls 939 537 Pls 940 560 Pls 942 536 Pls 943 544 Pls 944 544 Pls 945 552 Pls 946 551 Pls 948 510 Pls 949 569 Pls 950 525 Pls 951 542 Pls 953 530 Pls 954 550 Pls 955 603 Pls 956 519 Pls 957 549 Pls 959 577 Pls 960 510 Pls 961 496 Pls 962 522 Pls 963 590 Pls 965 558 Pls 966 542 Pls 967 550 Pls 968 576 Pls 970 565 Pls 971 544 Pls 972 549 Pls 973 513 Pls 974 2108 Pls 976 552 Pls 977 584 Pls 978 490 Pls 979 545 Pls 980 561 Pls 982 563 Pls 983 543 Pls 984 558 Pls 985 529 Pls 987 553 Pls 988 550 Pls 989 528 Pls 990 545 Pls 991 532 Pls 993 548 Pls 994 502 Pls 995 546 Pls 996 529 Pls 998 513 Pls 999 505 Pls 1000 496 Pls 1001 516 Pls 1002 552 Pls 1004 581 Pls 1005 492 Pls 1006 583 Pls 1007 507 Pls 1008 539 Pls 1010 517 Pls 1011 516 Pls 1012 532 Pls 1013 543 Pls 1015 550 Pls 1016 566 Pls 1017 587 Pls 1018 533 Pls 1019 592 Pls 1021 548 Pls 1022 506 Pls 1023 529 Pls 1024 519 Pls 1025 551 Pls 1027 535 Pls 1028 532 Pls 1029 520 Pls 1030 511 Pls 1032 516 Pls 1033 543 Pls 1034 576 Pls 1035 544 Pls 1036 516 Pls 1038 505 Pls 1039 548 Pls 1040 531 Pls 1041 513 Pls 1043 537 Pls 1044 556 Pls 1045 542 Pls 1046 2051 Pls 1047 518 Pls 1049 511 Pls 1050 516 Pls 1051 517 Pls 1052 534 Pls 1053 596 Pls 1055 551 Pls 1056 555 Pls 1057 523 Pls 1058 2059 Pls 1060 538 Pls 1061 525 Pls 1062 520 Pls 1063 534 Pls 1064 539 Pls 1066 554 Pls 1067 547 Pls 1068 512 Pls 1069 535 Pls 1070 2070 Pls 1072 499 Pls 1073 529 Pls 1074 533 Pls 1075 544 Pls 1077 537 Pls 1078 539 Pls 1079 541 Pls 1080 520 Pls 1081 515 Pls 1083 523 Pls 1084 516 Pls 1085 522 Pls 1086 538 Pls 1088 491 Pls 1089 566 Pls 1090 524 Pls 1091 551 Pls 1092 504 Pls 1094 564 Pls 1095 486 Pls 1096 565 Pls 1097 525 Pls 1098 506 Pls 1100 507 Pls 1101 545 Pls 1102 540 Pls 1103 545 Pls 1105 524 Pls 1106 2075 Pls 1107 529 Pls 1108 524 Pls 1109 594 Pls 1111 525 Pls 1112 535 Pls 1113 538 Pls 1114 554 Pls 1115 539 Pls 1117 536 Pls 1118 513 Pls 1119 536 Pls 1120 2042 Pls 1122 1023 Pls 1123 2042 Pls 1124 2061 Pls 1125 528 Pls 1126 503 Pls 1128 517 Pls 1129 533 Pls 1130 2095 Pls 1131 2098 Pls 1132 2036 Pls 1134 3531 Pls 1135 516 Pls 1136 545 Pls 1137 540 Pls 1139 2045 Pls 1140 538 Pls 1141 514 Pls 1142 479 Pls 1143 542 Pls 1145 2048 Pls 1146 554 Pls 1147 3531 Pls 1148 485 Pls 1150 2072 Pls 1151 533 Pls 1152 518 Pls 1153 2059 Pls 1154 484 Pls 1156 506 Pls 1157 513 Pls 1158 3525 Pls 1159 516 Pls 1160 561 Pls 1162 524 Pls 1163 2047 Pls 1164 2051 Pls 1165 2044 Pls 1167 2037 Pls 1168 508 Pls 1169 512 Pls 1170 537 Pls 1171 533 Pls 1173 3532 Pls 1174 2053 Pls 1175 551 Pls 1176 528 Pls 1177 507 Pls 1179 2064 Pls 1180 508 Pls 1181 529 Pls 1182 2085 Pls 1184 555 Pls 1185 503 Pls 1186 548 Pls 1187 2082 Pls 1188 2057 Pls 1190 480 Pls 1191 1301 Pls 1192 540 Pls 1193 541 Pls 1195 546 Pls 1196 513 Pls 1197 562 Pls 1198 516 Pls 1199 540 Pls 1201 550 Pls 1202 524 Pls 1203 2082 Pls 1204 496 Pls 1205 538 Pls 1207 533 Pls 1208 2044 Pls 1209 2109 Pls 1210 552 Pls 1212 2081 Pls 1213 3525 Pls 1214 559 Pls 1215 2045 Pls 1216 3620 Pls 1218 3530 Pls 1219 558 Pls 1220 544 Pls 1221 2080 Pls 1222 513 Pls 1224 2056 Pls 1225 538 Pls 1226 533 Pls 1227 536 Pls 1229 2116 Pls 1230 2088 Pls 1231 513 Pls 1232 553 Pls 1233 561 Pls 1235 523 Pls 1236 2058 Pls 1237 524 Pls 1238 537 Pls 1240 3530 Pls 1241 2050 Pls 1242 476 Pls 1243 500 Pls 1244 2083 Pls 1246 2038 Pls 1247 2079 Pls 1248 569 Pls 1249 530 Pls 1250 623 Pls 1252 548 Pls 1253 2034 Pls 1254 2052 Pls 1255 2050 Pls 1257 533 Pls 1258 547 Pls 1259 557 Pls 1260 2835 Pls 1261 558 Pls 1263 545 Pls 1264 524 Pls 1265 503 Pls 1266 483 Pls 1267 524 Pls 1269 505 Pls 1270 508 Pls 1271 536 Pls 1272 539 Pls 1274 517 Pls 1275 548 Pls 1276 538 Pls 1277 2066 Pls 1278 510 Pls 1280 478 Pls 1281 484 Pls 1282 1272 Pls 1283 2064 Pls 1284 3528 Pls 1286 568 Pls 1287 524 Pls 1288 525 Pls 1289 509 Pls 1291 1281 Pls 1292 519 Pls 1293 537 Pls 1294 498 Pls 1295 549 Pls 1297 513 Pls 1298 512 Pls 1299 548 Pls 1300 538 Pls 1302 2036 Pls 1303 515 Pls 1304 507 Pls 1305 533 Pls 1306 2098 Pls 1308 2064 Pls 1309 544 Pls 1310 2069 Pls 1311 536 Pls 1312 580 Pls 1314 546 Pls 1315 2016 Pls 1316 2041 Pls 1317 490 Pls 1319 547 Pls 1320 511 Pls 1321 2066 Pls 1322 1269 Pls 1323 2078 Pls 1325 1286 Pls 1326 538 Pls 1327 2061 Pls 1328 551 Pls 1329 520 Pls 1331 508 Pls 1332 509 Pls 1333 3534 Pls 1334 497 Pls 1336 2096 Pls 1337 533 Pls 1338 539 Pls 1339 496 Pls 1340 496 Pls 1342 532 Pls 1343 514 Pls 1344 2033 Pls 1345 532 Pls 1347 553 Pls 1348 503 Pls 1349 2079 Pls 1350 534 Pls 1351 527 Pls 1353 534 Pls 1354 511 Pls 1355 2032 Pls 1356 559 Pls 1357 555 Pls 1359 2079 Pls 1360 539 Pls 1361 509 Pls 1362 2079 Pls 1364 568 Pls 1365 2096 Pls 1366 2023 Pls 1367 542 Pls 1368 525 Pls 1370 2063 Pls 1371 530 Pls 1372 556 Pls 1373 2045 Pls 1374 577 Pls 1376 539 Pls 1377 567 Pls 1378 2028 Pls 1379 508 Pls 1381 514 Pls 1382 2035 Pls 1383 526 Pls 1384 546 Pls 1385 530 Pls 1387 535 Pls 1388 511 Pls 1389 524 Pls 1390 544 Pls 1392 1240 Pls 1393 500 Pls 1394 531 Pls 1395 2050 Pls 1396 2056 Pls 1398 474 Pls 1399 505 Pls 1400 2096 Pls 1401 2075 Pls 1402 539 Pls 1404 503 Pls 1405 3532 Pls 1406 490 Pls 1407 2129 Pls 1409 520 Pls 1410 525 Pls 1411 511 Pls 1412 499 Pls 1413 486 Pls 1415 497 Pls 1416 533 Pls 1417 2056 Pls 1418 1310 Pls 1419 515 Pls 1421 538 Pls 1422 2047 Pls 1423 542 Pls 1424 500 Pls 1426 2059 Pls 1427 509 Pls 1428 2032 Pls 1429 486 Pls 1430 532 Pls 1432 2045 Pls 1433 2061 Pls 1434 560 Pls 1435 505 Pls 1436 2036 Pls 1438 527 Pls 1439 3533 Pls 1440 492 Pls 1441 521 Pls 1443 2038 Pls 1444 499 Pls 1445 2029 Pls 1446 2066 Pls 1447 2074 Pls 1449 535 Pls 1450 544 Pls 1451 532 Pls 1452 552 Pls 1454 535 Pls 1455 521 Pls 1456 566 Pls 1457 512 Pls 1458 517 Pls 1460 500 Pls 1461 3534 Pls 1462 527 Pls 1463 553 Pls 1464 512 Pls 1466 3528 Pls 1467 525 Pls 1468 2047 Pls 1469 2058 Pls 1471 548 Pls 1472 539 Pls 1473 511 Pls 1474 538 Pls 1475 488 Pls 1477 560 Pls 1478 2029 Pls 1479 2093 Pls 1480 2062 Pls 1481 2058 Pls 1483 507 Pls 1484 499 Pls 1485 519 Pls 1486 525 Pls 1488 527 Pls 1489 534 Pls 1490 522 Pls 1491 556 Pls 1492 532 Pls 1494 501 Pls 1495 2037 Pls 1496 2093 Pls 1497 2041 Pls 1499 532 Pls 1500 510 Pls 1501 3530 Pls 1502 500 Pls 1503 542 Pls 1505 500 Pls 1506 512 Pls 1507 555 Pls 1508 2044 Pls 1509 2054 Pls 1511 2063 Pls 1512 550 Pls 1513 497 Pls 1514 511 Pls 1516 567 Pls 1517 518 Pls 1518 529 Pls 1519 2050 Pls 1520 552 Pls 1522 527 Pls 1523 518 Pls 1524 522 Pls 1525 588 Pls 1526 2037 Pls 1528 560 Pls 1529 485 Pls 1530 566 Pls 1531 484 Pls 1533 516 Pls 1534 2035 Pls 1535 2062 Pls 1536 533 Pls 1537 2054 Pls 1539 516 Pls 1540 2048 Pls 1541 3532 Pls 1542 500 Pls 1544 520 Pls 1545 539 Pls 1546 513 Pls 1547 510 Pls 1548 532 Pls 1550 528 Pls 1551 2038 Pls 1552 530 Pls 1553 2077 Pls 1554 521 Pls 1556 546 Pls 1557 2019 Pls 1558 514 Pls 1559 560 Pls 1561 479 Pls 1562 2016 Pls 1563 496 Pls 1564 503 Pls 1565 485 Pls 1567 533 Pls 1568 2035 Pls 1569 2083 Pls 1570 539 Pls 1571 2034 Pls 1573 483 Pls 1574 545 Pls 1575 2057 Pls 1576 506 Pls 1578 2064 Pls 1579 551 Pls 1580 2048 Pls 1581 573 Pls 1582 2048 Pls 1584 527 Pls 1585 549 Pls 1586 515 Pls 1587 555 Pls 1588 2072 Pls 1590 498 Pls 1591 2027 Pls 1592 2052 Pls 1593 537 Pls 1595 527 Pls 1596 2016 Pls 1597 546 Pls 1598 2112 Pls 1599 542 Pls 1601 521 Pls 1602 2022 Pls 1603 497 Pls 1604 2034 Pls 1606 509 Pls 1607 494 Pls 1608 479 Pls 1609 522 Pls 1610 493 Pls 1612 541 Pls 1613 499 Pls 1614 2053 Pls 1615 3530 Pls 1616 522 Pls 1618 501 Pls 1619 530 Pls 1620 559 Pls 1621 502 Pls 1623 532 Pls 1624 547 Pls 1625 2043 Pls 1626 2032 Pls 1627 507 Pls 1629 2054 Pls 1630 3528 Pls 1631 535 Pls 1632 511 Pls 1633 2061 Pls 1635 2054 Pls 1636 2091 Pls 1637 581 Pls 1638 2091 Pls 1640 561 Pls 1641 539 Pls 1642 510 Pls 1643 2087 Pls 1644 540 Pls 1646 516 Pls 1647 2046 Pls 1648 519 Pls 1649 507 Pls 1651 530 Pls 1652 507 Pls 1653 512 Pls 1654 498 Pls 1655 3585 Pls 1657 522 Pls 1658 3531 Pls 1659 534 Pls 1660 544 Pls 1661 543 Pls 1663 504 Pls 1664 542 Pls 1665 511 Pls 1666 530 Pls 1668 2075 Pls 1669 546 Pls 1670 2042 Pls 1671 491 Pls 1672 501 Pls 1674 512 Pls 1675 524 Pls 1676 473 Pls 1677 499 Pls 1678 540 Pls 1680 512 Pls 1681 491 Pls 1682 2034 Pls 1683 1285 Pls 1685 489 Pls 1686 576 Pls 1687 505 Pls 1688 2036 Pls 1689 526 Pls 1691 513 Pls 1692 2068 Pls 1693 515 Pls 1694 502 Pls 1696 2075 Pls 1697 2019 Pls 1698 3533 Pls 1699 2075 Pls 1700 482 Pls 1702 3528 Pls 1703 2093 Pls 1704 1238 Pls 1705 506 Pls 1706 3536 Pls 1708 511 Pls 1709 540 Pls 1710 2104 Pls 1711 507 Pls 1713 518 Pls 1714 2049 Pls 1715 504 Pls 1716 503 Pls 1717 2056 Pls 1719 502 Pls 1720 1286 Pls 1721 490 Pls 1722 531 Pls 1723 2033 Pls 1725 505 Pls 1726 2070 Pls 1727 567 Pls 1728 2041 Pls 1730 2049 Pls 1731 569 Pls 1732 526 Pls 1733 521 Pls 1734 477 Pls 1736 573 Pls 1737 531 Pls 1738 2037 Pls 1739 513 Pls 1740 532 Pls 1742 485 Pls 1743 2074 Pls 1744 4360 Pls 1745 515 Pls 1747 2018 Pls 1748 470 Pls 1749 492 Pls 1750 544 Pls 1751 528 Pls 1753 2062 Pls 1754 523 Pls 1755 2075 Pls 1756 512 Pls 1758 490 Pls 1759 2020 Pls 1760 515 Pls 1761 528 Pls 1762 514 Pls 1764 492 Pls 1765 495 Pls 1766 593 Pls 1767 2051 Pls 1768 492 Pls 1770 563 Pls 1771 504 Pls 1772 2067 Pls 1773 530 Pls 1775 519 Pls 1776 3529 Pls 1777 544 Pls 1778 516 Pls 1779 2034 Pls 1781 480 Pls 1782 553 Pls 1783 522 Pls 1784 530 Pls 1785 483 Pls 1787 2048 Pls 1788 525 Pls 1789 516 Pls 1790 516 Pls 1792 2073 Pls 1793 530 Pls 1794 501 Pls 1795 2047 Pls 1796 531 Pls 1798 562 Pls 1799 514 Pls 1800 509 Pls 1801 540 Pls 1803 2056 Pls 1804 518 Pls 1805 515 Pls 1806 2046 Pls 1807 568 Pls 1809 515 Pls 1810 513 Pls 1811 501 Pls 1812 476 Pls 1813 2061 Pls 1815 2024 Pls 1816 2066 Pls 1817 504 Pls 1818 483 Pls 1820 498 Pls 1821 527 Pls 1822 3530 Pls 1823 2104 Pls 1824 539 Pls 1826 522 Pls 1827 542 Pls 1828 511 Pls 1829 2039 Pls 1830 560 Pls 1832 485 Pls 1833 558 Pls 1834 3531 Pls 1835 3533 Pls 1837 2103 Pls 1838 520 Pls 1839 2825 Pls 1840 568 Pls 1841 509 Pls 1843 514 Pls 1844 3532 Pls 1845 518 Pls 1846 2057 Pls 1848 501 Pls 1849 517 Pls 1850 524 Pls 1851 521 Pls 1852 521 Pls 1854 495 Pls 1855 529 Pls 1856 502 Pls 1857 496 Pls 1858 565 Pls 1860 522 Pls 1861 2812 Pls 1862 517 Pls 1863 507 Pls 1865 2060 Pls 1866 506 Pls 1867 503 Pls 1868 557 Pls 1869 2036 Pls 1871 3631 Pls 1872 2075 Pls 1873 524 Pls 1874 505 Pls 1875 2039 Pls 1877 554 Pls 1878 550 Pls 1879 513 Pls 1880 526 Pls 1882 547 Pls 1883 1273 Pls 1884 493 Pls 1885 2070 Pls 1886 531 Pls 1888 513 Pls 1889 2807 Pls 1890 547 Pls 1891 534 Pls 1892 500 Pls 1894 544 Pls 1895 576 Pls 1896 2055 Pls 1897 499 Pls 1899 532 Pls 1900 513 Pls 1901 505 Pls 1902 517 Pls 1903 517 Pls 1905 505 Pls 1906 529 Pls 1907 519 Pls 1908 538 Pls 1910 2054 Pls 1911 532 Pls 1912 483 Pls 1913 542 Pls 1914 527 Pls 1916 1273 Pls 1917 516 Pls 1918 512 Pls 1919 3530 Pls 1920 2046 Pls 1922 527 Pls 1923 527 Pls 1924 512 Pls 1925 548 Pls 1927 2024 Pls 1928 477 Pls 1929 2055 Pls 1930 513 Pls 1931 514 Pls 1933 521 Pls 1934 512 Pls 1935 517 Pls 1936 517 Pls 1937 498 Pls 1939 487 Pls 1940 505 Pls 1941 515 Pls 1942 494 Pls 1944 521 Pls 1945 2047 Pls 1946 2038 Pls 1947 500 Pls 1948 522 Pls 1950 486 Pls 1951 579 Pls 1952 512 Pls 1953 529 Pls 1955 2065 Pls 1956 515 Pls 1957 498 Pls 1958 477 Pls 1959 2073 Pls 1961 2024 Pls 1962 3531 Pls 1963 2045 Pls 1964 530 Pls 1965 2025 Pls 1967 3532 Pls 1968 2055 Pls 1969 514 Pls 1970 564 Pls 1972 467 Pls 1973 535 Pls 1974 2055 Pls 1975 3530 Pls 1976 2040 Pls 1978 2036 Pls 1979 534 Pls 1980 2030 Pls 1981 531 Pls 1982 492 Pls 1984 521 Pls 1985 2072 Pls 1986 534 Pls 1987 511 Pls 1989 505 Pls 1990 2091 Pls 1991 515 Pls 1992 504 Pls 1993 500 Pls 1995 504 Pls 1996 537 Pls 1997 2021 Pls 1998 491 Pls 2000 2043 Pls 2001 2029 Pls 2002 2021 Pls 2003 490 Pls 2004 493 Pls 2006 531 Pls 2007 4300 Pls 2008 521 Pls 2009 538 Pls 2010 556 Pls 2012 509 Pls 2013 2038 Pls 2014 534 Pls 2015 1253 Pls 2017 517 Pls 2018 469 Pls 2019 531 Pls 2020 2030 Pls 2021 519 Pls 2023 522 Pls 2024 1268 Pls 2025 501 Pls 2026 522 Pls 2027 494 Pls 2029 562 Pls 2030 498 Pls 2031 2049 Pls 2032 504 Pls 2034 507 Pls 2035 2021 Pls 2036 515 Pls 2037 531 Pls 2038 476 Pls 2040 599 Pls 2041 511 Pls 2042 555 Pls 2043 2030 Pls 2044 2111 Pls 2046 515 Pls 2047 509 Pls 2048 3532 Pls 2049 530 Pls 2051 499 Pls 2052 526 Pls 2053 518 Pls 2054 516 Pls 2055 515 Pls 2057 987 Pls 2058 547 Pls 2059 537 Pls 2060 501 Pls 2062 2050 Pls 2063 518 Pls 2064 557 Pls 2065 525 Pls 2066 536 Pls 2068 547 Pls 2069 2064 Pls 2070 548 Pls 2071 2043 Pls 2072 539 Pls 2074 541 Pls 2075 530 Pls 2076 505 Pls 2077 514 Pls 2079 536 Pls 2080 2810 Pls 2081 487 Pls 2082 561 Pls 2083 510 Pls 2085 530 Pls 2086 517 Pls 2087 581 Pls 2088 497 Pls 2089 520 Pls 2091 526 Pls 2092 524 Pls 2093 560 Pls 2094 532 Pls 2096 540 Pls 2097 2045 Pls 2098 527 Pls 2099 554 Pls 2100 494 Pls 2102 506 Pls 2103 512 Pls 2104 514 Pls 2105 534 Pls 2107 473 Pls 2108 2039 Pls 2109 502 Pls 2110 2059 Pls 2111 482 Pls 2113 508 Pls 2114 504 Pls 2115 503 Pls 2116 527 Pls 2117 487 Pls 2119 512 Pls 2120 518 Pls 2121 501 Pls 2122 516 Pls 2124 489 Pls 2125 504 Pls 2126 524 Pls 2127 522 Pls 2128 2046 Pls 2130 522 Pls 2131 2065 Pls 2132 551 Pls 2133 2058 Pls 2134 524 Pls 2136 2047 Pls 2137 544 Pls 2138 535 Pls 2139 2027 Pls 2141 584 Pls 2142 537 Pls 2143 564 Pls 2144 508 Pls 2145 514 Pls 2147 3533 Pls 2148 539 Pls 2149 2033 Pls 2150 488 Pls 2152 478 Pls 2153 514 Pls 2154 500 Pls 2155 525 Pls 2156 2045 Pls 2158 529 Pls 2159 533 Pls 2160 541 Pls 2161 2081 Pls 2162 2048 Pls 2164 534 Pls 2165 509 Pls 2166 485 Pls 2167 509 Pls 2169 503 Pls 2170 538 Pls 2171 2026 Pls 2172 504 Pls 2173 524 Pls 2175 3531 Pls 2176 2066 Pls 2177 2808 Pls 2178 603 Pls 2179 495 Pls 2181 532 Pls 2182 490 Pls 2183 1308 Pls 2184 504 Pls 2186 506 Pls 2187 487 Pls 2188 515 Pls 2189 2028 Pls 2190 515 Pls 2192 530 Pls 2193 506 Pls 2194 541 Pls 2195 2078 Pls 2196 1292 Pls 2198 499 Pls 2199 489 Pls 2200 2065 Pls 2201 540 Pls 2203 593 Pls 2204 463 Pls 2205 3532 Pls 2206 1321 Pls 2207 547 Pls 2209 495 Pls 2210 514 Pls 2211 475 Pls 2212 2042 Pls 2214 521 Pls 2215 507 Pls 2216 495 Pls 2217 505 Pls 2218 479 Pls 2220 512 Pls 2221 488 Pls 2222 527 Pls 2223 549 Pls 2224 2070 Pls 2226 501 Pls 2227 542 Pls 2228 542 Pls 2229 507 Pls 2231 2077 Pls 2232 535 Pls 2233 486 Pls 2234 3533 Pls 2235 547 Pls 2237 3530 Pls 2238 2046 Pls 2239 3616 Pls 2240 2048 Pls 2241 3535 Pls 2243 3539 Pls 2244 2015 Pls 2245 500 Pls 2246 545 Pls 2248 522 Pls 2249 2053 Pls 2250 3537 Pls 2251 490 Pls 2252 541 Pls 2254 496 Pls 2255 521 Pls 2256 500 Pls 2257 499 Pls 2259 520 Pls 2260 576 Pls 2261 535 Pls 2262 546 Pls 2263 521 Pls 2265 529 Pls 2266 534 Pls 2267 487 Pls 2268 515 Pls 2269 1255 Pls 2271 531 Pls 2272 533 Pls 2273 491 Pls 2274 497 Pls 2276 551 Pls 2277 541 Pls 2278 556 Pls 2279 2047 Pls 2280 507 Pls 2282 498 Pls 2283 514 Pls 2284 510 Pls 2285 2060 Pls 2286 2048 Pls 2288 2053 Pls 2289 3543 Pls 2290 2058 Pls 2291 477 Pls 2293 506 Pls 2294 3534 Pls 2295 534 Pls 2296 2082 Pls 2297 512 Pls 2299 502 Pls 2300 527 Pls 2301 518 Pls 2302 3533 Pls 2304 3535 Pls 2305 501 Pls 2306 2041 Pls 2307 489 Pls 2308 2110 Pls 2310 1336 Pls 2311 507 Pls 2312 505 Pls 2313 486 Pls 2314 539 Pls 2316 541 Pls 2317 2093 Pls 2318 524 Pls 2319 534 Pls 2321 513 Pls 2322 507 Pls 2323 2068 Pls 2324 489 Pls 2325 496 Pls 2327 540 Pls 2328 2038 Pls 2329 522 Pls 2330 3540 Pls 2331 509 Pls 2333 503 Pls 2334 485 Pls 2335 527 Pls 2336 3534 Pls 2338 494 Pls 2339 520 Pls 2340 506 Pls 2341 3533 Pls 2342 516 Pls 2344 2055 Pls 2345 506 Pls 2346 2029 Pls 2347 547 Pls 2348 518 Pls 2350 523 Pls 2351 524 Pls 2352 537 Pls 2353 513 Pls 2355 508 Pls 2356 531 Pls 2357 565 Pls 2358 3534 Pls 2359 511 Pls 2361 499 Pls 2362 568 Pls 2363 530 Pls 2364 539 Pls 2366 2063 Pls 2367 527 Pls 2368 586 Pls 2369 503 Pls 2370 516 Pls 2372 2061 Pls 2373 488 Pls 2374 2048 Pls 2375 3536 Pls 2376 522 Pls 2378 2091 Pls 2379 2047 Pls 2380 2029 Pls 2381 2067 Pls 2383 559 Pls 2384 527 Pls 2385 504 Pls 2386 513 Pls 2387 552 Pls 2389 522 Pls 2390 509 Pls 2391 2055 Pls 2392 500 Pls 2393 537 Pls 2395 508 Pls 2396 523 Pls 2397 502 Pls 2398 2044 Pls 2400 513 Pls 2401 529 Pls 2402 2057 Pls 2403 498 Pls 2404 524 Pls 2406 498 Pls 2407 530 Pls 2408 498 Pls 2409 549 Pls 2411 573 Pls 2412 529 Pls 2413 489 Pls 2414 519 Pls 2415 2816 Pls 2417 513 Pls 2418 518 Pls 2419 2080 Pls 2420 491 Pls 2421 498 Pls 2423 2021 Pls 2424 2079 Pls 2425 501 Pls 2426 525 Pls 2428 534 Pls 2429 2023 Pls 2430 499 Pls 2431 2027 Pls 2432 524 Pls 2434 2074 Pls 2435 1295 Pls 2436 518 Pls 2437 504 Pls 2438 520 Pls 2440 523 Pls 2441 2066 Pls 2442 502 Pls 2443 2062 Pls 2445 2011 Pls 2446 558 Pls 2447 500 Pls 2448 521 Pls 2449 563 Pls 2451 2050 Pls 2452 1332 Pls 2453 522 Pls 2454 2041 Pls 2456 501 Pls 2457 517 Pls 2458 497 Pls 2459 535 Pls 2460 524 Pls 2462 511 Pls 2463 2031 Pls 2464 512 Pls 2465 2031 Pls 2466 2072 Pls 2468 524 Pls 2469 3536 Pls 2470 2044 Pls 2471 528 Pls 2473 499 Pls 2474 2047 Pls 2475 521 Pls 2476 517 Pls 2477 497 Pls 2479 513 Pls 2480 509 Pls 2481 531 Pls 2482 557 Pls 2483 493 Pls 2485 480 Pls 2486 521 Pls 2487 476 Pls 2488 518 Pls 2490 541 Pls 2491 2043 Pls 2492 523 Pls 2493 2020 Pls 2494 574 Pls 2496 535 Pls 2497 2023 Pls 2498 526 Pls 2499 547 Pls 2500 2078 Pls 2502 3539 Pls 2503 519 Pls 2504 509 Pls 2505 2068 Pls 2507 546 Pls 2508 500 Pls 2509 528 Pls 2510 536 Pls 2511 2031 Pls 2513 493 Pls 2514 536 Pls 2515 469 Pls 2516 521 Pls 2518 529 Pls 2519 548 Pls 2520 2037 Pls 2521 2060 Pls 2522 533 Pls 2524 473 Pls 2525 482 Pls 2526 505 Pls 2527 3533 Pls 2528 3539 Pls 2530 546 Pls 2531 546 Pls 2532 516 Pls 2533 501 Pls 2535 508 Pls 2536 521 Pls 2537 2051 Pls 2538 528 Pls 2539 2087 Pls 2541 548 Pls 2542 490 Pls 2543 520 Pls 2544 530 Pls 2545 495 Pls 2547 509 Pls 2548 2069 Pls 2549 484 Pls 2550 503 Pls 2552 556 Pls 2553 513 Pls 2554 521 Pls 2555 496 Pls 2556 519 Pls 2558 3535 Pls 2559 570 Pls 2560 495 Pls 2561 541 Pls 2563 500 Pls 2564 500 Pls 2565 492 Pls 2566 3542 Pls 2567 511 Pls 2569 2044 Pls 2570 526 Pls 2571 2065 Pls 2572 2862 Pls 2573 520 Pls 2575 533 Pls 2576 529 Pls 2577 2030 Pls 2578 486 Pls 2580 481 Pls 2581 498 Pls 2582 492 Pls 2583 524 Pls 2584 489 Pls 2586 542 Pls 2587 574 Pls 2588 489 Pls 2589 543 Pls 2590 507 Pls 2592 2120 Pls 2593 2034 Pls 2594 2094 Pls 2595 2051 Pls 2597 552 Pls 2598 2066 Pls 2599 548 Pls 2600 476 Pls 2601 477 Pls 2603 530 Pls 2604 2060 Pls 2605 523 Pls 2606 518 Pls 2608 455 Pls 2609 531 Pls 2610 524 Pls 2611 2057 Pls 2612 499 Pls 2614 459 Pls 2615 511 Pls 2616 509 Pls 2617 528 Pls 2618 512 Pls 2620 548 Pls 2621 515 Pls 2622 527 Pls 2623 2047 Pls 2625 536 Pls 2626 487 Pls 2627 539 Pls 2628 2092 Pls 2629 523 Pls 2631 488 Pls 2632 511 Pls 2633 2850 Pls 2634 507 Pls 2635 1269 Pls 2637 529 Pls 2638 487 Pls 2639 473 Pls 2640 1303 Pls 2642 493 Pls 2643 1293 Pls 2644 2036 Pls 2645 2047 Pls 2646 2043 Pls 2648 2058 Pls 2649 2039 Pls 2650 534 Pls 2651 487 Pls 2652 2099 Pls 2654 478 Pls 2655 1304 Pls 2656 3533 Pls 2657 485 Pls 2659 495 Pls 2660 529 Pls 2661 511 Pls 2662 566 Pls 2663 526 Pls 2665 2036 Pls 2666 3535 Pls 2667 524 Pls 2668 530 Pls 2670 3536 Pls 2671 493 Pls 2672 2040 Pls 2673 2085 Pls 2674 479 Pls 2676 512 Pls 2677 2047 Pls 2678 538 Pls 2679 486 Pls 2680 2029 Pls 2682 531 Pls 2683 2033 Pls 2684 535 Pls 2685 502 Pls 2687 2039 Pls 2688 2057 Pls 2689 1286 Pls 2690 2065 Pls 2691 511 Pls 2693 2023 Pls 2694 499 Pls 2695 548 Pls 2696 563 Pls 2697 3535 Pls 2699 483 Pls 2700 556 Pls 2701 2028 Pls 2702 475 Pls 2704 534 Pls 2705 521 Pls 2706 2053 Pls 2707 537 Pls 2708 528 Pls 2710 520 Pls 2711 2058 Pls 2712 2071 Pls 2713 500 Pls 2715 527 Pls 2716 484 Pls 2717 498 Pls 2718 512 Pls 2719 514 Pls 2721 3534 Pls 2722 497 Pls 2723 511 Pls 2724 2063 Pls 2725 534 Pls 2727 2015 Pls 2728 2050 Pls 2729 510 Pls 2730 3534 Pls 2732 523 Pls 2733 503 Pls 2734 515 Pls 2735 2036 Pls 2736 2033 Pls 2738 541 Pls 2739 532 Pls 2740 519 Pls 2741 3532 Pls 2742 545 Pls 2744 524 Pls 2745 512 Pls 2746 508 Pls 2747 495 Pls 2749 499 Pls 2750 514 Pls 2751 525 Pls 2752 568 Pls 2753 2030 Pls 2755 2038 Pls 2756 500 Pls 2757 533 Pls 2758 474 Pls 2760 540 Pls 2761 501 Pls 2762 513 Pls 2763 3532 Pls 2764 507 Pls 2766 495 Pls 2767 2038 Pls 2768 2077 Pls 2769 507 Pls 2770 518 Pls 2772 2045 Pls 2773 518 Pls 2774 2027 Pls 2775 499 Pls 2777 538 Pls 2778 2055 Pls 2779 558 Pls 2780 533 Pls 2781 566 Pls 2783 479 Pls 2784 2055 Pls 2785 496 Pls 2786 1282 Pls 2787 496 Pls 2789 2005 Pls 2790 513 Pls 2791 498 Pls 2792 541 Pls 2794 527 Pls 2795 1293 Pls 2796 488 Pls 2797 531 Pls 2798 2075 Pls 2800 2067 Pls 2801 549 Pls 2802 514 Pls 2803 2045 Pls 2804 498 Pls 2806 501 Pls 2807 538 Pls 2808 2066 Pls 2809 530 Pls 2811 513 Pls 2812 534 Pls 2813 512 Pls 2814 505 Pls 2815 547 Pls 2817 500 Pls 2818 504 Pls 2819 508 Pls 2820 2060 Pls 2822 474 Pls 2823 571 Pls 2824 2077 Pls 2825 472 Pls 2826 495 Pls 2828 483 Pls 2829 482 Pls 2830 521 Pls 2831 511 Pls 2832 2054 Pls 2834 475 Pls 2835 472 Pls 2836 518 Pls 2837 477 Pls 2839 513 Pls 2840 506 Pls 2841 516 Pls 2842 2069 Pls 2843 553 Pls 2845 508 Pls 2846 506 Pls 2847 507 Pls 2848 2067 Pls 2849 521 Pls 2851 548 Pls 2852 537 Pls 2853 525 Pls 2854 553 Pls 2856 2065 Pls 2857 540 Pls 2858 540 Pls 2859 3533 Pls 2860 509 Pls 2862 531 Pls 2863 2053 Pls 2864 522 Pls 2865 2044 Pls 2867 510 Pls 2868 549 Pls 2869 525 Pls 2870 482 Pls 2871 2043 Pls 2873 2037 Pls 2874 513 Pls 2875 502 Pls 2876 2065 Pls 2877 496 Pls 2879 545 Pls 2880 515 Pls 2881 535 Pls 2882 495 Pls 2884 566 Pls 2885 521 Pls 2886 2037 Pls 2887 537 Pls 2888 539 Pls 2890 2059 Pls 2891 499 Pls 2892 2034 Pls 2893 543 Pls 2894 528 Pls 2896 493 Pls 2897 496 Pls 2898 508 Pls 2899 507 Pls 2901 543 Pls 2902 2056 Pls 2903 538 Pls 2904 2833 Pls 2905 2060 Pls 2907 530 Pls 2908 494 Pls 2909 2060 Pls 2910 2032 Pls 2912 517 Pls 2913 506 Pls 2914 2028 Pls 2915 499 Pls 2916 506 Pls 2918 519 Pls 2919 559 Pls 2920 504 Pls 2921 3529 Pls 2922 512 Pls 2924 492 Pls 2925 482 Pls 2926 500 Pls 2927 503 Pls 2929 497 Pls 2930 2054 Pls 2931 523 Pls 2932 530 Pls 2933 534 Pls 2935 516 Pls 2936 2039 Pls 2937 2052 Pls 2938 524 Pls 2939 3537 Pls 2941 575 Pls 2942 525 Pls 2943 3535 Pls 2944 555 Pls 2946 1276 Pls 2947 500 Pls 2948 2008 Pls 2949 521 Pls 2950 498 Pls 2952 466 Pls 2953 498 Pls 2954 509 Pls 2955 522 Pls 2956 508 Pls 2958 483 Pls 2959 1287 Pls 2960 510 Pls 2961 515 Pls 2963 544 Pls 2964 481 Pls 2965 2068 Pls 2966 2092 Pls 2967 2081 Pls 2969 482 Pls 2970 501 Pls 2971 2026 Pls 2972 2039 Pls 2974 2043 Pls 2975 487 Pls 2976 544 Pls 2977 508 Pls 2978 3533 Pls 2980 546 Pls 2981 540 Pls 2982 519 Pls 2983 483 Pls 2984 2031 Pls 2986 507 Pls 2987 2050 Pls 2988 516 Pls 2989 2021 Pls 2991 510 Pls 2992 498 Pls 2993 514 Pls 2994 493 Pls 2995 506 Pls 2997 520 Pls 2998 484 Pls 2999 542 Pls 3000 516 Pls 3001 506 Pls 3003 476 Pls 3004 486 Pls 3005 499 Pls 3006 552 Pls 3008 536 Pls 3009 2023 Pls 3010 492 Pls 3011 503 Pls 3012 3535 Pls 3014 505 Pls 3015 549 Pls 3016 573 Pls 3017 2018 Pls 3019 2089 Pls 3020 541 Pls 3021 2030 Pls 3022 2022 Pls 3023 552 Pls 3025 465 Pls 3026 508 Pls 3027 481 Pls 3028 508 Pls 3029 516 Pls 3031 511 Pls 3032 535 Pls 3033 2026 Pls 3034 2037 Pls 3036 497 Pls 3037 3536 Pls 3038 520 Pls 3039 512 Pls 3040 543 Pls 3042 512 Pls 3043 489 Pls 3044 1278 Pls 3045 503 Pls 3046 2020 Pls 3048 528 Pls 3049 563 Pls 3050 2062 Pls 3051 503 Pls 3053 3534 Pls 3054 504 Pls 3055 484 Pls 3056 2858 Pls 3057 502 Pls 3059 509 Pls 3060 2044 Pls 3061 553 Pls 3062 517 Pls 3064 514 Pls 3065 483 Pls 3066 2043 Pls 3067 2052 Pls 3068 523 Pls 3070 549 Pls 3071 489 Pls 3072 484 Pls 3073 516 Pls 3074 527 Pls 3076 475 Pls 3077 525 Pls 3078 535 Pls 3079 2034 Pls 3081 495 Pls 3082 544 Pls 3083 2032 Pls 3084 468 Pls 3085 489 Pls 3087 511 Pls 3088 530 Pls 3089 524 Pls 3090 515 Pls 3091 528 Pls 3093 529 Pls 3094 483 Pls 3095 2108 Pls 3096 563 Pls 3098 511 Pls 3099 503 Pls 3100 467 Pls 3101 3532 Pls 3102 514 Pls 3104 2032 Pls 3105 2023 Pls 3106 2049 Pls 3107 2033 Pls 3108 2072 Pls 3110 2052 Pls 3111 2089 Pls 3112 498 Pls 3113 508 Pls 3115 480 Pls 3116 1265 Pls 3117 503 Pls 3118 486 Pls 3119 507 Pls 3121 498 Pls 3122 2104 Pls 3123 523 Pls 3124 1244 Pls 3126 2049 Pls 3127 499 Pls 3128 1304 Pls 3129 507 Pls 3130 487 Pls 3132 2080 Pls 3133 2071 Pls 3134 520 Pls 3135 528 Pls 3136 2830 Pls 3138 2077 Pls 3139 2023 Pls 3140 2045 Pls 3141 2036 Pls 3143 479 Pls 3144 2047 Pls 3145 487 Pls 3146 526 Pls 3147 534 Pls 3149 2042 Pls 3150 529 Pls 3151 2016 Pls 3152 2065 Pls 3153 517 Pls 3155 509 Pls 3156 502 Pls 3157 2039 Pls 3158 498 Pls 3160 558 Pls 3161 490 Pls 3162 491 Pls 3163 494 Pls 3164 530 Pls 3166 526 Pls 3167 3532 Pls 3168 504 Pls 3169 524 Pls 3171 2045 Pls 3172 2052 Pls 3173 514 Pls 3174 540 Pls 3175 506 Pls 3177 507 Pls 3178 2052 Pls 3179 2035 Pls 3180 545 Pls 3181 2044 Pls 3183 495 Pls 3184 1295 Pls 3185 500 Pls 3186 517 Pls 3188 557 Pls 3189 525 Pls 3190 503 Pls 3191 486 Pls 3192 517 Pls 3194 517 Pls 3195 484 Pls 3196 505 Pls 3197 497 Pls 3198 488 Pls 3200 493 Pls 3201 488 Pls 3202 1295 Pls 3203 485 Pls 3205 505 Pls 3206 513 Pls 3207 491 Pls 3208 2043 Pls 3209 2037 Pls 3211 504 Pls 3212 3528 Pls 3213 2089 Pls 3214 2027 Pls 3216 4306 Pls 3217 580 Pls 3218 496 Pls 3219 2020 Pls 3220 2040 Pls 3222 520 Pls 3223 537 Pls 3224 2071 Pls 3225 525 Pls 3226 510 Pls 3228 483 Pls 3229 506 Pls 3230 517 Pls 3231 523 Pls 3233 484 Pls 3234 1251 Pls 3235 560 Pls 3236 2046 Pls 3237 500 Pls 3239 2033 Pls 3240 2039 Pls 3241 502 Pls 3242 519 Pls 3243 526 Pls 3245 502 Pls 3246 509 Pls 3247 504 Pls 3248 501 Pls 3250 504 Pls 3251 538 Pls 3252 2019 Pls 3253 514 Pls 3254 503 Pls 3256 482 Pls 3257 551 Pls 3258 473 Pls 3259 1271 Pls 3260 3534 Pls 3262 524 Pls 3263 520 Pls 3264 499 Pls 3265 2021 Pls 3267 553 Pls 3268 520 Pls 3269 504 Pls 3270 540 Pls 3271 478 Pls 3273 508 Pls 3274 2029 Pls 3275 508 Pls 3276 499 Pls 3278 546 Pls 3279 484 Pls 3280 507 Pls 3281 524 Pls 3282 504 Pls 3284 513 Pls 3285 492 Pls 3286 511 Pls 3287 1318 Pls 3288 521 Pls 3290 524 Pls 3291 490 Pls 3292 499 Pls 3293 2018 Pls 3295 547 Pls 3296 538 Pls 3297 558 Pls 3298 502 Pls 3299 528 Pls 3301 2019 Pls 3302 2036 Pls 3303 522 Pls 3304 466 Pls 3305 2045 Pls 3307 531 Pls 3308 2025 Pls 3309 2069 Pls 3310 474 Pls 3312 488 Pls 3313 497 Pls 3314 500 Pls 3315 507 Pls 3316 495 Pls 3318 510 Pls 3319 533 Pls 3320 529 Pls 3321 534 Pls 3323 492 Pls 3324 501 Pls 3325 513 Pls 3326 3538 Pls 3327 502 Pls 3329 490 Pls 3330 521 Pls 3331 553 Pls 3332 488 Pls 3333 2065 Pls 3335 494 Pls 3336 531 Pls 3337 512 Pls 3338 515 Pls 3340 2800 Pls 3341 539 Pls 3342 550 Pls 3343 2070 Pls 3344 474 Pls 3346 2772 Pls 3347 498 Pls 3348 507 Pls 3349 490 Pls 3350 2028 Pls 3352 477 Pls 3353 487 Pls 3354 453 Pls 3355 2043 Pls 3357 3533 Pls 3358 545 Pls 3359 503 Pls 3360 506 Pls 3361 522 Pls 3363 499 Pls 3364 493 Pls 3365 475 Pls 3366 497 Pls 3368 510 Pls 3369 502 Pls 3370 542 Pls 3371 2051 Pls 3372 2042 Pls 3374 1247 Pls 3375 2045 Pls 3376 516 Pls 3377 536 Pls 3378 2062 Pls 3380 517 Pls 3381 2035 Pls 3382 540 Pls 3383 503 Pls 3385 505 Pls 3386 495 Pls 3387 452 Pls 3388 485 Pls 3389 490 Pls 3391 514 Pls 3392 543 Pls 3393 508 Pls 3394 496 Pls 3395 508 Pls 3397 482 Pls 3398 520 Pls 3399 537 Pls 3400 512 Pls 3402 532 Pls 3403 3533 Pls 3404 522 Pls 3405 509 Pls 3406 503 Pls 3408 503 Pls 3409 517 Pls 3410 482 Pls 3411 483 Pls 3412 2034 Pls 3414 2014 Pls 3415 557 Pls 3416 507 Pls 3417 481 Pls 3419 501 Pls 3420 492 Pls 3421 521 Pls 3422 508 Pls 3423 493 Pls 3425 517 Pls 3426 525 Pls 3427 529 Pls 3428 3533 Pls 3430 492 Pls 3431 2047 Pls 3432 519 Pls 3433 483 Pls 3434 495 Pls 3436 501 Pls 3437 3533 Pls 3438 2040 Pls 3439 518 Pls 3440 554 Pls 3442 523 Pls 3443 510 Pls 3444 499 Pls 3445 1267 Pls 3447 2052 Pls 3448 1289 Pls 3449 467 Pls 3450 2026 Pls 3451 474 Pls 3453 530 Pls 3454 487 Pls 3455 487 Pls 3456 488 Pls 3457 2034 Pls 3459 517 Pls 3460 494 Pls 3461 548 Pls 3462 546 Pls 3464 517 Pls 3465 555 Pls 3466 513 Pls 3467 545 Pls 3468 511 Pls 3470 2052 Pls 3471 2043 Pls 3472 506 Pls 3473 502 Pls 3475 487 Pls 3476 520 Pls 3477 530 Pls 3478 488 Pls 3479 466 Pls 3481 515 Pls 3482 537 Pls 3483 528 Pls 3484 3528 Pls 3485 515 Pls 3487 492 Pls 3488 522 Pls 3489 533 Pls 3490 516 Pls 3492 2008 Pls 3493 2042 Pls 3494 511 Pls 3495 2044 Pls 3496 528 Pls 3498 548 Pls 3499 494 Pls 3500 502 Pls 3501 2068 Pls 3502 493 Pls 3504 495 Pls 3505 517 Pls 3506 535 Pls 3507 525 Pls 3509 2040 Pls 3510 2018 Pls 3511 506 Pls 3512 507 Pls 3513 520 Pls 3515 2045 Pls 3516 503 Pls 3517 518 Pls 3518 529 Pls 3520 539 Pls 3521 488 Pls 3522 2030 Pls 3523 520 Pls 3524 496 Pls 3526 2061 Pls 3527 483 Pls 3528 521 Pls 3529 516 Pls 3530 493 Pls 3532 501 Pls 3533 1258 Pls 3534 479 Pls 3535 505 Pls 3537 2055 Pls 3538 2071 Pls 3539 484 Pls 3540 500 Pls 3541 496 Pls 3543 2052 Pls 3544 549 Pls 3545 514 Pls 3546 505 Pls 3547 2035 Pls 3549 521 Pls 3550 478 Pls 3551 540 Pls 3552 2058 Pls 3554 2032 Pls 3555 1257 Pls 3556 513 Pls 3557 502 Pls 3558 568 Pls 3560 515 Pls 3561 492 Pls 3562 500 Pls 3563 500 Pls 3564 513 Pls 3566 2057 Pls 3567 530 Pls 3568 526 Pls 3569 510 Pls 3571 500 Pls 3572 526 Pls 3573 497 Pls 3574 3535 Pls 3575 523 Pls 3577 2038 Pls 3578 511 Pls 3579 4302 Pls 3580 2014 Pls 3582 506 Pls 3583 519 Pls 3584 525 Pls 3585 475 Pls 3586 526 Pls 3588 541 Pls 3589 511 Pls 3590 2031 Pls 3591 514 Pls 3592 504 Pls 3594 520 Pls 3595 2032 Pls 3596 506 Pls 3597 488 Pls 3599 490 Pls 3600 524 Pls 3601 525 Pls 3602 559 Pls 3603 2037 Pls 3605 480 Pls 3606 532 Pls 3607 2840 Pls 3608 522 Pls 3609 2031 Pls 3611 2045 Pls 3612 495 Pls 3613 499 Pls 3614 512 Pls 3616 545 Pls 3617 546 Pls 3618 493 Pls 3619 550 Pls 3620 513 Pls 3622 1269 Pls 3623 486 Pls 3624 573 Pls 3625 514 Pls 3627 507 Pls 3628 527 Pls 3629 527 Pls 3630 2023 Pls 3631 488 Pls 3633 550 Pls 3634 509 Pls 3635 491 Pls 3636 2056 Pls 3637 502 Pls 3639 494 Pls 3640 2053 Pls 3641 509 Pls 3642 528 Pls 3644 544 Pls 3645 514 Pls 3646 517 Pls 3647 495 Pls 3648 475 Pls 3650 493 Pls 3651 498 Pls 3652 504 Pls 3653 2071 Pls 3654 2047 Pls 3656 2048 Pls 3657 2029 Pls 3658 547 Pls 3659 522 Pls 3661 2054 Pls 3662 490 Pls 3663 477 Pls 3664 1270 Pls 3665 540 Pls 3667 493 Pls 3668 505 Pls 3669 512 Pls 3670 520 Pls 3672 507 Pls 3673 2079 Pls 3674 2020 Pls 3675 522 Pls 3676 3536 Pls 3678 484 Pls 3679 489 Pls 3680 499 Pls 3681 528 Pls 3682 516 Pls 3684 2084 Pls 3685 495 Pls 3686 575 Pls 3687 508 Pls 3689 2034 Pls 3690 485 Pls 3691 3529 Pls 3692 505 Pls 3693 526 Pls 3695 513 Pls 3696 2067 Pls 3697 2060 Pls 3698 554 Pls 3699 562 Pls 3701 2064 Pls 3702 513 Pls 3703 535 Pls 3704 478 Pls 3706 507 Pls 3707 2042 Pls 3708 529 Pls 3709 521 Pls 3710 541 Pls 3712 494 Pls 3713 512 Pls 3714 2050 Pls 3715 552 Pls 3716 539 Pls 3718 507 Pls 3719 2034 Pls 3720 514 Pls 3721 494 Pls 3723 2025 Pls 3724 537 Pls 3725 2055 Pls 3726 1288 Pls 3727 2079 Pls 3729 527 Pls 3730 983 Pls 3731 483 Pls 3732 3536 Pls 3734 493 Pls 3735 482 Pls 3736 503 Pls 3737 2011 Pls 3738 500 Pls 3740 502 Pls 3741 512 Pls 3742 2035 Pls 3743 482 Pls 3744 500 Pls 3746 521 Pls 3747 524 Pls 3748 480 Pls 3749 2043 Pls 3751 3537 Pls 3752 2056 Pls 3753 508 Pls 3754 2034 Pls 3755 487 Pls 3757 517 Pls 3758 484 Pls 3759 509 Pls 3760 2051 Pls 3761 2804 Pls 3763 510 Pls 3764 532 Pls 3765 515 Pls 3766 2020 Pls 3768 481 Pls 3769 501 Pls 3770 499 Pls 3771 478 Pls 3772 504 Pls 3774 515 Pls 3775 531 Pls 3776 2066 Pls 3777 2046 Pls 3779 507 Pls 3780 542 Pls 3781 482 Pls 3782 482 Pls 3783 503 Pls 3785 503 Pls 3786 526 Pls 3787 499 Pls 3788 475 Pls 3789 507 Pls 3791 2055 Pls 3792 500 Pls 3793 500 Pls 3794 541 Pls 3796 473 Pls 3797 517 Pls 3798 511 Pls 3799 489 Pls 3800 487 Pls 3802 2057 Pls 3803 525 Pls 3804 2039 Pls 3805 503 Pls 3806 551 Pls 3808 508 Pls 3809 480 Pls 3810 502 Pls 3811 497 Pls 3813 2075 Pls 3814 2032 Pls 3815 515 Pls 3816 529 Pls 3817 2094 Pls 3819 2054 Pls 3820 530 Pls 3821 549 Pls 3822 490 Pls 3824 469 Pls 3825 488 Pls 3826 3533 Pls 3827 487 Pls 3828 530 Pls 3830 502 Pls 3831 533 Pls 3832 2054 Pls 3833 551 Pls 3834 506 Pls 3836 527 Pls 3837 509 Pls 3838 1276 Pls 3839 2092 Pls 3841 465 Pls 3842 2057 Pls 3843 495 Pls 3844 3535 Pls 3845 477 Pls 3847 490 Pls 3848 523 Pls 3849 523 Pls 3850 505 Pls 3851 528 Pls 3853 507 Pls 3854 2046 Pls 3855 485 Pls 3856 1255 Pls 3858 520 Pls 3859 1264 Pls 3860 465 Pls 3861 487 Pls 3862 515 Pls 3864 1275 Pls 3865 505 Pls 3866 477 Pls 3867 498 Pls 3868 569 Pls 3870 517 Pls 3871 526 Pls 3872 479 Pls 3873 492 Pls 3875 2099 Pls 3876 523 Pls 3877 521 Pls 3878 524 Pls 3879 545 Pls 3881 521 Pls 3882 488 Pls 3883 2042 Pls 3884 501 Pls 3886 2031 Pls 3887 481 Pls 3888 489 Pls 3889 547 Pls 3890 2048 Pls 3892 511 Pls 3893 534 Pls 3894 514 Pls 3895 490 Pls 3896 2046 Pls 3898 542 Pls 3899 2031 Pls 3900 520 Pls 3901 516 Pls 3903 516 Pls 3904 513 Pls 3905 2044 Pls 3906 490 Pls 3907 499 Pls 3909 2031 Pls 3910 522 Pls 3911 490 Pls 3912 494 Pls 3913 495 Pls 3915 529 Pls 3916 499 Pls 3917 544 Pls 3918 524 Pls 3920 492 Pls 3921 494 Pls 3922 509 Pls 3923 1262 Pls 3924 2083 Pls 3926 515 Pls 3927 490 Pls 3928 533 Pls 3929 2071 Pls 3931 2062 Pls 3932 513 Pls 3933 500 Pls 3934 510 Pls 3935 501 Pls 3937 2015 Pls 3938 509 Pls 3939 3532 Pls 3940 501 Pls 3941 489 Pls 3943 499 Pls 3944 486 Pls 3945 554 Pls 3946 1281 Pls 3948 514 Pls 3949 489 Pls 3950 504 Pls 3951 1235 Pls 3952 544 Pls 3954 561 Pls 3955 472 Pls 3956 1262 Pls 3957 3535 Pls 3958 3534 Pls 3960 568 Pls 3961 501 Pls 3962 479 Pls 3963 513 Pls 3965 2080 Pls 3966 509 Pls 3967 538 Pls 3968 2072 Pls 3969 529 Pls 3971 549 Pls 3972 513 Pls 3973 480 Pls 3974 516 Pls 3976 521 Pls 3977 562 Pls 3978 509 Pls 3979 558 Pls 3980 523 Pls 3982 3534 Pls 3983 498 Pls 3984 487 Pls 3985 523 Pls 3986 459 Pls 3988 513 Pls 3989 2036 Pls 3990 491 Pls 3991 507 Pls 3993 528 Pls 3994 474 Pls 3995 2030 Pls 3996 1264 Pls 3997 532 Pls 3999 506 Pls 4000 509 Pls 4001 2050 Pls 4002 487 Pls 4003 542 Pls 4005 503 Pls 4006 528 Pls 4007 481 Pls 4008 1242 Pls 4010 2035 Pls 4011 490 Pls 4012 527 Pls 4013 553 Pls 4014 494 Pls 4016 488 Pls 4017 486 Pls 4018 511 Pls 4019 2024 Pls 4020 527 Pls 4022 497 Pls 4023 2050 Pls 4024 467 Pls 4025 512 Pls 4027 2030 Pls 4028 505 Pls 4029 522 Pls 4030 2055 Pls 4031 1293 Pls 4033 515 Pls 4034 499 Pls 4035 2025 Pls 4036 569 Pls 4038 518 Pls 4039 462 Pls 4040 484 Pls 4041 519 Pls 4042 3535 Pls 4044 504 Pls 4045 2030 Pls 4046 2082 Pls 4047 487 Pls 4048 2071 Pls 4050 506 Pls 4051 512 Pls 4052 502 Pls 4053 489 Pls 4055 482 Pls 4056 497 Pls 4057 530 Pls 4058 494 Pls 4059 539 Pls 4061 1254 Pls 4062 512 Pls 4063 505 Pls 4064 513 Pls 4065 490 Pls 4067 507 Pls 4068 2043 Pls 4069 501 Pls 4070 497 Pls 4072 509 Pls 4073 471 Pls 4074 501 Pls 4075 477 Pls 4076 2066 Pls 4078 474 Pls 4079 492 Pls 4080 500 Pls 4081 548 Pls 4083 545 Pls 4084 523 Pls 4085 475 Pls 4086 518 Pls 4087 503 Pls 4089 519 Pls 4090 499 Pls 4091 513 Pls 4092 536 Pls 4093 486 Pls 4095 479 Pls 4096 544 Pls 4097 555 Pls 4098 517 Pls 4100 515 Pls 4101 493 Pls 4102 509 Pls 4103 2043 Pls 4104 572 Pls 4106 517 Pls 4107 489 Pls 4108 515 Pls 4109 509 Pls 4110 490 Pls 4112 561 Pls 4113 487 Pls 4114 514 Pls 4115 493 Pls 4117 518 Pls 4118 508 Pls 4119 523 Pls 4120 526 Pls 4121 522 Pls 4123 501 Pls 4124 499 Pls 4125 475 Pls 4126 3539 Pls 4128 1284 Pls 4129 512 Pls 4130 519 Pls 4131 513 Pls 4132 485 Pls 4134 483 Pls 4135 507 Pls 4136 3532 Pls 4137 534 Pls 4138 521 Pls 4140 515 Pls 4141 478 Pls 4142 508 Pls 4143 1272 Pls 4145 552 Pls 4146 519 Pls 4147 551 Pls 4148 2022 Pls 4149 2074 Pls 4151 497 Pls 4152 512 Pls 4153 473 Pls 4154 517 Pls 4155 506 Pls 4157 2024 Pls 4158 535 Pls 4159 2022 Pls 4160 2043 Pls 4162 501 Pls 4163 456 Pls 4164 2063 Pls 4165 559 Pls 4166 2028 Pls 4168 481 Pls 4169 471 Pls 4170 506 Pls 4171 2020 Pls 4172 496 Pls 4174 501 Pls 4175 509 Pls 4176 480 Pls 4177 2020 Pls 4179 529 Pls 4180 491 Pls 4181 2054 Pls 4182 475 Pls 4183 509 Pls 4185 2041 Pls 4186 499 Pls 4187 2015 Pls 4188 519 Pls 4190 525 Pls 4191 503 Pls 4192 504 Pls 4193 494 Pls 4194 491 Pls 4196 489 Pls 4197 492 Pls 4198 559 Pls 4199 567 Pls 4200 507 Pls 4202 477 Pls 4203 509 Pls 4204 502 Pls 4205 507 Pls 4207 526 Pls 4208 564 Pls 4209 499 Pls 4210 2037 Pls 4211 486 Pls 4213 511 Pls 4214 524 Pls 4215 2143 Pls 4216 531 Pls 4217 504 Pls 4219 2017 Pls 4220 497 Pls 4221 545 Pls 4222 521 Pls 4224 503 Pls 4225 494 Pls 4226 542 Pls 4227 474 Pls 4228 3620 Pls 4230 510 Pls 4231 3533 Pls 4232 482 Pls 4233 503 Pls 4235 2084 Pls 4236 468 Pls 4237 1243 Pls 4238 534 Pls 4239 2044 Pls 4241 514 Pls 4242 480 Pls 4243 488 Pls 4244 538 Pls 4245 507 Pls 4247 526 Pls 4248 507 Pls 4249 2063 Pls 4250 490 Pls 4252 2026 Pls 4253 491 Pls 4254 2033 Pls 4255 503 Pls 4256 2846 Pls 4258 505 Pls 4259 2055 Pls 4260 530 Pls 4261 482 Pls 4262 2078 Pls 4264 2027 Pls 4265 2074 Pls 4266 488 Pls 4267 1274 Pls 4269 500 Pls 4270 473 Pls 4271 1285 Pls 4272 474 Pls 4273 2044 Pls 4275 2048 Pls 4276 1289 Pls 4277 509 Pls 4278 494 Pls 4280 547 Pls 4281 464 Pls 4282 488 Pls 4283 511 Pls 4284 492 Pls 4286 506 Pls 4287 494 Pls 4288 527 Pls 4289 488 Pls 4290 492 Pls 4292 523 Pls 4293 505 Pls 4294 510 Pls 4295 482 Pls 4297 3537 Pls 4298 472 Pls 4299 507 Pls 4300 491 Pls 4301 2067 Pls 4303 513 Pls 4304 553 Pls 4305 515 Pls 4306 501 Pls 4307 470 Pls 4309 506 Pls 4310 502 Pls 4311 492 Pls 4312 507 Pls 4314 2056 Pls 4315 1277 Pls 4316 471 Pls 4317 3533 Pls 4318 554 Pls 4320 476 Pls 4321 500 Pls 4322 524 Pls 4323 520 Pls 4324 465 Pls 4326 2013 Pls 4327 2059 Pls 4328 1279 Pls 4329 510 Pls 4331 529 Pls 4332 3534 Pls 4333 520 Pls 4334 491 Pls 4335 506 Pls 4337 2015 Pls 4338 531 Pls 4339 511 Pls 4340 2038 Pls 4342 471 Pls 4343 489 Pls 4344 497 Pls 4345 486 Pls 4346 509 Pls 4348 499 Pls 4349 497 Pls 4350 484 Pls 4351 487 Pls 4352 2069 Pls 4354 484 Pls 4355 480 Pls 4356 498 Pls 4357 498 Pls 4359 495 Pls 4360 495 Pls 4361 492 Pls 4362 506 Pls 4363 495 Pls 4365 510 Pls 4366 518 Pls 4367 519 Pls 4368 500 Pls 4369 491 Pls 4371 485 Pls 4372 1265 Pls 4373 2073 Pls 4374 499 Pls 4376 499 Pls 4377 482 Pls 4378 510 Pls 4379 1245 Pls 4380 465 Pls 4382 494 Pls 4383 2097 Pls 4384 537 Pls 4385 506 Pls 4387 493 Pls 4388 499 Pls 4389 537 Pls 4390 456 Pls 4391 503 Pls 4393 489 Pls 4394 523 Pls 4395 478 Pls 4396 533 Pls 4397 472 Pls 4399 2075 Pls 4400 2036 Pls 4401 512 Pls 4402 507 Pls 4404 484 Pls 4405 485 Pls 4406 525 Pls 4407 489 Pls 4408 2064 Pls 4410 507 Pls 4411 490 Pls 4412 525 Pls 4413 3531 Pls 4414 506 Pls 4416 524 Pls 4417 469 Pls 4418 518 Pls 4419 2036 Pls 4421 2056 Pls 4422 521 Pls 4423 546 Pls 4424 2082 Pls 4425 522 Pls 4427 492 Pls 4428 496 Pls 4429 2045 Pls 4430 514 Pls 4432 539 Pls 4433 484 Pls 4434 2116 Pls 4435 496 Pls 4436 534 Pls 4438 2046 Pls 4439 559 Pls 4440 484 Pls 4441 493 Pls 4442 515 Pls 4444 486 Pls 4445 528 Pls 4446 559 Pls 4447 496 Pls 4449 503 Pls 4450 487 Pls 4451 3617 Pls 4452 479 Pls 4453 526 Pls 4455 519 Pls 4456 514 Pls 4457 500 Pls 4458 2028 Pls 4459 3532 Pls 4461 503 Pls 4462 500 Pls 4463 482 Pls 4464 555 Pls 4466 504 Pls 4467 503 Pls 4468 529 Pls 4469 516 Pls 4470 512 Pls 4472 518 Pls 4473 466 Pls 4474 2064 Pls 4475 522 Pls 4476 525 Pls 4478 506 Pls 4479 492 Pls 4480 2060 Pls 4481 517 Pls 4483 511 Pls 4484 512 Pls 4485 486 Pls 4486 596 Pls 4487 494 Pls 4489 474 Pls 4490 498 Pls 4491 526 Pls 4492 574 Pls 4494 534 Pls 4495 2061 Pls 4496 506 Pls 4497 496 Pls 4498 503 Pls 4500 513 Pls 4501 1271 Pls 4502 503 Pls 4503 530 Pls 4504 539 Pls 4506 549 Pls 4507 504 Pls 4508 487 Pls 4509 1312 Pls 4511 474 Pls 4512 533 Pls 4513 484 Pls 4514 2080 Pls 4515 2020 Pls 4517 469 Pls 4518 507 Pls 4519 506 Pls 4520 512 Pls 4521 2031 Pls 4523 3533 Pls 4524 505 Pls 4525 487 Pls 4526 2040 Pls 4528 466 Pls 4529 493 Pls 4530 532 Pls 4531 573 Pls 4532 2023 Pls 4534 502 Pls 4535 519 Pls 4536 548 Pls 4537 513 Pls 4539 2037 Pls 4540 489 Pls 4541 462 Pls 4542 2034 Pls 4543 498 Pls 4545 516 Pls 4546 460 Pls 4547 521 Pls 4548 2031 Pls 4549 505 Pls 4551 510 Pls 4552 515 Pls 4553 3532 Pls 4554 506 Pls 4556 509 Pls 4557 521 Pls 4558 530 Pls 4559 519 Pls 4560 506 Pls 4562 506 Pls 4563 518 Pls 4564 496 Pls 4565 508 Pls 4566 517 Pls 4568 491 Pls 4569 507 Pls 4570 2027 Pls 4571 2056 Pls 4573 467 Pls 4574 507 Pls 4575 494 Pls 4576 516 Pls 4577 476 Pls 4579 516 Pls 4580 3534 Pls 4581 2070 Pls 4582 512 Pls 4584 480 Pls 4585 482 Pls 4586 503 Pls 4587 482 Pls 4588 490 Pls 4590 465 Pls 4591 506 Pls 4592 2025 Pls 4593 455 Pls 4594 515 Pls 4596 522 Pls 4597 510 Pls 4598 504 Pls 4599 535 Pls 4601 504 Pls 4602 2055 Pls 4603 465 Pls 4604 2038 Pls 4605 527 Pls 4607 499 Pls 4608 494 Pls 4609 489 Pls 4610 506 Pls 4611 2080 Pls 4613 525 Pls 4614 3534 Pls 4615 494 Pls 4616 466 Pls 4618 533 Pls 4619 487 Pls 4620 484 Pls 4621 534 Pls 4622 2012 Pls 4624 528 Pls 4625 2044 Pls 4626 509 Pls 4627 487 Pls 4628 2065 Pls 4630 2034 Pls 4631 509 Pls 4632 493 Pls 4633 2014 Pls 4635 465 Pls 4636 481 Pls 4637 2032 Pls 4638 495 Pls 4639 511 Pls 4641 466 Pls 4642 1271 Pls 4643 547 Pls 4644 532 Pls 4646 490 Pls 4647 512 Pls 4648 469 Pls 4649 493 Pls 4650 504 Pls 4652 2032 Pls 4653 491 Pls 4654 506 Pls 4655 481 Pls 4656 508 Pls 4658 2042 Pls 4659 504 Pls 4660 502 Pls 4661 502 Pls 4663 467 Pls 4664 2015 Pls 4665 2036 Pls 4666 500 Pls 4667 506 Pls 4669 2045 Pls 4670 503 Pls 4671 506 Pls 4672 536 Pls 4673 484 Pls 4675 516 Pls 4676 505 Pls 4677 454 Pls 4678 490 Pls 4680 479 Pls 4681 3538 Pls 4682 473 Pls 4683 519 Pls 4684 526 Pls 4686 484 Pls 4687 505 Pls 4688 2047 Pls 4689 515 Pls 4691 487 Pls 4692 502 Pls 4693 509 Pls 4694 526 Pls 4695 2024 Pls 4697 534 Pls 4698 500 Pls 4699 478 Pls 4700 545 Pls 4701 514 Pls 4703 450 Pls 4704 489 Pls 4705 523 Pls 4706 501 Pls 4708 503 Pls 4709 2019 Pls 4710 548 Pls 4711 502 Pls 4712 532 Pls 4714 490 Pls 4715 521 Pls 4716 3537 Pls 4717 503 Pls 4718 498 Pls 4720 2019 Pls 4721 2033 Pls 4722 499 Pls 4723 512 Pls 4725 495 Pls 4726 481 Pls 4727 484 Pls 4728 2023 Pls 4729 552 Pls 4731 519 Pls 4732 488 Pls 4733 2051 Pls 4734 523 Pls 4736 516 Pls 4737 511 Pls 4738 496 Pls 4739 480 Pls 4740 486 Pls 4742 488 Pls 4743 1259 Pls 4744 498 Pls 4745 475 Pls 4746 503 Pls 4748 2034 Pls 4749 473 Pls 4750 513 Pls 4751 3532 Pls 4753 523 Pls 4754 495 Pls 4755 489 Pls 4756 496 Pls 4757 2015 Pls 4759 528 Pls 4760 516 Pls 4761 533 Pls 4762 467 Pls 4763 564 Pls 4765 522 Pls 4766 2832 Pls 4767 2045 Pls 4768 525 Pls 4770 550 Pls 4771 519 Pls 4772 474 Pls 4773 501 Pls 4774 514 Pls 4776 517 Pls 4777 481 Pls 4778 530 Pls 4779 483 Pls 4780 518 Pls 4782 503 Pls 4783 503 Pls 4784 498 Pls 4785 488 Pls 4787 518 Pls 4788 480 Pls 4789 482 Pls 4790 551 Pls 4791 518 Pls 4793 484 Pls 4794 514 Pls 4795 491 Pls 4796 2055 Pls 4798 490 Pls 4799 488 Pls 4800 2801 Pls 4801 493 Pls 4802 2070 Pls 4804 467 Pls 4805 513 Pls 4806 494 Pls 4807 510 Pls 4808 485 Pls 4810 531 Pls 4811 3534 Pls 4812 518 Pls 4813 479 Pls 4815 525 Pls 4816 512 Pls 4817 1274 Pls 4818 514 Pls 4819 3533 Pls 4821 513 Pls 4822 505 Pls 4823 2024 Pls 4824 488 Pls 4825 2049 Pls 4827 486 Pls 4828 2046 Pls 4829 473 Pls 4830 525 Pls 4832 483 Pls 4833 482 Pls 4834 482 Pls 4835 473 Pls 4836 496 Pls 4838 1272 Pls 4839 540 Pls 4840 516 Pls 4841 505 Pls 4843 511 Pls 4844 464 Pls 4845 2019 Pls 4846 484 Pls 4847 512 Pls 4849 508 Pls 4850 500 Pls 4851 503 Pls 4852 497 Pls 4853 550 Pls 4855 570 Pls 4856 499 Pls 4857 2046 Pls 4858 532 Pls 4860 468 Pls 4861 501 Pls 4862 553 Pls 4863 519 Pls 4864 2018 Pls 4866 504 Pls 4867 500 Pls 4868 491 Pls 4869 492 Pls 4870 2058 Pls 4872 475 Pls 4873 505 Pls 4874 500 Pls 4875 472 Pls 4877 467 Pls 4878 3532 Pls 4879 516 Pls 4880 469 Pls 4881 516 Pls 4883 518 Pls 4884 508 Pls 4885 509 Pls 4886 512 Pls 4888 2031 Pls 4889 504 Pls 4890 1272 Pls 4891 510 Pls 4892 538 Pls 4894 517 Pls 4895 497 Pls 4896 500 Pls 4897 499 Pls 4898 536 Pls 4900 492 Pls 4901 470 Pls 4902 489 Pls 4903 487 Pls 4905 492 Pls 4906 481 Pls 4907 502 Pls 4908 507 Pls 4909 556 Pls 4911 3534 Pls 4912 515 Pls 4913 3534 Pls 4914 513 Pls 4915 2014 Pls 4917 522 Pls 4918 489 Pls 4919 470 Pls 4920 2040 Pls 4922 488 Pls 4923 2029 Pls 4924 508 Pls 4925 3536 Pls 4926 495 Pls 4928 501 Pls 4929 507 Pls 4930 543 Pls 4931 2049 Pls 4932 517 Pls 4934 497 Pls 4935 4304 Pls 4936 495 Pls 4937 501 Pls 4939 3534 Pls 4940 525 Pls 4941 471 Pls 4942 478 Pls 4943 489 Pls 4945 500 Pls 4946 2033 Pls 4947 531 Pls 4948 534 Pls 4950 466 Pls 4951 517 Pls 4952 2069 Pls 4953 465 Pls 4954 498 Pls 4956 2080 Pls 4957 498 Pls 4958 510 Pls 4959 503 Pls 4960 504 Pls 4962 489 Pls 4963 490 Pls 4964 534 Pls 4965 505 Pls 4967 3534 Pls 4968 3540 Pls 4969 480 Pls 4970 504 Pls 4971 498 Pls 4973 3534 Pls 4974 465 Pls 4975 492 Pls 4976 492 Pls 4977 569 Pls 4979 480 Pls 4980 493 Pls 4981 495 Pls 4982 516 Pls 4984 473 Pls 4985 3535 Pls 4986 482 Pls 4987 488 Pls 4988 500 Pls 4990 494 Pls 4991 468 Pls 4992 2054 Pls 4993 560 Pls 4995 513 Pls 4996 500 Pls 4997 524 Pls 4998 2038 Pls 4999 1290 Pls 5001 514 Pls 5002 512 Pls 5003 538 Pls 5004 2029 Pls 5005 504 Pls 5007 497 Pls 5008 3536 Pls 5009 474 Pls 5010 2049 Pls 5012 504 Pls 5013 515 Pls 5014 499 Pls 5015 520 Pls 5016 512 Pls 5018 524 Pls 5019 469 Pls 5020 472 Pls 5021 475 Pls 5022 533 Pls 5024 495 Pls 5025 490 Pls 5026 499 Pls 5027 490 Pls 5029 1273 Pls 5030 476 Pls 5031 493 Pls 5032 3530 Pls 5033 2030 Pls 5035 2043 Pls 5036 562 Pls 5037 2048 Pls 5038 487 Pls 5040 2034 Pls 5041 523 Pls 5042 505 Pls 5043 557 Pls 5044 489 Pls 5046 503 Pls 5047 2075 Pls 5048 473 Pls 5049 477 Pls 5050 511 Pls 5052 517 Pls 5053 500 Pls 5054 505 Pls 5055 488 Pls 5057 473 Pls 5058 537 Pls 5059 487 Pls 5060 491 Pls 5061 491 Pls 5063 469 Pls 5064 502 Pls 5065 510 Pls 5066 2830 Pls 5067 547 Pls 5069 508 Pls 5070 525 Pls 5071 516 Pls 5072 485 Pls 5074 494 Pls 5075 522 Pls 5076 541 Pls 5077 499 Pls 5078 2028 Pls 5080 490 Pls 5081 530 Pls 5082 500 Pls 5083 498 Pls 5084 2039 Pls 5086 535 Pls 5087 496 Pls 5088 494 Pls 5089 499 Pls 5091 483 Pls 5092 522 Pls 5093 490 Pls 5094 507 Pls 5095 510 Pls 5097 474 Pls 5098 1272 Pls 5099 508 Pls 5100 515 Pls 5102 486 Pls 5103 486 Pls 5104 510 Pls 5105 2021 Pls 5106 557 Pls 5108 491 Pls 5109 509 Pls 5110 488 Pls 5111 507 Pls 5112 512 Pls 5114 520 Pls 5115 2017 Pls 5116 2036 Pls 5117 502 Pls 5119 489 Pls 5120 487 Pls 5121 3533 Pls 5122 513 Pls 5123 2078 Pls 5125 513 Pls 5126 485 Pls 5127 490 Pls 5128 519 Pls 5129 482 Pls 5131 513 Pls 5132 1277 Pls 5133 482 Pls 5134 540 Pls 5136 2047 Pls 5137 516 Pls 5138 563 Pls 5139 487 Pls 5140 2041 Pls 5142 504 Pls 5143 508 Pls 5144 3530 Pls 5145 3536 Pls 5147 453 Pls 5148 490 Pls 5149 483 Pls 5150 511 Pls 5151 488 Pls 5153 470 Pls 5154 495 Pls 5155 551 Pls 5156 532 Pls 5157 493 Pls 5159 489 Pls 5160 1310 Pls 5161 493 Pls 5162 476 Pls 5164 574 Pls 5165 494 Pls 5166 507 Pls 5167 489 Pls 5168 496 Pls 5170 489 Pls 5171 499 Pls 5172 520 Pls 5173 481 Pls 5174 498 Pls 5176 471 Pls 5177 489 Pls 5178 490 Pls 5179 495 Pls 5181 496 Pls 5182 501 Pls 5183 490 Pls 5184 499 Pls 5185 467 Pls 5187 2040 Pls 5188 3545 Pls 5189 3533 Pls 5190 515 Pls 5192 471 Pls 5193 553 Pls 5194 522 Pls 5195 506 Pls 5196 518 Pls 5198 545 Pls 5199 492 Pls 5200 510 Pls 5201 2053 Pls 5202 484 Pls 5204 525 Pls 5205 2026 Pls 5206 2805 Pls 5207 509 Pls 5209 2019 Pls 5210 459 Pls 5211 492 Pls 5212 2029 Pls 5213 496 Pls 5215 505 Pls 5216 508 Pls 5217 498 Pls 5218 499 Pls 5219 497 Pls 5221 2039 Pls 5222 505 Pls 5223 482 Pls 5224 488 Pls 5226 3530 Pls 5227 468 Pls 5228 541 Pls 5229 471 Pls 5230 499 Pls 5232 523 Pls 5233 496 Pls 5234 511 Pls 5235 512 Pls 5236 500 Pls 5238 510 Pls 5239 485 Pls 5240 2045 Pls 5241 502 Pls 5243 503 Pls 5244 2057 Pls 5245 491 Pls 5246 489 Pls 5247 471 Pls 5249 501 Pls 5250 478 Pls 5251 471 Pls 5252 501 Pls 5254 502 Pls 5255 496 Pls 5256 491 Pls 5257 507 Pls 5258 524 Pls 5260 487 Pls 5261 509 Pls 5262 453 Pls 5263 488 Pls 5264 475 Pls 5266 497 Pls 5267 521 Pls 5268 506 Pls 5269 509 Pls 5271 516 Pls 5272 511 Pls 5273 511 Pls 5274 498 Pls 5275 487 Pls 5277 501 Pls 5278 1252 Pls 5279 476 Pls 5280 540 Pls 5281 504 Pls 5283 488 Pls 5284 500 Pls 5285 499 Pls 5286 486 Pls 5288 482 Pls 5289 500 Pls 5290 516 Pls 5291 493 Pls 5292 526 Pls 5294 482 Pls 5295 491 Pls 5296 508 Pls 5297 538 Pls 5299 1256 Pls 5300 504 Pls 5301 510 Pls 5302 491 Pls 5303 515 Pls 5305 2060 Pls 5306 474 Pls 5307 486 Pls 5308 2068 Pls 5309 569 Pls 5311 2048 Pls 5312 494 Pls 5313 2786 Pls 5314 486 Pls 5316 535 Pls 5317 515 Pls 5318 3533 Pls 5319 500 Pls 5320 3532 Pls 5322 514 Pls 5323 501 Pls 5324 504 Pls 5325 2023 Pls 5326 2047 Pls 5328 2088 Pls 5329 3532 Pls 5330 491 Pls 5331 484 Pls 5333 504 Pls 5334 531 Pls 5335 533 Pls 5336 494 Pls 5337 2050 Pls 5339 3534 Pls 5340 513 Pls 5341 490 Pls 5342 520 Pls 5344 480 Pls 5345 482 Pls 5346 505 Pls 5347 2069 Pls 5348 484 Pls 5350 551 Pls 5351 2054 Pls 5352 1260 Pls 5353 539 Pls 5354 531 Pls 5356 2075 Pls 5357 486 Pls 5358 487 Pls 5359 507 Pls 5361 511 Pls 5362 525 Pls 5363 2030 Pls 5364 489 Pls 5365 491 Pls 5367 530 Pls 5368 501 Pls 5369 490 Pls 5370 525 Pls 5371 503 Pls 5373 494 Pls 5374 480 Pls 5375 534 Pls 5376 516 Pls 5378 2011 Pls 5379 524 Pls 5380 495 Pls 5381 483 Pls 5382 462 Pls 5384 490 Pls 5385 507 Pls 5386 522 Pls 5387 503 Pls 5388 492 Pls 5390 503 Pls 5391 489 Pls 5392 2040 Pls 5393 467 Pls 5395 477 Pls 5396 517 Pls 5397 513 Pls 5398 2045 Pls 5399 484 Pls 5401 475 Pls 5402 531 Pls 5403 493 Pls 5404 496 Pls 5406 491 Pls 5407 484 Pls 5408 513 Pls 5409 970 Pls 5410 483 Pls 5412 492 Pls 5413 515 Pls 5414 484 Pls 5415 484 Pls 5416 539 Pls 5418 2043 Pls 5419 532 Pls 5420 490 Pls 5421 472 Pls 5423 498 Pls 5424 503 Pls 5425 505 Pls 5426 511 Pls 5427 514 Pls 5429 488 Pls 5430 497 Pls 5431 1283 Pls 5432 480 Pls 5433 491 Pls 5435 479 Pls 5436 497 Pls 5437 499 Pls 5438 475 Pls 5440 490 Pls 5441 2059 Pls 5442 456 Pls 5443 518 Pls 5444 526 Pls 5446 476 Pls 5447 522 Pls 5448 511 Pls 5449 2111 Pls 5451 498 Pls 5452 514 Pls 5453 1239 Pls 5454 2039 Pls 5455 481 Pls 5457 497 Pls 5458 552 Pls 5459 498 Pls 5460 495 Pls 5461 2032 Pls 5463 493 Pls 5464 539 Pls 5465 536 Pls 5466 490 Pls 5468 476 Pls 5469 506 Pls 5470 498 Pls 5471 476 Pls 5472 481 Pls 5474 500 Pls 5475 512 Pls 5476 479 Pls 5477 482 Pls 5478 521 Pls 5480 512 Pls 5481 2042 Pls 5482 509 Pls 5483 526 Pls 5485 506 Pls 5486 505 Pls 5487 485 Pls 5488 554 Pls 5489 2024 Pls 5491 492 Pls 5492 2040 Pls 5493 3532 Pls 5494 535 Pls 5496 500 Pls 5497 491 Pls 5498 506 Pls 5499 484 Pls 5500 516 Pls 5502 493 Pls 5503 482 Pls 5504 543 Pls 5505 1314 Pls 5506 1263 Pls 5508 479 Pls 5509 2022 Pls 5510 502 Pls 5511 1248 Pls 5513 507 Pls 5514 478 Pls 5515 524 Pls 5516 562 Pls 5517 496 Pls 5519 489 Pls 5520 509 Pls 5521 2020 Pls 5522 507 Pls 5523 486 Pls 5525 2030 Pls 5526 486 Pls 5527 2042 Pls 5528 484 Pls 5530 504 Pls 5531 2027 Pls 5532 540 Pls 5533 518 Pls 5534 2022 Pls 5536 515 Pls 5537 488 Pls 5538 497 Pls 5539 467 Pls 5540 498 Pls 5542 487 Pls 5543 488 Pls 5544 491 Pls 5545 1258 Pls 5547 477 Pls 5548 518 Pls 5549 527 Pls 5550 509 Pls 5551 2075 Pls 5553 487 Pls 5554 521 Pls 5555 2033 Pls 5556 505 Pls 5558 1248 Pls 5559 498 Pls 5560 2048 Pls 5561 504 Pls 5562 494 Pls 5564 497 Pls 5565 539 Pls 5566 1266 Pls 5567 501 Pls 5568 492 Pls 5570 479 Pls 5571 499 Pls 5572 495 Pls 5573 509 Pls 5575 518 Pls 5576 492 Pls 5577 1258 Pls 5578 2044 Pls 5579 494 Pls 5581 474 Pls 5582 503 Pls 5583 535 Pls 5584 480 Pls 5585 2048 Pls 5587 2021 Pls 5588 2040 Pls 5589 502 Pls 5590 2097 Pls 5592 503 Pls 5593 523 Pls 5594 543 Pls 5595 508 Pls 5596 497 Pls 5598 2057 Pls 5599 502 Pls 5600 484 Pls 5601 491 Pls 5603 493 Pls 5604 480 Pls 5605 2053 Pls 5606 2026 Pls 5607 522 Pls 5609 503 Pls 5610 490 Pls 5611 503 Pls 5612 481 Pls 5613 475 Pls 5615 2042 Pls 5616 2044 Pls 5617 539 Pls 5618 518 Pls 5620 545 Pls 5621 526 Pls 5622 512 Pls 5623 496 Pls 5624 499 Pls 5626 508 Pls 5627 521 Pls 5628 499 Pls 5629 501 Pls 5630 523 Pls 5632 480 Pls 5633 459 Pls 5634 516 Pls 5635 493 Pls 5637 494 Pls 5638 506 Pls 5639 503 Pls 5640 2807 Pls 5641 522 Pls 5643 3531 Pls 5644 512 Pls 5645 535 Pls 5646 1262 Pls 5648 492 Pls 5649 488 Pls 5650 499 Pls 5651 494 Pls 5652 513 Pls 5654 487 Pls 5655 469 Pls 5656 2034 Pls 5657 475 Pls 5658 2035 Pls 5660 515 Pls 5661 3534 Pls 5662 472 Pls 5663 474 Pls 5665 507 Pls 5666 505 Pls 5667 491 Pls 5668 512 Pls 5669 533 Pls 5671 537 Pls 5672 2029 Pls 5673 517 Pls 5674 539 Pls 5675 511 Pls 5677 499 Pls 5678 513 Pls 5679 518 Pls 5680 2038 Pls 5682 503 Pls 5683 498 Pls 5684 2031 Pls 5685 476 Pls 5686 489 Pls 5688 503 Pls 5689 511 Pls 5690 485 Pls 5691 2024 Pls 5692 2026 Pls 5694 468 Pls 5695 480 Pls 5696 485 Pls 5697 499 Pls 5699 2022 Pls 5700 532 Pls 5701 2055 Pls 5702 2018 Pls 5703 520 Pls 5705 470 Pls 5706 472 Pls 5707 507 Pls 5708 487 Pls 5710 483 Pls 5711 506 Pls 5712 533 Pls 5713 498 Pls 5714 494 Pls 5716 480 Pls 5717 1256 Pls 5718 500 Pls 5719 483 Pls 5720 2034 Pls 5722 2027 Pls 5723 544 Pls 5724 491 Pls 5725 505 Pls 5727 481 Pls 5728 3597 Pls 5729 3533 Pls 5730 527 Pls 5731 489 Pls 5733 494 Pls 5734 489 Pls 5735 1268 Pls 5736 506 Pls 5737 2046 Pls 5739 472 Pls 5740 478 Pls 5741 1265 Pls 5742 512 Pls 5744 504 Pls 5745 517 Pls 5746 485 Pls 5747 466 Pls 5748 2053 Pls 5750 452 Pls 5751 497 Pls 5752 493 Pls 5753 496 Pls 5755 502 Pls 5756 545 Pls 5757 504 Pls 5758 475 Pls 5759 481 Pls 5761 509 Pls 5762 496 Pls 5763 2048 Pls 5764 502 Pls 5765 490 Pls 5767 510 Pls 5768 504 Pls 5769 467 Pls 5770 487 Pls 5772 3530 Pls 5773 472 Pls 5774 483 Pls 5775 2076 Pls 5776 497 Pls 5778 529 Pls 5779 487 Pls 5780 481 Pls 5781 499 Pls 5782 476 Pls 5784 517 Pls 5785 513 Pls 5786 495 Pls 5787 501 Pls 5789 470 Pls 5790 508 Pls 5791 501 Pls 5792 483 Pls 5793 493 Pls 5795 486 Pls 5796 560 Pls 5797 499 Pls 5798 577 Pls 5800 498 Pls 5801 536 Pls 5802 1272 Pls 5803 515 Pls 5804 516 Pls 5806 502 Pls 5807 555 Pls 5808 2063 Pls 5809 527 Pls 5810 520 Pls 5812 483 Pls 5813 523 Pls 5814 485 Pls 5815 2067 Pls 5817 509 Pls 5818 475 Pls 5819 547 Pls 5820 496 Pls 5821 476 Pls 5823 469 Pls 5824 479 Pls 5825 524 Pls 5826 499 Pls 5827 475 Pls 5829 490 Pls 5830 2038 Pls 5831 518 Pls 5832 535 Pls 5834 512 Pls 5835 489 Pls 5836 488 Pls 5837 2012 Pls 5838 496 Pls 5840 2042 Pls 5841 484 Pls 5842 2059 Pls 5843 454 Pls 5844 489 Pls 5846 503 Pls 5847 2036 Pls 5848 553 Pls 5849 488 Pls 5851 2031 Pls 5852 512 Pls 5853 2052 Pls 5854 2020 Pls 5855 471 Pls 5857 520 Pls 5858 2064 Pls 5859 2079 Pls 5860 511 Pls 5862 2063 Pls 5863 489 Pls 5864 498 Pls 5865 470 Pls 5866 3530 Pls 5868 513 Pls 5869 526 Pls 5870 2042 Pls 5871 493 Pls 5872 2052 Pls 5874 504 Pls 5875 2037 Pls 5876 505 Pls 5877 2044 Pls 5879 1250 Pls 5880 503 Pls 5881 2050 Pls 5882 498 Pls 5883 504 Pls 5885 492 Pls 5886 482 Pls 5887 503 Pls 5888 458 Pls 5889 499 Pls 5891 501 Pls 5892 480 Pls 5893 2048 Pls 5894 483 Pls 5896 502 Pls 5897 493 Pls 5898 517 Pls 5899 2017 Pls 5900 499 Pls 5902 483 Pls 5903 539 Pls 5904 2048 Pls 5905 496 Pls 5907 507 Pls 5908 552 Pls 5909 521 Pls 5910 3536 Pls 5911 505 Pls 5913 515 Pls 5914 2024 Pls 5915 502 Pls 5916 488 Pls 5917 495 Pls 5919 545 Pls 5920 2041 Pls 5921 498 Pls 5922 2037 Pls 5924 489 Pls 5925 496 Pls 5926 489 Pls 5927 484 Pls 5928 489 Pls 5930 498 Pls 5931 511 Pls 5932 486 Pls 5933 469 Pls 5934 473 Pls 5936 456 Pls 5937 527 Pls 5938 492 Pls 5939 2054 Pls 5941 2034 Pls 5942 2048 Pls 5943 493 Pls 5944 498 Pls 5945 470 Pls 5947 511 Pls 5948 482 Pls 5949 501 Pls 5950 493 Pls 5952 2053 Pls 5953 476 Pls 5954 491 Pls 5955 465 Pls 5956 503 Pls 5958 492 Pls 5959 497 Pls 5960 491 Pls 5961 488 Pls 5962 506 Pls 5964 2062 Pls 5965 488 Pls 5966 478 Pls 5967 521 Pls 5969 476 Pls 5970 538 Pls 5971 532 Pls 5972 482 Pls 5973 491 Pls 5975 474 Pls 5976 483 Pls 5977 514 Pls 5978 484 Pls 5979 2037 Pls 5981 492 Pls 5982 2051 Pls 5983 470 Pls 5984 499 Pls 5986 505 Pls 5987 481 Pls 5988 523 Pls 5989 492 Pls 5990 485 Pls 5992 486 Pls 5993 490 Pls 5994 500 Pls 5995 482 Pls 5996 1247 Pls 5998 543 Pls 5999 516 Pls 6000 533 Pls 6001 508 Pls 6003 472 Pls 6004 512 Pls 6005 500 Pls 6006 501 Pls 6007 510 Pls 6009 500 Pls 6010 490 Pls 6011 554 Pls 6012 502 Pls 6014 501 Pls 6015 529 Pls 6016 505 Pls 6017 511 Pls 6018 477 Pls 6020 495 Pls 6021 2070 Pls 6022 485 Pls 6023 482 Pls 6024 2809 Pls 6026 2024 Pls 6027 486 Pls 6028 519 Pls 6029 480 Pls 6031 514 Pls 6032 467 Pls 6033 492 Pls 6034 505 Pls 6035 478 Pls 6037 508 Pls 6038 480 Pls 6039 494 Pls 6040 475 Pls 6041 515 Pls 6043 485 Pls 6044 515 Pls 6045 494 Pls 6046 532 Pls 6048 486 Pls 6049 516 Pls 6050 520 Pls 6051 514 Pls 6052 493 Pls 6054 499 Pls 6055 499 Pls 6056 2071 Pls 6057 1247 Pls 6059 482 Pls 6060 478 Pls 6061 486 Pls 6062 509 Pls 6063 1258 Pls 6065 514 Pls 6066 484 Pls 6067 478 Pls 6068 527 Pls 6069 559 Pls 6071 487 Pls 6072 506 Pls 6073 1291 Pls 6074 491 Pls 6076 507 Pls 6077 461 Pls 6078 484 Pls 6079 476 Pls 6080 2019 Pls 6082 504 Pls 6083 1242 Pls 6084 530 Pls 6085 2027 Pls 6086 473 Pls 6088 478 Pls 6089 490 Pls 6090 516 Pls 6091 2024 Pls 6093 2051 Pls 6094 2033 Pls 6095 469 Pls 6096 455 Pls 6097 496 Pls 6099 492 Pls 6100 500 Pls 6101 482 Pls 6102 500 Pls 6104 1268 Pls 6105 486 Pls 6106 473 Pls 6107 482 Pls 6108 521 Pls 6110 1282 Pls 6111 486 Pls 6112 491 Pls 6113 490 Pls 6114 1277 Pls 6116 2817 Pls 6117 519 Pls 6118 563 Pls 6119 497 Pls 6121 511 Pls 6122 2075 Pls 6123 2018 Pls 6124 470 Pls 6125 482 Pls 6127 519 Pls 6128 486 Pls 6129 510 Pls 6130 2031 Pls 6131 522 Pls 6133 493 Pls 6134 492 Pls 6135 501 Pls 6136 500 Pls 6138 488 Pls 6139 475 Pls 6140 2046 Pls 6141 2007 Pls 6142 512 Pls 6144 490 Pls 6145 510 Pls 6146 497 Pls 6147 534 Pls 6148 493 Pls 6150 545 Pls 6151 2061 Pls 6152 475 Pls 6153 509 Pls 6155 544 Pls 6156 491 Pls 6157 485 Pls 6158 509 Pls 6159 467 Pls 6161 1268 Pls 6162 2072 Pls 6163 1241 Pls 6164 483 Pls 6166 491 Pls 6167 501 Pls 6168 1273 Pls 6169 477 Pls 6170 472 Pls 6172 3537 Pls 6173 3536 Pls 6174 527 Pls 6175 2015 Pls 6176 498 Pls 6178 492 Pls 6179 2067 Pls 6180 509 Pls 6181 469 Pls 6183 485 Pls 6184 2787 Pls 6185 2023 Pls 6186 492 Pls 6187 503 Pls 6189 487 Pls 6190 506 Pls 6191 3565 Pls 6192 490 Pls 6193 490 Pls 6195 495 Pls 6196 471 Pls 6197 509 Pls 6198 490 Pls 6200 468 Pls 6201 507 Pls 6202 500 Pls 6203 486 Pls 6204 502 Pls 6206 518 Pls 6207 2062 Pls 6208 485 Pls 6209 505 Pls 6211 495 Pls 6212 494 Pls 6213 560 Pls 6214 495 Pls 6215 474 Pls 6217 489 Pls 6218 502 Pls 6219 470 Pls 6220 516 Pls 6221 500 Pls 6223 507 Pls 6224 508 Pls 6225 2050 Pls 6226 2022 Pls 6228 504 Pls 6229 1248 Pls 6230 500 Pls 6231 3535 Pls 6232 513 Pls 6234 477 Pls 6235 463 Pls 6236 2015 Pls 6237 513 Pls 6238 2046 Pls 6240 2017 Pls 6241 494 Pls 6242 2031 Pls 6243 490 Pls 6245 490 Pls 6246 475 Pls 6247 483 Pls 6248 2039 Pls 6249 2044 Pls 6251 506 Pls 6252 489 Pls 6253 1242 Pls 6254 2016 Pls 6256 474 Pls 6257 552 Pls 6258 2019 Pls 6259 489 Pls 6260 542 Pls 6262 521 Pls 6263 507 Pls 6264 456 Pls 6265 532 Pls 6266 486 Pls 6268 502 Pls 6269 2010 Pls 6270 465 Pls 6271 486 Pls 6273 498 Pls 6274 514 Pls 6275 3532 Pls 6276 1241 Pls 6277 482 Pls 6279 2032 Pls 6280 548 Pls 6281 521 Pls 6282 505 Pls 6283 508 Pls 6285 488 Pls 6286 499 Pls 6287 482 Pls 6288 510 Pls 6290 482 Pls 6291 514 Pls 6292 495 Pls 6293 500 Pls 6294 505 Pls 6296 551 Pls 6297 502 Pls 6298 491 Pls 6299 501 Pls 6300 493 Pls 6302 500 Pls 6303 507 Pls 6304 481 Pls 6305 487 Pls 6307 2035 Pls 6308 2034 Pls 6309 506 Pls 6310 469 Pls 6311 500 Pls 6313 533 Pls 6314 494 Pls 6315 468 Pls 6316 509 Pls 6318 499 Pls 6319 3533 Pls 6320 2028 Pls 6321 499 Pls 6322 505 Pls 6324 519 Pls 6325 512 Pls 6326 545 Pls 6327 521 Pls 6328 473 Pls 6330 484 Pls 6331 2038 Pls 6332 513 Pls 6333 511 Pls 6335 491 Pls 6336 494 Pls 6337 475 Pls 6338 480 Pls 6339 471 Pls 6341 2084 Pls 6342 492 Pls 6343 1259 Pls 6344 469 Pls 6345 486 Pls 6347 470 Pls 6348 479 Pls 6349 516 Pls 6350 512 Pls 6352 512 Pls 6353 2027 Pls 6354 497 Pls 6355 496 Pls 6356 479 Pls 6358 2030 Pls 6359 471 Pls 6360 2028 Pls 6361 485 Pls 6363 2796 Pls 6364 2034 Pls 6365 2041 Pls 6366 546 Pls 6367 497 Pls 6369 492 Pls 6370 465 Pls 6371 499 Pls 6372 480 Pls 6373 485 Pls 6375 2052 Pls 6376 2049 Pls 6377 557 Pls 6378 500 Pls 6380 495 Pls 6381 468 Pls 6382 496 Pls 6383 484 Pls 6384 510 Pls 6386 501 Pls 6387 495 Pls 6388 470 Pls 6389 501 Pls 6390 492 Pls 6392 482 Pls 6393 547 Pls 6394 473 Pls 6395 474 Pls 6397 505 Pls 6398 2027 Pls 6399 517 Pls 6400 474 Pls 6401 477 Pls 6403 512 Pls 6404 498 Pls 6405 503 Pls 6406 514 Pls 6408 488 Pls 6409 501 Pls 6410 499 Pls 6411 2048 Pls 6412 486 Pls 6414 479 Pls 6415 523 Pls 6416 488 Pls 6417 505 Pls 6418 509 Pls 6420 463 Pls 6421 484 Pls 6422 518 Pls 6423 501 Pls 6425 507 Pls 6426 474 Pls 6427 509 Pls 6428 2042 Pls 6429 541 Pls 6431 547 Pls 6432 527 Pls 6433 468 Pls 6434 1281 Pls 6435 485 Pls 6437 501 Pls 6438 492 Pls 6439 462 Pls 6440 2042 Pls 6442 474 Pls 6443 538 Pls 6444 2018 Pls 6445 509 Pls 6446 529 Pls 6448 483 Pls 6449 483 Pls 6450 455 Pls 6451 492 Pls 6452 511 Pls 6454 461 Pls 6455 497 Pls 6456 1264 Pls 6457 506 Pls 6459 495 Pls 6460 499 Pls 6461 512 Pls 6462 457 Pls 6463 498 Pls 6465 463 Pls 6466 509 Pls 6467 505 Pls 6468 475 Pls 6470 492 Pls 6471 456 Pls 6472 495 Pls 6473 530 Pls 6474 488 Pls 6476 505 Pls 6477 475 Pls 6478 503 Pls 6479 502 Pls 6480 2048 Pls 6482 1294 Pls 6483 481 Pls 6484 508 Pls 6485 2026 Pls 6487 492 Pls 6488 3539 Pls 6489 500 Pls 6490 496 Pls 6491 532 Pls 6493 456 Pls 6494 500 Pls 6495 507 Pls 6496 2040 Pls 6497 510 Pls 6499 486 Pls 6500 469 Pls 6501 465 Pls 6502 467 Pls 6504 2035 Pls 6505 477 Pls 6506 506 Pls 6507 491 Pls 6508 495 Pls 6510 499 Pls 6511 522 Pls 6512 2032 Pls 6513 494 Pls 6515 497 Pls 6516 488 Pls 6517 492 Pls 6518 499 Pls 6519 498 Pls 6521 518 Pls 6522 482 Pls 6523 478 Pls 6524 500 Pls 6525 2029 Pls 6527 495 Pls 6528 528 Pls 6529 500 Pls 6530 486 Pls 6532 470 Pls 6533 505 Pls 6534 2028 Pls 6535 505 Pls 6536 2056 Pls 6538 525 Pls 6539 528 Pls 6540 497 Pls 6541 2056 Pls 6542 483 Pls 6544 2016 Pls 6545 507 Pls 6546 2005 Pls 6547 2031 Pls 6549 2018 Pls 6550 490 Pls 6551 500 Pls 6552 498 Pls 6553 486 Pls 6555 505 Pls 6556 491 Pls 6557 2068 Pls 6558 482 Pls 6560 2033 Pls 6561 508 Pls 6562 482 Pls 6563 477 Pls 6564 2067 Pls 6566 502 Pls 6567 508 Pls 6568 541 Pls 6569 508 Pls 6570 492 Pls 6572 530 Pls 6573 468 Pls 6574 481 Pls 6575 478 Pls 6577 477 Pls 6578 486 Pls 6579 471 Pls 6580 501 Pls 6581 469 Pls 6583 467 Pls 6584 459 Pls 6585 554 Pls 6586 501 Pls 6587 2031 Pls 6589 462 Pls 6590 503 Pls 6591 2037 Pls 6592 482 Pls 6594 472 Pls 6595 488 Pls 6596 540 Pls 6597 490 Pls 6598 1249 Pls 6600 495 Pls 6601 504 Pls 6602 467 Pls 6603 483 Pls 6604 477 Pls 6606 2021 Pls 6607 487 Pls 6608 487 Pls 6609 2040 Pls 6611 528 Pls 6612 534 Pls 6613 525 Pls 6614 1280 Pls 6615 472 Pls 6617 495 Pls 6618 534 Pls 6619 2028 Pls 6620 2077 Pls 6622 503 Pls 6623 543 Pls 6624 508 Pls 6625 525 Pls 6626 519 Pls 6628 487 Pls 6629 502 Pls 6630 467 Pls 6631 527 Pls 6632 498 Pls 6634 485 Pls 6635 519 Pls 6636 481 Pls 6637 2045 Pls 6639 471 Pls 6640 2023 Pls 6641 472 Pls 6642 508 Pls 6643 3538 Pls 6645 497 Pls 6646 2056 Pls 6647 2027 Pls 6648 493 Pls 6649 496 Pls 6651 471 Pls 6652 502 Pls 6653 489 Pls 6654 494 Pls 6656 503 Pls 6657 513 Pls 6658 504 Pls 6659 471 Pls 6660 523 Pls 6662 518 Pls 6663 2034 Pls 6664 488 Pls 6665 487 Pls 6667 514 Pls 6668 469 Pls 6669 2057 Pls 6670 514 Pls 6671 503 Pls 6673 505 Pls 6674 498 Pls 6675 487 Pls 6676 472 Pls 6677 486 Pls 6679 575 Pls 6680 505 Pls 6681 479 Pls 6682 525 Pls 6684 487 Pls 6685 481 Pls 6686 483 Pls 6687 3532 Pls 6688 1276 Pls 6690 1260 Pls 6691 512 Pls 6692 487 Pls 6693 2039 Pls 6694 489 Pls 6696 482 Pls 6697 487 Pls 6698 513 Pls 6699 536 Pls 6701 524 Pls 6702 506 Pls 6703 507 Pls 6704 2012 Pls 6705 453 Pls 6707 534 Pls 6708 521 Pls 6709 531 Pls 6710 489 Pls 6712 470 Pls 6713 494 Pls 6714 471 Pls 6715 472 Pls 6716 542 Pls 6718 499 Pls 6719 482 Pls 6720 501 Pls 6721 499 Pls 6722 2030 Pls 6724 488 Pls 6725 2017 Pls 6726 483 Pls 6727 1237 Pls 6729 488 Pls 6730 1263 Pls 6731 483 Pls 6732 494 Pls 6733 969 Pls 6735 467 Pls 6736 506 Pls 6737 541 Pls 6738 2057 Pls 6739 511 Pls 6741 3536 Pls 6742 487 Pls 6743 505 Pls 6744 530 Pls 6746 523 Pls 6747 515 Pls 6748 488 Pls 6749 489 Pls 6750 539 Pls 6752 482 Pls 6753 472 Pls 6754 508 Pls 6755 533 Pls 6756 1296 Pls 6758 472 Pls 6759 478 Pls 6760 523 Pls 6761 2048 Pls 6763 501 Pls 6764 482 Pls 6765 481 Pls 6766 488 Pls 6767 494 Pls 6769 485 Pls 6770 475 Pls 6771 500 Pls 6772 494 Pls 6774 497 Pls 6775 530 Pls 6776 2014 Pls 6777 497 Pls 6778 473 Pls 6780 504 Pls 6781 499 Pls 6782 500 Pls 6783 478 Pls 6784 2020 Pls 6786 488 Pls 6787 513 Pls 6788 2066 Pls 6789 492 Pls 6791 513 Pls 6792 497 Pls 6793 469 Pls 6794 494 Pls 6795 2047 Pls 6797 2032 Pls 6798 475 Pls 6799 513 Pls 6800 503 Pls 6801 568 Pls 6803 471 Pls 6804 530 Pls 6805 501 Pls 6806 480 Pls 6808 499 Pls 6809 3538 Pls 6810 458 Pls 6811 467 Pls 6812 502 Pls 6814 2059 Pls 6815 510 Pls 6816 482 Pls 6817 1253 Pls 6819 2017 Pls 6820 499 Pls 6821 492 Pls 6822 484 Pls 6823 507 Pls 6825 489 Pls 6826 486 Pls 6827 497 Pls 6828 497 Pls 6829 513 Pls 6831 2009 Pls 6832 509 Pls 6833 497 Pls 6834 2038 Pls 6836 489 Pls 6837 507 Pls 6838 515 Pls 6839 498 Pls 6840 493 Pls 6842 497 Pls 6843 500 Pls 6844 495 Pls 6845 992 Pls 6846 4304 Pls 6848 500 Pls 6849 2014 Pls 6850 510 Pls 6851 470 Pls 6853 1304 Pls 6854 478 Pls 6855 1265 Pls 6856 478 Pls 6857 3533 Pls 6859 2056 Pls 6860 469 Pls 6861 547 Pls 6862 513 Pls 6864 489 Pls 6865 2030 Pls 6866 488 Pls 6867 480 Pls 6868 506 Pls 6870 2038 Pls 6871 486 Pls 6872 520 Pls 6873 505 Pls 6874 499 Pls 6876 2042 Pls 6877 473 Pls 6878 505 Pls 6879 484 Pls 6881 495 Pls 6882 504 Pls 6883 507 Pls 6884 2060 Pls 6885 2063 Pls 6887 528 Pls 6888 490 Pls 6889 486 Pls 6890 487 Pls 6891 536 Pls 6893 523 Pls 6894 2792 Pls 6895 2014 Pls 6896 472 Pls 6898 521 Pls 6899 513 Pls 6900 494 Pls 6901 478 Pls 6902 526 Pls 6904 502 Pls 6905 3532 Pls 6906 2080 Pls 6907 528 Pls 6908 3534 Pls 6910 1283 Pls 6911 507 Pls 6912 511 Pls 6913 2022 Pls 6915 504 Pls 6916 478 Pls 6917 486 Pls 6918 541 Pls 6919 492 Pls 6921 504 Pls 6922 451 Pls 6923 466 Pls 6924 490 Pls 6926 520 Pls 6927 448 Pls 6928 485 Pls 6929 486 Pls 6930 492 Pls 6932 475 Pls 6933 503 Pls 6934 512 Pls 6935 486 Pls 6936 2060 Pls 6938 498 Pls 6939 517 Pls 6940 499 Pls 6941 500 Pls 6943 502 Pls 6944 2029 Pls 6945 2006 Pls 6946 3532 Pls 6947 487 Pls 6949 495 Pls 6950 492 Pls 6951 531 Pls 6952 474 Pls 6953 486 Pls 6955 511 Pls 6956 467 Pls 6957 472 Pls 6958 508 Pls 6960 498 Pls 6961 508 Pls 6962 513 Pls stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 2623 a Fq(Figur)o(e)f(3.6:)28 b(The)23 b(time)f(it)g(takes)h(to)g(write)f(a)g(data)h(block,)g(for)f(each)i (data)f(block)f(written;)g(the)h(bottom)511 2728 y(layer)c(is)g(shown)f (in)g(Figur)o(e)g(3.7.)512 4898 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2267 @rhi @setspecial %%BeginDocument: test/images/latency-write.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out-totalblock3-write.eps %%Creator: gnuplot 3.7 patchlevel 3 %%CreationDate: Tue Dec 21 11:50:03 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth } def /AL { stroke userlinewidth 2 div setlinewidth } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 798 420 M 63 0 V 6101 0 R -63 0 V 714 420 M ( 0) Rshow 798 865 M 63 0 V 6101 0 R -63 0 V 714 865 M ( 200) Rshow 798 1310 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 400) Rshow 798 1756 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 600) Rshow 798 2201 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 800) Rshow 798 2646 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1000) Rshow 798 3091 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1200) Rshow 798 3536 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1400) Rshow 798 3982 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1600) Rshow 798 4427 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1800) Rshow 798 4872 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 2000) Rshow 798 420 M 0 63 V 0 4389 R 0 -63 V 798 280 M ( 0) Cshow 1414 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 500) Cshow 2031 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 1000) Cshow 2647 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 1500) Cshow 3264 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 2000) Cshow 3880 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 2500) Cshow 4496 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 3000) Cshow 5113 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 3500) Cshow 5729 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 4000) Cshow 6346 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 4500) Cshow 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 5000) Cshow 1.000 UL LTb 798 420 M 6164 0 V 0 4452 V -6164 0 V 798 420 L 140 2646 M currentpoint gsave translate 90 rotate 0 0 M (Latency \(ms\)) Cshow grestore 3880 70 M (Data blocks added) Cshow 2.000 UL LT0 798 420 M 0 3583 V 62 0 V 0 47 V 61 0 V 0 -131 V 62 0 V 0 -139 V 62 0 V 0 -265 V 61 0 V 0 254 V 62 0 V 0 -81 V 61 0 V 0 15 V 62 0 V 0 -222 V 62 0 V 0 80 V 61 0 V 0 42 V 62 0 V 0 -123 V 62 0 V 0 143 V 61 0 V 0 -378 V 62 0 V 0 106 V 62 0 V 0 92 V 61 0 V 0 81 V 62 0 V 0 -286 V 62 0 V 0 33 V 61 0 V 0 401 V 62 0 V 0 -358 V 61 0 V 0 -25 V 62 0 V 0 208 V 62 0 V 0 -360 V 61 0 V 0 409 V 62 0 V 0 -185 V 62 0 V 0 55 V 61 0 V 0 -215 V 62 0 V 62 0 V 0 75 V 61 0 V 0 26 V 62 0 V 0 25 V 61 0 V 0 -11 V 62 0 V 0 30 V 62 0 V 0 -269 V 61 0 V 0 200 V 62 0 V 0 -247 V 62 0 V 0 248 V 61 0 V 0 -172 V 62 0 V 0 66 V 62 0 V 0 -130 V 61 0 V 0 24 V 62 0 V 0 120 V 62 0 V 0 -68 V 61 0 V 0 119 V 62 0 V 0 -55 V 61 0 V 0 109 V 62 0 V 0 -343 V 62 0 V 0 123 V 61 0 V 0 78 V 62 0 V 0 137 V 62 0 V 0 -294 V 61 0 V 0 16 V 62 0 V 0 121 V 62 0 V 0 -38 V 61 0 V 0 -255 V 62 0 V 0 62 V 61 0 V 0 -133 V 62 0 V 0 353 V 62 0 V 0 -27 V 61 0 V 0 -105 V 62 0 V 0 -133 V 62 0 V 0 18 V 61 0 V 0 157 V 62 0 V 0 -159 V 62 0 V 0 88 V 61 0 V 0 -101 V 62 0 V 0 23 V 62 0 V 0 1 V 61 0 V 0 41 V 62 0 V 0 -89 V 61 0 V 0 -113 V 62 0 V 0 156 V 62 0 V 0 148 V 61 0 V 0 -332 V 62 0 V 0 243 V 62 0 V 0 -51 V 61 0 V 0 56 V 62 0 V 0 -23 V 62 0 V 0 -219 V 61 0 V 0 94 V 62 0 V 0 37 V 61 0 V 0 53 V 62 0 V 0 -300 V 62 0 V 0 233 V 61 0 V 0 -151 V 62 0 V 0 163 V 62 0 V 0 -86 V 61 0 V 0 44 V 62 0 V 0 -18 V 62 0 V 0 -88 V 61 0 V 0 23 V 62 0 V 0 -50 V 62 0 V 0 -21 V 61 0 V 0 141 V 62 0 V 0 44 V 61 0 V 0 -65 V 62 0 V 0 -19 V 62 0 V 0 41 V 61 0 V 0 -95 V 62 0 V 0 -2257 V 1.000 UL LT1 798 420 M 0 4283 V 62 0 V 0 96 V 61 0 V 0 -172 V 62 0 V 0 -224 V 62 0 V 0 -266 V 61 0 V 0 308 V 62 0 V 0 54 V 61 0 V 0 -129 V 62 0 V 0 -205 V 62 0 V 0 -4 V 61 0 V 0 161 V 62 0 V 0 -82 V 62 0 V 0 7 V 61 0 V 0 -272 V 62 0 V 0 178 V 62 0 V 0 -21 V 61 0 V 0 27 V 62 0 V 0 -240 V 62 0 V 0 -60 V 61 0 V 0 530 V 62 0 V 0 -374 V 61 0 V 0 141 V 62 0 V 0 37 V 62 0 V 0 -552 V 61 0 V 0 546 V 62 0 V 0 -226 V 62 0 V 0 124 V 61 0 V 0 -231 V 62 0 V 0 165 V 62 0 V 0 46 V 61 0 V 0 -208 V 62 0 V 0 205 V 61 0 V 0 -57 V 62 0 V 0 -13 V 62 0 V 0 -268 V 61 0 V 0 302 V 62 0 V 0 -339 V 62 0 V 0 201 V 61 0 V 0 -150 V 62 0 V 0 138 V 62 0 V 0 -162 V 61 0 V 0 -40 V 62 0 V 0 202 V 62 0 V 0 -200 V 61 0 V 0 164 V 62 0 V 0 16 V 61 0 V 0 151 V 62 0 V 0 -518 V 62 0 V 0 281 V 61 0 V 0 7 V 62 0 V 0 265 V 62 0 V 0 -325 V 61 0 V 0 -87 V 62 0 V 0 149 V 62 0 V 0 -10 V 61 0 V 0 -313 V 62 0 V 0 79 V 61 0 V 0 -240 V 62 0 V 0 489 V 62 0 V 0 109 V 61 0 V 0 -247 V 62 0 V 0 -111 V 62 0 V 0 -24 V 61 0 V 0 192 V 62 0 V 0 -272 V 62 0 V 0 231 V 61 0 V 0 -163 V 62 0 V 0 30 V 62 0 V 0 69 V 61 0 V 0 -143 V 62 0 V 0 97 V 61 0 V 0 -335 V 62 0 V 0 272 V 62 0 V 0 103 V 61 0 V 0 -385 V 62 0 V 0 331 V 62 0 V 0 -52 V 61 0 V 0 32 V 62 0 V 0 -45 V 62 0 V 0 -217 V 61 0 V 0 243 V 62 0 V 0 19 V 61 0 V 0 -91 V 62 0 V 0 -296 V 62 0 V 0 254 V 61 0 V 0 -110 V 62 0 V 0 199 V 62 0 V 0 -223 V 61 0 V 0 206 V 62 0 V 0 -101 V 62 0 V 0 -64 V 61 0 V 0 111 V 62 0 V 0 -255 V 62 0 V 0 153 V 61 0 V 0 79 V 62 0 V 0 156 V 61 0 V 0 -205 V 62 0 V 0 -36 V 62 0 V 0 38 V 61 0 V 0 -55 V 62 0 V 0 -2858 V 1.000 UL LT1 798 420 M 0 2883 V 62 0 V 0 -2 V 61 0 V 0 -91 V 62 0 V 0 -53 V 62 0 V 0 -264 V 61 0 V 0 201 V 62 0 V 0 -217 V 61 0 V 0 160 V 62 0 V 0 -239 V 62 0 V 0 163 V 61 0 V 0 -76 V 62 0 V 0 -165 V 62 0 V 0 278 V 61 0 V 0 -483 V 62 0 V 0 33 V 62 0 V 0 206 V 61 0 V 0 134 V 62 0 V 0 -330 V 62 0 V 0 125 V 61 0 V 0 272 V 62 0 V 0 -342 V 61 0 V 0 -191 V 62 0 V 0 379 V 62 0 V 0 -168 V 61 0 V 0 273 V 62 0 V 0 -145 V 62 0 V 0 -15 V 61 0 V 0 -198 V 62 0 V 0 -165 V 62 0 V 0 105 V 61 0 V 0 259 V 62 0 V 0 -155 V 61 0 V 0 36 V 62 0 V 0 73 V 62 0 V 0 -272 V 61 0 V 0 98 V 62 0 V 0 -153 V 62 0 V 0 294 V 61 0 V 0 -194 V 62 0 V 0 -5 V 62 0 V 0 -99 V 61 0 V 0 87 V 62 0 V 0 39 V 62 0 V 0 64 V 61 0 V 0 74 V 62 0 V 0 -125 V 61 0 V 0 67 V 62 0 V 0 -169 V 62 0 V 0 -35 V 61 0 V 0 149 V 62 0 V 0 8 V 62 0 V 0 -262 V 61 0 V 0 118 V 62 0 V 0 94 V 62 0 V 0 -67 V 61 0 V 0 -196 V 62 0 V 0 45 V 61 0 V 0 -25 V 62 0 V 0 217 V 62 0 V 0 -163 V 61 0 V 0 36 V 62 0 V 0 -156 V 62 0 V 0 61 V 61 0 V 0 122 V 62 0 V 0 -46 V 62 0 V 0 -55 V 61 0 V 0 -40 V 62 0 V 0 17 V 62 0 V 0 -67 V 61 0 V 0 225 V 62 0 V 0 -276 V 61 0 V 0 110 V 62 0 V 0 39 V 62 0 V 0 194 V 61 0 V 0 -278 V 62 0 V 0 154 V 62 0 V 0 -50 V 61 0 V 0 80 V 62 0 V 0 -1 V 62 0 V 0 -221 V 61 0 V 0 -56 V 62 0 V 0 57 V 61 0 V 0 195 V 62 0 V 0 -302 V 62 0 V 0 211 V 61 0 V 0 -192 V 62 0 V 0 127 V 62 0 V 0 52 V 61 0 V 0 -118 V 62 0 V 0 64 V 62 0 V 0 -111 V 61 0 V 0 -66 V 62 0 V 0 155 V 62 0 V 0 -195 V 61 0 V 0 204 V 62 0 V 0 -70 V 61 0 V 0 75 V 62 0 V 0 -1 V 62 0 V 0 44 V 61 0 V 0 -136 V 62 0 V 0 -1655 V stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 5086 a(Figur)o(e)j(3.7:)28 b(The)23 b(middle)g(graph)h(shows)f(the)g(time)f(it)g(takes)h(to)g(write)f(a)h (block)g(to)f(the)h(\002le)g(system)g(as)511 5191 y(mor)o(e)16 b(data)g(blocks)g(have)h(been)e(added.)i(Each)g(data)f(point)g(is)f(an) h(average)h(of)f(the)g(50)h(keys.)f(The)g(standard)511 5296 y(deviation)j(is)f(also)h(plotted)g(as)g(the)g(line)f(above)h(and) g(below)l(.)1831 5662 y Fz(57)p eop %%Page: 58 60 58 59 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(cache)e(to)i(simulate)f(a)f(new)i(node)f(joining)i (the)e(system.)g(After)f(50)g(data)g(blocks)i(r)o(ead)d(the)440 646 y(latency)25 b(is)h(halved,)e(and)h(the)h(test)f(settles)h(on)g (200)d(ms)j(latency)f(after)f(500)g(r)o(ead)g(blocks.)440 760 y(The)k(test)g(shows)h(that)e(the)h(over)o(head)f(of)g(r)o(eading)g (a)g(block)h(will)h(be)e(low)i(for)e(a)g(r)o(eader)440 875 y(that)21 b(has)g(been)g(in)g(the)g(network)h(for)e(some)i(time,)f (wher)o(eas)f(a)g(new)i(node)f(has)g(a)f(notable)440 990 y(latency)-9 b(.)512 3002 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 2267 @rhi @setspecial %%BeginDocument: test/images/latency-read.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: out-totalblock3-read.eps %%Creator: gnuplot 3.7 patchlevel 3 %%CreationDate: Mon Dec 20 13:53:07 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth } def /AL { stroke userlinewidth 2 div setlinewidth } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 798 420 M 63 0 V 6101 0 R -63 0 V 714 420 M ( 0) Rshow 798 1056 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 200) Rshow 798 1692 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 400) Rshow 798 2328 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 600) Rshow 798 2964 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 800) Rshow 798 3600 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1000) Rshow 798 4236 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1200) Rshow 798 4872 M 63 0 V 6101 0 R -63 0 V -6185 0 R ( 1400) Rshow 798 420 M 0 63 V 0 4389 R 0 -63 V 798 280 M ( 0) Cshow 1414 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 500) Cshow 2031 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 1000) Cshow 2647 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 1500) Cshow 3264 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 2000) Cshow 3880 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 2500) Cshow 4496 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 3000) Cshow 5113 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 3500) Cshow 5729 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 4000) Cshow 6346 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 4500) Cshow 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R ( 5000) Cshow 1.000 UL LTb 798 420 M 6164 0 V 0 4452 V -6164 0 V 798 420 L 140 2646 M currentpoint gsave translate 90 rotate 0 0 M (Latency \(ms\)) Cshow grestore 3880 70 M (Data blocks read) Cshow 2.000 UL LT0 798 420 M 0 2750 V 62 0 V 0 -1140 V 61 0 V 0 -136 V 62 0 V 0 -282 V 62 0 V 0 -132 V 61 0 V 0 -77 V 62 0 V 0 -73 V 61 0 V 0 -41 V 62 0 V 0 -37 V 62 0 V 0 -89 V 61 0 V 0 -30 V 62 0 V 0 21 V 62 0 V 0 -20 V 61 0 V 0 5 V 62 0 V 0 -43 V 62 0 V 0 24 V 61 0 V 0 -18 V 62 0 V 0 -18 V 62 0 V 0 8 V 61 0 V 0 -14 V 62 0 V 0 32 V 61 0 V 0 -1 V 62 0 V 0 -9 V 62 0 V 0 42 V 61 0 V 0 -52 V 62 0 V 0 1 V 62 0 V 0 -10 V 61 0 V 0 5 V 62 0 V 0 2 V 62 0 V 0 -14 V 61 0 V 0 45 V 62 0 V 0 -34 V 61 0 V 0 28 V 62 0 V 0 -15 V 62 0 V 0 6 V 61 0 V 0 -27 V 62 0 V 0 -16 V 62 0 V 0 46 V 61 0 V 0 -9 V 62 0 V 0 -16 V 62 0 V 0 58 V 61 0 V 0 -52 V 62 0 V 0 -12 V 62 0 V 0 26 V 61 0 V 0 -28 V 62 0 V 0 -3 V 61 0 V 0 -6 V 62 0 V 0 44 V 62 0 V 0 -28 V 61 0 V 0 32 V 62 0 V 0 -3 V 62 0 V 0 -35 V 61 0 V 0 45 V 62 0 V 0 -37 V 62 0 V 0 10 V 61 0 V 0 3 V 62 0 V 0 -1 V 61 0 V 0 -23 V 62 0 V 0 42 V 62 0 V 0 -21 V 61 0 V 0 11 V 62 0 V 0 -37 V 62 0 V 0 59 V 61 0 V 0 -24 V 62 0 V 0 1 V 62 0 V 0 25 V 61 0 V 0 -13 V 62 0 V 0 34 V 62 0 V 0 -48 V 61 0 V 0 -30 V 62 0 V 0 -13 V 61 0 V 0 66 V 62 0 V 0 -21 V 62 0 V 0 4 V 61 0 V 0 -3 V 62 0 V 0 -6 V 62 0 V 0 -11 V 61 0 V 0 23 V 62 0 V 0 -17 V 62 0 V 0 -33 V 61 0 V 0 67 V 62 0 V 0 -4 V 61 0 V 0 -37 V 62 0 V 0 -7 V 62 0 V 0 -9 V 61 0 V 0 33 V 62 0 V 0 -13 V 62 0 V 0 -5 V 61 0 V 0 35 V 62 0 V 0 -54 V 62 0 V 0 21 V 61 0 V 0 -7 V 62 0 V 0 33 V 62 0 V 0 -19 V 61 0 V 0 -16 V 62 0 V 0 -8 V 61 0 V 0 39 V 62 0 V 0 -44 V 62 0 V 0 36 V 61 0 V 0 -19 V 62 0 V 0 -662 V 1.000 UL LT1 798 420 M 0 3881 V 62 0 V 0 -1657 V 61 0 V 0 -277 V 62 0 V 0 -302 V 62 0 V 0 -121 V 61 0 V 0 -80 V 62 0 V 0 -88 V 61 0 V 0 -148 V 62 0 V 0 -42 V 62 0 V 0 -183 V 61 0 V 0 -35 V 62 0 V 0 -26 V 62 0 V 0 26 V 61 0 V 0 -47 V 62 0 V 0 -43 V 62 0 V 0 -31 V 61 0 V 0 3 V 62 0 V 0 -14 V 62 0 V 0 10 V 61 0 V 0 -41 V 62 0 V 0 31 V 61 0 V 0 36 V 62 0 V 0 -46 V 62 0 V 0 55 V 61 0 V 0 -65 V 62 0 V 0 26 V 62 0 V 0 -34 V 61 0 V 0 -17 V 62 0 V 0 15 V 62 0 V 0 -3 V 61 0 V 0 74 V 62 0 V 0 -81 V 61 0 V 0 65 V 62 0 V 0 -32 V 62 0 V 0 17 V 61 0 V 0 -53 V 62 0 V 0 -16 V 62 0 V 0 58 V 61 0 V 0 -9 V 62 0 V 0 -22 V 62 0 V 0 52 V 61 0 V 0 -62 V 62 0 V 0 -10 V 62 0 V 0 31 V 61 0 V 0 -22 V 62 0 V 0 -17 V 61 0 V 0 1 V 62 0 V 0 83 V 62 0 V 0 -40 V 61 0 V 0 11 V 62 0 V 0 29 V 62 0 V 0 -66 V 61 0 V 0 53 V 62 0 V 0 -35 V 62 0 V 0 19 V 61 0 V 0 -14 V 62 0 V 0 10 V 61 0 V 0 -32 V 62 0 V 0 31 V 62 0 V 0 27 V 61 0 V 0 3 V 62 0 V 0 -52 V 62 0 V 0 40 V 61 0 V 0 -11 V 62 0 V 0 11 V 62 0 V 0 29 V 61 0 V 0 22 V 62 0 V 0 39 V 62 0 V 0 -77 V 61 0 V 0 -48 V 62 0 V 0 -47 V 61 0 V 0 130 V 62 0 V 0 -20 V 62 0 V 0 -7 V 61 0 V 0 -4 V 62 0 V 0 -14 V 62 0 V 0 -8 V 61 0 V 0 16 V 62 0 V 0 -31 V 62 0 V 0 -57 V 61 0 V 0 106 V 62 0 V 0 6 V 61 0 V 0 -71 V 62 0 V 0 36 V 62 0 V 0 -19 V 61 0 V 0 9 V 62 0 V 0 -16 V 62 0 V 0 5 V 61 0 V 0 53 V 62 0 V 0 -104 V 62 0 V 0 48 V 61 0 V 0 -7 V 62 0 V 0 43 V 62 0 V 0 -44 V 61 0 V 0 -8 V 62 0 V 0 -24 V 61 0 V 0 40 V 62 0 V 0 -42 V 62 0 V 0 56 V 61 0 V 0 -16 V 62 0 V 0 -798 V 1.000 UL LT1 798 420 M 0 1620 V 62 0 V 0 -623 V 61 0 V 0 5 V 62 0 V 0 -263 V 62 0 V 0 -144 V 61 0 V 0 -72 V 62 0 V 0 -58 V 61 0 V 0 66 V 62 0 V 0 -33 V 62 0 V 0 5 V 61 0 V 0 -25 V 62 0 V 0 67 V 62 0 V 0 -66 V 61 0 V 0 57 V 62 0 V 0 -42 V 62 0 V 0 79 V 61 0 V 0 -39 V 62 0 V 0 -23 V 62 0 V 0 6 V 61 0 V 0 14 V 62 0 V 0 33 V 61 0 V 0 -38 V 62 0 V 0 28 V 62 0 V 0 30 V 61 0 V 0 -40 V 62 0 V 0 -24 V 62 0 V 0 13 V 61 0 V 0 29 V 62 0 V 0 -12 V 62 0 V 0 -25 V 61 0 V 0 16 V 62 0 V 0 13 V 61 0 V 0 -10 V 62 0 V 0 2 V 62 0 V 0 -4 V 61 0 V 0 -2 V 62 0 V 0 -15 V 62 0 V 0 34 V 61 0 V 0 -10 V 62 0 V 0 -8 V 62 0 V 0 62 V 61 0 V 0 -40 V 62 0 V 0 -15 V 62 0 V 0 21 V 61 0 V 0 -35 V 62 0 V 0 12 V 61 0 V 0 -13 V 62 0 V 0 4 V 62 0 V 0 -16 V 61 0 V 0 54 V 62 0 V 0 -35 V 62 0 V 0 -5 V 61 0 V 0 38 V 62 0 V 0 -40 V 62 0 V 0 2 V 61 0 V 0 20 V 62 0 V 0 -12 V 61 0 V 0 -15 V 62 0 V 0 53 V 62 0 V 0 -68 V 61 0 V 0 20 V 62 0 V 0 -23 V 62 0 V 0 78 V 61 0 V 0 -37 V 62 0 V 0 -10 V 62 0 V 0 21 V 61 0 V 0 -47 V 62 0 V 0 28 V 62 0 V 0 -17 V 61 0 V 0 -14 V 62 0 V 0 21 V 61 0 V 0 2 V 62 0 V 0 -22 V 62 0 V 0 17 V 61 0 V 0 -3 V 62 0 V 0 1 V 62 0 V 0 -14 V 61 0 V 0 31 V 62 0 V 0 -3 V 62 0 V 0 -9 V 61 0 V 0 28 V 62 0 V 0 -14 V 61 0 V 0 -4 V 62 0 V 0 -48 V 62 0 V 0 1 V 61 0 V 0 56 V 62 0 V 0 -11 V 62 0 V 0 -14 V 61 0 V 0 18 V 62 0 V 0 -5 V 62 0 V 0 -6 V 61 0 V 0 -6 V 62 0 V 0 22 V 62 0 V 0 5 V 61 0 V 0 -23 V 62 0 V 0 9 V 61 0 V 0 38 V 62 0 V 0 -47 V 62 0 V 0 17 V 61 0 V 0 -32 V 62 0 V 0 -517 V stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 3190 a Fq(Figur)o(e)15 b(3.8:)28 b(The)16 b(middle)g(graph)i(shows)f(the)f(time)g(it)g(takes)g(to)g(r)o(ead)h(a)f (data)h(block)f(as)g(mor)o(e)h(data)f(blocks)511 3295 y(have)k(been)d(r)o(ead.)i(The)g(standard)g(deviation)g(is)g(also)f (plotted.)565 3507 y Fz(For)24 b(both)h(the)g(r)o(ead)d(and)i(write)h (test,)f(the)h(considerations)g(fr)o(om)f(the)g(pr)o(evious)g(test)440 3621 y(still)33 b(apply;)g(when)g(r)o(eading)e(or)i(writing)h(the)f (same)f(block,)h(almost)g(all)g(keys)g(would)440 3736 y(be)24 b(cached)f(so)i(that)f(the)g(latency)g(is)h(much)g(lower)-6 b(.)24 b(Furthermor)o(e,)f(as)h(explained)f(in)i(the)440 3851 y(beginning)20 b(of)g(this)f(chapter)-6 b(,)18 b(the)i (implementation)g(has)f(not)h(been)f(optimised)h(to)f(pr)o(efer)440 3965 y(low-latency)i(nodes,)g(which)g(might)h(be)f(able)f(to)h(impr)o (ove)f(the)h(r)o(esults)g(considerably)-9 b(.)440 4273 y Fr(3.4)119 b(Distributed)28 b(Mutual)h(Exclusion)h(T)-13 b(ests)440 4477 y Fz(This)27 b(section)h(documents)f(the)g(testing)h (of)e(the)h(pr)o(oposed)g(algorithm)g(for)g(distributed)440 4592 y(mutual)h(exclusion.)g(The)g(essential)g(r)o(equir)o(ements)f (for)h(any)g(mutual)g(exclusion)g(algo-)440 4707 y(rithm)g(is)g(to)f (satisfy)h(two)g(pr)o(operties,)e(namely)h(safety)g(and)g(liveness.)g (Thus,)h(the)f(pur)o(-)440 4821 y(pose)e(of)h(testing)g(is)f(to)h (evaluate)e(whether)i(or)f(not)h(the)g(algorithm)g(satis\002es)f(these) h(two)440 4936 y(pr)o(operties.)31 b(Finally)-9 b(,)33 b(to)g(evaluate)e(the)h(applicability)g(of)h(the)f(algorithm)h(the)g (perfor)o(-)440 5050 y(mance)21 b(characteristics)e(ar)o(e)h(also)h (tested.)565 5165 y(A)29 b(common)j(factor)d(in)i(all)f(tests)h(is)f (that)g(the)h(implemented)f(distributed)g(mutual)440 5279 y(exclusion)d(algorithm)h(is)f(tested)f(under)g(conditions)i(of)f (sever)o(e)e(str)o(ess.)h(This)h(is)g(to)g(test)440 5394 y(the)d(algorithm)h(in)g(a)e(worst)i(case)f(scenario.)f(In)i(a)e(r)o (ealistic)h(setting)h(several)e(conditions)1831 5662 y(58)p eop %%Page: 59 61 59 60 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(vary)e(arbitrarily)-9 b(.)19 b(As)i(examples)f(we)h (list)g(a)g(few)f(below;)565 729 y Fo(\017)41 b Fz(A)20 b(varying)h(number)g(of)f(hosts)i(ranging)f(fr)o(om)g(a)f(few)g(to)i (several)d(thousands.)565 910 y Fo(\017)41 b Fz(A)20 b(varying)h(fr)o(equency)f(of)h(incoming)h(mutex)f(r)o(equests.)565 1091 y Fo(\017)41 b Fz(Due)22 b(to)i(variation)e(in)i(popularity)-9 b(,)22 b(the)h(majority)g(of)g(mutex)g(r)o(equests)g(often)g(per)o(-) 648 1205 y(tain)d(to)i(a)e(minimal)h(subset)g(of)g(the)g(entir)o(e)f(r) o(esour)o(ces)g(\(blocks\))g(in)i(the)f(system.)565 1386 y Fo(\017)41 b Fz(V)-8 b(arying)21 b(network)g(conditions)h(e.g.)f (latency)-9 b(,)20 b(bandwidth,)g(congestion,)i(etc.)565 1567 y Fo(\017)41 b Fz(Heter)o(ogeneous)20 b(nodes)h(in)h(terms)e(of)h (platform)g(and)f(ar)o(chitectur)o(e.)565 1765 y(T)-8 b(o)19 b(vary)f(the)h(above)f(mentioned)i(conditions)g(by)f(random)g (does)g(not)g(seem)g(as)g(a)f(r)o(ea-)440 1880 y(sonable)27 b(solution)h(as)e(it)g(would)h(not)g(simulate)g(r)o(ealistic)e (conditions:)j(as)e(randomness)440 1994 y(scar)o(cely)g(r)o(esembles)g (r)o(eality)-9 b(.)26 b(Mor)o(eover)f(randomness)j(would)f(obfuscate)f (the)h(condi-)440 2109 y(tions)21 b(of)f(the)g(testing)g(envir)o (onment.)g(Hence,)g(to)g(pr)o(oduce)f(comparable)f(r)o(esults)i(during) 440 2223 y(worst)g(case)e(testing)i(of)f(the)h(distributed)f(mutual)g (exclusion)h(algorithm,)f(the)h(following)440 2338 y(assumptions)i(ar)o (e)d(made,)h(beyond)h(those)h(listed)e(in)i(Section)e(3.2.)565 2535 y Fo(\017)41 b Fz(The)22 b(fr)o(equency)g(of)h(mutex)f(r)o (equests)h(is)g(very)f(high.)i(Actually)-9 b(,)21 b(since)i(peers)f (does)648 2650 y(not)28 b(do)g(anything)h(else)e(but)h(r)o(equest)g (mutexes,)f(they)h(r)o(equest)g(all)f(the)h(mutexes)648 2765 y(they)21 b(need)f(as)g(fast)h(as)f(possible.)565 2946 y Fo(\017)41 b Fz(The)20 b(test)g(envir)o(onment)h(is)g(always)f (comprised)h(of)f(993)f(active)h(hosts)h(that)g(acts)f(as)648 3060 y(both)h(mutex)g(r)o(equesters)f(and)g(mutex)h(granters.)440 3320 y Fp(3.4.1)99 b(Safety)440 3493 y Fz(The)23 b(most)g(important)g (pr)o(operty)f(of)h(a)f(mutual)g(exclusion)i(algorithm)f(is)g(safety)-9 b(.)22 b(Safety)440 3608 y(is)j(concerned)g(with)h(the)f(extent)g(to)h (which)g(an)f(algorithm)g(guarantees)g(mutual)g(exclu-)440 3723 y(sion,)32 b(i.e.)e(that)h(only)h(a)f(single)g(pr)o(ocess)g(is)g (allowed)g(to)g(hold)h(a)e(given)i(mutex)f(at)f(any)440 3837 y(time.)35 b(T)-8 b(esting)36 b(whether)f(the)g(algorithm)h (satis\002es)f(the)g(safety)g(pr)o(operty)f(should)i(be)440 3952 y(performed)31 b(by)g(simulating)i(the)f(failur)o(e)e(scenarios)i (listed)g(in)g(Figur)o(e)f(2.2.6,)f(ther)o(eby)440 4066 y(striving)21 b(to)f(br)o(eak)e(the)i(algorithm.)h(Unfortunately)-9 b(,)19 b(this)i(was)f(not)g(possible)h(to)f(achieve)440 4181 y(within)k(the)f(limited)g(time)g(period)f(of)h(this)h(pr)o (oject.)e(Instead,)g(in)h(the)g(following,)h(we)f(ar)o(-)440 4295 y(gue)29 b(that)f(the)h(algorithm)h(indeed)e(satis\002es)h(the)g (safety)f(pr)o(operty)g(and)h(elaborate)e(the)440 4410 y(cases)21 b(wher)o(e)g(safety)g(is)i(br)o(oken)e(by)h(unexpected)f (behaviour)g(of)h(the)g(underlying)g(DHT)440 4524 y(network.)565 4639 y(As)16 b(documented)h(in)g(Section)g(2.2.6)e(the)i(algorithm)h (ensur)o(es)e(safety)h(as)f(long)i(as)f(all)f(of)440 4754 y(the)j(nodes)g(r)o(equesting)g(a)f(mutex)h(for)f(some)i(r)o (esour)o(ce,)d(typically)h(a)h(\002le)g(or)f(a)h(data)e(block,)440 4868 y(agr)o(ees)31 b(on)j(at)e(least)g(one)h(of)g(the)f Fu(r)r Fz(-nodes)h(guar)o(ding)f(the)h(mutex.)f(In)h(the)g(following,) 440 4983 y(nodes)19 b(in)g(the)g(pr)o(ocess)f(of)h(r)o(equesting)g(a)f (mutex)h(is)g(termed)f(client)h(nodes.)g(Client)g(nodes)440 5097 y(can)25 b(only)i(disagr)o(ee)d(on)j(the)e Fu(r)r Fz(-closest)i(nodes)f(to)g(a)f(r)o(esour)o(ce)f(in)i(situations)h(wher) o(e)e(the)440 5212 y(arrival)d(or)h(departur)o(e)e(of)i(nodes)g(have)g (been)g(detected)e(at)i(some)h(client)f(nodes)g(but)h(not)440 5326 y(at)c(others.)1831 5662 y(59)p eop %%Page: 60 62 60 61 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 561 923 a @beginspecial 139 @llx 634 @lly 348 @urx 717 @ury 1417 @rwi @setspecial %%BeginDocument: test/images/mutex_safety_safe.eps %!PS-Adobe-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: mutex_safety_safe.fig2ps.tmp.dvi %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 139 634 348 717 %%DocumentFonts: CMMI12 CMR8 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips mutex_safety_safe.fig2ps.tmp.dvi -o %+ mutex_safety_safe.fig2ps.tmp2.ps %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2004.12.21:1244 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: aae443f0.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 % /TeXaae443f0Encoding [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf /arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft /arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle /sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash /greater /star /partialdiff /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 /flat /natural /sharp /slurbelow /slurabove /lscript /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 /dotlessi /dotlessj /weierstrass /vector /tie /psi /.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 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /tie /.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 /.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 ] def %%EndProcSet %%BeginProcSet: f7b6d320.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 % cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 % cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 % cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 % /TeXf7b6d320Encoding [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /exclamdown /equal /questiondown /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 /quotedblleft /bracketright /circumflex /dotaccent /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 /endash /emdash /hungarumlaut /tilde /dieresis /suppress /.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 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /suppress /dieresis /.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 /.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 ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-36 -250 1070 750}readonly def /UniqueID 5000791 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB 0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB 8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30 4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632 BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B 041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721 3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762B86FECDA8944 AA3B20AD6019056E01677B959B23107F1962AB2CF6A52AB2745FDD5383ABAC44 22F83D93327D560012C565E49F2EEC04A6EEBA9D605FBD223B59CD8DE300A5CA 3790E9B4CF846CF5AE93B687F3D3EA411CAC0F03C47ADF9D83887702475E36A6 9FDA88B48C6FBF07959EF4C6F61741CDC2D503CB8AA0135458716D07D1774C21 750D01533D7CC822892EB494A82295E9537CF478A381CA7146A6BCDB1FD833E1 4D59DEA7DE0D1976AC7B448C17861ADB891766639B6F06B1CF3B56FC847D6C37 606C5D8EF98FA61D8943C404756BFBD2F87ADEB2DA92585C7521D88F486F5DCC 92ED93565808705D38E9DB085661B771872CBAE4DA363A02669E99EF1AD09E50 636CFF7172E5EBFB1DC08E76123FD5E5D60D76DB7A5DDBA4F32521A4543169B9 8825E3F2A124A1CDF79BC32262897100B0BEE618A92806BBFB7C1522821547BB 7D97346A3FFFDEB9A36068828431810D0640D0F3F07D8EBC8F1A952BFB809BF7 E54C0444110A1EE0BC7392CCE28224C70E6872A8C91DE82508094E3418C02118 5507AD925037FC20ECBEAB31D84929D5C6A0720FBB3E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.1: CMMI12 1.100 %%CreationDate: 1996 Jul 27 08:57:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-30 -250 1026 750}readonly def /UniqueID 5087386 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC 4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67 3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993 EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F 4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59 2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A 323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C 2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1 D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA 5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F 0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77 2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60 00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8 CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757 99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D 5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295 55B50047CD58E912E67E22C1B92F41D0BEE742201DF197E78C6ED91BE13CC04B 4FEC0FF07AA525E81ADD4D0F240BBCEA99BD1C7ED1020EFC6AC8865E99FDE649 8DAA79682CBA179A88CB1CF61F6DA89FCCABC9409C139AE45EABC1B764A05E2A 6D1B81929E87DBBB6D7588DC36ED1B13DC853340D465AA5CE192AEC99DFBCCA3 03019791DFA402F0A971BCE8E75C87D08F7D498C862DAC84DB244A90CBF3A229 1D8E64C097A1133A6808BEF41AC084F7A17FEB2796ED24D64E27E3E8CD72F1F8 841DD29AD9E871F0F5E95C4C23401F22F22ECFD501095B6BB0C08EFA511740E1 9566C8D5423924C7EAFAA571830E1079695E0A3793234F1E8FE3691BA48DAB7E 344B656B7FD7190E4C278370CC575E66723B0460B12F87035BD31906343828B0 F5038101C30EB06ED8AAB58FF935C022446FA26E8C1F3B68A3A10CB0672A1C51 1085C4DABA8EF9B6A74ECDC802C4BF5845F1B3495E1AF38BD2416286E9B27090 F5771EAEE5626012B4F737A94CBB4C6B617E39B9468302AE56ADA707275F2B79 51D1E1CAB8F50F7C39707B79E054ECF1899A748F6CD418EB9A7F8CA10A449E92 70FC82B694D03D4F9B4373B8EAD108B498201992E0569560E7FBCA9A7B9132CE B2638A4745C8F4F904BF4C40C2AC7ECE28B07195218E70D1CF652C66CF35E3C6 9BB90FB13B54C41168307B05838A4CF9EEDD11F96F86C0283198E00B1AE6AF1D E63B236C22CEE0359BF9F5348EB1343132252E6C17B2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39158280 55380996 1000 600 600 (mutex_safety_safe.fig2ps.tmp.dvi) @start /Fa 205[35 35 49[{ TeXf7b6d320Encoding ReEncodeFont }2 66.4176 /CMR8 rf /Fb 155[51 42 99[{ TeXaae443f0Encoding ReEncodeFont }2 99.6264 /CMMI12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop Black Black 565 1121 a @beginspecial 0 @llx 0 @lly 208 @urx 81 @ury 2080 @rwi @setspecial %%BeginDocument: mutex_safety_safe.fig2ps.tmp.ps %!PS-Adobe-2.0 EPSF-2.0 %%Title: mutex_safety_safe.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue Dec 21 12:44:03 2004 %%For: rak@qwerty (Rasmus Aslak Kjaer,,,) %%BoundingBox: 139 634 348 717 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {0.612 0.000 0.000 srgb} bind def /col33 {0.549 0.549 0.549 srgb} bind def /col34 {0.549 0.549 0.549 srgb} bind def /col35 {0.259 0.259 0.259 srgb} bind def /col36 {0.549 0.549 0.549 srgb} bind def /col37 {0.259 0.259 0.259 srgb} bind def /col38 {0.549 0.549 0.549 srgb} bind def /col39 {0.259 0.259 0.259 srgb} bind def /col40 {0.549 0.549 0.549 srgb} bind def /col41 {0.259 0.259 0.259 srgb} bind def /col42 {0.549 0.549 0.549 srgb} bind def /col43 {0.259 0.259 0.259 srgb} bind def /col44 {0.761 0.761 0.761 srgb} bind def /col45 {0.431 0.431 0.431 srgb} bind def /col46 {0.267 0.267 0.267 srgb} bind def /col47 {0.557 0.561 0.557 srgb} bind def /col48 {0.443 0.443 0.443 srgb} bind def /col49 {0.682 0.682 0.682 srgb} bind def /col50 {0.200 0.200 0.200 srgb} bind def /col51 {0.580 0.576 0.584 srgb} bind def /col52 {0.455 0.439 0.459 srgb} bind def /col53 {0.333 0.333 0.333 srgb} bind def /col54 {0.702 0.702 0.702 srgb} bind def /col55 {0.765 0.765 0.765 srgb} bind def /col56 {0.427 0.427 0.427 srgb} bind def /col57 {0.271 0.271 0.271 srgb} bind def /col58 {0.557 0.557 0.557 srgb} bind def /col59 {0.867 0.616 0.576 srgb} bind def /col60 {0.945 0.925 0.878 srgb} bind def /col61 {0.886 0.784 0.659 srgb} bind def /col62 {0.882 0.882 0.882 srgb} bind def /col63 {0.824 0.824 0.824 srgb} bind def /col64 {0.929 0.929 0.929 srgb} bind def /col65 {0.855 0.478 0.102 srgb} bind def /col66 {0.945 0.894 0.102 srgb} bind def /col67 {0.533 0.490 0.761 srgb} bind def /col68 {0.839 0.839 0.839 srgb} bind def /col69 {0.549 0.549 0.647 srgb} bind def /col70 {0.290 0.290 0.290 srgb} bind def /col71 {0.549 0.420 0.420 srgb} bind def /col72 {0.353 0.353 0.353 srgb} bind def /col73 {0.388 0.388 0.388 srgb} bind def /col74 {0.718 0.608 0.451 srgb} bind def /col75 {0.255 0.576 1.000 srgb} bind def /col76 {0.749 0.439 0.231 srgb} bind def /col77 {0.859 0.467 0.000 srgb} bind def /col78 {0.855 0.722 0.000 srgb} bind def /col79 {0.000 0.392 0.000 srgb} bind def /col80 {0.353 0.420 0.231 srgb} bind def /col81 {0.827 0.827 0.827 srgb} bind def /col82 {0.667 0.667 0.667 srgb} bind def /col83 {0.557 0.557 0.643 srgb} bind def /col84 {0.953 0.725 0.365 srgb} bind def /col85 {0.537 0.600 0.420 srgb} bind def /col86 {0.392 0.392 0.392 srgb} bind def /col87 {0.718 0.902 1.000 srgb} bind def /col88 {0.525 0.753 0.925 srgb} bind def /col89 {0.741 0.741 0.741 srgb} bind def /col90 {0.827 0.584 0.322 srgb} bind def /col91 {0.596 0.824 0.996 srgb} bind def /col92 {0.549 0.612 0.420 srgb} bind def /col93 {0.969 0.420 0.000 srgb} bind def /col94 {0.353 0.420 0.224 srgb} bind def /col95 {0.549 0.612 0.420 srgb} bind def /col96 {0.549 0.612 0.482 srgb} bind def /col97 {0.094 0.290 0.094 srgb} bind def /col98 {0.678 0.678 0.678 srgb} bind def /col99 {0.969 0.741 0.353 srgb} bind def /col100 {0.388 0.420 0.612 srgb} bind def /col101 {0.969 0.969 0.969 srgb} bind def /col102 {0.871 0.000 0.000 srgb} bind def /col103 {0.678 0.678 0.678 srgb} bind def /col104 {0.969 0.741 0.353 srgb} bind def /col105 {0.678 0.678 0.678 srgb} bind def /col106 {0.969 0.741 0.353 srgb} bind def /col107 {0.388 0.420 0.612 srgb} bind def /col108 {0.322 0.420 0.161 srgb} bind def /col109 {0.580 0.580 0.580 srgb} bind def /col110 {0.000 0.388 0.000 srgb} bind def /col111 {0.000 0.388 0.290 srgb} bind def /col112 {0.482 0.518 0.290 srgb} bind def /col113 {0.906 0.741 0.482 srgb} bind def /col114 {0.647 0.710 0.776 srgb} bind def /col115 {0.420 0.420 0.580 srgb} bind def /col116 {0.518 0.420 0.420 srgb} bind def /col117 {0.322 0.612 0.290 srgb} bind def /col118 {0.839 0.906 0.906 srgb} bind def /col119 {0.322 0.388 0.388 srgb} bind def /col120 {0.094 0.420 0.290 srgb} bind def /col121 {0.612 0.647 0.710 srgb} bind def /col122 {1.000 0.580 0.000 srgb} bind def /col123 {1.000 0.580 0.000 srgb} bind def /col124 {0.000 0.388 0.290 srgb} bind def /col125 {0.482 0.518 0.290 srgb} bind def /col126 {0.388 0.451 0.482 srgb} bind def /col127 {0.906 0.741 0.482 srgb} bind def /col128 {0.094 0.290 0.094 srgb} bind def /col129 {0.871 0.871 0.871 srgb} bind def /col130 {0.953 0.933 0.827 srgb} bind def /col131 {0.961 0.682 0.365 srgb} bind def /col132 {0.584 0.808 0.600 srgb} bind def /col133 {0.710 0.082 0.490 srgb} bind def /col134 {0.933 0.933 0.933 srgb} bind def /col135 {0.518 0.518 0.518 srgb} bind def /col136 {0.482 0.482 0.482 srgb} bind def /col137 {0.000 0.353 0.000 srgb} bind def /col138 {0.906 0.451 0.451 srgb} bind def /col139 {1.000 0.796 0.192 srgb} bind def /col140 {0.161 0.475 0.290 srgb} bind def /col141 {0.871 0.157 0.129 srgb} bind def /col142 {0.129 0.349 0.776 srgb} bind def /col143 {0.973 0.973 0.973 srgb} bind def /col144 {0.902 0.902 0.902 srgb} bind def /col145 {0.129 0.518 0.353 srgb} bind def /col146 {0.525 0.510 0.525 srgb} bind def /col147 {0.780 0.765 0.780 srgb} bind def /col148 {0.906 0.890 0.906 srgb} bind def /col149 {0.502 0.502 0.502 srgb} bind def /col150 {0.753 0.753 0.753 srgb} bind def /col151 {0.878 0.878 0.878 srgb} bind def /col152 {0.525 0.525 0.525 srgb} bind def /col153 {0.780 0.780 0.780 srgb} bind def /col154 {0.906 0.906 0.906 srgb} bind def /col155 {0.620 0.620 0.620 srgb} bind def /col156 {0.443 0.459 0.443 srgb} bind def /col157 {0.255 0.271 0.255 srgb} bind def /col158 {0.459 0.459 0.459 srgb} bind def /col159 {0.255 0.255 0.255 srgb} bind def /col160 {0.937 0.984 1.000 srgb} bind def /col161 {0.251 0.251 0.251 srgb} bind def /col162 {0.953 0.953 0.953 srgb} bind def /col163 {0.843 0.827 0.843 srgb} bind def /col164 {0.682 0.667 0.682 srgb} bind def /col165 {0.188 0.188 0.188 srgb} bind def /col166 {0.318 0.333 0.318 srgb} bind def /col167 {0.969 0.953 0.969 srgb} bind def /col168 {0.400 0.400 0.400 srgb} bind def end save newpath 0 81 moveto 0 0 lineto 208 0 lineto 208 81 lineto closepath clip newpath -202.3 241.9 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Ellipse 7.500 slw gs 5100 3279 tr -180.000 rot n 0 0 22 23 0 360 DrawEllipse 180.000 rot gs 0.00 setgray ef gr gs col0 s gr gr % Polyline 0 slj 0 slc n 5100 3263 m 5100 3098 l gs col0 s gr % Polyline n 5237 3107 m 4981 3107 l 4981 2850 l 5237 2850 l cp gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4575 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4050 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3525 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5100 3375 145 145 0 360 DrawEllipse gs col55 1.00 shd ef gr gs col0 s gr % Ellipse n 5625 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6150 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6675 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 3707 3232 m 3629 3266 l 3641 3293 l 3719 3259 l 3719 3259 l 3672 3264 l 3707 3232 l cp eoclip n 4316 2980 m 3649 3274 l gs col0 s gr gr % arrowhead n 3707 3232 m 3672 3264 l 3719 3259 l 3707 3232 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4153 3180 m 4108 3251 l 4133 3267 l 4179 3196 l 4179 3196 l 4142 3226 l 4153 3180 l cp eoclip n 4302 2980 m 4129 3247 l gs col0 s gr gr % arrowhead n 4153 3180 m 4142 3226 l 4179 3196 l 4153 3180 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4436 3198 m 4485 3267 l 4509 3250 l 4461 3181 l 4461 3181 l 4475 3227 l 4436 3198 l cp eoclip n 4302 2980 m 4489 3247 l gs col0 s gr gr % arrowhead n 4436 3198 m 4475 3227 l 4461 3181 l 4436 3198 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5753 3550 m 5706 3479 l 5681 3495 l 5728 3566 l 5728 3566 l 5716 3521 l 5753 3550 l cp eoclip n 5862 3740 m 5702 3500 l gs col0 s gr gr % arrowhead n 5753 3550 m 5716 3521 l 5728 3566 l 5753 3550 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6049 3573 m 6110 3514 l 6089 3492 l 6028 3552 l 6028 3552 l 6071 3531 l 6049 3573 l cp eoclip n 5862 3740 m 6089 3514 l gs col0 s gr gr % arrowhead n 6049 3573 m 6071 3531 l 6028 3552 l 6049 3573 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6496 3513 m 6575 3482 l 6564 3454 l 6485 3485 l 6485 3485 l 6533 3483 l 6496 3513 l cp eoclip n 5862 3754 m 6556 3474 l gs col0 s gr gr % arrowhead n 6496 3513 m 6533 3483 l 6485 3485 l 6496 3513 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 5292 3487 m 5213 3454 l 5202 3482 l 5280 3515 l 5280 3515 l 5245 3484 l 5292 3487 l cp eoclip n 5862 3740 m 5222 3474 l gs col0 s gr gr [] 0 sd % arrowhead n 5292 3487 m 5245 3484 l 5280 3515 l 5292 3487 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 4911 3259 m 4989 3293 l 5001 3266 l 4923 3232 l 4923 3232 l 4959 3264 l 4911 3259 l cp eoclip n 4316 2980 m 4982 3274 l gs col0 s gr gr [] 0 sd % arrowhead n 4911 3259 m 4959 3264 l 4923 3232 l 4911 3259 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 4308 2839 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5865 3878 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial 0 0 0 TeXcolorrgb 1412 631 a Fb(d)p Black 0 0 0 TeXcolorrgb 1771 1065 a(c)1813 1080 y Fa(2)p Black 0 0 0 TeXcolorrgb 992 548 a Fb(c)1034 563 y Fa(1)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 1420 w @beginspecial 139 @llx 633 @lly 348 @urx 717 @ury 1417 @rwi @setspecial %%BeginDocument: test/images/mutex_safety_unsafe.eps %!PS-Adobe-2.0 %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software %%Title: mutex_safety_unsafe.fig2ps.tmp.dvi %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 139 633 348 717 %%DocumentFonts: CMMI12 CMR8 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips mutex_safety_unsafe.fig2ps.tmp.dvi -o %+ mutex_safety_unsafe.fig2ps.tmp2.ps %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2004.12.21:1250 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: aae443f0.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 % /TeXaae443f0Encoding [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf /arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft /arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle /twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle /sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash /greater /star /partialdiff /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 /flat /natural /sharp /slurbelow /slurabove /lscript /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 /dotlessi /dotlessj /weierstrass /vector /tie /psi /.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 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /tie /.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 /.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 ] def %%EndProcSet %%BeginProcSet: f7b6d320.enc % Thomas Esser, Dec 2002. public domain % % Encoding for: % cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 % cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 % cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 % cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 % /TeXf7b6d320Encoding [ /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /exclamdown /equal /questiondown /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 /quotedblleft /bracketright /circumflex /dotaccent /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 /endash /emdash /hungarumlaut /tilde /dieresis /suppress /.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 /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash /suppress /dieresis /.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 /.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 ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def 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/setpagedevice{pop}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 /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginProcSet: color.pro %! TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll }repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def /TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ /currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC /Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC /Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC /Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ 0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ 0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC /Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC /Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ 0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ 0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC /BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC /CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC /Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC /PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ 0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end %%EndProcSet %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-36 -250 1070 750}readonly def /UniqueID 5000791 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB 0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB 8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30 4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632 BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B 041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721 3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762B86FECDA8944 AA3B20AD6019056E01677B959B23107F1962AB2CF6A52AB2745FDD5383ABAC44 22F83D93327D560012C565E49F2EEC04A6EEBA9D605FBD223B59CD8DE300A5CA 3790E9B4CF846CF5AE93B687F3D3EA411CAC0F03C47ADF9D83887702475E36A6 9FDA88B48C6FBF07959EF4C6F61741CDC2D503CB8AA0135458716D07D1774C21 750D01533D7CC822892EB494A82295E9537CF478A381CA7146A6BCDB1FD833E1 4D59DEA7DE0D1976AC7B448C17861ADB891766639B6F06B1CF3B56FC847D6C37 606C5D8EF98FA61D8943C404756BFBD2F87ADEB2DA92585C7521D88F486F5DCC 92ED93565808705D38E9DB085661B771872CBAE4DA363A02669E99EF1AD09E50 636CFF7172E5EBFB1DC08E76123FD5E5D60D76DB7A5DDBA4F32521A4543169B9 8825E3F2A124A1CDF79BC32262897100B0BEE618A92806BBFB7C1522821547BB 7D97346A3FFFDEB9A36068828431810D0640D0F3F07D8EBC8F1A952BFB809BF7 E54C0444110A1EE0BC7392CCE28224C70E6872A8C91DE82508094E3418C02118 5507AD925037FC20ECBEAB31D84929D5C6A0720FBB3E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI12 %!PS-AdobeFont-1.1: CMMI12 1.100 %%CreationDate: 1996 Jul 27 08:57:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put readonly def /FontBBox{-30 -250 1026 750}readonly def /UniqueID 5087386 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC 4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67 3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993 EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F 4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59 2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A 323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C 2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1 D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA 5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F 0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77 2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60 00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8 CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757 99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D 5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295 55B50047CD58E912E67E22C1B92F41D0BEE742201DF197E78C6ED91BE13CC04B 4FEC0FF07AA525E81ADD4D0F240BBCEA99BD1C7ED1020EFC6AC8865E99FDE649 8DAA79682CBA179A88CB1CF61F6DA89FCCABC9409C139AE45EABC1B764A05E2A 6D1B81929E87DBBB6D7588DC36ED1B13DC853340D465AA5CE192AEC99DFBCCA3 03019791DFA402F0A971BCE8E75C87D08F7D498C862DAC84DB244A90CBF3A229 1D8E64C097A1133A6808BEF41AC084F7A17FEB2796ED24D64E27E3E8CD72F1F8 841DD29AD9E871F0F5E95C4C23401F22F22ECFD501095B6BB0C08EFA511740E1 9566C8D5423924C7EAFAA571830E1079695E0A3793234F1E8FE3691BA48DAB7E 344B656B7FD7190E4C278370CC575E66723B0460B12F87035BD31906343828B0 F5038101C30EB06ED8AAB58FF935C022446FA26E8C1F3B68A3A10CB0672A1C51 1085C4DABA8EF9B6A74ECDC802C4BF5845F1B3495E1AF38BD2416286E9B27090 F5771EAEE5626012B4F737A94CBB4C6B617E39B9468302AE56ADA707275F2B79 51D1E1CAB8F50F7C39707B79E054ECF1899A748F6CD418EB9A7F8CA10A449E92 70FC82B694D03D4F9B4373B8EAD108B498201992E0569560E7FBCA9A7B9132CE B2638A4745C8F4F904BF4C40C2AC7ECE28B07195218E70D1CF652C66CF35E3C6 9BB90FB13B54C41168307B05838A4CF9EEDD11F96F86C0283198E00B1AE6AF1D E63B236C22CEE0359BF9F5348EB1343132252E6C17B2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39158280 55380996 1000 600 600 (mutex_safety_unsafe.fig2ps.tmp.dvi) @start /Fa 205[35 35 49[{ TeXf7b6d320Encoding ReEncodeFont }2 66.4176 /CMR8 rf /Fb 155[51 42 99[{ TeXaae443f0Encoding ReEncodeFont }2 99.6264 /CMMI12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop Black Black 565 1130 a @beginspecial 0 @llx 0 @lly 208 @urx 82 @ury 2080 @rwi @setspecial %%BeginDocument: mutex_safety_unsafe.fig2ps.tmp.ps %!PS-Adobe-2.0 EPSF-2.0 %%Title: mutex_safety_unsafe.fig %%Creator: fig2dev Version 3.2 Patchlevel 5-alpha5 %%CreationDate: Tue Dec 21 12:50:34 2004 %%For: rak@qwerty (Rasmus Aslak Kjaer,,,) %%BoundingBox: 139 633 348 717 %Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {0.612 0.000 0.000 srgb} bind def /col33 {0.549 0.549 0.549 srgb} bind def /col34 {0.549 0.549 0.549 srgb} bind def /col35 {0.259 0.259 0.259 srgb} bind def /col36 {0.549 0.549 0.549 srgb} bind def /col37 {0.259 0.259 0.259 srgb} bind def /col38 {0.549 0.549 0.549 srgb} bind def /col39 {0.259 0.259 0.259 srgb} bind def /col40 {0.549 0.549 0.549 srgb} bind def /col41 {0.259 0.259 0.259 srgb} bind def /col42 {0.549 0.549 0.549 srgb} bind def /col43 {0.259 0.259 0.259 srgb} bind def /col44 {0.761 0.761 0.761 srgb} bind def /col45 {0.431 0.431 0.431 srgb} bind def /col46 {0.267 0.267 0.267 srgb} bind def /col47 {0.557 0.561 0.557 srgb} bind def /col48 {0.443 0.443 0.443 srgb} bind def /col49 {0.682 0.682 0.682 srgb} bind def /col50 {0.200 0.200 0.200 srgb} bind def /col51 {0.580 0.576 0.584 srgb} bind def /col52 {0.455 0.439 0.459 srgb} bind def /col53 {0.333 0.333 0.333 srgb} bind def /col54 {0.702 0.702 0.702 srgb} bind def /col55 {0.765 0.765 0.765 srgb} bind def /col56 {0.427 0.427 0.427 srgb} bind def /col57 {0.271 0.271 0.271 srgb} bind def /col58 {0.557 0.557 0.557 srgb} bind def /col59 {0.867 0.616 0.576 srgb} bind def /col60 {0.945 0.925 0.878 srgb} bind def /col61 {0.886 0.784 0.659 srgb} bind def /col62 {0.882 0.882 0.882 srgb} bind def /col63 {0.824 0.824 0.824 srgb} bind def /col64 {0.929 0.929 0.929 srgb} bind def /col65 {0.855 0.478 0.102 srgb} bind def /col66 {0.945 0.894 0.102 srgb} bind def /col67 {0.533 0.490 0.761 srgb} bind def /col68 {0.839 0.839 0.839 srgb} bind def /col69 {0.549 0.549 0.647 srgb} bind def /col70 {0.290 0.290 0.290 srgb} bind def /col71 {0.549 0.420 0.420 srgb} bind def /col72 {0.353 0.353 0.353 srgb} bind def /col73 {0.388 0.388 0.388 srgb} bind def /col74 {0.718 0.608 0.451 srgb} bind def /col75 {0.255 0.576 1.000 srgb} bind def /col76 {0.749 0.439 0.231 srgb} bind def /col77 {0.859 0.467 0.000 srgb} bind def /col78 {0.855 0.722 0.000 srgb} bind def /col79 {0.000 0.392 0.000 srgb} bind def /col80 {0.353 0.420 0.231 srgb} bind def /col81 {0.827 0.827 0.827 srgb} bind def /col82 {0.667 0.667 0.667 srgb} bind def /col83 {0.557 0.557 0.643 srgb} bind def /col84 {0.953 0.725 0.365 srgb} bind def /col85 {0.537 0.600 0.420 srgb} bind def /col86 {0.392 0.392 0.392 srgb} bind def /col87 {0.718 0.902 1.000 srgb} bind def /col88 {0.525 0.753 0.925 srgb} bind def /col89 {0.741 0.741 0.741 srgb} bind def /col90 {0.827 0.584 0.322 srgb} bind def /col91 {0.596 0.824 0.996 srgb} bind def /col92 {0.549 0.612 0.420 srgb} bind def /col93 {0.969 0.420 0.000 srgb} bind def /col94 {0.353 0.420 0.224 srgb} bind def /col95 {0.549 0.612 0.420 srgb} bind def /col96 {0.549 0.612 0.482 srgb} bind def /col97 {0.094 0.290 0.094 srgb} bind def /col98 {0.678 0.678 0.678 srgb} bind def /col99 {0.969 0.741 0.353 srgb} bind def /col100 {0.388 0.420 0.612 srgb} bind def /col101 {0.969 0.969 0.969 srgb} bind def /col102 {0.871 0.000 0.000 srgb} bind def /col103 {0.678 0.678 0.678 srgb} bind def /col104 {0.969 0.741 0.353 srgb} bind def /col105 {0.678 0.678 0.678 srgb} bind def /col106 {0.969 0.741 0.353 srgb} bind def /col107 {0.388 0.420 0.612 srgb} bind def /col108 {0.322 0.420 0.161 srgb} bind def /col109 {0.580 0.580 0.580 srgb} bind def /col110 {0.000 0.388 0.000 srgb} bind def /col111 {0.000 0.388 0.290 srgb} bind def /col112 {0.482 0.518 0.290 srgb} bind def /col113 {0.906 0.741 0.482 srgb} bind def /col114 {0.647 0.710 0.776 srgb} bind def /col115 {0.420 0.420 0.580 srgb} bind def /col116 {0.518 0.420 0.420 srgb} bind def /col117 {0.322 0.612 0.290 srgb} bind def /col118 {0.839 0.906 0.906 srgb} bind def /col119 {0.322 0.388 0.388 srgb} bind def /col120 {0.094 0.420 0.290 srgb} bind def /col121 {0.612 0.647 0.710 srgb} bind def /col122 {1.000 0.580 0.000 srgb} bind def /col123 {1.000 0.580 0.000 srgb} bind def /col124 {0.000 0.388 0.290 srgb} bind def /col125 {0.482 0.518 0.290 srgb} bind def /col126 {0.388 0.451 0.482 srgb} bind def /col127 {0.906 0.741 0.482 srgb} bind def /col128 {0.094 0.290 0.094 srgb} bind def /col129 {0.871 0.871 0.871 srgb} bind def /col130 {0.953 0.933 0.827 srgb} bind def /col131 {0.961 0.682 0.365 srgb} bind def /col132 {0.584 0.808 0.600 srgb} bind def /col133 {0.710 0.082 0.490 srgb} bind def /col134 {0.933 0.933 0.933 srgb} bind def /col135 {0.518 0.518 0.518 srgb} bind def /col136 {0.482 0.482 0.482 srgb} bind def /col137 {0.000 0.353 0.000 srgb} bind def /col138 {0.906 0.451 0.451 srgb} bind def /col139 {1.000 0.796 0.192 srgb} bind def /col140 {0.161 0.475 0.290 srgb} bind def /col141 {0.871 0.157 0.129 srgb} bind def /col142 {0.129 0.349 0.776 srgb} bind def /col143 {0.973 0.973 0.973 srgb} bind def /col144 {0.902 0.902 0.902 srgb} bind def /col145 {0.129 0.518 0.353 srgb} bind def /col146 {0.525 0.510 0.525 srgb} bind def /col147 {0.780 0.765 0.780 srgb} bind def /col148 {0.906 0.890 0.906 srgb} bind def /col149 {0.502 0.502 0.502 srgb} bind def /col150 {0.753 0.753 0.753 srgb} bind def /col151 {0.878 0.878 0.878 srgb} bind def /col152 {0.525 0.525 0.525 srgb} bind def /col153 {0.780 0.780 0.780 srgb} bind def /col154 {0.906 0.906 0.906 srgb} bind def /col155 {0.620 0.620 0.620 srgb} bind def /col156 {0.443 0.459 0.443 srgb} bind def /col157 {0.255 0.271 0.255 srgb} bind def /col158 {0.459 0.459 0.459 srgb} bind def /col159 {0.255 0.255 0.255 srgb} bind def /col160 {0.937 0.984 1.000 srgb} bind def /col161 {0.251 0.251 0.251 srgb} bind def /col162 {0.953 0.953 0.953 srgb} bind def /col163 {0.843 0.827 0.843 srgb} bind def /col164 {0.682 0.667 0.682 srgb} bind def /col165 {0.188 0.188 0.188 srgb} bind def /col166 {0.318 0.333 0.318 srgb} bind def /col167 {0.969 0.953 0.969 srgb} bind def /col168 {0.400 0.400 0.400 srgb} bind def end save newpath 0 82 moveto 0 0 lineto 208 0 lineto 208 82 lineto closepath clip newpath -202.3 243.2 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 10 setmiterlimit 0 slj 0 slc 0.06000 0.06000 sc % % Fig objects follow % % % here starts figure with depth 50 % Ellipse 7.500 slw gs 5099 3365 tr -180.000 rot n 0 0 30 30 0 360 DrawEllipse 180.000 rot gs 0.00 setgray ef gr gs col0 s gr gr % Polyline 0 slj 0 slc n 5099 3344 m 5099 3123 l gs col0 s gr % Polyline n 5229 3125 m 4974 3125 l 4974 2868 l 5229 2868 l cp gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3525 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3975 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4425 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5325 3375 145 145 0 360 DrawEllipse gs col55 1.00 shd ef gr gs col0 s gr % Ellipse n 5775 3375 145 145 0 360 DrawEllipse gs col55 1.00 shd ef gr gs col0 s gr % Ellipse n 6225 3375 145 145 0 360 DrawEllipse gs col55 1.00 shd ef gr gs col0 s gr % Ellipse n 6675 3375 145 145 0 360 DrawEllipse gs col55 1.00 shd ef gr gs col0 s gr % Ellipse n 4889 3375 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 4080 3179 m 4035 3251 l 4060 3267 l 4105 3195 l 4105 3195 l 4069 3226 l 4080 3179 l cp eoclip n 4216 2994 m 4056 3247 l gs col0 s gr gr % arrowhead n 4080 3179 m 4069 3226 l 4105 3195 l 4080 3179 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 4302 3192 m 4342 3267 l 4369 3253 l 4329 3178 l 4329 3178 l 4337 3225 l 4302 3192 l cp eoclip n 4216 2994 m 4349 3247 l gs col0 s gr gr % arrowhead n 4302 3192 m 4337 3225 l 4329 3178 l 4302 3192 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 3684 3229 m 3608 3267 l 3622 3294 l 3698 3256 l 3698 3256 l 3651 3263 l 3684 3229 l cp eoclip n 4202 2994 m 3629 3274 l gs col0 s gr gr % arrowhead n 3684 3229 m 3651 3263 l 3698 3256 l 3684 3229 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 4706 3256 m 4782 3294 l 4796 3267 l 4720 3229 l 4720 3229 l 4754 3263 l 4706 3256 l cp eoclip n 4202 2994 m 4776 3274 l gs col0 s gr gr [] 0 sd % arrowhead n 4706 3256 m 4754 3263 l 4720 3229 l 4706 3256 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 5889 3540 m 5847 3466 l 5821 3481 l 5863 3555 l 5863 3555 l 5854 3509 l 5889 3540 l cp eoclip n 6002 3767 m 5842 3487 l gs col0 s gr gr % arrowhead n 5889 3540 m 5854 3509 l 5863 3555 l 5889 3540 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6127 3555 m 6169 3481 l 6143 3466 l 6101 3540 l 6101 3540 l 6137 3509 l 6127 3555 l cp eoclip n 5989 3767 m 6149 3487 l gs col0 s gr gr % arrowhead n 6127 3555 m 6137 3509 l 6101 3540 l 6127 3555 l cp gs 0.00 setgray ef gr col0 s % Polyline gs clippath 6519 3517 m 6595 3481 l 6583 3454 l 6506 3490 l 6506 3490 l 6554 3485 l 6519 3517 l cp eoclip n 5989 3754 m 6576 3474 l gs col0 s gr gr % arrowhead n 6519 3517 m 6554 3485 l 6506 3490 l 6519 3517 l cp gs 0.00 setgray ef gr col0 s % Polyline [60] 0 sd gs clippath 5498 3502 m 5421 3467 l 5409 3494 l 5485 3529 l 5485 3529 l 5451 3497 l 5498 3502 l cp eoclip n 6002 3754 m 5429 3487 l gs col0 s gr gr [] 0 sd % arrowhead n 5498 3502 m 5451 3497 l 5485 3529 l 5498 3502 l cp gs 0.00 setgray ef gr col0 s % Ellipse n 4223 2845 145 145 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6000 3900 145 145 0 360 DrawEllipse gs col55 1.00 shd ef gr gs col0 s gr % here ends figure; $F2psEnd rs showpage %%Trailer %EOF %%EndDocument @endspecial 0 0 0 TeXcolorrgb 1408 638 a Fb(d)p Black 0 0 0 TeXcolorrgb 948 540 a(c)990 555 y Fa(1)p Black 0 0 0 TeXcolorrgb 1837 1070 a Fb(c)1879 1085 y Fa(2)p Black Black Black eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF %%EndDocument @endspecial 511 1103 a Fq(Figur)o(e)c(3.9:)28 b(T)-8 b(o)19 b(the)g(left,)g(the)g(view)l(,)g(at)h(client)e(nodes,)i(of)f (the)g(r)r(-closest)h(nodes)f(to)i(d)q(,)e(needs)g(only)g(have)511 1209 y(a)f(single)f(node)h(in)f(common)i(for)f(safety)g(to)g(be)f (satis\002ed.)h(Conversely)m(,)h(if)e(the)h(client)f(nodes)h(view)g(of) g(the)511 1314 y(r)r(-closest)g(nodes)f(to)i(d)g(does)f(not)f(have)h (any)g(nodes)g(in)e(common)i(the)g(algorithm)g(cannot)g(satisfy)f (safety)m(.)565 1583 y Fz(In)30 b(Figur)o(e)f(3.9)g(two)i(cases)e(of)h (disagr)o(eement)f(on)i(the)f(world)g(view)g(between)g(two)440 1698 y(client)18 b(nodes)g(ar)o(e)e(illustrated.)h(In)h(the)g(\002rst)g (case,)e(to)i(the)g(left,)f(two)i(clients,)f Fu(c)2870 1713 y Fm(1)2924 1698 y Fz(and)g Fu(c)3118 1713 y Fm(2)3153 1698 y Fz(,)g(ar)o(e)440 1812 y(r)o(equesting)h(a)e(mutex)i(for)f(a)g (r)o(esour)o(ce)f Fu(d)q Fz(.)h(Each)g(client)g(contacts)h(the)f Fu(r)27 b Fd(=)c Fz(4)18 b(closest)h(nodes)440 1927 y(to)24 b Fu(d)q Fz(,)f(accor)o(ding)f(their)h(world)g(view)-8 b(.)24 b(Thus,)f(to)g(obtain)h(the)f(mutex)g(for)h Fu(d)f Fz(a)g(client)g(node)440 2041 y(needs)31 b(to)g(r)o(eceive)e(4)i (grants.)f(As)h(illustrated)g(the)g(clients)g(disagr)o(ee)f(on)h(thr)o (ee)f(nodes,)440 2156 y(and)25 b(agr)o(ee)e(on)j(a)e(single)i(one.)f (Hence,)g(only)h(one)f(client)h(node)f(can)f(r)o(eceive)g(the)h(fourth) 440 2271 y(grant)20 b(as)g(the)h(algorithm)g(permits)g(a)f(node)g(fr)o (om)g(granting)h(two)g(mutexes)g(on)g(the)f(same)440 2385 y(r)o(esour)o(ce.)565 2500 y(In)i(the)h(second)g(case,)e(to)i(the) g(right,)g(the)g(same)f(two)h(client)g(nodes,)h Fu(c)2767 2515 y Fm(1)2825 2500 y Fz(and)f Fu(c)3024 2515 y Fm(2)3059 2500 y Fz(,)g(again)440 2614 y(r)o(equests)17 b(a)g(mutex)h(for)f(r)o (esour)o(ce)g Fu(d)q Fz(.)f(They)i(contact)f(the)h Fu(r)26 b Fd(=)e Fz(4)17 b(closest)h(nodes,)f(accor)o(ding)440 2729 y(to)30 b(their)f(world)g(view)-8 b(,)30 b(and)e(both)i(clients)g (ar)o(e)e(granted)g(a)h(mutex)g(for)g(r)o(esour)o(ce)g Fu(d)q Fz(.)f(As)440 2843 y(illustrated,)16 b(the)g(algorithm)h(is)g (not)g(able)f(to)g(coor)o(dinate)g(the)g(granting)h(of)f(a)g(mutex)h (when)440 2958 y(client)k(nodes)g(does)g(not)g(agr)o(ee)f(on)h(at)f (least)h(one)g(of)g(the)g Fu(r)r Fz(-closest)g(nodes)g(to)g(a)g(r)o (esour)o(ce.)440 3218 y Fp(3.4.2)99 b(Liveness)440 3391 y Fz(Another)27 b(essential)g(pr)o(operty)f(of)h(a)f(mutual)h (exclusion)g(algorithm)h(is)f(liveness.)g(Live-)440 3506 y(ness)g(describes)e(whether)i(a)f(mutual)g(exclusion)h(algorithm)g (guarantees)e(that)h(any)h(r)o(e-)440 3620 y(quest)21 b(for)g(a)f(mutex)h(is)g(eventually)g(granted.)565 3735 y(The)32 b(algorithm,)i(as)e(documented)h(in)g(Section)g(2.2.6,)e (employs)i(no)h(measur)o(es)e(to)440 3850 y(ensur)o(e)e(liveness.)h (Thus,)f(the)h(purpose)f(of)h(this)g(test)g(is)f(to)h(observe)f(how)i (this)f(af)o(fects)440 3964 y(the)24 b(operation)h(of)f(the)h (algorithm)g(in)f(practice.)f(The)i(primary)f(concern)g(is)h(to)g (evaluate)440 4079 y(whether)19 b(the)g(algorithm)g(is)g(applicable)e (despite)h(the)h(absence)f(of)g(liveness)h(guarantees.)440 4320 y Fv(Description)440 4493 y Fz(The)29 b(test)g(is)g(conducted)g (by)g(having)h(993)d(nodes)j(r)o(equest)e(a)h(mutex)g(for)g(the)g(same) g(r)o(e-)440 4607 y(sour)o(ce)16 b(at)g(the)g(same)g(time.)h(Each)e (node)i(r)o(equests)f(a)g(mutex)g(with)h(a)f(lifetime)g(of)h(1)e (second.)440 4722 y(When)26 b(a)f(client)h(node)f(is)h(granted)f(a)g (mutex)h(and)f(the)g(mutex)h(expir)o(es)e(it)i(immediately)440 4836 y(r)o(e-r)o(equests)19 b(the)i(same)g(mutex)g(again.)f(It)h(is)g (of)g(course)f(impossible)i(to)f(synchr)o(onise)h(the)440 4951 y(time)f(perfectly)f(between)h(the)g(participating)g(client)g (nodes)g(of)g(the)g(test.)g(Hence,)f(the)i(r)o(e-)440 5066 y(sults)31 b(of)e(similar)h(r)o(uns)h(of)f(this)g(test)g(can)g(be) f(signi\002cantly)i(dif)o(fer)o(ent,)d(and)h(the)h(test)g(is)440 5180 y(executed)19 b(several)h(times.)h(Each)f(test)h(is)g(allowed)f (to)h(r)o(un)g(for)g(3600)d(seconds)j(or)g(until)g(all)440 5295 y(client)g(nodes)g(has)g(been)g(granted)f(the)h(mutex)f(at)h (least)f(once.)1831 5662 y(60)p eop %%Page: 61 63 61 62 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fv(Results)440 704 y Fz(The)f(r)o(esults)f(of)h(two)g (speci\002c)g(r)o(uns)h(of)e(the)h(liveness)g(test)g(ar)o(e)f(depicted) f(in)j(Figur)o(e)e(3.10.)563 2643 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3118 @rwi @setspecial %%BeginDocument: test/images/liveness.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Tue Dec 21 12:51:13 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 798 420 M 63 0 V 6101 0 R -63 0 V 714 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 798 865 M 63 0 V 6101 0 R -63 0 V 714 865 M gsave 0 setgray ( 100) Rshow grestore 1.000 UL LTb 798 1310 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 200) Rshow grestore 1.000 UL LTb 798 1756 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 300) Rshow grestore 1.000 UL LTb 798 2201 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 400) Rshow grestore 1.000 UL LTb 798 2646 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 500) Rshow grestore 1.000 UL LTb 798 3091 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 600) Rshow grestore 1.000 UL LTb 798 3536 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 700) Rshow grestore 1.000 UL LTb 798 3982 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 800) Rshow grestore 1.000 UL LTb 798 4427 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 900) Rshow grestore 1.000 UL LTb 798 4872 M 63 0 V 6101 0 R -63 0 V -6185 0 R gsave 0 setgray ( 1000) Rshow grestore 1.000 UL LTb 798 420 M 0 63 V 0 4389 R 0 -63 V 798 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1568 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 500) Cshow grestore 1.000 UL LTb 2339 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1000) Cshow grestore 1.000 UL LTb 3109 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1500) Cshow grestore 1.000 UL LTb 3880 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2000) Cshow grestore 1.000 UL LTb 4650 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2500) Cshow grestore 1.000 UL LTb 5421 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 3000) Cshow grestore 1.000 UL LTb 6191 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 3500) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 4000) Cshow grestore 1.000 UL LTb 1.000 UL LTb 798 420 M 6164 0 V 0 4452 V -6164 0 V 798 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Hosts) Cshow grestore grestore LTb 3880 70 M gsave 0 setgray (Time \(seconds\)) Cshow grestore 1.000 UP 2.000 UL LT0 LTb 6311 833 M gsave 0 setgray (Model) Rshow grestore LT0 6594 833 Pnt 798 420 Pnt 853 577 Pnt 909 728 Pnt 964 874 Pnt 1019 1015 Pnt 1074 1151 Pnt 1130 1282 Pnt 1185 1408 Pnt 1240 1530 Pnt 1296 1648 Pnt 1351 1761 Pnt 1406 1870 Pnt 1461 1976 Pnt 1517 2078 Pnt 1572 2176 Pnt 1627 2270 Pnt 1683 2362 Pnt 1738 2450 Pnt 1793 2535 Pnt 1848 2616 Pnt 1904 2695 Pnt 1959 2772 Pnt 2014 2845 Pnt 2070 2916 Pnt 2125 2984 Pnt 2180 3050 Pnt 2236 3114 Pnt 2291 3175 Pnt 2346 3234 Pnt 2401 3291 Pnt 2457 3346 Pnt 2512 3399 Pnt 2567 3451 Pnt 2623 3500 Pnt 2678 3547 Pnt 2733 3593 Pnt 2788 3638 Pnt 2844 3680 Pnt 2899 3722 Pnt 2954 3761 Pnt 3010 3800 Pnt 3065 3837 Pnt 3120 3872 Pnt 3175 3907 Pnt 3231 3940 Pnt 3286 3972 Pnt 3341 4003 Pnt 3397 4032 Pnt 3452 4061 Pnt 3507 4089 Pnt 3562 4116 Pnt 3618 4141 Pnt 3673 4166 Pnt 3728 4190 Pnt 3784 4213 Pnt 3839 4235 Pnt 3894 4257 Pnt 3949 4278 Pnt 4005 4298 Pnt 4060 4317 Pnt 4115 4336 Pnt 4171 4354 Pnt 4226 4371 Pnt 4281 4387 Pnt 4337 4404 Pnt 4392 4419 Pnt 4447 4434 Pnt 4502 4449 Pnt 4558 4462 Pnt 4613 4476 Pnt 4668 4489 Pnt 4724 4501 Pnt 4779 4513 Pnt 4834 4525 Pnt 4889 4536 Pnt 4945 4547 Pnt 5000 4557 Pnt 5055 4568 Pnt 5111 4577 Pnt 5166 4587 Pnt 5221 4596 Pnt 5276 4604 Pnt 5332 4613 Pnt 5387 4621 Pnt 5442 4629 Pnt 5498 4636 Pnt 5553 4643 Pnt 5608 4650 Pnt 5663 4657 Pnt 5719 4664 Pnt 5774 4670 Pnt 5829 4676 Pnt 5885 4682 Pnt 5940 4688 Pnt 5995 4693 Pnt 6050 4698 Pnt 6106 4703 Pnt 6161 4708 Pnt 6216 4713 Pnt 6272 4717 Pnt 3.000 UL LT1 LTb 6311 693 M gsave 0 setgray (Run1) Rshow grestore LT1 6395 693 M 399 0 V 798 424 M 6 5 V 2 4 V 3 5 V 3 4 V 1 5 V 3 4 V 7 5 V 3 4 V 1 5 V 3 4 V 3 4 V 2 5 V 2 4 V 1 5 V 3 4 V 3 5 V 2 4 V 1 5 V 2 4 V 1 9 V 2 4 V 1 5 V 2 4 V 3 5 V 5 4 V 1 5 V 2 4 V 3 9 V 1 4 V 2 5 V 2 4 V 1 5 V 2 9 V 3 4 V 1 9 V 2 5 V 1 4 V 2 4 V 1 5 V 2 9 V 1 4 V 2 9 V 3 5 V 2 4 V 1 5 V 2 4 V 1 4 V 2 9 V 1 9 V 2 5 V 3 4 V 1 5 V 2 8 V 2 9 V 3 9 V 1 5 V 2 9 V 3 4 V 1 5 V 2 4 V 1 9 V 4 9 V 1 9 V 2 4 V 1 5 V 2 9 V 1 4 V 2 9 V 3 9 V 3 4 V 1 5 V 2 9 V 2 4 V 1 9 V 2 9 V 3 13 V 3 5 V 1 4 V 2 5 V 1 8 V 2 5 V 2 4 V 1 5 V 2 9 V 1 4 V 2 9 V 1 5 V 2 4 V 1 9 V 3 9 V 3 4 V 2 5 V 2 4 V 6 5 V 1 8 V 3 9 V 2 5 V 1 4 V 2 5 V 1 4 V 2 5 V 2 9 V stroke 1008 1017 M 3 8 V 1 9 V 6 9 V 3 9 V 2 5 V 2 9 V 1 8 V 2 5 V 1 4 V 2 5 V 1 9 V 2 9 V 1 4 V 2 9 V 3 4 V 3 5 V 2 9 V 3 9 V 1 4 V 2 5 V 1 8 V 2 5 V 3 4 V 1 5 V 4 13 V 1 5 V 2 4 V 3 9 V 1 9 V 3 13 V 2 5 V 1 9 V 2 4 V 3 5 V 2 4 V 1 13 V 3 9 V 2 5 V 1 4 V 2 5 V 3 8 V 3 5 V 1 4 V 2 5 V 2 4 V 1 5 V 2 9 V 3 9 V 1 8 V 6 5 V 8 4 V 3 9 V 3 5 V 2 9 V 1 4 V 2 9 V 3 9 V 2 4 V 3 9 V 3 5 V 4 9 V 2 4 V 1 9 V 5 4 V 2 5 V 3 9 V 3 4 V 1 5 V 2 4 V 1 9 V 2 9 V 1 4 V 4 9 V 4 5 V 2 4 V 3 9 V 3 5 V 3 4 V 1 4 V 4 5 V 1 9 V 3 4 V 5 9 V 1 5 V 2 4 V 1 5 V 2 4 V 5 4 V 1 5 V 2 9 V 3 9 V 1 4 V 3 13 V 3 5 V 2 9 V 2 4 V 3 14 V 3 4 V 1 5 V 2 8 V 3 5 V 1 4 V 2 9 V 2 5 V stroke 1250 1698 M 1 9 V 2 4 V 3 5 V 1 8 V 9 5 V 2 13 V 5 9 V 3 5 V 1 4 V 2 5 V 1 4 V 2 4 V 4 5 V 2 4 V 3 5 V 2 4 V 1 5 V 2 4 V 3 9 V 1 4 V 2 5 V 3 9 V 3 4 V 2 5 V 1 4 V 3 9 V 2 5 V 3 8 V 1 5 V 3 4 V 4 5 V 1 4 V 2 5 V 1 4 V 2 9 V 4 5 V 3 4 V 2 4 V 3 5 V 3 4 V 3 5 V 3 4 V 3 5 V 3 9 V 2 4 V 3 9 V 2 4 V 3 5 V 6 9 V 3 4 V 1 5 V 2 4 V 3 5 V 12 4 V 5 9 V 6 4 V 6 5 V 2 4 V 1 5 V 4 4 V 1 5 V 3 4 V 2 5 V 1 8 V 6 5 V 2 4 V 2 5 V 1 4 V 2 9 V 3 9 V 1 4 V 3 5 V 2 4 V 3 5 V 1 4 V 4 5 V 3 9 V 1 4 V 3 9 V 2 4 V 4 5 V 5 4 V 9 5 V 2 9 V 6 4 V 2 5 V 1 9 V 3 4 V 3 4 V 3 9 V 6 5 V 4 4 V 4 5 V 3 4 V 5 5 V 3 4 V 8 5 V 3 4 V 6 4 V 1 5 V 5 4 V 3 5 V 3 4 V 3 5 V stroke 1562 2259 M 5 4 V 3 5 V 3 4 V 2 4 V 1 5 V 2 4 V 3 5 V 3 4 V 3 5 V 2 9 V 3 4 V 1 5 V 3 4 V 2 4 V 1 5 V 5 4 V 1 9 V 5 5 V 6 4 V 3 5 V 2 9 V 1 4 V 2 4 V 2 9 V 9 5 V 6 4 V 1 5 V 2 4 V 2 5 V 1 4 V 5 4 V 9 5 V 8 4 V 3 5 V 9 4 V 3 5 V 5 4 V 1 5 V 2 4 V 3 5 V 1 4 V 10 4 V 6 5 V 1 4 V 5 5 V 3 4 V 5 5 V 3 4 V 3 9 V 6 5 V 5 4 V 7 4 V 2 5 V 1 4 V 7 5 V 1 4 V 2 5 V 4 4 V 2 5 V 1 4 V 5 5 V 2 4 V 1 9 V 3 9 V 6 4 V 3 5 V 3 4 V 2 5 V 2 4 V 10 4 V 5 5 V 5 4 V 3 5 V 9 4 V 5 5 V 9 4 V 1 9 V 5 5 V 5 4 V 10 4 V 5 5 V 3 4 V 2 5 V 6 4 V 4 5 V 5 4 V 6 5 V 9 9 V 2 4 V 6 9 V 3 4 V 5 5 V 3 4 V 9 5 V 3 4 V 5 5 V 6 4 V 2 4 V 4 5 V 2 4 V 6 5 V 5 9 V 10 4 V 8 5 V stroke 1983 2771 M 3 9 V 5 4 V 6 9 V 9 4 V 5 5 V 14 4 V 3 5 V 6 4 V 3 5 V 5 9 V 3 4 V 3 4 V 12 5 V 3 9 V 5 4 V 3 5 V 3 4 V 5 5 V 1 4 V 2 5 V 1 4 V 5 4 V 3 5 V 3 4 V 6 5 V 3 4 V 5 5 V 8 9 V 4 4 V 8 4 V 3 5 V 3 4 V 5 5 V 6 4 V 4 5 V 2 4 V 18 5 V 17 4 V 10 5 V 4 4 V 3 4 V 2 5 V 5 4 V 6 5 V 12 4 V 3 5 V 3 4 V 9 9 V 8 5 V 17 8 V 12 5 V 2 4 V 3 5 V 11 4 V 3 5 V 3 4 V 6 5 V 3 4 V 6 4 V 5 5 V 17 4 V 2 5 V 4 4 V 5 5 V 15 4 V 8 5 V 5 4 V 4 9 V 9 4 V 2 5 V 9 4 V 3 5 V 2 4 V 8 5 V 1 4 V 5 5 V 1 4 V 13 5 V 3 4 V 3 4 V 7 5 V 16 4 V 21 5 V 8 4 V 2 5 V 10 9 V 4 4 V 29 4 V 7 5 V 11 4 V 6 5 V 2 4 V 12 5 V 2 4 V 1 5 V 13 4 V 4 5 V 3 4 V 17 4 V 2 5 V 5 4 V 3 5 V 13 4 V 4 5 V stroke 2643 3274 M 1 4 V 11 5 V 5 4 V 6 5 V 3 4 V 12 4 V 2 5 V 3 4 V 12 5 V 14 9 V 12 4 V 20 5 V 14 4 V 25 5 V 8 4 V 7 4 V 5 5 V 4 4 V 13 5 V 9 4 V 15 5 V 14 4 V 11 5 V 17 8 V 5 5 V 3 4 V 18 5 V 6 4 V 3 5 V 16 4 V 9 9 V 11 5 V 5 4 V 7 4 V 25 5 V 29 4 V 2 5 V 1 4 V 8 5 V 2 4 V 3 5 V 1 4 V 8 5 V 3 4 V 18 9 V 2 4 V 12 5 V 5 4 V 17 5 V 11 4 V 10 5 V 17 4 V 3 4 V 5 5 V 8 4 V 8 5 V 7 4 V 3 5 V 10 4 V 3 5 V 1 4 V 8 5 V 17 4 V 17 4 V 14 5 V 6 4 V 1 5 V 14 4 V 9 5 V 5 9 V 6 4 V 11 5 V 12 4 V 33 4 V 4 9 V 3 5 V 37 4 V 11 5 V 5 4 V 8 5 V 12 4 V 25 5 V 7 4 V 9 4 V 4 5 V 46 4 V 21 5 V 3 4 V 5 5 V 3 9 V 16 4 V 3 4 V 23 5 V 3 4 V 1 5 V 11 4 V 17 5 V 2 4 V 18 5 V 2 4 V 17 5 V 17 8 V 3 5 V 7 4 V stroke 3687 3772 M 14 5 V 9 4 V 14 5 V 34 4 V 16 5 V 3 4 V 17 5 V 23 4 V 24 4 V 21 9 V 10 5 V 16 4 V 21 5 V 13 4 V 10 5 V 11 4 V 29 4 V 5 5 V 11 4 V 4 5 V 39 4 V 35 5 V 13 4 V 1 5 V 8 4 V 3 5 V 16 4 V 10 4 V 8 5 V 12 4 V 3 5 V 5 4 V 3 5 V 39 4 V 24 5 V 6 4 V 19 5 V 5 8 V 3 5 V 3 4 V 4 9 V 34 9 V 5 5 V 6 4 V 28 5 V 18 4 V 16 4 V 27 5 V 17 4 V 8 9 V 20 5 V 25 4 V 24 5 V 11 4 V 39 4 V 92 5 V 22 4 V 32 5 V 19 4 V 7 5 V 51 4 V 26 5 V 2 4 V 11 5 V 74 8 V 3 5 V 34 4 V 23 5 V 14 9 V 10 4 V 11 5 V 114 4 V 3 5 V 71 4 V 26 4 V 10 5 V 3 4 V 24 5 V 14 4 V 54 5 V 22 4 V 1 5 V 34 4 V 11 4 V 25 5 V 41 4 V 13 5 V 3 4 V 15 5 V 14 4 V 3 5 V 6 4 V 59 5 V 11 4 V 21 4 V 11 5 V 23 4 V 32 5 V 27 4 V 101 5 V 6 4 V 5 5 V 42 4 V 34 5 V stroke 5839 4267 M 7 8 V 11 5 V 16 4 V 18 5 V 88 4 V 6 5 V 9 4 V 39 5 V 15 4 V 2 4 V 49 5 V 56 4 V 4 5 V 46 4 V 11 5 V 12 4 V 14 5 V 19 4 V 3.000 UL LT2 LTb 6311 553 M gsave 0 setgray (Run2) Rshow grestore LT2 6395 553 M 399 0 V 798 424 M 3 5 V 3 4 V 3 5 V 3 4 V 3 5 V 3 4 V 4 5 V 3 4 V 3 5 V 1 4 V 3 4 V 2 5 V 1 4 V 2 5 V 3 4 V 3 5 V 3 4 V 2 5 V 1 4 V 2 4 V 1 9 V 2 5 V 3 4 V 2 5 V 6 9 V 3 4 V 1 5 V 3 8 V 4 5 V 3 9 V 3 9 V 3 9 V 3 4 V 1 5 V 2 8 V 1 5 V 2 4 V 2 5 V 1 4 V 2 5 V 1 4 V 2 5 V 1 4 V 2 9 V 3 9 V 1 9 V 7 9 V 1 9 V 2 4 V 1 4 V 2 5 V 1 13 V 2 5 V 3 9 V 3 4 V 3 5 V 2 13 V 3 13 V 1 5 V 2 4 V 1 5 V 2 4 V 1 9 V 3 9 V 2 4 V 2 5 V 1 4 V 2 9 V 1 5 V 2 13 V 1 9 V 2 4 V 1 5 V 2 9 V 1 9 V 4 8 V 1 5 V 3 4 V 2 5 V 1 4 V 2 5 V 3 9 V 1 4 V 2 9 V 1 4 V 4 9 V 1 5 V 2 4 V 1 5 V 3 13 V 2 4 V 1 9 V 2 9 V 3 5 V 3 4 V 3 9 V 2 9 V 3 4 V 3 14 V 1 4 V 2 5 V 1 9 V stroke 1021 1057 M 2 9 V 5 8 V 3 9 V 3 9 V 1 9 V 2 5 V 1 4 V 5 9 V 2 4 V 1 5 V 2 4 V 3 5 V 1 4 V 3 5 V 2 4 V 3 5 V 3 4 V 2 13 V 1 5 V 2 4 V 3 5 V 1 4 V 2 5 V 3 4 V 1 13 V 2 5 V 2 9 V 1 4 V 5 14 V 3 4 V 1 5 V 2 8 V 1 5 V 3 4 V 2 9 V 2 5 V 3 13 V 1 9 V 3 4 V 3 9 V 2 5 V 3 9 V 2 9 V 3 8 V 1 5 V 2 9 V 1 4 V 2 5 V 1 4 V 2 5 V 1 4 V 2 13 V 1 5 V 4 13 V 3 5 V 4 4 V 2 5 V 1 4 V 2 5 V 3 4 V 2 4 V 1 5 V 2 4 V 1 9 V 2 5 V 1 9 V 2 8 V 1 5 V 2 4 V 1 5 V 2 4 V 1 5 V 2 4 V 2 9 V 3 9 V 1 4 V 2 5 V 1 4 V 3 5 V 2 4 V 1 5 V 2 9 V 1 13 V 4 4 V 3 14 V 1 4 V 2 5 V 1 4 V 2 5 V 1 4 V 3 9 V 4 9 V 1 4 V 2 5 V 1 4 V 2 5 V 1 4 V 3 5 V 2 4 V 1 4 V 2 9 V 6 5 V 3 4 V 3 5 V stroke 1240 1698 M 6 4 V 2 5 V 2 4 V 1 5 V 3 4 V 3 4 V 2 5 V 4 13 V 2 5 V 5 4 V 1 5 V 2 4 V 1 13 V 2 5 V 4 4 V 5 9 V 3 5 V 3 4 V 3 5 V 2 8 V 4 5 V 3 9 V 2 4 V 2 5 V 1 4 V 2 5 V 1 4 V 2 5 V 6 4 V 3 4 V 1 5 V 7 4 V 1 5 V 2 4 V 1 14 V 3 4 V 2 5 V 3 4 V 6 4 V 2 5 V 1 4 V 2 5 V 3 4 V 3 9 V 3 5 V 3 4 V 6 4 V 2 5 V 6 4 V 1 5 V 2 4 V 3 5 V 3 4 V 2 9 V 6 5 V 1 4 V 7 4 V 1 9 V 3 5 V 3 9 V 3 4 V 2 5 V 3 4 V 2 5 V 4 4 V 2 4 V 3 5 V 3 4 V 5 5 V 12 4 V 1 5 V 5 4 V 2 5 V 3 4 V 1 4 V 3 5 V 2 4 V 3 5 V 3 4 V 3 5 V 2 4 V 1 5 V 2 4 V 1 5 V 2 4 V 1 4 V 3 9 V 3 5 V 2 4 V 2 5 V 1 4 V 5 5 V 4 4 V 3 5 V 3 4 V 5 9 V 3 9 V 6 4 V 3 5 V 4 4 V 6 5 V 3 4 V 3 9 V 1 4 V stroke 1545 2236 M 10 5 V 3 4 V 9 5 V 11 4 V 3 9 V 4 5 V 7 4 V 6 4 V 1 5 V 5 4 V 3 5 V 2 9 V 6 9 V 12 4 V 6 9 V 5 4 V 4 5 V 7 4 V 1 5 V 8 4 V 9 5 V 6 4 V 2 5 V 3 4 V 3 5 V 3 4 V 2 4 V 1 5 V 2 4 V 4 5 V 3 4 V 2 5 V 1 4 V 2 5 V 6 4 V 8 4 V 1 5 V 5 4 V 3 5 V 2 4 V 9 9 V 5 5 V 4 4 V 3 5 V 2 4 V 9 9 V 5 9 V 4 4 V 13 5 V 6 4 V 20 5 V 3 4 V 1 5 V 10 4 V 9 4 V 11 9 V 1 5 V 6 4 V 2 5 V 8 4 V 3 9 V 7 5 V 4 4 V 9 9 V 1 4 V 2 5 V 3 4 V 12 5 V 3 4 V 5 5 V 12 4 V 6 4 V 10 5 V 14 4 V 10 5 V 2 4 V 5 5 V 4 4 V 3 5 V 14 4 V 6 5 V 10 4 V 1 4 V 2 5 V 7 4 V 3 5 V 2 4 V 8 5 V 4 4 V 8 5 V 8 4 V 10 5 V 2 4 V 3 4 V 12 5 V 5 4 V 12 5 V 8 4 V 6 5 V 2 4 V 18 5 V 2 4 V 3 4 V 1 5 V stroke 2129 2744 M 4 4 V 15 5 V 20 4 V 1 9 V 21 5 V 3 4 V 1 5 V 19 4 V 1 4 V 2 5 V 9 4 V 25 5 V 9 4 V 3 5 V 5 9 V 9 4 V 4 5 V 5 4 V 6 4 V 3 5 V 13 4 V 14 5 V 12 4 V 8 5 V 7 4 V 13 5 V 3 4 V 6 5 V 11 4 V 1 4 V 20 5 V 3 4 V 20 5 V 6 4 V 4 5 V 4 4 V 3 5 V 6 4 V 10 4 V 3 5 V 18 4 V 3 5 V 10 4 V 12 5 V 5 4 V 9 5 V 15 4 V 12 5 V 7 4 V 27 9 V 5 4 V 9 5 V 8 4 V 11 5 V 4 4 V 7 5 V 1 4 V 3 5 V 11 4 V 5 4 V 18 5 V 2 4 V 3 5 V 3 4 V 1 5 V 2 4 V 25 5 V 3 4 V 1 4 V 5 5 V 6 4 V 5 5 V 20 4 V 26 5 V 7 4 V 4 5 V 6 4 V 9 5 V 6 4 V 5 4 V 17 5 V 3 4 V 23 5 V 6 4 V 9 5 V 20 4 V 3 5 V 14 4 V 3 5 V 19 4 V 6 4 V 3 5 V 12 4 V 30 5 V 6 4 V 15 5 V 14 4 V 29 5 V 19 4 V 8 4 V 12 5 V 25 4 V 10 5 V 3 4 V stroke 3109 3220 M 8 5 V 17 4 V 37 5 V 2 4 V 7 5 V 17 4 V 3 4 V 8 5 V 6 4 V 8 5 V 8 4 V 3 5 V 7 4 V 14 5 V 11 4 V 5 5 V 4 4 V 13 4 V 1 5 V 6 4 V 8 5 V 25 4 V 1 5 V 40 4 V 11 5 V 36 4 V 1 5 V 8 4 V 3 4 V 11 5 V 3 4 V 9 5 V 2 4 V 4 5 V 5 4 V 4 5 V 10 4 V 27 4 V 14 5 V 16 4 V 6 5 V 21 4 V 13 5 V 18 4 V 8 5 V 20 4 V 11 5 V 32 4 V 11 4 V 3 5 V 8 4 V 7 5 V 8 4 V 16 5 V 29 4 V 15 5 V 3 4 V 11 5 V 11 4 V 25 4 V 23 5 V 3 4 V 35 9 V 3 5 V 2 4 V 3 5 V 5 4 V 29 4 V 6 5 V 5 4 V 13 5 V 17 4 V 19 5 V 12 4 V 45 5 V 22 4 V 9 5 V 24 4 V 64 4 V 24 5 V 3 4 V 13 5 V 4 4 V 8 5 V 5 4 V 13 5 V 10 4 V 7 5 V 19 4 V 8 4 V 4 5 V 30 4 V 13 5 V 13 4 V 74 5 V 9 4 V 1 5 V 8 4 V 8 5 V 1 4 V 37 4 V 10 5 V 18 4 V 19 5 V stroke 4506 3688 M 6 4 V 31 5 V 37 4 V 20 5 V 7 4 V 31 4 V 5 5 V 4 4 V 10 5 V 3 4 V 6 5 V 14 4 V 4 5 V 51 4 V 14 5 V 9 4 V 25 4 V 19 5 V 10 4 V 2 5 V 26 4 V 9 5 V 42 4 V 57 5 V 12 4 V 6 5 V 2 4 V 17 4 V 23 5 V 20 4 V 25 5 V 37 4 V 17 5 V 61 4 V 10 5 V 7 4 V 46 4 V 4 5 V 47 4 V 5 5 V 35 4 V 7 5 V 20 4 V 3 5 V 4 4 V 13 5 V 20 4 V 6 4 V 18 5 V 8 4 V 11 5 V 24 4 V 34 5 V 14 4 V 33 5 V 24 4 V 28 5 V 5 4 V 3 4 V 10 5 V 33 4 V 48 5 V 3 4 V 9 5 V 21 4 V 25 5 V 14 4 V 76 5 V 4 4 V 23 4 V 17 5 V 8 4 V 51 5 V 154 4 V 12 5 V 3 4 V 8 5 V 17 4 V 20 4 V 42 5 V 23 4 V 26 5 V 28 4 V 1.000 UL LTb 798 420 M 6164 0 V 0 4452 V -6164 0 V 798 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 2831 a Fq(Figur)o(e)g(3.10:)28 b(A)22 b(plot)f(of)g(two)h(differ)o(ent)e(runs)g(of)i(the)f(liveness)g(test.)g (The)h(graph)g(depicts)g(how)g(many)511 2936 y(hosts)d(have)h(aquir)o (ed)e(a)h(mutex)f(at)h(least)g(once)f(as)h(a)g(function)f(of)g(elapsed) i(time)e(in)g(the)h(each)h(test)e(run.)565 3145 y Fz(A)34 b(simplistic)i(pr)o(obabilistic)e(model)h(can)f(pr)o(ovide)g(some)h (insight)h(into)g(why)f(the)440 3259 y(graphs)19 b(look)g(like)h(they)f (do.)f(If)h(we)g(assume)f(that)h(the)g(mutexes)g(ar)o(e)e(acquir)o(ed)h (in)h(r)o(ounds)440 3374 y(of)j(one)g(second)h(and)e(that)h(the)h(pr)o (obability)e(of)h(obtaining)h(the)f(mutex)g(for)g(each)g(node)g(is)440 3489 y(independent)f(of)h(the)f(node)h(and)f(of)h(time)f(and)g(hence)h (is)g(\002xed)f(at)27 b Fu(p)e Fd(=)g Fz(1)q(/)q(993,)20 b(then)i(the)440 3603 y(pr)o(obability)i(that)g(a)g(node)h(has)f(not)i (obtained)e(the)g(mutex)h(after)g Fu(x)h Fz(r)o(ounds)f(is)h Fd(\()q Fz(1)18 b Fo(\000)24 b Fu(p)r Fd(\))3247 3573 y Fb(x)3284 3603 y Fz(.)440 3718 y(Conversely)-9 b(,)21 b(the)f(pr)o(obability)h(that)g(a)f(node)h(has)f(obtained)h(the)g (mutex)g(is)g(1)16 b Fo(\000)i Fd(\()q Fz(1)f Fo(\000)23 b Fu(p)r Fd(\))3243 3688 y Fb(x)3279 3718 y Fz(.)565 3832 y(On)c(average,)f(we)h(expect)f(that)h(the)h(total)f(number)h(of)f (nodes)k Fu(N)g Fz(that)c(have)f(obtained)440 3947 y(the)j(mutex)g (after)g Fu(x)i Fz(seconds)e(is)1251 4159 y Fu(N)28 b Fd(=)23 b Fz(993)16 b Fo(\001)1615 4042 y Fa(\022)1677 4159 y Fz(1)h Fo(\000)1819 4042 y Fa(\022)1881 4159 y Fz(1)f Fo(\000)2073 4103 y Fz(1)p 2031 4140 125 4 v 2031 4216 a(993)2167 4042 y Fa(\023)2231 4063 y Fb(x)2269 4042 y Fa(\023)440 4382 y Fz(A)k(graph)h(of)k Fu(N)e Fz(as)e(a)f(function)i(of)g Fu(x)h Fz(is)e(plotted)g(as)f Fu(model)g Fz(in)i(Figur)o(e)e(3.10.)565 4496 y(Initially)-9 b(,)32 b(when)i(no)f(nodes)g(have)f(obtained)h(any)f(mutex)h(\()r Fu(x)48 b Fd(=)d Fz(0)33 b(seconds\),)f(the)440 4611 y(pr)o(obability)23 b(of)g(any)g(client)h(node)f(obtaining)i(a)e(mutex) g(for)g(the)g(\002rst)h(time)g(is)f(1,)g(but)g(the)440 4726 y(pr)o(obability)c(gradually)g(decr)o(eases)f(as)h(the)h(test)f (pr)o(ogr)o(esses)g(and)g(most)i(nodes)f(get)f(their)440 4840 y(\002rst)g(mutex.)f(As)g(the)h(graph)f(indicates)g(both)h(test)g (r)o(uns)g(follow)g(the)g(model)f(for)h(appr)o(oxi-)440 4955 y(mately)e(the)g(\002rst)h(500)e(seconds.)h(Of)g(course,)g(the)g (model)h(is)f(cr)o(ude)g(and)g(the)g(assumptions)440 5069 y(only)22 b(appr)o(oximately)d(hold.)565 5184 y(Figur)o(e)27 b(3.11)g(pr)o(esents)g(an)h(distribution)i(of)e(mutex)g(grants)g(on)h (hosts)g(during)g(two)440 5298 y(r)o(uns)d(of)g(the)g(liveness)g(test.) g(During)g(the)g(\002rst)g(r)o(un)g(of)g(the)g(test,)g(112)e(clients)i (never)f(ob-)440 5413 y(tained)h(a)g(single)i(mutex)f(during)f(the)h (3600)e(seconds.)i(124)e(client)i(nodes)g(wer)o(e)f(able)g(to)1831 5662 y(61)p eop %%Page: 62 64 62 63 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 563 2267 a @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3118 @rwi @setspecial %%BeginDocument: test/images/liveness_total.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Tue Dec 21 13:57:45 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 714 420 M 63 0 V 6185 0 R -63 0 V 630 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 714 1480 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 50) Rshow grestore 1.000 UL LTb 714 2540 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 100) Rshow grestore 1.000 UL LTb 714 3600 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 150) Rshow grestore 1.000 UL LTb 714 4660 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 200) Rshow grestore 1.000 UL LTb 714 420 M 0 63 V 0 4389 R 0 -63 V 714 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1408 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 10) Cshow grestore 1.000 UL LTb 2102 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 20) Cshow grestore 1.000 UL LTb 2797 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 30) Cshow grestore 1.000 UL LTb 3491 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 40) Cshow grestore 1.000 UL LTb 4185 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 50) Cshow grestore 1.000 UL LTb 4879 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 60) Cshow grestore 1.000 UL LTb 5574 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 70) Cshow grestore 1.000 UL LTb 6268 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 80) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 90) Cshow grestore 1.000 UL LTb 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Number of nodes) Cshow grestore grestore LTb 3838 70 M gsave 0 setgray (Obtained mutexes) Cshow grestore 1.000 UP 1.000 UL LT0 LTb 6311 4739 M gsave 0 setgray (Run 1) Rshow grestore LT0 6395 4739 M 399 0 V 714 2773 M 69 0 V 0 297 V 70 0 V 0 191 V 69 0 V 0 -467 V 70 0 V 0 -487 V 69 0 V 0 -106 V 70 0 V 0 -233 V 69 0 V 0 -64 V 69 0 V 0 -424 V 70 0 V 0 -488 V 69 0 V 0 -21 V 70 0 V 0 -254 V 69 0 V 0 -43 V 69 0 V 0 64 V 70 0 V 0 -191 V 69 0 V 0 -42 V 70 0 V 0 -21 V 69 0 V 70 0 V 0 21 V 69 0 V 0 -21 V 69 0 V 0 -43 V 70 0 V 69 0 V 70 0 V 69 0 V 0 -21 V 70 0 V 69 0 V 69 0 V 0 21 V 70 0 V 0 -21 V 69 0 V 70 0 V 69 0 V 70 0 V 69 0 V 69 0 V 0 21 V 70 0 V 0 -21 V 69 0 V 70 0 V 69 0 V 69 0 V 70 0 V 69 0 V 0 21 V 70 0 V 0 -21 V 69 0 V 0 64 V 70 0 V 0 -43 V 69 0 V 0 -21 V 69 0 V 70 0 V 69 0 V 70 0 V 0 21 V 69 0 V 70 0 V 69 0 V 0 -21 V 69 0 V 70 0 V 69 0 V 0 21 V 70 0 V 0 43 V 69 0 V 0 -43 V 69 0 V 0 21 V 70 0 V 0 -42 V 69 0 V 70 0 V 0 21 V 69 0 V 0 -21 V 70 0 V 0 21 V stroke 5088 441 M 69 0 V 69 0 V 0 -21 V 70 0 V 0 21 V 69 0 V 0 -21 V 70 0 V 69 0 V 70 0 V 0 21 V 69 0 V 69 0 V 0 -21 V 70 0 V 69 0 V 70 0 V 69 0 V 70 0 V 69 0 V 0 21 V 69 0 V 0 -21 V 70 0 V 69 0 V 70 0 V 0 21 V 69 0 V 0 -21 V 69 0 V 1.000 UL LT1 LTb 6311 4599 M gsave 0 setgray (Run 2) Rshow grestore LT1 6395 4599 M 399 0 V 714 4172 M 69 0 V 0 594 V 70 0 V 0 -827 V 69 0 V 0 -572 V 70 0 V 0 -657 V 69 0 V 0 -848 V 70 0 V 0 -424 V 69 0 V 0 -382 V 69 0 V 0 -106 V 70 0 V 0 -382 V 69 0 V 0 64 V 70 0 V 0 -127 V 69 0 V 0 -64 V 69 0 V 0 21 V 70 0 V 69 0 V 0 -42 V 70 0 V 0 21 V 69 0 V 70 0 V 0 -21 V 69 0 V 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 2455 a Fq(Figur)o(e)d(3.11:)29 b(A)20 b(plot)h(of)f(the)h(distribution)e(of)h(mutexes)h(granted)g(during)f (the)h(two)g(runs)e(of)i(the)g(live-)511 2560 y(ness)d(test.)440 2810 y Fz(obtain)31 b(a)f(single)h(mutex,)f(and)g(133)f(and)h(111)e (client)j(nodes,)g(r)o(espectively)-9 b(,)28 b(wer)o(e)i(able)440 2925 y(to)g(obtain)g(two)g(and)g(thr)o(ee)f(mutexes.)g(One)h(client)g (node)g(was)g(able)f(to)h(obtain)g(a)f(total)440 3039 y(maximum)21 b(of)g(82)f(mutexes)h(during)g(the)f(\002rst)h(r)o(un.)565 3154 y(During)f(the)f(second)h(r)o(un)g(of)f(the)g(test,)h(177)d (clients)j(never)f(obtained)g(a)g(single)h(mutex)440 3268 y(during)k(the)g(3600)e(seconds.)i(205)f(client)h(nodes)g(wer)o(e) f(able)g(to)i(obtain)f(one)g(mutex,)g(and)440 3383 y(166)g(and)g(139)g (client)h(nodes,)h(r)o(espectively)-9 b(,)23 b(wer)o(e)h(able)h(to)g (obtain)h(two)f(and)g(thr)o(ee)f(mu-)440 3498 y(texes.)i(During)i(the)f (second)g(r)o(un,)g(one)g(node)g(was)g(able)f(to)h(obtain)g(a)f (maximum)h(of)g(17)440 3612 y(mutexes.)565 3727 y(Hence,)19 b(as)h(expected,)f(our)h(pr)o(oposed)f(algorithm)i(is)g(not)g(capable)d (of)i(ensuring)h(that)440 3841 y(every)j(node)g(gets)g(the)h(mutex.)f (Although)h(most)g(nodes)g(get)f(the)g(mutex)h(at)e(least)h(once,)440 3956 y(this)c(still)g(may)f(be)g(a)f(pr)o(oblem)h(in)h(practise.)e (Part)h(of)g(the)g(pr)o(oblem)g(is)h(pr)o(obably)e(also)h(that)440 4070 y(the)j(algorithm)g(makes)g(clients)g(that)g(ar)o(e)e(denied)h (the)h(mutex)g(several)f(times)h(wait)g(even)440 4185 y(longer)f(befor)o(e)f(they)h(try)g(to)g(r)o(equest)f(it)h(again.)f (This)i(favours)e(clients)h(that)g(start)f(afr)o(esh.)440 4445 y Fp(3.4.3)99 b(Performance)440 4618 y Fz(The)26 b(purpose)h(of)f(this)i(test)e(is)h(to)g(evaluate)e(how)j(the)e(pr)o (oposed)g(algorithm)i(performs)440 4733 y(under)17 b(sever)o(e)f(str)o (ess)h(by)h(a)e(having)i(a)f(lar)o(ge)f(number)i(of)f(client)h(nodes)f (r)o(equest)g(dif)o(fer)o(ent)440 4847 y(mutexes)k(sequentially)-9 b(.)440 5088 y Fv(Description)440 5261 y Fz(T)h(o)29 b(test)g(the)g(sequential)g(performance)f(of)h(the)g(algorithm,)g(the)g (993)e(nodes)i(r)o(equest)g(a)440 5376 y(mutex)19 b(for)g Fu(n)h Fz(dif)o(fer)o(ent)c(r)o(esour)o(ces.)i(Each)g(node)g(generates) g(the)i Fu(n)g Fz(r)o(esour)o(ce)d(names)i(ran-)1831 5662 y(62)p eop %%Page: 63 65 63 64 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(domly)29 b(so)f(that)g(ther)o(e)f(is)i(no)f(overlap)f (with)i(the)f(r)o(esour)o(ces)f(of)h(the)g(other)g(nodes.)g(The)440 646 y(total)e(amount)g(of)g(time)g(needed)e(for)i(all)f(nodes)h(to)g (obtain)g(the)h Fu(n)g Fz(mutexes,)e(as)h(well)g(as)440 760 y(the)21 b(number)g(of)g(mutexes)f(obtained)h(per)f(second,)h(ar)o (e)e(measur)o(ed.)565 875 y(In)d(or)o(der)g(to)h(evaluate)e(the)i (scalability)g(of)f(the)h(pr)o(oposed)f(algorithm)h(for)g(distributed) 440 990 y(mutual)30 b(exclusion)g(both)g(the)f(sequential)h(and)f (parallel)g(tests)g(ar)o(e)f(executed)g(for)i(two)440 1104 y(dif)o(fer)o(ent)c(values)i(of)h Fu(n)q Fz(,)g(namely)f(250)f (and)h(500.)e(All)j(tests)f(ar)o(e)f(allowed)h(to)h(r)o(un)g(for)f(at) 440 1219 y(most)22 b(3600)c(seconds.)440 1460 y Fv(Results)440 1633 y Fz(The)k(r)o(esults)g(of)g(the)h(performance)e(tests)i(with)h Fu(n)k Fd(=)e Fz(250)21 b(and)i Fu(n)28 b Fd(=)e Fz(500)21 b(ar)o(e)g(depicted)g(in)440 1747 y(Figur)o(e)j(3.12)f(and)h(Figur)o(e) h(3.13)e(r)o(epectively)-9 b(.)23 b(A)h(common)i(pr)o(oblem)e(is)i(the) e(occurr)o(ence)440 1862 y(of)c Fu(sleeping)h(periods)p Fz(.)f(In)g(both)h(tests)g(the)g(algorithm)g(initially)g(performed)e (well)i(in)g(grant-)440 1977 y(ing)e(appr)o(oximately)e(250)f(mutexes)i (per)g(second.)g(However)-6 b(,)17 b(the)h(performance)f(quickly)440 2091 y(degrades)25 b(towar)o(ds)h(a)g(short)h(period)f(with)i(close)e (to)h(zer)o(o)f(mutexes)g(granted)g(per)g(sec-)440 2206 y(ond.)e(W)-8 b(e)25 b(have)e(no)i(other)f(explanation)g(for)g(this)h (oddness)f(than)h(the)f(machines)h(in)f(our)440 2320 y(test)d(envir)o(onment)g(being)g(overloaded.)563 4262 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3118 @rwi @setspecial %%BeginDocument: test/images/seq-250-delta.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Tue Dec 21 10:48:11 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 714 420 M 63 0 V 6185 0 R -63 0 V 630 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 714 1162 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 100) Rshow grestore 1.000 UL LTb 714 1904 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 200) Rshow grestore 1.000 UL LTb 714 2646 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 300) Rshow grestore 1.000 UL LTb 714 3388 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 400) Rshow grestore 1.000 UL LTb 714 4130 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 500) Rshow grestore 1.000 UL LTb 714 4872 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 600) Rshow grestore 1.000 UL LTb 714 420 M 0 63 V 0 4389 R 0 -63 V 714 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1408 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 100) Cshow grestore 1.000 UL LTb 2102 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 200) Cshow grestore 1.000 UL LTb 2797 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 300) Cshow grestore 1.000 UL LTb 3491 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 400) Cshow grestore 1.000 UL LTb 4185 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 500) Cshow grestore 1.000 UL LTb 4879 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 600) Cshow grestore 1.000 UL LTb 5574 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 700) Cshow grestore 1.000 UL LTb 6268 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 800) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 900) Cshow grestore 1.000 UL LTb 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Mutex/second) Cshow grestore grestore LTb 3838 70 M gsave 0 setgray (Time \(seconds\)) Cshow grestore 1.000 UP 1.000 UL LT0 714 487 M 7 319 V 7 1677 V 7 -223 V 7 -734 V 7 1224 V 7 -1076 V 7 -119 V 7 253 V 6 185 V 7 -415 V 7 675 V 7 -520 V 7 275 V 7 30 V 7 141 V 7 155 V 7 -104 V 7 -81 V 7 126 V 7 89 V 7 186 V 7 -238 V 7 386 V 7 -260 V 7 193 V 6 -67 V 7 290 V 7 -149 V 7 -222 V 7 52 V 7 -1121 V 7 23 V 7 178 V 7 178 V 7 586 V 7 -520 V 7 364 V 7 -223 V 7 735 V 7 -297 V 7 -541 V 7 1372 V 7 -1528 V 6 326 V 7 757 V 7 -668 V 7 97 V 7 616 V 7 -490 V 7 -1009 V 7 1781 V 7 -438 V 7 -846 V 7 705 V 7 -119 V 7 45 V 7 -1254 V 7 3012 V 7 -1907 V 7 -950 V 6 616 V 7 2441 V 7 -2136 V 7 -728 V 7 2887 V 7 -2352 V 7 1105 V 7 -1298 V 7 1046 V 7 -37 V 7 -668 V 7 979 V 7 -1098 V 7 -438 V 7 2857 V 7 -2345 V 7 1062 V 6 -594 V 7 -1506 V 7 118 V 7 -497 V 7 -267 V 7 30 V 7 -37 V 7 15 V 7 178 V 7 89 V 7 -75 V 7 -81 V 7 185 V 7 -37 V 7 -96 V 7 -208 V 7 -52 V 7 0 V 6 15 V 7 7 V 7 -7 V 7 15 V 7 -15 V 7 15 V 7 -45 V 7 8 V 7 -15 V stroke 1436 435 M 7 -8 V 7 8 V 7 7 V 7 8 V 7 -23 V 7 38 V 7 7 V 7 15 V 6 37 V 7 22 V 7 8 V 7 96 V 7 -15 V 7 30 V 7 74 V 7 0 V 7 171 V 7 -297 V 7 -119 V 7 -7 V 7 7 V 7 -37 V 7 -15 V 7 -15 V 7 0 V 6 15 V 7 -7 V 7 7 V 7 30 V 7 67 V 7 -67 V 7 -22 V 7 -23 V 7 15 V 7 -7 V 7 74 V 7 119 V 7 -104 V 7 -74 V 7 29 V 7 45 V 7 -22 V 7 -23 V 6 -22 V 7 37 V 7 74 V 7 97 V 7 59 V 7 74 V 7 82 V 7 15 V 7 30 V 7 44 V 7 -22 V 7 37 V 7 22 V 7 -30 V 7 -44 V 7 67 V 7 111 V 6 -141 V 7 67 V 7 22 V 7 37 V 7 252 V 7 -155 V 7 497 V 7 593 V 7 45 V 7 549 V 7 141 V 7 -720 V 7 1603 V 7 -1306 V 7 430 V 7 -304 V 7 475 V 6 -556 V 7 -30 V 7 104 V 7 -60 V 7 -29 V 7 853 V 7 -824 V 7 698 V 7 -468 V 7 52 V 7 557 V 7 -609 V 7 186 V 7 490 V 7 -549 V 7 667 V 7 -59 V 7 -319 V 6 289 V 7 -252 V 7 -356 V 7 712 V 7 -178 V 7 -579 V 7 8 V 7 -22 V 7 415 V stroke 2158 3336 M 7 -579 V 7 475 V 7 -311 V 7 37 V 7 37 V 7 -794 V 7 638 V 7 319 V 6 -453 V 7 60 V 7 690 V 7 -883 V 7 712 V 7 -312 V 7 282 V 7 -400 V 7 156 V 7 601 V 7 -1032 V 7 950 V 7 -497 V 7 334 V 7 22 V 7 -364 V 7 520 V 6 -364 V 7 -74 V 7 364 V 7 -824 V 7 1091 V 7 -727 V 7 445 V 7 -527 V 7 490 V 7 -89 V 7 334 V 7 -772 V 7 801 V 7 -230 V 7 -304 V 7 163 V 7 520 V 6 -349 V 7 -215 V 7 742 V 7 -757 V 7 430 V 7 -237 V 7 148 V 7 -7 V 7 37 V 7 -208 V 7 104 V 7 163 V 7 -156 V 7 -163 V 7 512 V 7 -512 V 7 616 V 7 -846 V 6 935 V 7 -645 V 7 -312 V 7 52 V 7 -527 V 7 -438 V 7 -423 V 7 -564 V 7 -104 V 7 -200 V 7 -141 V 7 126 V 7 -74 V 7 -15 V 7 89 V 7 30 V 7 134 V 6 -67 V 7 -156 V 7 -74 V 7 -82 V 7 -133 V 7 111 V 7 22 V 7 -30 V 7 -7 V 7 -82 V 7 89 V 7 -59 V 7 -59 V 7 15 V 7 0 V 7 81 V 7 0 V 6 89 V 7 119 V 7 74 V 7 312 V 7 -163 V 7 22 V 7 7 V 7 -141 V 7 126 V 7 -126 V stroke 2880 954 M 7 97 V 7 -126 V 7 74 V 7 -60 V 7 -29 V 7 141 V 7 -15 V 7 171 V 6 74 V 7 719 V 7 82 V 7 668 V 7 -319 V 7 126 V 7 579 V 7 -312 V 7 586 V 7 -846 V 7 690 V 7 -192 V 7 -38 V 7 -103 V 7 -38 V 7 8 V 7 178 V 6 -104 V 7 -44 V 7 89 V 7 645 V 7 -289 V 7 0 V 7 -186 V 7 141 V 7 119 V 7 -297 V 7 52 V 7 594 V 7 -609 V 7 327 V 7 -223 V 7 -44 V 7 185 V 6 -133 V 7 74 V 7 -260 V 7 341 V 7 -356 V 7 245 V 7 -119 V 7 52 V 7 -326 V 7 564 V 7 -275 V 7 -245 V 7 394 V 7 14 V 7 -371 V 7 616 V 7 -200 V 7 7 V 6 -296 V 7 230 V 7 -423 V 7 534 V 7 -252 V 7 -342 V 7 1069 V 7 -1299 V 7 675 V 7 119 V 7 -400 V 7 452 V 7 -779 V 7 460 V 7 -74 V 7 378 V 7 -111 V 6 -401 V 7 586 V 7 -445 V 7 586 V 7 -764 V 7 445 V 7 -363 V 7 497 V 7 -712 V 7 534 V 7 -67 V 7 -230 V 7 512 V 7 -349 V 7 -15 V 7 90 V 7 -97 V 6 97 V 7 -171 V 7 556 V 7 -883 V 7 987 V 7 -727 V 7 208 V 7 -149 V 7 186 V 7 215 V stroke 3602 3514 M 7 -727 V 7 764 V 7 -356 V 7 74 V 7 386 V 7 -445 V 7 126 V 7 -74 V 6 141 V 7 -349 V 7 861 V 7 -1002 V 7 512 V 7 -82 V 7 -230 V 7 260 V 7 -30 V 7 8 V 7 74 V 7 -126 V 7 -178 V 7 119 V 7 170 V 7 52 V 7 -163 V 6 -794 V 7 -571 V 7 -178 V 7 -327 V 7 -371 V 7 -282 V 7 126 V 7 -104 V 7 -111 V 7 52 V 7 141 V 7 82 V 7 -119 V 7 0 V 7 252 V 7 -7 V 7 148 V 6 -170 V 7 -8 V 7 82 V 7 -37 V 7 -112 V 7 141 V 7 97 V 7 44 V 7 -52 V 7 141 V 7 -215 V 7 -7 V 7 15 V 7 252 V 7 163 V 7 334 V 7 453 V 6 29 V 7 -59 V 7 519 V 7 -7 V 7 -89 V 7 -82 V 7 342 V 7 -268 V 7 112 V 7 118 V 7 -244 V 7 341 V 7 -238 V 7 349 V 7 22 V 7 -393 V 7 327 V 7 74 V 6 -267 V 7 623 V 7 -467 V 7 237 V 7 -245 V 7 349 V 7 -260 V 7 445 V 7 -333 V 7 -386 V 7 660 V 7 -497 V 7 -186 V 7 119 V 7 149 V 7 -30 V 7 -126 V 6 259 V 7 -296 V 7 304 V 7 -45 V 7 -230 V 7 52 V 7 267 V 7 -400 V 7 274 V 7 -311 V stroke 4324 2869 M 7 348 V 7 -460 V 7 690 V 7 -423 V 7 -52 V 7 38 V 7 133 V 6 -341 V 7 423 V 7 -186 V 7 37 V 7 -207 V 7 319 V 7 -112 V 7 -200 V 7 482 V 7 -512 V 7 475 V 7 -178 V 7 -193 V 7 74 V 7 -89 V 7 290 V 7 -364 V 7 141 V 6 67 V 7 -193 V 7 275 V 7 -423 V 7 230 V 7 29 V 7 -118 V 7 -8 V 7 201 V 7 96 V 7 -237 V 7 -171 V 7 260 V 7 -186 V 7 215 V 7 -156 V 7 -37 V 6 126 V 7 60 V 7 -208 V 7 141 V 7 -274 V 7 66 V 7 327 V 7 -238 V 7 186 V 7 -356 V 7 549 V 7 -579 V 7 453 V 7 -305 V 7 253 V 7 -238 V 7 178 V 6 -133 V 7 111 V 7 141 V 7 -579 V 7 497 V 7 -118 V 7 -453 V 7 564 V 7 -260 V 7 -22 V 7 7 V 7 52 V 7 -178 V 7 208 V 7 -15 V 7 -89 V 7 -163 V 7 156 V 6 -171 V 7 200 V 7 -141 V 7 -118 V 7 363 V 7 -408 V 7 230 V 7 -460 V 7 431 V 7 89 V 7 -490 V 7 363 V 7 -252 V 7 208 V 7 -67 V 7 -252 V 7 133 V 6 141 V 7 -52 V 7 -289 V 7 238 V 7 -67 V 7 -238 V 7 -89 V 7 156 V 7 -82 V 7 52 V stroke 5046 2141 M 7 30 V 7 -193 V 7 37 V 7 -7 V 7 37 V 7 -186 V 7 149 V 6 -8 V 7 -66 V 7 -30 V 7 0 V 7 119 V 7 -141 V 7 -23 V 7 -148 V 7 111 V 7 82 V 7 -223 V 7 82 V 7 -59 V 7 0 V 7 -45 V 7 45 V 7 -178 V 7 14 V 6 82 V 7 -89 V 7 -59 V 7 -23 V 7 119 V 7 -7 V 7 -112 V 7 8 V 7 -97 V 7 141 V 7 -178 V 7 60 V 7 22 V 7 -119 V 7 30 V 7 -37 V 7 -15 V 6 -15 V 7 59 V 7 -155 V 7 7 V 7 52 V 7 -37 V 7 -74 V 7 0 V 7 -45 V 7 -15 V 7 15 V 7 -22 V 7 -45 V 7 -37 V 7 67 V 7 -7 V 7 -52 V 6 -8 V 7 30 V 7 15 V 7 -178 V 7 126 V 7 -74 V 7 -23 V 7 89 V 7 -141 V 7 52 V 7 0 V 7 -22 V 7 15 V 7 -30 V 7 8 V 7 -37 V 7 22 V 6 -15 V 7 -67 V 7 15 V 7 -52 V 7 45 V 7 7 V 7 -82 V 7 75 V 7 -45 V 7 -30 V 7 0 V 7 15 V 7 8 V 7 -45 V 7 22 V 7 -14 V 7 0 V 7 -23 V 6 23 V 7 -52 V 7 0 V 7 22 V 7 -22 V 7 -23 V 7 0 V 7 -14 V 7 0 V 7 22 V stroke 5768 576 M 7 -15 V 7 0 V 7 -7 V 7 -30 V 7 22 V 7 15 V 7 15 V 6 0 V 7 -15 V 7 7 V 7 0 V 7 -29 V 7 52 V 7 -30 V 7 -7 V 7 0 V 7 -23 V 7 45 V 7 -45 V 7 -15 V 7 15 V 7 0 V 7 -15 V 7 0 V 6 38 V 7 -30 V 7 0 V 7 -22 V 7 7 V 7 22 V 7 -52 V 7 45 V 7 -15 V 7 -7 V 7 -8 V 7 -29 V 7 22 V 7 15 V 7 0 V 7 -15 V 7 -15 V 7 15 V 6 15 V 7 -23 V 7 -7 V 7 -7 V 7 7 V 7 0 V 7 -15 V 7 15 V 7 -7 V 7 -15 V 7 -8 V 7 15 V 7 -7 V 7 15 V 7 0 V 7 -8 V 7 -15 V 6 23 V 7 -8 V 7 0 V 7 -7 V 7 -23 V 7 23 V 7 -8 V 7 -7 V 7 7 V 7 0 V 7 -15 V 7 8 V 7 0 V 7 -8 V 76 0 V 7 0 V 7 0 V 7 0 V 35 0 V 7 0 V 7 0 V 6 0 V 7 0 V 7 0 V 7 0 V 14 0 V 77 0 V 6 0 V 7 0 V 7 0 V 7 8 V 7 -8 V 7 0 V 7 0 V 7 0 V 7 0 V 7 0 V 7 0 V 7 0 V 7 0 V 14 8 V 7 -8 V 13 0 V 7 0 V 7 0 V stroke 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 4450 a Fq(Figur)o(e)c(3.12:)28 b(The)18 b(graph)h(shows)g(mutex)e(grants)h(obtained)g(per)g(second.)g(Each)h (client)e(r)o(equested)g(250)511 4555 y(mutexes)29 b(as)f(fast)h(as)f (possible,)h(amounting)e(to)i(a)f(total)h(number)e(of)i(248.500)h (mutex)f(r)o(equests)e(in)511 4660 y(appr)o(oximately)20 b(900)g(seconds.)565 4872 y Fz(In)27 b(both)g(performance)e(tests)i (the)g(algorithm)h(wer)o(e)d(able)h(to)h(sustain)h(a)e(rate)g(of)g(ap-) 440 4986 y(pr)o(oximately)f(350)g(mutexes)h(granted)f(per)h(second,)g (and)f(a)g(peak)h(performance)f(at)g(ap-)440 5101 y(pr)o(oximately)18 b(550)f(mutexes)i(granted)f(per)g(second.)h(As)f(one)i(can)e(see)g(in)i (e.g.)e(Figur)o(e)g(3.13)440 5215 y(the)26 b(number)g(of)g(mutexes)g (granted)f(per)g(second)h(decr)o(eased)d(at)j(the)g(end)f(of)h(each)f (test.)440 5330 y(This)c(is)g(because)f(some)i(of)e(the)h(clients)h (\002nishes)g(befor)o(e)d(the)i(others.)1831 5662 y(63)p eop %%Page: 64 66 64 65 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 563 2267 a @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3118 @rwi @setspecial %%BeginDocument: test/images/seq-500-delta.eps %!PS-Adobe-2.0 EPSF-2.0 %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Tue Dec 21 10:48:21 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 714 420 M 63 0 V 6185 0 R -63 0 V 630 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 714 1162 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 100) Rshow grestore 1.000 UL LTb 714 1904 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 200) Rshow grestore 1.000 UL LTb 714 2646 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 300) Rshow grestore 1.000 UL LTb 714 3388 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 400) Rshow grestore 1.000 UL LTb 714 4130 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 500) Rshow grestore 1.000 UL LTb 714 4872 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 600) Rshow grestore 1.000 UL LTb 714 420 M 0 63 V 0 4389 R 0 -63 V 714 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1495 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 200) Cshow grestore 1.000 UL LTb 2276 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 400) Cshow grestore 1.000 UL LTb 3057 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 600) Cshow grestore 1.000 UL LTb 3838 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 800) Cshow grestore 1.000 UL LTb 4619 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1000) Cshow grestore 1.000 UL LTb 5400 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1200) Cshow grestore 1.000 UL LTb 6181 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1400) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 1600) Cshow grestore 1.000 UL LTb 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Mutex/second) Cshow grestore grestore LTb 3838 70 M gsave 0 setgray (Time \(seconds\)) Cshow grestore 1.000 UP 1.000 UL LT0 714 502 M 4 430 V 4 1054 V 4 801 V 4 -720 V 4 1084 V 3 -698 V 4 0 V 4 -890 V 4 838 V 4 527 V 4 -920 V 4 883 V 4 -178 V 4 -186 V 4 119 V 3 356 V 4 -289 V 4 -82 V 4 297 V 4 7 V 4 -118 V 4 22 V 4 -223 V 808 925 L 4 1988 V 4 -1328 V 3 445 V 823 954 L 4 -297 V 4 -59 V 4 119 V 4 534 V 4 594 V 4 415 V 4 134 V 4 37 V 3 311 V 4 -630 V 4 408 V 4 -282 V 4 237 V 4 475 V 4 -274 V 4 319 V 4 -527 V 4 319 V 4 59 V 3 186 V 4 148 V 4 -475 V 4 839 V 4 -319 V 4 -765 V 4 1306 V 4 -571 V 4 252 V 4 89 V 3 82 V 4 297 V 4 15 V 4 0 V 4 252 V 4 -571 V 4 163 V 4 119 V 4 -431 V 4 156 V 4 -534 V 3 -1803 V 4 -512 V 4 -112 V 4 -89 V 4 -7 V 4 15 V 4 230 V 4 148 V 4 -133 V 4 -141 V 3 37 V 4 22 V 4 -37 V 4 141 V 4 -319 V 4 -45 V 4 15 V 4 171 V 4 67 V 4 -216 V 4 45 V 3 -89 V 4 30 V 4 -30 V 4 0 V 4 -22 V 4 -23 V 4 30 V 4 45 V 4 -8 V 4 -52 V 7 8 V 4 15 V 12 -23 V 4 0 V 4 60 V stroke 1132 502 M 4 29 V 4 -7 V 4 37 V 3 7 V 4 -7 V 4 37 V 4 -126 V 4 0 V 4 297 V 4 163 V 4 119 V 4 -453 V 4 -133 V 4 0 V 3 -8 V 4 15 V 4 15 V 4 -52 V 4 -8 V 4 45 V 4 67 V 4 -74 V 4 0 V 4 -23 V 3 0 V 4 -7 V 4 0 V 8 -8 V 4 38 V 4 22 V 4 15 V 4 22 V 4 7 V 4 -37 V 3 0 V 4 -52 V 4 8 V 4 170 V 4 149 V 4 52 V 4 7 V 4 -252 V 4 59 V 4 104 V 3 208 V 4 0 V 4 -30 V 4 126 V 4 -15 V 4 45 V 4 67 V 4 -37 V 4 601 V 4 875 V 4 74 V 3 831 V 4 -430 V 4 282 V 4 -319 V 4 -89 V 4 267 V 4 111 V 4 475 V 4 -541 V 4 14 V 3 -14 V 4 497 V 4 -327 V 4 423 V 4 -252 V 4 -1328 V 4 1298 V 4 -178 V 4 423 V 4 -497 V 4 230 V 3 67 V 4 -846 V 4 913 V 4 74 V 4 -134 V 4 -705 V 4 1113 V 4 -771 V 4 -913 V 4 1907 V 3 -1217 V 4 586 V 4 -712 V 4 356 V 4 -289 V 4 170 V 4 586 V 4 -964 V 4 393 V 4 -119 V 4 653 V 3 -957 V 4 631 V 4 -245 V 4 -571 V 4 1640 V 4 -2071 V 4 1195 V stroke 1542 3299 M 4 282 V 4 -779 V 4 1202 V 3 -1640 V 4 2078 V 4 -1596 V 4 -44 V 4 1447 V 4 -1536 V 4 1231 V 4 -474 V 4 -950 V 4 1773 V 4 -1491 V 3 950 V 4 -423 V 4 -238 V 4 905 V 4 -942 V 4 52 V 4 89 V 4 186 V 4 -38 V 4 164 V 3 -505 V 4 423 V 4 -594 V 4 757 V 4 -816 V 4 935 V 4 -527 V 4 -15 V 4 8 V 4 52 V 4 -163 V 3 526 V 4 -1001 V 4 1832 V 4 -1728 V 4 1179 V 4 -771 V 4 467 V 4 393 V 4 -935 V 4 -89 V 3 950 V 4 -1313 V 4 1068 V 4 -1046 V 4 -1373 V 4 -118 V 4 -164 V 4 -193 V 4 15 V 4 423 V 4 156 V 3 126 V 4 104 V 4 -779 V 4 -126 V 4 7 V 4 -178 V 4 0 V 4 -15 V 4 23 V 4 22 V 3 163 V 4 -52 V 4 -59 V 4 -45 V 4 -59 V 4 7 V 4 -22 V 4 -7 V 4 -15 V 4 52 V 4 52 V 3 -45 V 4 -29 V 4 -8 V 4 59 V 4 45 V 4 -30 V 4 -44 V 4 81 V 4 112 V 4 274 V 3 -74 V 4 -178 V 4 -104 V 4 186 V 4 207 V 4 45 V 4 -126 V 4 156 V 4 185 V 4 -230 V 4 193 V 3 104 V 4 512 V 4 356 V 4 -30 V 4 453 V 4 119 V stroke 1948 2728 M 4 883 V 4 -1306 V 4 964 V 4 -267 V 4 -30 V 3 -141 V 4 757 V 4 -868 V 4 475 V 4 15 V 4 -364 V 4 735 V 4 -764 V 4 437 V 4 -252 V 3 -319 V 4 1336 V 4 -1484 V 4 311 V 4 282 V 4 -319 V 4 527 V 4 -7 V 4 -379 V 4 401 V 4 -712 V 3 868 V 4 -245 V 4 -245 V 4 111 V 4 15 V 4 0 V 4 -74 V 4 -408 V 4 593 V 4 -727 V 3 453 V 4 260 V 4 -453 V 4 423 V 4 -141 V 4 52 V 4 -304 V 4 371 V 4 -141 V 4 74 V 4 -327 V 3 364 V 4 -148 V 4 -60 V 4 319 V 4 -215 V 4 193 V 4 -141 V 4 267 V 4 -200 V 4 -230 V 3 133 V 4 342 V 4 -223 V 4 67 V 4 -134 V 4 15 V 4 193 V 4 -490 V 4 772 V 4 -378 V 4 -639 V 3 757 V 4 -319 V 4 -282 V 4 312 V 4 -30 V 4 -7 V 4 -163 V 4 512 V 4 -512 V 4 252 V 3 104 V 4 -371 V 4 29 V 4 305 V 4 178 V 4 -883 V 4 1076 V 4 -379 V 4 245 V 4 -297 V 4 156 V 3 -111 V 4 274 V 4 -378 V 4 504 V 4 -534 V 4 757 V 4 -668 V 4 267 V 4 -252 V 4 178 V 3 -319 V 4 126 V 4 223 V 4 -89 V 4 349 V stroke 2354 3611 M 4 -394 V 4 -170 V 4 794 V 4 -683 V 4 245 V 4 -67 V 3 -171 V 4 282 V 4 30 V 4 -319 V 4 341 V 4 104 V 4 230 V 4 -623 V 4 223 V 4 81 V 3 -74 V 4 -104 V 4 237 V 4 -927 V 4 -705 V 4 -497 V 4 -549 V 4 -223 V 4 0 V 4 15 V 4 -37 V 3 0 V 4 111 V 4 290 V 4 -8 V 4 -126 V 4 -156 V 4 0 V 4 97 V 4 193 V 4 44 V 3 15 V 4 -89 V 4 37 V 4 -59 V 4 200 V 4 193 V 4 816 V 4 149 V 4 252 V 4 -8 V 4 97 V 3 7 V 4 -178 V 4 475 V 4 -104 V 4 -289 V 4 697 V 4 -593 V 4 319 V 4 59 V 4 -7 V 3 -119 V 4 -7 V 4 178 V 4 -193 V 4 215 V 4 -96 V 4 -119 V 4 816 V 4 -52 V 4 230 V 4 -579 V 3 297 V 4 30 V 4 -297 V 4 82 V 4 -171 V 4 -82 V 4 -245 V 4 505 V 4 -119 V 4 -81 V 3 -75 V 4 223 V 4 -15 V 4 -193 V 4 45 V 4 297 V 4 -520 V 4 327 V 4 104 V 4 -253 V 4 290 V 3 -215 V 4 74 V 4 -304 V 4 408 V 4 -104 V 4 -260 V 4 230 V 4 -52 V 4 -82 V 4 245 V 4 -259 V 3 215 V 4 30 V 4 -409 V stroke 2760 3024 M 4 564 V 4 -697 V 4 497 V 4 -52 V 4 -200 V 4 497 V 4 -772 V 3 690 V 4 -438 V 4 45 V 4 178 V 4 -126 V 4 -45 V 4 364 V 4 -141 V 4 -82 V 4 -118 V 4 74 V 3 74 V 4 -193 V 4 -30 V 4 230 V 4 8 V 4 59 V 4 -274 V 4 104 V 4 163 V 4 -45 V 3 -334 V 4 661 V 4 -423 V 4 334 V 4 -371 V 4 -149 V 4 497 V 4 -630 V 4 378 V 4 193 V 4 -319 V 3 341 V 4 -133 V 4 96 V 4 -289 V 4 260 V 4 -208 V 4 378 V 4 -489 V 4 541 V 4 -630 V 3 882 V 4 -697 V 4 45 V 4 237 V 4 -193 V 4 -22 V 4 452 V 4 -653 V 4 208 V 4 208 V 4 -89 V 3 -156 V 4 171 V 4 -119 V 4 512 V 4 -660 V 4 185 V 4 60 V 4 96 V 4 -119 V 4 0 V 3 -304 V 4 267 V 4 -430 V 4 -275 V 4 -630 V 4 -327 V 4 -482 V 4 185 V 4 -15 V 4 -118 V 4 -282 V 3 126 V 4 267 V 4 -104 V 4 22 V 4 -200 V 4 0 V 4 67 V 4 356 V 4 -134 V 4 201 V 3 475 V 4 601 V 4 -149 V 4 549 V 4 -304 V 4 -74 V 4 -67 V 4 22 V 4 -59 V 4 260 V 4 104 V 3 0 V 4 -141 V stroke 3166 2817 M 4 44 V 4 163 V 4 -141 V 4 275 V 4 -37 V 4 -252 V 4 -67 V 4 400 V 3 -170 V 4 156 V 4 -30 V 4 -96 V 4 371 V 4 -305 V 4 -126 V 4 334 V 4 -178 V 4 22 V 4 52 V 3 -326 V 4 437 V 4 -348 V 4 52 V 4 133 V 4 -118 V 4 378 V 4 -364 V 4 -52 V 4 186 V 3 -89 V 4 89 V 4 96 V 4 -207 V 4 -15 V 4 96 V 4 -170 V 4 111 V 4 -282 V 4 453 V 4 -312 V 3 193 V 4 -111 V 4 -223 V 4 564 V 4 -327 V 4 -126 V 4 252 V 4 -252 V 4 104 V 4 -67 V 3 -37 V 4 -52 V 4 -37 V 4 22 V 4 52 V 4 -104 V 4 268 V 4 -193 V 4 -15 V 4 111 V 4 -208 V 3 282 V 4 -222 V 4 133 V 4 -111 V 4 67 V 4 156 V 4 -216 V 4 30 V 4 304 V 4 -215 V 3 -37 V 4 -7 V 4 -104 V 4 81 V 4 149 V 4 -290 V 4 230 V 4 -200 V 4 126 V 4 -89 V 4 208 V 3 -282 V 4 163 V 4 8 V 4 -104 V 4 -82 V 4 186 V 4 -15 V 4 44 V 4 -104 V 4 119 V 4 8 V 3 -112 V 4 149 V 4 -149 V 4 30 V 4 -45 V 4 141 V 4 -133 V 4 59 V 4 -59 V 4 -171 V 3 97 V stroke 3572 2817 M 4 -97 V 4 364 V 4 -193 V 4 -334 V 4 378 V 4 -126 V 4 74 V 4 164 V 4 -549 V 4 415 V 3 89 V 4 -341 V 4 297 V 4 -267 V 4 51 V 4 230 V 4 -259 V 4 222 V 4 -74 V 4 30 V 3 -8 V 4 -59 V 4 111 V 4 -193 V 4 394 V 4 -290 V 4 67 V 4 8 V 4 -30 V 4 -60 V 4 216 V 3 -238 V 4 178 V 4 -133 V 4 52 V 4 -164 V 4 82 V 4 104 V 4 -327 V 4 193 V 4 67 V 3 -96 V 4 -275 V 4 282 V 4 -148 V 4 215 V 4 -15 V 4 -119 V 4 0 V 4 45 V 4 -119 V 4 -22 V 3 59 V 4 89 V 4 -178 V 4 74 V 4 134 V 4 -193 V 4 134 V 4 52 V 4 -357 V 4 134 V 3 319 V 4 -171 V 4 -29 V 4 -275 V 4 364 V 4 -52 V 4 -37 V 4 -45 V 4 74 V 4 37 V 4 -89 V 3 -89 V 4 8 V 4 44 V 4 -52 V 4 -14 V 4 -23 V 4 82 V 4 89 V 4 -148 V 4 -208 V 3 133 V 4 104 V 4 0 V 4 -15 V 4 -14 V 4 -179 V 4 75 V 4 29 V 4 -52 V 4 134 V 4 -134 V 3 30 V 4 -126 V 4 59 V 4 67 V 4 -59 V 4 96 V 4 -96 V 4 111 V 4 -82 V 4 67 V stroke 3979 2490 M 3 -133 V 4 81 V 4 30 V 4 -186 V 4 149 V 4 -156 V 4 185 V 4 -185 V 4 -89 V 4 297 V 4 -52 V 3 -267 V 4 118 V 4 30 V 4 -44 V 4 -97 V 4 178 V 4 -178 V 4 119 V 4 -37 V 4 -97 V 3 201 V 4 -134 V 4 0 V 4 -30 V 4 -37 V 4 223 V 4 -186 V 4 -96 V 4 141 V 4 -252 V 4 133 V 3 -52 V 4 0 V 4 112 V 4 -127 V 4 -7 V 4 22 V 4 37 V 4 -74 V 4 -7 V 4 59 V 3 -37 V 4 -37 V 4 -134 V 4 30 V 4 52 V 4 37 V 4 -119 V 4 -37 V 4 89 V 4 0 V 4 -104 V 3 45 V 4 -22 V 4 0 V 4 126 V 4 -126 V 4 29 V 4 -66 V 4 74 V 4 22 V 4 -37 V 3 -37 V 4 7 V 4 -37 V 4 -74 V 4 0 V 4 59 V 4 -67 V 4 -185 V 4 148 V 4 45 V 4 -134 V 3 104 V 4 -104 V 4 23 V 4 59 V 4 -74 V 4 59 V 4 -30 V 4 60 V 4 -149 V 4 0 V 4 -52 V 3 119 V 4 -119 V 4 30 V 4 119 V 4 -163 V 4 74 V 4 -104 V 4 148 V 4 -37 V 4 -44 V 3 52 V 4 -8 V 4 -52 V 4 -66 V 4 59 V 4 -149 V 4 134 V 4 -74 V 4 96 V stroke 4385 1503 M 4 0 V 4 -29 V 3 -97 V 4 45 V 4 -8 V 4 -118 V 4 141 V 4 -90 V 4 -81 V 4 81 V 4 82 V 4 -15 V 3 -237 V 4 208 V 4 -8 V 4 -156 V 4 67 V 4 89 V 4 -126 V 4 59 V 4 37 V 4 -22 V 4 -52 V 3 -66 V 4 74 V 4 0 V 4 -8 V 4 -96 V 4 81 V 4 -22 V 4 -44 V 4 7 V 4 0 V 3 30 V 4 -8 V 4 -14 V 4 -8 V 4 -52 V 4 0 V 4 -74 V 4 141 V 4 -67 V 4 52 V 4 -96 V 3 126 V 4 -149 V 4 60 V 4 -8 V 4 45 V 4 7 V 4 -29 V 4 -67 V 4 74 V 4 -82 V 3 -81 V 4 74 V 4 7 V 4 -14 V 4 51 V 4 -103 V 4 52 V 4 22 V 4 -45 V 4 -7 V 4 -22 V 3 22 V 4 -30 V 4 -37 V 4 -7 V 4 29 V 4 -22 V 4 -59 V 4 7 V 4 30 V 4 -22 V 3 0 V 4 0 V 4 7 V 4 15 V 4 -74 V 4 -52 V 4 15 V 4 74 V 4 -8 V 4 -66 V 4 44 V 3 -82 V 4 23 V 4 15 V 4 -45 V 4 59 V 4 -52 V 4 89 V 4 -51 V 4 -8 V 4 -30 V 3 30 V 4 15 V 4 -22 V 4 -75 V 4 30 V 4 30 V 4 7 V 4 -29 V stroke 4791 784 M 4 22 V 4 0 V 4 15 V 3 22 V 4 -82 V 4 60 V 4 7 V 4 -7 V 4 -23 V 4 0 V 4 -74 V 4 74 V 4 -52 V 3 -37 V 4 15 V 4 -7 V 4 -22 V 4 7 V 4 0 V 4 22 V 4 -22 V 4 7 V 4 23 V 4 -23 V 3 0 V 4 -29 V 4 37 V 4 -15 V 4 -45 V 4 45 V 4 -15 V 4 -15 V 4 -89 V 4 97 V 3 -30 V 4 -15 V 4 -15 V 4 0 V 4 23 V 4 -38 V 4 30 V 4 -44 V 4 7 V 4 0 V 4 -15 V 3 45 V 4 -23 V 4 -14 V 4 -8 V 4 8 V 4 37 V 4 7 V 4 -15 V 4 15 V 4 -22 V 3 15 V 4 15 V 4 -23 V 4 -7 V 4 37 V 4 -22 V 4 0 V 4 0 V 4 -37 V 4 22 V 4 -15 V 3 7 V 4 -51 V 4 22 V 4 -37 V 4 29 V 4 -14 V 4 -15 V 4 -15 V 4 44 V 4 -66 V 4 37 V 3 15 V 4 -8 V 4 0 V 4 -15 V 4 15 V 4 37 V 4 8 V 4 -45 V 4 15 V 4 -15 V 3 22 V 4 15 V 4 -44 V 4 -8 V 4 -15 V 4 8 V 4 7 V 4 -22 V 4 0 V 4 15 V 4 15 V 3 -8 V 4 0 V 4 15 V 4 22 V 4 -44 V 4 37 V stroke 5197 561 M 4 -7 V 4 7 V 4 -22 V 4 15 V 3 0 V 4 -60 V 4 8 V 4 29 V 4 8 V 4 7 V 4 -30 V 4 8 V 4 0 V 4 15 V 4 7 V 3 -7 V 4 15 V 4 7 V 4 -30 V 4 8 V 4 15 V 4 -30 V 4 0 V 4 -30 V 4 8 V 3 22 V 4 -15 V 4 0 V 4 45 V 4 -38 V 4 8 V 4 -30 V 4 30 V 4 -15 V 4 7 V 4 8 V 3 0 V 4 0 V 4 -8 V 4 30 V 4 -52 V 4 37 V 4 -15 V 4 0 V 4 30 V 4 -7 V 3 0 V 4 -30 V 4 7 V 4 15 V 4 -15 V 4 15 V 4 -15 V 4 0 V 4 0 V 4 -22 V 4 15 V 3 -7 V 4 0 V 4 -15 V 4 22 V 4 -7 V 4 -8 V 4 45 V 4 -23 V 4 -29 V 4 29 V 3 -22 V 4 22 V 4 8 V 4 0 V 4 -15 V 4 0 V 4 -22 V 4 -30 V 4 22 V 4 -7 V 4 -15 V 3 0 V 4 8 V 4 14 V 4 -14 V 4 14 V 4 15 V 4 -15 V 4 0 V 4 37 V 4 8 V 3 -15 V 4 7 V 4 -7 V 4 -30 V 4 15 V 4 -7 V 4 -15 V 4 7 V 4 -14 V 4 0 V 4 -8 V 3 0 V 4 0 V 4 -7 V 4 0 V 4 0 V stroke 5603 450 M 4 15 V 4 0 V 4 22 V 4 -15 V 4 -22 V 3 7 V 4 22 V 4 0 V 4 8 V 4 -15 V 4 7 V 4 -14 V 4 -23 V 4 23 V 4 -8 V 4 0 V 3 0 V 4 -15 V 4 8 V 4 7 V 4 -15 V 4 23 V 4 -23 V 4 0 V 4 23 V 4 -23 V 3 15 V 4 -15 V 4 8 V 4 0 V 4 15 V 4 -15 V 4 22 V 4 0 V 4 -7 V 4 14 V 4 -22 V 3 22 V 4 -22 V 4 -7 V 4 0 V 4 -8 V 4 0 V 4 8 V 4 -8 V 4 8 V 4 -23 V 3 15 V 4 8 V 4 7 V 4 -15 V 4 30 V 4 -7 V 4 0 V 4 -15 V 4 -8 V 4 8 V 4 -8 V 3 -7 V 4 7 V 4 0 V 4 0 V 4 0 V 4 -7 V 4 15 V 4 7 V 4 22 V 4 -7 V 4 -22 V 3 22 V 4 -15 V 4 15 V 4 -15 V 4 -7 V 4 7 V 4 0 V 4 0 V 4 8 V 4 0 V 3 -8 V 4 -15 V 4 8 V 4 22 V 4 -30 V 4 23 V 4 -15 V 4 0 V 4 -8 V 4 0 V 4 8 V 3 -8 V 4 23 V 4 -23 V 4 8 V 4 15 V 4 -30 V 4 30 V 4 0 V 4 -8 V 4 -7 V 3 15 V 4 0 V 4 -8 V 4 15 V stroke 6009 472 M 4 -7 V 4 14 V 4 -7 V 4 -7 V 4 -23 V 4 0 V 4 0 V 3 -7 V 4 15 V 4 -8 V 4 0 V 4 -7 V 4 -8 V 4 8 V 4 7 V 4 8 V 4 0 V 3 7 V 4 0 V 4 -7 V 4 0 V 4 0 V 4 0 V 4 -8 V 4 -7 V 4 -8 V 4 0 V 4 0 V 3 0 V 4 8 V 4 -8 V 4 15 V 4 0 V 4 8 V 4 7 V 4 -15 V 4 -7 V 4 0 V 3 -8 V 4 15 V 4 -7 V 4 0 V 4 0 V 4 22 V 4 -22 V 4 0 V 4 -8 V 4 8 V 4 7 V 3 -7 V 4 -8 V 4 0 V 4 0 V 4 0 V 4 0 V 4 8 V 4 15 V 4 -8 V 4 -7 V 3 -8 V 4 0 V 4 8 V 4 -8 V 4 0 V 4 0 V 4 0 V 16 23 V 3 -15 V 4 0 V 4 7 V 4 -7 V 4 -8 V 8 15 V 4 -7 V 4 0 V 4 -8 V 3 0 V 4 0 V 4 0 V 4 0 V 4 0 V 4 0 V 4 0 V 4 0 V 4 0 V 4 0 V 4 15 V 3 -15 V 4 0 V 4 0 V 4 0 V 27 0 V 4 0 V 12 0 V 4 0 V 4 0 V 4 8 V 4 -8 V 4 0 V 4 0 V 3 0 V 4 0 V 4 0 V 4 0 V stroke 6462 427 M 4 0 V 4 0 V 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 2455 a Fq(Figur)o(e)17 b(3.13:)28 b(The)18 b(graph)h(shows)g(mutex)e(grants)h(obtained)g(per)g(second.)g(Each)h (client)e(r)o(equested)g(500)511 2560 y(mutexes)29 b(as)f(fast)h(as)f (possible,)h(amounting)e(to)i(a)f(total)h(number)e(of)i(497.000)h (mutex)f(r)o(equests)e(in)511 2665 y(appr)o(oximately)20 b(1500)g(seconds.)565 2935 y Fz(The)28 b(performance)f(tests)i(r)o (evealed)d(that)j(even)f(though)i(the)e(number)h(of)f(mutexes)440 3050 y(r)o(equested)16 b(by)i(the)f(participating)g(client)g(nodes)h (double,)f(fr)o(om)g(250)e(to)j(500,)d(the)j(amount)440 3164 y(of)26 b(time)g(needed)e(for)i(these)g(mutexes)f(to)h(be)g (granted)f(was)g(not.)i(The)e(total)h(amount)g(of)440 3279 y(time)21 b(needed)e(to)h(grant)g(250)f(mutexes)h(was)g(less)h (than)f(900)f(seconds,)i(wher)o(eas)e(the)h(total)440 3393 y(amount)h(of)g(time)g(needed)f(to)h(grant)g(500)e(mutexes)i(was)f (less)i(than)f(1500)d(seconds.)565 3508 y(So)i(in)h(conclusion,)h(the)f (performance)f(of)h(the)g(algorithm)g(seems)g(r)o(easonable)f(when)440 3622 y(the)h(obtained)f(mutexes)h(ar)o(e)f(independent.)440 3931 y Fr(3.5)119 b(Noti\002cation)30 b(T)-13 b(ests)440 4135 y Fz(The)30 b(goal)f(of)h(testing)g(the)g(noti\002cation)h (algorithm)f(is)g(to)g(evaluate)f(the)g(performance)440 4249 y(and)e(fault)g(tolerance)g(of)g(the)h(advanced)d(noti\002cation)k (algorithm)f(which)h(uses)e(a)g(wait)440 4364 y(delay)20 b(befor)o(e)g(notifying)i(to)f(r)o(educe)e(r)o(edundant)h(messages.)565 4478 y(The)29 b(success)h(criterion)g(for)g(the)g(noti\002cation)h (algorithm)f(in)h(each)e(test)h(is)g(that)f(all)440 4593 y(\002le)f(subscribers)f(r)o(eceive)f(a)h(noti\002cation)h(every)f (time)h(the)f(\002le)h(is)g(modi\002ed.)f(Further)o(-)440 4708 y(mor)o(e)c(the)h(performance)f(must)h(be)g(r)o(easonable,)e(as)i (of)f(not)i(consuming)g(unr)o(easonable)440 4822 y(amounts)f(of)g(CPU)f (time)h(and)f(being)h(able)f(to)h(accommodate)f(a)g(lar)o(ge)f(number)i (of)f(sub-)440 4937 y(scribers.)565 5051 y(All)h(tests)i(wer)o(e)e(r)o (un)h(using)h(the)f(advanced)e(algorithm)j(in)f(a)g(system)h (consisting)g(of)440 5166 y(994)c(nodes)h(and)f(the)i(r)o(eplication)e (constant)i(set)f(to)g(5.)f(The)h(system)h(was)f(left)g(for)f(5)h(min-) 440 5280 y(utes)e(befor)o(e)e(the)i(test)g(began)g(to)g(ensur)o(e)f (that)h(all)f(nodes)h(wer)o(e)f(r)o(eady)-9 b(.)565 5395 y(The)27 b(constants)i(used)f(in)g(the)g(advanced)e(algorithm)j(ar)o(e) d(kept)i(\002xed)f(for)h(all)f(tests.)1831 5662 y(64)p eop %%Page: 65 67 65 66 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 440 531 a Fz(The)k(initial)g(timeout)h(befor)o(e)e(the)h(other)g (noti\002er)h(nodes)f(assumes)g(that)g(a)g(noti\002er)g(has)440 646 y(failed)c(is)h(set)g(to)g(1)g(second,)f(while)i(the)f(bump)g (value)f(used)h(to)g(incr)o(ement)g(the)g(time)g(out)440 760 y(when)g(a)e(node)h(sends)h(a)e(start)h(noti\002cation)h(message)f (to)h(the)f(other)g(noti\002ers)h(is)f(set)g(to)h(5)440 875 y(seconds.)565 990 y(First)33 b(the)g(performance)f(for)g(lar)o(ge) g(amounts)i(of)e(subscribers)h(is)g(evaluated,)e(fol-)440 1104 y(lowed)e(by)f(a)g(test)g(of)g(how)i(the)e(noti\002ers)h(and)f (the)g(advanced)f(algorithm)i(copes)f(with)440 1219 y(fr)o(equent)e (\002le)h(modi\002cations.)g(Lastly)g(the)f(behaviour)h(of)f(the)h (algorithm)g(with)h(faulty)440 1333 y(noti\002ers)22 b(is)f(examined.)440 1594 y Fp(3.5.1)99 b(Stress)25 b(T)-11 b(est)25 b(with)h(Many)e(Subscribers)440 1767 y Fz(The)31 b(purpose)f(of)h(this)g(test)g(is)g(to)g(explor)o(e)e(the)i (performance)f(of)g(the)h(noti\002cation)h(al-)440 1881 y(gorithm)d(with)f(many)f(subscribers)h(to)f(a)g(\002le.)h(This)g(is)f (important)h(as)f(the)h(noti\002cation)440 1996 y(algorithm)23 b(must)g(not)g(be)f(a)f(major)i(bottleneck)f(for)g(a)g(node.)g (Furthermor)o(e,)g(the)g(perfor)o(-)440 2110 y(mance)i(of)h(the)f (functionalities)h(that)g(r)o(ely)f(on)h(the)f(knowing)i(of)f(\002le)f (changes)h(depends)440 2225 y(highly)d(on)f(the)g(characteristics)f(of) h(the)g(noti\002cation)h(algorithm.)440 2466 y Fv(Description)440 2639 y Fz(In)g(this)f(test)h(993)d(nodes)j(subscribe)f(to)h(a)e(\002le) i(r)o(esiding)f(on)h(a)e(speci\002ed)h(node)g(\(the)g(994th)440 2753 y(node\))32 b(whose)h(behaviour)f(is)g(observed,)g(and)f(four)h (others)h(since)f Fu(r)48 b Fd(=)c Fz(5.)32 b(When)g(all)440 2868 y(nodes)23 b(have)g(\002nished)g(subscribing)h(to)f(the)g(\002le,) g(the)g(closest)g(node)g(waits)g(a)f(while)i(and)440 2983 y(then)f(modi\002es)h(the)f(\002le,)g(invoking)h(the)f (noti\002cation)i(pr)o(ocedur)o(e.)20 b(Since)j(the)g(observed)440 3097 y(node)k(is)g(the)f(closest)h(node,)g(the)f(advanced)f(algorithm)j (chooses)f(this)g(node)g(to)g(be)f(the)440 3212 y(\002rst)21 b(to)g(begin)g(the)g(noti\002cation)h(pr)o(ocedur)o(e.)565 3326 y(During)d(noti\002cation,)h(the)f(CPU)f(load)g(and)h(number)f(of) h(messages)g(sent)g(per)f(second)440 3441 y(ar)o(e)31 b(observed,)h(in)h(conjunction)i(with)f(the)f(outcome)g(of)g(the)g(pr)o (ocess,)f(namely)h(if)f(all)440 3555 y(nodes)21 b(have)f(r)o(eceived)f (a)i(noti\002cation.)440 3797 y Fv(Results)440 3970 y Fz(The)27 b(test)g(was)g(r)o(un)h(a)f(number)g(of)g(times)h(with)g (very)f(similar)g(r)o(esults.)g(All)g(subscribed)440 4084 y(nodes)d(r)o(eceived)e(a)h(noti\002cation)i(message.)f(During)g (the)g(noti\002cation)h(pr)o(ocess)f(the)f(ob-)440 4199 y(served)k(node)h(was)g(able)f(to)i(send)f(the)g(993)e(noti\002cation)k (messages)e(in)g(an)g(average)e(of)440 4313 y(1500)19 b(ms)j(\(disr)o(egar)o(ding)d(the)i(acknowledgements)h(fr)o(om)f(the)g (subscribers\),)f(while)i(the)440 4428 y(CPU)e(load)h(during)g(the)g (pr)o(ocess)f(was)h(negligible,)g(below)g(5\045.)565 4542 y(The)k(low)i(CPU)e(load)h(hints)h(that)f(the)g(performance)f(is)h (bounded)g(by)g(the)g(network)440 4657 y(communication.)g(This)f(pr)o (obably)f(stems)i(fr)o(om)e(the)h(over)o(head)e(of)i(cr)o(eating)f(TCP) g(con-)440 4772 y(nections,)19 b(since)f(the)g(amount)h(of)f(time)g (that)g(the)h(closest)f(node)g(waits)h(befor)o(e)d(modifying)440 4886 y(the)21 b(\002le)g(is)g(long)h(enough)f(to)h(have)e(closed)h(the) f(connections)j(in)e(the)g(TCP)g(pool.)565 5001 y(Since)30 b(the)h(entir)o(e)g(pr)o(ocedur)o(e)e(takes)h(some)i(time,)f(the)g (last)g(node)g(that)g(r)o(eceives)f(a)440 5115 y(noti\002cation)25 b(may)e(r)o(eceive)e(it)j(a)e(few)h(seconds)h(later)e(than)h(the)h (\002rst)f(node.)g(For)h(fairness)440 5230 y(r)o(easons,)19 b(it)g(might)h(be)f(a)g(good)h(idea)e(to)i(transmit)f(the)h (noti\002cations)h(in)e(a)g(random)g(or)o(der)440 5344 y(so)i(that)g(no)g(node)g(gets)g(placed)f(last)h(every)f(time.)1831 5662 y(65)p eop %%Page: 66 68 66 67 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 565 531 a Fz(In)k(a)g(setup)g(like)g(Nor)o(duGrid)g(with)h(ar)o(e)d (few)i(and)g(fast)f(hosts,)i(the)f(noti\002cation)i(al-)440 646 y(gorithm)e(seems)g(to)f(be)g(able)f(to)i(handle)f(the)g(job)g (quite)h(well.)f(Compar)o(ed)f(to)i(a)e(polling)440 760 y(appr)o(oach,)19 b(the)i(noti\002cations)h(save)e(considerable)h (bandwidth.)440 1021 y Fp(3.5.2)99 b(Stress)25 b(T)-11 b(est)25 b(with)h(Frequent)e(File)h(Modi\002cations)440 1194 y Fz(The)c(aim)f(of)h(this)g(test)g(is)g(to)g(observe)g(how)g(the) g(system)g(r)o(eacts)f(when)h(a)f(\002le)h(is)g(modi\002ed)440 1308 y(fr)o(equently)-9 b(.)31 b(This)h(should)g(give)f(a)g(feel)g(of)g (how)h(well)g(the)g(algorithm)g(performs)f(in)h(a)440 1423 y(busy)21 b(envir)o(onment)g(with)h(many)f(active)f(participants.) 440 1664 y Fv(Description)440 1837 y Fz(T)-8 b(o)29 b(ensur)o(e)f(that) g(the)g(performance)g(measur)o(ements)f(ar)o(e)g(as)h(pr)o(ecise)f(as)h (possible,)h(the)440 1951 y(test)j(incorporates)g(thr)o(ee)f(dif)o(fer) o(ent)e(participants,)i(a)g(noti\002er)i(node)f(which)g(is)h(moni-)440 2066 y(tor)o(ed)28 b(in)h(r)o(egar)o(ds)e(to)i(CPU)f(load)h(and)f (messages)h(sent,)f(a)h(\002le)g(modi\002er)g(node)f(which)440 2181 y(takes)h(car)o(e)f(of)i(all)f(write)h(operations,)f(and)g(the)h (subscriber)f(nodes.)h(This)g(division)g(of)440 2295 y(labour)23 b(is)h(intended)f(to)h(ensur)o(e)f(that)g(the)h(measur)o (ements)f(done)g(on)h(the)g(noti\002er)g(node)440 2410 y(corr)o(esponds)c(to)i(a)e(r)o(eal)f(scenario.)565 2524 y(The)i(system)h(is)f(left)g(to)h(stabilise)f(befor)o(e)f(the)i(\002le) f(modi\002er)g(begins)h(to)g(do)f(write)g(op-)440 2639 y(erations)e(with)h(a)f(constant)h(rate)e(of)h(one)h(operation)f(every) g(1000)e(ms.)i(The)h(test)f(was)g(later)440 2753 y(r)o(epeated)k(with)j (write)g(operations)g(done)f(every)g(500)f(and)h(100)f(ms.)i(Since)f (write)g(oper)o(-)440 2868 y(ations)h(start)g(by)g(doing)h(a)e(lookup)i (in)f(the)g(overlay)g(network,)g(the)g(r)o(ound-trip)f(time)h(of)440 2983 y(the)j(lookups)g(r)o(esult)g(in)g(a)f(practical)f(pr)o(oblem)h (when)h(using)h(a)e(single)h(node)g(to)g(simu-)440 3097 y(late)21 b(fr)o(equent)g(\002le)h(modi\002cations.)h(The)e(node)h (doing)h(write)e(operations)h(is)g(not)h(able)e(to)440 3212 y(send)h(the)g(modi\002cations)h(fast)f(enough.)h(T)-8 b(o)22 b(r)o(emedy)f(this)i(pr)o(oblem)f(the)g(test)g(omits)h(the)440 3326 y(lookups.)565 3441 y(Because)c(of)h(the)h(TCP)f(connection)i (pool,)f(one)f(would)h(expect)f(the)g(\002rst)h(noti\002cation)440 3555 y(r)o(ound)h(to)g(take)f(mor)o(e)h(time)g(than)h(the)f(following)h (r)o(ounds)f(because)f(each)g(TCP)h(connec-)440 3670 y(tion)33 b(has)e(to)i(be)e(cr)o(eated)f(in)i(the)g(\002rst)g(r)o (ound,)f(wher)o(eas)g(they)h(can)g(be)f(r)o(eused)g(in)h(the)440 3785 y(following)22 b(r)o(ounds.)565 3899 y(The)e(observations)i(to)f (be)f(done)h(in)g(this)h(test)f(ar)o(e)e(as)h(in)i(the)f(pr)o(evious)f (test.)440 4140 y Fv(Results)440 4313 y Fz(The)25 b(r)o(esults)f(of)h (the)g(test)f(is)h(shown)i(in)e(T)-8 b(able)24 b(3.1)f(which)j(shows)g (the)f(\002rst)g(\002ve)f(r)o(ounds)440 4428 y(of)d(noti\002cations.) 565 4542 y(All)26 b(test)g(r)o(uns)i(had)e(a)g(overlapping)g(start)g (phase)g(wher)o(e)g(two)h(r)o(ounds)g(of)f(noti\002ca-)440 4657 y(tions)18 b(wer)o(e)f(being)g(pr)o(ocessed)f(at)h(the)h(same)f (time.)g(W)-8 b(e)17 b(attribute)g(this)h(to)g(the)f(connection)440 4772 y(establishment)30 b(over)o(head.)f(Once)h(the)f(notifying)j(node) d(has)h(established)g(all)f(needed)440 4886 y(connections,)21 b(the)g(r)o(emaining)f(messages)g(can)g(be)g(sent)g(very)g(quickly)-9 b(.)21 b(For)f(the)h(1000)d(ms)440 5001 y(test)k(the)g(r)o(ounds)g (with)g(open)h(connections)g(wer)o(e)e(executed)g(in)h(100-130)d(ms)j (each,)f(well)440 5115 y(below)g(the)g(1000)e(ms)i(between)g(the)g(r)o (ounds.)565 5230 y(In)k(the)h(test)f(with)h(a)f(write)g(interval)g(of)h (500)e(ms)i(the)f(r)o(esults)g(ar)o(e)f(very)h(similar)-6 b(.)25 b(The)440 5344 y(only)i(dif)o(fer)o(ence)c(is)k(that)f(the)g (initial)g(phase)g(had)g(thr)o(ee)f(overlapping)h(r)o(ounds)g(instead) 1831 5662 y(66)p eop %%Page: 67 69 67 68 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 902 522 a Fq(1000)e(ms)p 491 560 941 7 v 699 648 a Fw(start)143 b(end)120 b(time)p 491 698 941 5 v 541 794 a(1)100 b(1.651)h(3.495)f(1.844)541 900 y(2)g(2.655)h(3.496)156 b(841)541 1005 y(3)100 b(3.659)h(3.783)156 b(124)541 1110 y(4)100 b(4.664)h(4.785)156 b(121)541 1215 y(5)100 b(5.667)h(5.788)156 b(121)p 491 1267 941 7 v 1822 522 a Fq(500)20 b(ms)p 1492 560 878 7 v 1600 648 a Fw(start)181 b(end)120 b(time)p 1492 698 878 5 v 1542 794 a(20.193)101 b(22.007)g(1.814)1542 900 y(20.699)g(22.006)g(1.307)1542 1005 y(21.201)g(22.006)157 b(805)1542 1110 y(22.039)101 b(22.172)157 b(133)1542 1215 y(22.205)101 b(22.312)157 b(107)p 1492 1267 878 7 v 2724 522 a Fq(100)20 b(ms)p 2431 560 804 7 v 2502 648 a Fw(start)143 b(end)120 b(time)p 2431 698 804 5 v 2481 794 a(4.746)101 b(6.577)g(1.831)2481 900 y(4.854)g(6.578)g(1.724)2481 1005 y(4.964)g(6.577)g(1.613)2481 1110 y(5.183)g(6.578)g(1.395)2481 1215 y(5.401)g(6.578)g(1.177)p 2431 1267 804 7 v 511 1412 a Fq(T)-8 b(able)22 b(3.1:)28 b(The)23 b(r)o(esults)f(of)h(the)g(tests)g(with)g(1000)h(ms,)f(500)h (ms)g(and)f(100)h(ms)f(write)g(intervals)f(with)511 1517 y(the)d(start)g(and)f(end)h(times)g(of)f(the)h(r)o(ounds)f(and)h(the)g (total)g(time)f(spent)h(sending)f(the)h(noti\002cations.)440 1787 y Fz(of)i(two.)565 1902 y(For)f(the)g(test)g(with)h(a)f(write)g (interval)g(of)g(100)f(ms,)h(the)g(notifying)i(node)e(was)g(not)h(able) 440 2016 y(to)i(keep)f(up)h(with)g(the)f(incoming)j(block)e(changes.)f (The)g(\002rst)h(few)f(noti\002cation)i(r)o(ounds)440 2131 y(wer)o(e)d(taken)g(car)o(e)f(of,)h(while)h(the)g(r)o(est)f(dr)o (owned)g(in)h(the)g(gr)o(owing)g(number)f(of)h(pending)440 2245 y(noti\002cations.)32 b(The)f(noti\002cation)h(r)o(ounds)e(which)i (did)e(\002nish)i(took)f(between)g(130)e(ms)440 2360 y(and)20 b(3800)f(ms.)565 2474 y(During)26 b(the)g(initial)g(phases)f (in)h(the)g(thr)o(ee)f(tests,)g(the)h(overlapping)f(of)h (noti\002cation)440 2589 y(r)o(ounds)f(generate)f(a)g(number)i(of)e (obsolete)i(messages)f(since)g(the)g(noti\002er)h(node)f(sends)440 2704 y(a)20 b(noti\002cation)i(for)e(all)g(changes.)h(For)f(the)h(1000) e(ms)h(test,)h(it)f(was)h(between)f(60-120)e(obso-)440 2818 y(lete)k(messages)g(out)g(of)g(the)g(total)g(of)f(993)g(messages)h (for)f(the)h(\002rst)g(r)o(ound.)g(The)g(gr)o(owing)440 2933 y(number)i(of)f(obsolete)h(noti\002cations)h(is)f(also)g(what)g (overwhelms)g(the)g(noti\002er)g(node)g(in)440 3047 y(the)d(test)g (with)g(100)f(ms.)565 3162 y(Clearly)-9 b(,)34 b(the)i(implementation)h (should)g(be)e(modi\002ed)h(to)g(avoid)g(sending)g(these)440 3276 y(messages.)d(If)g(the)h(modi\002cation)g(ensur)o(es)f(that)h (each)e(noti\002cation)j(r)o(ound)e(does)h(not)440 3391 y(notify)21 b(the)f(same)g(nodes)h(\002rst)g(each)e(time)i(but)f (instead)g(noti\002es)h(the)g(nodes)f(in)h(a)f(r)o(ound-)440 3506 y(r)o(obin)j(fashion,)g(then)g(even)f(the)h(test)g(with)g(100)f (ms)h(write)f(intervals)h(should)g(be)g(able)f(to)440 3620 y(keep)e(up.)h(Otherwise)g(the)g(algorithm)h(seems)f(to)g(be)f (delivering)h(good)g(performance.)440 3880 y Fp(3.5.3)99 b(Fault)25 b(T)-11 b(olerance)25 b(of)g(Noti\002ers)440 4053 y Fz(In)i(this)g(test)f(the)h(corr)o(ectness)f(of)g(the)h (algorithm)g(is)g(evaluated)e(with)i(r)o(espect)e(to)i(node)440 4168 y(failur)o(es)i(among)h(the)g Fu(r)i Fz(closest)f(noti\002er)f (nodes.)g(It)g(is)g(essential)g(that)g(all)f(subscribers)440 4282 y(r)o(eceive)19 b(a)i(noti\002cation)h(even)e(in)h(an)g(err)o(or)o (-pr)o(one)d(grid)j(envir)o(onment.)440 4524 y Fv(Description)440 4697 y Fz(The)28 b(system)g(is)g(set)g(up)f(with)i(one)f(node)g(as)f(a) g(\002le)h(modi\002er)g(and)f(the)h(r)o(emaining)g(993)440 4811 y(nodes)21 b(as)g(subscribers.)g(The)g(\002le)g(modi\002er)h (writes)f(the)g(\002le)h(when)f(the)h(system)f(has)h(set-)440 4926 y(tled.)g(In)g(the)h(\002rst)f(test)h(r)o(un)f(the)h(closest)g (node)f(is)h(killed)f(halfway)g(thr)o(ough)g(its)h(noti\002ca-)440 5040 y(tion)j(pr)o(ocedur)o(e)c(such)j(that)g(the)g(second-closest)g (node)g(becomes)g(r)o(esponsible)g(for)f(the)440 5155 y(noti\002cation)f(r)o(ound.)e(In)g(the)h(second)g(test)f(r)o(un,)h (the)f(four)h(closest)g(of)f(the)h(\002ve)f(nodes)h(ar)o(e)440 5269 y(killed)f(halfway)e(thr)o(ough)i(their)g(noti\002cation)g(r)o (ounds,)g(making)g(the)f(last)g(node)h(r)o(espon-)440 5384 y(sible.)1831 5662 y(67)p eop %%Page: 68 70 68 69 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 565 531 a Fz(During)34 b(these)g(err)o(oneous)f(scenarios,)h(the)g (behaviour)f(of)h(the)g(algorithm)g(is)g(ob-)440 646 y(served)20 b(together)h(with)g(the)g(latency)g(of)g(the)g (noti\002cation)h(pr)o(ocess.)440 887 y Fv(Results)440 1060 y Fz(Both)17 b(test)h(r)o(uns)f(wer)o(e)f(r)o(un)i(twice.)f(In)g (all)g(cases,)f(all)h(subscribers)g(r)o(eceived)e(a)i(noti\002cation) 440 1175 y(which)23 b(indicates)g(that)f(the)h(algorithm)g(behaves)f (much)h(as)g(expected)e(in)i(an)f(err)o(oneous)440 1289 y(envir)o(onment.)i(The)f(maximum)h(latency)f(between)g(the)g(\002le)h (being)g(written)f(by)h(the)f(\002le)440 1404 y(modi\002er)c(and)f(the) g(node)h(that)f(r)o(eceived)e(a)i(noti\002cation)i(as)e(the)g(last)h (was)f(7114)e(and)i(7125)440 1518 y(ms)i(r)o(espectively)e(when)i(one)f (node)h(was)f(killed,)g(and)g(21916)d(and)j(21699)e(ms)j(when)f(four) 440 1633 y(nodes)29 b(wer)o(e)e(killed.)i(The)f(distribution)i(of)e (the)h(latencies)f(ar)o(e)f(shown)j(in)f(Figur)o(e)f(3.14)440 1747 y(and)20 b(3.15.)563 3668 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3118 @rwi @setspecial %%BeginDocument: test/images/notification-failure-1.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: 1_1/output.eps %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Tue Dec 21 20:21:29 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 714 420 M 63 0 V 6185 0 R -63 0 V 630 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 714 865 M 63 0 V 6185 0 R -63 0 V 630 865 M gsave 0 setgray ( 10) Rshow grestore 1.000 UL LTb 714 1310 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 20) Rshow grestore 1.000 UL LTb 714 1756 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 30) Rshow grestore 1.000 UL LTb 714 2201 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 40) Rshow grestore 1.000 UL LTb 714 2646 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 50) Rshow grestore 1.000 UL LTb 714 3091 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 60) Rshow grestore 1.000 UL LTb 714 3536 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 70) Rshow grestore 1.000 UL LTb 714 3982 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 80) Rshow grestore 1.000 UL LTb 714 4427 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 90) Rshow grestore 1.000 UL LTb 714 4872 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 100) Rshow grestore 1.000 UL LTb 714 420 M 0 63 V 0 4389 R 0 -63 V 714 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 2797 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2500) Cshow grestore 1.000 UL LTb 4879 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 5000) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 7500) Cshow grestore 1.000 UL LTb 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Number of nodes) Cshow grestore grestore LTb 3838 70 M gsave 0 setgray (Latency \(ms\)) Cshow grestore 1.000 UP 1.000 UL LT0 714 910 M 0 1914 V 83 0 V 0 178 V 84 0 V 0 -178 V 83 0 V 0 -133 V 83 0 V 0 -134 V 84 0 V 0 490 V 83 0 V 0 -579 V 83 0 V 0 312 V 83 0 V 0 -223 V 84 0 V 0 -1603 V 83 0 V 0 -534 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 0 1558 V 83 0 V 0 935 V 83 0 V 0 45 V 84 0 V 0 44 V 83 0 V 0 -534 V 83 0 V 84 0 V 0 490 V 83 0 V 0 -223 V 83 0 V 0 -134 V 83 0 V 0 -400 V 84 0 V 0 -1692 V 83 0 V 0 -89 V 83 0 V 1.000 UL LT1 714 1043 M 0 3295 V 83 0 V 0 489 V 84 0 V 0 -623 V 83 0 V 0 89 V 83 0 V 0 -1558 V 84 0 V 0 -356 V 83 0 V 0 -846 V 83 0 V 0 -1113 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 83 0 V 84 0 V 83 0 V 83 0 V 84 0 V 0 1113 V 83 0 V 0 1380 V 83 0 V 0 89 V 84 0 V 0 -133 V 83 0 V 0 -178 V 83 0 V 0 -90 V 84 0 V 0 179 V 83 0 V 0 -179 V 83 0 V 0 134 V 83 0 V 0 -312 V 84 0 V 0 -1780 V 83 0 V 0 -223 V 83 0 V 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 533 3847 a Fq(Figur)o(e)e(3.14:)28 b(The)19 b(distribution)e(of)h(the)h(latencies)g(in)f(the)h(test)f(wher)o(e)h (the)g(\002rst)g(noti\002er)g(was)g(killed.)565 4080 y Fz(The)25 b(delay)g(fr)o(om)g(noti\002er)h(to)g(subscriber)f(lar)o (gely)g(depends)g(on)h(the)g(choice)g(of)f(the)440 4195 y(constants)i(in)g(the)g(algorithm.)g(Since)f(we)g(chose)h(the)g (initial)g(timeout)g(to)g(be)f(1)g(and)g(the)440 4310 y(bump)c(value)f(to)h(5)g(seconds,)g(each)f(time)h(a)g(nodes)g(starts)f (notifying)i(and)f(fails,)f(the)h(pr)o(o-)440 4424 y(cedur)o(e)d(takes) i(as)f(a)g(minimum)j(an)d(additional)h(5)f(seconds.)565 4539 y(When)d(a)f(node)g(begins)i(a)e(noti\002cation)i(r)o(ound,)e(a)g (bump)h(of)f(the)h(timeout)g(is)g(trigger)o(ed)440 4653 y(on)24 b(all)f(the)g(r)o(emaining)g(noti\002ers,)h(which)f(ends)h(up)f (as)f(stagnation)i(in)g(the)f(r)o(eception)f(of)440 4768 y(noti\002cations)d(if)e(that)g(noti\002er)g(fails.)g(For)g(the)h(test) f(with)h(one)f(noti\002er)h(killed,)f(Figur)o(e)g(3.14)440 4882 y(clearly)26 b(illustrates)h(this)g(stagnation)h(as)e(a)g(5)h (second)g(interval)f(fr)o(om)g(1000)f(ms)i(to)g(6000)440 4997 y(ms)21 b(with)h(no)f(nodes)g(r)o(eceiving)f(noti\002cations.)565 5112 y(Figur)o(e)g(3.15)e(shows)k(a)e(similar)g(behaviour)h(for)f(the)g (test)h(with)g(four)f(killed)h(noti\002ers.)440 5226 y(The)j(stagnation)g(is)g(longer)g(due)g(to)g(the)g(additional)f(nodes) h(failing)g(half-way)f(thr)o(ough)440 5341 y(the)e(pr)o(ocedur)o(e)e (and)h(thus)h(incr)o(ementing)h(the)f(timeouts.)1831 5662 y(68)p eop %%Page: 69 71 69 70 bop 849 211 a Ft(Chapter)20 b(3.)46 b(Empirical)20 b(Evaluation)g(of)h(Information)h(Service)p 440 244 2865 4 v 563 2267 a @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury 3118 @rwi @setspecial %%BeginDocument: test/images/notification-failure-4.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: 4_1/output.eps %%Creator: gnuplot 4.0 patchlevel 0 %%CreationDate: Tue Dec 21 20:22:02 2004 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%Orientation: Portrait %%EndComments /gnudict 256 dict def gnudict begin /Color false def /Solid false def /gnulinewidth 5.000 def /userlinewidth gnulinewidth def /vshift -46 def /dl {10.0 mul} def /hpt_ 31.5 def /vpt_ 31.5 def /hpt hpt_ def /vpt vpt_ def /Rounded false def /M {moveto} bind def /L {lineto} bind def /R {rmoveto} bind def /V {rlineto} bind def /N {newpath moveto} bind def /C {setrgbcolor} bind def /f {rlineto fill} bind def /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow { currentpoint stroke M 0 vshift R show } def /Rshow { currentpoint stroke M dup stringwidth pop neg vshift R show } def /Cshow { currentpoint stroke M dup stringwidth pop -2 div vshift R show } def /UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse } def /BL { stroke userlinewidth 2 mul setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /AL { stroke userlinewidth 2 div setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /UL { dup gnulinewidth mul /userlinewidth exch def dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth Rounded { 1 setlinejoin 1 setlinecap } if } def /LTw { PL [] 1 setgray } def /LTb { BL [] 0 0 0 DL } def /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def /LT2 { PL [2 dl 3 dl] 0 0 1 DL } def /LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def /LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def /LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def /LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def /LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def /LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def /Pnt { stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore } def /Dia { stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke Pnt } def /Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V currentpoint stroke M hpt neg vpt neg R hpt2 0 V stroke } def /Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke Pnt } def /Crs { stroke [] 0 setdash exch hpt sub exch vpt add M hpt2 vpt2 neg V currentpoint stroke M hpt2 neg 0 R hpt2 vpt2 V stroke } def /TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke Pnt } def /Star { 2 copy Pls Crs } def /BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath fill } def /TriUF { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath fill } def /TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke Pnt } def /TriDF { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath fill} def /DiaF { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath fill } def /Pent { stroke [] 0 setdash 2 copy gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore Pnt } def /PentF { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath fill grestore } def /Circle { stroke [] 0 setdash 2 copy hpt 0 360 arc stroke Pnt } def /CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def /C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def /C1 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill vpt 0 360 arc closepath } bind def /C2 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C3 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill vpt 0 360 arc closepath } bind def /C4 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc closepath } bind def /C5 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc 2 copy moveto 2 copy vpt 180 270 arc closepath fill vpt 0 360 arc } bind def /C6 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 270 arc closepath fill vpt 0 360 arc closepath } bind def /C7 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 270 arc closepath fill vpt 0 360 arc closepath } bind def /C8 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C9 { BL [] 0 setdash 2 copy moveto 2 copy vpt 270 450 arc closepath fill vpt 0 360 arc closepath } bind def /C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill 2 copy moveto 2 copy vpt 90 180 arc closepath fill vpt 0 360 arc closepath } bind def /C11 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 180 arc closepath fill 2 copy moveto 2 copy vpt 270 360 arc closepath fill vpt 0 360 arc closepath } bind def /C12 { BL [] 0 setdash 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C13 { BL [] 0 setdash 2 copy moveto 2 copy vpt 0 90 arc closepath fill 2 copy moveto 2 copy vpt 180 360 arc closepath fill vpt 0 360 arc closepath } bind def /C14 { BL [] 0 setdash 2 copy moveto 2 copy vpt 90 360 arc closepath fill vpt 0 360 arc } bind def /C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill vpt 0 360 arc closepath } bind def /Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath } bind def /Square { dup Rec } bind def /Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def /S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def /S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def /S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def /S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def /S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill 2 copy vpt Square fill Bsquare } bind def /S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def /S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def /S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def /S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def /S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy vpt Square fill Bsquare } bind def /S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def /S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def /D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def /D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def /D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def /D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def /D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def /D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def /D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def /D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def /D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def /D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def /D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def /D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def /D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def /D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def /D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def /D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def /DiaE { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V closepath stroke } def /BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V closepath stroke } def /TriUE { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V closepath stroke } def /TriDE { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V closepath stroke } def /PentE { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat closepath stroke grestore } def /CircE { stroke [] 0 setdash hpt 0 360 arc stroke } def /Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def /DiaW { stroke [] 0 setdash vpt add M hpt neg vpt neg V hpt vpt neg V hpt vpt V hpt neg vpt V Opaque stroke } def /BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M 0 vpt2 neg V hpt2 0 V 0 vpt2 V hpt2 neg 0 V Opaque stroke } def /TriUW { stroke [] 0 setdash vpt 1.12 mul add M hpt neg vpt -1.62 mul V hpt 2 mul 0 V hpt neg vpt 1.62 mul V Opaque stroke } def /TriDW { stroke [] 0 setdash vpt 1.12 mul sub M hpt neg vpt 1.62 mul V hpt 2 mul 0 V hpt neg vpt -1.62 mul V Opaque stroke } def /PentW { stroke [] 0 setdash gsave translate 0 hpt M 4 {72 rotate 0 hpt L} repeat Opaque stroke grestore } def /CircW { stroke [] 0 setdash hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def /BoxColFill { gsave Rec /Fillden exch def currentrgbcolor /ColB exch def /ColG exch def /ColR exch def /ColR ColR Fillden mul Fillden sub 1 add def /ColG ColG Fillden mul Fillden sub 1 add def /ColB ColB Fillden mul Fillden sub 1 add def ColR ColG ColB setrgbcolor fill grestore } def % % PostScript Level 1 Pattern Fill routine % Usage: x y w h s a XX PatternFill % x,y = lower left corner of box to be filled % w,h = width and height of box % a = angle in degrees between lines and x-axis % XX = 0/1 for no/yes cross-hatch % /PatternFill { gsave /PFa [ 9 2 roll ] def PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec gsave 1 setgray fill grestore clip currentlinewidth 0.5 mul setlinewidth /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def 0 0 M PFa 5 get rotate PFs -2 div dup translate 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 M 0 PFs V } for 0 PFa 6 get ne { 0 1 PFs PFa 4 get div 1 add floor cvi { PFa 4 get mul 0 2 1 roll M PFs 0 V } for } if stroke grestore } def % /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop end %%EndProlog gnudict begin gsave 50 50 translate 0.050 0.050 scale 0 setgray newpath (Helvetica) findfont 140 scalefont setfont 1.000 UL LTb 714 420 M 63 0 V 6185 0 R -63 0 V 630 420 M gsave 0 setgray ( 0) Rshow grestore 1.000 UL LTb 714 1162 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 20) Rshow grestore 1.000 UL LTb 714 1904 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 40) Rshow grestore 1.000 UL LTb 714 2646 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 60) Rshow grestore 1.000 UL LTb 714 3388 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 80) Rshow grestore 1.000 UL LTb 714 4130 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 100) Rshow grestore 1.000 UL LTb 714 4872 M 63 0 V 6185 0 R -63 0 V -6269 0 R gsave 0 setgray ( 120) Rshow grestore 1.000 UL LTb 714 420 M 0 63 V 0 4389 R 0 -63 V 714 280 M gsave 0 setgray ( 0) Cshow grestore 1.000 UL LTb 1408 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 2500) Cshow grestore 1.000 UL LTb 2102 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 5000) Cshow grestore 1.000 UL LTb 2797 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 7500) Cshow grestore 1.000 UL LTb 3491 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 10000) Cshow grestore 1.000 UL LTb 4185 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 12500) Cshow grestore 1.000 UL LTb 4879 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 15000) Cshow grestore 1.000 UL LTb 5574 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 17500) Cshow grestore 1.000 UL LTb 6268 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 20000) Cshow grestore 1.000 UL LTb 6962 420 M 0 63 V 0 4389 R 0 -63 V 0 -4529 R gsave 0 setgray ( 22500) Cshow grestore 1.000 UL LTb 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L LTb 140 2646 M gsave 0 setgray currentpoint gsave translate 90 rotate 0 0 M (Number of nodes) Cshow grestore grestore LTb 3838 70 M gsave 0 setgray (Latency \(ms\)) Cshow grestore 1.000 UP 1.000 UL LT0 714 1014 M 0 2893 V 28 0 V 0 186 V 28 0 V 0 -1224 V 27 0 V 0 -260 V 28 0 V 0 -705 V 28 0 V 0 408 V 28 0 V 0 -371 V 27 0 V 0 -482 V 28 0 V 936 420 L 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V stroke 3352 420 M 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V stroke 6240 420 M 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 0 890 V 28 0 V 0 1225 V 27 0 V 0 148 V 28 0 V 0 223 V 28 0 V 0 -297 V 28 0 V 0 185 V 28 0 V 0 446 V 27 0 V 0 -854 V 28 0 V 0 -593 V 28 0 V 0 -1373 V 28 0 V 1.000 UL LT1 714 939 M 0 3080 V 28 0 V 0 371 V 28 0 V 0 -334 V 27 0 V 0 -186 V 28 0 V 0 -593 V 28 0 V 853 717 L 28 0 V 0 -297 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V stroke 3408 420 M 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 28 0 V stroke 6296 420 M 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 28 0 V 28 0 V 27 0 V 28 0 V 0 334 V 28 0 V 0 2486 V 28 0 V 0 296 V 28 0 V 0 -37 V 27 0 V 0 149 V 28 0 V 0 -965 V 28 0 V 0 -185 V 28 0 V 0 -594 V 27 0 V 0 -1410 V 28 0 V 0 -74 V 28 0 V 1.000 UL LTb 714 420 M 6248 0 V 0 4452 V -6248 0 V 714 420 L 1.000 UP stroke grestore end showpage %%Trailer %%DocumentFonts: Helvetica %%EndDocument @endspecial 511 2447 a Fq(Figur)o(e)i(3.15:)k(The)d(distribution)f(of) h(the)g(latency)g(in)g(the)g(test)g(wher)o(e)g(the)g(four)g(\002rst)h (noti\002ers)f(wer)o(e)511 2552 y(killed.)565 2802 y Fz(The)f(algorithm)h(seems)g(to)g(cope)f(well)h(with)g(failur)o(es)e (among)j(noti\002er)f(nodes.)f(The)440 2916 y(test)16 b(also)g(indicates)g(that)g(the)g(constants)h(should)g(per)o(haps)e(be) g(optimised)i(to)f(the)g(speci\002c)440 3031 y(setting,)21 b(due)g(to)g(their)g(lar)o(ge)e(in\003uence)j(on)f(the)g(performance.) 1831 5662 y(69)p eop %%Page: 70 72 70 71 bop 440 1185 a Fs(Chapter)44 b(4)440 1638 y FC(Conclusion)440 2142 y Fr(4.1)119 b(Summary)30 b(of)g(Project)g(Results)440 2346 y Fz(In)d(Chapter)e(1)h(the)h(basic)f(natur)o(e)f(of)i (computational)g(grids)f(was)g(studied)h(along)f(with)440 2460 y(the)34 b(challenges)g(inher)o(ently)g(pr)o(esent)g(when)g (implementing)i(grids.)d(Existing)i(major)440 2575 y(grid)29 b(ef)o(forts)g(wer)o(e)f(pr)o(esented)h(along)h(with)g(their)g (de\002ning)g(characteristics.)e(A)i(thor)o(-)440 2689 y(ough)c(pr)o(esentation)f(of)h(Nor)o(duGrid)f(leads)f(to)i(an)f (identi\002cation)i(of)e(pr)o(oblems)g(in)h(the)440 2804 y(curr)o(ent)i(design)h(and)g(implementation.)g(Based)f(on)i(this)f(we) g(outline)h(a)e(simpler)h(grid)440 2919 y(ar)o(chitectur)o(e)h(center)o (ed)g(ar)o(ound)h(a)g(distributed)g(\002le)h(system)g(built)g(on)h(a)e (completely)440 3033 y(decentralised)20 b(overlay)g(network.)565 3148 y(The)k(outline)h(leads)f(to)h(a)f(pr)o(oposal)g(for)g(a)g(new)h (design)f(for)h(grid)f(computing)h(envi-)440 3262 y(r)o(onments)d(in)f (Chapter)f(2.)h(The)g(design)g(is)h(based)e(on)i(a)e(distributed)h(and) f(decentralised)440 3377 y(\002le)30 b(system,)g(the)g(information)h (service,)e(with)i(support)f(for)f(access)h(contr)o(ol)g(thr)o(ough)440 3491 y(asymmetric)c(cryptography)-9 b(,)26 b(noti\002cations)h(of)f (\002le)h(changes)f(and)g(mutual)g(exclusion.)440 3606 y(The)20 b(\002le)h(system)g(is)f(the)h(primary)e(medium)i(for)f (communication)i(between)e(the)g(partic-)440 3721 y(ipating)h(entities) g(in)h(the)e(grid.)565 3835 y(A)h(separate)g(data)f(service)i(is)g (also)g(designed)g(for)g(handling)g(the)g(massive)g(amounts)440 3950 y(of)33 b(data)e(that)i(curr)o(ent)f(grid)g(envir)o(onments)h (face.)f(The)g(data)g(service)g(in)h(our)g(design)440 4064 y(makes)16 b(use)g(of)f(the)h(information)h(service)e(to)i(stor)o (e)e(information)i(of)f(the)g(data)e(in)j(the)f(grid,)440 4179 y(but)23 b(actual)e(data)h(transfers)g(ar)o(e)f(performed)g(in)i (a)f(point-to-point)i(manner)-6 b(,)22 b(pr)o(eferably)440 4293 y(fr)o(om)e(multiple)i(hosts)g(in)f(parallel.)565 4408 y(It)j(is)h(essential)g(for)f(an)h(evolving)g(grid)g(envir)o (onment)g(that)g(it)g(is)g(extensible)f(so)h(that)440 4522 y(support)d(can)g(be)g(added)f(for)h(various)g(types)g(of)h(r)o (esour)o(ces.)d(W)-8 b(e)23 b(have)f(discussed)g(some)440 4637 y(general)27 b(issues)i(for)f(r)o(esour)o(ces,)e(including)j(how)g (to)g(handle)e(and)h(schedule)g(jobs)h(and)440 4752 y(handle)d(job)h (failur)o(es,)d(and)i(outlined)h(a)e(design)i(for)e(two)i(types)f(of)g (r)o(esour)o(ces,)f(namely)440 4866 y(batch)19 b(clusters)g(and)g (storage)h(systems,)g(the)f(ones)h(that)f(Nor)o(duGrid)g(curr)o(ently)g (consists)440 4981 y(of.)i(In)h(our)g(design,)f(r)o(esour)o(ces)f(use)i (the)g(information)g(service)f(to)h(r)o(egister)e(information)440 5095 y(about)26 b(the)f(r)o(esour)o(ce)f(and)i(for)f(r)o(etrieving)g (jobs)i(for)e(the)h(r)o(esour)o(ce,)e(making)i(use)g(of)f(the)440 5210 y(data)i(service)i(for)f(input)h(and)f(output)h(data)f(transfers.) g(This)h(ef)o(fectively)e(r)o(educes)g(the)440 5324 y(task)h(of)f (adding)h(new)g(r)o(esour)o(ce)e(types)i(to)g(writing)h(an)f(interface) e(between)i(the)g(infor)o(-)1831 5662 y(70)p eop %%Page: 71 73 71 72 bop 1450 211 a Ft(Chapter)20 b(4.)46 b(Conclusion)p 440 244 2865 4 v 440 531 a Fz(mation)21 b(service)g(and)f(the)h(actual) f(r)o(esour)o(ce.)565 646 y(In)g(a)h(grid)f(envir)o(onment)h(user)g (components)h(ar)o(e)d(also)i(needed)f(for)g(job)h(submission)440 760 y(and)c(grid)h(monitoring)i(tools.)e(In)g(our)g(design)g(the)g (information)h(needed)e(for)g(these)h(tools)440 875 y(ar)o(e)h(stor)o (ed)h(in)i(the)f(information)g(service)g(and)f(the)h(jobs)g(ar)o(e)f (submitted)h(to)g(it.)565 990 y(The)i(fault-tolerance,)e(performance)h (and)h(scalability)f(of)h(the)h(information)g(system)440 1104 y(is)e(central)f(to)h(our)g(design.)f(Hence,)g(we)h(decided)e(to)i (test)g(the)f(featur)o(es)f(that)i(we)f(needed)440 1219 y(for)27 b(the)h(information)h(service,)e(access-contr)o(olled)f (\002le)i(system)g(operations,)g(noti\002ca-)440 1333 y(tion)17 b(of)f(\002le)g(changes)g(and)g(a)f(mutex)i(algorithm,)f(on)h (top)f(of)g(a)g(decentralised)f(distributed)440 1448 y(hash)24 b(table.)f(W)-8 b(e)23 b(did)g(this)i(by)e(enhancing)i(and)e (adapting)g(a)g(Kademlia-based)e([31)o(])i(\002le)440 1562 y(system)e(implementation.)565 1677 y(Then)26 b(in)i(Chapter)d(3)i (we)f(pr)o(esented)g(various)g(tests)h(to)g(evaluate)f(the)g (information)440 1792 y(service.)20 b(The)g(test)h(of)f(the)h(\002le)g (system)g(showed)g(that)g(checking)g(key)g(blocks)g(is)g(constant)440 1906 y(in)26 b(the)f(number)g(of)g(keys)h(that)f(need)g(to)g(be)g (fetched)g(to)g(authenticate)g(the)g(block)h(when)440 2021 y(adding)d(mor)o(e)g(users,)g(while)h(checking)g(a)f(data)f(block) i(r)o(equir)o(ed)e(fewer)g(key)i(fetches)f(as)440 2135 y(the)g(number)g(of)f(data)g(blocks)h(alr)o(eady)e(checked)h(gr)o(ows.) h(Finally)g(the)g(latency)g(of)f(r)o(ead-)440 2250 y(ing)j(a)e(data)g (block)h(is)g(notable)g(for)g(clients)g(nodes,)g(while)h(small)f(for)g (fabric)e(nodes.)i(The)440 2364 y(latency)c(of)h(writing)g(data)e (blocks)i(is)g(high,)g(ranging)g(fr)o(om)f(1.2)f(seconds)i(to)g(1.6)e (seconds.)565 2479 y(The)31 b(tests)h(of)g(the)g(distributed)f(mutual)h (exclusion)h(algorithm)f(showed)g(that)g(the)440 2594 y(algorithm)21 b(scales)e(r)o(easonably)g(well)i(and)e(that)h (performance)f(is)h(satisfactory)g(even)f(un-)440 2708 y(der)28 b(conditions)i(of)f(sever)o(e)e(str)o(ess.)h(The)h(safety)f (pr)o(operty)g(of)g(mutual)h(exclusion)g(was)440 2823 y(discussed)23 b(and)f(we)g(implied)h(that)g(that)f(the)h(pr)o(oposed)f (algorithm)i(guarantees)d(safety)-9 b(,)440 2937 y(even)19 b(with)i(up)f(to)g Fu(r)i Fz(nodes)e(failing.)f(However)-6 b(,)19 b(the)h(test)g(also)g(r)o(evealed)d(that)j(the)g(lack)f(of)440 3052 y(liveness)i(guarantees)f(may)h(be)f(a)h(pr)o(oblem)f(in)h (practise.)565 3166 y(The)27 b(noti\002cation)h(tests)f(showed)h(that)f (the)g(algorithm)h(performs)e(well)i(even)e(with)440 3281 y(many)j(subscribers,)g(but)g(that)f(ther)o(e)h(is)g(a)f(pr)o (oblem)h(with)g(the)g(implementation)h(with)440 3396 y(fr)o(equent)20 b(\002le)h(modi\002cations.)g(The)g(algorithm)g(was)g (found)g(to)g(be)f(fault)g(tolerant)h(when)440 3510 y(nodes)30 b(wer)o(e)e(br)o(ought)h(to)h(fail)f(deliberately)-9 b(,)27 b(although)k(the)e(latency)g(befor)o(e)f(noti\002ca-)440 3625 y(tions)e(ar)o(e)d(r)o(eceived)g(incr)o(eases)g(gr)o(eatly)-9 b(.)24 b(This)h(decr)o(ease)d(depends)i(highly)i(on)f(the)g(con-)440 3739 y(stants)c(used)g(in)g(the)g(algorithm,)g(which)h(should)f(be)g (tuned)f(for)h(the)g(speci\002c)g(setting.)440 4047 y Fr(4.2)119 b(Strengths)29 b(and)h(W)-9 b(eaknesses)440 4252 y Fz(Having)23 b(summed)g(up)g(the)g(achievements)f(of)h(the)g(pr) o(oject,)f(we)h(will)g(now)h(try)e(to)i(str)o(ess)440 4366 y(the)d(str)o(engths)g(and)f(weaknesses)h(of)g(the)g(grid)f(ar)o (chitectur)o(e)f(we)i(have)f(designed.)565 4481 y(First)31 b(of)f(all,)g(the)h(information)h(service)e(makes)g(the)h(system)g (very)f(\003exible.)h(It)g(r)o(e-)440 4595 y(lieves)d(the)g(entities)h (using)g(it)f(fr)o(om)g(having)h(to)f(communicate)h(thr)o(ough)g (custom)f(net-)440 4710 y(work)23 b(pr)o(otocols)f(and)g(supports)g(gr) o(oup)g(coor)o(dination.)g(And)g(it)g(does)g(not)h(impose)f(any)440 4824 y(particular)c(constraints)j(on)f(the)g(information)g(stor)o(ed)f (in)h(it)g(except)f(for)g(the)h(hierar)o(chical)440 4939 y(dir)o(ectory)g(str)o(uctur)o(e.)565 5054 y(Then)h(ther)o(e)f(ar)o(e)g (two)h(pr)o(operties)f(that)h(we)g(have)g(explicitly)g(dealt)f(with)i (by)f(design-)440 5168 y(ing)e(the)f(system)h(on)f(top)h(of)f(a)f (distributed)h(hash)g(table,)f(fault)h(tolerance)f(and)h(scalability)-9 b(.)440 5283 y(Both)20 b(ar)o(e)d(pr)o(operties)i(that)g(ar)o(e)f (important)h(to)h(have)e(fr)o(om)h(the)g(very)g(\002rst)h(since)f(they) h(ar)o(e)440 5397 y(dif)o(\002cult)g(to)h(graft)f(onto)i(an)f(existing) g(design.)1831 5662 y(71)p eop %%Page: 72 74 72 73 bop 1450 211 a Ft(Chapter)20 b(4.)46 b(Conclusion)p 440 244 2865 4 v 565 531 a Fz(The)33 b(fault)f(tolerance)h(of)g(the)h (information)g(service)f(means)g(that)g(as)g(long)h(as)f(the)440 646 y(systems)25 b(on)g(top)f(of)g(it)h(ar)o(e)d(designed)i(with)h (some)g(car)o(e,)d(it)j(is)f(possible)h(to)f(have)g(a)g(very)440 760 y(r)o(obust)c(grid)h(wher)o(e)f(the)g(failur)o(e)f(of)i(a)f (participant)f(such)i(as)g(a)f(r)o(esour)o(ce)f(does)h(not)h(af)o(fect) 440 875 y(any)27 b(other)g(participants)f(including)h(the)g(users.)f (This)i(is)f(an)f(important)h(aspect)f(in)h(the)440 990 y(amount)c(of)g(manual)f(maintenance)h(needed)f(and)g(thus)h(the)g (overall)f(user)o(-friendliness)440 1104 y(of)f(the)g(grid.)565 1219 y(Although)30 b(the)g(information)g(service)g(itself)f(is)h(inher) o(ently)g(scalable,)f(also)g(practi-)440 1333 y(cally)k(speaking)h (since)f(it)h(is)g(easy)f(to)g(add)g(mor)o(e)g(fabric)f(nodes)h (because)g(of)g(its)h(self-)440 1448 y(or)o(ganising)20 b(pr)o(operties,)e(the)i(most)g(important)g(r)o(eason)f(why)h(a)f(grid) g(based)f(on)j(our)e(sys-)440 1562 y(tem)25 b(should)g(be)f(able)g(to)h (scale)e(is)i(per)o(haps)f(that)g(our)h(ar)o(chitectur)o(e)d(is)j (\003exible)f(enough)440 1677 y(to)d(support)g(several)f(alternative)g (models)h(of)g(operation,)f(e.g.)h(for)f(scheduling.)565 1792 y(Another)k(bene\002t)g(of)f(our)i(system)f(is)g(that)g(it)g (deals)g(with)g(the)g(pr)o(oblem)g(of)g(user)f(ad-)440 1906 y(ministration)k(and)e(public-key)g(distribution)i(explicitly)e (in)h(a)f(decentralised)g(manner)-6 b(,)440 2021 y(thus)21 b(r)o(elieving)g(the)g(system)g(fr)o(om)g(a)f(centralised)g(human)h (bottleneck.)565 2135 y(Ther)o(e)27 b(ar)o(e)g(also)h(some)h (weaknesses)f(of)g(our)h(design.)f(One)h(that)f(was)g(highlighted)440 2250 y(under)c(the)g(test)g(of)g(the)g(\002le)h(system,)f(is)h(that)f (the)g(\002le)g(system)h(operations)f(may)g(have)g(a)440 2364 y(high)g(latency)e(because)g(of)g(the)h(security)g(model.)g(This)g (may)-9 b(,)22 b(however)-6 b(,)22 b(not)i(be)e(a)g(pr)o(ob-)440 2479 y(lem)j(for)f(the)g(curr)o(ently)g(deployed)g(lar)o(ge)g(grids)g (because)g(they)g(ar)o(e)f(mostly)j(batch)e(sys-)440 2594 y(tems)g(wher)o(e)f(jobs)h(generally)g(take)f(a)g(long)h(time)g (to)g(pr)o(ocess.)f(Another)h(issue)g(with)g(the)440 2708 y(access)16 b(contr)o(ol)h(system)g(is)f(that)h(due)f(to)g(the)h (use)f(of)h(asymmetric)f(cryptography)g(in)h(a)f(de-)440 2823 y(centralised)22 b(manner)-6 b(,)22 b(it)g(is)h(dif)o(\002cult)e (to)i(r)o(evoke)f(rights)h(fr)o(om)f(a)f(tr)o(uly)i(malicious)g(party) -9 b(.)440 2937 y(It)29 b(is)h(unclear)f(whether)h(it)f(is)h(possible)g (to)g(amend)f(this)h(pr)o(oblem)f(without)i(imposing)440 3052 y(further)20 b(performance)g(penalties.)565 3166 y(W)-8 b(e)26 b(have)h(tried)f(to)h(alleviate)f(other)h(weaknesses)f (during)h(the)g(design)g(phase.)f(But)440 3281 y(since)19 b(the)g(foundation)h(of)e(our)i(ar)o(chitectur)o(e)c(is)k(quite)f(new)g (compar)o(ed)f(to)h(the)g(tried)g(and)440 3396 y(tested)27 b(client-server)f(ar)o(chitectur)o(e,)f(ther)o(e)i(ar)o(e)e(likely)j (to)g(be)e(pr)o(oblems)h(that)h(we)f(have)440 3510 y(not)33 b(thought)g(of)f(and)g(that)g(will)h(only)g(show)g(up)f(when)h(a)e (complete)i(grid)f(design)g(is)440 3625 y(implemented)21 b(and)f(r)o(unning.)565 3739 y(In)k(spite)f(of)h(this)g(uncertainty)-9 b(,)24 b(we)g(believe)f(that)g(the)h(our)g(design)g(could)g(pr)o(ovide) f(a)440 3854 y(viable)17 b(alternative)g(to)h(the)g(ar)o(chitectur)o(e) e(of)h(Nor)o(duGrid,)g(and)h(that)f(it)h(has)g(the)g(potential)440 3968 y(to)28 b(make)f(futur)o(e)g(grids)g(mor)o(e)g(r)o(obust,)g(less)h (of)g(a)f(bur)o(den)f(to)i(maintain)g(and)f(develop,)440 4083 y(easier)20 b(to)h(contribute)g(r)o(esour)o(ces)f(to,)h(and)f (easier)g(to)h(extend)f(to)h(new)h(\002elds.)440 4391 y Fr(4.3)119 b(Future)30 b(W)-9 b(ork)440 4595 y Fz(Since)25 b(our)h(time)g(was)g(limited)g(we)g(have)f(mostly)i(dealt)e(with)h(the) g(foundations)g(of)g(the)440 4710 y(ar)o(chitectur)o(e.)21 b(W)-5 b(ith)25 b(mor)o(e)e(time)h(available,)d(ther)o(e)i(ar)o(e)f(a)h (lot)h(of)f(possible)h(futur)o(e)f(dir)o(ec-)440 4824 y(tions)f(one)f(could)g(examine:)565 5022 y Fo(\017)41 b Fz(Because)15 b(of)i(the)g(sheer)f(scope)h(of)g(a)f(complete)h(grid)f (system,)h(we)g(have)f(necessarily)648 5137 y(had)24 b(to)h(leave)f(some)h(loose)h(ends)f(her)o(e)f(and)g(ther)o(e)g(in)h (the)g(design,)g(in)g(particular)648 5251 y(in)19 b(the)g(upper)g (level)g(components.)h(Many)f(details)g(must)g(be)g(car)o(efully)f (examined)648 5366 y(and)i(decided)f(upon)j(befor)o(e)d(a)h(complete)h (grid)g(can)f(be)h(implemented.)1831 5662 y(72)p eop %%Page: 73 75 73 74 bop 1450 211 a Ft(Chapter)20 b(4.)46 b(Conclusion)p 440 244 2865 4 v 565 531 a Fo(\017)41 b Fz(However)-6 b(,)21 b(developing)h(and)g(evaluating)g(a)f(pr)o(ototype)h (implementation)h(of)f(the)648 646 y(entir)o(e)d(grid)i(design)f(is)h (an)f(ultimate)h(test)f(of)g(the)h(design.)f(T)-8 b(esting)22 b(should)f(pr)o(efer)o(-)648 760 y(ably)g(be)h(performed)e(in)j(a)e(r)o (eal)f(envir)o(onment,)j(e.g.)e(using)i(PlanetLab)d([39)o(].)h(W)-5 b(ith)648 875 y(a)31 b(pr)o(ototype)h(r)o(unning,)h(it)g(would)f(be)g (possible)h(to)f(compar)o(e)f(with)i(other)f(grid)648 990 y(solutions)22 b(and)e(complete)h(evaluation)g(of)g(the)g(design)g (could)g(be)f(made.)565 1171 y Fo(\017)41 b Fz(One)17 b(could)f(experiment)h(with)g(other)g(data)f(service)g(designs)h(than)g (what)g(we)g(have)648 1285 y(suggested.)24 b(It)h(is)g(certainly)g (easy)g(to)g(think)h(of)f(mor)o(e)f(advanced)f(solutions.)k(One)648 1400 y(thing)21 b(that)g(is)g(pr)o(obably)f(important)h(in)h(practise)e (is)h(automatic)g(r)o(eplica)e(manage-)648 1514 y(ment)24 b(so)h(that)f(one)h(only)g(has)g(to)f(specify)g(the)h(desir)o(ed)e (number)h(of)h(r)o(eplicas)e(and)648 1629 y(then)e(the)g(system)g (takes)g(car)o(e)e(of)i(maintaining)g(them.)565 1810 y Fo(\017)41 b Fz(Network)30 b(partitions)g(wher)o(e)f(the)h(nodes)g (in)g(the)g(network)g(ar)o(e)e(separated)g(into)648 1924 y(two)d(distinct)g(gr)o(oups)g(ar)o(e)e(not)j(handled)e(by)h(our)g (system.)g(The)g(pr)o(oblem)f(is)h(that)648 2039 y(the)e(two)g (distinct)h(gr)o(oups)f(may)g(continue)g(independently)g(which)h(for)f (example)648 2154 y(may)17 b(r)o(esult)h(in)g(inconsistant)h(job)g (queues.)e(This)i(needs)e(to)h(be)g(investigated)f(to)i(see)648 2268 y(whether)i(it)g(is)g(possible)g(to)g(mitigate.)565 2449 y Fo(\017)41 b Fz(The)26 b(mutual)h(exclusion)g(algorithm)g(does)f (not)i(guarantee)d(liveness.)i(However)-6 b(,)648 2564 y(another)22 b(pr)o(otocol)g(has)g(r)o(ecently)g(been)g(pr)o(oposed)g (for)g(maintaining)h(mutual)f(ex-)648 2678 y(clusion)33 b(in)g(dynamic)g(peer)o(-to-peer)d(systems)k([30)o(].)e(Since)g(this)h (pr)o(otocol)g(does)648 2793 y(guarantee)19 b(liveness,)i(it)g(may)g (be)f(pr)o(eferable.)565 2974 y Fo(\017)41 b Fz(A)29 b(scheduler)h(framework)f(and)h(a)f(scheduler)h(must)g(be)g(designed)f (and)h(tested.)648 3088 y(Pr)o(eferably)-9 b(,)23 b(a)j(scheduler)g (should)h(optimise)g(the)f(overall)g(thr)o(oughput)h(without)648 3203 y(too)d(much)g(over)o(head,)e(pr)o(oduce)h(r)o(obust)h(schedules)g (and)f(still)h(be)g(scalable.)e(It)i(is,)648 3318 y(however)-6 b(,)16 b(a)g(non-trivial)h(question)h(to)f(what)f(extent)h(these)f (goals)h(can)f(be)h(ful\002lled.)648 3432 y(W)-5 b(ith)26 b(a)g(simple)g(algorithm,)g(some)h(\002les)f(in)g(the)g(information)h (service)e(may)g(end)648 3547 y(up)20 b(as)h(bottlenecks)g(so)g(that)g (the)g(r)o(esult)f(is)h(not)h(scalable)e(enough.)565 3728 y Fo(\017)41 b Fz(The)16 b(design)h(could)g(be)f(extended)f(to)i (explicitly)g(addr)o(ess)e(desktop)i(machines)g(too.)648 3842 y(V)-8 b(arious)16 b(issues,)h(such)g(as)f(scalability)-9 b(,)16 b(transient)g(network)h(connections)h(and)e(lim-)648 3957 y(ited)h(access)h(to)g(the)g(Internet,)g(must)g(be)g(addr)o (essed.)d(A)j(solution)h(could)f(be)g(the)g(de-)648 4071 y(velopment)j(of)g(grid)f(hubs)h(that)g(operate)f(as)g(pr)o(oxies)h (for)f(the)h(desktop)g(machines)648 4186 y(in)f(an)g(or)o(ganisation,)h (with)g(the)f(hubs)h(having)g(a)f(pr)o(oper)f(connection)j(to)e(the)h (grid.)648 4301 y(This)g(could)g(also)g(handle)f(some)i(of)e(the)h (scalability)g(issues)g(involved.)565 4482 y Fo(\017)41 b Fz(W)-8 b(e)25 b(have)f(not)i(addr)o(essed)d(accounting)i(and)g (payment)f(for)h(grid)g(services.)f(W)-5 b(ith)648 4596 y(the)19 b(pr)o(ovided)e(log)j(facility)-9 b(,)18 b(it)h(would)h(be)e (possible)i(to)f(add)f(this)h(on)h(top)f(of)g(the)g(ex-)648 4711 y(isting)g(design,)f(but)g(it)g(may)g(be)f(pr)o(eferable)f(to)i (have)g(a)f(mor)o(e)h(integrated)f(solution.)1831 5662 y(73)p eop %%Page: 74 76 74 75 bop 440 1233 a FC(Bibliography)482 1680 y Fz([1])40 b(Alchemi)32 b(-)f(.NET)g(grid)h(computing)h(framework.)64 b Fn(http://www.alchemi.)620 1794 y(net/)p Fz(.)482 1971 y([2])40 b(David)28 b(P)-11 b(.)29 b(Anderson.)56 b(Public)29 b(computing:)h(Reconnecting)h(people)d(to)i(science,)620 2085 y(Mar)o(ch)19 b(2004.)482 2262 y([3])40 b(Storage)24 b(Networking)h(Industry)g(Association.)44 b(Common)26 b(internet)f(\002le)g(system)620 2377 y(technical)c(r)o(efer)o(ence)d (v)-9 b(.)20 b(1.0,)f(Mar)o(ch)h(2002.)482 2553 y([4])40 b(The)21 b(A)-6 b(TLAS)19 b(experiment.)29 b Fn (http://atlasexperiment.org/)p Fz(.)482 2730 y([5])40 b(Paul)22 b(A)-8 b(very)21 b(and)g(Ian)h(Foster)-6 b(.)34 b(Griphyn)22 b(annual)g(r)o(eport)f(for)h(2003\2262004,)17 b(August)620 2844 y(2004.)482 3021 y([6])40 b(A.)20 b(Back.)29 b(Hash)21 b(cash)f(-)h(a)f(denial)g(of)h(service)f(counter)o(-measur)o (e.)482 3198 y([7])40 b(Boost)21 b(C++)g(libraries.)30 b Fn(http://www.boost.org/)p Fz(.)482 3374 y([8])40 b(Rajkumar)h (Buyya.)92 b(Grid)41 b(computing)h(info)f(centr)o(e)e(F)-6 b(AQ.)93 b Fn(http://www.)620 3489 y(gridcomputing.com/gridfaq.html)p Fz(.)482 3666 y([9])40 b(Charlie)20 b(Catlett.)29 b(The)21 b(T)-8 b(eraGrid:)20 b(A)g(primer)-6 b(,)20 b(September)g(2002.)440 3842 y([10])40 b(GNU)e(Common)h(C++)g(Resour)o(ces.)85 b Fn(http://www.gnu.org/software/)620 3957 y(commoncpp/)p Fz(.)440 4134 y([11])40 b(Geor)o(ge)23 b(Coulouris,)i(Jen)e(Dollimor)o (e,)i(and)e(T)-5 b(im)25 b(Kindber)o(g.)39 b Fu(Distributed)23 b(Systems)620 4248 y(-)d(Concepts)h(and)f(Design,)h(3rd)f(edition)p Fz(.)29 b(Addison)21 b(W)-8 b(esley)f(,)21 b(2001.)440 4425 y([12])40 b(distributed.net.)29 b Fn(http://www.distributed.net/)p Fz(.)440 4601 y([13])40 b(eDonkey2000)19 b(-)i(Overnet.)29 b Fn(http://edonkey.com)p Fz(.)440 4778 y([14])40 b(P)-11 b(.)33 b(Eer)o(ola,)e(B.)i(Konya,)g(and)f(O.)h(Smirnova)g(et.)g(al.)68 b(A)-6 b(TLAS)31 b(Data-Challenge)h(1)620 4893 y(on)h(Nor)o(duGrid.)65 b(In)32 b Fu(Computing)f(in)h(High)f(Ener)o(gy)g(and)g(Nuclear)h (Physics)p Fz(,)f(2003.)620 5007 y Fn (http://www.nordugrid.org/documents)o(/MOCT0)o(11.pd)o(f)p Fz(.)440 5184 y([15])40 b(P)-11 b(.)28 b(Eer)o(ola,)e(B.)h(Konya,)h (and)f(O.)h(Smirnova)f(et.)g(al.)51 b(The)28 b(nor)o(dugrid)f(ar)o (chitectur)o(e)620 5298 y(and)d(tools.)41 b(In)24 b Fu(Computing)f(in)i (High)e(Ener)o(gy)g(and)g(Nuclear)i(Physics)p Fz(,)e(2003.)38 b Fn(http:)620 5413 y(//www.nordugrid.org/documents/MOAT)o(003.pd)o(f)p Fz(.)1831 5662 y(74)p eop %%Page: 75 77 75 76 bop 1556 211 a Ft(BIBLIOGRAPHY)p 440 244 2865 4 v 440 531 a Fz([16])40 b(Ian)27 b(Foster)i(and)e(Carl)g(Kesselman.)53 b Fu(The)27 b(Grid:)g(Blueprint)h(for)g(a)g(New)f(Computing)620 646 y(Infrastructur)o(e)p Fz(,)20 b(chapter)g(2.)30 b(Mor)o (gan-Kaufmann,)19 b(1998.)440 827 y([17])40 b(Ian)19 b(Foster)-6 b(,)20 b(Carl)e(Kesselman,)i(and)f(Steven)g(T)-7 b(uecke.)26 b(The)20 b(Anatomy)f(of)h(the)f(Grid:)620 941 y(Enabling)f(Scalable)d(V)-5 b(irtual)18 b(Or)o(ganizations.)k Fu(Lectur)o(e)c(Notes)f(in)h(Computer)f(Science)p Fz(,)620 1056 y(2150:1\226??,)g(2001.)440 1237 y([18])40 b(M.)22 b(Fr)o(eedman)g(and)g(D.)h(Mazi\350r)o(es.)34 b(Sloppy)23 b(hashing)h(and)e(self-or)o(ganizing)g(clus-)620 1352 y(ters,)e(2003.)440 1533 y([19])40 b(The)21 b(Globus)g(Alliance.)30 b Fn(http://www.globus.org/)p Fz(.)440 1714 y([20])40 b(Knowbuddy's)105 b(Gnutella)f(F)-6 b(AQ.)297 b Fn (http://www.rixsoft.com/)620 1828 y(Knowbuddy/gnutellafaq.html)p Fz(.)440 2009 y([21])40 b(Onne)22 b(Gorter)-6 b(.)30 b(Database)20 b(File)h(System.)31 b Fn(http://ozy.student.utwente.)620 2124 y(nl/projects/dbfs/)p Fz(.)440 2305 y([22])40 b(Richar)o(d)i (Grimes.)102 b(Code)42 b(Name)h(W)-5 b(inFS.)101 b Fn (http://msdn.microsoft.)620 2419 y(com/longhorn/default.aspx?pull=/ms)o (dnmag/)o(issue)o(s/04/0)o(1/)620 2534 y(WinFS/default.aspx)p Fz(.)440 2715 y([23])40 b(N.)28 b(HAR)-5 b(VEY)c(,)29 b(M.)g(JONES,)e(S.)i(SAROIU,)f(M.)g(THEIMER,)g(and)g(A.)g(WOLMAN.)620 2829 y(Skipnet:)23 b(A)f(scalable)g(overlay)h(network)g(with)h (practical)e(locality)h(pr)o(operties.)36 b(In)620 2944 y Fu(Pr)o(oceedings)20 b(of)h(USITS)p Fz(.)e(USENIX,)h(2003.)440 3125 y([24])40 b(Anders)d(Rune)h(Jensen,)g(Jasper)e(Kjersgaar)o(d)h (Juhl,)g(Lau)g(Bech)h(Lauritzen,)e(Ole)620 3240 y(Laursen,)20 b(and)g(Michael)g(Gade)g(Nielsen.)29 b(Heurika:)20 b(A)g(decentralised) g(shar)o(ed)f(\002le)620 3354 y(system)28 b(for)f(local)g(ar)o(ea)e (networks.)51 b(Student)27 b(r)o(eport)f(\(3r)o(d)g(year\),)f(Aalbor)o (g)i(Uni-)620 3469 y(versity)-9 b(,)20 b(December)g(2003.)440 3650 y([25])40 b(Henrik)31 b(Thostr)o(up)i(Jensen)e(and)g(Jesper)f(R)m (yge)i(Leth.)63 b(A)31 b(Job)g(Manager)f(for)h(the)620 3764 y(Nor)o(duGrid)20 b(ARC.)30 b(Master)6 b('s)20 b(thesis,)h(Aalbor) o(g)f(University)-9 b(,)20 b(June)h(2004.)440 3945 y([26])40 b(Kazaa.)28 b Fn(http://www.kazaa.com/)p Fz(.)440 4126 y([27])40 b(B.)34 b(K\363nya.)77 b(Nor)o(duGrid)34 b(server)h (installation)h(instr)o(uctions.)77 b Fn(http://www.)620 4241 y(nordugrid.org/documents/ng-)t(server-)t(in)o(stall)o(.html)p Fz(.)440 4422 y([28])40 b(Legion:)21 b(A)f(worldwide)h(computer)-6 b(.)30 b Fn(http://legion.virginia.edu/)p Fz(.)440 4603 y([29])40 b(The)21 b(LHC)f(grid)h(computing)g(pr)o(oject.)30 b Fn(http://lcg.web.cern.ch/LCG/)p Fz(.)440 4784 y([30])40 b(Shi-Ding)25 b(Lin,)f(Qiao)g(Lian,)g(Ming)g(Chen,)h(and)e(Zheng)i (Zhang.)42 b(A)24 b(practical)f(dis-)620 4898 y(tributed)j(mutual)h (exclusion)g(pr)o(otocol)g(in)g(dynamic)g(peer)o(-to-peer)d(systems.)50 b(In)620 5013 y Fu(The)20 b(3rd)g(International)h(W)n(orkshop)f(on)h (Peer-to-Peer)g(Systems)p Fz(,)f(2004.)440 5194 y([31])40 b(P)-11 b(.)23 b(Maymounkov)g(and)f(D.)h(Mazier)o(es.)34 b(Kademlia:)22 b(A)g(peer)o(-to-peer)e(information)620 5308 y(system)h(based)f(on)i(the)e(XOR)i(metric.)30 b(In)21 b Fu(Pr)o(oceedings)f(of)h(IPTPS02)p Fz(,)d(Mar)o(ch)i(2002.)1831 5662 y(75)p eop %%Page: 76 78 76 77 bop 1556 211 a Ft(BIBLIOGRAPHY)p 440 244 2865 4 v 440 531 a Fz([32])40 b(David)e(Mazi\350r)o(es,)f(Michael)h(Kaminsky) -9 b(,)39 b(M.)f(Frans)h(Kaashoek,)g(and)f(Emmett)620 646 y(W)-5 b(itchel.)54 b(Separating)27 b(key)h(management)g(fr)o(om)g (\002le)h(system)f(security)-9 b(.)54 b(In)28 b Fu(Pr)o(o-)620 760 y(ceedings)22 b(of)f(the)h(17th)e(ACM)i(Symposium)f(on)h(Operating) e(Systems)i(Principles)g(\(SOSP)620 875 y('99\))p Fz(,)d(pages)h (124\226139,)d(Kiawah)k(Island,)g(South)g(Car)o(olina,)e(December)i (1999.)440 1044 y([33])40 b(Minimum)58 b(intr)o(usion)g(grid.)145 b Fn(http://www.imada.sdu.dk/~anden/)620 1158 y(MiG/)p Fz(.)440 1327 y([34])40 b(Nor)o(duGrid)g(middlewar)o(e,)f(the)i (advanced)e(r)o(esour)o(ce)g(connector)-6 b(.)94 b Fn(http://)620 1441 y(www.nordugrid.org/middleware/)p Fz(.)440 1610 y([35])40 b(Seth)h(Nickell.)95 b(GNOME)40 b(Storage.)94 b Fn(http://www.gnome.org/~seth/)620 1725 y(storage/)p Fz(.)440 1893 y([36])40 b(OpenPBS)18 b(public)g(home.)24 b Fn(http://www-)t(unix.mcs.anl.gov/openpbs/)p Fz(.)440 2062 y([37])40 b(OpenSSL:)56 b(The)g(Open)h(Sour)o(ce)f(toolkit)i(for)f (SSL/TLS.)143 b Fn(http://www.)620 2177 y(openssl.org/)p Fz(.)440 2345 y([38])40 b(PBS)20 b(Pr)o(o)h(Home.)30 b Fn(http://www.pbspro.com/)p Fz(.)440 2514 y([39])40 b(PlanetLab:)31 b(An)g(open)i(platform)e(for)h(developing,)g (deploying,)g(and)f(accessing)620 2628 y(planetary-scale)19 b(services.)29 b Fn(http://www.planet-)t(lab.org/)p Fz(.)440 2797 y([40])40 b(Sylvia)26 b(Ratnasamy)-9 b(,)26 b(Paul)h(Francis,)f (Mark)g(Handley)-9 b(,)26 b(Richar)o(d)g(Karp,)g(and)g(Scott)620 2912 y(Shenker)-6 b(.)39 b(A)24 b(scalable)f(content)i(addr)o(essable)c (network.)41 b(In)24 b Fu(Pr)o(oceedings)g(of)g(ACM)620 3026 y(SIGCOMM)p Fz(,)d(2001.)440 3195 y([41])40 b(Luigi)22 b(Rizzo.)32 b(Dummynet:)23 b(a)e(simple)h(appr)o(oach)e(to)i(the)g (evaluation)f(of)h(network)620 3309 y(pr)o(otocols.)30 b Fu(ACM)21 b(Computer)g(Communication)f(Review)p Fz(,)h (27\(1\):31\22641,)16 b(1997.)440 3478 y([42])40 b(Antony)22 b(Rowstr)o(on)g(and)e(Peter)h(Dr)o(uschel.)31 b(Pastry:)21 b(Scalable,)e(decentralized)g(ob-)620 3593 y(ject)36 b(location,)g(and)f(r)o(outing)i(for)e(lar)o(ge-scale)f(peer)o (-to-peer)f(systems.)79 b Fu(Lectur)o(e)620 3707 y(Notes)20 b(in)h(Computer)g(Science)p Fz(,)g(2218:329\226350,)15 b(2001.)440 3876 y([43])40 b(SETI@Home:)30 b(Sear)o(ch)f(for)i (extraterr)o(estrial)d(intelligence)k(at)e(home.)63 b Fn(http://)620 3991 y(setiathome.ssl.berkeley.edu/)p Fz(.)440 4159 y([44])40 b(Ion)29 b(Stoica,)f(Robert)h(Morris,)f(David)g (Kar)o(ger)-6 b(,)28 b(M.)g(Francs)g(Kaashoek,)h(and)f(Hari)620 4274 y(Balakrishnan.)41 b(Chor)o(d:)23 b(A)h(scalable)g(peer)o (-to-peer)e(lookup)j(service)f(for)g(internet)620 4388 y(applications.)45 b(In)26 b Fu(Pr)o(oceedings)f(of)h(the)f(2001)e (confer)o(ence)k(on)e(applications,)f(technolo-)620 4503 y(gies,)19 b(ar)o(chitectur)o(es,)g(and)g(pr)o(otocols)f(for)i (computer)f(communications)p Fz(,)f(pages)h(149\226160.)620 4617 y(ACM)h(Pr)o(ess,)g(2001.)440 4786 y([45])40 b(Sun)17 b(Micr)o(osystems,)g(Inc.)k(RFC1094:)16 b(NFS:)g(Network)i(\002le)f (system)h(pr)o(otocol)f(spec-)620 4901 y(i\002cation,)k(Mar)o(ch)e (1989.)440 5069 y([46])40 b(Osamu)e(T)-8 b(atebe,)37 b(Y)-8 b(ouhei)40 b(Morita,)d(Satoshi)h(Matsuoka,)f(Noriyuki)i(Soda,)e (and)620 5184 y(Satoshi)19 b(Sekiguchi.)27 b(Grid)20 b(datafarm)d(ar)o(chitectur)o(e)g(for)i(petascale)f(data)h(intensive) 620 5298 y(computing.)26 b(In)19 b Fu(Pr)o(oceedings)f(of)g(the)g(2nd)g (IEEE/ACM)g(International)g(Symposium)f(on)620 5413 y(Cluster)22 b(Computing)d(and)i(the)f(Grid)p Fz(,)g(pages)h(102\226110,)c(2002.) 1831 5662 y(76)p eop %%Page: 77 79 77 78 bop 1556 211 a Ft(BIBLIOGRAPHY)p 440 244 2865 4 v 440 531 a Fz([47])40 b(Douglas)29 b(Thain,)f(T)-8 b(odd)28 b(T)-8 b(annenbaum,)29 b(and)f(Mir)o(on)g(Livny)-9 b(.)54 b(Distributed)28 b(com-)620 646 y(puting)e(in)f(practice:)f(The)h (condor)h(experience.)43 b Fu(Concurr)o(ency)25 b(and)g(Computation:) 620 760 y(Practice)20 b(and)g(Experience)p Fz(,)h(2004.)440 941 y([48])40 b(T)o(ORQUE)57 b(Resour)o(ce)g(Manager)-6 b(.)146 b Fn(http://www.supercluster.org/)620 1056 y(torque/)p Fz(.)440 1237 y([49])40 b(Andr)o(ei)26 b(T)-7 b(sar)o(egor)o(odtsev)e (,)24 b(V)-5 b(incent)28 b(Gar)o(onne,)e(and)h(Ian)f(Stokes-Rees.)49 b(Dirac:)27 b(A)620 1352 y(scalable)e(lightweight)j(ar)o(chitectur)o(e) c(for)i(high)i(thr)o(oughput)f(computing.)48 b(In)27 b Fu(5th)620 1466 y(IEEE/ACM)20 b(International)g(W)n(orkshop)h(on)g (Grid)f(Computing)p Fz(,)g(2004.)440 1647 y([50])40 b(UNICORE.)29 b Fn(http://www.unicore.org/)p Fz(.)440 1828 y([51])40 b(M.)25 b(W)-8 b(ahl,)26 b(T)-6 b(.)25 b(Howes,)i(and)e(S.)g(Kille.)47 b(Lightweight)27 b(Dir)o(ectory)e(Access)h(Pr)o(otocol)620 1943 y(\(v3\).)i Fn(http://www.ietf.org/rfc/rfc2251.txt)p Fz(.)440 2124 y([52])40 b(T)-6 b(.)23 b(Ylonen.)38 b(SSH)23 b(-)f(secur)o(e)h(login)h(connections)h(over)e(the)g(internet.)38 b(Pr)o(oceedings)620 2238 y(of)27 b(the)g(6th)g(Security)g(Symposium\)) g(\(USENIX)f(Association:)i(Berkeley)-9 b(,)26 b(CA\):37,)620 2353 y(1996.)440 2534 y([53])40 b(B.)23 b(Y)-9 b(.)24 b(Zhao,)g(J.)g(D.)g(Kubiatowicz,)g(and)f(A.)h(D.)f(Joseph.)41 b(T)-8 b(apestry:)23 b(An)h(infrastr)o(uc-)620 2648 y(tur)o(e)k(for)h (fault-tolerant)f(wide-ar)o(ea)f(location)j(and)f(r)o(outing.)57 b(T)-8 b(echnical)29 b(Report)620 2763 y(UCB/CSD-01-1141,)16 b(UC)k(Berkeley)-9 b(,)20 b(April)g(2001.)1831 5662 y(77)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF