diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/skak/informator.ps')
-rw-r--r-- | Master/texmf-dist/doc/latex/skak/informator.ps | 5639 |
1 files changed, 0 insertions, 5639 deletions
diff --git a/Master/texmf-dist/doc/latex/skak/informator.ps b/Master/texmf-dist/doc/latex/skak/informator.ps deleted file mode 100644 index cf693fb86db..00000000000 --- a/Master/texmf-dist/doc/latex/skak/informator.ps +++ /dev/null @@ -1,5639 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software -%%Title: informator.dvi -%%CreationDate: Thu Jul 18 23:26:38 2013 -%%Pages: 1 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: CMR17 CMTT12 CMR12 CMR10 CMSY10 CMSSBX10 -%%+ SkakNew-Figurine CMSS10 -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -o informator.ps informator.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2013.07.18:2326 -%%BeginProcSet: tex.pro 0 0 -%! -/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 -/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 -def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 -rotate}{show}ifelse}ifelse}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: pstricks.pro 0 0 -% $Id: pstricks.pro 647 2012-02-12 15:03:40Z herbert $ -% -%% PostScript prologue for pstricks.tex. -%% Version 1.12, 2012/02/12 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -% -% -% Define the follwing gs-functions if not known, eg when using distiller -% -systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if -systemdict /.setblendmode known not {/.setblendmode { pop } def } if -systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if -% -/tx@Dict 200 dict def % the main PSTricks dictionary -tx@Dict begin -/ADict 25 dict def % The arrow dictionaray -/CM { matrix currentmatrix } bind def -/SLW /setlinewidth load def -/CLW /currentlinewidth load def -/CP /currentpoint load def -/ED { exch def } bind def -/L /lineto load def -/T /translate load def -/TMatrix { } def -/RAngle { 0 } def -/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments -/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known -/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) -/Div { dup 0 eq { pop } { div } ifelse } def % control the division -/tan { dup cos abs 1.e-10 lt - { pop 1.e10 } % return 1.e10 as infinit - { dup sin exch cos div } ifelse % default sin/cos -} def -/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees -/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root - pop pop 0 }{ sqrt exch atan} ifelse } def -/NET { neg exch neg exch T } def % change coordinate system to the negative one -/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter -/Pyth2 { % Pythagoras, xA yA xB yB - 3 -1 roll % xA xB yB yA - sub % xA xB yB-yA - 3 1 roll % yB-yA xA xB - sub % yB-yA xA-xB - Pyth } def -/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian -/Rand { rand 4294967295 div } def % a real random number -%----------------- hv added 20050516 --------------- -/PiDiv2 1.57079632680 def -/Pi 3.14159265359 def -/TwoPi 6.28318530718 def -/Euler 2.71828182846 def -%/e Euler bind def -% -/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees -/DegtoRad { Pi mul 180 div } bind def % viceversa -%----------------- hv end--------------------------- -/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def -% -/PathLength { - flattenpath /z 0 def - { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } - { /y ED /x ED PathLength@ } - {} - { /y y2 def /x x2 def PathLength@ } - /pathforall load stopped { pop pop pop pop } if - z -} def -% -/STP { .996264 dup scale } def % BP/PT scaling -/STV { SDict begin normalscale end STP } def % -% -/DashLine { - dup 0 gt - { /a .5 def PathLength exch div } - { pop /a 1 def PathLength } ifelse - /b ED % pattern should fit evenly in b - dup /X ED % pattern array - 0 get /y ED % length of first black segment - /z 0 X {add} forall def % length of the full pattern - %% Computation of the scaling factor as described by van Zandt: - b a .5 sub 2 mul y mul sub z Div round - z mul a .5 sub 2 mul y mul add b exch Div - %%%% scaling factor on stack. - /z ED %% now, z is the scaling factor - false % for the length test below - X { z mul } forall X astore %% modification TN 04-08-07 - %%% Checking whether at least one dash in X has positive length: - {0 gt or} forall - { X 1 a sub y mul } - { [ 1 0 ] 0 } - ifelse - setdash stroke -} def -% -/DotLine { - /b PathLength def - /a ED /z ED /y CLW def - /z y z add def - a 0 gt { - /b b a div def - }{ - a 0 eq { - /b b y sub def - }{ a -3 eq { - /b b y add def } if - } ifelse - } ifelse - [ 0 b b z Div round Div dup 0 le { pop 1 } if ] - a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse - setdash 1 setlinecap stroke -} def -% -/SymbolLine { % on stack [ x y x y ... - counttomark % number of elements - 2 div cvi /n ED % n pairs - /YA ED /XA ED % the start point - n 1 sub { - /YB ED /XB ED - /XLength XB XA sub def - /YLength YB YA sub def - /PAngle YLength XLength Atan def - /XYLength XLength YLength Pyth def - - %% for negative SymStep we calculate the distance - SymStep 0 lt - { %XYLength SymStep div abs cvi - /nSym SymStep abs cvi def } - { /nSym XYLength SymStep div cvi def } - ifelse - 0.5 setflat - /Shift Symbol stringwidth pop 2 div def - /deltaX XLength nSym div def - /deltaY YLength nSym div def - curveticks - { XA YA moveto } - { XA Shift sub YA Shift sub moveto } - ifelse - nSym { - gsave - curveticks - { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED - currentpoint translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore - deltaX deltaY rmoveto - } repeat - /YA YB def /XA XB def - } repeat - curveticks - { XA YA moveto } - { XA Shift sub YA Shift sub moveto } - ifelse - gsave - curveticks - { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED - XA YA translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore - pop % delete the mark symbol -} def -% -/LineFill { % hv ------------ patch 7 ------------- - gsave - abs /hatchWidthInc ED - abs /hatchSepInc ED - abs CLW add /a ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform pathbbox - /y2 ED - a Div ceiling cvi /x2 ED /y1 ED - a Div cvi /x1 ED /y2 y2 y1 sub def - clip - newpath - 2 setlinecap - systemdict - /setstrokeadjust known { true setstrokeadjust } if - x2 x1 sub 1 add { - x1 a mul y1 moveto 0 y2 rlineto stroke - /x1 x1 1 add - hatchWidthInc 0 gt { CLW add } if - def - hatchSepInc 0 gt hatchWidthInc 0 gt or { - /a a hatchSepInc add def - CLW hatchWidthInc add SLW - } if - } repeat - grestore - pop pop } def -% -/DotFill {% on stack: dot radius - /dotRadius ED - abs CLW add /a ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform - pathbbox % llx lly urx ury of smallest bounding box - /y2 ED /x2 ED /y1 ED /x1 ED - y2 y1 sub a div 2 add cvi /Ny ED - x2 x1 sub a div 2 add cvi /Nx ED - clip - newpath - /yA y1 dotRadius add CLW add def - /xA0 x1 dotRadius add CLW add def - Ny { - /xA xA0 def - Nx { - newpath - xA yA dotRadius 0 360 arc - SolidDot { gsave fill grestore } if - stroke - xA a add /xA ED - } repeat - yA a add /yA ED - } repeat - grestore -} def -% -/PenroseFill {% on stack: scaling factor - dup dup scale - 1 exch div round /penroseFactor ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform pathbbox - /y2 ED - a Div ceiling cvi /x2 ED /y1 ED - a Div cvi /x1 ED /y2 y2 y1 sub def - clip - newpath - systemdict - /setstrokeadjust known { true setstrokeadjust } if - /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul} - { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall - [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto - i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25 - mul j l + S rmoveto}F i L j L stroke }F}F}F}F - grestore - pop pop -} def -% -/TruchetFill { % on stack: scaling factor - 10 dict begin - dup dup scale - 1 exch div round /penroseFactor ED - a 0 dtransform round exch round exch - 2 copy idtransform - exch Atan rotate - idtransform pop /a ED - .25 .25 itransform pathbbox - /y2 ED - a Div ceiling cvi /x2 ED /y1 ED - a Div cvi /x1 ED /y2 y2 y1 sub def - clip - newpath - systemdict - /setstrokeadjust known { true setstrokeadjust } if - /ma a neg def - /ha a 2 div def - /mha ha neg def - /tile { - rand dup 2 idiv 2 mul eq { 90 rotate } if - mha mha moveto ha mha lineto - ha ha lineto mha ha lineto -% closepath .1 setlinewidth stroke - contents - } def - /contents{ - 0 ha moveto ha 0 lineto - 0 mha moveto mha 0 lineto -% 1 setlinewidth stroke - } def - /dotiling { - f ma mul a f a mul { - /i exch def - f ma mul a f a mul { - /j exch def - gsave i j translate - tile stroke grestore - } for - } for - } def -% - /f 3 def - 5 srand dotiling - end % local user dict -} def -% -/BeginArrow { - ADict begin % hold it local, for end see EndArrow - /@mtrx CM def - gsave - 2 copy T - 2 index sub neg exch - 3 index sub exch Atan - rotate newpath -} def -% -/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict -% -/Arrow { - CLW mul add dup - 2 div /w ED - mul dup /h ED - mul /a ED - { 0 h T 1 -1 scale } if - w neg h moveto - 0 0 L w h L w neg a neg rlineto - gsave fill grestore -} def -% -/ArrowD { % the sides are drawn as curves (hv 20071211) - CLW mul add dup - 2 div /w ED - mul dup /h ED - mul /Inset ED - { 0 h T 1 -1 scale } if % changes the direction -% we use y=w/h^2 * x^2 as equation for the control points -% for the coordinates the arrow is seen from top to bottom -% the bottom (tip) is (0;0) - w neg h moveto % lower left of > - w 9 div 4 mul neg h 3 div 2 mul - w 9 div neg h 3 div - 0 0 curveto % tip of > - w 9 div h 3 div - w 9 div 4 mul h 3 div 2 mul - w h curveto % upper left of > - w neg Inset neg rlineto % move to x=0 and inset - gsave fill grestore -} def -% -/Tbar { - CLW mul add /z ED - z -2 div CLW 2 div moveto - z 0 rlineto stroke - 0 CLW moveto -} def -% -/Bracket { - CLW mul add dup CLW sub 2 div - /x ED mul CLW add /y ED /z CLW 2 div def - x neg y moveto - x neg CLW 2 div L x CLW 2 div L x y L stroke - 0 CLW moveto -} def -% -/RoundBracket { - CLW mul add dup 2 div - /x ED mul /y ED /mtrx CM def - 0 CLW 2 div T x y mul 0 ne { x y scale } if - 1 1 moveto - .85 .5 .35 0 0 0 curveto - -.35 0 -.85 .5 -1 1 curveto - mtrx setmatrix stroke 0 CLW moveto -} def -% -/SD { 0 360 arc fill } def -% -/EndDot { % DS is the dot size - { /z DS def } { /z 0 def } ifelse % outer or inner dimen - /b ED % the color definition - 0 z DS SD - b { 0 z DS CLW sub SD } if - 0 DS z add CLW 4 div sub - moveto -} def -% -/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { - /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto - load } if ] cvx newpath 3 1 roll T exec } def -% -/NArray { % holds the coordinates and on top of stack the showpoints boolean - /showpoints ED - counttomark 2 div dup cvi /n ED % n 2 div on stack - n eq not { exch pop } if % even numbers of points? delete one - ] aload /Points ED - showpoints not { Points aload pop } if -% { ] aload /Points ED } -% { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol -} def -% -/Line { - NArray n 0 eq not - { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def - n { Lineto } repeat - CP 4 2 roll ArrowB L pop pop - } if -} def -% -/LineToYAxis { - /Ox ED % Save the x origin value - NArray % all x-y pairs on stack - n { 2 copy moveto % go to current point - Ox exch Lineto % line to y-axis - pop % delete old x-value - } repeat -} def -% -/LineToXAxis{ - /Oy ED % Save the y origin value - NArray % all x-y pairs on stack - n 0 eq not - { n 1 eq { 0 0 /n 2 def } if - ArrowA - /n n 2 sub def - CP 2 copy moveto pop Oy Lineto - n { 2 copy moveto pop Oy Lineto } repeat - CP - 4 2 roll - ArrowB - 2 copy moveto pop Oy - L - pop pop } if -} def -% -/Arcto { - /a [ 6 -2 roll ] cvx def - a r - /arcto load stopped { 5 } { 4 } ifelse { pop } repeat - a -} def -% -/CheckClosed { - dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq - and { pop pop /n n 1 sub def } if -} def -% -/Polygon { - NArray n 2 eq { 0 0 /n 3 def } if - n 3 lt - { n { pop pop } repeat } - { n 3 gt { CheckClosed } if - n 2 mul -2 roll - /y0 ED /x0 ED /y1 ED /x1 ED - x1 y1 - /x1 x0 x1 add 2 div def - /y1 y0 y1 add 2 div def - x1 y1 moveto - /n n 2 sub def - n { Lineto } repeat - x1 y1 x0 y0 6 4 roll Lineto - Lineto pop pop closepath } ifelse -} def -% -/SymbolPolygon { % on stack [ x y x y ... - counttomark % number of elements - 2 add /m ED - 2 copy m 2 roll % copy last two - m 2 div cvi /n ED % n pairs - /YA ED /XA ED % the start point - n 1 sub { - /YB ED /XB ED - /XLength XB XA sub def - /YLength YB YA sub def - /PAngle YLength XLength Atan def - /XYLength XLength YLength Pyth def - /nSym XYLength SymStep Div cvi def - /Shift Symbol stringwidth pop 2 Div def - /deltaX XLength nSym Div def - /deltaY YLength nSym Div def - XA Shift sub YA Shift sub moveto - nSym { - gsave rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if - Symbol show - grestore - deltaX deltaY rmoveto - } repeat -% XB Shift sub YB Shift sub moveto Symbol show - /YA YB def /XA XB def - } repeat - pop % delete the mark symbol -} def -% -/Diamond { - /mtrx CM def - T rotate - /h ED - /w ED - dup 0 eq { pop } { CLW mul neg - /d ED - /a w h Atan def - /h d a sin Div h add def - /w d a cos Div w add def } ifelse - mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div - /ArrowA { moveto } def - /ArrowB { } def - false Line - closepath mtrx setmatrix } def -% -/Triangle { - /mtrx CM def - translate - rotate /h ED 2 div /w ED - dup CLW mul /d ED - /h h d w h Atan sin Div sub def - /w w d h w Atan 2 div dup cos exch sin Div mul sub def - mark - 0 d w neg d 0 h w d 0 d - /ArrowA { moveto } def - /ArrowB { } def - false - Line - closepath - mtrx -% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) -% setmatrix } def - setmatrix pop -} def -% DG/SR modification end -% -/CCA { - /y ED /x ED - 2 copy y sub /dy1 ED - x sub /dx1 ED - /l1 dx1 dy1 Pyth def -} def -% -/CC { - /l0 l1 def - /x1 x dx sub def - /y1 y dy sub def - /dx0 dx1 def - /dy0 dy1 def - CCA - /dx dx0 l1 c exp mul dx1 l0 c exp mul add def - /dy dy0 l1 c exp mul dy1 l0 c exp mul add def - /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def - /x2 x l0 dx mul m mul sub def - /y2 y l0 dy mul m mul sub def - /dx l1 dx mul m mul neg def - /dy l1 dy mul m mul neg def -} def -% -/IC { - /c c 1 add def - c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse - /a a 2 mul 3 div 45 cos b exp div def - CCA - /dx 0 def - /dy 0 def -} def -% -/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def -/NC { CC x1 y1 x2 y2 x y curveto } def -/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def -/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def -/NAC { x2 y2 x y curveto CC x1 y1 } def -/EAC { x2 y2 x y ArrowB curveto pop pop } def -% -/OpenCurve { - NArray n 3 lt - { n { pop pop } repeat } - { BOC /n n 3 sub def n { NC } repeat EOC } ifelse -} def -% -/CurvePath { - %% for negative SymStep we calculate the distance - SymStep 0 lt { gsave PathLength SymStep div abs /SymStep ED grestore } if - 0.5 setflat - flattenpath /z 0 def /z0 0 def - { /y1 ED /x1 ED /y2 y1 def /x2 x1 def - x1 Shift sub y1 Shift sub moveto - gsave - curveticks - { x1 y1 translate startAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { startAngle rotate Symbol show } - ifelse - grestore /z0 z def } - { /y ED /x ED PathLength@ z z0 sub SymStep ge { - x Shift sub y Shift sub moveto - gsave - curveticks - { y yOld sub x xOld sub Atan 180 sub CorrAngle sub /rotAngle ED - x y translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore /z0 z def } if - /yOld y def /xOld x def } - {} %% the lineto part - { /y y2 def /x x2 def PathLength@ - x Shift sub y Shift sub moveto - gsave - curveticks - { y yOld sub x xOld sub Atan 180 sub /rotAngle ED - x y translate rotAngle rotate - 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto - SymbolLinewidth setlinewidth stroke - } - { - x Shift sub y Shift sub moveto - rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if - Symbol show - } - ifelse - grestore - } - pathforall -% curveticks -% { gsave -% x y translate rotAngle rotate -% 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto -% SymbolLinewidth setlinewidth stroke grestore -% } if - z -} def -% -/OpenSymbolCurve { - OpenCurve - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/AltCurve { - { false NArray n 2 mul 2 roll - [ n 2 mul 3 sub 1 roll ] aload - /Points ED - n 2 mul -2 roll } - { false NArray } ifelse - n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse -} def -% -/AltOpenSymbolCurve { - AltCurve - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/ClosedCurve { - NArray n 3 lt - { n { pop pop } repeat } - { n 3 gt { CheckClosed } if - 6 copy n 2 mul 6 add 6 roll - IC CC x y moveto n { NC } repeat - closepath pop pop - } ifelse -} def -% -/ClosedSymbolCurve { - ClosedCurve - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def -/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def -/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def -% -/FontDot { - DS 2 mul dup - matrix scale matrix concatmatrix exch matrix - rotate matrix concatmatrix exch - findfont exch makefont setfont -} def -% -/Rect { - x1 y1 y2 add 2 div moveto - x1 y2 lineto - x2 y2 lineto - x2 y1 lineto - x1 y1 lineto - closepath -} def -% -/OvalFrame { - x1 x2 eq y1 y2 eq or - { pop pop x1 y1 moveto x2 y2 L } - { y1 y2 sub abs x1 x2 sub abs 2 copy gt - { exch pop } { pop } ifelse - 2 div exch { dup 3 1 roll mul exch } if - 2 copy lt { pop } { exch pop } ifelse - /b ED - x1 y1 y2 add 2 div moveto - x1 y2 x2 y2 b arcto - x2 y2 x2 y1 b arcto - x2 y1 x1 y1 b arcto - x1 y1 x1 y2 b arcto - 16 { pop } repeat - closepath - } ifelse -} def -% -/Frame { - CLW mul /a ED - 3 -1 roll - 2 copy gt { exch } if - a sub /y2 ED - a add /y1 ED - 2 copy gt { exch } if - a sub /x2 ED - a add /x1 ED - 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse -} def -% -/BezierNArray { - /f ED - counttomark 2 div dup cvi /n ED - n eq not { exch pop } if - n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat - f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse -} def -% -/OpenBezier { - BezierNArray - n 1 eq - { pop pop } - { ArrowA n 4 sub 3 idiv - { 6 2 roll 4 2 roll curveto } repeat - 6 2 roll 4 2 roll ArrowB curveto } ifelse -} def -% -/OpenSymbolBezier { - OpenBezier - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath -} def -% -/ClosedBezier { - BezierNArray - n 1 eq - { pop pop } - { moveto n 1 sub 3 idiv - { 6 2 roll 4 2 roll curveto } repeat - closepath } ifelse -} def -% -/ClosedSymbolBezier { - /f ED % save showpoints value - 2 copy /yEnd ED /xEnd ED - counttomark -2 roll 2 copy /yStart ED /xStart ED - counttomark 2 roll - f - ClosedBezier - 0.1 setflat - /Shift Symbol stringwidth pop 2 div def - CurvePath - [ xEnd yEnd xStart yStart SymbolLine -} def -% -/BezierShowPoints { - gsave - Points aload length 2 div cvi /n ED - moveto - n 1 sub { lineto } repeat - CLW 2 div SLW [ 4 4 ] 0 setdash stroke - grestore -} def -% -/Parab { - /y0 ED /x0 ED /y1 ED /x1 ED - /dx x0 x1 sub 3 div def - /dy y0 y1 sub 3 div def - x0 dx sub y0 dy add x1 y1 ArrowA - x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB - curveto - /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def -} def -% -/Parab1 { % 1 end | 0 SP - /ySP ED /xSP ED /y1 ED /x1 ED - /dx xSP x1 sub 3 div def - /dy ySP y1 sub 3 div def - newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto - x1 ySP lineto closepath clip - currentpoint - newpath moveto - xSP dx sub ySP dy add x1 y1 ArrowA - xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB - curveto - /Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def -} def -% -/Grid { - newpath - /a 4 string def - /b ED % psk@gridlabels in pt - /c ED % { \pst@usecolor\psgridlabelcolor } - /n ED % psk@griddots - cvi dup 1 lt { pop 1 } if - /s ED % \psk@subgriddiv - s div dup 0 eq { pop 1 } if - /dy ED s div dup 0 eq { pop 1 } if % \pst@number\psyunit abs - /dx ED dy div round dy mul % \pst@number\psxunit abs - /y0 ED dx div round dx mul - /x0 ED dy div round cvi - /y2 ED dx div round cvi - /x2 ED dy div round cvi - /y1 ED dx div round cvi - /x1 ED - /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def - /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def - b 0 gt { - /z1 b 4 div CLW 2 div add def -% /Helvetica findfont b scalefont setfont - /b b .95 mul CLW 2 div add def } if - systemdict /setstrokeadjust known - { true setstrokeadjust /t { } def } - { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add - exch itransform } bind def } ifelse - gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse - /i x1 def - /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def - /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def - x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if - { i dx mul dup y0 moveto - b 0 gt - { gsave c i a cvs dup stringwidth pop - /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse - h 0 gt {b neg}{z1} ifelse - rmoveto show grestore } if - dup t f moveto - g t L stroke - /i i w add def - } repeat - grestore - gsave - n 0 gt - % DG/SR modification begin - Nov. 7, 1997 - Patch 1 - %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } - { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } - % DG/SR modification end - { 2 setlinecap } ifelse - /i y1 def - /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def - /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def - y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if - { newpath i dy mul dup x0 exch moveto - b 0 gt { gsave c i a cvs dup stringwidth pop - /z2 ED - w 0 gt {z1 z2 add neg} {z1} ifelse - h 0 gt {z1} {b neg} ifelse - rmoveto show grestore } if - dup f exch t moveto - g exch t L stroke - /i i h add def - } repeat - grestore -} def -% -/ArcArrow { - /d ED /b ED /a ED - gsave - newpath 0 -1000 moveto clip - newpath - 0 1 0 0 b - grestore - c mul - /e ED - pop pop pop r a e d PtoC y add exch x add - exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c - mul neg d -} def -% -/Ellipse { - /rotAngle ED - /mtrx CM def - T - rotAngle rotate - scale 0 0 1 5 3 roll arc - mtrx setmatrix -} def -% -/ArcAdjust { %%%% Vincent Guirardel -% given a target length (targetLength) and an initial angle (angle0) [in the stack], -% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). -% This computes an angle t such that (x0,y0) is at distance -% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). -% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 -% contrary to TvZ's code. -% To achieve, this, one iterates the following process: start with some angle t, -% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. -% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. -% -% Another difference with TvZ's code is that we need d (=add/sub) to be defined. -% the value of d = add/sub is used to know on which side we have to move. -% It is only used in the initialisation of the angle before the iteration. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Input stack: 1: target length 2: initial angle -% variables used : rx, ry, d (=add/sub) -% - /targetLength ED /angle0 ED - /x0 rx angle0 cos mul def - /y0 ry angle0 sin mul def -% we are looking for an angle t such that (x0,y0) is at distance targetLength -% from the point M(t)=(rx*cos(t),ry*sin(t))) -%initialisation of angle (using 1st order approx = TvZ's code) - targetLength 57.2958 mul - angle0 sin rx mul dup mul - angle0 cos ry mul dup mul - add sqrt div -% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees -% (if the ellipse is very curved at the point where we draw the arrow, % -% the value can be much more than 360 degrees !) -% this should avoid going on the wrong side (more than 180 degrees) or go near -% a bad attractive point (at 180 degrees) - dup 90 ge { pop 90 } if - angle0 exch d % add or sub -% maximum number of times to iterate the iterative procedure: -% iterative procedure: takes an angle t on top of stack, computes a -% better angle (and put it on top of stack) - 30 { dup -% compute distance D between (x0,y0) and M(t) - dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt -% if D almost equals targetLength, we stop - dup targetLength sub abs 1e-5 le { pop exit } if -% stack now contains D t -% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: -% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) - exch dup cos rx mul x0 sub exch sin ry mul y0 sub -% stack contains: y(t)-y0, x(t)-x0, d - 2 index Div targetLength mul y0 add ry Div exch - 2 index Div targetLength mul x0 add rx Div -% stack contains x(t')/rx , y(t')/ry , d -% now compute t', and remove D from stack - atan exch pop - } repeat -% we don't look at what happened... in particular, if targetLength is greater -% than the diameter of the ellipse... -% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... -% after iteration, stack contains an angle t such that M(t) is the tail of the arrow -% to give back the result as a an angle relative to angle0 we could add the following line: -% angle0 sub 0 exch d -% -% begin bug fix 2006-01-11 -% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180 -%(we don't want to make the ellipse turn more or less than it should)... -dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse -% end bug fix -} def -% -/EllipticArcArrow { - /d ED % is add or sub - /b ED % arrow procedure - /a1 ED % angle - gsave - newpath - 0 -1000 moveto - clip % Set clippath far from arrow. - newpath - 0 1 0 0 b % Draw arrow to determine length. - grestore -% Length of arrow is on top of stack. Next 3 numbers are junk. -% - a1 exch ArcAdjust % Angular position of base of arrow. - /a2 ED - pop pop pop - a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig - a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig - a1 cos rx mul xOrig add % - a1 sin ry mul yOrig add % -% Now arrow tip coor and base coor are on stack. - b pop pop pop pop % Draw arrow, and discard coordinates. - a2 CLW 8 div -% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) - 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse - ArcAdjust -% resets original value of d - 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. -} def -%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% -% -/Rot { CP CP translate 3 -1 roll neg rotate NET } def -% -/RotBegin { - tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if - /TMatrix [ TMatrix CM ] cvx def - /a ED - a Rot /RAngle [ RAngle dup a add ] cvx def -} def -% -/RotEnd { - /TMatrix [ TMatrix setmatrix ] cvx def - /RAngle [ RAngle pop ] cvx def -} def -% -/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def -/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def -/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def -% -/Uput { - /a ED - add 2 div /h ED 2 - div /w ED - /s a sin def - /c a cos def - /b s abs c abs 2 copy gt dup - /q ED - { pop } { exch pop } ifelse def - /w1 c b div w mul def - /h1 s b div h mul def - q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse -} def -% -/UUput { - /z ED - abs /y ED - /x ED - q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse - { x x mul y y mul sub z z mul add sqrt z add } - { q { x s div } { x c div } ifelse abs - } ifelse - a PtoC - h1 add exch - w1 add exch -} def -% -/BeginOL { - dup (all) eq exch TheOL eq or - { IfVisible not { Visible /IfVisible true def } if } - { IfVisible { Invisible /IfVisible false def } if } ifelse -} def -% -/InitOL { - /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def - /Visible { CP OLUnit idtransform T moveto } def - /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def - /BOL { BeginOL } def - /IfVisible true def -} def -% -%%%%%%%%%%%%%%%%% tools %%%%%%%%%%%%%%%%%%%%%%%%% -%%%%% ### bubblesort ### -%% syntax : array bubblesort --> array2 trie par ordre croissant -%% code de Bill Casselman -%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ -/bubblesort { -4 dict begin - /a exch def - /n a length 1 sub def - n 0 gt { - % at this point only the n+1 items in the bottom of a remain to - % the sorted largest item in that blocks is to be moved up into - % position n - n { - 0 1 n 1 sub { - /i exch def - a i get a i 1 add get gt { - % if a[i] > a[i+1] swap a[i] and a[i+1] - a i 1 add - a i get - a i a i 1 add get - % set new a[i] = old a[i+1] - put - % set new a[i+1] = old a[i] - put - } if - } for - /n n 1 sub def - } repeat - } if - a -end -} def -% -% -/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 - 0 1 index { length add } forall - string - 0 3 2 roll - { 3 copy putinterval length add }forall - pop -} bind def -% -/dot2comma {% on stack a string (...) - 2 dict begin - /Output exch def - 0 1 Output length 1 sub { - /Index exch def - Output Index get 46 eq { Output Index 44 put } if - } for - Output - end -} def -% -end -%-----------------------------------------------------------------------------% -% -% END pstricks.pro - -%%EndProcSet -%%BeginProcSet: pst-algparser.pro 0 0 -% $Id: pst-algparser.pro 594 2011-10-31 18:13:18Z herbert $ -%% -%% PostScript prologue for PSTricks algorithm parser -%% Version 0.04, 2011/10/21 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%%-----------------------------------------------------------------------------% -% -/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez -% -/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin -% -% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.13 -% -% 09/2011 DR factorial with ! added -% -% E->T|E+T -% T->FS|T*FS -% FS -> F | +FS | -FS -% F->P|F^SF|P! -% P->(E)|literal -% literal->number|var|var[E]|func(params) -% params->E|E,param -% number->TOBEFINISHED -% -%% E expression, T term, SF signed factor, F factor, P power -% -%% parser -% -%% str -% -%% C->E<condition_operators>E -%% STR index -> STR index+lenExpr -/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def -% -%% analyze Expression List (separator , or | ) -%% STR index -> STR index+lenExpr -%% /AnalyzeListOfE { -%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar -%% NextNonBlankChar dup 0 eq { pop exit } if -%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if -%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop -%% AnalyzeListOfEPostHook -%% } def -/AnalyzeListOfE { - /NotFirst false def - { NextNonBlankChar pop AnalyzeExpr - NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse - dup Strlen eq { exit } if NextNonBlankChar - dup 44 ne 1 index 124 ne and - { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } - if pop 1 add } loop - AnalyzeListOfEPostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% E->T|E+T -%% STR index -> STR index+lenExpr -/AnalyzeExpr { - AnalyzePreHook AnalyzeTerm IsEndingExpr - { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } - { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop } - ifelse - AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% T->FS|T*FS -%% STR index -/AnalyzeTerm { - AnalyzePreHook AnalyzeSignedFactor IsEndingTerm - { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } - { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop } - ifelse - AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% FS -> F | +FS | -FS -%% STR index -/AnalyzeSignedFactor { - AnalyzePreHook 2 copy get dup IsUnaryOp - { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp } - { pop AnalyzeFactor } - ifelse AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% F->P|F^P|P! -%% STR index -/AnalyzeFactor { - AnalyzePreHook AnalyzePower IsEndingFactor - { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse } - { { dup 33 eq%% is there a ! DR 09/2011 - { pop 1 add NextNonBlankChar pop EvalFactorial } - { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower } - ifelse - IsEndingFactor { pop exit } if } loop } - ifelse AnalyzePostHook -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% P->(E)|literal -%% STR index -/AnalyzePower { - %% depending of first char either a number, or a literal - 2 copy get dup 40 eq%%an open par - { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop } - { AnalyzeLiteral } - ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index STR[index] -> STR index -%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def -/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% recognize + or - -%% chr -> T/F -/IsUnaryOp { dup 43 eq exch 45 eq or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a number can contain only : 0123456789. -%% chr -> T/F -/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index -> STR index number -%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? -%% STR index -> STR index' number -/ReadNumber { - exch dup 3 -1 roll dup 3 1 roll - %%read mantissa - { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop - dup 101 eq exch 69 eq or - %%% there is a "e" or "E" -> read exponant - { 1 add 2 copy get dup IsUnaryOp - { pop 1 add 2 copy get } if - { IsNumber not { exit } if 1 add 2 copy get } loop } - if - dup 4 1 roll - 3 -1 roll exch 1 index sub getinterval -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a number can contain only : 0123456789. -%% chr -> T/F -/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index -> STR index number -%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)? -%% STR index -> STR index' number -/ReadCondOp { - NextNonBlankChar 1 index 4 1 roll - { IsCondOp not { exit } if 1 add 2 copy get } loop - 2 copy 5 -1 roll - exch 1 index sub getinterval 3 1 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a literal can contain only : 0123456789. -%% chr -> T/F -/IsLiteral {% - dup 48 ge exch dup 57 le 3 -1 roll and exch - dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch - dup 97 ge exch 122 le and or } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)? -%% STR index -> literal STR index' nextchr -/ReadLiteral { - exch dup 3 -1 roll dup 3 1 roll - %%read literal core - { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop - 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or a clpar -%% STR index -> STR index STR[index] T/F -/IsEndingExpr {% - 2 copy dup Strlen eq - %% if end of str is reached -> end ! - { pop pop 0 true } - %% ending chr -> clpar, comma, |, <, >, =, !, - {get dup dup 41 eq - exch dup 124 eq - exch dup 93 eq - exch dup 44 eq - exch dup 30 eq - exch dup 60 ge exch 62 le and or or or or or} - ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or a +- -%% STR index -> STR index STR[index] T/F -/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or */ -%% STR index -> STR index STR[index] T/F -/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% expr is ended by end of str or ^ -%% STR index -> STR index STR[index] T/F -/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% STR index -> STR index STR[index] -/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def -/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def -%%%%%%%%%%%%%%%%%%%%%%%% -%% DEBUG -/BRK {false} def -/BRKtrue {/BRK true def} def -/BRKStop {BRK {BRKtoto} if } def -/BRKEvalStop {BRK exch if } def -/BRKBRK2true {BRK {BRK2true} if } def -/BRK2 {false} def -/BRK2true {/BRK2 true def} def -/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def -end -% -%-------------------------------------------------------------------------------% -% -/tx@AlgToPs 12 dict def tx@AlgToPs begin -% -%% algExpr -> PSVector -/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def -/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def -/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def -/Strlen 0 def -/EvalListOfExpr {} def% -/EvalNumber {% - ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx - exch 1 add array astore def NextNonBlankChar pop } def -/EvalAddSub {% - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll - 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def -} def -/EvalMulDiv {% - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll - 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def -} def -/EvalPower {% - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll - pop /exp cvx exch 1 add array astore def -} def -/EvalFactorial {% DR 09/2011 - /ExpressionVector ExpressionVector aload length - /fact cvx exch 1 add array astore def -} def -/EvalLiteral {% - ReadLiteral - dup 40 eq%%% there is an open par -> function call - { pop 2 index - dup (Sum) eq { EvalSum } - { dup (IfTE) eq { EvalCond } - { dup (Derive) eq { pop EvalDerive } - { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc - /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx - exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse } - { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def - dup 91 eq%%% there is an open bracket -> vector element - { pop 1 add NextNonBlankChar pop AnalyzeExpr - /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add } - { pop NextNonBlankChar pop } - ifelse} - ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% the derive function : Derive(n,f(x)) -%% firstparindex lastparindex -> -/EvalDerive { - %% manage the function descripiton - 1 add ReadNumber 3 1 roll NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - 1 add NextNonBlankChar pop - 3 -1 roll cvi - dup 0 eq - { pop AnalyzeExpr 3 -1 roll pop 1 add } - { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll - { (x) tx@Derive begin Derive end } repeat - ExpressionVector exch /ExpressionVector [] def - AlgToPs aload length - /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def - l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add - 1 index length /Strlen exch def } ifelse -} def -/EvalSum {% - pop 1 add NextNonBlankChar pop - %% read the variable name - ReadLiteral pop NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if - %% read the initial value - 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - %% read the increment value - 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - %% read the limit value - 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll - 5 -1 roll 4 add array astore def - %% keep ExpressionVector for later and create a new one for internal Sum computation - ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def - 1 add NextNonBlankChar pop AnalyzeExpr - %% add each term - /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def - /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add - array astore def 3 -1 roll pop 1 add -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Convert to radians if trigo function call -%% (name) -> -/TrigoFunc { - dup (cos) eq 1 index (sin) eq or exch (tan) eq or - { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add - array astore def - } if -} def -/EvalCond {% - pop 1 add AnalyzeCond NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if - ExpressionVector 3 1 roll /ExpressionVector [] def - 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def - NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if - 1 add AnalyzeExpr - NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if - ExpressionVector - /ExpressionVector 6 -1 roll aload length dup - 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def - 1 add 3 -1 roll pop -} def -%% CondOp STR index -/EvalCondOp {% - 3 -1 roll - dup (=) eq { /eq } {% - dup (<) eq { /lt } {% - dup (>) eq { /gt } {% - dup (>=) eq { /ge } {% - dup (<=) eq { /ge } {% - dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator } - ifelse } ifelse } ifelse } ifelse } ifelse } ifelse - cvx exch pop - /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def -/EvalUnaryOp { - 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% H O O K S -/AnalyzePreHook {} bind def -/PreEvalHook {} bind def -/AnalyzeListOfEPostHook {} bind def -/AnalyzePostHook {} def -/RollOp { 3 1 roll } bind def -end %tx@CoreAnalyzerDict -% -%--------------------------------------------------------------------% -% -/tx@Derive 41 dict def tx@Derive begin -%%increase ^^ for each function added -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% algExpr variable -> PSVector -/Derive {% - 10240 string 3 1 roll 0 3 1 roll - /Variable exch def - tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end -} def -/Strlen 0 def -/InitParser { dup length /Strlen exch def 0 } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% algExpr variable index -> PSVector -/DeriveIndexed {% - 3 1 roll 10240 string 3 1 roll 0 3 1 roll - /Variable exch def - tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u,v)'=-(u',v') -/EvalListOfExpr {% - 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe - 2 copy 7 -1 roll dup length 4 1 roll putinterval add - 6 -2 roll pop pop - 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (-u)'=-(u') -/EvalUnaryOp { - 4 -2 roll 4 index (0) eq - { (0) StrConcat 7 -1 roll pop } - { 7 -1 roll 45 eq - { AddSub AddOpPar true } { false } ifelse - 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (number)'=0 -/EvalNumber { ReadNumber (0) 6 2 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u+v)'=u'+v' -/EvalAddSub {% - 7 index dup (0) eq - { pop true }%% du=0 nothing added - { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false } - ifelse - 5 index dup (0) eq - { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0 - { exch - { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added - { 5 -2 roll 7 index 43 eq%%something yet added - { AddAdd false } { AddSub AddOpPar true } ifelse } - ifelse 11 1 roll - 3 -1 roll StrConcat 10 -1 roll { AddClPar } if - 2 copy pop 0 6 2 roll GetIntervalNewStr } - ifelse - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u*v)' or (u/v)' -/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u*v)'=u'*v+u*v' -/EvalMul {% - 4 -2 roll 7 index dup (0) eq - { pop false }%%du=0 - { (1) eq%%du=1 - { false } - { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse - 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if - true }%%du!=0 - ifelse - 5 1 roll 5 index (0) eq - { 5 -1 roll not { (0) StrConcat } if }%%dv=0 - { 5 -1 roll { AddAdd } if - 4 index (1) eq - { 8 index StrConcat } - { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } - ifelse - }%%dv!=0 - ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u/v)'=(u'*v-u*v')/v^2 -/EvalDiv {% - 4 -2 roll - 4 index (0) eq%%dv=0 -> u'/v - { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse } - { 7 index dup (0) eq - { pop }%%du=0 - { (1) eq%%du=1 - { false } - { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse - 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0 - ifelse - AddSub - 4 index (1) eq - { 8 index StrConcat } - { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar } - ifelse - %}%%dv!=0 - 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar - AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add } - ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% str1 index str2 -> str1 index -/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def -/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u) -/EvalPower {% - 4 -2 roll 7 index (0) eq - {%%if du=0 then (u^v)'=v'ln(u)u^v - 4 index (0) eq - { (0) StrConcat }%%if dv=0 then (u^v)'=0 - { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if - 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if - AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse - } - {%%du!=0 - 4 index (0) eq - {%%if dv=0 then (u^v)'=vu'u^(v-1) - 5 index dup IsStrNumber - { dup (0) eq - { StrConcat } - { dup dup (1) eq exch (1.0) eq or - { StrConcat } - { StrConcat - 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1 - { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006 - (*\() StrConcat 8 index StrConcat (\)) StrConcat - 5 index dup dup (2) eq exch (2.0) eq or - { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse } - { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat - 5 index StrConcat (-1\)) StrConcat } ifelse - } - {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u) - 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if - AddOpPar 5 index StrConcat (\)*\() StrConcat - 8 index StrConcat (\)^\() StrConcat - 5 index StrConcat (-1\)+\() StrConcat - 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if - 8 index StrConcat (\)^\() StrConcat - 5 index StrConcat (\)*ln\() StrConcat - 8 index StrConcat AddClPar - } ifelse - } ifelse - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% No derivative for factorial ! only cst => null derivative -/EvalFactorial {% DR 09/2011 - 4 index (0) eq - { (0) mark 8 -2 roll cleartomark 2 index 7 index dup 4 index exch sub getinterval exch 6 2 roll } - { DERIVATIVE_ENGINE_ERROR_no_variable_in_factorial } ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% str -> true/false -/IsStrNumber {% - true exch - { dup 48 lt exch dup 57 gt 3 -1 roll or - exch dup 46 ne%%. - exch dup 43 ne%%+ - exch 45 ne%%- - and and and { pop false } if } forall -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% literal switch -> func call, vector, variables -/EvalLiteral {% - ReadLiteral dup 40 eq%%% there is an open par -> function call - { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec } - { dup 91 eq%%% there is an open bracket -> vector element - { DERIVATIVE_ENGINE_ERROR_vector_not_yet_implemented } - { pop EvalVariable } - ifelse } - ifelse -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% first last parpos Expr[first:parpos-1] -> -/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (f(u))'=u'f'(u) -/EvalFunc { - 4 2 roll 4 index (1) ne - { AddOpPar 4 index StrConcat (\)*) StrConcat } if - (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Func derivative -> Eval<func> -/EvalFunc_sin {% - PreCommonFunc - { (cos\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_cos {% - PreCommonFunc - { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_tan {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if - PostCommonFunc } def -/EvalFunc_asin {% - PreCommonFunc - { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_acos {% - PreCommonFunc - { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_atg {% - PreCommonFunc - { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_ln {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_exp {% - PreCommonFunc - { (exp\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_EXP {% - PreCommonFunc - { (EXP\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_sqrt {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_Fact {% - PreCommonFunc { DERIVATIVE_ENGINE_ERROR_no_variable_expression_in_Fact } if - PostCommonFunc } def -/EvalFunc_sh {% - PreCommonFunc - { (ch\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_ch {% - PreCommonFunc - { (sh\() StrConcat 5 index StrConcat AddClPar } if - PostCommonFunc } def -/EvalFunc_th {% - PreCommonFunc - { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if - PostCommonFunc } def -/EvalFunc_Argsh {% - PreCommonFunc - { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_Argch {% - PreCommonFunc - { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if - PostCommonFunc } def -/EvalFunc_Argth {% - PreCommonFunc - { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if - PostCommonFunc } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -/PreCommonFunc { - 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop - 4 2 roll 4 index (0) eq - { (0) StrConcat false } - { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse -} def -/PostCommonFunc { - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -/EvalFunc_Derive {% - 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs - 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add - 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar - 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval - exch 6 2 roll } def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% literal switch -> func call, vector, variables -/EvalFunc_Sum {% - 1 add NextNonBlankChar pop - %% read the variable name - ReadLiteral pop 3 -1 roll pop NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if - %% read the initial value - 1 add NextNonBlankChar pop ReadNumber pop - 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if - %% read the increment value - 1 add NextNonBlankChar pop ReadNumber pop - 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if - %% read the limit value - 1 add NextNonBlankChar pop ReadNumber pop - 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if - 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop - 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat - 4 index StrConcat AddClPar - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% literal switch -> func call, vector, variables -/EvalFunc_IfTE {% - 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond - NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if - 1 add NextNonBlankChar pop dup 5 1 roll - AnalyzeExpr NextNonBlankChar - 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if - 1 add NextNonBlankChar pop - AnalyzeExpr 1 add NextNonBlankChar pop - 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat - 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar - 2 copy pop 0 6 2 roll GetIntervalNewStr - mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% advance in str until a comma is found (no error detection!) -%% str index -> str index' -/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Convert to radians if trigo function call -%% (name) -> -/TrigoFunc { - dup (cos) eq 1 index (sin) eq or exch (tan) eq or - { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add - array astore def - } if -} def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% No derivative for condition.... -/EvalCondOp { 3 -1 roll pop } bind def -/PutIntervalOneAdd {putinterval 1 add} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add open parenthesis in string at the given index -%% str index -> str index+1 -/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add close parenthesis in string at the given index -%% str index -> str index+1 -/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add 0 in string at the given index -%% str index -> str index+1 -/AddZero {2 copy (0) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add open parenthesis in string at the given index -%% str index -> str index+1 -/AddMul {2 copy (*) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add open parenthesis in string at the given index -%% str index -> str index+1 -/AddDiv {2 copy (/) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add a plus sign in string at the given index -%% str index -> str index+1 -/AddAdd {2 copy (+) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add a minus sign in string at the given index -%% str index -> str index+1 -/AddSub {2 copy (-) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add a pipe sign in string at the given index -%% str index -> str index+1 -/AddPipe {2 copy (|) PutIntervalOneAdd} bind def -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% H O O K S -/AnalyzePreHook { dup 5 1 roll } bind def -/PreEvalHook {} def -/AnalyzePostHook { 7 -1 roll pop } bind def -/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def -/RollOp { 5 1 roll } bind def -end%%%tx@CoreAnalyzerDict -/tx@AddMathFunc 12 dict def tx@AddMathFunc begin -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% NEW FUNC -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2)) -%% x -> theta -/asin {% - dup abs 1 gt { EQDFasinrangeerror } if - dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad -} def -%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x) -%% x -> theta -/acos {% - dup abs 1 gt { EQDFacosrangeerror } if - dup dup mul 1 exch sub sqrt exch atan DegtoRad -} def -%% function arctangent in radians -%% x -> theta -/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def -%% HYPERBOLIC FUNCTIONS -/sh { dup Ex exch neg Ex sub 2 div } def -/ch { dup Ex exch neg Ex add 2 div } def -/th { dup sh exch ch div } def -/Argsh { dup dup mul 1 add sqrt add ln } def -/Argch { dup dup mul 1 sub sqrt add ln } def -/Argth { dup 1 add exch 1 exch sub div ln 2 div } def -%% modified exponential funtion for 0 -%% x n -> x^n -/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def -%% modified exponential funtion for 0 -%% x -> e^x -/Ex { Euler exch exp } bind def -%% -%% factorial function -%% n -> n! -/Fact { 1 exch 2 exch 1 exch { mul } for } bind def -/fact { Fact } bind def -/! { Fact } bind def -end -% -% END pst-algparser.pro - -%%EndProcSet -%%BeginProcSet: pst-tools.pro 0 0 -% $Id: pst-tools.pro 622 2012-01-01 15:36:14Z herbert $ -% -%% PostScript tools prologue for pstricks.tex. -%% Version 0.02, 2012/01/01 -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -% -% -/Pi2 1.57079632679489661925640 def -/factorial { % n on stack, returns n! - dup 0 eq { 1 }{ - dup 1 gt { dup 1 sub factorial mul } if } - ifelse } def -% -/MoverN { % m n on stack, returns the binomial coefficient m over n - 2 dict begin - /n exch def /m exch def - n 0 eq { 1 }{ - m n eq { 1 }{ - m factorial n factorial m n sub factorial mul div } ifelse } ifelse - end -} def -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% subroutines for complex numbers, given as an array [a b] -% which is a+bi = Real+i Imag -% -/cxadd { % [a1 b1] [a2 b2] = [a1+a2 b1+b2] - dup 0 get % [a1 b1] [a2 b2] a2 - 3 -1 roll % [a2 b2] a2 [a1 b1] - dup 0 get % [a2 b2] a2 [a1 b1] a1 - 3 -1 roll % [a2 b2] [a1 b1] a1 a2 - add % [a2 b2] [a1 b1] a1+a2 - 3 1 roll % a1+a2 [a2 b2] [a1 b1] - 1 get % a1+a2 [a2 b2] b1 - exch 1 get % a1+a2 b1 b2 - add 2 array astore -} def -% -/cxneg { % [a b] - dup 1 get % [a b] b - exch 0 get % b a - neg exch neg % -a -b - 2 array astore -} def -% -/cxsub { cxneg cxadd } def % same as negative addition -% -% [a1 b1][a2 b2] = [a1a2-b1b2 a1b2+b1a2] = [a3 b3] -/cxmul { % [a1 b1] [a2 b2] - dup 0 get % [a1 b1] [a2 b2] a2 - exch 1 get % [a1 b1] a2 b2 - 3 -1 roll % a2 b2 [a1 b1] - dup 0 get % a2 b2 [a1 b1] a1 - exch 1 get % a2 b2 a1 b1 - dup % a2 b2 a1 b1 b1 - 5 -1 roll dup % b2 a1 b1 b1 a2 a2 - 3 1 roll mul % b2 a1 b1 a2 b1a2 - 5 -2 roll dup % b1 a2 b1a2 b2 a1 a1 - 3 -1 roll dup % b1 a2 b1a2 a1 a1 b2 b2 - 3 1 roll mul % b1 a2 b1a2 a1 b2 a1b2 - 4 -1 roll add % b1 a2 a1 b2 b3 - 4 2 roll mul % b1 b2 b3 a1a2 - 4 2 roll mul sub % b3 a3 - exch 2 array astore -} def -% -% [a b]^2 = [a^2-b^2 2ab] = [a2 b2] -/cxsqr { % [a b] square root - dup 0 get exch 1 get % a b - dup dup mul % a b b^2 - 3 -1 roll % b b^2 a - dup dup mul % b b^2 a a^2 - 3 -1 roll sub % b a a2 - 3 1 roll mul 2 mul % a2 b2 - 2 array astore -} def -% -/cxsqrt { % [a b] -% dup cxnorm sqrt /r exch def -% cxarg 2 div RadtoDeg dup cos r mul exch sin r mul cxmake2 - cxlog % log[a b] - 2 cxrdiv % log[a b]/2 - aload pop exch % b a - 2.781 exch exp % b exp(a) - exch cxconv exch % [Re +iIm] exp(a) - cxrmul % -} def -% -/cxarg { % [a b] - aload pop % a b - exch atan % arctan b/a - DegtoRad % arg(z)=atan(b/a) -} def -% -% log[a b] = [a^2-b^2 2ab] = [a2 b2] -/cxlog { % [a b] - dup % [a b][a b] - cxnorm % [a b] |z| - log % [a b] log|z| - exch % log|z|[a b] - cxarg % log|z| Theta - cxmake2 % [log|z| Theta] -} def -% -% square of magnitude of complex number -/cxnorm2 { % [a b] - dup 0 get exch 1 get % a b - dup mul % a b^2 - exch dup mul add % a^2+b^2 -} def -% -/cxnorm { % [a b] - cxnorm2 sqrt -} def -% -/cxconj { % conjugent complex - dup 0 get exch 1 get % a b - neg 2 array astore % [a -b] -} def -% -/cxre { 0 get } def % real value -/cxim { 1 get } def % imag value -% -% 1/[a b] = ([a -b]/(a^2+b^2) -/cxrecip { % [a b] - dup cxnorm2 exch % n2 [a b] - dup 0 get exch 1 get % n2 a b - 3 -1 roll % a b n2 - dup % a b n2 n2 - 4 -1 roll exch div % b n2 a/n2 - 3 1 roll div % a/n2 b/n2 - neg 2 array astore -} def -% -/cxmake1 { 0 2 array astore } def % make a complex number, real given -/cxmake2 { 2 array astore } def % dito, both given -% -/cxdiv { cxrecip cxmul } def -% -% multiplikation by a real number -/cxrmul { % [a b] r - exch aload pop % r a b - 3 -1 roll dup % a b r r - 3 1 roll mul % a r b*r - 3 1 roll mul % b*r a*r - exch 2 array astore % [a*r b*r] -} def -% -% division by a real number -/cxrdiv { % [a b] r - 1 exch div % [a b] 1/r - cxrmul -} def -% -% exp(i theta) = cos(theta)+i sin(theta) polar<->cartesian -/cxconv { % theta - RadtoDeg dup sin exch cos cxmake2 -} def - -%%%%% ### bubblesort ### -%% syntax : array bubblesort --> array2 trie par ordre croissant -%% code de Bill Casselman -%% http://www.math.ubc.ca/people/faculty/cass/graphics/text/www/ -/bubblesort { % on stack must be an array [ ... ] -4 dict begin - /a exch def - /n a length 1 sub def - n 0 gt { - % at this point only the n+1 items in the bottom of a remain to - % the sorted largest item in that blocks is to be moved up into - % position n - n { - 0 1 n 1 sub { - /i exch def - a i get a i 1 add get gt { - % if a[i] > a[i+1] swap a[i] and a[i+1] - a i 1 add - a i get - a i a i 1 add get - % set new a[i] = old a[i+1] - put - % set new a[i+1] = old a[i] - put - } if - } for - /n n 1 sub def - } repeat - } if - a % return the sorted array -end -} def -% -/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422 - 0 1 index { length add } forall - string - 0 3 2 roll - { 3 copy putinterval length add }forall - pop -} bind def -% -/dot2comma {% on stack a string (...) - 2 dict begin - /Output exch def - 0 1 Output length 1 sub { - /Index exch def - Output Index get 46 eq { Output Index 44 put } if - } for - Output - end -} def -% -%-----------------------------------------------------------------------------% -% END pst-tools.pro - -%%EndProcSet -%%BeginProcSet: pst-dots.pro 0 0 -% $Id: pst-dots.pro 130 2009-08-27 08:55:03Z herbert $ -% -%% PostScript prologue for pstricks.tex. -%% Version 2.02, 2009/06/16 -%% -%% For distribution, see pstricks.tex. -%% -%% Timothy Van Zandt <tvz@Princeton.EDU> -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%% Modified by Etienne Riga - Dec. 16, 1999 -%% Modified by Etienne Riga - 2005/01/01 (er) -%% to add /Diamond, /SolidDiamond and /BoldDiamond -%% Modified by Herbert Voss (hv) - 2008/04/17 -% -10 dict dup begin % hold local - /FontType 3 def - /FontMatrix [.001 0 0 .001 0 0] def -% /FontBBox [-571.5 -742.5 571.5 742.5] def % changed to next line 20060616 hv - /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph - /Encoding 256 array def - 0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef - Encoding % replace with given dot names - dup (b) 0 get /Bullet put % get the numerical position of b in ASCII -% % and save /Bullet at this place in Encoding - dup (c) 0 get /Circle put - dup (C) 0 get /BoldCircle put % 67 - dup (u) 0 get /SolidTriangle put - dup (t) 0 get /Triangle put - dup (T) 0 get /BoldTriangle put - dup (r) 0 get /SolidSquare put - dup (s) 0 get /Square put - dup (S) 0 get /BoldSquare put - dup (q) 0 get /SolidPentagon put - dup (p) 0 get /Pentagon put - dup (P) 0 get /BoldPentagon put -%%% - dup (k) 0 get /Asterisk put - dup (K) 0 get /BoldAsterisk put - dup (J) 0 get /SolidAsterisk put - dup (h) 0 get /Hexagon put - dup (H) 0 get /BoldHexagon put - dup (G) 0 get /SolidHexagon put - dup (f) 0 get /Octogon put % 2008-04-18 hv - dup (F) 0 get /BoldOctogon put % 2008-04-18 hv - dup (g) 0 get /SolidOctogon put % 2008-04-18 hv - dup (a) 0 get /Add put - dup (A) 0 get /BoldAdd put % 65 - dup (x) 0 get /Mul put - dup (X) 0 get /BoldMul put - dup (m) 0 get /Oplus put - dup (M) 0 get /BOplus put - dup (e) 0 get /SolidOplus put - dup (n) 0 get /Otimes put - dup (N) 0 get /BOtimes put - dup (E) 0 get /SolidOtimes put - dup (i) 0 get /Bar put - dup (I) 0 get /BoldBar put - dup (l) 0 get /SolidDiamond put - dup (d) 0 get /Diamond put - (D) 0 get /BoldDiamond put -%%% -/CharProcs 47 dict def -CharProcs begin - /CirclePath {0 0 500 0 360 arc closepath} def - /Bullet {CirclePath fill} def - /Circle {CirclePath .9 .9 scale CirclePath eofill} def - /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def - /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def - /SolidTriangle {TrianglePath fill} def - /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def - /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def - /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def - /SolidSquare {SquarePath fill} def - /Square {SquarePath .89 .89 scale SquarePath eofill} def - /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def - /PentagonPath { - -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto - 0 574.7 lineto -546.6 177.6 lineto closepath - } def - /SolidPentagon {PentagonPath fill} def - /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def - /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def -%-------------- hv begin 2004/07/25 from: er 2003/03/24 - /HexagonPath { - 0 550 moveto -476 275 lineto -476 -275 lineto - 0 -550 lineto 476 -275 lineto 476 275 lineto closepath - } def - /SolidHexagon {HexagonPath fill} def - /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def - /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def -% 2008-04-18 hv - /OctogonPath { - 550 dup 22.5 tan mul dup neg dup add /xMove exch def - exch moveto 7 { xMove 0 rlineto 45 rotate } repeat closepath } def - /SolidOctogon { OctogonPath fill } def - /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def - /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def -% - /AsteriskPath { - 20 0 moveto 10 250 180 500 0 500 curveto - -180 500 -10 250 -20 0 curveto closepath - } def - /Asterisk { - AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath - 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill - } def -% - /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def - /BoldAsteriskPath { - 50 30 cos 100 mul moveto Basterp - 60 rotate Basterp 60 rotate Basterp - 60 rotate Basterp 60 rotate Basterp - 60 rotate Basterp closepath - } def - /BoldAsterisk {BoldAsteriskPath fill} def - /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def - /CrossPath { - 40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto - -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto - 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath - } def - /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto - -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto - 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath - } def - /Add {CrossPath fill} def - /Mul {45 rotate CrossPath fill} def - /BoldAdd {BoldCrossPath fill} def - /BoldMul {45 rotate BoldCrossPath fill} def - /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def - /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def - /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def - /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def - /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def - /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def - /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def - /Bar {BarPath fill} def - /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def - /BoldBar {BoldBarPath fill} def - /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def - /SolidDiamond {DiamondPath fill} def - /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def - /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def -%%% - /.notdef { } def -end -% -/BuildGlyph { - exch - begin -% Metrics 1 index get exec 0 - 0 0 -% BBoxes 3 index get exec - -1000 -1000 1000 1000 -% -571.5 -742.5 571.5 742.5 - setcachedevice - CharProcs begin load exec end - end -} def -% -/BuildChar { - 1 index /Encoding get exch get - 1 index /BuildGlyph get exec -} bind def -% -end -/PSTricksDotFont exch definefont pop -% -%% end - -%%EndProcSet -%%BeginProcSet: pst-node.pro 0 0 -% $Id: pst-node.pro 645 2012-02-12 09:09:51Z herbert $ -%% -%% PostScript prologue for pst-node.tex. -%% Version 1.13, 2011/11/21. -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -% -/tx@NodeDict 400 dict def tx@NodeDict begin -tx@Dict begin % from main pstricks dict - /T /translate load def - /CP /currentpoint load def -end -/NewNode { % on stack: { x y } boolean N@name type InitXnode - gsave - NodeScale % a bugfix for xelatex, it's empty for dvips - /next exch def % { x y } boolean N@name type - dict dup % { x y } boolean N@name dict dict - 3 1 roll def % { x y } boolean dict N@name dict def - exch { dup 3 1 roll def } if % { x y } dict boolean - begin % { x y } dict begin - tx@Dict begin - STV CP T exec % set scaling - end - /NodeMtrx CM def % save CM - next % InitXNode - end - grestore -} def -% -/InitPnode { - /Y ED /X ED - /NodePos { NodeSep Cos mul NodeSep Sin mul } def -} def -% -/InitCnode { - /r ED /Y ED /X ED - /NodePos { NodeSep r add dup Cos mul exch Sin mul } def -} def -% -/GetRnodePos { - Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def } ifelse - Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } ifelse - dx Sin mul abs dy - Cos mul abs gt { dy Cos mul Sin div dy } { dx dup Sin mul Cos Div } ifelse -} def -% -/InitRnode { - /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub /u ED - /NodePos { GetRnodePos } def -} def -% -/DiaNodePos { - w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup - Cos mul exch Sin mul -} def -% -/TriNodePos { - Sin s lt - { d NodeSep sub dup Cos mul Sin Div exch } - { w h mul w Sin mul h Cos abs mul add Div - NodeSep add dup Cos mul exch Sin mul - } ifelse -} def -% -/InitTriNode { - sub 2 div exch - 2 div exch - 2 copy T - 2 copy 4 index index /d ED - pop pop pop pop - -90 mul rotate - /NodeMtrx CM def - /X 0 def /Y 0 def - d sub abs neg /d ED - d add /h ED - 2 div h mul h d sub Div /w ED - /s d w Atan sin def - /NodePos { TriNodePos } def -} def -% -/OvalNodePos { - /ww w NodeSep add def - /hh h NodeSep add def - Sin ww mul Cos hh mul Atan dup cos ww mul exch sin hh mul -} def -% -/GetCenter { begin X Y NodeMtrx transform CM itransform end } def -% -/XYPos { - dup sin exch cos Do - /Cos ED /Sin ED /Dist ED - Cos 0 gt - { Dist Dist Sin mul Cos div } - { Cos 0 lt - { Dist neg Dist Sin mul Cos div neg } - { 0 Dist Sin mul } ifelse - } ifelse - Do -} def -% -/GetEdge { - dup 0 eq - { pop begin 1 0 NodeMtrx dtransform - CM idtransform - exch atan sub - dup - sin /Sin ED - cos /Cos ED - /NodeSep ED - NodePos NodeMtrx dtransform CM idtransform end } - { 1 eq {{exch}} {{}} ifelse /Do ED pop XYPos } ifelse -} def -% -/AddOffset { - 1 index 0 eq - { pop pop } - { 2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse -} def -% -/GetEdgeA { - NodeSepA AngleA NodeA NodeSepTypeA GetEdge - OffsetA AngleA AddOffset - yA add /yA1 ED - xA add /xA1 ED -} def -% -/GetEdgeB { - NodeSepB AngleB NodeB NodeSepTypeB GetEdge - OffsetB AngleB AddOffset - yB add /yB1 ED - xB add /xB1 ED -} def -% -/GetArmA { - ArmTypeA 0 eq - { /xA2 ArmA AngleA cos mul xA1 add def - /yA2 ArmA AngleA sin mul yA1 add def } - { ArmTypeA 1 eq {{exch}} {{}} ifelse - /Do ED - ArmA AngleA XYPos OffsetA AngleA AddOffset - yA add /yA2 ED - xA add /xA2 ED } ifelse -} def -% -/GetArmB { - ArmTypeB 0 eq - { /xB2 ArmB AngleB cos mul xB1 add def - /yB2 ArmB AngleB sin mul yB1 add def } - { ArmTypeB 1 eq {{exch}} {{}} ifelse - /Do ED - ArmB AngleB XYPos OffsetB AngleB AddOffset - yB add /yB2 ED - xB add /xB2 ED } ifelse -} def -% -/InitNC { - /b ED /a ED % second and first node - /NodeSepTypeB ED /NodeSepTypeA ED - /NodeSepB ED /NodeSepA ED - /OffsetB ED /OffsetA ED - tx@NodeDict a known tx@NodeDict b known and dup { - /NodeA a load def - /NodeB b load def - NodeA GetCenter /yA ED /xA ED - NodeB GetCenter /yB ED /xB ED } if -} def -% -/LPutLine { - 4 copy - 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED - 1 t sub mul - 3 1 roll 1 t sub mul - 4 1 roll t mul add /Y ED - t mul add /X ED -} def -% -/LPutLines { - mark LPutVar counttomark 2 div 1 sub /n ED -% t floor dup n gt - t floor dup n ge % to allow npos<= hv 2008-08-14 - { pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse - cvi 2 mul { pop } repeat - LPutLine - cleartomark -} def -% -/BezierMidpoint { - /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED /t ED - /cx x1 x0 sub 3 mul def - /cy y1 y0 sub 3 mul def - /bx x2 x1 sub 3 mul cx sub def - /by y2 y1 sub 3 mul cy sub def - /ax x3 x0 sub cx sub bx sub def - /ay y3 y0 sub cy sub by sub def - ax t 3 exp mul bx t t mul mul add - cx t mul add x0 add ay t 3 exp mul - by t t mul mul add cy t mul add - y0 add 3 ay t t mul mul mul 2 - by t mul mul add cy add 3 ax t t mul mul mul - 2 bx t mul mul add cx add atan /NAngle ED - /Y ED /X ED -} def -% -/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def -} def -/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def -/NAngle yyB yyA sub xxB xxA sub Atan def } def -/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def -/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def -} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit -} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd -} def -/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def -} def -/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def -/NAngle yyB yyA sub xxB xxA sub Atan def } def -/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def -/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def -} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { -exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark -VPosEnd } def -/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 -roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx -def grestore exec /LPutVar /SaveLPutVar load def } def -/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def -GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { -LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { -LPutVar VPutLine } def LPutVar } def -% -/NCLine { - NCCoor - tx@Dict begin - ArrowA CP 4 2 roll - ArrowB - lineto pop pop - end -} def -% -/NCLines { - false NArray - n 0 eq - { NCLine } - { 2 copy yA sub exch xA sub Atan /AngleA ED - n 2 mul dup index exch index yB sub exch xB sub - Atan /AngleB ED - GetEdgeA GetEdgeB - /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 yA1 ] cvx def - mark LPutVar - tx@Dict begin false Line end - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def - } ifelse -} def -% -/NCCurve { - GetEdgeA - GetEdgeB - xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 -roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA -GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict -begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] -cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines -} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def -% -/NCAngles { - GetEdgeA GetEdgeB GetArmA GetArmB - /mtrx AngleA matrix rotate def - xA2 yA2 mtrx transform pop - xB2 yB2 mtrx transform exch pop - mtrx itransform - /y0 ED /x0 ED - mark ArmB 0 ne { xB1 yB1 } if - xB2 yB2 x0 y0 xA2 yA2 - ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def } def -% -/NCAngle { - GetEdgeA GetEdgeB GetArmB - /mtrx AngleA matrix rotate def - xB2 yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform - /y0 ED /x0 ED - mark - ArmB 0 ne { xB1 yB1 } if - xB2 yB2 x0 y0 xA1 yA1 - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -} def -% -/NCBar { - GetEdgeA GetEdgeB GetArmA GetArmB - /mtrx AngleA matrix rotate def - xA2 yA2 mtrx itransform pop - xB2 yB2 mtrx itransform pop - sub dup 0 mtrx transform - 3 -1 roll 0 gt - { /yB2 exch yB2 add def /xB2 exch xB2 add def } - { /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse - mark - ArmB 0 ne { xB1 yB1 } if - xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -} def -% -/NCDiag { - /lineAngle ED - GetEdgeA GetEdgeB GetArmA GetArmB mark - lineAngle abs 0 gt { - /xTemp xA2 10 add def - /yTemp yA2 lineAngle dup sin exch cos div 10 mul add def - /dY1 yTemp yA2 sub def - /dX1 xTemp xA2 sub def - /dY2 yB2 yB1 sub def - /dX2 xB2 xB1 sub def - dX1 abs 0.01 lt { - /m2 dY2 dX2 div def - /xB2 xA2 def - /yB2 xA2 xB1 sub m2 mul yB1 add def - }{ - dX2 abs 0.01 lt { - /m1 dY1 dX1 div def - /xB2 xB1 def - /yB2 xB1 xA2 sub m1 mul yA2 add def - }{% - /m1 dY1 dX1 div def - /m2 dY2 dX2 div def - /xB2 m1 xA2 mul m2 xB1 mul sub yA2 sub yB1 add m1 m2 sub div def - /yB2 xB2 xA2 sub m1 mul yA2 add def - } ifelse - } ifelse - } if - ArmB 0 ne { xB1 yB1 } if - xB2 yB2 xA2 yA2 - ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -% -% GetEdgeA GetEdgeB GetArmA GetArmB mark -% ArmB 0 ne { xB1 yB1 } if -% xB2 yB2 xA2 yA2 -% ArmA 0 ne { xA1 yA1 } if -% tx@Dict begin false Line end -% /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def -% /LPutPos { LPutLines } def -% /HPutPos { HPutLines } def -% /VPutPos { VPutLines } def -} def -% -/NCDiagg { - /lineAngle ED - GetEdgeA GetArmA - lineAngle abs 0 gt - { lineAngle } - { yB yA2 sub xB xA2 sub Atan 180 add } ifelse - /AngleB ED - GetEdgeB mark - lineAngle abs 0 gt { - /dY2 yA2 yA1 sub def - /dX2 xA2 xA1 sub def - lineAngle abs 90 eq { - /m2 dY2 dX2 div def - /yA2 xB xA2 sub m2 mul yA2 add def - /xA2 xB def - }{ - /m1 lineAngle dup sin exch cos div def % tan alpha - dX2 abs 0.01 lt { - /yA2 xA1 xB sub m1 mul yB add def - /xA2 xA1 def - }{% - /m2 dY2 dX2 div def - /xA2 m1 xB mul m2 xA2 mul sub yA2 add yB sub m1 m2 sub div def - /yA2 xA2 xB sub m1 mul yB add def - } ifelse - } ifelse - } if - xB1 yB1 xA2 yA2 - ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -% -% GetEdgeA GetArmA -% yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED -% GetEdgeB -% mark -% xB1 yB1 xA2 yA2 -% ArmA 0 ne { xA1 yA1 } if -% tx@Dict begin false Line end -% /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def -% /LPutPos { LPutLines } def -% /HPutPos { HPutLines } def -% /VPutPos { VPutLines } def -} def -% -/NCLoop { - GetEdgeA GetEdgeB GetArmA GetArmB - /mtrx AngleA matrix rotate def - xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED - /xB3 xB2 yB2 mtrx transform pop def - xB3 yA3 mtrx itransform /yB3 ED /xB3 ED - xA3 yA3 mtrx itransform /yA3 ED /xA3 ED - mark ArmB 0 ne { xB1 yB1 } if - xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if - tx@Dict begin false Line end - /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] cvx def - /LPutPos { LPutLines } def - /HPutPos { HPutLines } def - /VPutPos { VPutLines } def -} def -% -% DG/SR modification begin - May 9, 1997 - Patch 1 -%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r -%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add -%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 -%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED -% -/NCCircle { - NodeSepA 0 NodeA 0 GetEdge pop - 2 div dup 2 exp r r mul sub abs sqrt - atan 2 mul /a ED - r AngleA 90 add PtoC yA add exch xA add - exch 2 copy - /LPutVar [ 4 2 roll r AngleA ] cvx def - /LPutPos { - LPutVar t 360 mul add dup 5 1 roll 90 sub PtoC - 3 -1 roll add - /Y ED add /X ED /NAngle ED -% DG/SR modification end - } def - /HPutPos { LPutPos } def - /VPutPos { LPutPos } def - r AngleA 90 sub a add AngleA 270 add a sub - tx@Dict begin - /angleB ED /angleA ED /r ED - /c 57.2957 r Div def - /y ED /x ED -} def -% -/NCBox { - /d ED /h ED - /AngleB yB yA sub xB xA sub Atan def - /AngleA AngleB 180 add def - GetEdgeA GetEdgeB - /dx d AngleB sin mul def - /dy d AngleB cos mul neg def - /hx h AngleB sin mul neg def - /hy h AngleB cos mul def - /LPutVar [ - xA1 hx add yA1 hy add xB1 hx add yB1 hy add - xB1 dx add yB1 dy add xA1 dx add yA1 dy add ] cvx def - /LPutPos { LPutLines } def - /HPutPos { xB yB xA yA LPutLine } def - /VPutPos { HPutPos } def - mark - LPutVar tx@Dict begin false Polygon end -} def -% -/NCArcBox { - /l ED neg /d ED /h ED /a ED - /AngleA yB yA sub xB xA sub Atan def - /AngleB AngleA 180 add def - /tA AngleA a sub 90 add def - /tB tA a 2 mul add def - /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def - /x0 xA r tA cos mul add def - /y0 yA r tA sin mul add def - /c 57.2958 r div def - /AngleA AngleA a sub 180 add def - /AngleB AngleB a add 180 add def - GetEdgeA GetEdgeB - /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul sub def - /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def - l 0 eq { - x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn - }{ - x0 y0 translate - /tA AngleA l c mul add def - /tB AngleB l c mul sub def - 0 0 r h add tA tB arc r h add - AngleB PtoC r d add - AngleB PtoC 2 copy - 6 2 roll l arcto 4 { pop } repeat - r d add tB PtoC l arcto 4 { pop } repeat - 0 0 r d add tB tA arcn r d add - AngleA PtoC r h add - AngleA PtoC 2 copy 6 2 roll - l arcto 4 { pop } repeat - r h add tA PtoC l arcto 4 { pop } repeat - } ifelse - closepath - /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def - /LPutPos { - LPutVar /d ED /h ED - /AngleB ED /AngleA ED - /r ED /y0 ED /x0 ED - t 1 le { - r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC - }{t 2 lt { - /NAngle AngleB 180 add def r 2 t sub - h mul t 1 sub d mul add add AngleB PtoC - }{ - t 3 lt { - r d add AngleB 3 t sub mul AngleA 2 t sub - mul add dup 90 sub /NAngle ED PtoC - }{ - /NAngle AngleA 180 add def - r 4 t sub d mul t 3 sub h mul add add AngleA PtoC - } ifelse - } ifelse - } ifelse - y0 add /Y ED x0 add /X ED - } def - /HPutPos { LPutPos } def - /VPutPos { LPutPos } def -} def -% -/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB -sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 -ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB -w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos -{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } -{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } -def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin -/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def -% -/LPutCoor { - NAngle - tx@Dict begin /NAngle ED end - gsave - CM STV - CP Y sub neg exch X sub neg exch moveto - setmatrix CP - grestore -} def -% -/LPut { - tx@NodeDict /LPutPos known - { LPutPos } { CP /Y ED /X ED /NAngle 0 def } ifelse - LPutCoor -} def -% -/HPutAdjust { - Sin Cos mul 0 eq - { 0 } - { d Cos mul Sin div flag not { neg } if - h Cos mul Sin div flag { neg } if - 2 copy gt { pop } { exch pop } ifelse - } ifelse - s add flag { r add neg }{ l add } ifelse - X add /X ED -} def -% -/VPutAdjust { - Sin Cos mul - 0 eq - { 0 } - { l Sin mul Cos div flag { neg } if - r Sin mul Cos div flag not { neg } if - 2 copy gt { pop } { exch pop } ifelse - } ifelse - s add flag { d add } { h add neg } ifelse - Y add /Y ED -} def -% -% -end -% -% END pst-node.pro - -%%EndProcSet -%%BeginProcSet: texps.pro 0 0 -%! -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 0 0 -%! -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 0 0 -%! -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: CMSS10 -%!PS-AdobeFont-1.0: CMSS10 003.002 -%%Title: CMSS10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSS10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSS10 known{/CMSS10 findfont dup/UniqueID known{dup -/UniqueID get 5000803 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSS10 def -/FontBBox {-61 -250 999 759 }readonly def -/UniqueID 5000803 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSS10.) readonly def -/FullName (CMSS10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 78 /N put -dup 82 /R put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C295470093CA270C4488BB4EB864B48 -63941B9739638D2E6F3CC778582B46AEB4E466D89D1C211225274356A4BC90F3 -274C6AA56E200249B7D0949A3FD4185DCB3E5286910EFD7CA72D5D8E8052C96F -388D12094B87D3705CE64459558CF024667C0FE96CBB32B0BC9E51037D7BD62B -E4B05FF99384E71D78441A79B0B1DBA1CAE02434A9FAE46596FB86B873B1670D -AE0BAF516445A0DDC127F8FF3ADA0B10EC30A9CC1F7E9248828B5E8AB46C3FE4 -154B80A54128A08777F5F9B8C519C7E3B632B3476F007FA156E9F39FBE57638B -4214CD2BA79BA9DDA0F4C073AED814ABCCC2F7906C57A872C00E67FF03AC1200 -29DAB92376422FA21C67CA98BCEB8C431CA2D3EDDC16972F84BF6DB2F705BAB5 -CAB39C82D139FB1304B9E7BF1F6FF447596081D5690B1519E468D6BE49C329C5 -C9C809023EDEB9DCE4A6D52A8049E0CC134E8B41BFC6558CFCAD3D9D2773EA16 -131567AE6231B3235869767A1E7C1FA6C8D6FC1B276CBB1CAD14D376188C9682 -302836A9290E587D4225EB8BB1DBA2C4580A81FACFDA197174FE948CE757C575 -F23070FD84DE121955D7D9307BF986C5E739FFFB6CB76822C341FBD9FC2E3378 -AC9332B40C07D5B8745D74E30F1D719EAFAEDBF5FBC40D0546F69A66072D8A49 -28D2CC2E76B9B1EFD191E0BC7510C2C8761BD92EFCFDAC263342A01398A56D18 -121A591FF5CD4AD8B25699A7897E60BA940336BC17B9EC9F97C2464D031F958A -A3548D0C97C50C580B6EEFD0FE8330EE2BB0D2E7FD1DAE33448953544A4B1C5D -8EB57798D0ED4B22909FEA78ECDBC4D8A124DA05B9999242D68681017285A0C7 -69041C1F79442279FBE328733EA0A6694D68BA89739FDB9297BE0CF1808C07F7 -BBF6F1538DFE084EC8C0EC24D883F6CC08A51DFEA23EE920F44BA55FFF58E960 -C7BEE551FCD2D5814DE7E3F835608073C2CB80EC57100CFD484C837881674E92 -B217F4D11165427DACCC29C129005874C05CDE5FBB2D912368EA2B98C45AEDD8 -8A0D2493F60EF36809C8C6EBBC7856F6656E8D398BCB29DAACD4F7D4300A0B01 -161CEF51195D2C58DDFBCAFC1C03F49304ADF02789889826F1E20BCC14827565 -F2A45CA57DCC61B52E33638A0C6C5A59B145E82B82571DF1806EC40FC0E8634E -A34A791B1325571E19F3AC2EF6FE68A14B0ABEF7EBE0EDA3942E85E5AE967A14 -0C5AEBFF2A36DCA8866700CB7082D2ABE470864C44AEE1F6D180D511304C8674 -D02FAB12A7079ABF96E1CA3CDF9D75532123E87663B1D524265AEF63EB5C2169 -B67A651A101E1C7EDB008D3DB06DB1FC1A81B41B291D6C4A58FB57989FFCA434 -DA84B3914D1D80B17AA3A55A70BBC06C49DD5F7DDD03FEB0055088558FA192A5 -261477899857CF598DB740E82D035E84CF17B33048CFED2DCBEBC2B75CCAEBEA -B6C5AA1C6978FBB36ED98D9047028360ED430A0AA69AC85A8F83825EA649E1B2 -64B260197B06A24A1DD969CEEEE136FB046D713D0630B246BD41CA285F076038 -F7F8431913BB9A3E70311844D4C22AA446E3CA217A9DFD75A898997130269B29 -AD4AB7D9662856E677FB2DAED7078639CF31C6E6637C74DE2B5D0ACB88BD61F3 -CE3C5D56D3D4B3EC1ACB33EACBE05E53A133EBFE93CE6A0CBC8F24BDC5B31BBF -5B3E55D6B40B1CED389076014667E28BBBD60145A06BDECEE8011A2C6F06D091 -73767A8045CEF2A110B614149FEE783A2351FB2938A9F73CA406538EAD82ACC5 -A3DFD3DE00221E1B4EA977AF8C89661357FF7D2F1FCEAD6CFC9D6AD81F95100D -EA1F328249AD84AE849220E6593D45015B4D7C9527F3063E9F6DB6E572092A1F -1F460696227D5F0FA5A5484B1F0D8B4A35066451663BE448D924DBBFD388B6D6 -D7CFC87C9E75B7CF79A4C9207E29E0BAAAD7FDF529B860F7731EA978E335334C -13CB2F0A4250F5957B44CAA0674AE8356F586A24FD137103973B9A1FC31090C7 -C84DC5D380404BCDF3FE20C6F74FFDD8BD1DE845E99DC6FE09931F003834ECC8 -08C5D962070B6C44F901A787CCEF048A2C584A2285506B4D4E82B1BF130E2220 -B6C8B3240A4CBBCE16AD3676B23A50B75F82CD88D1B8F21D30A12716426112B3 -23DFDE5A348DC9DCCCE5BB5DB5433A5AC125DE1229FFAAE0D8319B2929986EEA -56A93BA1FBDBE617F30852A3DC8C712DF674169C6D656F75E252187A085B2788 -2467CC4DB08D48EE6A98C61BC55E6EFB1938FAA718802B7587B94C8F1477E9BB -DCF6E02B5E67FE3AD9D87C321CD9BC0CCD36B9C4BC601E6BD552EAB8E1C940CE -3A22F3C2501C3C939CB4F17CE97566F0A04602D2A22A05CECDF4A49CAFD6332D -5870E1F31AAA5F86867F71610CDB83E473B9D20BA00D8986D7148E0EED03865D -9622864B52B09D12E0C5FCDD023D29D5AB1CACFA92B6FC14FC84E95F407861D5 -2BEE3301AF399FD7ED04DFDE6679A345A282E7FC08D47E3FC8969D3B00ACD7B7 -F8769647D6D4F4106340EF739583374D023C2702C48FAC1B643B5897D2D7DBCB -73257712A0FDEEEB98A021D218CDDEBBA34687E23C4828D7F96D1ADDFAED7EA5 -B279322E6D55FB486AD8F3A8E7B2C67915564FE56F0C9277A06B29C47FB7D007 -11AFDDB3FC1B173B4E449CC6B198041CCA0624D81B4840FE5B63BE72157AC6E7 -03E5E95D2E2CE2E40BCE8044A8F2AA45F855484A891B9F0F8F70188AC66A8DEE -F4D656CBE216E6D9AC33BA8DD0685D480833E1226784469A221D9FA3CA600AC7 -5574B5226649A9C48CCB43339942FC9010F86BAA2D181AEB487A92A96BF2EDF1 -60F3B93FDFF4137A25A8AEC5ADF8613019CDB103DC4367EF3D8AEB4FED0E6BF7 -622AE0CD3CAA0321D26CA4280CFB60D08D9560AB8AA5698231171B881BE9A27F -BDCF3162134126212C523738D221AA05E31CEE73D9D40F73C450B6AE2C1E70D5 -C37162BDF55943069923A290A6C720042566E55A21CD81C460818883AB016C16 -8FCCD1255A66977DC1C110261D7642199D466DD3D2493A2D47694F842241C474 -1752B00DA03E69CD16A8A14BEB8A431A315D19A39BA978E46EB1189089FEF647 -F9DBB58AAE6B3FBD475E4DCAD241A051DD100ABE81D40ADF18A4C50F53BF749F -D6F7C8E02A5665B4AD18DDAE79096DD447F8BD32C68F9F97F05E0071D9E9AFEE -257B96D48ABD9920418E17C8F027E9E975E4A08DFB1988E7104CBBC1CAF356EA -7750AA7110BE116AF1BA69A94776E4356573B38472A8A1292C63701543B0F315 -611A0E0595B30424A1137478BA6F990AC7C3AB4DB69E75C222B617F373C521D4 -246E954E9857AF59D1E6C36412B643733CF5E1C90389EF0E5E0DA55D3AD12E97 -E7630C315F72A03CAF22E0ACE3AAAFC1D496CF4E5ABC49C2DD5E264BE7EB2698 -AFF36089B5DD2C53DB1C1FCFBE1E89D41A95DDD278CEB29DC85FD1DB8B83CAB1 -EB37C531E9BB8466ED6B8B60258D3C355626CDA43A32834DC89DFB11E5FC6D68 -0F78CFA871113DB81A1690250A6F842ADA15734CB6DF7C6ACED6D8D586BC4E1A -94EF3052FB0F8B9454390B882CBB6E135AF1F9C777AC362C2A758C3A98117120 -73C6E2FAFB580716D4B2889A4331CC658AAE996245685B973D9C184541385680 -AEC2956107DAB00230FB39BE98D3CA898D917E5F2088F26CBA4F8B5B115B6443 -8753331233B10852702FC26D9DD4C990C13CE4D0DCEA23D62A826A4B4FD16070 -5F3638C0A50A3373A33FCAA6F3644975AFD0560EE5F2D1CDF08820373468E4FE -6679A229D6955CFDF7ACAA92A87E6D8571AD18CF59F84F88A674B2946FF20A28 -B9798EAA22442415EB46B9498DDC0F4BA6ADD347AB43E9293CAABEAE80127378 -129D5DC69F6DFFBDAFA5D65580239E8EDF6833D0DE6DF75F0FD090A83CE0974B -AC947BABBD1B1C7194DDAEA37B0CAB477ABF9433FCE0243C8D308409427D1DCB -8EE4FC36C7E5CEE104904B520B3F6E677A5B92F694BDBC2C799991667E0EC14C -B95EAE7DE1854BF4542F05B4AF401CF67FC3E46EA5A0DC362F3CF177B1796DA6 -753AA803E724D1721DDD1BCB0C12CE0859E172D2A370C3697286F80D9E138AFD -A0EE016805F847BD30D11D8B891E54C77AB51A7CABF76BB14B06153C7F811FE4 -93FC4B7CF161051A458EDF767DF94F487DB939A2740B4242BFEE234F75084DDE -207E84533004B933D43C712F0C71DA4A00FFD6D721EBC93AFDC4200E3B8DE433 -3ED3E1DB799BAA27548ADC853AFF5D9D6BD92D644E3CF394789C99D9DC054A26 -7770AF5DC5BD6563929AE11BE341F036584DD573D3F43D9D975201EF77BEEF80 -D1EEDD1D4AD5D4D4DAF6D5B9D4C1736CB111D6FC74C236779C0ADA430323A825 -09EA8D0CB1772220AF28B93098BDB36913159208D1B2D7ED45808BF7B686419C -5C0E3DAB5BC9830FDF3B494D624EE8068BF6F5212BD69EF466B9A213047BD105 -B848F056DC544A8CE66C546B1A4DCB4BA29CF0EB4DCD9C2452F22172AFF33B29 -E97E12D8F0D312B03BD9E5377BF0C81D884F1E79DB66E8144F106DFD2579AD26 -C693C5B68F3AC46BF0D6281032D4D4BAEB2243151AB1AC0BDA2ACDDD4D590C90 -F29B335DF8F57DC593DCC081FB56924028E3161AC4865B49D1B0F63F5EE866D9 -7A71171C09B09A44B0E32F03494D9EA63F3C89F5E772BE25A6557F119299E989 -99BA041694ED805AA4F3BBDF00D88171C9D43A9085A287A36A1F0F9386F2A98A -96815CA51F06E1CDF20B757983C5FDF4003F5438232159F325C6335B734FD982 -1423BA77D0EFD044381AFBD0704E3DE95D23A70E2428E9AA355A9A8A25C6C74B -48488C14DEC93A766E112D74C83576ED355F17A809E8D3F9C65C4E3E14EF484F -4658DFB57597E2A4461D8044E95844391C1275D63F282B37888C842A5151937A -45007547263D70195ACC018A373D498B88C5A028BC66ED96A343EEE74D61EEB3 -D9472B6A549CEB8699F4B35154A0E2ED22867E4F9E4A76311EB2C9F9078FBA81 -838EA49C2966BA64C165434DA3093206B70186BE80600B891D9979F730FDC794 -5DD6D8B2090CC67A634B719F441092A10C447A86ADB78DAE45823ECED5FCEADA -ECA52E363D913D9EFC0ED98A5A1F823DDA3350EE27F09C14E4C7298CC0FB6200 -DEBC640C68C82D70AFB7A7BA668F1D7948686206884736CD03D9F6E6CF9702BF -E3C932CEF3CE07FBBFCEC0476EA6E8D5D4C5C6450C8FB236B89BB82D51886240 -5BA7462F50A88F69228DCBDF26B7250E90B3DF8E94ACA1CADD9EFB5C73EF9DD5 -46052314D445CC92512BA231F79A09A2F0D91976B160B8C9BA055DA4AAC1300D -491193EC66A6DE12BE01EEEDBC3A2291DA1F27AB76596A236B75E19FC5F1FB6A -DA1AD835CA08B6CD03B97B4CA1BFCBDD2500BB09F1A1B0438E4A759370EFA318 -F062BA9F3D352572CE232E6FBADDAA5363807D0DC5320B807FE5485C8CB09B6B -0BED9F5B1300FF370252DEBAC9DB25CE2EC494E8EEA45FC6604B3C104E81B287 -EDD49F3D7430EC9176A16B4FCEC5DF68DCC11ADF90BD5337E2E4B59BEFAC8298 -E5ED2C7FC5928635420FB1955251932713236DCE28012C86F63D12AF1DB634D0 -0B8CB8992B8723548177BD6822A808FF221A9E38B0DCCBC1F3430A9BAEDA89CD -ACEBBDD8CCA5E17F1CC37E35A01E058BAAAB6BE7124314DA19962BADB74EE73D -8FB13FF6AFB6FFF97926CA045B62B98BAA753AB0FC78B881D3FAFF9EE2FE918C -8EDBEF87637F1530E3E13AC090FF81F4136E08D5F3734327E643CDF621278741 -A17AEBC56E21217888A6C8B5ED4269731910E7E25693CFBDD4EB4A32698F2447 -4C45D73E810B627D8719E4E34D8FF378F9B68BFB149AC67B3B1E55F20D097FC1 -AF74D46F5A3923C63DFEBFCA210F6B257F5FF3F2AC34CE41C15C9977634E473C -2235295C05C3DF6B3009C7854BF11CC87471CBE085793AF9C5D05C5479B9E780 -14A5A6F3F6DDE5A18243DA15732CCF26ADE40C566DBC3C62B71D46DE87A12C6A -647CAC923254E2E74AF882DBD5C9E108A9160393C5CD12566AF7C824EFEAC56E -6F05B92C73A76824C5ED1735BCBAC61B98D509250C854CF1500C212F574D18D6 -4426B8510FE9785B814A70E75C9234D42483E736D0689D3561E8EE5650F33A36 -D50127589401D267BA6442E8616E2CDB1F6691D3FC4A2A377E5E154972E890DD -60CB463E9EA9A6EA61087DF452FA5646F69BE879337EAA0F5DA4438FF0365627 -4E3B16851C2F08E976FDA27AF451CCEFED00376FC3D6E0C160F0BC19544DE289 -BECEEF9A067FD71D54DA3A4F73F06E2F522BA07551296214DDA47B1BBB1212E0 -1100ACB5F65FD30C655A3402C83058F8ECFE48FA60B6A3DC86C4996414130194 -6676EC7F37454023AB53E9D9EE60249ABF6953E76DCE3123DD268BBD492412BE -65D7C3E5A5E483C381182A8F19B506F0AF6DCD55532B89852D1D96021B22E9DF -D9D072BD7DD4450577E658B433A84F92752B260AFA2EC4A118747CBFE36AB7D7 -6D5DD96A119AA1BDD0FDCBC3AFDAE5FF72713EB46759A06CD09B5CFABCDAB0E9 -85599506AC07AA525978AB157496163AAB387F079EC9FA1F9E91B9C2FBCDC9EC -7027D77016760539AC03F1C1DB242D28D6EE946C42DD2262D82ED48C3A839853 -BA977046F0EF373AFF884AC3112D2FB319421C3165DFA5710BFB9AB9595A10F4 -9D05704B9E22137CF27F4B2DA9CEF6D8801D5F792969B2E58FB539B8038DF440 -6DE20C0313A7BCD16F279290AD6859B0E657CC3041C7928CAE35B9D3A681F2A3 -2D40F8EDAF1127E754276556C95E1282514B6EB6E43FF4F0FAFF28C715E3F39A -374415B62C1F5F8E31E006D6ABC736057910A3729AC60360CEE1B2C8D9F77336 -39CAC45329A372205FD551B9E9EA5082411207473D9D90E76136AA70180172E6 -AF6EF3EF6B38B1906B904BE9BD5251EF067738840C28877659B649C6C4CA328F -1BEF8A9CEC2CB062702F58CC0B8D2D097FBC278F9FD894E10ACE1DEC4530CBF8 -E4E467B6DB9C596DF0C3D43E6AD70F30B733EEE692C2EBD68756D0C16E1F00B6 -AD011B5DA073A769B53C2DA2E7C9B7ADC6F551BF4DF4C39C66443692C3DC62CD -B1E094013F364D04BE2FBFCD1C7B2836180E9022E0434421FFA4317A50096684 -CF0B8740EF680F27F4A84AAF2AA92C64883BAF57BDC60C6467A8D4E09E6316FF -9BE73053045E5F3586DA3BD1298DC15D751913FB1E72EF80047F6B33591B97D3 -DFAD34EB224D64EF60F5B4ACC6EB42E1BE0CB2812FF2F3C264AD2E44F5EBA441 -670CA0A60E73176ACDC4E42E74F8F489C73481EB5D46A61FDA1C0FF9F8844DBD -99CECAFE2A72833E4522981FA13713AAFAF8F121E60FAA6F379B2C8874CFF23B -8FECE70654E5855E525A403700A96CF7F8111BF2B58386E29640D82F1DD86900 -E0E203F3ED554209CBDA2A61A5641D4B39D98C5C43D4575648D06BB82B6C4D4A -F043EC61B17C208CE8B4F43A7BCBBE588A3D13A183D79A47404223037FCFA4F1 -DD237344E589F161BB9BBF3FAD2E28749350DB9A74C09E894BBCA85B82E704E2 -99788B24642A7D0F0FD96601CF1AE4819EBECAB89824A0DC1C03BA4B546ED36E -DABC8D49CFAA53D2A9A5DD6B3431E364C99ED0323513476CDCEE49BC413E50BF -51EB93563DC03B62F84C5F96ED713F288D109C79179AEC41424822772032035A -40E84014F5BF40948F05E8562C9CA9DDD71F89021BE238E74781A92D64E5F9E5 -AD6C0D954C6686C714BF189E78EE47F1530CDB8376E52631A1A26E3021FAB977 -DBF01167266AD68A779C0180E034A90CB77B86747395BE885E484BE4028B4093 -8BE191D58D0BF85308C72E6384292A2E1CD06130A091F8AF9DC6C3E12B1E4BA2 -BB2C37AB4AAFC0CCC7964C06B9EC1C7E3BDCB6BA265288D9C8625EBA35BD2A49 -BC50472D7AE262237FF1EA8D9DEA3C0DBCF7C3B2DF5AFB1F31E46B48E0A8932C -AC31A981655ADE717715290110A24F18A9C280B8A1319EDE24430F8B6EE297A6 -F0ED9FA62CCCE8D04508EA835C94EAAC87A6B0CB478EAA834FCC96919A168737 -09F5AD160CBB4A83185BD3D2FB6C5106F2305408003BB76353291395C141525C -C35B34DC64CB57C382F7D293B863AE11DDD537DFB356CD79C3F39958DBDFAF05 -C2018325DBCDBFD6799A213DC41DB996D0ED640669724C3B991A648934351F8F -C0AFEF6CFFF64A2DC8573FAE4D27F42F684FA9DE66B983C75EE125EF4285686B -C079E717409F7C7976421105699CEE6AC950BFB20E66BEFD4E06AF99E0593AE4 -5DB4DC8C8832529631FABA0B611F89BA8AB7C42C115A93761D1FFA9B70177543 -F76492919E80F0F379EF684F34BAC59C5D2E69B392 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: SkakNew-Figurine -%!PS-AdobeFont-1.0: SkakNew-Figurine 001.003 -%%CreationDate: Mon Feb 02 15:14:46 2009 -%%VMusage: 120000 150000 -11 dict begin -/FontInfo 15 dict dup begin -/version (001.003) readonly def -/Notice (Copyright (c) Ulrich Dirr 2003, former designs by Piet Tutelaers, Torben Hoffmann, Dirk Bächle. All rights reserved.) readonly def -/FullName (SkakNew-Figurine) readonly def -/FamilyName (SkakNew-Figurine) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/Weight (Regular) readonly def -end readonly def -/FontName /SkakNew-Figurine def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 79 /O put -dup 80 /P put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/PaintType 0 def -/FontType 1 def -/FontMatrix [ 0.001 0 0 0.001 0 0 ] readonly def -/FontBBox {0 -114 1241 842} readonly def -currentdict end -currentfile eexec -D9D66F633B846A989B9974B0179FC6CC445BCF7C3C3333173232E3FDBFF43949 -1DB866C39088C203DC22FDC758584860EC7BB67FDA28CC6208249060E18FAB32 -204779B5C03C0493BBBBC95CF02692CC4DEAA8D2EA90B5C2E64374E92BCB8501 -429B8FAE4A76C0C6B76D6FF7CF9A7D5EDFBCA0E959541C59BD05B7DE43D25D53 -FC3DDA6EF0C2743978A6D03E19CCED4A11F2EA4BCC3110BE8B8D9E2772361969 -C19258EFAFDC276CB1ADE9208A941A36D18F9FB1C33DEF76AA315DDB04A81691 -6676E5A648D7DE382599A7743325F8403952F71AC144CB079B79EA0F6CC70FE9 -5F3188F983A1F1EC77ACFC7CCF01778F00CCFB385AFDEB4E5A9CE7CC620FF716 -C61C9DE01E055E0CAFD45A716C0BE3FCBE9055D993851DE60E1E573FA960A4E0 -DA00D6FC534C4CF679C935A5D4A5B19672767A386D945B17D996CF36231F8E98 -218CA1C3BBB7D39931D4D50B1D1EF947277C4A9C9E84D419D55550E2A5FF0549 -1FA0277DC7AD9334BF50CC5492D5EAA01A2BD4770AD8B320B546FDD69F0FE7B8 -7DCE3B013AFA239B624C50424184F8B2E6C035CD8D09C0AEEA727DA23EBB0563 -F296F801C2D059FAA56DDC675D141E980EE19E8693DD546BB1EFAF23B25EE18F -401F89336BBB74A63088F8D1EEBE74494B265B6B737BBE29B09C257B26F2DC39 -B3CC5E66AB9A1696EE887C7638A4455C101BA7567859E0E604629B5D3FF0C3BD -9415B98896048B159A2B809B92737580090FE1E59963263B10DCFDBFEFE15B88 -68ADC79BDC0DF2CA41AEBB4338C85C6CC6C21EA274FF5724D26BC8563E63DACC -067651091F0E4F77C75213298BCD391606C39E1C1F37DD9C2C4515172E0DB0AB -3E93275D2FCA7CBFA53CB4D8123F6F54D0986482FE3E98ECF421B3A21437BD9E -E1556833796B0E3BDAAB179595F761991103B3CF06E89E5DDA1F6D91AE06E510 -6896FF0B71F0D2911767CB1DFEEF3500F070270EADED32C917A92CEE4B70D0AA -AEC0F959827BFFAB9A4BCDD270540B157307FC76AA894CE6094B0A399768CC90 -A73760A81C686C373ED4475EEF76A3EB467F2EC721D2AB87B492444996764D66 -11C2906AAB13B76373E8E10B6C92AD072356BB7172E941756E1B14A5C16D083A -82D271A5844B36522008EC033C9FA37EE6B8E5603A75500223C98D80CB40CEFF -CADA7CA565351C3844C7E2958DBE1DDE280A937A108D9D67257E51CFFF296304 -3F3E4ECFC71A72240C5C1E3E022AE56DDA20C9BFB9FF931ECEEE556BCC9C4374 -EA6B2CCD3D37CD025624C7B916A98BFD34E7811526561FE9C51114475E9EE497 -2E9524DC3EB093A2793D553A3B4C13236CBCC78A8F93CC75F90C9189297BEEEC -A16244F6181C5C535EC9B0C8DDE504E621B5887FEAAD0F667C7848497110589F -AD4265A06A63E61EBF1D02A87587DC7D4030E320C514539B504A31AF3D78D39B -A3E59AD1CC7763901191CACF97B56367EF01CDF17E2E5049D46E0C470750BFCA -57392DE2D0CA52013ED065C5F3A6A112882F7F37638E5B2B3893392706CE2027 -29FD3E48D7EC7516E263C79D6A97268DA46DF57696DCE0AABC09D1B6E2F91C96 -8D4028D2F1E7C5BE558D301C8B082EB07115A8316F68504339A38BC05ECB819E -A3FD4EC2887F1635AACF2780AF4067FF1E1EA8D90D4CEEA08E56C7958159C8E9 -5855ABD89B67C61781656DD25A7835DD6D0227E8E5197151EFCAAB5DD7E30FF7 -1051D6D4967092FDA2997852C9A27A96351DC61E31ABD4A6EA8173FB9DBC2F61 -D36C2E4278A20DF0EDC8A8322F6919079AC88C84E75904A2D372030CBE54BDD3 -95DBC876109AC6AF2D5DA531182F93B84AB3B31C5908ACF05947F6414AFB850F -043E1D02CD57C8961D1E0EA51C02097026083440BDEC45721D0F6D8C3A1D8CDB -3A7574A94AA0157967D94B4FE04C20B90DA96AB9391B620CE60C015AC73A71E6 -84907BBF57AA08BDC107B0B2DC30D3EC4DCA2FB7C7EBBE81AD2A05A0C30B7128 -2595FAB8122EC5A75FD78BFD3CE46263505F4BD03527FC4CEC45236399A2BF9C -4A75DB0DBC50D9659B1E1BDD615BBBD2E338012BFED914E88F37F9EBC7171264 -E30D7D87E849FECFD4BEEE78024777C8E1E84FA3B14E0B3ABB8A254A1519B911 -DBA0A83D0F86446329C71E645D92D02FFFD3B21DFE7CBA87A3B456F5F7063116 -C8125C64E8D6ADD54958DF8F45025A36326245B88D01F9C198A4CE29518BE6B0 -29A667AFDFA1350FC6EA47AA1D0503F3ACB450EBEC9CEDCC102FCE62F55BF5E1 -CAB60218501E2F429EBD905DD8D404E806EF9CB2841F89A3FA1131105F04465F -3C7A2B47C13DEB6707DC7F01AA43592CE1C81B76B5A6E8D9AEDCD79E7F52AC52 -19F863695C77C3BD4EEE3493075513CD6EABF0CB9F34F66D6AB84E2B903873AA -286B6431912785DA63C574BB4F80DD6F7A1B493739E58351A85D1EFC7CF4B1DA -EB16AEC6E26F10AC985DAEDA799DE2C09C99906E849A107045862E92C0A1B172 -7DDE110ADAA6203C01D69D00071EE1E864B33CD3492BC695E3DEF8B9D83DBBE3 -FB6A76B628EBD106B163EDF4C6F485BF8E72FF25A3F08E88648F0877AA3C5A7B -8EE6553554CFCB0B613B43E51B3EF00243D4F5302BC5307FA44BD179D6CC2DF6 -F1D9C92C198AB47BFB0BFB2250C48A279E3FF00DA2B09FB23038E781924FCD28 -5E09D3201E13708B4DC6BE3D81282CEC04A10C21183A73505F7F430FFDFB7BEC -7D0D22743F6AC58394ADB5D8AEF8DF2675AA70E630D7C4477ED33C1F00073852 -A5EC09AC1F212DA9E477CCBC8E6C1716E52E196B929FDB397551C60A2DFE9134 -F6728BFD04584AD5F748F136D780A0038D253AF86C005E29DECC5DAFF403F153 -0BB5E9B2BD15F6748821A9E687A20D232F530144C800F5E130558BFCF480FBB7 -79AB12EBA4FA0C5A5719F3835C3F1641805392CF4F189350D9AAF9F2135D0D24 -921F112695D50730EACD5D6BA5028C6D183864FD74E6A7194683A2E542231D14 -55CC2E7504334B615CFEA5848F643E8C761E78A9A452B4553EBA264C89076644 -8B4BCAFA8A4F12421F14A61544CFCEDE9081C08D4B9AD85C6049625BEBBEE60D -4CD2E0D6BFEDAABE6DBA1C5560D573F1CA77FE7746198B5AF514564BBC7E9033 -C5356E7A7A8F62B96A0CDBF27E2C2916C93744A3C377EAF002CB86BBC433E39B -354C24AEB7BB943B425F133B57662B87C4476488D31572EB049CAF8014E433FB -D4C18175FEE5C84C38A3994F5FB26EC9083C33F1FBBF1991E2A1E9AA0D9B05CF -807C9314BC4888E895BA400402574E4697271DCA742DE26BB025A76966570464 -65C3919ECEA9779CBFFBBF640D228A1F5D5EE26D30A945888D3469281CADA471 -23D8D3260E1DE2E47A18526DBD971C6E8CE40021549FDB096336531FAB5B0136 -B4DCBF4B10B6E56E0492AEBF75CFD32981455521B2E01EA9D83E56E5DA6CFF86 -1352B688FA2B790285E7BBB1AE7EABCC786E0EB75F87276BC9B541B07234E7B6 -BE219112646CF3EEDBB82A365B137F0C9DFBA0BD9E22BDBCA7C979B94005785E -3FD5715C89C3518CFFC50BD61869C4A56248D078F6D51E3901ECC4ABCAFC7AB2 -C71FB50E2936C272C805FD1CFFEE5E22246D1506DA4F3115C9B58CFFCB8F4B87 -0A6A9089BC7728FBD8CEDB4A9828B07ADAC517DDBA442309B6B8BF59E3563E6B -A2367FA24A141967456DF674F419459A4242708CB4301DFAC108CC8692C89BEF -1D148558F78A9132B26C7C9FA12233D3FB2EC34EEBA0DD7D2BD61029B48039CB -042945A97D0E651FC0D41C42CCB8B66190785C1BC413CD14C32DBC3632DF73B8 -2EF140AA01CBC7A4BC5C6ABFD7B17C81BF507191DBCC45C7CDC0B098D7AAAA09 -DCED8AD9FBF1A9457BE7193206259EC22C75339488BC5043BC6C2CB070E0EE14 -8540CD52542CD19DD6B0396EECBB4F6AFC20FA231F0D7E17BD080C5DEAF24CB0 -60AAE5C79D99C0A3C03071E0577DB271842306296AE5BC588C02A3D19DC0F620 -AA624139D349E16C0856BC50894855588ED2BFE2BE2740B76B6FF62B3E59EDDD -104E3BF213680CF14E3337C48B6CA8E2E23476F95152C2B7A2F8AAC39D27BC77 -6E4FE1F996ECAC2DDF9125199F7CD3AC1F2D3298EB89AC9BC95EB53798FCF67D -2CB01D6FC54423DF2E17F0CF5A9BDCB8CC4C1FBE312D1A3C886E10066F323302 -07B273E55CB6350D2942A5C502C7C1D22FA4E883A0E9BC8A75C3D4C23935DBA3 -1C4551552C1C3A3F08B7EA4DCF6DB75371235977FED298991765108DAD5D4BD7 -074A6411940A3C907511CD71FA45648F78406E164988EB26019CB16819AF47C3 -81E52DE64C0A31A242A272C9F2C8EE6C17795CFC5DFF3E680A7A6A9FCA796000 -CD734EAB37D86218452A80A189E4D391502FCAEF9D028ACB9BED3E09441FB7CE -6793A4E49E362E506DC6BF5F8201D53D809A02343F19C21499046DBF408FCCAF -53C56B932842843157F3D16CA4EB54F4CD044DA560F9A4BD783E76D80B743344 -0DF77397DA7EE6C415BA33B76D6714F7451FBDBDA7941967CC2AC0F89FC6F193 -FD58106FF85144D50392B456D16F27C29B16628D12DE23A184A3AAE658CA3E9A -3AE8CEFC800C1AE6F2AD5E359E9B6B6A1DD8DE7EFA161BCFBCC8045423622B20 -1C7D14C27693368D56E1C7E6732222B249420E086D66FEC913F6D88AB8C269BF -A36F210851A12FF7DE8FB0957428176477D81B345C69BA368057661601791CCF -7BD7D69A7D6D9F3CE13058805D0D25494868FFF19B2FAC8131D00196950CC3A4 -276652B08ED8D6546CAD15D591AE8546A71600613D2B425B9FC7F2367CDC2873 -81573201614D241D104F6AF3C8B64E9940490108B626629AD01A4D6A7AC6B70F -0D5E32F0241809B66D0D486DD7032B97F4D2D7D0DF4F0AE6CED7E9C695F47B21 -C3D9C263BEBAA7A97F9CDA7455C8302CE3D6D89236F7EAA4878C380A9C23AA08 -5EE2658FAD7ABC5EF1ADA32BA39E354D0EA4FA9B9E1F8816E340864F1CB46606 -6B50A9F99CDF7A70AC0C2BC8958257DED45C453196C030ECF6E89A5F3F741151 -96FA7635AE0748141B6CECDE677133C8083A86B10C134D80D07CC3D5C7669FE5 -90DE0133EC61893BF4A7F9CAA915EF3AE61EACA5D851EE1048CD6E898DBD5795 -3473E2785450012CC8C5409B9A97FDD10D39DAECB64AD7BED77213FDC724DBD1 -AC0535ABC8EB9FE0198E15C50E9657FEE8AB00BCABAAC16F6C1560681A7336BD -177FD31EA4840721BF22335AAD835687CADCA97E568F5F36C96D048C3E6C1F52 -2C51CEDE2E3B72CE85CF00AB15C85EDE516399992658BC16249FCDA61AD9BFB7 -6A48CEB195A36F3B164B9A36EBC3382950671C29AD8854FAEB9F2A372B78155A -9AB70623E9EB7E22117FB9F75897AB9A64C147B713813C902078A8A023F162B0 -7B4243FEFDD612762B8516F97A2E8B6F46B55E2C179018E1CF7ABD4A6B5AF9AE -CAC2DC12C61D1EEF349C9797CFA9D657C6E8ABD5F6EA7AD4DA037917201125CF -94D32FAB37A89FDBD06D23D3868A6BB62A97A94A45581A5B17012390EC83668B -3655005298BB8FE43A8880DD63E8C8DC37515580E56FF1BB6689CF92C4CC2E2B -61291B3AD25ABE0937C06E8CD548771FE0AD0A0328F49D818D8B96019E73B4DB -DDFE56689DCE604A7945F90E74A2F350CD4B76DA2EDAD87EB104DD90AE6CEF31 -15A81D31B56A89DBCAA25144D0F225C0640BA06AF3060523DF5C4F45F0534B8E -7A4D80072DA798F8DE379A1330CDEDA5AFD0C337CF041B5D1D4DE7EB013842AB -7F7707355BFBC756DE91EFA187C20C48B3FAB22D770329CFC52169D0769B2D84 -BB6CD63D416CA52BC4F502AF72E82FD4AF14569F957253FFA5A1EEC88A92AD1D -CD2436B39051A9B7C8AABD16E06003EA07279A17028727087F332C0BCD20BAD3 -D13498F3FCD80D0AD210CA291D42B8184776DA936E2736EA5E3DD3FEF1DA02C5 -1DAD1C437AA0277075A39A264AA60A18F249036955116918F68B3066C20D56DF -9D04F756430FEFFA73C5C9BEBD609615E3B5EE10BE0CA948722333AEE411421D -A06803D8831DF9BB5F6C18CD67F2FF3A59D2382228BE611F62339251111EDDF3 -6E7D2DF531FEBC5B36E3AAE726DC7AEDC50D8CD452A2B4DBB0D0D44282F217DB -E6FA7EA15975A51E71012FA0226EB22712762546A652A5D6A7BB0BF135F2CBC1 -A45449CD6668044181A009EB9DAECE0F6408616ABCD4865D7C3236DFD24F39B5 -A29D229495CA4589EEEDB11E5B9322BFD6137A2D35D3AC5B18DABEF24F6126A2 -7F53930DA8F839C8D4F6FA20BB2894FA593FF6AF77F4100ECAFBCC2F93662248 -7B3C5E1063BD766C9E87722E36F6CFA6CCDF23C41BAD2BDF5E2FF3909CEDEFBF -163F48790D1F3163D67774AB77C24C952E7220C54D7604EA627E90895DA3D059 -693D5B4926F09462D6A04AF78B6A28F1B727060BA2BEA51B5DEF0DD4F422FF56 -F4AE0CF07CD42A5290AC4C8CFB52030E9664966098E4A7F039CA62FD73A2CCC8 -FCBFFD89F74EA9E93981AC75798A20920A01100D01A626ED1AFBBAA7BE93D2A0 -B3AE42DA31340398FDBD91CECC02BA6BB4A80DF76BFA27E063C822A33D1B310D -3A48E60F7F1B5755AA9A96332843711A29A78F6C6578495A691C2F9C64F7AF92 -B4FD65BA513ECDA3CCCF42A707BDCF13C8A0102A61392450A3B3CD8B94A383AF -35E59FF6FBB28253542C2EA49CC4C2CAE8987BD26718792253B10FD1C78B08DB -F58BEE5BB4767E6455F4B7E01DE3DC96D0043865017196131029E1AA3216738F -50CE57D39BF7BC2E92A8635AB8A1E78D963008C30F05D450999AD22469325334 -4EFEB187443E6FA78AA0B8019B50C69E4BD1E450DFF172B5E569BE18F516BEC8 -ACDE5A5C1BA20577327E90EEEF2796EF9483B79A0D957A79711124C58FFE8E15 -307FEB7F219E38A4E44959570B0B184A39D7147E6034E76596395A6A25BD8A13 -1B0EAEB44B77A33FDEE7FCB39B9CC5726C984C110EEA36C3BA33798440D48E87 -DFEF88CEFF7EABCECD3724451932AFDBCB66E4D9FFC2584730C6C89395719FBF -E0A372C5BE40B78A2B4B633D7439A6A50E0526FE708212EA92242FCABE82CEC1 -C94A23B335B4A4F4DE82385D348FD1DB4C8C2CB5CA6724385DAD0415699C59C3 -545282C9DC4E3FA784087BBF5A2CB3DA59A34FA2ED6913FF2C4A17FACEC83C03 -2D5A8B22D52151B2F4FB728831EB48453DCEAC01626F1043FF9722B0E81C2288 -E1F349021880AE7AC24CE16224ACB084F9C34FEB01D3D89C33FBE9E9FB36C60B -FD05FC107DE6F399FC8728F9B1DA964C65D6E3AEE1F3AE6766E31AC76426CBAC -BA4E21901EC9198BF1404B6682A3EBB2E58EE92DD3F00453283FF90303684FBD -31C495ABC38E5E338E52E8BD8FE9F937F4A6CE0914E87AB607FC41BE4B9D4480 -8210F84226701AF41CF23AEEA49E8E65A6D8A5BBAA55EAFF5C9BB311382A1AF0 -A278AA337144D278BAA730E1E5B72BFE46C3284789E8F386714856C8885B9B90 -A8ADAF3E6A7B242A5764A49040A48CC1608A55356A8B6C26B9FB85339372CA19 -994B01C756E9D77ABBCC18A4CB7F172139B481FD1848AE5CDB1D9405BD7146BE -A36E39CC2313FF2630EDD4290663178D3746FB4452090914D44AC76E768D72FA -4264BF8A621B92836653B215D58CA5B042E4E7D2A2AF264DD684375BBB42AAD8 -36297B940671A33A746BDADBC074E5AD4F3C37291DAB60136B45010657D8247D -9779B371E630E21326DF56689F85C6CC27DA3E28A216F0BED58171CF6287CB9D -B1D57BC7F8BA0FC520F5DE0645F619C4AD5CA6499C033124BD7493DF1C6F6801 -4B29902FB859CD4C1E75E0A6D5B02EABE3AC973D6A0508C6B23F5DB7539E394C -2745E0194B7B080673E265AE425B203D54EEFD55C9C1A915935686568C435619 -3A95F967FCFDA0C967CE5F3533BF453DB99D51AEFEEDC80DDA2B08CC90B2E904 -5E3D248F55AFFE8A936E2FA3532F295A40ABB0E8F88088A7628AA67ACF15F9AE -ED7F95FA27680858E88085B2F751FC65DD79421E1C521BE3BC6204E396FD76DB -E0221A90353E93EE6E40A98BC3D98CADC0951915AA6C39B89D1BB424E73C74D8 -9AA6E7EA7DC31D2979943D4B9658097BD3FF124D64C05220B092471C947E179F -59660E8B992A5B1FDD6A509BB5A736DAACE1CFFCAB512A6651138C2CC0872B6C -1B1BAC588A47053F016571A3AAD2BD86069D7CC02568FB215E659352F41D4E73 -ECBEAF452441E47716DD4E8A5338945CDFD0497B5A60B1996E262DBCAA504B5D -CE77C79B714783A99D3445F6FA914B4A5E08CD59CF943E00F2749711BBD1FB49 -D40F017953CE6739665A616D4A78FFF7E210F7D7CA870C73647C293C92D7DC7F -F6AAFD3F38FC5DD10B78350D088A606D0E2CF6C30C0D90B59F923850C3E43223 -2EB034531F995971C48A28DB302D729394FD87DE8F242F10A5CA01756A683C57 -25BAA1D4F3625A93E72C86A0DCD6F010F6340C6BA20281D6964C98186A614EB5 -E3632BA1790E4E1B607F5F2B6262FE8928362865819AD32F11472F8A07D16757 -24155869E8470B4B5443820F753CC0BF767E4ACE3295666DFDD93D480057C389 -1609885D25EAB328A0794C9DA9374329ED1C33ED556E845F8358856A18009911 -8BDB06D215AFEB4EDDCFA86ECDDEDB57694BFC89857D2673ADD3091E187464FB -870A70D06F53BDF98C58D95119EB29F564DE0AFF274E17564E598E6E41A4B161 -0713FAF3DE0A9853CDBFFEDE22D38E22B3B0BF20BF98DF2B685ABB1BDE1C17BE -0C0500C03CF4E995A87FB4ED9F5762FC95C342E2F10233FAD2DFF7B288EEEA99 -2402DE511630A757D679A476C78CBF478D958DE5CE74517F7214874E274ED715 -CBFF84EEA41179B451F28F7829C43503B60E332C870CD7E48AD5ECBFBE928D64 -7009799178405317118B209B49854B9EA68415AF3BEA92EF7BACA505A67908F4 -F5158B0079709D215CDA2884D2D26112D27569062622DA7F2D9D0786C4F0F43E -E07DA5BD2652D2D9F55AA65914723A48A9E1DB36C59715F87C6CE89A1FF11033 -77A6C42767837D9934CAA7B994B601A562818E52C47D79777C97B31F008D532C -81D3AE83BB01E1EC6956546352A6BFC6A76C6184FA3A462BABE64ABA445FF969 -5758F2E6407742C2F7D9E08B28F16EA657532A1C3859B470860D504F5E9E668B -51CD14B65BB96ACCC5A46AA63CDC4D983D6AE6F27C80EC0C284D4479602C6093 -9C6F7D31E8FB8CDBEF0C3CC6BD6EDF9AE142C538E4034F0DCF773BCDB183B667 -46277B91656D9ACC8372A295EA7F507070CED85623FA27E9D050A0F375379E20 -05343486FA2EE2443494FB948DA30C764D0B0141A04906D80926E2513E172283 -772665DB6C1A57DA6430E98AF01B026D21AC584712AF57B25509678E0BE0BDBE -E1CEFD7240B321BA8ACD9F3DE002FDC4BFB81F7E8684AFE55AA6D7040FC1768C -F3B4E9EA9C8A871AABCC4CB88A188B9E662E5054C7258E3A33C88480F0FBADC2 -3B0CB6910A7116865D9B5302E023E0D1F2A7D25641CC61CFDCEA42813C36357F -D78931B144585CB2BEA1C97839C91A78043E7FD50539FEB408A7B590C6F3F99E -56AED19C64F5F48D95C2009C1AC9C379B70230F24D38CE89FC74B8B2522B5EBD -C9FAC472AE9A0F6539B8441DAAEF55158658F79F99659CF1770D09CEA2AEC321 -1FD28F443D26A81CAA619EEEEC107A74C572A3AC430B6590B6D5CC124F0ADD48 -F3E610F21C8E99FE2E3055F1FC9453CC35502C97192EBF65E809591C3361CE3D -E539627A5FFF6AF8071E52608F8B2948D59F747E3A622BE215FFFB7A7A4C2E47 -1C776B99FB1944D834CF01D613F6560612F75767ACA95BB808A530765D0F29DA -A7705E35D1B9754E4B20E862981F6944EF8A5DA99453AAF7BC5048E72D11F8F3 -95E1B1B8137F44FB10FD2C0A5A943107EDCE2B7088C6B0C04A4835B414C5382F -134BB4848816E7C2D1F3313ECF12809FCD7A488225E1D1185C897A0DE86BE71C -672BDA7921406CE3735928FDCB9D30A6BFEBE864A71F7E20BC9A26EDA40FB41F -8986FF3A48169370248520C2D0583BA30C016DF0F5F13AFEF02AF3E3A4450838 -0BF0577F9A5F2E681F0224579BBB77365CEA03126D8588A9BC812897FD2A7B77 -413969F32935AE40E0C9B05D7624179DCE0F89A85BF2ECE644277739C1667553 -1548A18DF73EC7351B78884FF7B63C01E861BEFB445430A30270D0066E3C0389 -953EB8B3353306E782CE55570D84EC9E6856D322E6B6394399C9F0BC846DD58C -EEA93C18B1287C9BD7B8A23F9675F89625B71DD175C46BF3256F88A39ABB44EE -970F6A21F8CE551CBC9A08F97E6D9B8A60CA82846E7F3D4781E20BB2E9A5DF02 -EFCB366EFF106FA066B9C0999CD011CA34CE5474E52C1A6F12FD55FF2E952E64 -7708C35845D403E283C3DC16A68D43DA7870615DF63C30BC2DCEA8321030E565 -6BFE9583E2C4CE3D17F3C8005DC077FA7B27293A8590DAB4FD509BA7CE11CD9B -4CEA2060925E204BEFFCD2AA934E2385A09C260C1FD89CE173BAE32D54190BCB -91D7E42CC166CA67325642EC31062FFDB06BDF7E8A410EAD0B6663CCA00B5335 -8DFE6443A3E5F1B71790ACEB1CCBE0273510692BCBC9C064A3587AF58C001FA7 -3D930F9C34A0329DEB8B0F7A18B79605F13C3C2D6A24C0 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMSSBX10 -%!PS-AdobeFont-1.0: CMSSBX10 003.002 -%%Title: CMSSBX10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSSBX10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSSBX10 known{/CMSSBX10 findfont dup/UniqueID known{dup -/UniqueID get 5000806 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSSBX10 def -/FontBBox {-71 -250 1099 780 }readonly def -/UniqueID 5000806 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSSBX10.) readonly def -/FullName (CMSSBX10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 121 /y put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2919BE7F4437ED75BF2F7BA7 -02F85142A4EADC8C9C7F11ABE2AE2A9DEA79CBF9577DD8627E31D25A7E4DED9E -FBB1C413696C88A07E5C937451D40A9211B29E24C9424635CD4FD6B16FA7D76F -5BA1DF0EC26097EEADD70EAA577531177A26B5017A32675C68052E90E68538DD -E779AB23150FCD1653460CDDCC713599EFA381C3322175809A73447720F6911C -6BFBDC0458C477D2CE69BBAFD05B5C2DA1D2E3E8378A2112066B045243D3D080 -DAB211DCC25430973C18E7FC5574A814E3EB79F34FF5197453873C8AC66E47AB -5EA57CB3C8365D5235E7746C8584734F002E9A28C38B0C25E3753D85A1D2F3CA -B8DECFE14A7AFBFB76CF3E91A1E0203FBC8052C2DF967693C9BA0ABE86B5D264 -BC345D7954C9523B3E70C4AEBBB0F2D56BAD6D76E095F9390FBE2CD607F3060D -F713ABF47F0FCA5D5C27CBCD4140C668F733F769FF5326917C0AC5D4C72F99BC -5AF4540DB169622644D320872947BCF1D30DA4EA150AA22D6D53777345858DFA -3286EB68314E30EC650C8BCC572D72879E431FB4297AAD6533C8F4802E0B9902 -8360C57504D4176C1DE7F57382FF2E2C0A3D5285A061CE91D3149E3096B91076 -1E914125CCA8D1C9230B72427990ED4468CE79C11E8F0CB89A3213C535B040E4 -0C5784E6D53C96696EE45C87B5E0DAA80D3A06E5759D0676ACF99020DCFC3E8B -50002675B01959500133BC30223C75A54948DD28FA83F399924D4ACBE33F1F2E -D85095A76AF6DD92EAD139A8D5673A35B3633D25EF3B10A40A7E28F329D6E7AD -DBF1DAD1E666931611FB107D1FD3576F11A22B50943C536DC2BA477EBAA52BDB -B65A98268602F26DCA5EC761526CB7F33CB5B345110B7A90E1D078A21E332F78 -33A0CF88EBB2CE852384DE3435F7B3564A0AFBB2024F79A633BA5B6EB7CC5389 -C43621C82972D60F7DAC71FD9DD38CAAB865D7DE4ABC39D71879BF31549DE649 -4B9CD8C149880504E5B34C2153E963B3FEEDA0D59F70E0ADCD24EDBBB8EA961A -90E5AE4ABB26E1AB1757E25572622D5A2541CFFACAB673665C7693855473D78B -847FAD590B657CC0B8289034AFEC3C54FE97B010535F70AF67ECC88E21B077D3 -A9C2C52D25CE9714EE430735DB57991AEC946C96B6988B2C85D17C8BC80EA844 -3A076618A686040ABCAC347F1B1C14676B05E13C239E99C3A2B63D0388CB50F2 -BC119D6F74F70DD96BB5343D5458950070576BD6E319AAF5792EBB9DA5778CA2 -58DE0976AEB766DA6A865F09FD6753FB4E7E0E9A06AA1A06C2636AFACF787460 -9E73BAFC4A56A99277DCB14F52555EBF6DC5E5785EF7745521FA061227B725B0 -7A5BA223D5EE9239A7A1694D4F9EC1132FA23DA44ED0FB0AFD8987A01F9FAE15 -ABD485BE098CA7B1AC780A9A02AC58DCF0425D4D110226DC7B5982FE31BB78A1 -C0AAF9B712E8D478FC4F85400B5E6D71AA653F9BB2E967A76D02B04887CEB9F0 -0EF50A956AF7F790400EBBC07467D9A8BF8BFE8200F8F7EEB5DF3E62A9A332B4 -513120FD9F8A93ED683CC47551C629B5313E4E20A207845CC37491ECC3945EE2 -71A0C5633B353B03B1A7727D5D9A0478D20D67A981F6E5CD8737548ED4348A91 -82F2CE805724A028E346E6B7C542FC69CFC7935E6CF3320ED9701C6127FBDFD3 -B20F0DC2D1F92DC69E4FEE57B457E82D5721D932B140CD6DB9BC86B961E7E6A7 -5816F42AF937D97C3149DC2AB0054564592448D0CF52427B766FD38E3B040B81 -59AA9030CE06A9A9E3A0572A11BDA85531060B75DF8791176CDEC0A9BBF472EE -BD433BCDAB926689B8806CC8044D0925814C1784A41CEA48ABB9AC039485BFA3 -026FD30CCE84AC57DF09B1581ED01B3A840AC5E9208465BC160238EECC7A6753 -D5B65B159FB08E0DFE4C9F2EF5986352C0E0C4DCA0EE62EE5C19BB6C486FCADE -99D3519723B70B20FACE685ED8D364905EA64A15981B00A6DC06D7B0E3D38FC0 -9DDF04221696F7A8F3CC7FDBC25A61D9AAF9F65D3A64BCAC4084CF13BBED7195 -6BA4C2445676804C333DA6569E4AB7E6999505DD1988C3E62495DF61B722A6E3 -00ECC4EC698E33F7B8225FF591B746E449D2D178880741074D0C3CA740312D21 -1F8B0B1A855FCA081AF1E69D14C9131B1769943EA6D5D6210E10BBD9E404B445 -FC3E2ADF8C9AB6AC07BC2FC0482515625523C04303F7884283D5CC35A4A6ADAF -59738F3DDDFB51E7134327AC4CA577BAB076F3B588FA3828971FE9D561F46358 -24BEC4C7F84D8FFEEAC94E2C632AFA5AED635E867AD362E373CEA718C750B4B6 -954A7CB6E4CB2614A4E1C707412B7B09F8969EBD5B6510B66818A2F5AE4EFEE5 -9DD7690A3520C477DECB7D61FBE5F84D1C655971FAD7CDA78E695C18908016CA -48B468BB6B43EBE1DDBC49F43B7CD667B4131D7B0C9BB048178A31D0CB70A76F -527DD352F7A9F0F35226117FF305A9DF4AEDF474FCD5C7F31FB06D4B2CC40629 -1BE1F40B6347201F84BF35CB5155BC4D2E1DF2A5C7613C27A0EE77BE55A744B6 -DF7DA5741AB55F133D518660751B0A91E6BE43B527E9C97E2F06FBEB58DD0215 -BF4105DAE1B2A29DB05FA204D0EA6E574C7344C3B3F44092F7F997654D61EA9D -4C811CE6087BA1615A31F8D107DC64F1CFF707234135B728EAA0ABB475E678D8 -9200950F24A8A61AE6AA18F34A067849825FB3925A8E01D64E849546FF7F4418 -19C0FFC2EEEEBDC7805612F7849BBA7BBD954BFDAF2E6FFE3CA520B79070F8E6 -B1509EE0040714C9F5023816250F40FD1C6867F77FC8ADD3A16A3A6275CD6F5A -21BC03274B350EEFA6EE929AE91DEB8D8B309E3B3524807B4562C7758794A8C8 -4E3C6EE0C0859AC9B799428EAC242BC4AD9564F2444E3C79F11D4C1D5672DCF3 -2E191E25165C77EEA2DB51753ADE07F5E7E748704000265649A2E1DF68909F38 -68F0D5F415330C9537A065728D2104C34CE05458AC1B2A53946890DFDD67563A -E044E7AEDA111FCBF431546D410D67602985F6E13988999E46C80A983C7F12A9 -FB56C6735454F1E194F63A1B6B21683A281AC6164B3229AE25B1189366C9DDB4 -09D1BBC8429AC3D64F8BBFEF1265611E7C2FE1D3A2FE24FBF3ED96A5CBA6FCA7 -847F5E3AD4D14C0C77C225588FBD0DA2E960FA3901DA1B46B796121DC804FE82 -C382F75AA0495312A80EF9350CE0F80CE0D18316E5D02B7BD78667C2DAABD879 -E17D5EB8F274DD2B1BFBC04EA2F72EE5376D01DAA129FE257162BD19D19B13CB -C13181E6DBC12826AFFD87AB152A59D67D0FBBE5D9CADDB1CAA8C27689355AA8 -FDC556015E4A9708995E51E46D6D1ED7B68A61625561FB594B9BEF87A1720222 -64E4F8A47637705CA32B1B4CA5B8473F1D67FCB7E4041502B7ADA9FA4B16CC6D -282FB636979D3DE7C76F3000ECA08AD6E116B1558FADCA251D67FDEB4607CD3A -84BCA7DF488C97FAA4FC195661D7977A08EF04A7D9A2D619EFC7AE291D7DA633 -C6DBCA7DA01EF336E378764F6B4E4D6C517BE05F10BD1FCDB20E5ABA7F65A8FF -17D93CDF1E60787712C40775A5C3808AD05A2F276C94B05E10C6042604F592C8 -AF1F25B98A0C78AA7BE1DE9ACF2273965F0795B0D79ED6CE2753FD0FD7B41A18 -FB490B06B5467561DFE5161C27F58E48EA5F38A5477C9CD0C2FA13683271E55D -8B08DA0C96BDE97C653B0B18096EE7C0E6BC3894057F14E83A902FAAA4C2AC7A -566A9EB8F9D622476DD4E722F55F28230124F67501866FFE952AE93DF5BBE2D9 -4B9CB9955320A9E256E611EA3838ACD9073107936226140ABEE92A096659764C -4ED2485B33E75BEA57CCF19AB9409B684EB14103ABF6811E7A8C0AE0C0C11BBD -87801F3F0260D04A8921FB9EBDA2A2048F4B5C47DF63051A0BA6DDBBD895E0B5 -F9F0F3CE62CB118B86AF595F4F34359DABD9EA354798E8561599CB32345A43B5 -93B217C43E316BD10BCE1C66A10C9A8041A14570ED7FFDD95AAA76E92EF52042 -69F0B8FBE21CA4E37647DDC890D13AF489606195900063DB0CB8D71968C1311A -D56155D2B2382119E603AA85E9ACF1785E4C0ECA137E7E4F5EE7915E8A080509 -02FFCD2494DA2D3B2AD27DE5F11684BFFA2366B6C834AE309D8E07F98B7B556C -DF3E0B42559610F1B78C79254AEBD7B0F5B3D7F420BA725AAA91EA20D014334E -8FE221BB02BE7B59FC3D03D8ECBAE21F5E37E4A0352C475F9F29C5D2FCE8CB9F -2A059AC06AD9E6F13C39F2781D7D4B3FC34291D165E5C66C5D01B5AAA2AE8F72 -9B3C634FB38FCF35283792048BACA9F7EE6789621D9243B917234405BF194BF5 -A4F137680ED10F216076AA2767C1D220AE71EA7393C7E252209B6ABD94213AE9 -F61FD2CB3160F41C4328DB8563483E13EEBA83A7935E4AC11A97DB7988585184 -6BD3DBB8241EFA1F1DC5CA9C2E16EC1EE12CAF4471FA83605DA85672B34B1F9F -8CDBAB6907D6CAB6DD7E00A7D636EA20961BAC97D1AAF32C8096003E096855B0 -EF4845013B9243A29BD509436CA78C6F8DF4F90DDED960A0D12BFDBFCEA539AD -BD4BF883E09542C9D75DCB8A4AE82DB495B0B918D330979F347A76D73B19995F -4039557D337FB55B8C5922F35B354F6C8E4D861A0B66B3D803C9862C9C507404 -5EE039245AEDB521E90F83F15E44F42F0802F8DAD6A9BF6176C364286601FC80 -E14926FA518CC035337904132AEAB9785361709CA01AB0F352317294B34B2B20 -FF88CFBCC8E89863BFA2D3ABB2A596C9D9DEB261CFE48E403F88652150EEDF05 -3390F002B2E4B53446FB39C488E3D0D4EF4AE2AD19019710FDE56FE29B58B00F -0A6D5B26B814BF64F13C35EE903FA2190F460F9438924E1D7158704F305E326D -66CB529B3A4836DB0FE383EF989C975A2F603332FFE0748E0D695327CC8D9AB6 -E036E0E6409261C30B80977BCC3CFF8FF8A9BCBB889ABE47B0CE3450783E1EC7 -1C030CC18E074E01605908C3FB61B78CF4FDCC8E8CB13EB77CE6FF2BFF91D658 -51FB05DEDBB20B0E4C5604AE3CE6D41A4C8D71A1F90120B1F90C83989B892253 -31D06ABB335DE237CD0CDC91256A54797CBA5E284B6CEA6FAE01F7BEFD905E5E -139D57E163137B5751A765B46A3AE6F653FF2551988CE792011E0548CFAA6ADC -E32B876763AF6F6FD6864E7B55E341C97FFA711913F8A7FBCC1FDCB4CF2F4D3F -17358EBCED45C975F2EFF3FB9F77A22EEE4C9DDE63360DCB2DA2C1AA4BE44BA9 -3F9CE6F27631809DBC45643DF7BEFE247E79AA7937C409986500EC1026ABFDB2 -6C30E0A4852A6976A73AD7483C36F1717460327BBC05DE729E23D370B78630D1 -7E87C99A5C3A3C0FFE204EA81A8A33D7DE80DF3C0EAB557F4E86DDF8E03AD072 -61B1D8E1BA05452A6FCA404D9BB8FE9831A367B0AB31041B474DA9536035E7B5 -EC83DEF0AE17DCE958DA19869DD51F53D4A4BFCF7CFA635D6F9F882E6F0215A7 -0494E76F258D44FF72EB5A1104E8F73AD2F6F2ED337D854B81DF4083E6A2D679 -6B5613D76DA2347118CF009E8A88924C2A42B154DF1CEFC93C89DE0ED8DB26CD -8C2EDE2670F494DC591E79DA26CF8B5FB76613296FB1F39AF2001BBDAAB12CF4 -3906B4C304CCF1D066524DCF92FF484CC682C2B197CD797056555F318279C3A3 -7AD8EA9CB19724AF57EFC6706157A5E2F51F104F6232F252594510E0E4BC872D -D610F4C99BC3ECB668139331216DF1AA8F6358EB90CE1F0B8267B878B19BA7E6 -77A53A674E0B029E9142865CB92A1596D5AB97FA12FD05A04369AA00BDCBC2DD -1AECE1A4AD55A93885C626004B41FD277AAE6DF68161F7443EFA7D9C913AF909 -970F4C6292A694AF033B953CE37116A2AF2439E482867EE9EE2BFE1093A738DE -24D3C408DD105CE6D7B8967994F7C5CE49FBF61AF135F8F7799E2FEF29A168CD -B2F16F795FB475204FBC41AB78AF87E4E80F992FDCB770A3DC0501AE1D786ED0 -449956A1BDC93876934331C24CFE4392AA860A1ACCA39978BA8AB90A2174F5F4 -97539772660D3920E1B57E9E0674CD34C9EDA83B6AF1B06B26207FE5D67E75DB -B170F1D01D512CF6D586DABFCA32404253F0A9985A29D46641A81D5A810469C2 -8081D7774B3188423822003AEB638F21661E0BA7AAC765CF8321F9677C85A562 -88AB1320B3256EA9FE0C67E5B69A5127DC1B13E4062CD0C9ED10AB36CD370105 -8FA04F89E3F836B01393F1E9365077A30D8E46B67400DDE8EB0AF8C815729699 -469773FC3F0ABCEF752A5768C9DAA1931421214E69053775A238553AB6620E9C -E875223681E60B7F7B25BEFBECDD4FF799ADF34BFB397AA114515E2133304A57 -B422E97EB3FC5314F64BAADDFEF9C0EC719A78915B26E7E3F381435563F650EB -7587F11CA3B14875F6B1D817C1EFA0B89C85B888E8391C74D77CBCC6A990C36B -1062D049E20876B40CB030367818A3CD3E2CC354CDCC9A0FBB8DFCF7135FB2E6 -A0BB0C3A441CEB8D5FE849AC7299431DEE27CE28B33AB7E836D6958104D1777F -8010546687CCA23DB48E53376A446136F449A92C07102315D4D0A897521313ED -1A3A8456A70C16EAA50A3E67336DC89FEC56AB54A579EF264377A103939D5EE0 -0A90B4F20AE1F2511469C34B5984A04D5AB8A162F18DBE4D613BA1C1C85E994F -80AFE3C18A045148018045C63376CDEEFAC53A55DA67D5980E3A99CC1C981FC5 -5C25CD0A685E3AA6F8C0B8FAAE157DB91AAA50A2B5F7D8860624F29B8DD87606 -C30F84C33D802DD5B95E090BD7AA4400E090DC1913BBC392D7E5E87717AB14C8 -A031737560F3D132BAAC0D6DD88C586322804BC2D8C505973F015F7662571FD1 -C89CA0281CD48AD84B9ED8D70D240A4EFC2715DBE98E545B987AB64FA259D81F -3F768326717675A3A2E22F4EEEA22A5201797C6D5EC644318CDA28A2C3CCD123 -B0159205FD52E1F9A60A69AF7B40C4F7189FDED20EAC3869E5F53F4955CDA0C3 -2B06D72EA2B8CA5F0B557E9A36B8E9BE7EEEF96B5EDCA6F79F53F83234B2BD45 -6B3D631B1C9CBF7D283F377177C60B3D65ADD945D31458164043A17B8DAC8409 -B4261A4A0EB36E18BD104A8E66F45C3AECC07F4E8FA9F3D2A27334F95AB79BF8 -06C18D57EA745116DE0B36C12B6F5411A9805218B5A31731CA0A35D9AB6BF5AD -928726A6EA61E0B69FF0F4FDAB2CF5B222FBF9BDF4F89EE47373AA3944678328 -1EB230EACCEFF4243D6B4F8797482DAB78C1A053F2800144A4C76BB839E536EA -2D4DCEB625DC0F754EED8BE3FA53A7AC3ED17C92757CCCCDCBE21A9D733291E3 -61235172F117D4B8305B45D7728DBB2D71411954EE599B0EE786D7603D61CABA -AB241062BE3776FA150680F9CB8784FC7A94790FBD2922772EE886254B59D0C7 -4A4DF7A2C1C4ADA1DBC51CE27D3FFF7F96BC5FF7382864369536BEB2EBA6DE2C -1C427990F6BC84E92CF718BC6D4CE9EC1F2DDEB8637AB1FD673C5BCE1A090146 -171717B39B9A83F2DE0B79CB1B836390828B3EB6DC397AADE45B21F55D1A3583 -C3A5BA93A4ACC08CCA4DB80B78AEA6002D80C5513A705E7232938D8423FFC72E -1B96313ADB255D43E2676DD2B00B51D116A328164BDA8475741EC234EE6581DE -06162F006405D6D823DC47DDD14536BB530D132975C0C436F08F9243F1A9AD16 -898823B8E2739B4428E62CE0E41C291157F1886BF937B3D3B9B6DF0D0EAA38C7 -D7F17D962490AF81157E76074422D746EBA97ECE803A205B482B03FB06D080D8 -05CFE4868E62494AE445824BC127FB7367DD9F70B2168F2B8CA0CF190BB838C0 -67563169C8454E5D0DA086467F1536F5E8A1E4D3E727B1688F745FFB4F9E56CE -4DF06341FC891C28C943B570A7A38C595E07707E41935285DFDCA777CE731DE6 -B46EE9D1C3D61DB6EB8434F17B15274840BEB842587F3B9AED05B97988E74B69 -BC472F5575B136CCEA4A28C49A9A078338F4C164BBBCE925297E4B79CA800124 -B3B8DF95BF211547456696F548E9F545DEB165B896B7DA038438114E661B32DB -EC043A557A5E26A988B25EE30ACCAA8E8C904246701E97A57C400F062761658C -DD33BE34ED09BB1BEF9525DBECFE5A994968FB0F993836E4771AF3DA8C13E121 -4FC5EABA8C74A928C6472A0912BBF8F1741B4F0C3F41F58EFD3A549E5B76D332 -D5E338A16E83EC574C45A49C1C3C21AB31A08E96B0C430BCA2CDBA81C80BD5A0 -43B8A5762CEE68CB35C76EF23FCFFD85A5845E335A3E0F3980CEA0DAD5F78225 -D947923E1054E8C2FBD30AA8F5B2BE8C21D79675F359A576DFB382A25584B512 -5F8F75A913785D877D4F44FEC237704E08CA03EB9C203B92C664F0279287E1F2 -5B533CDDA58898CB55B222701DAD14489AF0FEA3B78CD90225A691CBD75C0727 -239A26BDECEE46F3C14350F041E7342DA954A27BEC04753B00C3FDB19044CE69 -0AE6501EEA1DCF0BEAA9648BB409FB8FE84069DB8A657FFDED9EB87DAA7F403A -6B8A845FC371159F0D61B7E16B02958BA83061A3318B84A38893E07AB1EE50F7 -9D02F521B1F32B05125A0E6A1874EF1C298CFA89E4E9ACC493F6F7F2A9B14AFF -68665DC4185E866AF3AF0402546E11BAEE84F00259B404E6108AA053BBE771EC -60687CA432364AF973497A17AC24BCAC33A18D0D2620352851D32B891D1C458A -A6BF008D90E499E7A9C28C898743A8C4A711E46774020E8291191F138D2D847D -057ECAE805053934F62A3578158CA819DA043E21AACB8E006F933B062CDD61C4 -8546AE2C9AF14A9345EDE13A9A87BEA32E03F5D4EA114A54732B9AC01A0876BD -90FA43417BE7BF44A7BA61076B20D2BCD8218B41EB6D5A5CF88394D40F9B200B -F9BED4DA94442FAB21B33EBBA13D3AC4EF13147DB53F27AE47866566B32CB8CD -BA21F5D47CDA6BF2CEE32749C91435CBBD8C11ED7D5E51454BA91F4BEBEB1FA9 -873F0804B6FAE30226AB9456A444619303EDCAC59B87CCB1E32A1E4F90C185A9 -C776772BCCD30F158F572CAB63D6B5BA0274B467F52943EBFE30419AE757BE83 -B12E45D5BB98F5BE982DADF7A9E73E43535F93423357142EFA130800802FE741 -EF7B33A186FBB64726981104AA3809FFDB177930FEE85467FBF0CD0870270F0F -4054CAE7432E3AB21374A702BF415C92AE3F02805774524932AF1F57CFCC1F10 -FF4E99574DE91D69D930DF50D8D566E60C29830A8220E1BEACD02035B0AF538B -16D86BCBAA9A1C6F4B898BE1CDA222A1E64F14BCE6065F68653EFF251CC20BED -840727F2CCC9FE6E6AE075C22E0ACB7B9B7D969F5DB094FFE231AAE05CB26627 -D017264F5022E1B00CE037E54B6E1F589D5884D1525A3010F3453AC83F953EC8 -65CBD7AA642BFD158CFB5794F199F021CD0BA552C5C77FA2625F89B714963380 -56DD5F9A53A440E9677C57331BE3961FF4F8D0B3372CBC39007A2E6BF307FBF5 -F2008ABE101AC4DD5D7ABCC9C914D112EF8B55DB17C23BB842D4C6E59AA14C69 -045D2F848824792268C3611F8743FBB66B83A0FB413F528D5160C7E9F6F96730 -6CBA193CD0A44EAFAC1098C6B3B663C60C8FCB4CFD79F70CF8A887606742CC71 -666E028599059F5A86414E0649446250DA3ADD52B73FD02630CAD8F44895A9E1 -571A16E331CAC213EF69EC4DD48701EB3B456E72303AAE727CB5E8A87BD6D85D -EBBA1ACA570E083284C80928F04EB1FE18592115FD1AE307CDB81A67DA8DBD23 -24FE7A55D7AA015D742F982E6A8140DB2C438B3B08EFB88EDB3F1D471C452767 -DFC4A93054DCA315660B75D73F03EC309AF1F996590FEA9096BDB2130AB78F05 -685C4493203EB6249B37296E2A52FE14E2E2D79651288356FACAE99EBE00A272 -471DFC87BCD5D3DF6023872A30578AC224DBE2DA01CD4307DB36449D0F950912 -8DCC07E78011AE57EB79AFA7317F3C6EB7AD57E985020DDEE979F723E5A9DA15 -96E3E38CD2D4648608FDCE3BC63BB0267321F5D777E5B9F5308A9CDDF298CC40 -59C6FA2E88169F97DE5D1024B06A39C80CE6B06F6441F091C4770E77BBF617FB -F1572802B380B3E2EB7EAF4D2614398C04A3CF831CE98AA3C6C4AA46E9017521 -82CE678B0DC236840E6C4A68143B4A73A5739079126DFB21E4562C904865D34A -C735AC6C743407A28F9EA44980A1E8F6E275D79D561F7A01D972BAEC53974123 -29A0AE1E6F12220AEE98270C2CE772C29D810099986958EB4EC88C67AD417D79 -C9339BCBB4C543C6037BB3127EBE69F67127354FEF2414F313FE467595D35D76 -EC0E8DF1347D183BDBF7162FC129D3CDD544BA5781C1BF739E012E3B9D69C08D -4A8D0ECBC8C1E293FDBCC87B6215B4234A9BE59009268B8A0FCCC3F1A53833DE -EA437D980F2FAB56992BB63E65F8AA4934E24F21FE1932E50AE836315EE4D018 -7C80A30308C32393B8EA6857A00A341B6AA40ABC940E40351DDC927BC47A239D -FD8824F52E7F9D2242F2C9A5BF7CA2379BDB3E4EE84691F7EC843855D541FD9A -D444295F2858933FC37F8317E74CE4390E3EFA1EA9529C40A59DBF09978C869F -38713613F2A96F36E1975EE2FDAD38E9D11E3493953E412BCE315886C30A8423 -45F07DAC4978CA55B1CCB2840EAD2EFFE33FC1A131525CA597AE1760A996ADBB -905CD27390F03B055FCA67D0086E8237AEE970E6D536CF4F9C47798D7FFCE062 -0E0243A53583712368C4C2C7CBC3EE90A3ED791DFB6E17D5DA27D093AC69D5C5 -998CC1742BBAD810D8767FC53445A8213C56664A25091BBC59F2F5319D50D71D -D127DED73ED729D0EBDB30757211B5709EC713F40FC51D556F955CBF087055C9 -BDEBC46FC88BB52D4D638A79F484447D5B69CB603C0DD99F7924C163E19DF472 -70F6B6256ED78C81F67AEABE586D9CD47DE5A269EDB573E853C5F1D3C8A11234 -2F87C45FAD901C2C0F1B085FF3AC49CA1867B4B61475E02F8402CD8EF346C930 -0E0ECE54A79FCE872B2A87BD61C7022898FDBAF2595C7A93C5A75E2ADFEBF3C9 -05DC814982B1676EB6EC2183002BD230F7C5E99350CA686D75563EAB3B7F2C05 -6E0ABEBCCFA3BB0DB2AB91AD0807E9E070470B20AA602D7E7679AFA5CD630668 -86E27BA2DA58321D818248F8CE0BB4688EC0771FFB308D49E43C9A102D9F805A -3E62F2DC9175DC0DD158F7D4F25B2B5D3086187DB478488FCA508920ADD5E754 -79DEAC39AE797BA437BE6354C526D89B6B4629EBC1A4B8FDB4A51A7F64C531DB -9E127212E785AEE8414763DF731A2F71A9A56533A6C341B0D00CA5D4A2E3208A -F820F6241F106725582702034652AABE47A7A12F4C0581E5877B6443634648CC -DB056D91D64CA82EF87BA5810E24A8AB39E463C25C86AE0B890EA2DA6DC75246 -25ED1C8B4EA60347AE8518D147CE9D306AEA3BD12CD4BCB4EB720F6312BD51E1 -2300D272F89BD7216F34C2BD0AF45B298AFDEFF2E818ED594B672B8249BC117C -17AA4B1DE98B24F2892D80B7836E9DE029A15B399104223E95474BB850F56112 -FB110D4499C0F8F9235F5AE9391121E828F8AC4CDA9DF927ADD8CABC4C764501 -2E6AA28DCBF3BAE8662158853846D35F0E9098D9022CBC59755D937F65986E92 -E49832570394FDF9B09D147458BBCE719F5DC1C664B2E8814A28BF423B09E969 -B9740AE9CD56D40BA076C804B0A19B0D0DE2D5FEE1B225CB8C7BA29C8E23F544 -F4289C611D644096A57029C1140F83669643DD9A15C4092AFD52640446B7F987 -EA7A053C5E16055A1CC87FEB711099DDAC66669048586040AFC1A5FCDC08E746 -40A7D7A18AB3356FEB917B899BB181BC0BDB600ADBDB083BBC3651A7CF2F1A70 -5818124E11ABFAF291979900C1294C322318C8E7D5910328150C771FBA9C163B -24B9D3569865A96F90F53817F0D51C2A78F4907FDC024947478F25966206CF1D -3D5B4E33B0E3335B2F0BC6B00006CA3E29A14F6EADECA0DA653DE1BB0024495A -6E8BAF009AA479931A5774D3DCAB86F57DCDA1EFEDECD3DC06A2148CA2AFF333 -2168B0D95456B540A5EDD1AD8D4E2F4760FB89D5A9EEAC9EA2F065BED3470AD5 -6018003BD210C5B7A4F776CE21BA674AE85DE8DB08D6CFAB2C7AD425BA568CC0 -5F5A4B9A779B59D89BFBBE7AC9829C1A95235293082C4C337444BCA8B5243E0E -9892B502AEEF51E4FB3B04BA2DB3829185737C5EB6F81EE3DC0F38A6C811CD49 -222167DF4DB18E5891D03B7CA0CCC158FA60930185275F34FA9D7C475EA55ED1 -C8CD3ED102FD8CDADC37A7A4A29D5BF5A4CBF76358E0C9A242A932262AE4F981 -914981E4627673373EA4D50165020AD431E6F20FA2F5EBAA7E7BFD39154C990D -26295C7E297FD9CA462E6026F687CF98635F88DBBC73AD3CDFB58B79575B7358 -30EFC98156AB8460710C105223AAB95D2A2746B17E12C3C17035AA14E199D26E -63A4C61A330FA751203A7D6B54B1BA0FF9F3BA72DC2BF371F223FA759887D85F -B602287B10DB45CEB4A0109BA5DD23859EF63195813B41C0BD957957A5C03A51 -599B937E9011729E54C077FB04E2012E2980B305B5223DF499B992F07E990AFE -35D2B1EA666803C2665154910F1FCC96FA32F3F0BE6B7198ABA63A893B752D3E -45E00A19E9B1FBFE9575B041E36D776F11889D8DB2DD33027E53FCE9024813C4 -778966C483590FDF429D64E7103CF30D0D85DA99517AF890302B94C2E26083ED -811F292C265DD3B3971A8AEB844A38EA4E4E3D8FAD2F119FB569E46CEC7C609E -A33B50FC711C9D8052BD5ABE5304727E8F6A01FED166364013EBF3EB610C314A -619621FD38D20F5930092392C3D019A467425BCD0A55DC4DB309601CE0BBA1FA -8097BC3004E4A14EE5BE6AAD6AC03CC7F0EB3D53384D84BC721DDBFABE451DD6 -0B6A4056EA45B9777D566BAC2B8D0760CB217DD3188258235BC301BE2DDC2CA1 -B35610E0830103B9D527662A2C498CF57A8940D824A62D6FC7445C724F4C3581 -4B233D7F665A6678154CFA02B6D08ADDE6432BFC8920C91BC7113F0D76F58FD9 -3A73778DCE0378C7E9EC5300496FDDD6A725DB863CA660C989CCC89F55012E15 -2EEC3F66E77DCFE1C5692A596F01AF15AC0C5B01A3F6EAEF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/UniqueID 5096651 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 110 /backslash put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 -3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 -91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 -E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A -11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 -C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 -D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 -B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 -93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F -10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D -7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF -B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B -491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB -F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 -019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 -915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 -356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 -5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D -9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 -3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 -FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 -720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 -D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 -BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 -7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 -DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 -AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 -A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E -0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 -AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 -CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 -0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD -5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B -5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F -E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB -54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 -E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F -A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 -4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 -4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 -038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 -B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 -5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC -B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 -A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD -2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D -CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 -455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE -FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 -16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C -16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F -483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 -67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 -3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 -1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 -93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA -051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B -8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 -8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 -6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 -06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 -84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 -D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 -DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB -0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD -8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC -C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 -754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 -1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 -CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 -1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F -153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 -905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 -617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 -8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A -98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 -53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B -888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D -052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A -CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 -A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F -07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 -B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 -10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 -CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D -3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 -D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F -849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 -648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE -84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA -2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD -2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 -9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 -B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B -D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 -135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE -EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 -C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 -7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 -4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 -9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 -050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 -3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 -C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 -843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 -CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B -B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 -3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 -19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 -FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 -17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 -8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B -CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 -F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 -1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E -4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 -2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 -9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 -E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB -8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB -BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 -04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 -C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 -ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C -4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 -84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 -C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 -09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 -D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 -56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF -035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB -FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 -CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 -B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A -F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD -CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B -0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C -B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 -33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 -4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D -F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E -2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A -CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 -88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 -17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 -55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A -A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 -2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 -406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 -AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B -60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 -C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 -5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 -822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E -94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 -D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA -343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE -894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 -DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 -DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F -8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 -A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA -DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 -E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 -DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC -4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 -5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 -02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 -88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A -60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E -71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52 -9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016 -A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44 -AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829 -F1795501020D5FF0AD25584C1D4669353E1273F51A39C279F1F8EAF073497C25 -E79996A530100DD40A73BD980338303E192978236F8EC6BABBC8E4395F99C2EA -8DBA2BDD01AB2030BBB19C9AA104BB96A1A8BF9C25E29269E77E5D6805555B2F -05FAF95D67C87108293EF4BB90A5C2575E484537FB203249A03F54D324D3C4F6 -62104C8286DB7C0FBEF9AB2A75D8A17CA5464B417FF0DC1501E40B6D9A226919 -145F74A039B54E80023BFBB07B71967C420B23004C4CDF51A94DE0A2708C7957 - -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.0: CMR10 003.002 -%%Title: CMR10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup -/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR10 def -/FontBBox {-40 -250 1009 750 }readonly def -/UniqueID 5000793 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 46 /period put -dup 49 /one put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 73 /I put -dup 79 /O put -dup 84 /T put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 119 /w put -dup 121 /y put -dup 127 /dieresis put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 -569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 -24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A -2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 -8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E -3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 -D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 -D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B -03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 -767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A -8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B -DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E -94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 -22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 -72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C -8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 -344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A -64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B -07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC -1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 -78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 -CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 -7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 -BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 -4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A -5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D -EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE -EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 -4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE -0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 -C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 -314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E -DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 -EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 -DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E -DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 -7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 -1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 -69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE -EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 -7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 -CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D -38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 -22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C -0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 -BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D -4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F -3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD -B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE -15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 -849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 -FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 -4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 -1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 -84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF -7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 -CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA -4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B -3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 -F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D -F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 -DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 -D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 -56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 -8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 -59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED -49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 -87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B -8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 -C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 -D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 -D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 -F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 -0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B -5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 -229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC -17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 -01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 -F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 -3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 -689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 -4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F -A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 -DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D -364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F -7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F -26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 -43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD -8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 -C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 -94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 -C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 -B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 -4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 -7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 -204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE -B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 -7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 -279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB -E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 -CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A -65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 -BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 -6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 -B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 -63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 -4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A -A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 -67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C -DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A -5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 -C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C -9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D -B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 -963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 -D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB -B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B -72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE -B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 -8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB -3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 -668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 -ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 -69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 -C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 -3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 -407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 -11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF -2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 -4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 -2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF -9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 -CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 -DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 -0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 -5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 -9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A -EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 -09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A -2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 -AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 -324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 -486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A -EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 -52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 -9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 -4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D -B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 -BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 -6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 -B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 -16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED -E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 -546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED -6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 -559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B -C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A -ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 -04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B -7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A -8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B -A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 -94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB -C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC -41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 -7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 -18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 -9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD -E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 -5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F -4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F -E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF -9F9EC2518C77806A19730C97F54BEAD10B4729E5749A10EDBE644886443D1249 -2C8517DF8D8AE98E2882439FA81903941B363A7D885F93C6DF9E1FD89F2F8CEE -B870C409ED13E78B4C914813B0A01DF8F876EDCC4F384055FD37C575726AD69F -F23D50EC5BEE2FB95A44F2B2E2DD94C933D90BED2C97B53738B4B2ED56EBE617 -BEF17B9DF4F314A37F10FDE34C570D7BE76A496A58242F51E7321380CB042424 -855F4B53071DF5A0DA5A31B8AAF9FB4F4C491625FF8FD008BD4402918043BEDF -77B840B2BE0DAAB4EF904FFEF935954AFB9BD2041241B1BC8519EB642C89E288 -479664226DBB6F1171F9EEBC7E1273D0CABCF6B1BF7F26AF21C21D9B1B916F4F -603DDB68D3614B86566FC91D67AC3F4A4A96E256FA1A3BD35F4465AE4EC64D82 -34BEB4BBDDCEEBD9A89D932E55F14CA2776F927C4FD3E0920790A57DAEA08C5B -169A3E2309DA6BA8684A5D1DEE81415796E13DCF906FCDADB092047831B16841 -B250CD148557D72DD7E683BF122B38E2C4F614E59B395D1D9823D7D5F126D932 -14B50A37FCA7120F8F3A8E42134F1B6B0C248D56F247AA68FB941839F600F61C -14247EFF780BBA3E5198D37CED44DEEC3455048FC451BCDB48DC414AE5293A60 -5A59877D6DFD21EAD729CDB7B378CEDD34262B37A194EDD0BDB24AA42649375B -491DC08F6B03DFEB517B2FC125DA9373AFAA94F4E4BC09510A73E079F4ABDD8F -93529E898B13ABCDE7322323B3A2A02A0BF388E89B4F529A66FA22D38E3EE342 -54475A1989BFB7A119CF95750D5A18BB4FA9CDA30DB6F1AEF8AE8448BBC999C9 -FD0D74DE9A17A3153617F07CACE92977B68FB5A1CFB29FD42494D5D2B9C1ED81 -2F3CCEEC1BC079E837DDBB57C7E351F9925FB96349F8D9786D8E6FF03E9C4C1E -67DB235577B68003BA14073E2702296B284F803259283005D97035874D2B9AFD -4D3F29B4B1E6EDE30DDB9C68348CC174A091791FA74520C8614D4FB1125CBD6F -B9367559D715ED057FDF6DAAC180C7FA5CCEFD0C5878A91B20D4919792C03CA9 -3AFC986C34C08358A3E85F241E3F8F815FCE7C8E07C2A4258E17D65823264049 -3803D47C96A2745580EDC957AC4291730A840A2BADA50A28342A2B7093A3F731 -4F4F656E974389E133C53F89D5DD6407BB98B211697941A927BC72A0956FA78E -2DC624B2C253F76778698BD1510D509244AB0462BA8E80769A51F6D020E146C1 -7EB6D7207653B80610F8896EBFA6A606EFA54791E78139918C010A404BAD4B0F -F3779D39D31D665C528290D1D4096CF7E65F18936508848DF4DBF77A197944E1 -DE53CF98DD5008E84A4BEE48C971DB9586980FF90D4AA43C5277C1676D4A6896 -BF3168664C7F31059AEF729BB5BF404B88965F7094345DA4F8535C60FC1FC946 -4285EAAF493594567AFB161F8F98CC3027FB5FDF901190949B4B6A3297C8DAC7 -3355C84532F7A083D5DDD9A52A0E8E38C858441CC99C4FD0FDB0357BB5233F3D -0F6212F013072DBFAB7C061D56CE72CB67E59EAE0D87FE8400FACF1F3919565F -1D434F1B0B6E1EE0AD2510D6B21D5E44574A1142688054ED5805F3788325FAB9 -397B4F558005B5C6CF1EE514D77041F132E00B13A76A105AB3EB6E4FCDBCF1F6 -60E8262CD10AA45C67562303483314B5B0B2E7C4F285F9BD614A00DE68255721 -89A19315AD384AA2957AF8F20D293F17F5521D3311F85DC40CDD29AA85AE61C5 -F3A6A112882F7FB92F190B2F10903EC9AA11B02A8239798483CB105A78F53D62 -AF3EDFE03A794C0AB1BBDC245B04E8BAD801177B0EFA57A1BEFECF8CD29EED55 -75A3EA75909A28E41A42AA4CCBAA4F94086AB50569D9728470C768F2CAC7140F -6E4E141EEB1D14F796AA6D036117EFA78CBFF7D25EBF1E4DEF5F9EA103CD8FD9 -A3278AD3177806EA98CAFC7491019DDCFD1C34E6D4DAD24892A71B82D94243E5 -66DDFC314CAE502517B50069F984BEA9E7BB776B37107C5E9BF929823F9743B9 -EA2417E3750F18E1F491C658037300F1E113F01439C816B4FD088BD3BE37C6AB -6CA38386B188DCCEDE505281359373DC0A0E0019488FA5E8BDA6B7781682CA84 -F36DE8F89E9E4518AFFA65334E2C3A5C2E1325D4FA189E4CA00F948D6CE6FF54 -9C179EE04E483F5189130541860067A3119C3639A44BD7A7188498CCCEF4F408 -A3CC51FB47D0B21212E708A32245D8E2BE741D163595A84381EFE64A06F69632 -0EBEE4C7AFA2141D6F120889E3ECABC3DE478C3ED3C150C391CC4105490C9078 -B127D142CCB6C1B3C85976113EFDBE4F7F321B9AC5E0FB1EF3B021BAF474A9CF -A2EC28FEC13422167D2F49D7601A570857F590C7B904D64166FF0A87986CC9B6 -EA75BEE378B8328ACB3A5021D490B3C7065CE781C378C1F01DCD70EDDDB83F48 -A61231C7BE4C83A0765242FD2E9ADABAFBD771DC29AFB98C6CB1BC8C83ABCD97 -10B607C6C05D7A56A704DAAF9AD3AE67DA3476CCE84832BDA1B6BB5244DF4DCD -65AB1C0EE6C6B0EA56507C3D9DB10BA62284CC1676852D451DF2CDA7FFE09897 -138C27F7C6BDD27B3520C31D398026730C5AC6998DD218B92FD4C8C69FC7C0EC -74993155CB94633C9CA2925980C37740F766993C8EF1043A56F6453B862F196E -BD7415B50090D1A97A1E290D9E1774A095DF0B82D0D20D0E8EA09BA0D93D9F8E -DAE5DF1E8080485344206AD6A9B214C02A57BB9900646AE4EB85A905D3F9D12F -0BFD63D823161186FD0CCE3AC40A86D14B2ABBBC5EC181E3F95AAA636BFFFAA8 -ED2789F734A9E258AC19F8D91DCE22B7229605912110D3C88C27E32FC0C1E0FB -E4E6253B00E17AFB3A56E80E487B1447B00CFA3C6C8A500C6E34DE1AB52E24B4 -29285A06EBEA61BB134055B25332C4F2AFC4CD63E51AC2C563B89563D0254194 -DE000681912B191666E7CB012428ECD18DDA85972F4E252C25D22B83076B723D -FC464F67B2BC065A56AB23C6A248F309DBA2E131A6EF79586E58C22B28FFAF47 -5B59BAFB5D54BCDE67B2D52CF54D722A8DD65A69B6CAB613145652A976CE4D39 -64D60C0859891F96E2FFC98EC71CB8627476F971C108F5616E20B6B12B517C95 -400FD210006D7C81518A744CC70DE55F76AB2428202F64636BF1B4050C143424 -1EDB33B6F1555CFD821DAC359ADFC8241D77E2E639514CB1CF6E169312544A65 -D68CFF6687283DA001ADD5140FF92C2A4583000060FF3717E66736B72EB97C4D -B5A6B6E1AF4FB0AB0CE7F517E28F67D1FC76296917E1B91F2C07AA0A48FA9399 -B88722B1A4A755CA4825EA272C1D104A426AAA391D9125ADBB46CF1015357611 -A75D9D098A27F61719BC50DFACBBC89A3ADD031C747FA6722534BA34991AF3F1 -BF309AD264166AE4DABEAB56BC495DDF63F51F7F49DF8FCB5BB79C8D01A8A9D8 -C19AF84132DE8F5BEC0E4660654B502F46D4B36A0E52ABC788644066DE41DB8E -BC5039741F62FBC7E022695E2616AD42CA90D225A8B0B85582D26424B74C146E -164A78957817BF9B0F2BE120B0C0F663659BBD109420C6849592A3376F58135B -CFA5DE0696385BB0FFB6345B70A720C655CBBFB8E3BFE02486371A0ED1ACB555 -52C3342A01A2C825D685A50DF65F2F9D27604F3F841AE34448CAEC9C5620F73B -A0E13D41CAD8B041D7B68FA7946BF6545DD7B4C68A3F79464C1D64E30219493B -2267C4CE8D70C1DB3A6B32B70C9C0A69EFAB858FF9D52DF1EE64CA7541750A5B -0C8A64DBD11D7A52FDFFE8A2AB92BED886B0533C7A29452DBA1FE16FE252C76C -2147179049E4CC03E5301AC7B4A3EACD5C0C215C3A9C0762A997502B0A338A19 -94D371C31198073BDEBC7CB5C9DD3EC0C33B5AB9DC0E63EA214DC576A11D1E1B -9627FB3B5E091A7C7480AB572D86B3483BF28CE1E4B2F74315016D0E2D277A75 -7DADBB5CFE83D44CCF99699BF548A45F42602F075F9965585106AFC9DEC1F5E4 -2E8E625AA80C1A23EED1027787E23EA1E2B6674FBDC70D0869D9A1D2956BC4F2 -DF997A23D396EEB029C38CF7C0C775C25AFF4F50761090ADB3C570B631575B0C -99E46BDCAA4B6250238E5D9B07CAEA824B4106BE1E86015E6509D45EA4B7FA9B -BAF2F6E2212876DE010F4F42EFE163E4BB5C2EA8BB7DFCC55C2ED9F1FCDEC32C -8FA5C996E011DD4061E9E4E543141EEE7BAC2E59E2A70FAF1D325B4C3CDD7550 -1AB42F0A7A5283248B42F9C6E8B777698FF688E55246127F4D63B4DC5DF2D690 -76FE80C695AB9982C18D48E647518EC2B76EB697066953C3652626890FAE9E2C -E05BB5D8FF563F6431A56CA3B3BB06FB222134A4F3273316F4D813AB4798649D -D6D76640E5267654244891ADCE677A7A599D22835082A072C3772C95424FA45D -F7A2553E5CDDD74FA70CF540AA72053645573A5BC1D076CA56CC148066671B08 -623163ED2DB63672DC00C6B2F3A90103D44035E6C62762F9D570EC180A074BA7 -5FFBADCD2898CB92192D631588C208C30573A8F7583EB55AF909494F65408672 -CF9B4A2C471DE1BFACCF8292D4EE0CFC3DAFCC75CA917207D7FF60FA738D4CBF -DC5A9D10C374BE5D3D04129C5377CE1DF8D68F276989559C2583C6196AEB4557 -1CBFA629E30DFF518EA89D48B607797221D94774689E26FF5F85C498D1AF5FDF -B24415B519C99E67F653CC52B83A5E6AC4CB8529822733E26DB40148B6D244F6 -4B5A75F275288D9F8065FA60FBA29F8B19E467C418CA57A6FE618126F3ABB59C -6D76CB7D7A8EFA3C0DD4AA65E4D49F8FE9F3E71E95ED6677BDEB1D2223DCCC48 -9A83E589D293050C20847A3F53178A895AA780BE8D374A8D48A10B8B0B3D066E -BF6E6D9E8908EC21DA73E6EAA222400A7C729E04FA077550FB80F5C19CFA1A1B -6A9B58AD9C2F087A730EDF4EC2415991D7572619DC7341ADCD7839C05E1F4251 -3DD514ECEBD22658FC136B3F6DDDD5CBCED5DDA4C5191E76FE427015B2863065 -768A4FEFF46C68EC7F68978C1D2C23C53EEA6C845DE21A5DE77DC935D2A4514C -8A3E9BE93CBB5E16460FDACCAC0E425D93E6D617443716C6721F2F119AF44640 -83CD0B9D7E26AC928A0195F0196BDA8F68DF53B5D7592B4655202BEF769BE4F7 -9FEA39FA1AF47223B09FBF61601636E76BCA286EE0BCF5B1923AEB3F9FD0ACDD -3BB2526A8619175D1430440DBE02AEC0C24FE51276C4BE36AE93A54D8378D3A3 -227061E257DF285EAD467904A0700AD002E718CABA338D2CC52F2483FB1035D1 -D065C64DC509EF9B4747EAA3AF3A02CB64EB6E55D3F3C19B8735BABE26852C6B -EBB2E4D8FF77A040D1D5959E701565ADEE7E413340F9451C55B0575E3B18090A -2C28B3DFA6B043BD1EC2A5DC48402479F24D630D743EBE9569A4A63CF6DD9670 -E335A22ACD4E09900E11BBA673EF677A021AF4A4A5A1CC56532245117DF5BF0C -4FDB0AE21F56E04C0BA9188348611C0F67032F13B6D6E404C8B3D473496646AC -0D414E18885768F0D65AB506BE36667F54725E5553D664A5C2E9601026989EB4 -7AED1F81FE710FA3FF3056729069590C030E702B9179D0081BBCA6398EE8C01E -E01766D5C9CB702C4960FE23C4A282DEA36D96C7E906E0060643D50C0C1A5169 -CE7FEDFF384D793DD14D9735C04059058CD3226579DAD72467CE95CB76E9092A -42DF6FFB6D567AEF67B1BE359A6BC569830B4EE65BC7832CCA23979CFC48EE25 -F1F477B8D723C0FACA8B24C48D1A7320D6DFAB3997F58A4ABA7439F7AE6C73B2 -CC29E7A7B8AD6827647577E4A677A0B41DCD206F45D6777A55A864D1FAF919B0 -4BB0BBC5CF40264610732E00DEC68CD355F0027C683B5109110297EDEE6927D9 -0CE70C98D22920074B1DFB834413F6EF3FF1C9E1A758A6F71D69BAD93F473672 -BFFE79BB6D990B1899CE3ADE0BBEEE40A78BC517710DA66EF190477B360AF75E -8DECF1BEBB8D623169CCDD278F86B41595925FFBF10B4B2F8D7E210B185EDC9C -5E14D78F42FC0BC3A3BC8A6171751C35BF5DED43219DD48407BFA8AF992E97C9 -8E622F68EBDFB1A9358375C8CCEE0034E692A3A2A74441FF6949A8AE17F5682A -F09410E8BBEDDAE83E0D579C6A572DF98723B91C04A2D93DFD09254A4EF1EFFD -230721A13C655F2A0A7FABF796DD3752EEE89C4E066A06CA74AD7C3D8977AF6A -577DF17CDE2EF71C47799B026CE94B611441229AF08692A9EEB18F3E2E1988DD -75834FBD9F9A692DE870A5D43A77D677A3D0DF4D0558FE8B1C6EA0A8FC77F948 -4317379E4C140CB28B5BACB7F29AD176CBCEF1FF96A492130ECBCF5BD9FE5AD0 -C24595D9EAE4A4BE1F8AF27295F140207CD1D4BFF05BEC897A511F0273EB7958 -18AC6909CBD5737063B9D30C9BEA261FE5413A4537187ACAAE0A18C0EC6D073D -0CAC6AA417E1846F12DB12529F983AF7F805F790CA533797E9EAF7C2E8979AF9 -933CE692EE74EAA1CC4657FCB2552C97BFBD1C6CA771AE7362888840F011C136 -13B261332ED0F291B6CCEF9C5F3F766C8F66BB7BB57493124727F254D9F0CC1B -550CEF604C5B2B374B2CE757ABE19925372EC679AC3B78EB66C0B1AEF5C6AC3E -633D475BD3411CE0F5B84A54FD9290EAB4399FBCC2FABE659D0E0D342B80DB6B -AC35ABE3BB6B80FF87DFD311436EF6F268CC3823181136558B6F48B8A7322D77 -658A9C2FF41DA157521FD02E22F079E32BD23E408766FA14A9CE1C65F9E73D86 -723864E3AA0FF74B367A46A2306300C928AB8E37AFDAF788FAE595A7D53A9FB2 -CE8BDE68A11BB6F0BBF48B722BCB32CEFC18756B74FDB79F06639FFD8DCB909A -D5FF15C0EEE2D97EBF64F22534E4F80BC7B319673B591D649980BEABE6572CCC -50DA0708ED65E7493B006DD95A48DFA4CA2142C20AE83276F1DCBD37B6EEE61A -8FF20C3D45372FA7EACAE98C038BE4B911E31A261ED29FECC5439A70E74C4CB6 -F08AADA08C128DF35990FB2E30359049494C6ECDDFF663176654657A2945B2AA -77D17031F2007ACB9861CBC04F14896499D2303842C303C712175B1EAF4A2448 -F29CE39D0AAC14FAEEAD220C23C990D1E9911C8DEEA7C2226977BD5EF4261116 -74F54B064D25222733DE1EC50E6BB19ECB89B9DA9A937C9DD8A4C537C73B63D6 -670DFD03BAE4168EEC2475962CCF7048CDE547E8FFE9C2B251B0FA169FC08467 -53E619D91BC4342A7AB2381AF0945CE121A947C0BC2B266024F8C50FC61AA4FA -A90E9764268F79DA2A058FA47C9627607809DBB6377F97E754D39A2390EC41AE -E15A8128362D9A08F624DFC8DBAFC4DFE8BFE5C7D0F916DA2C0704D651CA2871 -1CF116750B65F38F86431FBF1AB5BEB944D266D5F353B384F0567BDF016BC7A0 -C3B36EFF6E690C355F309B449956401E90D94FA19CA25442333081AA87703549 -12304787789C4D914DF58A1255D84119BBB3A05A810D772A3C4D91EA904996EB -442D094B052223890340355062218149BE73FC31BBB33878DF4DCA0C407613AC -AEA55D731368F373A67893592BC795DE88CA748857D3BBCE909EC26CA14160F8 -CC1B6D993D358FC9FDB4E3A5BE8F0D4536D88995F7A2B4F7A8F699ED497E150F -D42E71B27697F18AF7B74F310FAAA432CF5C296137A73D39E54D2B9C55425F61 -4BAD5264C4D687BB9D3445564FDC1BC7D9D4BC48CC05727B715833629BF11F0C -CB9CF12497FB056B0D8C182DD9A22D714A163C9FB2DA05B9F50970A55C9E714A -209AE43ED2EB788736A65A4FC3491455E1971103E89A0F7DE43CCB80C2D082D3 -1653BA483F993AF8BEF36ABF3FAE136A4232F93948C8B32F8A2519F45655E204 -AEBCDBF1877B261DD983F9FED8301E3B57DF34EF84B91A9927915D64F979B392 -A5FD1D2493933E57DD346FF2F9527EE44DC83CCD632A65407A5287AF794DCF6C -ECDB895A5978262BF5A7371EC55CABE222A81F580668A193120D921B2CB7761B -6E92869F97AA77326F4F458C6346B97BBFC1446B854DE5D7756A9A0F5DA6A45C -2A5EEA3DFDD8C57B1C79F65CF17AEE04F9036C1206B3538FADC1CAD903C7688A -7991C53917ED97366571FF0E6C77426C768D4E57171FB4D464644727B8F998E1 -54D269AAAB71EC012A3317EA1244CFF897600CDBBACC1D53612DBBC5FFE09ACD -BA2493DD2557D48657DF7C4512CF63D6CBA9616A190BBE6D1E4048275B5A9BC3 -9BA504E26069E9806BC6A845B14557E7038AB37FDF212CE86C636D6239DBA113 -DB150CB5678B2701F1C90F361654A0CDA76B40AF409D442CAA20BAC3BAFA5B9B -3B17EA86675FCB22B9187B0ED28F824353217ADA0E0B9F61E79179CC5FF25BF1 -BF2FB24A490EAF99081494D29CDA270C893F40404BDFC68FB9DA63A231D3379B -9F9A3873365CDF9B6A32D842D26659CAF48765654F05D707042586DA605BE893 -863B987F05E5F0A29D32C13134F2337EBA7EFC269BA7B2F041FF542D36F24D39 -F71F3DAD9DF9E74B91033BA8B1FF01A3F3A19686B5A5B4D05DB17C137BC52AA1 -6F4AF7BBF819488DEBB5571775A7758727931366900E52AA38652FA92D97690F -49DEF882D78B073FE10BE9D053F69949A848A8EDAC11DC0093B331E87BA94897 -7491A5337712718E46A0933A3E2677C646569CA16BEC31E5CC317BF49E3C7203 -D06A30719B097B45CCD66DB02F041C946C8EE77B62702F4E7E5AFD05BF611E9F -F64D6C9A5E948C5F4B4F5679D14032F3F4FD9D4829EB63E3FB8B4D4165FA3919 -ECA69EED712DB0FF3A74EB6F5389499979C3184C28FA6BC25577C1D427AF629C -E597D92FAAA099DF37BF335898BD472391D2EA707CD0C32DC8B6A505D4A7740C -F3466D4BCEC6361673853B40538D9F3E28C5CCB3DD481183EA39C3A3952C26D8 -04DE8422C10E5695CBDEBD3BD748A93C7DD772B5597BDDA47A7515832770D0A1 -E20E3520FEB8B60A8A727905B90DBEAC81F8E0D9FD98421BD18917E469C32498 -B7A1D8F18400C2F6A81A119717245BC7D5BE7FF27274771A1C51AC83CD2D9616 -1EB49CFB56A486FCCF47B7BD42245E82282ADA3CA2D6CFFA1834DEF4AD51FDC4 -7065B4C4C56944521E76433C70447C7107EDC136BDBE624D88023D8754DFB982 -53E5BD12B30E7294004929956902E661F71EDF9CAA53AC43D49401ACD313A93E -1141CA49EF4361FF6DA3A6A368F0577776C32FDFA3ECF53475312691EDF12966 -BF5D3C69B2B09A062DF959625C841727AB9AB4353CEB13E1A06C7AB416133FC9 -8ED0904D3ADEB8F05F9BCB66C6F04BCBFBCCFE25BE89087C85C615F9F84F4602 -9C72EEFA154A2BE435FCF5D3DEABDE64B793961C9F06EEA3A8902B444167A342 -539A76A69B4D5F6A73B7124871AC35FB846576394A02BBE80A38FB388E310DA3 -63EFDA00086DD59FC21875C34708217055EA38968F29D6CC98B3D959240E4853 -25EAA1A6AF9588B78A0A6AC574873B6C3191282D4F3C100955052CC8A04E8FDB -3843F31781E71838593BE39BF9F177F9BD9C7300D3C2260F36308007E6BCFF2D -74245E0F81A692E3D37CAE4FA2CEE3EC5487903B23773823D50FFF3C079B9F90 -CD01BDC9F4FCA357233D3F059F7D29C2F95D5F0FF4DEF948F5FD5B8E04D7EF34 -198161813932E4FC9B7FA50E9AA356DE7602F908AD71EE21391B3CE512C9CEE0 -C1C60206A5C6D9CDB4EAA65FB654B23B417DD407BE99773A43545F01F05BF0D8 -9EB1327A7F0A00A7519D03F8872F4D2280E243656774911D679FC88D10D253F6 -C8C1E034CDED477724FE4B13A27ED520DB3BBEC21C049211BD949537D9FFA189 -3B0270924ECA20F20EB9FEF641F9251BB140CB1CB36CFAA76479B6850510D52F -A1E533845A1C7BB9B3BA5A0BD04FA76C03ADEF6AE8B005FF03101806AEC7066D -03EDAAED0352C5A3F9470946453DE958E11CCCFE17FEA412059C614A815F5D78 -D3D379783374A055EF0B0C7C4A2136CDEBB2FA7AFF2D095CDE3996C1534BF247 -E764737B814E6C39C89831A76F0EE853F1FA86C3D2000D1AAE76A47E98DD6377 -8E442068FE0C2AF3004C2DB654F9BDFF412A5B8415BC85CCB19DC9263B2EB900 -1DC907541BCA2AA6A4879A016A99EF4E1179660F9ADF49D7EF3FE7D9FAE42BD9 -B134DE6E22BD65BA2FC0904B349F192FF105F46E8B849BE08D78326A200CD548 -06C792F185F77C8C01EFD7791BEA93D7E1868E936B66E77B11EB71C7ADBDFD47 -30C1B10F097298960077CE4EF8B43498FBABB364BDF1CC74069BC1232664A778 -05FEDDB57A536DD97ADB6893C484FBF638F0535AAD005B9040F8F4C5A8985ACD -596365FC9A066E96B3096F2A709E4BA2B5191733FAA31D11B4AD30BE9BD06A46 -03DBA293FE94CF06ADA2C661A9E8EF65103980125119447003AF4976EDAA2AD6 -79C79EAF57F0819F9649FF6E829D8B403F705DB3B271F788451A5F4DB47E0837 -940E766CA6EF0799EE5560BD521390737355D4BBBBB5DB6EC9E12FD3AC9B735D -1C1A7EE65285A7293E7EC30F60462283728E2E1ED4CFBBDCBDAB4EE0BB73FB7B -9382EB082242E48E822D5BCA5C88042A7407D814D945284C4CD9DA223CD41FDA -F640E3E64B86E7A9505EF421B0588BB2746F03D4C370B13C69F7451B98B233F7 -B979D63C1C86F9BBD9D3EA06EDCED6B84C0408A7D5E8576C43A0C0CF69D7CB0E -02126074E9B3D0A580B2427F9F6C -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR12 -%!PS-AdobeFont-1.0: CMR12 003.002 -%%Title: CMR12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup -/UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR12 def -/FontBBox {-34 -251 988 750 }readonly def -/UniqueID 5000794 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR12.) readonly def -/FullName (CMR12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 44 /comma put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 56 /eight put -dup 72 /H put -dup 74 /J put -dup 84 /T put -dup 97 /a put -dup 98 /b put -dup 101 /e put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 117 /u put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651 -F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224 -FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B -8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0 -B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A -966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E -CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4 -2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E -56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295 -EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277 -E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973 -5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F -847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000 -72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6 -3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2 -57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB -B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7 -547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88 -F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535 -47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444 -24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7 -64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204 -49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7 -FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD -F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A -DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97 -CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1 -7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5 -459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918 -1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1 -6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846 -67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5 -71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED -C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345 -2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E -3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF -CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801 -F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8 -16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542 -29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327 -0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02 -A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E -DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346 -39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254 -28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56 -FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9 -D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8 -116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F -59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74 -482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45 -4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A -323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17 -C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB -5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179 -46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1 -E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C -C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3 -4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C -BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32 -5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735 -9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117 -52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B -E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2 -655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC -F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42 -FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442 -87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107 -5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6 -6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366 -B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03 -3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A -A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34 -343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046 -BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D -775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5 -8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0 -7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5 -E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584 -397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65 -7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689 -37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257 -2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E -37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817 -DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F -89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08 -90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1 -EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7 -FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C -5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B -8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665 -54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6 -4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8 -86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B -08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E -D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B -B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54 -6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC -3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1 -DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C -A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98 -DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E -748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A -C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879 -0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA -1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D -6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422 -E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6 -F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76 -FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016 -E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D -903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B -6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21 -2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66 -139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4 -0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9 -E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1 -2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6 -585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8 -D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E -51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E -B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3 -A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E -512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5 -F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D -E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5 -1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB -F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407 -1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF -BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55 -BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578 -43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E -AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A -2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51 -D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65 -8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991 -9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8 -BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925 -969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A -3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A -845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31 -E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D -6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407 -E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93 -3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733 -52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6 -F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F -95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149 -AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8 -39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4 -8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3 -957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07 -55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F -53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C -D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106 -CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E -CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46 -BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1 -B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5 -218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521 -3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86 -31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9 -7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 -196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 -1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 -ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 -82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 -E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D -F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 -2F3AD7552C48C6D71102367AF3DD19DD76FA71928B63D7918C3DEB88840FEB80 -D288565525B144453F03FD08340E2DD4777484B552E241EB0180BF47E9A19BCD -086D89AC4DC263E273CB0F1D2E2082E023038DA303AB252AA63564D26ED8721F -8EA7AB22FEE60F04C671961BD11F2080F30456DFBBC89894FF05BC9517EB869B -40A4E58290546539BFDB4BDBB450AA7A70D019BC5A39236EFEA6F93A9FBCB8C9 -7EC6DC89C5F27EF258F0D533FE882202FB786D0CE1A9D7D0CD18CEC7826291BF -1D3DF573690386F2ADABAEEA8E83960631A33AA07BB7B4970477C46E92D30D75 -6E9F27887A8D1CE84F20F88DB678A0D65A53FCC7638BC932CBB2715639B5786C -3E4C88CCFE8F7D758EB497C82FB73635E828F165B2BA010AF65D973D0FF3CBD4 -71CCEC76F7E415FE5C72FDF6E2D511B5105874E9B69AD641302FD432DAFC4D80 -6B6CD4D1D5B658D4A984B34A2666ED8A74B8A070D33AD7A0E411C644BBD42FFE -AA7FE68F9E5EEA0521867422FD6BE49B18BF8AC265E40049F851DBEA997C34DF -3CA77697F5D48FE22C64C303D089E0B928AC2712EDD68A0EDC595FAF83B5D4E0 -28EFCAFA72269A4FB0CCAEBFECEDCE66AC7D1FEB9DBA1FC28C33DB8B89D5CF97 -932939B64B63070D7C293EF846EB7DE76B5F06FF4DB59278DA0F1111FF97FD5D -25291C63D01506FB143DD9677CB27DD0364FB1D756AADB0D6DF4816B0B1118F6 -340C38E4FBCC4C393F928D47585ECEEF5A7F8A15FBBE393029B12DE7E9E4D781 -71AC2DFC33FD7D59FD80DC1A634C5D99A068803C674B94D56D1520BD4B21FFEF -E020A7B28948FC4534240839D1C825B4E6C4C0844F057A38EE984B7E5B9AD8BA -533B9492E64A43E7A04EEE064DA56DA3E08747D5705F44F7156AD5C65653164A -82150DE6717C614AE1F722D571745119BCDF5B8F40EBE4B73D8CA0A567EC9991 -9DEE71B60A72734E0E19C41457BC2CBF08FBA1B4E045DB90FC51E874B64D3ED7 -FB7487F36D12E8D3D95FE7D078976AD534AB074FFE6BC8279006DAB8CA55DBC7 -89A13800F9DAC874BC74E1C6A6E3A0318AC1656DA73FCC4F5A8727DC1A0F9595 -5EC9B02BC987B9C37CDCB45F921306EA22788C3930E3BD2C5E91C9FA8FCB2F52 -30BE9FDA1E9F58620F5D95AF91C389A6ACA28BDEE8BEFEB80DF279D17269CCD0 -279CD36DB612D1D0DB9F3B398C04A1D39591F3660486759C2C2B9EB9393BA61A -81B2DD33CEEF70E02173165D6C15FD36D3F40B5D7244F29D3C57415F60F19698 -4BB27B6B6DA60E7BDA42F2E66AAA8E40FBF06465B80B4AE49CF3607C79472706 -C29322ACCD0D0151F3D279ADD31AD7FFE9D694169DAA60CE6A67642202BCDCDA -6E29C8BD1D9705034FC1680ED7D7F44621EB918EB0F3233C0AF28372ECBBA672 -059017C88511FBF0EA1F3B7DD84411D019D17A915EE05E68D79DFC4F03DB59A5 -ECB39748A437A5882EBFC1574027684145EE9264D62757CF038C0AC868A13319 -EE14856DEE3979D82F249869C7A505A4B7AAD1BD0599CF398A32AFF95D3B88AA -12974DFA24CEF4D673E9BC4B9FB36398CA44F2B9FF23AA192D56E35056C2177A -ED4A6B1660520A05C01651D10A37748E1483DBB6FE13FD3EEBC1FAA34349AD82 -06111CAE95F2013F111D8FE902B996C77A1BE211C2B6F9BC4DF73FB024B4D2E1 -CDE9A94BFA9727D95619B30F332C018B528A8F292A142BD5CFB53AF214E36C08 -E986347EFFCC3C3C885857D04A85E2514063067F3141BD86B3452A1A2B495372 -EAE088FC784DBCA46CC744D9947BC5A8BF354F2C630BECA351DE6A2D47B30F80 -DDA9ADA37E50B1816F739DB303627C79CE5DFAC2E94A9CF79957C0CA9B8566BD -892431AE4F23AF6056C7D8F184818C9D4A9E57FB1CEA8D74CCCBD38E5D7E1BC2 -4551ECC268BDCDA07E675C206B2DCC7E5C7DAE865A4363D4122848B46F198507 -7E166303E4F30C50F0061F6EF316AC7EC5FF61662F088696E1795D75591E6CB7 -0ED973CED00B0D058E9622043AF118ABE8C2B757BA3A1A4D5CE2E6C06A2EB582 -B99ECB6C765811568EC35E38B81523CCBFF8327E2CEDBE765C18A70B9E054453 -1EA6E3E33B9975A49873F3E1CD0438BB53F056254E7051938D08A8173AB22AB0 -9B42C13A84F330DB43CAB3AB877A66C3F2A0295E9D8B6292EAB9546F02FABD59 -13A88D7CA669122B532C906C4081988C0BF556AF1991E1E4C9B2D6B3BC798B49 -A8A6943A242A0CDFC03B498F8F495661C0B32ADAA6C3CEA8C1CCD1E84BC3D174 -425A71F8A84A1F806489E2C926CF032CF157A1CFF0498121BB3A6DE04DC400EC -3D98FC20A2A20C110DB95B335C4E1682515292A12C8415E323EBFA11551F2B7E -ADBB7682960FA594CBE077E1EB10AA0158273659E8444562093B5A4C28A39E11 -362611D6907C0B34DC4C958DEF21D232E2D01DE7F9C649C45ED941A8108AE2D9 -775DDD587DDC8CA72A97C3E2E713DDECB09C09F67026284E674A5EF85DE699E5 -7258BF1AA40FE374FF2363847DD0953A20259C7C8191E0FE0A391FFD06DF9051 -3FA61907BA4F984D7089F1329579927E64A8076B5DC08BE067E449948BF1EC70 -03AED3DFBBE20C2B23CB113E3F4973DB01433A72E68335BCEDA94CFC7239E7CA -55939B5EC58B380871397F1F13D7A640D8FC6924AD183ADAFC447CDB9A6CB63E -BCCFE5C11E884CABA6261D5605CDA3EDE239737490593E4E4CBDADA0182C8362 -F27FDE36EFC56AC691376AEC6F3204D96AEE953AD141629A31132296FF60ED96 -0D54E153FFB5117845FCB6EA3B1D71FF4328CFA0972B2E3AD0B1430E33F6AF44 -5C12F58959EC611A449923604D95883E378D2DFDA4D2B2D43BC9B4F6D1538350 -D9FB3E6B5445C696D916E93A1FFEBF2C59973A523F8972BD8FD20E160AFEF38B -E355E2FBDC98F0971A4D04298C47C6781201EA4F16964E6C441331193383C6BF -B3109040BFEBFD7217655899FFBC57FFAC3778729924CF9C9504A25823CFEB22 -DE375E4AB029F99B91B037A1F956F4CB14E973D5847A3D1F15F400E54730E0AE -C9C15DD4322AF9DDA0CE77074EBE320435B9D82BD73040E5150DF87AE690115C -AEF26E5EB2612FD51F7761BD894DC139E79C7952BC319E364BC09825CADF4EDF -129D8F7B6D819BE5BCD1C223DBCA46785DB5A2DBF04FB42D451691B25F647B1F -3595EC997C631B70AE41317E8F80394B768C58E64CFC5F97417F88C9DDB98CAD -9F53DEAF7B225CC6DA84B79B21C1C4810D90C1871EE2B20E0D0B4783F20EE925 -0E91C1C8671B97FA9E248E8F03B15EDE15F4BA072879E90AA8CAED46886DE114 -D19E0A1BE52572FDA487FC97405B4571CD2A48B6135D6EF8C22420AE5C7C9B89 -84D96A38FE9067CB6CBC1826C490675DCA6EBC3AFE89FFEDCBB7C83F92D03A32 -30C76AFAA57B6F0854E3F4327BF892F0C4985DBDF87E476DB2DD76A5A235A7E4 -E750171DB3F4C945A6ED52112B1FB818CC513DF536B7DE1C16685B03589B3D03 -DC7056DD140F39C2D21DF867BC23237F697B6CFC080D59239AB465FE688461F2 -EA9F0350D62450EF80C454227DB6D60CC4A1156A2C3983503EC4C020B8072F7D -7D471D3D288CA1A1497EEFB7C826FA93CE0A31B1AE583E75E9A97E84CF0F39F5 -27694E23AD868C04440B4B3B674246712D89752365E32A6FD7DD024B6B2E9E09 -420420996C797C228DBBA33529D256565B4C479C9A4826943B79494816FE9AB1 -7A7CF2E0C3110142D10076589753AB96EB827399232E10EFCF1303500DAD9F9A -050FF4D2A7BE882CEC519E57C44AB791605BBD1CF9EB46F588AE695026ADD366 -ABA1988D0F692BD8ADA131CD77A6A1E3B44536DC67A00E6FAD10A2807F3B4A76 -7AE8F7C5CE76A10958CE05FEE5A6B9DF29540306704239A72166F38FB34ABD12 -189B5395FAC0CFBB0B9B743486E0A3E36103A60DA0CC52D78D3A6E646F04BB5D -533B1371C2C7BFEDB46DCDA8E7CF7A00FC29C1BA4F0554FCD1701E0FB3614C8C -E63A351C080E03B7779FF122014A34B32EE0D4557F0C3AB0EDB23EB6ED0179DE -34B1440C36BA2B40CB06D26DEDE8C2EF827E10BAFDB6800B60963FC5509333D4 -C6AEA8BDD3102EF19E1DCACE8402DB0E98343CBDDD6BCE24D2D9303BA4AD16B8 -EE56A24D80F464EB153987368F7E899F51FB67923DE8EE2F20D6D235E28D94B9 -8456BDEF0959A3B015462E79AB7B84ECF0299444CE4DEB3C8EE7E2BD23CA59BE -49E6E2C27C0E787376FB5F9524441F803ED572ED7A1321E3C775D8890EFB4A6F -A2AAD2B92BAAF651D09E1C7B3059AAB87EA01E1EA8CD7206186202B9115B13E6 -7995708F70E72A38BB9FBC9BAF38077D3AAB047A7B469BDC8CBC1D2DF9AA8492 -74D52FF2AF461CF685C751EC27E643EE8206CFAA38B9EE236E051C1847D58D33 -E2801A3F1DA3205E8F383832356366C6D83A22ED1051FB93AA1944A220FA05D1 -4D5FB1A3D14781160712140F698CB99C7EC5E4EA8F3C8DA526A7F92BACC1C67D -E04F1A5B080D43B0B8589FE343656B8B84E676ABDC34FD93E24F6D1A0EE4685F -DE701BFE614C49EE893F9E2D7DA3F6E3110C55324A3858E9406D1F098D53D65C -C5CFD7A5B8FAD2EEA008188F3CDCB6A3029FCE3E1FB6B7363E610DE04FF30604 -6262C8B4EF036C5BCC2FA76C09DC2106411E40E8382671BEAD16EC56C6EB5A5B -FF2650A38302C5E0A9E5B0456659225818878FD550DEA6D1C8704C6020D2A9A2 -9728DAC36B72ACF23991C122E9EA0E52DBBD639431A0C4375225D16C7D1C226A -B09C2CD2A6FE67209668B9B876D777B86F68C3AE872EFECD1730456F168E48D7 -23E7A26B783AFA95962E94AEDB1B158DC3DC3A6DA5C17BEA6F42C7D4D5A33206 -32A767AC088B9BE230BF67353507449272A35F18937656529A7D701C5D6ED11A -30391309A4FCCD5E7530BFDB769C2F3FBA44C27FF56FFC8BE6BCB316DBBD1B69 -85A75C6726A9C0A63AAC84036265EB952556A0610C2832FD04636488B89E2C02 -528754DA559FBF275565644798D4F11E33892AFA540C1F9573DB2DEC7B2832A0 -A538E9903EC4A97AE8ECE9F42B72EEC9B4B5560D1BA7248993C46DA23A3929C0 -EB18C32E4ADB24350F10F1B703A93BAE3B82D7CB66E0FE460DFE1C97FA5FB799 -74E827C03981CB1175E54682465C5946442B9C2ED1E5AE3430D7E95680D69315 -0603E5B2994FA3666DDB44CD35E5C8116CF2F5DDA46C61BD309353D3D89BF459 -7DEDC647A51267BFF24F029F7C34F4B82B9AA619B1B23A678E90003B710D801D -FD60E1ED36 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT12 -%!PS-AdobeFont-1.0: CMTT12 003.002 -%%Title: CMTT12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup -/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT12 def -/FontBBox {-1 -234 524 695 }readonly def -/UniqueID 5000833 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT12.) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 97 /a put -dup 107 /k put -dup 115 /s put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 -7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 -A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 -4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C -A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 -75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 -9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 -098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 -ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 -DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B -5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 -F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 -2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 -E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 -C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 -42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D -4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 -95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 -830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FE62 -C7DBA30E569DD3565AC9C80B112E221E3878624A015F6224597D02C9A07B368C -F9FDC817988D12CB00ABFAB288C20A59AE40E7A75C235938C47F77261BED14BB -6574F633BC4DE9E8AEABC46E0965AD69748C315B6DB5F264D5E7635BE37E23FB -873E2488086BA27275142C774A4A241F92E8ACFF0F25E81E2565642D88F77DE7 -03BCCBC437BB1C9EDA969E92CF3423203EEDE585A9371A00BC54DD695BA12EC2 -461AD673A27B24AD38903C82D020A8B235845E40A00CEE82BF1B187AE84E847D -37D5098039C3B116C213771F69B63DC822F4B45806D038047C030721213051F4 -BD1EF230F86B915B67CC9624DB534F55A1B8739165AB9AB9D76473752C628AA5 -4FE057ABDE42A685535EDF4C814CF00F53E7B520B470A6CAC4480488D82E80AF -DA5B7A5FC15095787538038AA94AF56018AD0AA7573CFB6DA444E30A99713E4B -07B1CCBC5DF5779110370C81EC980C9555DEDEDE7B655475DE867CF94E57598F -5C70B80B05C94C00A2E8B33EEF429E909AA1BB0DD1EDC8E27E735B41BE8D7708 -F9E444DD44F344736EFB0DE4323B4626237B53275CEE1DBE65396BDA86047C81 -25AC606422F5D16179F6EBD2E6B39F838A5171DAC344BFAF5A31A3EC688D5BE9 -FEAFCC0CC06D38DABCB1982B30CC7CF3A0197D82D7CE414156525C452B5A6A0C -29A5287C47E4ECD1DAEC9237FBE4DAE723F7256D3BC1BC8FC9281A716C93831D -BB09ED556A845A038BF82B25CF4B2769836EDC4D3BB01B2ED52065564912A8AB -0B1FE169ECEEEF8D6BE91FFDF1DD67E6E969EC3B6C9EB47BEC81A34CB840F348 -D49AFB71BD8D9CEF11019F6CFEA9C6E179634796515B45211F19EE2917F1CCB5 -FF91F8329B6F04A62C0A430B8794C27D87CF0BFFEA9F5A96CB9D447D6B4FBB42 -1BD54CA909D19569F563701215AAF75F8C1B61F072C3DB38D9666F6D635F8FFB -4C6BB723EF2094DF5F6D9C2E1933F72DDA6DA9A6E14AF2D956D5135537EF0AFA -5085D6B9C6CB7B67FA4247FE3D193BE96B85A35ED1313B2255576490F2E0F5CC -3CAC51FB07EBC0C72FE58C577017429AC0D8B80A21DB1ADB042866C59D1D2947 -146808980B0BF886D3CBD5D883690698 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR17 -%!PS-AdobeFont-1.0: CMR17 003.002 -%%Title: CMR17 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR17. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR17 known{/CMR17 findfont dup/UniqueID known{dup -/UniqueID get 5000795 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR17 def -/FontBBox {-33 -250 945 749 }readonly def -/UniqueID 5000795 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR17.) readonly def -/FullName (CMR17) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 65 /A put -dup 73 /I put -dup 80 /P put -dup 83 /S put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 118 /v put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9D6295729076BD8E -CBC0F4C1BE246922D2482233846A96D867B66D9CF25A1DB661141D36B8506E61 -A022F9EF8BC1F2F674EDF1533E67A78CA29A612AA9268E113C5EB84DA56CEDFC -D7A111403E6E2A8682DB04368889747E003A124395ECF0C7FC81218552EE7C6F -60BCFB4120893528670D0E8A4117EA5676915E3591AE5652D003EEF67818A41A -8882E102AEEEBECBD15DCF632ED246A6A58B6A7780DB6F1F9AE3FDAC8344585D -E104F2BA2DF06D68945889A2A3B6C262FB53FC670BC5EB7C56887FBFB7AA7026 -84115872CFB0652C6BB330447AFF8F0F665EFD6A41D6DB6877B08052F402448F -CB21C26BDC900636C99CA347B79AA73AFCDE9762A992CA3DDF7279E5C50F453F -52098529850AFB1F501A442D6A02E0A2896F81C8AC735AF1E7EE47208B4CC944 -649DF6802EEE813F1456205C6126D7D0B1821AB62DD65468F3A30575E491623E -0054E2E680E4402E1C8C538DA389B81603BE88D6DC287A076F92B224CD58A0AC -44B8D490197341808DEF243660971F444A560C747BC6F52707ED42A99736ECCF -EBCB694A561C3A70A319D204CD40D402FBF937A00BBCBE85DD26C9E3F91B7D10 -D85B9D314BC3AAD5A58B107F5F341BE2C53490924142566417D6BE03BB4977FA -6635EA58DEB9508E40B9FFAC75FF44C683680CF242FE210519C9BF92483B0A54 -83F48341318BE16D2F8C988FE3DB2E7914581F579D5E323148A31E4ED03BC24B -C990372DF5F3B0C5FA32EB2CA4FA0EA33316569133C87697BAA2292E685C26CC -F8CD40A2366E60B47D47CC9D0FA29D2836011376A07F78BA7664DE96E775CF45 -9BC91559A063073A4C2FAAD0893C517C5C46A1425D07EDCC2B57162E3A45103E -FF26A2D2F98B194256A4B052AAFCC08965A50EECD7B9E8F35AFDF7B6568B3983 -8030655E7C2BEC961A2F20539D617626E8454E3FE9EBD3EFCEF7F63498441DAE -16CB509BF239FBBE25EFEF07A3E16C9C71EB8D9DCB8403916FB40FD7F4E1A52F -72F2DFF94FD14D7D49FE775390C17C37C1BA0CAF35CF75D682B7833A83224158 -D54CE962CFBAFB1B2CA50B60CBEB1F8F58DDB2F5470C355ED9632342D9382AE4 -5D33BCA3A0A25EE9E5B39BE5370E7F20684C664EDB48E7973FEDAD9676F9EE8F -701CD4D8CC9B9EBC06E8C86EB88AD56E15CEBB8E1930E8F711CB6E01D5D14967 -D7E6C1BDDDE2C4D00384EF4CB02877DECC27AD53FC981338977BA0CC0257CF7D -B42E9BC91AF45D9722461EC3CD9DEAA8011FB855FE14B74BE0A102008EACA2B6 -0E287BB4F466FBFDD6E65A5262B9322F95E20DAB875A10A84572D982E6FC7ACA -23C0C37E5EB47B8E69C07507B53CDD98CD1B6445E1699CF35B3DA3E0DC56BB76 -F997C40E2ECE47DBDDB707EB527055960113F2DABC87FD9EC7D0AB36B400CE33 -0D54D4F197B2830B43DF0AA802DFB2BF747A4C44B31FB708B2C8BBE1955A6A28 -379C91AA4CC065A50098AEC0B837E180B76801865A43C74859DF18FE1DA1483B -C17843BF1C7E1B11A8C6D8BB8CDB1D552FE6A1FD0A696A8F7405F2320F8621EA -17C1A32056C45A9ED35D2BD12D02D8B26489CAAEBF4EF33B66FF4BD9B46E4823 -6395831A8F3366EEA0D0EA88D612DEBF63DA7FAA24DA979ACC1A52544BCAA007 -6C39946BEA6076ACF45722B2B8E4D0823EA2D12B14A98367BB0433A21FBD9F94 -18DF298C56F67ABC9DB1868D431A854DBEDF8E1F49E359A545C75A7AA1FA4D5A -50F1EE6B45FC68ABF65FFF257964E4E50D8B0C1FAF498DFC554073697C2F219D -4A68DA9E873B270B9C56F0DDBC9927ADAF9203FD684DE615F68C24ACFFB44690 -89C0D5322049FA69E7FD00EFC9C9B2BD177B5B339907F81C31496662847BEC1E -56B5DCDF4FE618970F4268F475B2EF7E0F28CC986DDF098E59DDAD818649CC35 -4080C0867A884B8177A6880F06F1E5CC130AB4243EF8DD8032FCF390765BAB1C -1F0C9728EEE261A09F8C1D7ABC7A6B1550551BE2A7D19D45B656650DB00B3A5E -B3E1186043E173BB4DD5EFFB379654F88146382AE3F7196F099BDCD6D245FB6B -AA2FA9B6CFBC9F0CD52798DDF2F13874BDE5B124DFFE0DD93E24C9DAEAE4C3BB -71A9A13AE2860F620B4EC789F95221015D9C510CB4AC775EF69DB9E32E59C896 -1AF82C9F0DCDB4812A37761859A3D3BA0CA57F244489C78065346FFA78F5F7C8 -0B2E8CBA9EE62FF5C27369D0BCD52857D40F1FB8F8A1441B83565A4150AB1945 -0B54D6E49F66389E43096269EF5CDD39526A288C0CB81E324E75D326EC9A182F -2CD966368CE300B41873B08E17C3E6BB51804460D2562AF5A12339966F44CD09 -114C6809AF246B5BA6937631842CB9417781A58944B6BA4FCF961465C208957C -81A662D560D0F81BD3CB53C06B6D979F04F6121CCFD5D52702CBF6C70C01EDBF -2040AAB9CB144321E68C4010E0E98CCA2603EB55DD62E881DB621C37EA4108D1 -528ECC7A0121B57C6BB1E26F8AE7161ABA7E88256D2D6A8B7CDE2E730D137493 -3FF628EF6030DD2330D747FABBA03B44CF600418C245C388F33EC5559E7313BC -4B530C4FC12530D38B27D6408548F25FC084DD0523B27D29D6518D3115AE7755 -37162CFD4CF528214466FE525B13782F9C3CD78F3D6C7423E63A134C0A371F15 -10F4ECE1D482C647B563D3D15586F80BD9DF7381BD53927825D5AEAF762E1CDC -3BD184F345029A95B3AD4D1B66E79AB4F0809418C0CFD4D503457A190D02F134 -3F57FC04FF655AEEB783D6791E4EC300755861837D3D50649F6B7F60766211B3 -8148F8E575E28D6C2DE75B15E722ABFC6DAADAE53D89FD295352781DCC2CFF6D -982F6DB778D6FCBF1B7BDCB53F3A23AE6EB499BBFA96E8BE04C3C8E5B660EF24 -01EB842DAEBE979F2C2DB72AAB4D21627063B1D3C6CD40944E4CB81655698FBA -A343766CB22E392E5DAE01DB33A00918D6DAA07F2F38B336A3C5DF3708865E75 -0DE04D3AFBCA27A249E97377D5785B4E28EE0E93F7D353619C200DB967372ED2 -153BF8BE945474266EB2FD30F80042A11B7E3586DE4AB1FBD4A741D36DE583E9 -1CA25DA345520AA60634EC819E7EB493CDB128BBADEC3890F055455F060A1100 -D5A41D7B180027E08AD6EE7E393DB9F83799544404FE397F557773BE6A130541 -157C0EB37E036C94825B5090EF85F8B4E3DB72895D86687758C20EDEBD6D1079 -196E9949DC6ED0113571C70B150B37E446E319EC54D44CC0CF6A14760953DF4A -D0E1F33A54D240E236AB63B35BA8E071D77776BE5B9312245F2C6E4FDB4312A0 -0D9CF723E7D9A3D8546C4739C00C301A89ABA60A02757AB1A0AC40B24CE6CF12 -5850485B11E16646D7150795EABAEB08364A53161111F46A7BC3423A0D3BEB69 -BF15726C1F8363914945DEEB29CB8766328318AF3B344FD6D77BBB92BD7FD161 -93356493D4D8252AD125708D47C124E44232FB2BF7DD75F87889496DCDB75D03 -F58A57D4122CFC194B75A9E9C4789C9A33C0435FB4ADA16AD4A6191928D1663D -05FB8152C0AA176FBA4755205F8A66713404787070757D3721ED6E6D55A59DF0 -C92BA8F05EC7BE05D0A2E66DE85E75373483EA3BBEE0F0DFC7E2FA5FBAFAB118 -058D095AA71FDFC8AF37E5A98406B64E58BF476C6926725D7EF3C2346CE3F662 -1E5A4A18D966479A37070859014719456EA2C7F23E68E1AB2F25ED3A0C00A18C -DD403506923BC983F89CCA125780DC76A411472E38173BC0DD4CDA7B43E13419 -B5AB0B9A35E77C58BBA12AA4F5C7EBF8A29996B059E4FAE6809565570442AEE5 -D56CBF4407E1CD9A4398B1F3ADFF023F64B230E3D29F526B62D964F5C8DF801F -E94295AD85BD9E1C18E6327977260A871E921C0745CA06A263E335E344686E7D -D6FE3ADB4EE0A7E462F3C00873C3E95D183CCEC71C0E5DC1D2FB310B28FC3611 -67C23DE336C374F72368F4973052B48E39969305791C986E6EE35D0350571860 -3A8ED849712CF21AEF444BA390644E8646CCA16559BA4642A5800827A0DDC453 -7CA0818BC47DF6348A5209A2F0A10CA39840CE6346E89CA0E842BE8692DEF25C -4623A5A0E0B98708B9492E9F564324BB3872D6B953CA59E9F393C477E2AB85EC -C557D333E88C111CF995FB79D9432DC94C2BDB3BFEE13C0D7D1BB920DAFA6158 -8548447AFC65CD5515D5021E0ED7D213B0C08C35BB424AA91885CA023D7AF767 -B83E619B15DFEF5588D2F0564296E14B5A6ACE03751E1016105C51BE76EA5ADB -4167BAED2A8899031FD7BA05C410ADA25ADD94A787EED1A7AE133B0568B1DBA5 -44B41BE013782CFCA3D81E8E8210DD506ADFCE7DC7E792EFEF438221164A7D1B -5E7089F476240C5F94988F081943F24DBF7CC3D1E58CB89E1C0C1624682CC3D8 -C95815ECC9183A4B3E353C7F920B7E64086E01672DAA7C8A81319BAA03C1FBB7 -8E5E84CC5BAE0E107754794C755B7AF00953504094E1A9DF357D51B578259613 -8D26F0BA26AAC459BBEEB90BCC98B865EDD26AA4DF533D6624EDAC762C446B6F -CF9F86DD2D8989D4655775E662B93BF51805EE3CBA0AE2293D95F166E80973CC -82C53042D0249C598B0821E9E7F218BA6114EEC86C158F277934F2651490B723 -7F0D0288560DA5BEBAFDDF243048E590871AD18B3B220EC56549004DF122AA03 -BAAD6971D790BC644369FDBEE74A324083CFA9496C2A333774F06E35299242BC -F4B26578907CC5AD1893613F2B8622CFBB7B55810162EEBFAAEAB2A6D69CB72B -D7859C73843E665125FF450631F32E64F13A6207F368103C7A7318DBAF2560D0 -F1CDD83C3E48CB30C62AF1E0896E1962C655D9ED98E1BB38477C1C60ECDB6B95 -067D3A638AD43EE886338F7AD2D2A574CE6FD2E21F6FCB4220EFEC85ABF8272A -82081CE70E4390A74EC717F1DDD168F4A4A080A79EE2ECE0F98A96871DA4B52F -78441601AF47763C2219F5A167604C32F478D498835EF3A6167936994F7C7139 -3019FF43C97E7978D3CDA641C1E391FEA572D308E759F28DDE2B40B5BC207A4B -C5EB6A93EEE26782016F8B6534420BE4D790A2E1A65B6CDBE9468152230384FD -14E9AE84418A44F94E6825DD7D77D0BB5486DE26A692B3DA96C81FA4440C5D44 -8E7F3CAA9B8DF38F87E09C4D78841F629F78F4E7CC8580CC44E59E5D9AE8B2DE -C0682F793AE7AEC12A8AE688636197E8A08FEB70EFDB6203681A60223B9B0D39 -2DA656E5E99B82130D4BE38D7AFE18568DD30B0CC3C73C1E2914ACE11A65334D -A9F18135E7B86157122CD221C33C62012FFB16D2D2F3473A53BE3E7B9FD4303F -66ADF0B07155C7B9B002EA68C6AC7247EB3CE7D2670A60138049DAA964F86A05 -22983EDA7242E6BEEB90DF61C937399B2CE1061DF1E551CEED4A80D86C2D4649 -C9FF9A1F93E96773CD392478D5B70D5336A03A274E0A6EF44BE8CB2274324142 -706BC2E340DC944339D647961FD7BF29944503B4AFCDC69A706AA6B0F6AB2CB5 -D220A96ACC1EE5E7826F6F75F044224E5260D581AE761AD0C752A06AA03FD935 -FAD65C9EDD4E5505396E331D45DE88F0D1A4303D766ABE0702C17E2A7F53C0EA -96A4DEC5A6B6186F5DBAAB05DD78E38AFE630465BEF0EC66ABA9C1C9232214A9 -795D105C33CF069F6BE20B179F4CC9F484AB63ED25C1212C457DF62CA0D56E20 -608572216F2D4C09010B03A8AA6D287C8F514BEEDC1C912552CC2489858BF4D3 -084882CE4F4B6FB9EE27C0168671E6DA154018ABEAD013C88E1D3EC918371251 -63D95BA0FE20212C20AD3F4DB614EE36B488A3F55D94C1EDFCA8E68E54A1EED4 -7DD168DCCF07C3DDB5E2B499DB5635C5C5056A7438120DB4839427D07F96AB8E -F842E285243E40259F6DF029E27779CCF3D3BD7206B2C341045A5A4AABACC2A5 -91C6830FE05ACDCFDE99046F16F2AC183426ACA4A89FE5F09B7EB2F811BB5FB5 -AF073BDA2886070B2327D582DCBA66B47E8948C3BE05E837BE4B81402A583403 -74FF9E938F0E9DC3B1CB81B93DFD4070F9EBAED40BA570DE8F9A5C2C0A097311 -22A6065139A6580E332473E9410D9F4C734794F79E41D0D437CEC7381919DF6F -A24B170E2BC97A6396A4E3AC3D844AD6E2B8FCE1C6AE97DFC5319F49130C3D6F -AF2541EB2384D5D4CCBEB976846EF8C2165DBF706112BDDDEC9A57D157F5996D -95229FD5C71B885D16B177BAB06B9DF5740A45C2A005778EE879193290419C0A -A4A339029E37E685B8A05B111DDF94AC19B1D85C8E6026E57E3D3B373C08557A -F96E6FE3916695ADFC1F0BF5D558565F42A71C61ACFEFC9026424397F0646642 -7EDAA05794BCCD164A645860B57EAD53CB6899B18C6E9496EA4DAB0A0C272639 -DEBC4FCBA94B3BF123F7771F602E7667C8F56E12429669F2219C7D8E294BE07B -71E88EA62F5616CAAB7C0198E6FF12A348E36B306FE2684A401399431B6A84CF -B46EE4BAA0F4099E65E9AF3B70274EDD6B6524F4FA38C23F9CD5273EEDC8C6C3 -E7312B6E0497C05AD3F3C246638F01387CC11DBCBD287ACF54D8E24759F51415 -35ED64132EF4158F54AB9F4D567482B3057880490F805822F71E7E2C52F7BC38 -8B1F803AC3731064B90E5E97AA3351D17E73DC2FE526CD6C91158636E395867D -C1150FD3BD12493FFFB813AF0D08C8ED0B7418A2CF90BD5B783364358605D075 -5DEA95A9299C0654EFB28E2FE8A41358A0DD124D0314A27558E42ED5F2D74BB7 -056DE04D2CF13B9B804A3CBBA29BC155A3F18B8B48283194C33CE8291677E1EF -0721138F8E0409D49BB99F217607586D2DF00C29A25536E21924B4CF6702CF85 -C02DFBFD2AA4DE3DBED1D2C02E21052A8D10F96629D0D18154923638FE0C48BD -E2DEAF11663E20717EA77A5453686AAA39D6FF7919AF09B1AD956FDBF734F49E -262F3076F62E77BD45122B55A5913902D9F91C4246FC235BA9C0FA4A96994291 -830638949BED423387DA2D455A3C9122484EFF27F5367D1D3DD27D207D973815 -965E1CFF36F43C653ED406F65348671D9FFAF55BA3FC266D438AF473181B7801 -164EA3F04FEC870743195B3F467DE36B3719BAD9BF15A18637A314C887D46673 -445BA3C212749B0A33136FEE9FE2C9A13D62E7ACC96378D257FBE0EB06AD4D4E -D41976AB92AC720DFD33B0677062C32E6F5C992A0324FD26E984B5341A58C190 -D20EC3F1144697D514D9157340A6C9F82E62AD8CFDEE59F6FF86C6250CE33D6B -BB82DDB4F65BEFC6F6D0E4044F7BF307CC346E2FFD191846E3CA288C6F91CB71 -5FDE855FEC5E38816CC635C470BF15263A10A409F0BC4877F7E6D4C223E3564E -E7BB5B320AAA5AAF4F32528F7413BFB97C70FF5E6843E1FE501472129BC9758D -7531BE576C75840CBC4CD3E6D9E5FF52559B68DE6E7827128BB2ED1BAD43F36E -A0CB68C1A147A7093EB02062AC5492DB7EEE08B1BDB187E15339A66269E459BC -67495937B4317AF66A498923322B087ECF47B601C26E253D223A784DB2D204FD -0668BD403A73723848018B7C86B627B9AE0BD9038F567CD5F670CAFC5C4D86FC -ECA211B713ACF8C1370191161CBB6C2592E8B9DBF3471133F2D9A60F15D72F9C -5E5539D59A6A7E124D9A38A6FF6EB7C71990716F88E1888295584F17D49144B2 -B57252D7D87CFB7BE009E0E1AF68C57E2041CB837A1F9DA290FC07240D616876 -CBA29ED23952F977F27ED97503F6C6CB48DA6611E0ED9D90FA865D099740C6CE -8A5DDBB1D6550B208321C365A5104F9ABD66A9238B8A2106AA74CAC58D1163F1 -DC4A62013C0F6DD8A3E8E1A6CC6E553746D570A744863FD8EA705890890AC5BC -2F0A068C740572F045B32289A2AE66CC44A1C13FB8BBD4E1834995731D19B47E -7C2FE360AE79DACB95856B01EE39EB3C7C9EAEB3D47348C47D928BC883B8E760 -6724D80DABC4D736411942BBA8CF08157F21D63C18924282193C5C8E44E09048 -FDCB8DB2E01C8A496FEE2CFC19A3A0EACA508237C8BD988ED6D33D01EB548B14 -61A546886AACDAFB7C8CA69056B1F428D72541D3F17007CBAB23C8ACC305A655 -BE646A9303F9D2FFA3E7060B7D0226EDD997605E246BFE131463B8614464591E -425278958D87871AA4DC5D3640060B9A435BE23AB2DE953A5365623BAC1A90B0 -8268AB3A27695A5AA2F8DAEAAFE88324267FCF88909155E959F90FC2656C6B17 -7B1CD6735451BED9CC0CB038F90AC4B632A9AFF99D1B4E85661C85F7DA8C5C3B -44322FA1D86EE66E4CF4FB3176B72AB7C9E33B530B4B36E2C05190EE3A6CC64E -8EC29CC693DBBC748C529600BE05904A48F62C4AE175FB7707E9A28D72C4350B -EFF065D7D52105471AC6949CF4E9D2E19BEED19913DD3996589C03E5471B1883 -B5ADD0E76316966869433D4D3C2D68897AD54BC0C1056A85F539FB568DD657EA -3AF8B955FD3EBD10BDC86B94651A10010EAA2D7B4CDAA9D04754A2BBEEB42462 -7801380BE02FE9C387FE93CE0B2E1D0F65BEF41725130FBAEE89B44B26490D27 -DBE1D0D49D3B70ADAC4B2A46991E436070239AD0154644FC4A2773AD68558ADC -A1AA62ABB46BB0FCE130DA7FC6755116118FF381764FBD03D1BD10AB0B8F4379 -2FE1C35AD8CFAD84738E5A5304387E958037567D2564B00219AFA30EAF2ED876 -BA2829A4D55D828E507C9C049796504220AC52CB108DBAEEF70149F452D85BA5 -F394C52C09A4A6C9434C40DAC48F9C126F06A5FE34240A16F69BBA11FCA9AC76 -CA1E62961CCA4591C6B96A84E7AE4964CEC00E7A8B003B5D8354CD1200489304 -0FA8BE1493A2408C494EEEBF30EF1BFF488852ADDCE5D087652063AAE0BB53EA -ECF423B32495E2FC461F2F2A18B639FD6CEC09EB7CE1BDD115B5DE66A1B3FB1F -77DF9779C16B981546E71198BBCA746E0F0ADCB09EA0F6F92608D30B9E77A082 -0BEE151189F51CDF0B7AA8AFF778DFEF01C988224506370FBE7DFED69D73FF45 -371961A0888F0DF215E909EDB9E08E56F50FFA9CDB0EBB16BED3956A75648DAA -E0035E589C65C12BBE6904794F8C19C23A830002C6E28217731DE5A0CA604EC0 -ECC0B451822F81C725F5330B1C77A5FC085E2A11667AF816D79EE262B99597B0 -750F27E862B2D7D9FEB5DEEABD05CAEAB50C5DD1F8E89AB2A6A76B6FD4F0AD21 -81E48E86AA9C52E272C0761D3264F78024C493058A5250DCCAF943CCF4A65FEA -3106D5359A584EF79D65DAEE9EF284524D0A40C6A6DC5033C49D740811673194 -CC1177FF10B3414334765C2BF89CA1C7D17C9EBE9486479B475A4513B3ED8AB6 -D1527B1146DA7325A9915A9E84520C043CD5806531B13773EB76B45F9E96B800 -A8C0A25FA1DC2EDB35E91AC6ED1300FFC9EB6D646155DC9FF8D12A4A676D506E -7F15BB5355FB7F84B2F8AE9C975BE738EB0E855CBB513B391B21A4F5366921C1 -6A0A2795C5ABD2E24A70B0BDB4BEF07DE92B18E47096E2C33731DDDBFA0A0B01 -3410CF285FAEAA7BD1179CC76799C366033FC51E50569E1528D7C978C45EB936 -AF222E13C08ECC2A9EAC3B482DEDEE702BCFE3D3A58E19E74018AC6805251FFD -BC6656DBE1B4C00F76DF3BEA8BBDCA1721ED61BD99AE4A61C0ECC9F295CC4B81 -FA6F1F8008BD5011DAE4CA73C55CCD441A5134813EC0202D634CAB14C4FDB927 -6FE8FA7C6A8DFEF29413A124EB0C6FD7217F93997C5613F02D5436BA7776A913 -B6E940D4FF0580CC1B34DACB0736ACF3A534955C9355B4B1E00EBBB6D5CD76C0 -49A1386A5552EEE2EE9A1F0C73DF8C00BD31CC14095385F0CD4FE90F8DC42E07 -588B28174D701A873121F1C71958AFB10610D90D436B1C23D8E3C4662E08646B -E73DF766E2BB4A1DCA606F70A6DD00499A3C842D826A6DC72EC3441F71FB00B7 -AD814CB8716A8955B9B61CDCD11AB857BF04E211868E4B1B158B4BB2E60DB2FB -25EDFB42586CE6C361A180F736354037A8E31D86231892E301CABF90DCE147DE -B44CB65C1E5F046C5B8087201B36A634CDCACE4846118BAA464D6990FB281D13 -A9B75142A4F86E274FD7F8487CC56EE38EDBB8E688337D8EA76273B98BB4F694 -BF1F5D3C7BEE18519C72E397D87F57AA7FFE59BB49BB70184E3EEB54B81B9A15 -3FE205274C24EFD4B8388562B500D672CD32D96A0F822507C352C2BBA12450FB -72956B639F3B56F43F77036B3A607687CA35EE92C6E1E0168709CC2454865997 -D89D968D384548DF558E27F1A213E09E5CF339523FB31BEFA5E45A9A874A00DC -C2843351AA96704783D4620EF95475925587F37C889BE748B33BF5D3C8D99C5A -95BB2B55B1AE23879901AE64B434F3E01C8B4493FB282F561393C972BA7BAD2A -503E18D111ED3C1BA70AE497D01C31E6D295C5B57871020771D6A96D22B33D14 -AC4EE6F9E4698D6BC4AE0A872705BDC1E0546697B5DB2A64CE4A1F400E643ED1 -5372ECB4F2B1B0747317DA34648E590BE041C1062B23F92013A6651BD853CD0F -2F49419C82435299A985075647C2B8F505F1182D24A3390A0718F3C255025BD1 -6919DEFD68FDDAF4C35FB75996FC3D0B793F888D1FF6B09797D8A528524677E5 -4A04F14D4EC256FFBE3846089ED716DD3567519F5F0EC8BAB700ABE6B1EC1080 -801653126A22D50D8F1964C77A371217ACD50C6D8989B3E8CF29A0FD20A5F896 -A1AF938DD27979543EEA1BA46D6EFCC1D101EE74AA0D5D110F8D1404DA4DBCE9 -4C4AE92FF9E4D7AAC3FB79BFC30B566DD1831B1D68BD0E067D963A725550D57B -0F652A65A2AAC98FD9CD979DCB81EF7A2A18A06661FF72E5CD5D593078D4A145 -7DB25ED6480383F1E3E30085EAE0F5230FCF4BB397866E5D465F7CE1FD84FFD1 -39FCC779F3072103DA48DF38BE65355781BC259C1DB6A4ED0BF805F51BFECA21 -AB0AEF7ABD154098EC0F3DD76B136833BCFD9222F331C8AC1456BA95080F9C3E -7B05A0CED7C26E24B03C7DC4245F1E3B8FD7BA40578CE7D61AD1E4A708C013F9 -8141F6834DB125035CEFF6A72B147027D49068B1BDB77DE7563F12994F933960 -68A87C4F50272C91B859CB83CC6488843529EF6F55977812E5F766DE23AF77B2 -DA859379045E0BDE87860BDAB3D0D37C033C05CDA9680B652FB1E2913B766CA2 -BA62CEF6BE7D6B266672D994BCFD263C32DC29674B45460E38BCB2BFCA4844D1 -1DD4BE395315946DB693E20B21031EB41C20A82495AB0E49D2DCB51D52B893DF -48A16E3180F04C9AE15FB60FBEF9BE5A80D33C51C9FB97B89FD9891109E25F05 -00253805C693E8FC4D58DB6F730D1D80C7F4E5ABC64F88F22D2E51D1A353C307 -5D8E6FF6A1D17347BDE026E6D1D00A2195BCAD9A4A375275EA6509FC3044C5CA -219840C08C3335CD820377534847A16EEA2EEA228D9A5EDFFE34454012E9AF65 -FB638246ECA0772825C3D72B32CF913DBA6921B35473721E263C209A7DC6414F -C066328E084F3E3D23D8DF87B70E31EC2E9479938162B353A15DCB1320DAFA11 -6BF06231AEBAC8364AAE499EB21E4C2C5238B3CF10F2F02B39AE0B29B9BE6C7F -86C90B6209B774317B5422BDB058AADCB888E9BDBB1CC80505089BF8A7281D3D -69F98EFCFB87BEC440009950D0ADB1EF1FC32F4265ECE9E7AD363EBC604389F6 -82CAE39E3FE7F3C17A92FADD0DA81EF29D4BFEF9EB143C9828BBE3FF15EE999A -A7F1D8F45647708B6AE7820AF8B82E8BDC890F2D535E3A58A94E16EA4B055FBD -9F4F24AF32BA7395D030E6D8D3FF0F5117CD5E8CB108CC1071EE9BBF59E8E90F -17FDC474037759BB28B9AF3DDD7E4D50F02AA3D2A161ADFEC0EB24566EE286EB -50D0DBC27A38CE66F1F78C44C3BA373EB0C5CBD11EBCDEE495A5BBE44E9CE999 -18E50F7B65E4EF21BB51BEF70CBD9932D182E67063BAACD5DB4FC516D03F8951 -D12D92887B9E726E064E1E1F0EC4CC09EC8A90F36A358012E5B5D7749B11095C -F8027A8C4F8D58C67EF58105AE39BB0276B7870FD90B45D73260D54D9977DD0F -F17EF66C257ACB65636E2FB1EA6EB9B66A77310A65C9F328CB212B612F1D86D1 -02AFCB6EDCB931CDFC0DFB5D8C145096878DDD85D0A621BEE643FB3991F6EABC -5C7DBE8FC841A401D00B7EC7C3867D0A51C1264B659A0F0D54B3733BEBA8037C -772057BE4EBAAA8B01E4140DCE5DB31943121F1734F4B5FD0E3F8C71FD0DAE50 -8A47BD2C7F464D787CAA1ECF68689A16D650BA5890AB06689B5F57ED69DDAADF -8D7EC1B634B294F523BC185FA525C6ADBAB0E0FD033128395B9F39D50722B2A8 -7CF8D529CBD2891F59876BCF302CCC06E9A301663B1D29F5F9B5B047EDB9F9F0 -96406FE1CEF3788ED72D1FD1733239875470A74633545ACC6E1BAD7A32FBFFA0 -9D3AAA7FB6DD0DF858D316D753B1AA5B38AB6F19A1606C68E5DE529E05F95BF3 -9FF1A51B4A8C0FAF6DDC0F2B7714A5AE4D16A1724730901236C637873129C435 -384A6D16BE80A7B5831F0495060AE8D3320018FDD68E5B3AD55E7D82D5E49933 -EFFFD35E73B26D813DF674AB7BDACEFDD5141036F433394BB5EDE175FC7E48BF -C9BE85ADB290549290BB464AAC93F4C3D52F5A9136F8C9B00063B49ACB25CFB5 -E5F9FF277172FEAD8A36B3AB87A2D82B65C78C59A470C94570AC8D0FB3BB6919 -4853AC866CD8890A73CFE28705B379B09C4D25DC3AEB0ACA921B98225C27FD47 -52A7F9071ACA940E605890F35FAD92C4D1330773302591720A70C9192E5FAA75 -700AF91056CD02A1D54129A3C573BCF54FB3ADE21A23212556673BEDD0F96F42 -CDDD606045D5EB18E12488162DB826FF09D0EF4C2B9DE91B6D1A4AB273CB63DC -F22ABFB8615FEAF4EEB614F3D7B3AD83B35FDA4DF8DDFE65599BB5EA87B72CC9 -3DB1C3D31CF99E2B9A8BB322885EAB2978E688CE00BDFF62AA653F72AA79FC5A -A53FCD50205C0ACCAA5B2B46FA5A4D2FDDF27494C1F02C347941CB2EF1082D98 -D7B0407ED524D4D0D24FA5C007D8E9E13B3581086FFD40E1B317152805DA6A8D -339B2F0CA3BFEBCA120414A5EDBA787DC0DF416DB643ED48C5AE3E1F7A91B4F7 -4898E267DF257D517700409FC72C74E267C19378D7B74201E6B2BE6FDB23138C -ED4A081628F6130640E6837BAEADA2FB35BEB16CD781386E951CE793A6F1689B -DEA3D1B479C33B43788DC9B61FCFC5CE75187EDA9E08C342CFB7DC624B03223B -F83C762189575E839A54F1AAE01462670E5D30E37D72AA9EB4F846083BDE9010 -232A026C3369B88A64992EB292A41FFE5B5FEF348429C26BA53F936D18613DDE -F50DE424D32D197B6482586BFF7659EC47723E3C8AB729B8050A7095CB757842 -DA63EA526AC4083DF375FA41CD04B1DCCEDA0C85EE4407CE858E2FAB980FE0A4 -31B02C13E6FFDD3F94E3DAC133B4DF54D2058E747F29F42782C5DBB6F5AFEC6E -10E1C0E143BA081061948BDCCFE0ED68FB0CB360CFD80344459D2DD754FED744 -0721973DE17B998B5EE7B2510524D93ADCEF1102BA70A0F24ACDCD364409708D -2C0CBAEB725003635E2D045711E6A84AF6F73BED391EC03BA777C9A62DEDF821 -697D6CF90BD4FD840A567A3191BE37677C6C6309CDF2670FEB739F94944BD82D -C908C9BF333C6D2213C8F5EDD12742708009DC4B63ABA99FC3C84565466FD369 -7DC0FA50A64DD755A62E78DC9625C7424BA4CAC2F8AAB5C2BFE2375648759AA6 -52D842E15FE76EB4273E91617ACF2F3BC395A4F7A7DAAD9B18B9ED21B247A927 -ACC803C8C3ED6720BF7399F4FDD3F84241820A323C96BB95F8037C618DC820EE -1692DF92CA48E08F4686888F155ECDB3DA21BD4A4F6EC2D498775D1163921B44 -21F3B4C6F2C8523ADA57D15B1C2BB6C5A9D25E32DD3A19CD6D6CE4E1B5691240 -F90489EEFC20F0C0A3E8FE36D61287067CE94CC364320F94A95CB244DC23C7A4 -8B4C2C5EA46AEC0D4D4B -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (informator.dvi) -@start /Fa 173[54 3[59 78[{}2 83.022 /CMSS10 rf /Fb 134[71 -71 75 75 83 75 75 50 108 1[75 58 75 1[58 58 108 108 58 -58 58 46 58 100 75 10[66 75 75 62 2[33 58 1[58 75 1[75 -75 82 75 75 75 75 33 1[66 65[{}40 83.022 /SkakNew-Figurine -rf /Fc 133[40 42 1[62 42 47 34 35 31 47 47 46 47 72 21 -44 1[21 47 46 1[42 47 41 47 44 84[49 12[{}24 83.022 /CMSSBX10 -rf /Fd 145[42 110[{}1 83.022 /CMSY10 rf /Fe 128[42 5[44 -1[60 1[46 32 33 33 1[46 42 46 69 23 44 1[23 46 1[25 37 -46 37 46 42 12[60 4[65 5[30 4[63 60 59 16[42 2[23 28 -45[{}30 83.022 /CMR10 rf /Ff 134[51 3[54 2[38 2[49 54 -81 27 6[43 2[54 49 12[70 9[50 1[73 15[49 4[49 49 49 49 -3[27 32[57 11[{}20 99.6264 /CMR12 rf /Fg 140[74 7[74 -9[74 97[{}3 143.462 /CMTT12 rf /Fh 134[70 2[70 1[51 52 -51 2[66 73 111 36 70 1[36 73 66 40 58 1[58 73 66 13[73 -2[90 6[47 7[99 65[{}22 143.462 /CMR17 rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -/setpagedevice where -{ pop << /PageSize [595 842] >> setpagedevice } -{ /a4 where { pop a4 } if } -ifelse -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 0 TeXcolorgray Black 0 TeXcolorgray -0 TeXcolorgray 0 TeXcolorgray 407 797 a Fh(Informator)42 -b(Sym)l(b)t(ols)g(Av)-7 b(ailable)43 b(in)g(the)h Fg(skak)f -Fh(P)l(ac)l(k)-7 b(age)1500 1038 y Ff(T)f(orb)s(en)33 -b(Ho\013mann)1592 1233 y(July)h(18,)e(2013)p Black 0 -1460 a -tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end - 0 1460 a 0 1460 a -tx@Dict begin gsave STV CP T /ps@refangle 0. def grestore end - 0 1460 a 0 TeXcolorgray 0 1460 -a -tx@Dict begin gsave STV CP T /ps@rot 0 def grestore end - 0 1460 a 83 1543 a Fe(Dirk)23 b(B\177)-42 b(ac)n(hle)22 -b(has)h(b)r(een)h(so)e(kind)h(as)g(to)g(create)f(a)h(n)n(um-)0 -1643 y(b)r(er)34 b(of)g(the)h(sym)n(b)r(ols)e(used)i(in)f(the)h -(Informator.)55 b(They)0 1742 y(are)27 b(no)n(w)g(a)g(part)g(of)g(the)h -(sk)-5 b(ak)27 b(fon)n(t.)p 83 2878 1031 7 v 133 2971 -a(Command)289 b(Output)p 83 3019 1031 5 v 133 3112 a -Fd(n)p Fc(wb)s(etter)431 b Fb(f)133 3212 y Fd(n)p Fc(bb)s(etter)446 -b Fb(g)133 3312 y Fd(n)p Fc(wupp)s(erhand)262 b Fb(c)133 -3411 y Fd(n)p Fc(bupp)s(erhand)277 b Fb(e)133 3511 y -Fd(n)p Fc(wdecisive)348 b Fb(h)133 3610 y Fd(n)p Fc(b)s(decisive)360 -b Fb(i)133 3710 y Fd(n)p Fc(equal)525 b Fb(j)133 3810 -y Fd(n)p Fc(unclea)m(r)456 b Fb(k)133 3909 y Fd(n)p Fc(comp)s(ensation) -201 b Fb(n)133 4009 y Fd(n)p Fc(devadvantage)196 b Fb(t)133 -4109 y Fd(n)p Fc(mo)m(rero)s(om)331 b Fb(U)133 4208 y -Fd(n)p Fc(withattack)316 b Fb(A)133 4308 y Fd(n)p Fc(withinit)451 -b Fb(C)133 4407 y Fd(n)p Fc(counterpla)m(y)282 b Fb(V)133 -4507 y Fd(n)p Fc(zugzw)m(ang)348 b Fb(D)133 4607 y Fd(n)p -Fc(mate)525 b Fb(m)133 4706 y Fd(n)p Fc(withidea)399 -b Fb(E)133 4806 y Fd(n)p Fc(onlymove)359 b Fb(F)133 4906 -y Fd(n)p Fc(b)s(etteris)416 b Fb(b)133 5005 y Fd(n)p -Fc(\014le)602 b Fb(H)133 5105 y Fd(n)p Fc(diagonal)401 -b Fb(G)133 5204 y Fd(n)p Fc(centre)480 b Fb(I)133 5304 -y Fd(n)p Fc(kside)537 b Fb(O)133 5404 y Fd(n)p Fc(qside)d -Fb(M)p 83 5455 1031 7 v 0 TeXcolorgray 0 TeXcolorgray -2001 1467 1007 7 v 2051 1560 a Fe(Command)265 b(Output)p -2001 1608 1007 5 v 2051 1701 a Fd(n)p Fc(w)m(eakpt)424 -b Fb(J)2051 1801 y Fd(n)p Fc(ending)444 b Fb(L)2051 1900 -y Fd(n)p Fc(bishoppair)308 b Fb(a)2051 2000 y Fd(n)p -Fc(opp)s(osbishops)192 b Fb(o)2051 2100 y Fd(n)p Fc(samebishops)223 -b Fb(s)2051 2199 y Fd(n)p Fc(unitedpa)m(wns)d Fb(u)2051 -2299 y Fd(n)p Fc(seppa)m(wns)321 b Fb(q)2051 2398 y Fd(n)p -Fc(doublepa)m(wns)226 b Fb(d)2051 2498 y Fd(n)p Fc(passedpa)m(wn)259 -b Fb(r)2051 2598 y Fd(n)p Fc(mo)m(repa)m(wns)280 b Fb(S)2051 -2697 y Fd(n)p Fc(timelimit)356 b Fb(T)2051 2797 y Fd(n)p -Fc(novelt)m(y)431 b Fa(N)2051 2897 y Fd(n)p Fc(comment)324 -b Fa(RR)2051 2996 y Fd(n)p Fc(va)m(rious)441 b Fa(R)2051 -3096 y Fd(n)p Fc(without)403 b Fb(w)2051 3195 y Fd(n)p -Fc(with)530 b Fb(v)2051 3295 y Fd(n)p Fc(etc)598 b Fb(P)2051 -3395 y Fd(n)p Fc(see)559 b Fe(see)2051 3494 y Fd(n)p -Fc(ma)m(rk)m(era)394 b Fb(x)2051 3594 y Fd(n)p Fc(ma)m(rk)m(erb)d -Fb(y)p 2001 3645 1007 7 v 0 TeXcolorgray 1856 5662 a -Fe(1)p 0 TeXcolorgray eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF |