From lattner at cs.uiuc.edu Mon Mar 29 05:21:20 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Mar 29 05:21:20 2004 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp Message-ID: <200403290238.UAA30111@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Constants.cpp updated: 1.82 -> 1.83 --- Log message: Add a bunch of methods that should have been added a long time ago. --- Diffs of the changes: (+61 -0) Index: llvm/lib/VMCore/Constants.cpp diff -u llvm/lib/VMCore/Constants.cpp:1.82 llvm/lib/VMCore/Constants.cpp:1.83 --- llvm/lib/VMCore/Constants.cpp:1.82 Thu Mar 11 23:54:04 2004 +++ llvm/lib/VMCore/Constants.cpp Sun Mar 28 20:37:53 2004 @@ -309,6 +309,67 @@ Operands.push_back(Use(IdxList[i], this)); } +/// ConstantExpr::get* - Return some common constants without having to +/// specify the full Instruction::OPCODE identifier. +/// +Constant *ConstantExpr::getNeg(Constant *C) { + return get(Instruction::Sub, getNullValue(C->getType()), C); +} +Constant *ConstantExpr::getNot(Constant *C) { + assert(isa(C) && "Cannot NOT a nonintegral type!"); + return get(Instruction::Xor, C, + ConstantIntegral::getAllOnesValue(C->getType())); +} +Constant *ConstantExpr::getAdd(Constant *C1, Constant *C2) { + return get(Instruction::Add, C1, C2); +} +Constant *ConstantExpr::getSub(Constant *C1, Constant *C2) { + return get(Instruction::Sub, C1, C2); +} +Constant *ConstantExpr::getMul(Constant *C1, Constant *C2) { + return get(Instruction::Mul, C1, C2); +} +Constant *ConstantExpr::getDiv(Constant *C1, Constant *C2) { + return get(Instruction::Div, C1, C2); +} +Constant *ConstantExpr::getRem(Constant *C1, Constant *C2) { + return get(Instruction::Rem, C1, C2); +} +Constant *ConstantExpr::getAnd(Constant *C1, Constant *C2) { + return get(Instruction::And, C1, C2); +} +Constant *ConstantExpr::getOr(Constant *C1, Constant *C2) { + return get(Instruction::Or, C1, C2); +} +Constant *ConstantExpr::getXor(Constant *C1, Constant *C2) { + return get(Instruction::Xor, C1, C2); +} +Constant *ConstantExpr::getSetEQ(Constant *C1, Constant *C2) { + return get(Instruction::SetEQ, C1, C2); +} +Constant *ConstantExpr::getSetNE(Constant *C1, Constant *C2) { + return get(Instruction::SetNE, C1, C2); +} +Constant *ConstantExpr::getSetLT(Constant *C1, Constant *C2) { + return get(Instruction::SetLT, C1, C2); +} +Constant *ConstantExpr::getSetGT(Constant *C1, Constant *C2) { + return get(Instruction::SetGT, C1, C2); +} +Constant *ConstantExpr::getSetLE(Constant *C1, Constant *C2) { + return get(Instruction::SetLE, C1, C2); +} +Constant *ConstantExpr::getSetGE(Constant *C1, Constant *C2) { + return get(Instruction::SetGE, C1, C2); +} +Constant *ConstantExpr::getShl(Constant *C1, Constant *C2) { + return get(Instruction::Shl, C1, C2); +} +Constant *ConstantExpr::getShr(Constant *C1, Constant *C2) { + return get(Instruction::Shr, C1, C2); +} + + //===----------------------------------------------------------------------===// From lattner at cs.uiuc.edu Mon Mar 29 05:21:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Mar 29 05:21:21 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Constants.h Message-ID: <200403290237.UAA30100@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: Constants.h updated: 1.44 -> 1.45 --- Log message: Add a bunch of methods that should have been added a long time ago. --- Diffs of the changes: (+22 -0) Index: llvm/include/llvm/Constants.h diff -u llvm/include/llvm/Constants.h:1.44 llvm/include/llvm/Constants.h:1.45 --- llvm/include/llvm/Constants.h:1.44 Thu Mar 11 23:50:39 2004 +++ llvm/include/llvm/Constants.h Sun Mar 28 20:37:17 2004 @@ -559,6 +559,28 @@ return getTy(C1->getType(), Opcode, C1, C2); } + /// ConstantExpr::get* - Return some common constants without having to + /// specify the full Instruction::OPCODE identifier. + /// + static Constant *getNeg(Constant *C); + static Constant *getNot(Constant *C); + static Constant *getAdd(Constant *C1, Constant *C2); + static Constant *getSub(Constant *C1, Constant *C2); + static Constant *getMul(Constant *C1, Constant *C2); + static Constant *getDiv(Constant *C1, Constant *C2); + static Constant *getRem(Constant *C1, Constant *C2); + static Constant *getAnd(Constant *C1, Constant *C2); + static Constant *getOr(Constant *C1, Constant *C2); + static Constant *getXor(Constant *C1, Constant *C2); + static Constant *getSetEQ(Constant *C1, Constant *C2); + static Constant *getSetNE(Constant *C1, Constant *C2); + static Constant *getSetLT(Constant *C1, Constant *C2); + static Constant *getSetGT(Constant *C1, Constant *C2); + static Constant *getSetLE(Constant *C1, Constant *C2); + static Constant *getSetGE(Constant *C1, Constant *C2); + static Constant *getShl(Constant *C1, Constant *C2); + static Constant *getShr(Constant *C1, Constant *C2); + /// Getelementptr form... /// static Constant *getGetElementPtr(Constant *C, From lattner at cs.uiuc.edu Mon Mar 29 13:34:55 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Mar 29 13:34:55 2004 Subject: [llvm-commits] CVS: llvm-www/llvm.css Message-ID: <200403291615.KAA00852@zion.cs.uiuc.edu> Changes in directory llvm-www: llvm.css updated: 1.7 -> 1.8 --- Log message: Make the bars on the releases and download.html page look and work better with font scaling --- Diffs of the changes: (+5 -2) Index: llvm-www/llvm.css diff -u llvm-www/llvm.css:1.7 llvm-www/llvm.css:1.8 --- llvm-www/llvm.css:1.7 Tue Nov 18 17:03:14 2003 +++ llvm-www/llvm.css Mon Mar 29 10:15:15 2004 @@ -54,10 +54,13 @@ .rel_section { vertical-align: middle; + border-width: 1px; + border-style: solid none solid none; + text-align: center; + vertical-align: middle; font-family: "Georgia,Palatino,Times,Roman"; font-weight: bold; font-size: 18pt; - height: 34px; - background: url("img/sidebars.gif"); + background: url("img/lines.gif"); margin: 1em 0.5em 1em 0.5em; padding-left: 1em; width: 300px } From lattner at cs.uiuc.edu Mon Mar 29 13:36:05 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Mar 29 13:36:05 2004 Subject: [llvm-commits] CVS: llvm-www/demo/index.cgi Message-ID: <200403291920.NAA24352@zion.cs.uiuc.edu> Changes in directory llvm-www/demo: index.cgi updated: 1.22 -> 1.23 --- Log message: Hack on prose a bit --- Diffs of the changes: (+11 -6) Index: llvm-www/demo/index.cgi diff -u llvm-www/demo/index.cgi:1.22 llvm-www/demo/index.cgi:1.23 --- llvm-www/demo/index.cgi:1.22 Wed Feb 4 16:11:22 2004 +++ llvm-www/demo/index.cgi Mon Mar 29 13:20:30 2004 @@ -5,7 +5,7 @@ # doing remote web JO99C compilations. (It could still be used for that # purpose, though the two scripts have diverged somewhat.) # -# Last modified $Date: 2004/02/04 22:11:22 $ +# Last modified $Date: 2004/03/29 19:20:30 $ # use CGI; @@ -165,7 +165,7 @@ print "
"; print -"

Click here if you want Bitter Melon to run the resulting code through c++filt. Warning, the LLVM code produced will probably not be lexically valid, but it will be easier to read.

    ", +"

    Click here if you want Bitter Melon to run the resulting code through c++filt. Warning, the LLVM code produced will probably not be lexically valid, but it will be easier to understand.

      ", $c->checkbox( -name => 'cxxdemangle', -label => 'Demangle C++ names with c++filt' @@ -174,7 +174,7 @@ print "
"; print -"

Bitter Melon can also run the link-time optimizer for you, if you like (but she won't link your code with any libraries). Note that for this to take effect, you have to define 'main' in your program.

    ", +"

    Bitter Melon can also run the link-time optimizer for you, if you like (but she won't link your code with any libraries). Note that you have to define 'main' in your program for this to make much of a difference.

      ", $c->checkbox( -name => 'linkopt', -label => 'Run link-time optimizer', @@ -185,7 +185,7 @@ print "
"; print -"

Would you believe the cat even has a stopwatch? Click here to get detailed compilation statistics from each pass.

    ", +"

    Would you believe the cat even has a stopwatch? Click here to get detailed compilation statistic and timings from each pass.

    @@ -669,7 +670,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/04/01 19:09:41 $ + Last modified: $Date: 2004/04/01 20:31:37 $ From lattner at cs.uiuc.edu Thu Apr 1 14:32:14 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu Apr 1 14:32:14 2004 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200404012031.OAA09646@zion.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.158 -> 1.159 --- Log message: Bug fixed --- Diffs of the changes: (+2 -1) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.158 llvm/docs/ReleaseNotes.html:1.159 --- llvm/docs/ReleaseNotes.html:1.158 Thu Apr 1 13:09:49 2004 +++ llvm/docs/ReleaseNotes.html Thu Apr 1 14:31:29 2004 @@ -139,6 +139,7 @@
    1. [loopsimplify] Loop simplify incorrectly updates dominator information
    2. +
    3. [tailduplicate] DemoteRegToStack breaks SSA form
    @@ -561,7 +562,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/04/01 19:09:49 $ + Last modified: $Date: 2004/04/01 20:31:29 $ From alkis at cs.uiuc.edu Thu Apr 1 15:49:21 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Thu Apr 1 15:49:21 2004 Subject: [llvm-commits] CVS: llvm-www/ProjectsWithLLVM/2004-Fall-CS426-LS.pdf 2004-Fall-CS426-LS.ps index.html Message-ID: <200404012148.PAA11635@zion.cs.uiuc.edu> Changes in directory llvm-www/ProjectsWithLLVM: 2004-Fall-CS426-LS.pdf added (r1.1) 2004-Fall-CS426-LS.ps added (r1.1) index.html updated: 1.8 -> 1.9 --- Log message: Add my Fall 2004 - CS426 project report on linear scan --- Diffs of the changes: (+37695 -0) Index: llvm-www/ProjectsWithLLVM/2004-Fall-CS426-LS.pdf Index: llvm-www/ProjectsWithLLVM/2004-Fall-CS426-LS.ps diff -c /dev/null llvm-www/ProjectsWithLLVM/2004-Fall-CS426-LS.ps:1.1 *** /dev/null Thu Apr 1 15:48:58 2004 --- llvm-www/ProjectsWithLLVM/2004-Fall-CS426-LS.ps Thu Apr 1 15:48:47 2004 *************** *** 0 **** --- 1,37672 ---- + %!PS-Adobe-3.0 + %%Title: (2004-Fall-CS426-LS.pdf) + %%Version: 1 4 + %%Creator: (LaTeX with hyperref package) + %%CreationDate: (D:20040401130100) + %%DocumentData: Clean7Bit + %%LanguageLevel: 2 + %%BoundingBox: 0 0 612 792 + %%Pages: 15 + %%DocumentProcessColors: (atend) + %%DocumentSuppliedResources: + %%+ procset (Adobe Acrobat - PDF operators) 1.2 0 + %%+ procset (Adobe Acrobat - type operators) 1.2 0 + %%EndComments + %%BeginDefaults + %%EndDefaults + %%BeginProlog + %%EndProlog + %%BeginSetup + %%BeginResource: l2check + %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved. + systemdict /languagelevel known + { systemdict /languagelevel get 1 eq } + { true } + ifelse + { + initgraphics /Helvetica findfont 18 scalefont setfont + 72 600 moveto (Error: Your printer driver needs to be configured) dup show + 72 580 moveto (for printing to a PostScript Language Level 1 printer.) dup show + exch = = + /Helvetica-Bold findfont 16 scalefont setfont + 72 520 moveto (Windows and Unix) show + /Times-Roman findfont 16 scalefont setfont + 72 500 moveto (Select ?Language Level 1? in the PostScript options section) show + 72 480 moveto (of the Acrobat print dialog.) show + /Helvetica-Bold findfont 16 scalefont setfont + 72 440 moveto (Macintosh) show + /Times-Roman findfont 16 scalefont setfont + 72 420 moveto (In the Chooser, select your printer driver.) show + 72 400 moveto (Then select your printer and click the Setup button.) show + 72 380 moveto (Follow any on-screen dialogs that may appear.) show + showpage + quit + } + if + %%EndResource + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: file Pscript_CFF PSVER + userdict/ct_CffDict 6 dict put ct_CffDict begin/F0Subr{systemdict/internaldict + known{1183615869 systemdict/internaldict get exec/FlxProc known{save true}{ + false}ifelse}{userdict/internaldict known not{userdict/internaldict{count 0 eq + {/internaldict errordict/invalidaccess get exec}if dup type/integertype ne{ + /internaldict errordict/invalidaccess get exec}if dup 1183615869 eq{pop 0}{ + /internaldict errordict/invalidaccess get exec}ifelse}dup 14 get 1 25 dict put + bind executeonly put}if 1183615869 userdict/internaldict get exec/FlxProc + known{save true}{false}ifelse}ifelse[systemdict/internaldict known not{100 + dict/begin cvx/mtx matrix/def cvx}if systemdict/currentpacking known{ + currentpacking true setpacking}if{systemdict/internaldict known{1183615869 + systemdict/internaldict get exec dup/$FlxDict known not{dup dup length exch + maxlength eq{pop userdict dup/$FlxDict known not{100 dict begin/mtx matrix def + dup/$FlxDict currentdict put end}if}{100 dict begin/mtx matrix def dup + /$FlxDict currentdict put end}ifelse}if/$FlxDict get begin}if grestore/exdef{ + exch def}def/dmin exch abs 100 div def/epX exdef/epY exdef/c4y2 exdef/c4x2 + exdef/c4y1 exdef/c4x1 exdef/c4y0 exdef/c4x0 exdef/c3y2 exdef/c3x2 exdef/c3y1 + exdef/c3x1 exdef/c3y0 exdef/c3x0 exdef/c1y2 exdef/c1x2 exdef/c2x2 c4x2 def + /c2y2 c4y2 def/yflag c1y2 c3y2 sub abs c1x2 c3x2 sub abs gt def/PickCoords{{ + c1x0 c1y0 c1x1 c1y1 c1x2 c1y2 c2x0 c2y0 c2x1 c2y1 c2x2 c2y2}{c3x0 c3y0 c3x1 + c3y1 c3x2 c3y2 c4x0 c4y0 c4x1 c4y1 c4x2 c4y2}ifelse/y5 exdef/x5 exdef/y4 exdef + /x4 exdef/y3 exdef/x3 exdef/y2 exdef/x2 exdef/y1 exdef/x1 exdef/y0 exdef/x0 + exdef}def mtx currentmatrix pop mtx 0 get abs 1e-05 lt mtx 3 get abs 1e-05 lt + or{/flipXY -1 def}{mtx 1 get abs 1e-05 lt mtx 2 get abs 1e-05 lt or{/flipXY 1 + def}{/flipXY 0 def}ifelse}ifelse/erosion 1 def systemdict/internaldict known{ + 1183615869 systemdict/internaldict get exec dup/erosion known{/erosion get + /erosion exch def}{pop}ifelse}if yflag{flipXY 0 eq c3y2 c4y2 eq or{false + PickCoords}{/shrink c3y2 c4y2 eq{0}{c1y2 c4y2 sub c3y2 c4y2 sub div abs}ifelse + def/yshrink{c4y2 sub shrink mul c4y2 add}def/c1y0 c3y0 yshrink def/c1y1 c3y1 + yshrink def/c2y0 c4y0 yshrink def/c2y1 c4y1 yshrink def/c1x0 c3x0 def/c1x1 + c3x1 def/c2x0 c4x0 def/c2x1 c4x1 def/dY 0 c3y2 c1y2 sub round dtransform + flipXY 1 eq{exch}if pop abs def dY dmin lt PickCoords y2 c1y2 sub abs .001 gt{ + c1x2 c1y2 transform flipXY 1 eq{exch}if/cx exch def/cy exch def/dY 0 y2 c1y2 + sub round dtransform flipXY 1 eq{exch}if pop def dY round dup 0 ne{/dY exdef}{ + pop dY 0 lt{-1}{1}ifelse/dY exdef}ifelse/erode PaintType 2 ne erosion .5 ge + and def erode{/cy cy .5 sub def}if/ey cy dY add def/ey ey ceiling ey sub ey + floor add def erode{/ey ey .5 add def}if ey cx flipXY 1 eq{exch}if itransform + exch pop y2 sub/eShift exch def/y1 y1 eShift add def/y2 y2 eShift add def/y3 + y3 eShift add def}if}ifelse}{flipXY 0 eq c3x2 c4x2 eq or{false PickCoords}{ + /shrink c3x2 c4x2 eq{0}{c1x2 c4x2 sub c3x2 c4x2 sub div abs}ifelse def/xshrink + {c4x2 sub shrink mul c4x2 add}def/c1x0 c3x0 xshrink def/c1x1 c3x1 xshrink def + /c2x0 c4x0 xshrink def/c2x1 c4x1 xshrink def/c1y0 c3y0 def/c1y1 c3y1 def/c2y0 + c4y0 def/c2y1 c4y1 def/dX c3x2 c1x2 sub round 0 dtransform flipXY -1 eq{exch} + if pop abs def dX dmin lt PickCoords x2 c1x2 sub abs .001 gt{c1x2 c1y2 + transform flipXY -1 eq{exch}if/cy exch def/cx exch def/dX x2 c1x2 sub round 0 + dtransform flipXY -1 eq{exch}if pop def dX round dup 0 ne{/dX exdef}{pop dX 0 + lt{-1}{1}ifelse/dX exdef}ifelse/erode PaintType 2 ne erosion .5 ge and def + erode{/cx cx .5 sub def}if/ex cx dX add def/ex ex ceiling ex sub ex floor add + def erode{/ex ex .5 add def}if ex cy flipXY -1 eq{exch}if itransform pop x2 + sub/eShift exch def/x1 x1 eShift add def/x2 x2 eShift add def/x3 x3 eShift add + def}if}ifelse}ifelse x2 x5 eq y2 y5 eq or{x5 y5 lineto}{x0 y0 x1 y1 x2 y2 + curveto x3 y3 x4 y4 x5 y5 curveto}ifelse epY epX}systemdict/currentpacking + known{exch setpacking}if/exec cvx/end cvx]cvx executeonly exch{pop true exch + restore}{systemdict/internaldict known not{1183615869 userdict/internaldict + get exec exch/FlxProc exch put true}{1183615869 systemdict/internaldict get + exec dup length exch maxlength eq{false}{1183615869 systemdict/internaldict + get exec exch/FlxProc exch put true}ifelse}ifelse}ifelse{systemdict + /internaldict known{1183615869 systemdict/internaldict get exec/FlxProc get + exec}{1183615869 userdict/internaldict get exec/FlxProc get exec}ifelse}if} + executeonly def/F1Subr{gsave currentpoint newpath moveto}bind def/F2Subr{ + currentpoint grestore gsave currentpoint newpath moveto}bind def/HSSubr{ + systemdict/internaldict known not{pop 3}{1183615869 systemdict/internaldict + get exec dup/startlock known{/startlock get exec}{dup/strtlck known{/strtlck + get exec}{pop 3}ifelse}ifelse}ifelse}bind def end + %%EndResource + + userdict /pdf_svglb get setglobal + /currentpacking where{pop currentpacking true setpacking}if + %%BeginResource: procset pdfvars + %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. All Rights Reserved. + %%Version: 5.0 6 + %%Title: definition of dictionary of variables used by PDF & PDFText procsets + userdict /PDF 160 dict put + userdict /PDFVars 89 dict dup begin put + /docSetupDone false def + /InitAll 0 def + /TermAll 0 def + /DocInitAll 0 def + /DocTermAll 0 def + /_pdfEncodings 2 array def + /_pdf_str1 1 string def + /_pdf_i 0 def + /_pdf_na 0 def + /_pdf_showproc 0 def + /_italMtx [1 0 .212557 1 0 0] def + /_italMtx_WMode1 [1 -.212557 0 1 0 0] def + /_italMtxType0 [1 0 .1062785 1 0 0] def + /_italMtx_WMode1Type0 [1 -.1062785 0 1 0 0] def + /_basefont 0 def + /_basefonto 0 def + /_pdf_oldCIDInit null def + /_pdf_FontDirectory 30 dict def + /_categories 10 dict def + /_sa? true def + /_ColorSep5044? false def + /nulldict 0 dict def + /_processColors 0 def + /overprintstack null def + /_defaulttransfer currenttransfer def + /_defaultflatness currentflat def + /_defaulthalftone null def + /_defaultcolortransfer null def + /_defaultblackgeneration null def + /_defaultundercolorremoval null def + /_defaultcolortransfer null def + PDF begin + [/c/cs/cm/d/d0/f/h/i/j/J/l/m/M/n/q/Q/re/ri/S/sc/sh/Tf/w/W + /applyInterpFunc/applystitchFunc/domainClip/encodeInput + /initgs/int/limit/rangeClip + /defineRes/findRes/setSA/pl + %% to keep CoolType entries in GlyphDirProcs safe from collisions with Win PS driver + /? /! /| /: /+ /GetGlyphDirectory + /pdf_flushFilters /pdf_readstring /pdf_dictOp /pdf_image /pdf_maskedImage + /pdf_shfill /pdf_sethalftone + ] {null def} bind forall + end + end + %%EndResource + PDFVars begin PDF begin + %%BeginResource: procset pdfutil + %%Copyright: Copyright 1993-1999 Adobe Systems Incorporated. All Rights Reserved. + %%Version: 4.0 2 + %%Title: Basic utilities used by other PDF procsets + /bd {bind def} bind def + /ld {load def} bd + /bld { + dup length dict begin + { null def } forall + bind + end + def + } bd + /dd { PDFVars 3 1 roll put } bd + /xdd { exch dd } bd + /Level2? + systemdict /languagelevel known + { systemdict /languagelevel get 2 ge } { false } ifelse + def + /Level1? Level2? not def + /Level3? + systemdict /languagelevel known + {systemdict /languagelevel get 3 eq } { false } ifelse + def + /getifknown { + 2 copy known { get true } { pop pop false } ifelse + } bd + /here { + currentdict exch getifknown + } bd + /isdefined? { where { pop true } { false } ifelse } bd + %%EndResource + %%BeginResource: procset pdf + %%Version: 5.0 7 + %%Copyright: Copyright 1998-2001 Adobe Systems Incorporated. All Rights Reserved. + %%Title: General operators for PDF, common to all Language Levels. + /cm { matrix astore concat } bd + /d /setdash ld + /f /fill ld + /h /closepath ld + /i {dup 0 eq {pop _defaultflatness} if setflat} bd + /j /setlinejoin ld + /J /setlinecap ld + /M /setmiterlimit ld + /n /newpath ld + /S /stroke ld + /w /setlinewidth ld + /W /clip ld + /initgs { + 0 setgray + [] 0 d + 0 j + 0 J + 10 M + 1 w + false setSA + /_defaulttransfer load settransfer + 0 i + /RelativeColorimetric ri + newpath + } bd + /int { + dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul + exch pop add exch pop + } bd + /limit { + dup 2 index le { exch } if pop + dup 2 index ge { exch } if pop + } bd + /domainClip { + Domain aload pop 3 2 roll + limit + } [/Domain] bld + /applyInterpFunc { + 0 1 DimOut 1 sub + { + dup C0 exch get exch + dup C1 exch get exch + 3 1 roll + 1 index sub + 3 index + N exp mul add + exch + currentdict /Range_lo known + { + dup Range_lo exch get exch + Range_hi exch get + 3 2 roll limit + } + { + pop + } + ifelse + exch + } for + pop + } [/DimOut /C0 /C1 /N /Range_lo /Range_hi] bld + /encodeInput { + NumParts 1 sub + 0 1 2 index + { + dup Bounds exch get + 2 index gt + { exit } + { dup + 3 index eq + { exit } + { pop } ifelse + } ifelse + } for + 3 2 roll pop + dup Bounds exch get exch + dup 1 add Bounds exch get exch + 2 mul + dup Encode exch get exch + 1 add Encode exch get + int + } [/NumParts /Bounds /Encode] bld + /rangeClip { + exch dup Range_lo exch get + exch Range_hi exch get + 3 2 roll + limit + } [/Range_lo /Range_hi] bld + /applyStitchFunc { + Functions exch get exec + currentdict /Range_lo known { + 0 1 DimOut 1 sub { + DimOut 1 add -1 roll + rangeClip + } for + } if + } [/Functions /Range_lo /DimOut] bld + /pdf_flushfilters + { + aload length + { dup status + 1 index currentfile ne and + { dup flushfile closefile } + { pop } + ifelse + } repeat + } bd + /pdf_readstring + { + 1 index dup length 1 sub get + exch readstring pop + exch pdf_flushfilters + } bind def + /pdf_dictOp + { + 3 2 roll + 10 dict copy + begin + _Filters dup length 1 sub get def + currentdict exch exec + _Filters pdf_flushfilters + end + } [/_Filters] bld + /pdf_image {{image} /DataSource pdf_dictOp} bd + /pdf_imagemask {{imagemask} /DataSource pdf_dictOp} bd + /pdf_shfill {{sh} /DataSource pdf_dictOp} bd + /pdf_sethalftone {{sethalftone} /Thresholds pdf_dictOp} bd + /pdf_maskedImage + { + 10 dict copy begin + /miDict currentdict def + /DataDict DataDict 10 dict copy def + DataDict begin + /DataSource + _Filters dup length 1 sub get + def + miDict image + _Filters pdf_flushfilters + end + end + } [/miDict /DataDict /_Filters] bld + /RadialShade { + 40 dict begin + /background exch def + /ext1 exch def + /ext0 exch def + /BBox exch def + /r2 exch def + /c2y exch def + /c2x exch def + /r1 exch def + /c1y exch def + /c1x exch def + /rampdict exch def + gsave + BBox length 0 gt { + newpath + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + newpath + } if + c1x c2x eq + { + c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse + } + { + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if + c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if + } + ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + { pathbbox } stopped + { 0 0 0 0 } if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + } + { + rampdict begin + 40 dict begin + background length 0 gt { background sssetbackground gsave clippath fill grestore } if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 { + 0 getrampcolor + c2y r2 add r1 lt + { + c1x c1y r1 360 0 arcn + xMin yMin moveto + xMax yMin lineto + xMax yMax lineto + xMin yMax lineto + xMin yMin lineto + eofill + } + { + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + } + { + /AA r2 r1 sub c2y div def + /theta AA 1 AA dup mul sub sqrt div 1 atan def + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + } + { + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + } + ifelse + } + ifelse + } ifelse + } if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt { exch } if pop + /hires exch def + hires mul + /numpix exch def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + } if + } if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + newpath + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + } + { + 0 + numsteps + { + dup + subsampling { round cvi } if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + } + repeat + pop + } ifelse + ext1 { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + } + { + c2y r1 add r2 le + { + c2x c2y r2 360 0 arcn + xMin yMin moveto + xMax yMin lineto + xMax yMax lineto + xMin yMax lineto + xMin yMin lineto + eofill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + } + { + /AA r2 r1 sub c2y div def + /theta AA 1 AA dup mul sub sqrt div 1 atan def + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + } + { + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + } + ifelse + } + ifelse + } ifelse + } if + grestore + grestore + end + end + end + } ifelse + } bd + /GenStrips { + 40 dict begin + /background exch def + /ext1 exch def + /ext0 exch def + /BBox exch def + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + /rampdict exch def + gsave + BBox length 0 gt { + newpath + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + newpath + } if + x1 x2 eq + { + y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse + } + { + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if + x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + { pathbbox } stopped + { 0 0 0 0 } if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + } + { + rampdict begin + 20 dict begin + background length 0 gt { background sssetbackground gsave clippath fill grestore } if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt { exch } if pop + mul + /numpix exch def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + } if + } if + ext0 { + 0 getrampcolor + xMin xStart lt + { xMin yMin xMin neg ySpan rectfill } if + } if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling { round cvi } if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + } + repeat + pop + ext1 { + xMax xEnd gt + { xEnd yMin xMax xEnd sub ySpan rectfill } if + } if + grestore + grestore + end + end + end + } ifelse + } bd + %%EndResource + %%BeginResource: procset pdflev2 + %%Version: 5.0 15 + %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. All Rights Reserved. + %%LanguageLevel: 2 + %%Title: PDF operators, with code specific for Level 2 + /docinitialize { + PDF begin + /_defaulthalftone currenthalftone dd + /_defaultblackgeneration currentblackgeneration dd + /_defaultundercolorremoval currentundercolorremoval dd + /_defaultcolortransfer [currentcolortransfer] dd + /_defaulttransfer currenttransfer dd + end + PDFVars /docSetupDone true put + } bd + /initialize { + PDFVars /docSetupDone get { + _defaulthalftone sethalftone + /_defaultblackgeneration load setblackgeneration + /_defaultundercolorremoval load setundercolorremoval + _defaultcolortransfer aload pop setcolortransfer + } if + false setoverprint + } bd + /terminate { } bd + /c /curveto ld + /cs /setcolorspace ld + /l /lineto ld + /m /moveto ld + /q /gsave ld + /Q /grestore ld + /sc /setcolor ld + /setSA/setstrokeadjust ld + /re { + 4 2 roll m + 1 index 0 rlineto + 0 exch rlineto + neg 0 rlineto + h + } bd + /concattransferfuncs { + [ 3 1 roll /exec load exch /exec load ] cvx + } bd + /concatandsettransfer { + /_defaulttransfer load concattransferfuncs settransfer + } bd + /concatandsetcolortransfer { + _defaultcolortransfer aload pop + 8 -1 roll 5 -1 roll concattransferfuncs 7 1 roll + 6 -1 roll 4 -1 roll concattransferfuncs 5 1 roll + 4 -1 roll 3 -1 roll concattransferfuncs 3 1 roll + concattransferfuncs + setcolortransfer + } bd + /defineRes/defineresource ld + /findRes/findresource ld + currentglobal + true systemdict /setglobal get exec + [/Function /ExtGState /Form /Shading /FunctionDictionary /MadePattern /PatternPrototype /DataSource /Image] + { /Generic /Category findresource dup length dict copy /Category defineresource pop } + forall + systemdict /setglobal get exec + /ri + { + /findcolorrendering isdefined? + { + mark exch + findcolorrendering + counttomark 2 eq + { type /booleantype eq + { dup type /nametype eq + { dup /ColorRendering resourcestatus + { pop pop + dup /DefaultColorRendering ne + { + /ColorRendering findresource + setcolorrendering + } if + } if + } if + } if + } if + cleartomark + } + { pop + } ifelse + } bd + /knownColorants? { + pop false + } bd + /getrampcolor { + /indx exch def + 0 1 NumComp 1 sub { + dup + Samples exch get + dup type /stringtype eq { indx get } if + exch + Scaling exch get aload pop + 3 1 roll + mul add + } for + setcolor + } bd + /sssetbackground { aload pop setcolor } bd + %%EndResource + %%BeginResource: procset pdftext + %%Version: 5.0 6 + %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. All Rights Reserved. + %%Title: Text operators for PDF + PDF /PDFText 78 dict dup begin put + /docinitialize + { + /resourcestatus where { + pop + /CIDParams /ProcSet resourcestatus { + pop pop + false /CIDParams /ProcSet findresource /SetBuildCompatible get exec + } if + } if + PDF begin + PDFText /_pdfDefineIdentity-H known + { PDFText /_pdfDefineIdentity-H get exec} + if + end + } bd + /initialize { + PDFText begin + } bd + /terminate { end } bd + Level2? + { + /_safeput + { + 3 -1 roll load 3 1 roll put + } + bd + } + { + /_safeput + { + 2 index load dup dup length exch maxlength ge + { dup length 5 add dict copy + 3 index xdd + } + { pop } + ifelse + 3 -1 roll load 3 1 roll put + } + bd + } + ifelse + /pdf_has_composefont? systemdict /composefont known def + /CopyFont { + { + 1 index /FID ne 2 index /UniqueID ne and + { def } { pop pop } ifelse + } forall + } bd + /Type0CopyFont + { + exch + dup length dict + begin + CopyFont + [ + exch + FDepVector + { + dup /FontType get 0 eq + { + 1 index Type0CopyFont + /_pdfType0 exch definefont + } + { + /_pdfBaseFont exch + 2 index exec + } + ifelse + exch + } + forall + pop + ] + /FDepVector exch def + currentdict + end + } bd + Level2? {currentglobal true setglobal} if + /cHexEncoding + [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 + /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 + /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 + /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B + /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E + /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 + /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 + /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 + /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA + /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD + /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 + /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 + /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 + /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def + Level2? {setglobal} if + /modEnc { + /_enc xdd + /_icode 0 dd + counttomark 1 sub -1 0 + { + index + dup type /nametype eq + { + _enc _icode 3 -1 roll put + _icode 1 add + } + if + /_icode xdd + } for + cleartomark + _enc + } bd + /trEnc { + /_enc xdd + 255 -1 0 { + exch dup -1 eq + { pop /.notdef } + { Encoding exch get } + ifelse + _enc 3 1 roll put + } for + pop + _enc + } bd + /TE { + /_i xdd + StandardEncoding 256 array copy modEnc + _pdfEncodings exch _i exch put + } bd + /TZ + { + /_usePDFEncoding xdd + findfont + dup length 6 add dict + begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /pdf_origFontName FontName def + /FontName exch def + currentdict /PaintType known + { PaintType 2 eq {/PaintType 0 def} if } + if + _usePDFEncoding 0 ge + { + /Encoding _pdfEncodings _usePDFEncoding get def + pop + } + { + _usePDFEncoding -1 eq + { + counttomark 0 eq + { pop } + { + Encoding 256 array copy + modEnc /Encoding exch def + } + ifelse + } + { + 256 array + trEnc /Encoding exch def + } + ifelse + } + ifelse + pdf_EuroProcSet pdf_origFontName known + { + pdf_origFontName pdf_AddEuroGlyphProc + } if + Level2? + { + currentdict /pdf_origFontName undef + } if + FontName currentdict + end + definefont pop + } + bd + Level2? + { + /TZG + { + currentglobal true setglobal + 2 index _pdfFontStatus + { + 2 index findfont + false setglobal + 3 index findfont + true setglobal + ne + { + 2 index findfont dup rcheck + { + dup length dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + currentdict end + } + if + 3 index exch definefont pop + } + if + } if + setglobal + TZ + } bd + } + { + /TZG {TZ} bd + } ifelse + Level2? + { + currentglobal false setglobal + userdict /pdftext_data 5 dict put + pdftext_data + begin + /saveStacks + { + pdftext_data + begin + /vmmode currentglobal def + false setglobal + count array astore /os exch def + end + countdictstack array dictstack pdftext_data exch /ds exch put + cleardictstack pdftext_data /dscount countdictstack put + pdftext_data /vmmode get setglobal + } bind def + /restoreStacks + { + pdftext_data /vmmode currentglobal put false setglobal + clear cleardictstack + pdftext_data /ds get dup + pdftext_data /dscount get 1 2 index length 1 sub + { get begin dup } for + pop pop + pdftext_data /os get aload pop + pdftext_data /vmmode get setglobal + } bind def + /testForClonePrinterBug + { + currentglobal true setglobal + /undefinedCategory /Generic /Category findresource + dup length dict copy /Category defineresource pop + setglobal + pdftext_data /saveStacks get exec + pdftext_data /vmmode currentglobal put false setglobal + /undefined /undefinedCategory { resourcestatus } stopped + pdftext_data exch /bugFound exch put + pdftext_data /vmmode get setglobal + pdftext_data /restoreStacks get exec + pdftext_data /bugFound get + } bind def + end + setglobal + /pdf_resourcestatus + pdftext_data /testForClonePrinterBug get exec + { + { + pdftext_data /saveStacks get exec + pdftext_data /os get dup dup length 1 sub + dup 1 sub dup 0 lt { pop 0 } if + exch 1 exch { get exch dup } for + pop pop + { resourcestatus } + stopped + { + clear cleardictstack pdftext_data /restoreStacks get exec + { pop pop } stopped pop false + } + { + count array astore pdftext_data exch /results exch put + pdftext_data /restoreStacks get exec pop pop + pdftext_data /results get aload pop + } + ifelse + } + } + { { resourcestatus } } + ifelse + bd + } + if + Level2? + { + /_pdfUndefineResource + { + currentglobal 3 1 roll + _pdf_FontDirectory 2 index 2 copy known + {undef} + {pop pop} + ifelse + 1 index (pdf) exch _pdfConcatNames 1 index + 1 index 1 _pdfConcatNames 1 index + 5 index 1 _pdfConcatNames 1 index + 4 + { + 2 copy pdf_resourcestatus + { + pop 2 lt + {2 copy findresource gcheck setglobal undefineresource} + {pop pop} + ifelse + } + { pop pop} + ifelse + } repeat + setglobal + } bd + } + { + /_pdfUndefineResource { pop pop} bd + } + ifelse + Level2? + { + /_pdfFontStatus + { + currentglobal exch + /Font pdf_resourcestatus + {pop pop true} + {false} + ifelse + exch setglobal + } bd + } + { + /_pdfFontStatusString 50 string def + _pdfFontStatusString 0 (fonts/) putinterval + /_pdfFontStatus + { + FontDirectory 1 index known + { pop true } + { + _pdfFontStatusString 6 42 getinterval + cvs length 6 add + _pdfFontStatusString exch 0 exch getinterval + { status } stopped + {pop false} + { + { pop pop pop pop true} + { false } + ifelse + } + ifelse + } + ifelse + } bd + } + ifelse + Level2? + { + /_pdfCIDFontStatus + { + /CIDFont /Category pdf_resourcestatus + { + pop pop + /CIDFont pdf_resourcestatus + {pop pop true} + {false} + ifelse + } + { pop false } + ifelse + } bd + } + if + /_pdfString100 100 string def + /_pdfComposeFontName + { + dup length 1 eq + { + 0 get + 1 index + type /nametype eq + { + _pdfString100 cvs + length dup dup _pdfString100 exch (-) putinterval + _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval + 2 index exch cvs length + add 1 add _pdfString100 exch 0 exch getinterval + exch pop + true + } + { + pop pop + false + } + ifelse + } + { + false + } + ifelse + dup {exch cvn exch} if + } bd + /_pdfConcatNames + { + exch + _pdfString100 cvs + length dup dup _pdfString100 exch (-) putinterval + _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval + 3 -1 roll exch cvs length + add 1 add _pdfString100 exch 0 exch getinterval + cvn + } bind def + /_pdfTextTempString 50 string def + /_pdfRegOrderingArray [(Adobe-Japan1) (Adobe-CNS1) (Adobe-Korea1) (Adobe-GB1)] def + /_pdf_CheckCIDSystemInfo + { + 1 index _pdfTextTempString cvs + (Identity) anchorsearch + { + pop pop pop pop true + } + { + false + _pdfRegOrderingArray + { + 2 index exch + anchorsearch + { pop pop pop true exit} + { pop } + ifelse + } + forall + exch pop + exch /CIDFont findresource + /CIDSystemInfo get + 3 -1 roll /CMap findresource + /CIDSystemInfo get + exch + 3 -1 roll + { + 2 copy + /Supplement get + exch + dup type /dicttype eq + {/Supplement get} + {pop 0 } + ifelse + ge + } + { true } + ifelse + { + dup /Registry get + 2 index /Registry get eq + { + /Ordering get + exch /Ordering get + dup type /arraytype eq + { + 1 index type /arraytype eq + { + true + 1 index length 1 sub -1 0 + { + dup 2 index exch get exch 3 index exch get ne + { pop false exit} + if + } for + exch pop exch pop + } + { pop pop false } + ifelse + } + { + eq + } + ifelse + } + { pop pop false } + ifelse + } + { pop pop false } + ifelse + } + ifelse + } bind def + pdf_has_composefont? + { + /_pdfComposeFont + { + 2 copy _pdfComposeFontName not + { + 2 index + } + if + (pdf) exch _pdfConcatNames + dup _pdfFontStatus + { dup findfont 5 2 roll pop pop pop true} + { + 4 1 roll + 1 index /CMap pdf_resourcestatus + { + pop pop + true + } + {false} + ifelse + 1 index true exch + { + _pdfCIDFontStatus not + {pop false exit} + if + } + forall + and + { + 1 index 1 index 0 get _pdf_CheckCIDSystemInfo + { + 3 -1 roll pop + 2 index 3 1 roll + composefont true + } + { + pop pop exch pop false + } + ifelse + } + { + _pdfComposeFontName + { + dup _pdfFontStatus + { + exch pop + 1 index exch + findfont definefont true + } + { + pop exch pop + false + } + ifelse + } + { + exch pop + false + } + ifelse + } + ifelse + { true } + { + dup _pdfFontStatus + { dup findfont true } + { pop false } + ifelse + } + ifelse + } + ifelse + } bd + } + { + /_pdfComposeFont + { + _pdfComposeFontName not + { + dup + } + if + dup + _pdfFontStatus + {exch pop dup findfont true} + { + 1 index + dup type /nametype eq + {pop} + {cvn} + ifelse + eq + {pop false} + { + dup _pdfFontStatus + {dup findfont true} + {pop false} + ifelse + } + ifelse + } + ifelse + } bd + } + ifelse + /_pdfStyleDicts 4 dict dup begin + /Adobe-Japan1 4 dict dup begin + Level2? + { + /Serif + /HeiseiMin-W3-83pv-RKSJ-H _pdfFontStatus + {/HeiseiMin-W3} + { + /HeiseiMin-W3 _pdfCIDFontStatus + {/HeiseiMin-W3} + {/Ryumin-Light} + ifelse + } + ifelse + def + /SansSerif + /HeiseiKakuGo-W5-83pv-RKSJ-H _pdfFontStatus + {/HeiseiKakuGo-W5} + { + /HeiseiKakuGo-W5 _pdfCIDFontStatus + {/HeiseiKakuGo-W5} + {/GothicBBB-Medium} + ifelse + } + ifelse + def + /HeiseiMaruGo-W4-83pv-RKSJ-H _pdfFontStatus + {/HeiseiMaruGo-W4} + { + /HeiseiMaruGo-W4 _pdfCIDFontStatus + {/HeiseiMaruGo-W4} + { + /Jun101-Light-RKSJ-H _pdfFontStatus + { /Jun101-Light } + { SansSerif } + ifelse + } + ifelse + } + ifelse + /RoundSansSerif exch def + /Default Serif def + } + { + /Serif /Ryumin-Light def + /SansSerif /GothicBBB-Medium def + { + (fonts/Jun101-Light-83pv-RKSJ-H) status + }stopped + {pop}{ + { pop pop pop pop /Jun101-Light } + { SansSerif } + ifelse + /RoundSansSerif exch def + }ifelse + /Default Serif def + } + ifelse + end + def + /Adobe-Korea1 4 dict dup begin + /Serif /HYSMyeongJo-Medium def + /SansSerif /HYGoThic-Medium def + /RoundSansSerif SansSerif def + /Default Serif def + end + def + /Adobe-GB1 4 dict dup begin + /Serif /STSong-Light def + /SansSerif /STHeiti-Regular def + /RoundSansSerif SansSerif def + /Default Serif def + end + def + /Adobe-CNS1 4 dict dup begin + /Serif /MKai-Medium def + /SansSerif /MHei-Medium def + /RoundSansSerif SansSerif def + /Default Serif def + end + def + end + def + /TZzero + { + /_wmode xdd + /_styleArr xdd + /_regOrdering xdd + 3 copy + _pdfComposeFont + { + 5 2 roll pop pop pop + } + { + [ + 0 1 _styleArr length 1 sub + { + _styleArr exch get + _pdfStyleDicts _regOrdering 2 copy known + { + get + exch 2 copy known not + { pop /Default } + if + get + } + { + pop pop pop /Unknown + } + ifelse + } + for + ] + exch pop + 2 index 3 1 roll + _pdfComposeFont + {3 -1 roll pop} + { + findfont dup /FontName get exch + } + ifelse + } + ifelse + dup /WMode 2 copy known + { get _wmode ne } + { pop pop _wmode 1 eq} + ifelse + { + exch _wmode _pdfConcatNames + dup _pdfFontStatus + { exch pop dup findfont false} + { exch true } + ifelse + } + { + dup /FontType get 0 ne + } + ifelse + { + dup /FontType get 3 eq _wmode 1 eq and + { + _pdfVerticalRomanT3Font dup length 10 add dict copy + begin + /_basefont exch + dup length 3 add dict + begin + {1 index /FID ne {def}{pop pop} ifelse } + forall + /Encoding Encoding dup length array copy + dup 16#27 /quotesingle put + dup 16#60 /grave put + _regOrdering /Adobe-Japan1 eq + {dup 16#5c /yen put dup 16#a5 /yen put dup 16#b4 /yen put} + if + def + FontName + currentdict + end + definefont + def + /Encoding _basefont /Encoding get def + /_fauxfont true def + } + { + dup length 3 add dict + begin + {1 index /FID ne {def}{pop pop} ifelse } + forall + FontType 0 ne + { + /Encoding Encoding dup length array copy + dup 16#27 /quotesingle put + dup 16#60 /grave put + _regOrdering /Adobe-Japan1 eq + {dup 16#5c /yen put} + if + def + /_fauxfont true def + } if + } ifelse + /WMode _wmode def + dup dup /FontName exch def + currentdict + end + definefont pop + } + { + pop + } + ifelse + /_pdf_FontDirectory 3 1 roll _safeput + } + bd + Level2? + { + /Tf { + _pdf_FontDirectory 2 index 2 copy known + {get exch 3 -1 roll pop} + {pop pop} + ifelse + selectfont + } bd + } + { + /Tf { + _pdf_FontDirectory 2 index 2 copy known + {get exch 3 -1 roll pop} + {pop pop} + ifelse + exch findfont exch + dup type /arraytype eq + {makefont} + {scalefont} + ifelse + setfont + } bd + } + ifelse + /cshow where + { + pop /pdf_cshow /cshow load dd + /pdf_remove2 {pop pop} dd + } + { + /pdf_cshow {exch forall} dd + /pdf_remove2 {} dd + } ifelse + /pdf_xshow + { + /_pdf_na xdd + /_pdf_i 0 dd + currentpoint + /_pdf_y xdd + /_pdf_x xdd + { + pdf_remove2 + _pdf_str1 exch 0 exch put + _pdf_str1 /_pdf_showproc load exec + {_pdf_na _pdf_i get} stopped + { pop pop } + { + _pdf_x _pdf_y moveto + 0 + rmoveto + } + ifelse + _pdf_i 1 add /_pdf_i xdd + currentpoint + /_pdf_y xdd + /_pdf_x xdd + } + exch + pdf_cshow + } bd + /pdf_yshow + { + /_pdf_na xdd + /_pdf_i 0 dd + currentpoint + /_pdf_y xdd + /_pdf_x xdd + { + pdf_remove2 + _pdf_str1 exch 0 exch put + _pdf_str1 /_pdf_showproc load exec + {_pdf_na _pdf_i get} stopped + { pop pop } + { + _pdf_x _pdf_y moveto + 0 exch + rmoveto + } + ifelse + _pdf_i 1 add /_pdf_i xdd + currentpoint + /_pdf_y xdd + /_pdf_x xdd + } + exch + pdf_cshow + } bd + /pdf_xyshow + { + /_pdf_na xdd + /_pdf_i 0 dd + currentpoint + /_pdf_y xdd + /_pdf_x xdd + { + pdf_remove2 + _pdf_str1 exch 0 exch put + _pdf_str1 /_pdf_showproc load exec + {_pdf_na _pdf_i get} stopped + { pop pop } + { + {_pdf_na _pdf_i 1 add get} stopped + { pop pop pop} + { + _pdf_x _pdf_y moveto + rmoveto + } + ifelse + } + ifelse + _pdf_i 2 add /_pdf_i xdd + currentpoint + /_pdf_y xdd + /_pdf_x xdd + } + exch + pdf_cshow + } bd + /pdfl1xs {/_pdf_showproc /show load dd pdf_xshow} bd + /pdfl1ys {/_pdf_showproc /show load dd pdf_yshow} bd + /pdfl1xys {/_pdf_showproc /show load dd pdf_xyshow} bd + Level2? _ColorSep5044? not and + { + /pdfxs {{xshow} stopped {pdfl1xs} if} bd + /pdfys {{yshow} stopped {pdfl1ys} if} bd + /pdfxys {{xyshow} stopped {pdfl1xys} if} bd + } + { + /pdfxs /pdfl1xs load dd + /pdfys /pdfl1ys load dd + /pdfxys /pdfl1xys load dd + } ifelse + /pdf_charpath {false charpath} bd + /pdf_xcharpath {/_pdf_showproc /pdf_charpath load dd pdf_xshow} bd + /pdf_ycharpath {/_pdf_showproc /pdf_charpath load dd pdf_yshow} bd + /pdf_xycharpath {/_pdf_showproc /pdf_charpath load dd pdf_xyshow} bd + /pdf_strokepath + { + { + pdf_remove2 + _pdf_str1 exch 0 exch put + _pdf_str1 false charpath + currentpoint S moveto + } bind + exch pdf_cshow + } bd + /pdf_xstrokepath {/_pdf_showproc {pdf_charpath S} dd pdf_xshow} bd + /pdf_ystrokepath {/_pdf_showproc {pdf_charpath S} dd pdf_yshow} bd + /pdf_xystrokepath {/_pdf_showproc {pdf_charpath S} dd pdf_xyshow} bd + Level2? {currentglobal true setglobal} if + /d0/setcharwidth ld + /nND {{/.notdef} repeat} bd + /T3Defs { + /BuildChar + { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + } + def + /BuildGlyph { + exch begin + GlyphProcs exch get exec + end + } def + /_pdfT3Font true def + } bd + /_pdfBoldRomanWidthProc + { + stringwidth 1 index 0 ne { exch .03 add exch }if setcharwidth + 0 0 + } bd + /_pdfType0WidthProc + { + dup stringwidth 0 0 moveto + 2 index true charpath pathbbox + 0 -1 + 7 index 2 div .88 + setcachedevice2 + pop + 0 0 + } bd + /_pdfType0WMode1WidthProc + { + dup stringwidth + pop 2 div neg -0.88 + 2 copy + moveto + 0 -1 + 5 -1 roll true charpath pathbbox + setcachedevice + } bd + /_pdfBoldBaseFont + 11 dict begin + /FontType 3 def + /FontMatrix[1 0 0 1 0 0]def + /FontBBox[0 0 1 1]def + /Encoding cHexEncoding def + /_setwidthProc /_pdfBoldRomanWidthProc load def + /_bcstr1 1 string def + /BuildChar + { + exch begin + _basefont setfont + _bcstr1 dup 0 4 -1 roll put + dup + _setwidthProc + 3 copy + moveto + show + _basefonto setfont + moveto + show + end + }bd + currentdict + end + def + pdf_has_composefont? + { + /_pdfBoldBaseCIDFont + 11 dict begin + /CIDFontType 1 def + /CIDFontName /_pdfBoldBaseCIDFont def + /FontMatrix[1 0 0 1 0 0]def + /FontBBox[0 0 1 1]def + /_setwidthProc /_pdfType0WidthProc load def + /_bcstr2 2 string def + /BuildGlyph + { + exch begin + _basefont setfont + _bcstr2 1 2 index 256 mod put + _bcstr2 0 3 -1 roll 256 idiv put + _bcstr2 dup _setwidthProc + 3 copy + moveto + show + _basefonto setfont + moveto + show + end + }bd + currentdict + end + def + /_pdfDefineIdentity-H + { + /Identity-H /CMap PDFText /pdf_resourcestatus get exec + { + pop pop + } + { + /CIDInit/ProcSet findresource begin 12 dict begin + begincmap + /CIDSystemInfo + 3 dict begin + /Registry (Adobe) def + /Ordering (Identity) def + /Supplement 0 def + currentdict + end + def + /CMapName /Identity-H def + /CMapVersion 1 def + /CMapType 1 def + 1 begincodespacerange + <0000> + endcodespacerange + 1 begincidrange + <0000> 0 + endcidrange + endcmap + CMapName currentdict/CMap defineresource pop + end + end + } ifelse + } def + } if + /_pdfVerticalRomanT3Font + 10 dict begin + /FontType 3 def + /FontMatrix[1 0 0 1 0 0]def + /FontBBox[0 0 1 1]def + /_bcstr1 1 string def + /BuildChar + { + exch begin + _basefont setfont + _bcstr1 dup 0 4 -1 roll put + dup + _pdfType0WidthProc + moveto + show + end + }bd + currentdict + end + def + Level2? {setglobal} if + /MakeBoldFont + { + dup /ct_SyntheticBold known + { + dup length 3 add dict begin + CopyFont + /ct_StrokeWidth .03 0 FontMatrix idtransform pop def + /ct_SyntheticBold true def + currentdict + end + definefont + } + { + dup dup length 3 add dict + begin + CopyFont + /PaintType 2 def + /StrokeWidth .03 0 FontMatrix idtransform pop def + /dummybold currentdict + end + definefont + dup /FontType get dup 9 ge exch 11 le and + { + _pdfBoldBaseCIDFont + dup length 3 add dict copy begin + dup /CIDSystemInfo get /CIDSystemInfo exch def + /_Type0Identity /Identity-H 3 -1 roll [ exch ] composefont + /_basefont exch def + /_Type0Identity /Identity-H 3 -1 roll [ exch ] composefont + /_basefonto exch def + currentdict + end + /CIDFont defineresource + } + { + _pdfBoldBaseFont + dup length 3 add dict copy begin + /_basefont exch def + /_basefonto exch def + currentdict + end + definefont + } + ifelse + } + ifelse + } bd + /MakeBold { + 1 index + _pdf_FontDirectory 2 index 2 copy known + {get} + {exch pop} + ifelse + findfont + dup + /FontType get 0 eq + { + dup /WMode known {dup /WMode get 1 eq }{false} ifelse + version length 4 ge + and + {version 0 4 getinterval cvi 2015 ge } + {true} + ifelse + {/_pdfType0WidthProc} + {/_pdfType0WMode1WidthProc} + ifelse + _pdfBoldBaseFont /_setwidthProc 3 -1 roll load put + {MakeBoldFont} Type0CopyFont definefont + } + { + dup /_fauxfont known not 1 index /SubstMaster known not and + { + _pdfBoldBaseFont /_setwidthProc /_pdfBoldRomanWidthProc load put + MakeBoldFont + } + { + 2 index 2 index eq + { exch pop } + { + dup length dict begin + CopyFont + currentdict + end + definefont + } + ifelse + } + ifelse + } + ifelse + pop pop + dup /dummybold ne + {/_pdf_FontDirectory exch dup _safeput } + { pop } + ifelse + }bd + /MakeItalic { + _pdf_FontDirectory exch 2 copy known + {get} + {exch pop} + ifelse + dup findfont + dup /FontInfo 2 copy known + { + get + /ItalicAngle 2 copy known + {get 0 eq } + { pop pop true} + ifelse + } + { pop pop true} + ifelse + { + exch pop + dup /FontType get 0 eq Level2? not and + { dup /FMapType get 6 eq } + { false } + ifelse + { + dup /WMode 2 copy known + { + get 1 eq + { _italMtx_WMode1Type0 } + { _italMtxType0 } + ifelse + } + { pop pop _italMtxType0 } + ifelse + } + { + dup /WMode 2 copy known + { + get 1 eq + { _italMtx_WMode1 } + { _italMtx } + ifelse + } + { pop pop _italMtx } + ifelse + } + ifelse + makefont + dup /FontType get 42 eq Level2? not or + { + dup length dict begin + CopyFont + currentdict + end + } + if + 1 index exch + definefont pop + /_pdf_FontDirectory exch dup _safeput + } + { + pop + 2 copy ne + { + /_pdf_FontDirectory 3 1 roll _safeput + } + { pop pop } + ifelse + } + ifelse + }bd + /MakeBoldItalic { + /dummybold exch + MakeBold + /dummybold + MakeItalic + }bd + Level2? + { + /pdf_CopyDict + {1 index length add dict copy} + def + } + { + /pdf_CopyDict + { + 1 index length add dict + 1 index wcheck + { copy } + { begin + {def} forall + currentdict + end + } + ifelse + } + def + } + ifelse + /pdf_AddEuroGlyphProc + { + currentdict /CharStrings known + { + CharStrings /Euro known not + { + dup + /CharStrings + CharStrings 1 pdf_CopyDict + begin + /Euro pdf_EuroProcSet 4 -1 roll get def + currentdict + end + def + /pdf_PSBuildGlyph /pdf_PSBuildGlyph load def + /pdf_PathOps /pdf_PathOps load def + /Symbol eq + { + /Encoding Encoding dup length array copy + dup 160 /Euro put def + } + if + } + { pop + } + ifelse + } + { pop + } + ifelse + } + def + Level2? {currentglobal true setglobal} if + /pdf_PathOps 4 dict dup begin + /m {moveto} def + /l {lineto} def + /c {curveto} def + /cp {closepath} def + end + def + /pdf_PSBuildGlyph + { + gsave + 8 -1 roll pop + 7 1 roll + currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse + dup 9 1 roll + { + currentdict /StrokeWidth 2 copy known + { + get 2 div + 5 1 roll + 4 -1 roll 4 index sub + 4 1 roll + 3 -1 roll 4 index sub + 3 1 roll + exch 4 index add exch + 4 index add + 5 -1 roll pop + } + { + pop pop + } + ifelse + } + if + setcachedevice + pdf_PathOps begin + exec + end + { + currentdict /StrokeWidth 2 copy known + { get } + { pop pop 0 } + ifelse + setlinewidth stroke + } + { + fill + } + ifelse + grestore + } def + /pdf_EuroProcSet 13 dict def + pdf_EuroProcSet + begin + /Courier-Bold + { + 600 0 6 -12 585 612 + { + 385 274 m + 180 274 l + 179 283 179 293 179 303 c + 179 310 179 316 180 323 c + 398 323 l + 423 404 l + 197 404 l + 219 477 273 520 357 520 c + 409 520 466 490 487 454 c + 487 389 l + 579 389 l + 579 612 l + 487 612 l + 487 560 l + 449 595 394 612 349 612 c + 222 612 130 529 98 404 c + 31 404 l + 6 323 l + 86 323 l + 86 304 l + 86 294 86 284 87 274 c + 31 274 l + 6 193 l + 99 193 l + 129 77 211 -12 359 -12 c + 398 -12 509 8 585 77 c + 529 145 l + 497 123 436 80 356 80 c + 285 80 227 122 198 193 c + 360 193 l + cp + 600 0 m + } + pdf_PSBuildGlyph + } def + /Courier-BoldOblique /Courier-Bold load def + /Courier + { + 600 0 17 -12 578 584 + { + 17 204 m + 97 204 l + 126 81 214 -12 361 -12 c + 440 -12 517 17 578 62 c + 554 109 l + 501 70 434 43 366 43 c + 266 43 184 101 154 204 c + 380 204 l + 400 259 l + 144 259 l + 144 270 143 281 143 292 c + 143 299 143 307 144 314 c + 418 314 l + 438 369 l + 153 369 l + 177 464 249 529 345 529 c + 415 529 484 503 522 463 c + 522 391 l + 576 391 l + 576 584 l + 522 584 l + 522 531 l + 473 566 420 584 348 584 c + 216 584 122 490 95 369 c + 37 369 l + 17 314 l + 87 314 l + 87 297 l + 87 284 88 272 89 259 c + 37 259 l + cp + 600 0 m + } + pdf_PSBuildGlyph + } def + /Courier-Oblique /Courier load def + /Helvetica + { + 556 0 24 -19 541 703 + { + 541 628 m + 510 669 442 703 354 703 c + 201 703 117 607 101 444 c + 50 444 l + 25 372 l + 97 372 l + 97 301 l + 49 301 l + 24 229 l + 103 229 l + 124 67 209 -19 350 -19 c + 435 -19 501 25 509 32 c + 509 131 l + 492 105 417 60 343 60 c + 267 60 204 127 197 229 c + 406 229 l + 430 301 l + 191 301 l + 191 372 l + 455 372 l + 479 444 l + 194 444 l + 201 531 245 624 348 624 c + 433 624 484 583 509 534 c + cp + 556 0 m + } + pdf_PSBuildGlyph + } def + /Helvetica-Oblique /Helvetica load def + /Helvetica-Bold + { + 556 0 12 -19 563 710 + { + 563 621 m + 537 659 463 710 363 710 c + 216 710 125 620 101 462 c + 51 462 l + 12 367 l + 92 367 l + 92 346 l + 92 337 93 328 93 319 c + 52 319 l + 12 224 l + 102 224 l + 131 58 228 -19 363 -19 c + 417 -19 471 -12 517 18 c + 517 146 l + 481 115 426 93 363 93 c + 283 93 254 166 246 224 c + 398 224 l + 438 319 l + 236 319 l + 236 367 l + 457 367 l + 497 462 l + 244 462 l + 259 552 298 598 363 598 c + 425 598 464 570 486 547 c + 507 526 513 517 517 509 c + cp + 556 0 m + } + pdf_PSBuildGlyph + } def + /Helvetica-BoldOblique /Helvetica-Bold load def + /Symbol + { + 750 0 20 -12 714 685 + { + 714 581 m + 650 645 560 685 465 685 c + 304 685 165 580 128 432 c + 50 432 l + 20 369 l + 116 369 l + 115 356 115 347 115 337 c + 115 328 115 319 116 306 c + 50 306 l + 20 243 l + 128 243 l + 165 97 300 -12 465 -12 c + 560 -12 635 25 685 65 c + 685 155 l + 633 91 551 51 465 51 c + 340 51 238 131 199 243 c + 555 243 l + 585 306 l + 184 306 l + 183 317 182 326 182 336 c + 182 346 183 356 184 369 c + 614 369 l 644 432 l + 199 432 l + 233 540 340 622 465 622 c + 555 622 636 580 685 520 c + cp + 750 0 m + } + pdf_PSBuildGlyph + } def + /Times-Bold + { + 500 0 16 -14 478 700 + { + 367 308 m + 224 308 l + 224 368 l + 375 368 l + 380 414 l + 225 414 l + 230 589 257 653 315 653 c + 402 653 431 521 444 457 c + 473 457 l + 473 698 l + 444 697 l + 441 679 437 662 418 662 c + 393 662 365 700 310 700 c + 211 700 97 597 73 414 c + 21 414 l + 16 368 l + 69 368 l + 69 359 68 350 68 341 c + 68 330 68 319 69 308 c + 21 308 l + 16 262 l + 73 262 l + 91 119 161 -14 301 -14 c + 380 -14 443 50 478 116 c + 448 136 l + 415 84 382 40 323 40 c + 262 40 231 77 225 262 c + 362 262 l + cp + 500 0 m + } + pdf_PSBuildGlyph + } def + /Times-BoldItalic + { + 500 0 9 -20 542 686 + { + 542 686 m + 518 686 l + 513 673 507 660 495 660 c + 475 660 457 683 384 683 c + 285 683 170 584 122 430 c + 58 430 l + 34 369 l + 105 369 l + 101 354 92 328 90 312 c + 34 312 l + 9 251 l + 86 251 l + 85 238 84 223 84 207 c + 84 112 117 -14 272 -14 c + 326 -14 349 9 381 9 c + 393 9 393 -10 394 -20 c + 420 -20 l + 461 148 l + 429 148 l + 416 109 362 15 292 15 c + 227 15 197 55 197 128 c + 197 162 204 203 216 251 c + 378 251 l + 402 312 l + 227 312 l + 229 325 236 356 241 369 c + 425 369 l + 450 430 l + 255 430 l + 257 435 264 458 274 488 c + 298 561 337 654 394 654 c + 437 654 484 621 484 530 c + 484 516 l + 516 516 l + cp + 500 0 m + } + pdf_PSBuildGlyph + } def + /Times-Italic + { + 500 0 23 -10 595 692 + { + 399 317 m + 196 317 l + 199 340 203 363 209 386 c + 429 386 l + 444 424 l + 219 424 l + 246 514 307 648 418 648 c + 448 648 471 638 492 616 c + 529 576 524 529 527 479 c + 549 475 l + 595 687 l + 570 687 l + 562 674 558 664 542 664 c + 518 664 474 692 423 692 c + 275 692 162 551 116 424 c + 67 424 l + 53 386 l + 104 386 l + 98 363 93 340 90 317 c + 37 317 l + 23 279 l + 86 279 l + 85 266 85 253 85 240 c + 85 118 137 -10 277 -10 c + 370 -10 436 58 488 128 c + 466 149 l + 424 101 375 48 307 48 c + 212 48 190 160 190 234 c + 190 249 191 264 192 279 c + 384 279 l + cp + 500 0 m + } + pdf_PSBuildGlyph + } def + /Times-Roman + { + 500 0 10 -12 484 692 + { + 347 298 m + 171 298 l + 170 310 170 322 170 335 c + 170 362 l + 362 362 l + 374 403 l + 172 403 l + 184 580 244 642 308 642 c + 380 642 434 574 457 457 c + 481 462 l + 474 691 l + 449 691 l + 433 670 429 657 410 657 c + 394 657 360 692 299 692 c + 204 692 94 604 73 403 c + 22 403 l + 10 362 l + 70 362 l + 69 352 69 341 69 330 c + 69 319 69 308 70 298 c + 22 298 l + 10 257 l + 73 257 l + 97 57 216 -12 295 -12 c + 364 -12 427 25 484 123 c + 458 142 l + 425 101 384 37 316 37 c + 256 37 189 84 173 257 c + 335 257 l + cp + 500 0 m + } + pdf_PSBuildGlyph + } def + end + Level2? {setglobal} if + currentdict readonly pop end + %%EndResource + PDFText begin + [userdict /pdf_svglb currentglobal put true setglobal + 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis + /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute + /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde + /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex + /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls + /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash + /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef + /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash + /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef + /guillemotleft/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe + /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide + /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright + /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand + /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex + /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex + /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla + /hungarumlaut/ogonek/caron + 0 TE + [1/dotlessi/caron 39/quotesingle 96/grave + 127/bullet/Euro/bullet/quotesinglbase/florin/quotedblbase/ellipsis + /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE + /bullet/Zcaron/bullet/bullet/quoteleft/quoteright/quotedblleft + /quotedblright/bullet/endash/emdash/tilde/trademark/scaron + /guilsinglright/oe/bullet/zcaron/Ydieresis/space/exclamdown/cent/sterling + /currency/yen/brokenbar/section/dieresis/copyright/ordfeminine + /guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus + /twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla + /onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters + /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla + /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis + /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash + /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave + /aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute + /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde + /ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute + /ucircumflex/udieresis/yacute/thorn/ydieresis + 1 TE + end + + userdict /pdf_svglb get setglobal + %%BeginResource: pdfasc.prc + %%Version: 4.0 2 + %%Copyright: Copyright 1992-1997 Adobe Systems Incorporated. All Rights Reserved. + /AS { + 9 dict begin + /shrink? xdd + /Pury xdd + /Purx xdd + /Plly xdd + /Pllx xdd + gsave newpath clippath pathbbox newpath grestore + /Dury xdd + /Durx xdd + /Dlly xdd + /Dllx xdd + Durx Dllx sub Dury Dlly sub + Pury Plly sub div exch Purx Pllx sub div + 2 copy gt { exch } if pop + Durx Dllx add 2 div Dury Dlly add 2 div translate + shrink? { dup scale } { pop } ifelse + Purx Pllx add -2 div Pury Plly add -2 div translate + end + } [/shrink? /Pury /Purx /Plly /Pllx /Durx /Dury /Dllx /Dlly] + bld + %%EndResource + currentdict readonly pop + end end + /currentpacking where {pop setpacking}if + PDFVars/DocInitAll{[PDF PDFText]{/docinitialize get exec}forall }put + PDFVars/InitAll{[PDF PDFText]{/initialize get exec}forall initgs}put + PDFVars/TermAll{[PDFText PDF]{/terminate get exec}forall}put + PDFVars begin PDF begin + PDFVars/DocInitAll get exec PDFVars/InitAll get exec + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font KAXUFM+CMR10 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.00B) def + /FullName (CMR10) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /KAXUFM+CMR10 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -251 -250 1009 969 } def + /XUID [6 5000793 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC9EBBC6A5E + 2825687306A156DACC32FBF734087CDFC35B78DDA68032BCA38CA8E8A340AAA3 + 002A0E52D0B9162BC68AACFC0F14A1C933363A56EE460EB41CE8C2E9EDC509AB + 9E0462B9F619AD944F133AF072E5FD1625902963260181189070C40FB0D49A96 + 50D86FB0AA90098027455AC2354A299FC7BFC34B4F1162E5E9A3EFD80D6240B6 + 9378BB4F6F9C33B910EC9F1A2CB9EFF55282DDA2B7E7C4B1FF6BBEDD12916474 + 7C47C4F0B9730A20110B972C6E3B152D541C5EEFFD9815AA1D2A5396F0EE6FF8 + C72686B1CA6ED6692D437E716C93E5EBDC25D177D5521810869088C82EBF4483 + CF1296528C0320AE7776B6C2348CBF592DC554866FFE33BDFA1D0610D9672A49 + 0417D1494EA769AE1DB57C163FE76277DACFC6AE3C75FB83DB2091F24AE61962 + 8315A9DA3516D9313B6E99322E5D326C0DD17EBB5EECEA839FBCE8FE3BD6CD57 + A596C100328F24B6541F455E19BB48F23AC441B9041AEEBC0EEE70382DD18313 + 6DB72ECFAF899FFD1A51F59E6A4919D502F99FBA2C6D6E963D5D4E999C22B2E6 + 675334E93FD82C0048C287A1ABC6C3F81D840036C0610F03A1ED0244C06A05C8 + E6A4B86A5089C6ADE7F260A3E2CAB7CA4514828A4EFAF571FA56B068BD96C37C + B19FE02A2DA6345E00C0B5A2A18E5DDE1174386F08CF358FF68BFDC503A7E9EE + DE1C4168BE7F44380CD5972A38A1F71B83C589901F74E7DEE258627AA98EE53C + 7960E0C054265D2A81D3BBF95C289344D3B62B007BE9033209DDDAF50816E086 + 1514B42E6CB818CE0E9D0FBA19C81B7EF5C85FB7DEDF1F5CF7F06ECD440467D4 + 1FE583FA56AA3A8E710C9706B6BFC09040D04D8E927AC319A4A9196C1E144D8F + 91EC3736C52B79C6FA8C0D9C9FC094A04D0CB3E6590B3E798619B4F7118300D4 + 4FB0D69DA2D351B2C64FBE9BBCD8F8F26F0C6336B33A29DBDCC87DB7C5ABBE62 + E13479A2E650420148E39C57C4B407F7ECA18B3F54468639C82F6876767E3DB0 + A5366E3D8B827AD5E3BD3A299B184B6ED6DDB4E183B62D67EB85C730A2D43594 + 6E6B04BB1C70A411F68EA68235F09F82DE10877BE05B388CA6B170666A689EA5 + F02619E19C418C467AA2AFE4EDAAEE7418ECF7042450F9DE0BF63EA5A33679FD + 97FF27654CF5BC2EEBED678880CDC99E85B1C6000BD2478AB13A3E53D1F0C527 + F5A68292D3605B0338554E02D39F7DE723288E6C565C5128243B9E60391590B0 + 7627F0E1B43E9B33AC9E735657A5FBD67C6123695666AC2DF8794B1D7394099C + 14BABAEFDC75ED85957E1F756E8BA21FD08EEC3173CE1B64D336BB3CB1051308 + A032B9D59C1E1146F15D7B6FA2E4518CBFCDB08DEA3861252400AB3D91DF9A8B + B0FD523F7F3992A9548EFD51337BB053AA7CBC71AF48D63BCA5A3EE5DD4387E6 + 0D180943A4F6440FAB57645A160E4C559BD1339CCD242B2B619E7AAB08109657 + 36F06E9B943F61F4F8C08E5D0AA11DDF7E4AFCF2E0702C5950D7F390CA2475E6 + 00C2A778782EED150CA2F35F825C612C83F85F54681EAB5B04AB8E597442AB9A + 04DA27E1AF2F346CABE06B59C4F5B35DA9C50E0EBA4074174CFAB69F73BABE3C + B45744410DE9BDCCBFC3DC9CE912E53F7DDEC5B9426FB562B9CBBE854684E4C3 + BBC4D5821CAC1EC66E0C6D63BB42C1D225DE1B78D6CA33A1053DADCDD653E60D + 8495F8900CACE64EA4E9B343FD59169D2A363E22D296E12D02A968E2A15CDEDE + F1BD3B29AB9AC7383914454A4F6FA0B6AB445000E1C47BCC9118059FFB2C298D + CFF4B44091F8440ECEC4E1131B6FE89BFF66AE17761FA7EFD72279F962C0B6B6 + 0809CBD842B6AC1F8D2C4D5E350F5829C154872872C33CC14B2DBAC57B6312DB + 7FD88A6AEAFC4BD7712FF5F5E5F26D7C8470F4D3E0668A74352172B18328CD5C + 75953986D2CA8A923339E10C735AB04617B2671CA6E83675A86359C3BAAC4BBB + DE8ECCCA0AB53B1CADAE1ACE725D33CDF63B0CE9B01780716599420B244A3171 + 1FC2D3D57CAA6904DA9D95885D7771F3B90C7405D077E94C6DF249589F954CD2 + 5BEE00F6821C757A1B4471735FB1005A766C135D118766C354393AF95CEBD8A6 + D7986E3B0EBF3922FA67B0A51A88FA3D7FD51720B4BE34C01BFC886951EA1D99 + CE3751D787C064492AA3501C52404F09474B11DAF2F24E845907B44796A16B0E + 7131306617F06C525AA1D1EF5A4092A4D5AAE778D6671E8010439DA6B487683F + 9A8177CA503FD50B187A5C70F2CCE28AB970F05FB4EC335EEEB30B999127699A + EDC565D356DDF7CC2B5993D4CC608DB33A9733E800EB2164332CAD81EEDE7D11 + 4E6186B26AA6354CB65BFEF5C58BD320F67C5512999D5006DD334CA69A286D8D + 22897331F5129B6762085F1A2B92D95BB8BB530A5EAFB54EABA3302637E87AB1 + 2F9B3C740BC09C83D9838C505CC83D8CB9B87E6846A1EA67FE052A773EAADD3C + 0D4526CEDFF8CEA4A4C729DD34CEB4FBE58D5D0C9CBE760863DC922FCFECE969 + 692722057BFE22CF69C2C82F5AE53F3005163B51D84C75873BBC92D1520B187E + 340BE554ECB797F1584B4F3CE17352F907BBD01F87B2B54CE889C9328B89776A + 928C2C046B4DCA6150DF793318BEEF0DE6F1CAD91F0E163C52374B22E5AAE48B + BB2A5024280CDEE868576BC026E9A67C57F90150F370A018161904404B7B4055 + ABB63B05E082F869FE42FC6642B61D03E538FCA4A88EF3BC159F0A998EC9727A + C5DB3912876D559269366AEB1335D0A3695C2EA986746117BB77AFCE9602468D + 9966E79EB4D3D415A5C1C48C88493119EF90E68CB6134CE2D50A93A14AE64DD3 + 9AD1F734828BD02CA48FFF5C35DC2788039BD0EAF1A8D7CD3E06F873DC079DDC + D7B87A6BB6F228450B69C967A7A6DD3AFDBA37308E7C5834F6C7B3E89EB9521B + BAD961708F2CDB47A110FC395501F7E719EC40D8BF8E272AFF2856DC0BF1A7B7 + 08A4BDEF74F3BDF389A119E5F3AB92F0DAE43492D2DCE50BAA36AD9440A4D513 + DB21BAD5A3E7058005551D09673D0C8E393B87E19B9DBD7E7B7B7318570EBF91 + AC3B102035249E51ABE4972A5306E8E5F74BD8F4DDE4012BE8E03585C17F0E9D + 5A64371A1B341EAAC45EC698D31693BE3AECED946AC14C560DD9709ECA6218AB + 3097F9D57F1DC7FDE1870A53C1273D474D38B24992754EDDD1C61261648C8223 + EF39B192775414E8B30B9BAA83E2E1A555494AAE4E56FF78D7985DBDED5E6595 + 64CA693EF99FDDCF4AA9F58B98898E76A263DF1185FA6F4FD5FC5163D40D9C37 + 19C963A8248A1795EA4A1AEACD463DD47B468F01C23CA97EF052CD4D10340CEC + 1321000DD7B540C33760B697F7A00C5FF5E3CF286C05D3DB2C4D6805B3E65F18 + 780B847C1D930DAEC6F896415FFFEB40726B2F204F1AA1645C384961FFAFDDDC + A5773B9910C554EC81377CC57B74304A11F8CD3BA5E92C94410E6643CA8A3A0A + B39C995BD3F8F5087AF173A37697278C4926DAC4F79A0FF0DE67A966881F7341 + D8ECE16CE7541A089A57F484F1BA62B1E95AE11E77656C31436C60819C7E2688 + A4ECCCFD264C23631CD64BA8B2EFE9781F6726D3BD905832E107A5838B2863AE + 0674B7C26493D65A9381A02DA5BA638180EC91101C13CC2464AD98495707C10D + 632C954C309BBDEDF9ED463A66BCC7766E49BF379EE27EB67245737A27FD4AE8 + 34801AD470A694F16EBDDD27041CAF56E2327B9E2F6A032984FEFF112DBEEEB5 + 0780A03F8FBB77D05D78359841699DD52D2885886E90D2B8E6BF74FBCEC1489F + 71DD3D024EA704B862DACFB451C0FD7865B7CC26616FB27EB9A6E35E4971084C + 516CB14484014A8EEEDED4DF9934670402E6774B289C8CDC9BCD0E14FFADEE27 + 3F58442D4584E30EAE4A121DF1EC01AD2D02E1FA5E641A1DBE864DEF9A405730 + D2CC54D278CC9CB4781A65F092F6D31F73B061F2518E2F36433DAF401C120036 + 76E0859EEEFDD2A1B7638D89DAAC4F9A862E390839B0D2EDF9D967223F80E7F1 + 2894DEB7926431AA2533C4C0E8B03E95F7F3CC94F409C8939F252E429C88EAFD + 476DFA16FFF7367A19CC86870A1C1DE9DF1E0D3BF6AF2E4F0896D09DB181B0F8 + D419F6F23A78DBDA5C1FD697A9E4481BF4BD256F0579B6576358366CCF283182 + B26709723D82378D129C27505EB99199A0F027ECB87AD8BD5917F8F2C0703A62 + 8476A8EF5EFEA1FA60C687B7823B6EFCC09ABC176C3EC87FC8B5AAE9A76A3012 + 37AC857E81927B9204F9FF5FE42C3494ACF51314D232C26D878774F3CB07EA7D + C9B3F7E78C7964E408A4D3F628E7BB1041437251A13EEFC9113432AFF91BD59A + 2870305FD5F07698632647C337119B51255E6A37F2437425EA0AEF1E1DAF7254 + 6C0B11B22240FFC49F1A7334928B9853EDF266951A4315E6031AE6DE67088143 + 1E1A9E3D98D86B19AF85AC946E95237969ABA6DD551A9C78DBF097684EDF579F + AF95F6D1FC4E0339E4CE0FC760B7DF68476C5A69B02ECF50A836597BEECA8CF3 + DCCE68A918F0F5C8B3AD321ACA2550F480750FD0DE9C71E263A84EE306402A18 + 04C27FDF138BB77734771DC600507DB83E23CA26B2764715D5BDD5677BB7CC96 + 206C5BBA7787EE85A5BD75E69A47E4DB1823351149EEBC465457193BA4DFD0A2 + ABE5FE588F86A668FCC4B6E3EAE7BA84D6E236249FAEB80833E227BD7B476702 + F1AD48101DB7D92B4A8DCB489A01EE7153F55789748EA533ABA5ADC9038B23C2 + 2DF1D4467889BFD7D651FB75D92CA11ACA3E4BC6216CBCB53137030F7246BC44 + 4D2A071EB80F7ADCAF9F9114CFEAAE6A83FAE5A49258B9681E24561C54903254 + 0BF670CFB74DC6C78F7CEBD0ADBA978D78AD9E53F27E41E18D3B960E65E30496 + 7E092F6A18A6F30DBE6860AFD870BBA30C015B410E10737C997BAA4BB8E72497 + C8868BD79D23DAA3190EE7157E4D73C38A00D8E43109A2DF951F7173DB4676B1 + 09279A978FD45F12EFCAB58CDA4786BC698D0FD039D7B017D334C2C5768F7B5B + 7CDE1BE6784C410D706C1238D5BAED74B20EE3E498CE4DFE9672134C4B71881A + 6F76DB23E923D2AA98A7082330C02C58B2A324B037B0C1887143922F5439F258 + C3B5B5A1FC731175BB1781582EB993E75C684D030574F010ED41CE950CC87C4E + 719D1EDACE7DECDC4C24325BA1AAAEED9526BCD51D35F62260F3D014B5FB0AEF + 28E884E76FDE76BBBE1B0C4CA084A0FEA2A0FFF4DE8AAC3A01036A4AB8BA6130 + F63FFF02D2790B666F861B3A2056F2F76F7F89929BE4A8FF84CEA129746F2CF2 + A7DFF93E4DFCF238A4E0F0C4F03E497DF4FB70DAFD2B1A7E0C0CA693742FB1CB + BBD4DA3D063C4D433F1C8BB4EDFDF0CAEF226DC47A83476214D72BAFE37283DF + 007A0DFB723A0207F0FB43A1929600ADC2D5ADC78584B8AC7F6D32A89CCA2C8F + 9F3516DF66C600ED967CAA7C11FB5FF4FCEA96FB1E563A0AC5A55050102B2E1A + 16AE63A073865E603FC19D0B73DBE0615E2FCEADB277F9B5CD265489C60F7BDD + 0D2FD081A373652E0DCF813D25B78BC3BC6FC7E86DC958B58F9B780DEBBB3B31 + 9600415D6AFC130DAEF512F4ED3B98D49299916E8CC7100E3D07698776B7031F + 5DC944C629C5C987C2C9975A0A2F0CDECDD8E08F486F5E646F9DCAF0E37451D6 + 5326D9501C299D72860C5DD96FB6754530D5AD735C656FAD9E2D4F844F9EB558 + 03C1A4F6726C32DD68700007E07B3332E4594627C4EB5493633A0832CC97DCDB + D32776C3A200949EF70998D6F0A5601243B397870CFA9D04C82F877B138B9A6C + 33804352F8AE575ED220EC12D5527E9A9254AB55D8A3DEA53864C9807AFEAE3D + 2BAA554E5298742EF15BB17EB7B9BFB686CBB4F780901B545E6A4437B21C7C68 + BDFE0A2CB08C607DBA3439D3EA3532A657CA38783719BE60DA175A90E8F86A36 + 3495A88A55FEF7077C582648B8A3A498FAB4B36A5EAAFA3D7664DC56BC8A9807 + FFE59365799F627954614779FF6569AA0B8CA21D84571CB4DFDEAC93351F289B + D13057A859F63D18C239E5D3CE43245C7A80AD274E9CC2BD9CD284323EF2431A + C9F6D4D3A907C5C677E996416150731A3E9125513D086E1A91868A81BF247B2E + 41C19D9EA8993F55CCDE759D6DB3DA7463D3A53DA74F1EF6DD444BEF2D74DAB8 + 3E400D13B4B9E863C8108EC24B91C266F814410AD223215D2AC6B2373C2509FC + D2AFB058A4CFE0DE52EE2EF1D3776005709D9B018A7F212350B6420D622668D5 + 924EE19BF23311AE2D8F5140A4C652FD6B9CE99B63DF5E23BF0FDCBDA069DFDC + 91277384DCDB6B31345CD01321752DA06874CB0A7FC5B7BECCEED4CE83D1D804 + 43242648284753504D5F3BB8037D285A1A6FE5091B2D531355114F58B5A6436E + FF39D76592DA36646A30434CEDC8537758993B5C494CED261F0A8AF3DA0CD970 + 3E3B977F20F26DF4C8E4E08DD62D3D3B363B521E9CC62B9D791240FE7F8C3B48 + ABD5AF4A364299B32988C995B906923452A9765D12478AAB80706220E13C8002 + 2DEC2ACE2546FDC6D4D39A63A390AA281EC3D796F19FEE24B3C4BBFE15CA2473 + 097184043D1666327A152B8959783EFBB58669C1434E576C5C0372F0F178EC5D + D7EE2F550357329939501E4FD6542C10CD885CA006D0DA8C0BE17AE294C3F7D2 + 7AE57DE9F6E9743D21FB47F2CD433621EC6C751C26D9E29E7F431DE32D40A32B + 5C6E9E6A73A95125052FE2B0FB47A5214073E1BECAC92F7D6562D32BC4BC69DA + 462D28F615FD220E143E97672E3B419CCC704D90757267049411988E98DE5C66 + 4EC4851FD0177FA3AFD0337C9F7B5837EEC472DBFD1D1F684B20A45FB2E61E4C + 5183214E77CE2F88170C08121FAE55D93827E432D6900333870CEB7FACEE3824 + 8DCE72F4A103639BB7FD4E22933E49D8EABE4AFB27E891849FCA80C761DD21E1 + 3A46B8EF09D275999F8FE618C321CA3ADBB07F54D948230485A9236CF222A711 + 626771D010F80A9E46738A09A04408A11BF0117AD2FFA8E2383E05B6D69E7725 + F63A1973866347E3939B3BF71BBD1BECF8FA2779B949CD0FAFD342613849B9BC + 2A5664C22C35EE5A1D004D6D4EDBFCE0AEB5E7A84297CC0F1FFCC0E412CEFDEF + EB2E364394948A14DDB41B81CA5087B187B678158857AAE0E30FED8054A34DFC + 1F78645C6362E07C829512342E146C992B1ECC2F95090CB073A459D4191B3177 + AA71D4B0BCAB5805D0A2198AFA315EA7CD6680E27023F293A3FE6FFF70428804 + 5EBD9858ED31DD382676C8267923CBB36BFD2A13FEB98E134B1FA07782B13BD2 + 40EF02EE816A6F794A693A79449843E026F130D838E7729E5C85840059A5E51E + D69914E4FD6D3841AB7B6755F01AB180AEF3F99F757CE6622045E59679C0ADFC + B8A384A8D3781A3A20F27D99E522067737AB664E7F8CAD6D8194E6D7BC9B364D + 303E757A220EA831D6ACA873AFD54F8A53806B9731197C97A7B349A7E80712C8 + 99CFC81159A5F042BBA929FEA81A55FED4EF282AC125F4B7229D079EA0A488AC + 0B6D7252D46D52267774E22123E6FF7F714F92FF9C5AAEEB3C5796C7C76CA98A + 5217ACF562034A5193B7E7F29255FE5056201E4414D7120B8C1CD0A0D317FB5B + EEE66C5A12AEC7DADE08FD11FD3F2390420C7378389E13AC4657F5B7FD71A702 + D83DB6C5EE4AB016532E94BB15E6C83D7E9E077255DA1BFC1B12B48F262CE254 + 0409F7B8FC6125F83700AB8D5FD04008F544452883504DFBC6C827E7C57899D5 + A35430DDFA1E771D35AC0CB57E4715CB7CABAA0103877C19C7D41A41D95E60F6 + 67210956D7E0B73E5BC0451B1B015F173E247C6F69E35177978B0254730B624D + E8A69EDE0A65333B0986F06ADE2FE6CF7B505CD3F47CBB3E7A6463D0969F9D92 + B9466E309D92C69CC93ACDF434CE3AC673A13AB8E6282DCA36BEFFBFD274B406 + 51FD2B7FB2F0F513D17B87209288833D920EA1B01CF235F582A4EB3C2766E0EA + EF7D8C673CD1A5591C0D6070E442576DFF9F59BA15C1101136C917B1A823517C + BE6F7745F55F6682776020210532D84C7CCD1AB2CED60B0F2DDBADFA45F01AAC + A42BCEB07A439F434DB264819794ABFBC0A0DC4B5EEADE31A7848FD9B26CB736 + B93F6FF6DFF6C7C4CACFA9CE62380CCD329A4DBBD8B90E9BAFF975E5071D8C74 + A2E3E27A3CBCCD1696076E3412F4AB5DE6FACF5ED04AD182A5A0F0958AE5B5FA + 6603F34066967E0DA49E8EACC5E7B01E6CB62F3009A17BC4A8713D40D90603FC + 91EDB858058D568FB4E889E7F0064219F0AE7FC5D8460E04303F1958BA9CB5D2 + B0D430A47F90B1B09EB653F14AA7B0D60027C4C5BA08C6FD7A85FB2F482E5B90 + 72814CAAB360F7940A1458B62B2DC440FB4BE3C9E6E52C59FF26AC04F135801A + 4447528AAF63AAD69B7E38EBEB32EF26032C41D4CB4A57A849001546E9323BC1 + 8BECD4F8D0B3337E37265A452CA4165A724E3FD8C8C7FEAE2D1EA632C48077C0 + 86B8C38DA93CAF96A9A53E73CE062F5A92216F4948F14F634C2BE21DBF800816 + 18947AC298FC9440798708238B7AD0D74A5CD750BA002F3DFDC1EB789C685C1B + BBE040841A9BD232950530166F6C1EA8194B861E7BCFD0E4370D98529BD3D5D3 + B71DF4276935E2EEF650CDBBF3CCBE3998F9AEDFFB7660D32E90FF200C07B31E + 4AC954258A6A350CAD9679784A7CB9AFA4AEE718277220C08E39297269EB8581 + 14324EE1BF28D692B63EBD7E00AA0B44A010C9D6D6FB6A6D3714408F2CFB44D2 + 53906BD70C3FB6D4AEB7F71C99810F1B0B1AEF76ACD6AB6B75EEFEE8A5FDC953 + 1523B58C73AE461883F18DC5C74512ACDC0E58F2779EF10861B224950FC7C862 + 66C7869A708A2C508F8DAFCAF6E0DEF4E0C3380D607F15AB02C3DDF16DA46174 + ACE53BB55C2791AD1A08928170FA207C91ACD0E99A1C144CD7AB1AECC28C4445 + 019BDF10901BBA177FB0C609A02BCF4F44BB9AEBF8C1050453300BA49F2C4C95 + EC40555CF063087DC96CE95D2C04455C896083840DB47F791CC1009F7C6A38B5 + 28B6F8DD38E095B7FACFFC70E6D413BA9911726B86FEEB087845BEA6E2C568D6 + 7787849B9EBA336A56E451E5A81DE80FBC2285E0885D6535190F4A734EE06935 + 4F7755642342B2063E2C4F7710A387DEEA95DA897BC8B6C87D3C6D48384AC670 + 11EE6204DC050802D793426E324AB3A9B3882BDBBACEB4DC7EC9CD5A08FAEB4F + 8CEF4AD8B0B96FB7943022BC92C6F2AF26C6F40DE3F001D0CE8F619F1B5C4478 + 21C6BA0B24C264ABA3441614A4A31973BD6C81A112CED9C8EA22847226CBDA6E + 759E6B7A695353E608E8CFE76C0106508BC790BC509839D211ED5D26E4CF1864 + 57B041FC96AE4C767FE311C233244931BB3C093EDFBB170A7377E8A95A57D4AF + 27987B5D4E827443EB9CA410B3D2AEE83F805CE053C241233546DE9888E0A202 + F0F46E7863E26ABE299C8B7B22E507F5E8AA9D5626FF6161F7A18438DA622451 + CBB6D566017677AA4184E118775BA8989EA5058E5A61E0E0422320736D38DC71 + BE6D7F3D70F934F6BB4D8EFAD42BE2EF37C0CCD640FA4A3372EA8F801C45EA5B + 701B0DDFD415F7C7EBA0AA372AE05ED959474923C2525F63EEB053EC51013C55 + 6F77D9EFA2C1BD86436B57A7517DB239C540C4AA5AB6D5FAFBFF0495DDF23E81 + DCDE83C0F98E3C5BB6233417011F980010BB012CFA75B157F1010EF04F70AE5F + 55E609D75FF141F1079A661586EA16D24513999F871F0DABB847FE93A2AA1E99 + 1421B58B93514E7A7C743ED4EE5FC24B3EDACCBB4F5BB60671BF359FCB2087D0 + B38BF8EDB0CBA96E467C035F5EB99074C1EFD9F496F4C76BEA78EEC7C45B4D9C + 5A48CA9FB8FAACBA201535ACC8BA04E5CBAFAA73B2F7AF36904739EE9AF6837F + 805FA724D895FE5ADAF05F7C8D5C08403D2A58B6065BFA26AD31530BA5BA2D97 + CEDF031C01E1DA852412C661729728EB99C7CD86ECE9C7F907801C0A2E82A824 + DA84846DFBEB62183365210B8D2F768BF8E662B7D360ABDC6D03B4BFF5EAB170 + D7B3E26087794CF37EAA98E625EE1A60D39E131D290F2885893ABD38F2BFE6C1 + DA163563A8E5A00C93B457478F7BCBD3057E1861D287A8529F808B0BB477F7C5 + 98114B65DD827C1257A40A28D7ADC397F5393D0B17755EC146839F6F1E986813 + 86D39CB637347F9CDE4B3EC55A9C37647EE6A49B7813CBBB8CDF3FAD323CDE95 + BE70D44FA0D2672F719CCAF770801573E7E65B8C78A026DA2010414C8837BBED + 5F2BDE73C912958A7FBEB8CD90DA2CE2ED82FBF00C36E82872D7D36B13CA296D + BE4B218616AD2E85BF753DBB71A3CCBF101E76379A2E68D30123F3066319B38D + F865C270B95548465B043BE0992D52EBECA426D9F9B7C921D3DBEBCD857EDBB3 + 2A7F107DACE3325FD9009319E3091CC7A658EE3036669ACD6B75B4802B23E163 + C88C3CC43A25129898D9F9E1363E183C5D39FF707EFD962220634E60D0FB7634 + 5F362FDEF0B4A1CD4ACFB878D6B047D1521125D2BFFAF5843C8DABD82BE6DCDE + 1100D3F48C18414576EB83A7891DFB4BBFF02763370DC96E3CF667F92933DC63 + F6B072E7E80D2B111763CC93290B7AE6202124DE79AD7B3A5623AA062B05AF30 + 9776D4D5EC14B2BCD8FA3E3383DBF1903F7DB04592878AC99DCDB5AC66D82317 + CD5CB114AE0DCCEAD36A8A85147E4AE1546B7FEE9E28B1F0922894602B36FADB + 354152CB33575985B83254C633A53A5E401C86F6C736D354A532F050B09695E4 + DE02661DFA5ABFFEE63BBFDC279537A2897B2F433331017AF2EA4321200F236C + 25827787EF161D53501CEAF5F77FB8AB85FD4A4631410A5B6BF3ACF3213EB45E + A12EDFED19F0516F2A04FE5BCB58D79279578E1C850427027258372D54C7F747 + 922BE02F453248B9EF1347CF8D7C96C3E19504CA4F5374DEDF637EE72505BAF2 + 35CE39178D102CC59B8A7B747E54069837C75D554821E0AA341F02AE4B2CB14F + 0051489E0E0F51E37C1C8B42FF5024A446D7128076BD1C719FE14B342B8BFB51 + 8EBAAAA27DBA4B669430472A729AF3E76917B0BBCC31B35FB17C5823A44FFA86 + D19B7802960F6B08F0F6B053CA71A4C2DFB1CA19812B35A2C1D87895E14B90E1 + 4E83C8DBBB0268614390B6C9ADC7816999071E91F85D015800571B8E6F196A1D + 3095F1292F65E5D704BE6E50E9423873373C8C5C8F50D8094BF9DAE4BF7F99F9 + 4C58EEA33A476F278ECFD24663E0EB1BE74FD2CB9CF9378957F60216CA1AC2FB + B87997F6FE3830A97E787BDBE54751F5DD5F32ADC3E40CD08916959FC792D82D + A1E2A1FDCC46500E388D37EBD9FB8EA05F81967889705E9746B10A838D8B7979 + 50D9D58D5499EE5F02EFFF8953D6F904E3664F3B13E31C3F729F0EE306DCAA24 + FF7D53CB83F7331BF1256375A2C9B2F5B89E620465109FA4E17336371342EA79 + 383B1BB139C1ED467C3B9E9AA85016D78BE6458FB37E0A0324FF12EDC31B32DD + C1C3FE0FE5C906DDAD6657C527893121A5010119E3740BA121768D2BD3B48B50 + 0CFC42CC3FB6068AD1052CB3F88ADEDCE442E6BD3E887D84408EE1B696D8360C + 683A6E68428EED32760AAB94AD86501E9CC9B3EB41D556CC11110D34A768843E + 86834662DE816F0C639723A169F9CD7DDA089F8915575F13290B7E350243F4C6 + 9EAB459C02CB5EE0205101D3AFB8A5B1CE3CF479D9566F0ECAA80B52E55364A0 + 174523A9441A9F6A4F424AB8D258F02E01E41213A5E8F7552F6FD07121B401A6 + A07822BD4650F26E218CD7808F93FACE5E0CE4765F0F29820A080AD4C680C4A3 + 2FCC1B1A2F26E322F94CEBCE8368ABBE7DB50D0AD6D497C15910B37B71FA2257 + D53B3879BC4903D3CB901CD8FF15DB4C059C9936E4D182BDFDDD46D812A67905 + B3BC0D6AF8BFD86F4DF7C69198FA6FECCCE9DDE7295793A8604EB2FAB11F4C15 + 3CD378047BEE05D52F37169AD7D0F3DB3FE8C9FCF0E07E8E5C7C33F5ABC73ACA + 4DC2EF45BB27E18F933F64979B402A29A7E82DA270F9D4589F36C7B178A411C3 + E3E1D14FA399FC12FA7E261EB11BF52E193923927B8B67C9EBC3B7CBEC3F6D41 + B7A9A14F7FB15AFE4490E819D4DC7E64DA1FC44AFBE89EFAD82AF7C7EEA61662 + EDA14A715B96A11FFE3D6FE98B8D5B51840FABB08DFB5079919E9034B107CD17 + F34B9843B09584FBEFEE075DD1923A0F53963AA77DE7DF83D8B4E33963D0FFB5 + 1D2AC1DF9261998170177DD94235DA8F245FF8E3859A656CE8762CF6CB2D7171 + 35D0EBE4ECAF272B1FBAC1C9940B98B567CB50D337480B8827CE114E2DBA1B41 + 4225C5ED0895186DFB566738CA58683D4841ACBA71088AA7EA5DB7DD9ECE9E8E + 37B56BBF33C6F7883C6F10E4B95A5E263C2738607512A4D8DC3CC3764E210585 + DCF2D7DA6B5A73C61214E936B40BC6257F3102B1B0E5019E055E7FEF7205504C + A9F41B707AA89A762DA96A343D78D9574BF7C6A18619A6A43C0815D24AE22AF5 + 3999CF0E78CB43090F66ADD8347D467409752E13F712D25DA45E65D8971BC4B7 + B99CC76E5E5F4E526C0DB086D48C3CD6210CD52F4CE5782648DDB7EB6DFB73B4 + 4B49DD4C1713671D9790EA765BFB68BA90C39F1ACCFC8147037D17631AF9085C + 1A30E95C82848F92C5C4AF1564D752B839B89383A6DD99DFD129E3BAEC2D3684 + 0A684AA880D0CE882E87120E1DF88BB0559EE657DB67B5D46A0803C2405AAAAA + 862639221BF938D8CD5FD3938B9760C35C37A4217942F53D8D06E7FBA8AB63D0 + D695560D8D287B456A8FE901200D16BF5C87025B8E08C8ACE0006E6217B05FAA + 06223FC19270C2DFC66AA89CC68DEDF4AA102482FB68CD020D654F128B5579CE + D74D682BE449DC5D8905A3FA6B1412DFC4E5B332BD296E91526C0524DF46C447 + 64D4CCB791D12094E10D1780525FEA79751EF5F701F322DC6ADD0150869C2419 + B3AC931E69C5D9C84BAE33DCCCA2CF13124748B37487EAD4A620EE346019EEC2 + A9213592501781116EA98B9C10067960E32CF9545C7BCD75CA4C0EBE63FDAC82 + 23DF107C00A6B4149C9D42183F6F4BD655AC641A6BB85DF65B9B206E20FB8FE1 + 9D74249F993BB35537E8D2C15CD8BA70D96DEFB58D86B3A9AB82BD3DBEC4127D + CEB0D9E0E68A42016971301011F46E0DFF09566140BBDFA9B948E27E624C4B82 + 551B0B3209B409D477E5C9D73050E697944C1A4033F1638A384A7FCB269EF4F4 + C7822272B89962E893111063D4E6184E1E8A1B5ECBB8139722D6D133DF20DA0F + F426F488DD63A186107096421FA31BCE8988BF7E65B5A90A4CFD18F10874233E + 8D0388F48AA3C441646FC088C40A86C85A90F1BBC759AD3B016CFCA7E87CCC61 + 8CDD716E1A28DBBFFFB11559EA1D78010DF87F61A588FB005F195CCE4A940E14 + 5850742605F7BADF2CE8C4451DC90890D93CEF9D2B492FE1E59E9939378F3857 + 4E57EC07561DB0E486D30EA13400C8A17FFED4DEDFA8FDE9891007E25AD5281B + AE050C8CBBFE61F4E047C2ED33734AD685826AE4629F3067F6A3134AEFE503AE + 51756878BC7CE3A43B9AD94BE60512320DF30453712A4794EBC5646BD7395DCA + 8A076160C60EFE0E9F77CDA6376F023F1BA91EDD400E09EFC7D658771E618224 + 9653B4C6DBB11F87A6EBB8139C080FEEAB3EF6C49B107B8208C0C97C5865A65F + 0EC4120E2D0308177BC9ED9BC22B06641963B51A88587D78E2BA33FDCF20D779 + 9D9E469AB44BAC61773B7B6026C58C06F1D5C9EF8FEA979934510973CC455F96 + 0EF1DFA3EB57DCEEFD685101AA041824094D0DC69C384981D7B15264271BCD36 + E6651E3B7E0E6B52B46D08B39F17E2B6681A74B9131CF9DAAFAB2E130474F618 + 9FDDF7BA09C3272AE0406FA70C428D153BFC77C7A77E7558FB2A1A5154A6B639 + 855BAC6A85587CEACE0E0BE6164FEDE4F52E276F2397CE0D6FC62C9409D8F884 + 89E8E070632A5911FE726C962F82BE2BA1DE4654F0E978123462130F8E5B1A7A + D11FF9B006A719ECB8C1DE19E2003CE07E6DA1E24C590094B60580FDBEE86585 + 42BCC45A037C155CFFA5C1C4041D67B76E933D4804BB4E7AB4880AB2AC93C89D + 9B61298D6C0B0320ED48A039414766E643B376C42D7B9568B3757AC0CCF45C6B + 01E9EF4833BD8C7D5035EC5E3F9C54360141CE51C9B2E64D84C2759C5B1C6554 + 673E770765E468B4F6FBA00C41059B2568B98C3219F558C4566EC70B65C3965B + 552AA763545231146C1FDE065F1F1551229F1208D151E15E096E81CA753C0C27 + 8409B787AC3E726330AF5379D08035C8AA7D32F33B49184886279C576E941381 + A5D9C1172FD44C2769E03AB97448E779749452E07623B0E9E073BF93F2A5CC82 + A96E4C4FD3828683C07D724C2E5C403C79E9D3B4C659383DDBE6D7050D4D1619 + 5C8F36C172E22741D28F9EA985F3ED5C473D9F8C21C7E45F8FF81A7BB1D691F7 + C422518A76CA25D3D9C254A7D6B4583CD259C82E96121FDAD2889260DC8BB55E + 569F5ECF5E9EA41B5712261A6ADE831BC111278F841F3344E6B294177EE9A955 + 3DF69B4914684EDF1CB3FFCF6E2A81D51716DEF840E6E463FCBA1BBC39E0419E + 8D0E660D61BB2D2401F7A620F5FF589638256646D1657A3FE1D1E65DA9E92CCA + 3195DBF4D566A78F2EC0E2422DE2C86A733FA6A9C084FCA23D4DC469183B7AE4 + DD641EFDFEA506DB53C6B484D39B8A8980328995186A2C35F29D3AE5EF558E8E + 670FC4711A0768900560D29C4AC50825132A1E5AC88F1960B6077EC2765C6F45 + B35AE90C8DCE794C849E5D8EE7D2A30711D85A10AD32AA28519E03C755ECCD26 + 2EE55FF3C2DB9FC0F97BD2BB5E43D01019373BB6F13B0EB914E2D89C4562C4BD + DFD26938619CEBCAF97FF2BA1087BE5DD8674B147DECE524FD93455A78B65E92 + 37990E90590FE9E734A53763824CB08826E9DCFFAE0DA5128FFD35311F9E5951 + 97BA9374936280350B0C1DB333D91FA671CAEDD23B9D52FEC0DF91B3EEEC61AD + C082B0E4FC6CEF0159A94D2A2575DDECE72DF1C2563CAD4680998906F8597931 + 9354A87090D9359A2C29083C458CC268F3BEA1D6F8969B8C55626C7CD318C6DC + F31092CF798BD14317FC4C45C3E2860A9788638FCF5C7A04166DF1F5486D38B7 + E42BE6CBA87B5211C6B4583579DE5B58A6BF8D0474C0733A0AFD82F111C8304C + 01FF78822C8B0CA7539EE2DCE8C4AC624B819BCF5AC16438F1D78BE1077D901F + 80083FC8D5E91ECB9DE15F8CB2699AA3C291A7B0C82672D8F449077E19C74845 + 3865C7666FA69F621B8D56C96222C1D8890E5E809563EFF77E7905D82899AC38 + 205F2F6CE82294FD0819A46A620754B546C41401DAB6A21173B86436DA805FB8 + 1D5816911C2374F975E668E9375E55178F7FAD1A82877BA2ABB767B65D9A7149 + 56D39E2ADF532975F2DC15D14BC1E3A24AC0F7A10D117E775C4E0EE4EBBE9E64 + 1053A9E1776386FE85A8514063B89E9E8AF41B445B7CD5866CBCE4FFE45856A8 + BD658B00B9DFD0B86A28E8B80B3D99456D1A045D6244AEC380AA4FE168C9D8A2 + B064131E707349B7289C5699B564BD36CC31A661CCD76CB6CE8812A75A5DBD5B + AF2081DB573F9AB5D7B15A42A1589708CF4942E313E22F4D5379F390A28A2467 + 826AF254E2193B0081A01A3A95ABD3A77E795E977DF67DA2A6DAF8A58EEF5F39 + C008F905A709313227F53589BC71C251CFDA03D59DFCE64A67DAF9B7F19FE6D4 + 0EF8D583FBB521D1E1CF82574E3D714015FA5D3F947CBDF2B76F06E69CAAEDC3 + 13C1B96399B1D9DA20CB1BC28FA28233FA75E534D5154FA84F352993CCABA8EE + C2DBA8F98DEC04C9E328C05FBAB6E6FAC4E4096536AB9152BF89BD72F8760DAF + B0170651BB4992DE4A55ACBD8A6A37AA0F382B1DEDE526067A49C998066C3A4B + 8CF4126E4A32FC8373AC7542637C0F993A08ADD9029C32B7BDEFD60142B6502D + AF24EF48F1FFD4F6EC9A69C42632940229D68AA1968339AE1C7ADB2ACCD376C6 + C7A87D83B6E04C680F55B85DE3B584277979AF61E47391365854AA243CCD7A1D + AAF640DE12513FFE3F9E828DE08F78E60E27C4751BEC165A5CBD3210521B6766 + 6C2B5BCA8490741EA7BE059D245C595A9094C20767422A733B45034A4AC9F795 + 86DEA30FE695E9B473C9C6A0B634CD1C441FD8C363079951E5DD2392B67CEE42 + F5A32170DC96386B9761328938F8DC991E2C1C67F71D6F0922CA8914642CB8B7 + 85659073D1C40FF66996117DD3E07AE931F33B3618AB51823E489370ECC525EF + C6CBE0BDF3CE49CEFA0C370D5957EE9E3A3D96E89BA923C82154321BBD9D2269 + 27A10D57FA2AF4265DCDB0B4A270EAF586A0CACCF7A5CE011F71493C94DCD1A0 + 9935737A4CA17AB384893614AF567912B37D5782807A8B1D0C58BE91356838B5 + 2500F93172BBD5C0E0C8E76368D863AE347463B6C76DD46D47B63BD63B7E0384 + A42B42F7B9996680AC3357616C220CD13531889409B7C6EB29583E8F157C95DB + 538F28F6302FB71D296367A91B27FFBB7C2358D4160D21679E128D94B6912D1C + A1E57F86CDF556643E33A9222BDC7AB989CC260043E31E6C50925D9FAEC2F706 + D498D15EC9B40F61DD9AB4C24969E607989625B285FDF4546D8BCE12EFE6D1B0 + BD084FF506D6A462F849E612AC4F5E569CD88654462CDE2B3BE5A7D6D39FD939 + A4193B14EA0ED52AA86451F95EF72503B9D9DDE5244B5A4B5745A885A2352405 + 4D0BC34B92750AA913EE29E066AFC0D8CFE818F3FA718B72E1E330ACB4EF7F71 + 34A786FE48AA0F558E60C48193E67BC65643BBEF0B9E77599E9D2D4C4D139A96 + 284CFD7F1BFA2FA716606B81FD400D1536CDD1B3D0F307373ED26562DE6936ED + E31FA5C2A8C21BAA252474A5F95B3B43178B28B3B2E187430A0DB9460FC971C1 + CCD5A013910866BCE851D19F0B58922978885EFB60FC2A12E20E65C55772B6B6 + 6745D4DDE2F17BAF1C73E21FC3F9000A92661B9CEB8279E6AE71814CBC6DC981 + E92BCB9621A0E832FC716ABC5EC5A8CBD15BB791B61E6635FB98EC8AA75C5939 + BEA10F3A8A066E5FB143D195DE6E0CCDE7478BA768696EA808049B13CA40B58C + F2062503BAD566A7FEC22B647B24054C64DE36A654FB994BC5BCC9C193B7D526 + 35B3D71D32F3957D7D1ACB52F9D82BBC99A3C729C008040A1CB21508D052362C + 4D8C2F80DFB87354C16B2BAF599E9E03F35EE71DA2B1E027EF3D06EE9D47F179 + DBC357CA1CE27FB97F9B2AC189DD4507A5D200A3549E26161804FB6FFC13ECC4 + 86AFEB0A729612010DC055160D736A0B8DEB771A649BC8CD740345E6E9F940C2 + 81505ACBE83B4E0CB83AC9BCF46DFFE129B4C464254F0636996FFB646B1AA3D6 + DDDC6BC3B02C4F4260C4C095AFBE1B88AA2C9C9E4CF6D623A22623B14322FC2C + 635DDA9B36BAD665B62E0456D78BECB1BD3E2D39B6351EDB889322C1C7BEC0C4 + 80D8DE6354F8C42AB41E66DCB823CBD0ACEB4765B9341B259766D2D9B3E6A0E5 + D8BEB07D2C596F9F3C078D6CC465C347CC94416B0682809322A34D193481AA53 + 4338755D509A237A8F972E0DA8ED66E4DC2E40C06D01EB4A322F015BCC1A9A5B + A91984E632698A61D57DBDD8F8CB8CA9C3364999A4A68948E26D4698F80A2599 + F8423F987EF6484D68CAEA6EB421584772427EA1FD647F4507118E232DFF672E + 1010269071302D8DAABB259315810B2CAC6F62A5B74FEA86BA559C4B8CF434C0 + C3F968B85B5F8A4542DBB5E48CF68907EFBF123E5AA25DAF8F3957BF5035CADA + 13173A46E924AD423D5A92B6850F5FDE2DF49541F55ECC5C7D3AD0AF62D68C59 + 7BF7468629E7D05FF9F5F197A551974A25BB7091DD6C1C45086E8B0EDEED1B32 + 35F8AC6003CA7F4DFFB5156377137E44468F48F4EE50B4611FE6EF89DEFE3E69 + 9C757C04AABAC86A3C00E9C84A0BB9556008372FF23CCF7CCC777BA844D0643C + BFF1B64BD09A43F703ECE461150915B9E9B68FB23125000646DA9F8869029956 + D17DC460231AA5BD9A64FAE80F89E7C6389888D5A30CC26AF4AF1DB386B6A8EA + 210BA856054E17B4613EBC905AD047BD71754FEFC1F12AFC88156DE13BBF9486 + B6E0D067241302F553384944E09999F7583B5B624679E4B313F60EA17AAB2FE3 + A6CB5146F2F9004DE6430475930390E052E36C03F0C960C8B1C815ACE490B0AB + 058ECC2EA37590FD0A4AEAA2F30535078338A18599758B4350A6FB3D4C9FDA5E + 4BC5500729850DEBDD82393221C3C3E20650E5CBFA11070603420567C4E56CFA + 6B94D7276AB6CBC1CB13DDA5D9278EE652B6F02C15738445181747C588605741 + 27F9806F5010DE7D50C5BBB49F578CCC2818EC6E6DC8C35235CDC80C52027EBB + 4EACD3E1349B12E8349C11DFEFA0296C8D7D244ED387A4385E46F4854A9441D1 + BAC05D5A656C4A234B9A84769B01AAAF4D2B4649CD502D70F360CF57665A6F08 + B63D58C9CBD243611543B74BE1955184434F823FCAE57F07D42611501D883B60 + 32386F58BF58E690A0DB544361CE31FC53991A89F884BCE06869003D71ED69BA + B1ACE021755300CA941B05A5DC35E1C7EF3F89ACF2E1B6A1E9946A1D25826842 + 7D6F9AB27B66309799216B4844882BAFD656266BD45EB2DBB325BF5F3B84739B + A793AE49D2CE600030A5CC927384962846EDD7B417101D1A0EB3C4D6E82674E7 + C6E60F9F7EEA5F2E7BB40037908F78839DE8CB94CEAACDDA2D22D65DAF9BF3DB + 2A76EF73D7D964FB53915934431270B3B51C293A99063687BC605636F68235D8 + 48A497A41F0BF2198B01353C44FA2F019BAF646E514E935D2CF21FA6584CB23D + AFCAA033E7CCEE834AF2123EC93DEFC959064646BF6CCE11DEDEDBE518500A0E + F40E75B4CE83CAC8EE36D3D5694002C59CBD4E3322ED6C9BF08297547EC676E1 + B461D7A747862CC976909F15FDFE4C3ECF574541E4BB5299D8B0F2B3F335C7CA + AD34692FC175FAE26E84160C8C533FE2307FAFC0B7ADF45D5C57CDF760C1B895 + 4E5F24D7EAF194DEB0BD6BBC64801E8503AAF870E4DB2884464CC94269D5BA8F + 92303DB541382A92D2124089C393D12CC0A91897A384F7C26B89038BA31CFCC0 + 28C74E62B4B8EB81BE57B2E4C95E57E2C5B3195867413D59EB775D3AA5BAD6C0 + EB530C63E2E7594B55872E4B04C8E651795A392076EF7CC3FDC20A06A78E80CC + 46287B25A5F925B890F9E6BE7789AD0E395C6773127F8C6E827B93EC43D378BE + 8DAF3217E7E5945F0227CFC69F4D2B593C8E5A743C18B147CCEB296E9EBBEC7F + 5F6CB2AC97499B2FFF93A9DFAE808D4FE012F14C8766E7AF05D6CB4B4A4BB80D + 4012EDC28C45CE74F3BE6733CA23F9FC26951C664637E040A073B749598CBF19 + D94E5D8BE20416BC0EB97A589E2EF75D79F52E63F1F6B63F375158BD50FFF173 + 62E0ABC5125A2240589F79843461EBFA28864E37DE279DF3F1BD95439C3297F3 + 808C057C055A7BDB8733DE6F50CB900BE2834C381318B5DE80425D213F6FDE3C + DFA276145BCC01F74A7B030ACBA6B92E6DA5087CE8EC909FD7B5C75C9567E1B8 + 63D56EFFA7F1FDDF0CD200067F3B06DFF9B0426BA028ED3623739F39318D0C63 + 7433042D1662DDD113FE6A16A2A1FEBE1C43A2FDCC210E85B7E4DB36BD5A66ED + D076A06D88C666158D758A15B33DC8E606E8311FBAB129F8A462CA19A606030B + F6D8B612B657B44E80D9AA635CEC58F80FF6B0FC0B637DBAF46506B05C83A502 + 5999F6867E15D57C0233EAB0BE788110C1D5E45F145ACB409FFA8374C86576D2 + F5E6569C97CCE7824CA17572504530F0A147A4CFBA96348CED95A214A968331D + F94C0F80D83AA4A62B6FBF86FE645C8822E5614D11F2E0E35ADC2C2C3A4534AA + 901B32385285F77022ACE2374DBE754A53961BE935DB70E445A7248926195A3F + C1FE55F5911DC8413A59050781128C118E32BEC09FB52660CEE1A4023537A474 + A524EBE46101CE533AF0703C1A99676E199A84F1CF79AD8C060F8CFEDA2B2E21 + 970FCFECAFE20BACB775E04A066C77DD7ADDE1CAA8423D5F22EDFCB92ADB5C8A + 9362055C48B1FCA1D640CCAB22F59A19C916106CB04328E2CF02EA386B2F54A7 + 4CA5FBEB39AEAC7A8FC4B9AC71150CBC857DD45F1B9A4EAD5264328F + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /KAXUFM+CMR10 findfont /Encoding get + dup 11 /ff put + dup 12 /fi put + dup 13 /fl put + dup 37 /percent put + dup 38 /ampersand put + dup 39 /quoteright put + dup 40 /parenleft put + dup 41 /parenright put + dup 42 /asterisk put + dup 43 /plus put + dup 44 /comma put + dup 45 /hyphen put + dup 46 /period put + dup 47 /slash put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 55 /seven put + dup 56 /eight put + dup 57 /nine put + dup 58 /colon put + dup 61 /equal put + dup 65 /A put + dup 66 /B 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 75 /K put + dup 76 /L put + dup 77 /M put + dup 78 /N put + dup 79 /O put + dup 80 /P put + dup 81 /Q put + dup 82 /R put + dup 83 /S put + dup 84 /T put + dup 85 /U put + dup 86 /V put + dup 87 /W put + dup 88 /X put + dup 91 /bracketleft put + dup 93 /bracketright 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 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 120 /x put + dup 121 /y put + dup 122 /z put + dup 123 /endash put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/ff + /fi/fl/ffi/ffl/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/suppress/exclam/quotedblright/numbersign + /dollar/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /exclamdown/equal/questiondown/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/endash/emdash/hungarumlaut + /tilde/dieresis/suppress/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /ff/fi/fl/ffi/ffl/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/suppress/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N74/KAXUFM+CMR10 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font EYHESR+CMTT10 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.00B) def + /FullName (CMTT10) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle 0 def + /isFixedPitch true def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /EYHESR+CMTT10 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -4 -235 731 800 } def + /XUID [6 5000832 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC9EBBC6A5E + 2825687306A156DACC32FBF734087CDFC35B78DDA68032BCA38CA8E8A340AAA3 + 002A0E52D0B9162BC68AACFC0F14A1C933363A56EE460EB41CE8C2E9EDC509AB + 9E0462B9F619AD944F133AF072E5FD1625902963260181189070C40FB0D49A96 + 50D86FB0AA90098027455AC2354A299FC7BFC34B4F1162E5E9A3EFD80D6240B6 + 9378BB4F6F9F5D673C647FDACF190F06118F289D2CA3C383F4695BF8B1281FF0 + A685A5A98B8A6B83D6A275897818FC87CFE403C2F363B01464E2671ECB011A62 + 54B55729E6739775DD76E427D10F13DA43569D7CF323F9E66A45BA661AB0CC07 + 35E9906BEA549ECBC2E0B1043900E3E21AA5856183907B5BAD9B313C86B80169 + 1E80681EC1BEF69FA5B0F67E675F17512CEE81C43D2ED2C134C987EC0C8BF9FD + CE3A3FCA339829D45F471225B5DFA7CB8EFF7E1BE6E19E8045483480F2CCAFDB + 686D979F04F612209B443C7D5323CE42168F0B6760038662D59C87E9EE07FA9E + 31B8B79ED16F0AEEBFBED1C02A6C9390DD95B1CF3283860C1705DC4BE70AC493 + 62FA45EA0BB4571C40D93C1D42E9CB6708096C1DC386195910301A6032580B5B + 653B28143C4BF9DC8083E9B540932B81BC3DE8EF08F6DDABFA8535B09A51C755 + AEB085CD136A88E9453607B1A4966A7F9941FEDB18665F655B234169934ADE77 + 684D4D9DE8F97BBFA39BFF20924AA28F18193AC91967D0EA25B52CAE7152B373 + 5979315B45E1E9E1B82254BE2108206D7ADFD5CA7473C33E88435A422A1E72C1 + 2FFE23AA67231A04BC2D7FD4A20F8C01E5826CB99A5872CAC37575961CF6D773 + 412F31BE4AE18005CE51712FC58F692B55941BBA14AA700FA466E41F25B384C8 + B69F759EEEEBD030ED585F912B79F7D1C09158E04D1EDE18F06F01523E7B90EE + 4B4A4BFDAA2FBE65BC779C3883ED77EFED55413BB1A3E457D1E46D6717DF44AD + 1ACCFF765A0251201C45CF2213A08A60DF73A167B0A441ABD6AFDB9B35195600 + 048B62F68D48F58A2B543DCEE24BE9F570B803F2156A8129CD6893B419AC7727 + 4FB891BF69F9394F75AAE5820AC7908505301EA6903B5E9335603288E7FB503D + 9BD277670982A8C5FFEBC92F5640E188384AC5354D8A96B28CDEC08BAED8F7CD + 2CD5787ACACF017CAC59113402DEDAE8FDA1E4871BAF2B11A56DC7695A2ABE0A + 456E19DACC83FB91E7E43E0EF044CC6D38B8C379B36248C084A5888BA9079910 + 71C329743A3FB8F51912ACE0393405F6295C3193C6FFDB6BED51F6C76DF17490 + C79963BB8F4FA903E75246AB81B7DB725CEE46B9FE5123D484AF6879FA711499 + D0080E4A8ADCF4CE2150CE740C0F6A348312059DF8CE826128BE581E375C6400 + 6522DFDC8C5052E9DC2B4AADD089E9F51C08C733BA9C18AB0236545E8B99FC39 + BB9879FE135C4EC3BBFBC29DD9B925AD152AC3C54C4BE4B6952CE8900390E9D4 + 8250CC1EEEB3E6DECE4DAAC9DF37AFE14620512B3A02FEE8A321EC853EA6F3E8 + E9E7D0C5F6C2E1D7017EE51F567171F413848C0862062440CA2EC767E19E59A7 + 526911DF3656965062C34F120FB1F95A11E9DA3B85D872EC7118F90AD1C159F8 + 837EDB9B2D96CE471079696BE157D719F459091F8D5C3309E7856F649C9A9CD2 + C165B4F4556048AC40637CC48DB49784BDEAF1F50B314E003D3F1C8B554138D4 + 2F5975EA8B11A1EFF8CF458E8EDF9D956A1C27E2D1829A26D010B1CDD43386CB + E1AE4B4E7312F83DD888B6F4C2F8CE1546B6AA213A35B4D12647721BD2AAE290 + AE54C7AD9F36C023AC5BC87EAE5B0996FC8069EC7AADCC89ED8C46C4BA965141 + 6AB25DEFBBD205F43E2C1B9A744448C5EE36428A0F4D422619D4650F44DA4D29 + 5DF7931C0C5142017C3C61412EA73EA9414E5D71D8109F0EC5A182237878EDE5 + 09A4C337D3F6EFE2B713453E39B1CD65E9566AAADAFA6668FA6663F671CBB6FE + 5836171FA4FC7511DEB60701D66A2F94217AA849668256F9E88FBC691AC9696D + 3A7C3C374CC1F5C4B5C67A93B032FFD4D2050FDEBCD95E130933820166D8B353 + 2A250958DB6ABDDCA8F43D43F928AC4B75B49D9D1CE5F9EA40A45D2D53F8FFA6 + B7B22A8B76BB0016B53616D0500E98ECC6C204E06A1C7CFE3C091C8F6300735E + 29AFAFD169F60621E3513CB9ADE974D0B915EA600816417D223C496B2586369A + A6B8BCB143204D9BA41FE4BDF75C2D448DB2E5FC7267D1FCA56AF088393A996F + 0BBCEE65F7B12881638DBAB9F1DC35C339BF279228C5DD0C1C6273BBD1E39680 + 32AAF0B4E747A6750A61077B8660DA02D0887A9898764DA494BCF20E0E823026 + 2B99E91BE61877081AA9ECAB50DEBC3F92D1FB68A689E584D38F2AB5D5D07EA7 + F0308FA6632CFB6B103E25D3A69672A703D09997347C4A0274B555031F872458 + BC16E2AFAE775843374FADC44C1FA68606BB6A381A151D5E1E803C659B458064 + FEFF0D7FD84B5164F217A94A06538BD4B07CEB21C75949E5B0B16AE360257627 + AF154273CCBB5DA2E4A138F963D57CA877DD8F28942DE3C0CC0AD4E533CFB038 + 52D9C5E26C21508977283792CA8B86F53476B90A82A88113753D735D12882FFF + 007E45B8AFCB8E3428E5A65E85A55AA474394FB16BCD9E9064DF3BE4C5EDC507 + 003550905A30A87961166DB8FFDFB3BA2D608B88E206E7B4CEBCC9F57497B2FF + 8023EE384D01313B274B0196790E104D839892BBAF198B827C57E40DB7D3F964 + A927E3F6E92CC712381F03F2013A464305F8238D26403C043B7BA52BE86BE7F0 + A0D522ED6DB2DF4323E022F9D43D5459D2F04DA2A1306122DEB45BD1ECB3D848 + B581C30327570E9C1A2427A17FD6CD7E82C51EE36B44B81B6F22564C9B25B527 + 9E7D4D978B8E2C97D95A13DC12AEB264BD3FC3F4FE76DEE2D3A0550382933CE0 + AA9B1EE54800FF1B496C8FCE3C69F93E29B956EDF7CE79EA50EFBBB3B449D347 + B939C52B86EF79D63B495BB2AC0616B053DFB1A751E4B7681BA1CE530C82FCB7 + 6CBC90A01ADB68C7FB4DECB82DB34B07CC04E80D36678767F5563C3CC3388B2D + 7C072B0B19045947DCCCD3C98C2859A3B2A76960E0E2CEBA5F4278B496D7D2FC + 4BBC228F135C4283A62812487AAB2AD361F31F9801574EF655CF32E1A3887D38 + 9587C343F3312469390ED5C191FB170530292CCA43C4DC25BB55F96CF71E0196 + C57628D2CE93F70AD5037C5AEF146251EBBB7954F46FA379A62CD3D994927A4A + F4CD835B9515A12CEE1DAF188E73D2E6E458596C5098DD233EE31C6DC7AA4843 + 0C564ED44D4CFE87CC50F513EE33A169D1716AD1FC4D51BD802FA36D952A5481 + FAE3FFD0100A38D369BE934F94B4ED2F11179AC1B0B2AA83B34F69CB741B9B43 + C1B6FE2A19EA70C41B0AAF575B59D8DE58B651253C3EBC2359B8E51D75995BFB + 3A8B8CE146986D32C19D8498FEC7618DB2C896E65B44AD43835E9BDA094B0597 + 909C928E9BA3E6EAC85ABEE6890E7127BDC71AC415BB8F800B5718A301ABD4C0 + C3C9CE9B00DDC8CA513B33A1D552A782A92D83BB9EB903D657129403269A06C3 + 321EA99A5AE13AB38F4041CC89C9BB6F710CD24670B75A338CB885E92753CCA5 + 6364948C5D60C54B804004640FDEA3EAF9E7E491D3D1726C17BE9977E49267AB + 82BD613B37CAAC88240591DA0C21543A132A1487E4F6D13E5158F195D6E2DC0D + 004693F7C20F7C106C437925194280D73F9D9861564A45D9030AFC4D366F49FE + CE70E48416862324043F088FE733D88EB38E41663F27DA4D9C0BD4E2B739E184 + 9598881A68D475BDBB30DE52BCAC8C0DE4B3D4D9F7D9195D85B10CBBDD574B2B + 3FC95E978372C245374FD905D20878B79EB4C412AE0A626506AA96376BBA2779 + 3FD827C3B97EC26C637242B1F7EA903BF1E81B4A145DC64AFE06B99DBB7EC5C6 + DF82E8DD947C933BA1498649C0D93B6EDB4118B3A70000C2B9E3ED4306C10362 + 54B2506B6C393A29EF2C229FECEE63737CC990BD3A3FC78D345D57530524E906 + 645472E2501038FBC0C3A0CC277E85637475BB2EAF391388277699AF507D6260 + B7E0D671EABC1197A6F6E04CD73725C28634773245BCCB3304FEE04580E45B6E + D654FCBF7FF2CF20638B68E8EFBE9752CDCC49DCC255F25BB9C6B4AAB47B0F86 + 42C39C99D45B676C6F433408CFF7F27AD462E1729C6451125E2DB3195983849A + 8F54CE9E76041ED4C6787168EB97BB03222237BAB7470B59B21E2D37EEE9B6D9 + 115166DA436D6BEA88F0445B1D96F93890AA6E0EDC421DE65D81627E765FF049 + CB70616A5853F047B86E744BF0B0B698E3A8FFE6DA403ACD97AEC256203F60CD + 0BE237E8DAC7ECA08C5AE3AC2586A957DD772217EA3F93BA8C308AC1848A04E8 + A1B01410011407BCE9AEDA927E47EFBBEECDCA453ABEA5A4B411415250508FE5 + 51AAAF988355E304E1442657E74D6FDD0345F7EE50A3F84F43CC6BA4A1121A9F + D50F41A9720566049FF0E2FBB882F73CF9055E39E7B62CDC458DA102F64C8963 + A56486E0D8EC89B768A8F4B533993EBAFEC0B1100AA52606361DE43D8D440128 + F2255C761A5EB51A044BE69ACFAB5ECD44E2AA1CF0CA3FB029B4F714F64085B5 + 3E7B8B84F58A86A967130D7A57058FEFDA2EC15746532CFB7295CAFF0C5B0D66 + F377C96DE56787F9A1C76A9C38564C723E40CE78D6687479735C20A21F412AC6 + E2575393A7226076D7ECD2BD5499948471068707154B84F2E595D603F78868C1 + 9793141AFA9F4F0444FD6B28FA4430CEF4FEBD96AF4B85A75466A9DFD61F989F + 90CA12DADDA429F7BB7A5C1AB2923C7F91E7BC19333FE84C488D9B3840EC1DBC + CB278DCA615D91C19A900DCF983811C0C142DD8A4FCF9BEDB6D18BEB08E22140 + 4CD0D961EE8D80EC88FA2F8C2DE26ECEFFE1D51EC6F1149098DC2507DBD14ECC + 4029975DE0639650991DEECFB132E491D74ED5E43A82D0B5B5391B073DB065F7 + 515A2C2BA66A892C14FB51CDE6B3D18739B77A5C4DBC7495608450A92F67E510 + 2EC1914438657B063EFFE121373B07B9B345162BDD59205292BE331952E00CD3 + D25ACDD7C35FBE634D9A23E3D8024340DB4BD8B0AB79C24D05466A37C6DD43FE + 6D8CF60D0D7B7A5A03F3C7DF64E2A9BD12460D245225E379513901D17DA33EAF + EA62D5F109FB8D5DE1D48F9C96AAA38708349A11B8FDF767573F44E2B4F5D666 + DCBF85C8EDF7B43095FD3BF23E64AF3F05A0BB00FE4566F760AFBB7DCAD0ADBB + 70DA969D0F187ACA9C24596A7525951AFDA7B9AB7EDE1E76538AC58175DCCA4E + 5870C9641B976238E4F6D25B801B600372C183D01EA2288DE64306DB8ED8E5EF + 3CAE9CA408CE151B4A3B8990BC91AFF2D525CB85C0EBCC23DFE3438F292FBCF1 + D404A73B2517EA1C1E83D83875FCE7A3CCF17CE30CB1935E4A4B4343BA115FF4 + E49D9D883EC7BB5D2557A316216AAA4DD8447D66BA7A5D9B8D3537EE7096EE58 + 5892F8E4F02D4C25FCA433A7F18999BCE653A9368F0BFC4FA8740E50CDA4CCEE + 91AD2ED69E4E8A08A5E72C791BF811C0A59AB9ADA9DBB9CBE277DED490C4A3B3 + 8AB3145995DC4B82354478D635CAD335193FE81C7C36445BC34A3783158E54F6 + 19E6F2EF7E6C731355891754A980A428C1AA66D6B62FB5756346D8B5B162AAF2 + B9E28977B1C5DDBF7E5656AC42A78D202C84225060282476E4196754D38BE842 + 86024A6BA0B7ABB6B2220E17D32D30D8EFD39089B6E33BB138C2BC52752F7E05 + 393527130BF485E0A60B9C5E237192EDD3119F2BFB17D6970A8ADDA426B9EB20 + 1CE752638B1A5A4FDF253500A4FFF778271F77F5928CB5EC53AB64DFF1118CAB + CE67633256F73EFCED3ECC5D474CD75317F1EE5E4626509FE3CF8ED40CBD7D70 + 290C1C0401BB149D1F728CC65C76186A5B6903B2AB73D28A9B06B6A32653D2C2 + A49914D7E2AF757C3598BB9D40FBC583A4A3E7713253A21405539816FE38DB05 + A0C7D51CED8944D0B8E338B3220224331B28CC09413F9E4E8C8679086B492F32 + CC4C492C10E675BB6D03244183AEA59DF69AED3D1C951B24AF6F37035570F851 + 6127CAE5A42F66717BB62DC510CE53473AAE0462CDA4DFFB727998DA4254461F + 08D62B840EB0FB000FAE0704D750652B607BD8CE88ACE80C0D57AE1BF63FC1AA + 16E2401DDA7AEF4F100E7A97DA5BD922D94D9FDEFD95A44297814453AE02D81A + DF7223F2E03A0CF89BE56E3DA1EB025D59600B6A5899383F38EB89DEF3E990C0 + C303376AA3E50910765483A2828177460144151880B68BFB5CC641F213043CA1 + BBAE01F4C266E245532F4B3926B0F5E99DF97C6E5D99A3611FB779996EC5563C + BA0A2198F2FB019B1E28749F5F2A8B7D7521D6FA8781C55667D100967893A79F + EA2A95BA815AE925706284BA181469DE2836D6F729C5A0BE8F4430921698E2F6 + BAAAE47039B1467A78CE409117D839B672EA1109EC930405964B4262B002D301 + 23F77F6D1CA2EFA2E37625CCC7ED6A9137C695EC6A1D840800C45F9F448D21FB + 2364CECF1ACFA09FA60C088446AC2CCB6D49702CF93901931F9650D7AD49891F + C0F9B862731E3EF585D9FA5681B03F508CBB41B5CFACB1619C20E3A8043564EF + D288E4A20E3EA1215C59E64F64866E369136F0AB2ABA4E04890043ED88670C97 + CD87ED5CBF77A08FC78D5C9AC468905BA9873F2E831E894B15CD5B344397D2FB + C480A5565AC08521DE852E18D48CDEF86BDFD818B673F3E8BB3C65B0081844D9 + 6EF935B64BC3C740A22BC86455A1AD4B38199F960F17CDE8CC953D69901B5431 + F03C7D89388D9DADB0E2F646C0703B2414C8EDF6CEFEB6BD47F16E3839B76EE4 + 544A2D7CEE8F8C79B8BB0D8B8FDEA7FB9FCF24052EEA222C091DEAE44CFC3CD5 + 659F274C0302B67761E605DB47CCAEF6FFE66ACD996DEFD7E3780FCF50147CC3 + AE8F76096C2926AB5CA1C9A5A6B1D735FC7DD9ECA1BF9944571E1630996E1198 + 60F74880E787C6A6E065217D338AC0B5B4DCEB551DAA83B2126C446524724902 + BD5C2C554EF8C3C54EF7C7AFEA7F6C315036F0F304B7A1A66D0AD6B620F8279A + 28B1AE21FA457EB1FA4ADEC3E7F8C69EA82320865031C52F9F4CE1194D1C4469 + 68E4BC4AB8C2B95AEF297C42A741CDC97EDF7996DEE052404842C50724A3CE0B + 67CE764445C99C2AAE4CA388485C5959DCBD506E3581A1D6885E2D52077AB616 + E3B181DA31BEEE2ACD5A2FD0D8E2A3DC514F2FCF12CC7E374A82B67A32208CC5 + E26A47F038B521D0AEA3E8F0C0FDD3632CB16DB78A8E4E925B0A1E67E29E2D37 + 49D247AECC4384DC4664CFA09C296EABF2CC87CD80C41E14F521EC58ED73C6BB + 22660DF278311F91EDCF3AA2AB3955EBEBDCD47033FD3CEB47741E796F0B5278 + F0EF162AE8361178D6FC676C218F65420806C6A3644A44B06F789A2D4CFF243F + 79B06F05F6645CEEB158A7B2052715E1DC6836F752FF0FBF56BBFCBC4AC0FEE5 + C70F4072BC8A7ADCE930A81E0CEFCDDAD367940CC09607C4FC62B72D70706163 + 9E6A0B4267098071588FC3DC5283F05212A976AEADC3E16DE47BC9BD0A7D8FC3 + 12127ECAA4A95CD26642DAC18B6E1E2AD62B157FF9C8132B67380D28195FD24D + 2C722D9F362B15BAAC48CAEA69619363905E2547BF5C383632F1EC218A84F126 + 89A759D84C14FDBC1E0A09AAF129C4C2C1BF2E206053DFD14C99B6208DEBBC29 + AB5F876133D3D618E811E8384D1AD07A9B963F068E627D3AB48DED5A4DA683E2 + B2364238808B01BA32B3D2BF9B15A072AED453441E21CB520F2C0300FB165B1B + A1CC48BCAC9E4099441CCF2A35E0ACAB2340D70ECA06BB4C6A94E8F5CE5794D5 + E7019A99BFB27F5DE33CC45C74FA9EDE5DAA0D3CEF20B2C94FF4309B279E287D + F241CB9D820A9780681291568B25973A42CA9E9AE15BA887E5AC7EB51049D624 + 2F58784F58EDF5B0A9F2AB032C09225E3C648600898BA54CCA84D66F3BC12221 + 276B9D1D67396D843467069B159A9B44C9A75C00B3AAD6188DFE07F86CCE5AF5 + 108552786E2363A1C991A928F2A58E69C0F7639C646748AFEFD9E3166CC2C8DE + 3B853813B1ACB07F68FBAD8D258B12D058120C7A18936A5EFC2A312B863958C8 + 4CDC40EFEE402F68BB9EE8B70ED615ACC3D25FD491F467B3B589CB8A44B6737C + FA0F122704FEFE12348B41791862DC96EAA2BFB0C926A40BCCBD21B2683B4488 + EEB2938363388B9F974E8B9D9AEEA2AEB1A8DA87A0EB32A9508EA19EF4AB5D97 + 18E155936B0F1244F198DAE06417CE5B93503F2543748F4B465597BF67F85C14 + DB4A37AA9536A2FDCA270791F78F604000A7734714D97E7D1D3EE306A1B3CEFA + 8505ED047BD3467FECB3F67C7F051603ECD9FAD83C2C3143D1529FEFE18861D6 + 90EC276E136FF1BB70CC4F0C91861EEE84D922CDC36AA48F18094A6C7B93FCDD + 238EC5296B337DC6890762A2FA3DF8CD44F3D0124A6DAAEF74576174F9FA3AE1 + DC281851544A7F3582E8812BEAD12C30542E58BEEABF59C0791BE98DBB4DB622 + 0FF878074A65D5245872F09019EE7DBD45054AEF9ECF12D19E3AF15F2AD4CAC7 + 4445E75049FFAE284812BDFFB6AEA31D6579A12B5C7EB80D1D1D0CB916B4F0E2 + 504C7289048D55310A6F4B2F1041173691828E994B354CC2F59F15E9DA61177B + E2BA4C42C28F83B6B7DF892F08713B1ED4DC8711E5714B6B9855F4CAEAB7765D + F66A2BFB50340A0A470CB5814AAF7D02B53F9B435FFF5DCDEAB0B233CF9866F2 + E9A24F809CEFCCB10DF18B6665B79C1A14A74E052C05DC9677029DB1578BA0AC + 46B375EDA34450CA3C905C86A50E401B28E3EB9B23AA88ACEB16EC3C59F8F3D7 + 3BA99149397406B04F44075EAC53A72DF069B91F204CBFE8F6F818D3CC17432D + E800B883F4D56C66E4D56762127AF675842ACF1A389C4108CC3522FC104292C0 + 4B6EE137EB05DB8B33F113C466D39290901EC6FC557ABD19B45C16170EF6056A + C0B368736D79AC2347F0FFF07F267E276B7B8EA9CE0F3A50DB3EDCFF41D9B6FA + 8FBE42F0CA603BC94AC2CF398780E5A5D431BD9A989DAB163566A1BAED0163DE + 338F69072167B1F65FC4DB549FE02C841D6071FF1E49306F0D9AE03BA0ECB09D + F0C4AE47A25D18F4305D135A367CD6C1C8E0F6A67F6FA42CB7F249FABB63B4EA + 82E77B563EFB5013D8F24256148C80423A534243E8A351B95490C0752D59F756 + D5073B04E4B481A02EF6D51BBBC58EF26716F38E139E1B0B2F45E0B5A30220DB + C689912E57E0A743C52864618AD4DF843D4DD94DD94D862D24F92C9097516211 + 82DDBF8B93F5146EED4CF3F02EAF7E8706D0C8D821A7F4B046ADD677FBFD2BCA + 8C5CEC430EC0545BB2EF020D0C3608AC9DB82DA3FD2452D90A40E8EF2D3F290F + 4A0813B8335D2D63F210A81790BF719AA2AB3F0FDA27E9A9F302873250530566 + EEE923B4B2AFF5B0D57505920AE26A57BB5B40E670B95B1CE61D2D1AE4E89545 + 765610DBB256E3C7AA1AE9BDEA29509E66F465C6D141A04855314D6266CED460 + 0746D004738C12BB23900E1071FC000BA7E3C5B9F93928DC5CF5FEF774B48ECB + E742BC3AC7B8CC2F4712349AC50920647D2872CA48A72ABC4C4C32318B963992 + 788F0708B89A5FF93FA1E1E2AA7B8640A31999478E97BD97538A8A7A2E99942A + 676B2EA3B03D758E9FB0DBAAB051ACEC296668AE7959643E4C351E0854B2F0E5 + 6423777D0829A6FD9757B0BD09BE354CACF39BE06F9322DD4C36AA7DA92B702D + 46AEE49A3E1CCA500F2B807690FA287658560F8999C48CBECEF296DF6483ECEC + 989271B46D25B24495CC5C17CE68E77793017A962DF5ECA16EB9E8C50E7E298A + EC7CE2AFF7298B3202BE18A77113248281B92033D70D4E38FAC2F16627B271C0 + 265E1297597EC17F198D84E452E5F2E7EA81FA182CD612CE826024C9337D8FA4 + C7AA4A5C980E23203A3B8A63236D5A9E4005DEC5EA2899DAC7FC6B2E8AB6638C + DB7EB9E7301BC4E52ADD25FA6EAF23F7585FFF92435BB4ECEBBFACFEE92DC955 + 68E5061B4387E38CD1F0FF5798BCF026B2711476C2ACE0786DAC3945337A19AF + 0DF00F49523223440A56B6EC6FF5FAACE1C9C98F8F7A3CFD8FAF6C82A0CFACAA + CA31F58D42E5535ABC3F60F0E6032418045F40ADC1E6786AFFA8A368B7600EBE + E54272382739CFA18C4500C2B79CCC604638BD2CE04F59392D7589BCB8A2718F + EA660D3EFCB6DF7C673D59B8832B4C946BD99DC4730A0F503B9CC00A83D384EB + 6515C14DBFB407ECABE0D7D7E865B2B6292ACDE1835512AE4B34699F057EAEA4 + 6523B3B8D959AB2E8E0747789549705498F7ECF35E03AB59477BA5133FCCCA56 + 2CC7A4F57A371FD77750E8DFD56701840122FB581A25229E70A68D6C68812278 + 95ED708F855E89592F0357D6AFE075BA24491038E717B2244BDA2941174D350F + B41BB337476AE1383946CEF1C49F587B1CBD7C548400CACB8789C8CFD7411BCC + ECD29AAF92F9817731124CE097654A092629EE844725291F12B938674B9A7C1E + 366EE0C94ABCB8F2C0538BE4A57ABF83F956245C7239C21C36BFBC70202C15D9 + 5FFA202371B4620FEF9AE2D3FE3AB5241F49388C27308EA2EB91A27757962602 + 2B9245693FB89FDD6E4F40693E5431A0EE98BD9CB282C516B4777EAB30A90159 + EFCB074F6C3C8C34176076FA65B102196ADB0CF1EE32CE78C54CB712F8E28716 + F1A60FD680F56DBC51F7D0E3B10A65A821E3F0C8D121A90BF930A659A8F8C02A + 49BB84289770B699E2AEF718FD62EFF5A4BD6E9E795A223766359E7EC0D15424 + 9681DCCFABC5A55137FF06D79C76B8547B1740C5D3C38F840744AA057A9DBA95 + 39ED44AA5857942A5754261700AC7380170B925C563EF6CF393890BE76A1EE9F + CBA20E03DA916578944B8D2E4F81EBB9233829744BC0F04F8E3CE158E8A6120C + CFD45AE58BF5EEEE919902FAD4302492EEF69639B362736F0DD121BD45F07A86 + 58B59DBECAD6A12894C78D111F31761E88087CAE638B5C744C0043128C58256F + 87C1B05153DD22910BBA606412EA62D403989B17661569AE9F0E9FC8BBCB758B + 144C2323991C14E51E01E47E88101812A634386B7AB9F2B1F38E2204E2771904 + 49ABC73A42C717C4B6AC358B5F2723D23253302FC65A40512E0074FE6D2CF57F + 77A25BD8EE38F537DA89B56C03307337BEDBB6017A601FB6F86DED00CB04267D + AB8BE1E6A0E2E8A0EA2A6C073900383BD2438DC602E02F8DE8EEDD6E19874689 + 93B17D687D84A25FFA0090401F1168D641A71A46C828B62F9C7529F72AF7BD8B + A410BF55C02E035EC829FCE15BDAFDE087D0FBC3C91C38A722D627B2421599BB + EF816A0FC6D40D4CA325ADAB4D48D5BFEC910D7EDCF5A58BFF2C2709667ABFE2 + EA2BFE83D8B4F6E209166AA1F608DA7E56C4B7DB5E58AFD6115BB46FD6EE154F + FA19496E4AB00B7E689F9881B2B2FCA42182FA3B120B7FDFB4A49F70F005C54C + 2723332DC3FB8FE4A8F9ED7D70B0318110D2E4403B62302089F39401C841063F + 3B697CCED57EE9EF26875FB8AF97B88CA18BD458A30145B1E2278DD162039796 + 5D19E719C903012FB3A06B8D7167777489BB102545D79C9441A47BFFCFB0260B + 3325FAF294E33D2E9418E008ABCD0E5E74DCD761E56154127D6B156589F9B725 + 30F5502BE0243DA58D0F1056A48ACE4046C594BE918F33CD46A7A8D349AF15C2 + 96ABED5A69B7705ABEE458D2767558DB03223C4F6E9672758836F3E2C518C65A + 052EE0EBB95F1EBB0C947ABE1A524D4078C0304D5BA89ECDBCCB521E5D114B21 + AACA4AE71A1D0DB8E90F75D7447F41570F918F030019EEDED5A40EDDAEF71468 + BC6E0BB0F053E99DD5636E16B77245F1BAB59083A7E7CF4EBD288693094939EE + C00141B51376355BFE5F96BADDE2F5EED5F129DC6506A2E18FF20821705748D3 + 6863BB7ED6B877821539F5F70AE7053673465A15C4BFAD23E7850FE27D86CCC2 + 30B490E08F46645A18AFCB6F7409F07170E91677D2BF9FEE1ADFC6B65F3660BE + 0ECDD591D2F345F018BEA2BE0369798C961A9CD4DF419E65764317B041C3E53C + D465E412450708EC3F78D7085F8FA44C6094BBAEA74964827CCA341DEA7A03A4 + 8E2179BC015335EFA3C6941773773E16EEE58CE1C3B7CFA62962E6507CAACD35 + 1F6D2F968A5C258CE81D219FB2E8D46999CE5A759F0295E565F613E575AFFD46 + 937E42226A9BC33C1D5AD39C0571D5320272DE2322E0B48ABC77EE3C1CDA8153 + B8890511391436A4356C461417C8AA3CA38B6A55BC390A23310645C1F4D441A9 + FB7CC765E6D9893E9A51F4912692D9F6126837DF8CB6D4A3F0F184690F635432 + B3EFC155CEA1B49E2BAC2F3DB8E2DBEF7515E6C9470BF395BC687BDDD7C2C748 + 7D5B6B9CB7104066938565484E39AD633BF3A59593E027074058C56ACC90EB93 + 11C7ED983ED7224990FF1ACD330B70A0367B69381D0AF86ACF8B02F5E9BA0B71 + 3BED51E36AEEE974729C8F34A8F65DBC296CEF302925C0093E75685E66B85964 + 4E18EA04FF93A2E94F47744E6B5DD3DFD68002F5297C8B9E3998C7458DE47ECB + FBFE5DFA18F4D8D84ADC3C5D1D22DBE3C667856984FF2032718FBBCB8532226C + 91939C337173EBB3DC5445666513CE59F9E43F619BB9B4EDD71EE667ED5B5ABF + B58C4DB2C638CBB383E0A4B80377F0E0D63507FEDA42D5884611877C8E92D4B4 + 5B85FD3535A6998920C436D339C1BC43CA7D432F555D40C20D857BD4D2484A2F + 4436534EFEF7DBEE6C6CA1F030051F9C6D475E12F1FD48A3DA32BB68845DF4B1 + 1ABF3090D78944D7CEC5ABB0162401E53BD7CA6F3A7317FFC7E21737C77942C0 + 9A84358C16A12F5A370ADC63933EC44C8BDE09D19A8B8298A5935B689BE5F8D4 + 739BA8D23E64C2B02208CBE167CD36A0284966E58F0C50E29F1C48034434C9D2 + F9AF06321BEE4796BD547322AE9A334FD78D5EB33B16181E21EEFC82757FF476 + DCF2D20BDDC3ED2B138098D34685ED3282EFDF6B6094D23ADF8736E6AEA70CED + 1C8C9FF73C243E1CB64301F8975238B702A292703AF36AFD9F59892BA855D392 + 76D826BDA4B7041431280A41477FB7BA9B7F6728E2C59513308BEA9A9DEB3162 + BA2821597C51664082F52BB6EE3E035AD1AA2EA51DB690E90C8723E8CD0D8473 + E33A12A32A05BC43264C90E250CFA714221E6FC0465E4C27ABD7F336F82D8CD6 + 82D10DAB254B95139FC584C8B94236DC2838B212050CCCE6E33630870622317A + 0388AC6AF5470E087F72B67DA5D5F49070E8DC0EEB8FD51E0C860B977DD7DB8F + CD7FF8F3D045E6A45DD985C9B1F1800912A4A493208E51E8B84BB657D79CB14C + A87634859AC35A5534C523B26948A11C97095492DB361A63C863E490523252BC + D318E195A76EBD19765786F78902D2BDBFBF4A053B0E13185D12C6968F16450C + 714943AD876E6A6DB027CA13D3D4D47F4E642B82E186C5CA0208FE4290C64E2F + 6D0FD20ADEFB987E06B31AAB39243479687DF3CFC374B2EAD629F1420AFFB598 + 0ADFA4017E7AA385D6696C6FC240A911C7E32CB3A3F37AFB2D7C63619BEFF2EC + 22B29BCB3CEE0F3E04110764B9B07CCF80E34AA8D6DBFAD62F4B74DE1F1919CC + 2DD4E95B1101129076F64BF75169B1F1D0806856E5AB82D3BC38AC43B3B849FA + 511F3ABA7EB7D2B1F0F44CDE21B04DF2F1404E99CCDE1D162F323544F8403D17 + F2FB9BF388615FDF534CBAFB8895088505E00CA16A8A71C1275E5C016D424AC3 + B1E1D286DBA7A2BB71674331A3774BF49FED95C0736B4183586041A4EE739035 + FA9C76A8DA7FAC45D844CC92528AF568741D20189ECAC6801FF720DE85F5B998 + DD69D370672B0AA4F9D3B0D38F86D7EE52679033336CC78EDE381F48D1F4432A + 73764D29691B1BD664C5D6735158023098F6E7EB0C653635AF7C832FB04468D1 + EF6C101BD570EAF4B4C2A3B9EC61F4CDDBCFBF814C4A66AFB19B774B94950062 + F16E892F677F8BE363FB3D2D46F6B2747C341516D79E285BCC44B943B746F8C4 + EF25684772181DA4CAD38B133A1E31469485ADD83247B5F21D0316F0EF0DC70D + 47DFBD823822DCE17B059F2F13559D00CDF48E37D1F758448E5142F93BD5C902 + F6F947C97B92582BC31406A38832F883ED9B2BC1B9CCD98D364AEAF5DE2599CF + 19872970C142762DA31B718FFB5695A1353832E090E030F8660419FF1AF37D6D + E6E9AA3DF52E42D099E00D6DD63C47B23751860B1B5EC159CDA0FAB6BAAC5008 + E04F64F252EEA2467CDC8F3EBAA653668031D9044A7F4BEE7F20C2C65187C95C + 0B7D768AB95EA74C19C5042005994A19DDA99E725B61E6023ECDBCED70525CC2 + 493B397D3AFA65714E0B17853832ABCD6315F6C745FD50236AF47BF5DE505547 + 79B02BF107C652B2E4627F34235E9868D9E8040E4A9EF81EB74CCAC52A1437C6 + FBAE323B045698DFC3D3E1026ED15B85BEEDB50C18B9F9381E55CDB7F2F040EF + 901EC40853E1FDE20F086C04CDFD52A192AA3881462D4C1843CC70B01868818C + 58574C91907092B76B342202367B0E2C5197BEA4C76F30BDC71CA8F2D46D3F3B + 68BE9E279712453E5E820661143833E90B96FCC3E516155385A1AEF3D49336CB + 884BFC35D26EB17F93293ED87A5532FB8285E7635E27DCD3D70339C61E1D9EF9 + 5C279B1F610B871F6DB6E31BD5B07427F2A75FB212BD1390D7C520DBCF909981 + EF3122CBC8280504452ACC63A47120A99A4657F67BCA159D1C81D482DEDB6F62 + 778EBCB6602E71999C9FB2FA442169FE64542AA7DEA97AA08FAE80A04C49C694 + 2AFE4750E950B70C28F7C67DBE6B4594134226EDBCD8CD57878ECEC9B08408AF + 0D998A7729B4D22A8213F41D5CBAB6D19B14DA838959EE2C18DE574115F5D400 + A958E46A0CDF6815C09AD8A65A1E8055A856D7C7C2E7D98BAD9854F17DB1D52F + AD1AE8603360CB0EF662A4DF026337F320D03FFD9DB95608202F5CD7E170D956 + 63F6CD62DF4F3C16B7597F17EED67E6F482A71F104D15B2AB304F7F152A70A09 + 472F05C5BEFA99CB5EA76ECDC3D5D7D664D8BF1448DFAFF73FAF9A34CD441334 + A64D0BEC9C6FDAE9A892CD7C5707C69FBD0F8779BC43BB0390AE7FEFEC77A690 + A002A4B53E9734C7F5B5B89D343C526A8CB67F3C958DE837CC47C013BE302D69 + 4B7CAFA898146DCEA86AFAFA677BB01C8A391F359321536FF0FE02E435ADC81E + B52ABF7368309C5EF265B0259995DD02C100CFA4472EBCF6A733E43C70FCDD5A + E41DC931D043C516C605C7FE0F68EDA64C8A96B1188DF8E9E68EF1902AD5E1F3 + 2B2846A32D5C1D8F1B9F248554FB39D0628ADDCAE24AC66C85F0F84AC9420826 + 159C7B490D910D82AB80F57F5FBA0F6080E59A95BCFFB1C95D69CC1DA665BFE9 + A8C9372204768C3898E0376E7B2D4B0577EACBB5F37A94A285959CECAFD0FD34 + 3B09F45437EAD7E64186F4B71A27209F64208F3A8A43C18ACB1C674EFE19203A + F13347E7137F0DCD5E92873799CC61B209858DF8D872B01C984403527D088369 + FFCCB37EE7C64936ADEAB0A47E7E8B5E59D706B4A0D5164FAB8879849399E63A + 55791F3EACE7C0D6A38BDA91AE26CE5C7DF686379D950115E33BDE57137226F9 + 91331BC1889046822C729AB4AD339E17684401B6CEF8F824D3AACC178FDADF60 + FEADCA0EF48BD21EEEAED4978253927A5C26E0569C0020D614A6758CCF4B9353 + BCE1A6BD3B00365958E814B8A5A232D3B37B3DD0DE3E6B7147848A4160BC15F0 + CB233E67F0EAC3177F65337EF3526F1047CE8197447B6FFF647BD3F4A4CC2CFA + 7F548E7A07C6313071342536AFE1AC767D2B756B67FC92AD8151C9C2B5E7BFEF + CAEEF9A47E68DCE6C83AC66965FD151237450B56CE83AADC9FD01C164FA734DA + 329C89C9BDD00F781B4A2D7B1B9B0CFBF474D63D998186CF4766 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /EYHESR+CMTT10 findfont /Encoding get + dup 33 /exclam put + dup 37 /percent put + dup 38 /ampersand put + dup 39 /quoteright put + dup 40 /parenleft put + dup 41 /parenright put + dup 43 /plus put + dup 44 /comma put + dup 45 /hyphen put + dup 46 /period put + dup 47 /slash put + dup 49 /one put + dup 51 /three put + dup 52 /four put + dup 58 /colon put + dup 59 /semicolon put + dup 60 /less put + dup 61 /equal put + dup 63 /question put + dup 65 /A put + dup 66 /B 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 75 /K put + dup 76 /L put + dup 77 /M put + dup 78 /N put + dup 79 /O put + dup 80 /P put + dup 82 /R put + dup 83 /S put + dup 84 /T put + dup 85 /U put + dup 86 /V put + dup 87 /W put + dup 88 /X put + dup 91 /bracketleft put + dup 93 /bracketright 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 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 118 /v put + dup 119 /w put + dup 120 /x put + dup 121 /y put + dup 123 /braceleft put + dup 125 /braceright put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/arrowup + /arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/visiblespace/exclam/quotedbl/numbersign + /dollar/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /less/equal/greater/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/backslash/bracketright/asciicircum/underscore + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/braceleft/bar/braceright + /asciitilde/dieresis/visiblespace/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/visiblespace/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N107/EYHESR+CMTT10 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font AZPXFV+CMR5 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.00B) def + /FullName (CMR5) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /AZPXFV+CMR5 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -341 -250 1304 965 } def + /XUID [6 5000788 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC9EBBC6A5E + 2825687306A156DACC32FBF734087CDFC35B78DDA68032BCA38CA8E8A340AAA3 + 002A0E52D0B9162BC68AACFC0F14A1C933363A56EE460EB41CE8C2E9EDC509AB + 9E0462B9F619AD944F133AF072E5FD1625902963260181189070C40FB0D49A96 + 50D86FB0AA90098027455AC2354A299FC7BFC34B4F1162E5E9A3EFD80D6240B6 + 9378BB4F6F9C33B910EC9F1A2CB9EFF55282DDA2B7E7C4B1FF6BBEDD12916474 + 7C47C4F0B9730A20110B972C6E3B152D541C5EEFFD9815AA1D2A5396F0EE6FF8 + C72686B1CA6ED6692D437E716C93E5EC88C409ACF3E4960FAF347C7785FFBFC5 + 0DDC15539533F5EF4249A3A9D5D918025A891E6840878D4F36E44C159996127F + C81A4367A04B2C23697124D2E0DD82BC36F5B1AB67422F4D4E5CDA3D75E418D5 + 99C839C690437905D19669579B4923DBA72B43A9112D25CF6D202A607F161714 + 399CA76521A66A6B23B6D062E621166B55C9DAB0CE7490F0B20283B4CB58974A + 16075FC4C436BA10A99E8AA9A646B08A31FB2520801FC4C744B7D9EE0BF80737 + 81ECDC2D60EC8E315D8B1F498A56FE2DC142C40EBEC216766AE072BC9FE84394 + CE6A599BDD4BCFE33F70E0724AE4EFD8B328F81AA863EC94782AA114F525B6AE + 34F5DF568BDA3A67E6122586BA06712EE491CAC9B31C2EFF4BBB5F4123F2070F + 88AB82DB268211B6BE45A974ED9C7738DD3EC3B5208E75DFBE70C8DE4DE3DB8E + 4802973A2615875C4AC35A01EBDCA1177143E460BC470B80CED6142270680582 + AD7AC62B5353AB70D17391C28E4E77D0A9B4803167C59388FCDED196974E5930 + DE253517F928650C40468CE5F7A0D4D0F6E7DE5D7FA1112D0746E8C6D951B020 + D7071D0A80B562FE837E75AAA9868E0F7B60E367A609D2C374E7679EF0CA5E03 + FAB32A9B7945C52AC74A851C5F10301C713D7A2B4F72012E810B70373BFEE370 + 588D6D4DE32C12F52A6F42C325509EEA8761CE3F18E67C6A24FB7AA662F2E905 + 29F61B4B8B302A97EEDB95736FD2C56A523570399AA037762B5E01EA8B2BF5EB + 1BC462AE3DAC1738D174E9A65F513AFBE336CDC6EEA84AE897AE53D06EA93D61 + 75187B38491E44228B3B6B2C18DF44AA63DE960E52E0FECD093505054BD3D9B4 + 215E56E5F97A93FF9559C95ED4DAA550DA8B4A27307F1D00509B6B005BD64975 + 51A30E62E7BB50E9CD70D4D4BD450F74E5195EA582B589DB6B21DD10BB4E297B + 98E2DEA65AC7975E5A726F55459C224B0BDB32F930195A21A31F8C807026C3BD + F0742C3CE8CDC21ECCD60F16EF556871946C4E04EF3C0ACF28F8BC37237864B8 + DC107AB1B3056BD5D2B321FDF1F1821C4C5BDF22F2797FBC7B02ED9DD2351110 + 2B649803B5DAE39A0CB149642435CF710DD869B64BE2BD02285A8FA14E7058BE + CDB93D64DAE76B487947E91E3C28CBD7CC182DFCA4FC1BD23782572B7983397D + 2E6687F30864FCAAEB259EC7025281226C10849D1F01E2E63526F12E2B881FC4 + 88657850AAAEB5742D88733B38D3B705115DF455846694994BFD15454A378C7D + C2E719C67B66DFDE5FEEF06488A5DB228391EA795074F5AF4FDD6552F6AA7BDF + 0D5CCC301AD3C1A0AD75C78997F438E9715D86101E8FC9B2333A70D02EDB4262 + 5D100EC434DC20975DF85276DB5F5FE4E964A12C664EC2AA61406BC89792E662 + EF10E03DC8BE86E3F0897508E0486C99C9477D83E0EDECC1BFFDD8A9B70891BC + 88583F8B71F961EF8984A95A0C95B0078B318931A64A7BFF3EB9225001F1A91A + 5C248668ED0DED4F622872730DECD6C901507483A0A075B07143360625F4CEB1 + E4FA2FF1DDD0A5B00C40B10CC76CF9F8A1A2173CE58F296567DA2A204AE5D493 + 712B9383E6E3D6E8D275B3CE0C217512F9668B849D9D1A5FBE2EA34F370C14FB + 59835CB1053D98E536480A90F803C0203DD966EC0E1D872BBF5258865A94C301 + 93D7E0F8B58E503965AA0F75B85F8143DD09600E11E52F1460B01E85939EAD53 + E4CCAD953E7ECC97EEF065A1C9892074C6B3CE0F3F9263FB37A78150F3C4A6AE + 9C63FB92F466B2649BDEB90D3CC4AAEFB2811269B8C6C486B8766D2E2DAF3A0C + AECFBA02F8D43425524B3F590C71E82ADB063023C0448658D8E98A08EB725680 + 7EE20E90F97CC959AD65E8669E8C95A131F409CCB97DBEEF523D1870DE8E12E6 + 8B4CA3DAE317F2491CFB420E0B576772BF2A13B26F6F119FB8B8AB4E149AFA63 + 6E2B315356BCDBCA3BC5C805684E341488614A9F18C80A9BF1746A9B54EE4568 + 27A7CD950D6FA4087C26B60F2F4169CF3E47110F3FA9DB9F296E69F6F9630474 + F9DB9F3D4B6218CDF0FFA831FFC55F73D34239BF4126EE0263995F1AF5627612 + 49B718CB79CDFFA7694E7EAA02CB1CD7CAB6B5C5BE7549D6E93188B92D439175 + CC28C1BCE28A1B1A48050828158151099E32C4C06FA98DB8383BDB7B082018E1 + E26BB28C72AFC1207D5E433E9C3853EBF19FE3C4ADCCBEA28F41BA9C3C2BA902 + 4372B04283437B453FDB68EB3CE6A03DEBD71F94D3D7069CE5D79A55F2D30E84 + 88F601086BB37FED12406BE71133E5B1224CC5C857B9F0C21793A8C9C7864CE5 + 59984F2E40D4B2DD6E0D9B2B96CA9823D594F7F259FCB266C58E784736BA28E1 + AAC98FF676A63FEA60DF5CF4CB89B6B1799A0C57BF148C76982B24A2C3E3D8A1 + 9F5EB9FE3D06C4286CB0F1D7E7C952E1445BBAAD943F51E37A4468BACFE74F48 + 61DA9A48E10F5E075C678BE05D093B1BEE3121D245B4C5D33157B20C3AFCA58D + 8501248C28E052CDA8BA8A26664C16CFA1E496CDACAC282A1A5911C3CB080EAB + 1B5FEF307F63981BE5AFF572B10CA7C194E67CD6FB7BB9811DFE8E78E926849F + 0EA2BA392C4A6E12637721012CE05367BB51B1A9E5515D3818D2D4477C6D488E + 6AA4309213FFC89B185181CB17893D3D83100AF65626D82B08E56558B6010BA8 + C3C5E1062429B792AD5DC0B3E0753DD052CBD8A401A353E20E2D3639F1B8AA1F + 320ACE4BBE5EAD080A2277ED2AB670A9C10F805229C0EFCB591C1E6306F83B18 + 2CE83682929A1BAFA11F5BA159F33CEA4BE0948511250045F8EA2A8E2841D99B + A257F2296BB897E30795DAB8993B34C37C9D11F594360B6AB61EFBA7D903DB53 + 5A2CBAF07BA9F675F7C5AB662F6BE74E737EF812D786ADBDE640E835DA09C8DB + BFF6520B2CE7336FA376DEEA896EA86A75BCD3EC80303D5F3A22DF270D9D05AF + 7A08ED97FB39F86011FE7C3B53B04F6CA0DE51BFF782D62A0F68863CE0EB76DA + 1D47BD0D4308C5DD1B5F125418CD2E0B363DE79C70965CD8B9FB09AF63B6BB60 + 4F0861640C5FE7F881AF10D2AC628BB8A0D7A605E1EEE623E106C5154E36790A + BA4B7F4B7661E817FCA39C670C8473DA66071FBCA7C4B0A9DE3494DF3C861814 + C1C161BA4411D03AB2B037F9F24F6DAD0639DBF767F7A499BB8B4027018DDEB9 + 11D6F195B22776EEF2CB1AD7BA022C67CEBA53B4481CCC037982F503A94C626C + 89793E43224938DFD22AA2D9D7C6C2541A6F7D3E7D3CA075212DC6162EC448C0 + 78C774566A4D440DF72982DB69173AA5FF336A95C05B965A9B38DA24A7E9F759 + 27876DB8E7C2FED610AED3F8EE530766A2AD1DD1A121E7DB9F3DB72B76AC99A4 + 8BB30E24F197DDD6A03196B206941726538683A70260093EF9CE83EC2733ACFD + C7DD40E414DB7CC3656B3D0BC26FFC19ECF7C9DFEBBDBA90798BCF9DC6C251F1 + DAD9F1728E8E8DEA471F6C8DD78BED06DE00CD241C475401D17C09B36A0148F0 + A7D52F2F6A71F80A767928DC4B19C081A1FB5833E064D261C1620B2CA58080A8 + E978E27167A693BC1985270A83C59700564DABAC8592CF5DBA05990AC6795881 + 513DD71B0E7E5F95B7223A88D83BA5E4255747406A2FACB3DEED2CA9C5405E03 + AEF9AF78201040C367A50410A4A81B310B + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /AZPXFV+CMR5 findfont /Encoding get + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 55 /seven put + dup 56 /eight put + dup 57 /nine put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/arrowup + /arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/suppress/exclam/quotedblright/numbersign + /dollar/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /less/equal/greater/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/endash/emdash/hungarumlaut + /tilde/dieresis/suppress/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/suppress/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N104/AZPXFV+CMR5 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font WKHOVJ+CMTI10 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.00B) def + /FullName (CMTI10) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle -14.0400085 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /WKHOVJ+CMTI10 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -163 -250 1146 969 } def + /XUID [6 5000828 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C80C0DC39DD6133A821B832A2E5715CD8DD3C7DDBB291E279785A + 8FA62A8FF0F384616D2ED3322FCDC51D63D20804B29DE55335DA44AB8BD7A7F9 + 299FE02A507936078A013E9ABC3F98283FC88BBEF132DD439A2F9254962434B2 + 35482131895D2B6C17122EFC89D80B3420B28B6EF60F26F526432DB76CB6D6E8 + E2A212E8B1770A722A7B383DA4E0622C2CCF27772D13FA0C00CEF2ED121B8050 + CB28848128BA372639D1C3BA224A9A1ADAB9C8F9A0447DFFFAE039904553ADBC + 427EAB27ECAF1752D17D9FB3E49881A960694E1980B8991578F0C6F6CD75C040 + 2A4AF8821F7B113C21CB1095EA7F62779675ABE24C743EB0FF1B52355479FB77 + 1A6666F10C531E66FB1F66E234155C7C43490B50F102F2587C51AE0F071AF5D1 + 7BF8F57CACCF365ECEAEFBDFC9FDE28DA49BAA4C389135240138EE56A1ABC6C5 + 538B524A2F114066E1DE309FBE7B91E28F70C55F44F0BAD93E61BCCA468003DE + 481B9643621B5896D59E2B3A883B04BFF2CE63A7D7C0A6D3685821DAAAE43F69 + F47FD9CFC284BD18239DF509E59C5DBCE5210887BCC8CCD9A4E6648F8181D710 + CF0E47E6A5AD1034694B354ED0EB84673E59609EA19F5B29C4A7AD628684C1AF + 62FBAF982C0E05739EE5D2F4803380F63351B330456D82D2553D2797026257B4 + 1EFE800CF40ABC0C39A4F544D5C2DE0C520E1DC5813D5BE12D1E448DAC215CBE + 4B10889493F79196DC79982000AC5E49AF595E521A3A788B7C24ACBEF024A902 + D4B0F633B6301BA4F01E325B2DA88BB19C475BA7698189E2B6962B605C2DFE1B + 248CAB7B3006E1A09894A2A217E74FAD39A84A3CE09CD350FFEB4FECCFE87A4C + 3925FB2EE5607EB5AF498F577A0656441CCDA7F5F5B1680C045E53CEB86113C2 + 06FC306E649C4A39BAB7CD0E3057923DB8006E71C5FABE2EB82630AB31A8E2BB + 5C885DB8BC11BA64F2546C89A388F6BB3BFCA79051647CFF73C6FC0E2C998E1B + 091A15C732B48763C400EB4AC62F92DAA8773892495C26D01D04D73CB0FC084C + 7744344FAA4673DC698A263DB15A97B34099910B853EDFB6572DD517B562F08C + 620310ACE659AAEA5C9BE7E962705CD26591959610593A89AEADC955F989A681 + 97BAF313EFCF3DC40F5F9EC5EE37A201AF1EDABFF631A624E3714F59F4FAD49C + DE4DBD71FEE1E63137374C989EF2A9EA0B55DCE2622945A228EB37EC59AF5263 + 77C827DBAEDC545CC7ED21A27B70462BC82D1B96254E33130A9DC36422122ABD + DF5BEA962A4F0F9D83122511EB90A3775F27A6817BD81579699837C039CCE5FA + 6E87F9FEC8873C6057822DDE3D67E8B2663939CEB29359CFD863B9FAAE162AE5 + B84F33E67C231D0B73C7E4C692243BE82E5AE29D2CC2FB9522F3C870DEA56FA9 + 47B2C82AF150D20C82521E34341A0DB0C66558F53F3D17CCB6DB6DBA2B50DB90 + C7D138AF2A880F3A8DCD8BBE968D9E6A78817132FE3B91961AA0E6E00295D3B9 + 70E421946677294DA1ABA7E34756EB0A5C7E16A8B78B538EA8FAC4706DCB6308 + CD9365ED7073EBE960DD522800C5BEEA1D6E8ACE1773F3CA0C31A74F5E8CCFE1 + 23F618216A5E7A84E3E10B9F2FBDBFEFDF6D04C8F047FC4E8A1CB968A1DC04E3 + C91A0E0F2661B4A47AF093E43A2B85DD4282C1B574740CA964694515B7E9F2D2 + A2BBCE2F6ADC0ECCB79EF25F827896462EF4E5DD227D6E08A310D459C63FD48D + 05537294F7198DFE4B4856B0AA0E5D30003871E6773414E9F069DD29ED607F4E + C1305BA89AF4CD6264E252FF70F750718AE0B57B914EA9361DA7E60F4CF469BC + 7A2570DA099A2DE71D0B50FB11D3F8C17CD277E0F8F8939192427955BB702B1B + EC370350EAA54054A7045A6BFDDD401C59BF97820C68A8B4E3BC985BEDBA8A0E + 7F073D50540B3557FDA3E6C970AC79DCA78F71D519DC69721A15D46835317F5A + 528F5A9EBA777F9FF93F1AE4C309212DAB78821B1C2C695CEE37F98A106A4131 + 1B2A7E4E9EDA354998CD6E52D6AD296F0DE21187A44A032D2E01D87E39C78CCF + 4EBEAD56A82723BD90A903DB232B70F4ECFBA8E77EBFD970E5C0579C165E1735 + C2B85B591E438B51626CA1C849BC546397F89F68B97EB4643CAECF3AAB54101D + DB462246EC98C89BAB6F0414A3E5413660C377C99ACCB9DD42BD1BFB50614F78 + EC4062DF7127721A1B59C810E80349DD1639F14D4E357075055A9AB268E9D805 + 4466198FB5DD91EE7867724C1C5E75B5662AC06F2098D34616721FF916E362AC + 25BED4A3E720A88C8B6B181CAB266528C3287517C1E12F6CA952A95F836F1FC9 + F54E609A5F8EBA5F66DB1A6C98AA0C5F270F4864565AEFC16BC04422EEC4C07C + B44EB99F063C975AEB4980C7802FAE2F071665AA394711A37A6E46F2D27C0CB9 + 41FFE6E778B83B7A5453D5A034A74ABC3ECB2C31AF50548E9CACE1F867E50467 + 3F34E9E903BD55F16A3CA0431F859BA09555146B81FFDBE147ABE310155FCCD5 + 9286CF31645343DA51C66EC1464D2DBB21511FCB46215F0DC19C2CB692BA94EB + 57C1F2C9A5EB03CB3DBF8D4899C9B264D948403777B93CAB029504E526249C05 + 97F32483788A0043F2861726F97D259C9292C0034474397C88DC38021974953B + F2C8315D96AE961C04D63FD9EAEF56022B8B62DC59CE7CAC48D88CD61391E66C + DCEDE5FC034A617815F74705FF5C3270C60B18A95E24F7098BC3E936BE17D829 + 761D9E576A14AFFC0A0017097FC0235734A3478BAB4180E470A6B937C0AFFE44 + 2DA3C2F7BDC4850C67C86F85D233BCF490705104F2BE033DC2CB20A03ED2EE26 + B4D83856E82B727C06771D49737546FAC3E0F71BB9D5F27B77DBC1AAA1C0DFB0 + 3F54EAC132041692980DDB27B803AC44144F32B74C66C8EE1E450D5AF41E30B6 + 1151AA148AC67124641BE7435FF877C7FF582B66D795258F7517F29DE907B066 + C046BC834C628A03167F53C997F8ECABB61AC56AB1BC672F96542412A6DAD896 + 9BCEDDC1B71124C90532D491C7B12132C35618858542EDC4C8F14A14434C2FA4 + CA0B1DF7BD8C9EC334F2881D9F4504185A6C825B8193AA72BF9EFE44FE0F8D26 + 3963A907CFD95309FF4DBAB8F698F85BAD19C2CEF2029166F2826FBBED571FB2 + FF50AE0864000A32CA9B27599EC278EC504C7CABF36A8EB2F46A9CA2FE3F56E0 + AF426FC1F30074CDA468F42F6A1B6069BEBECC8DBADC508C907A0340976AE75A + F819616A8DE235E8EEF60A0E2BC1914180F71AACB531738D450B6943791DEAA0 + A791C4548ADE13EA6EFF6E12B9BB812FF118E31C28FD83B09C760C534343315C + 8A9D911A803F817DF34756C5607FB8057008554EDE199D89FB505A84DDE17FDC + 9E25EBC704BBAF47FB053868077C60F1559CDFAC478845709511B890AFB10816 + B788C4DB39FDD81A4A9401673F41F9242893D1665154866E13E323E210118AA2 + 2A4C24FFD0EDAB92D7EE0BE9B7BDACE5D3D14AA2AFFE6292D6142F98E375813C + 374AACD1B6EFBA36BB1EA8924F4ADE346C10C9896626805C31029845FB18BACA + BECDFD96AA3E0679A1DB0E74AB2ACD259DBE5F6F1655826CECDB7596E49A3D78 + 8E886435186BE4B934DF6C511356920DF300AC601E2DF81EF93BFD287011813A + DA999CA64694F09121F35745423C55B2BBB355901A2BDCDB1DD0AB712ED741F5 + 4BDD178B6D45BAD8EB079ECC0BE31802C7524383B459501C66FB9B0D6E63E5FF + 89588F93E9FB6C29D9F2C6FCAAADDAAEF0A3F2EDBF4C2030E42533FF10B14181 + A4851EFDD9868106B24F25445DB3682902F21C22D305DABA3C9F792662899CBC + 96F8E5A0DE7439C943631FC0D52B3F80C020E31712D827CA328F48461E492410 + D08B1DC05E4C37FD9696FA0BC15BBAB1A8C8696B918863DBCA45B2A1A6380BA7 + 00382B73F84DEF38C6F8284C00C433B83CB1FF33D534FDE35095ECCA83974152 + 3BF26A3E8E828846216475F7912AEEFDED67441C80E9211F270E0768F32CB33B + FE5F7483EB59BB50E7568E093DA29B8AED6C803758FD3E2FED604EAF7B06B179 + 32D74142E7B04840E951E7B228409DA0AF5273CAF26450F09DF6CDEC156DD996 + A6A18EDB985C57B175850491F243C2957EF57DE484B54C477689EBF6D521C813 + F4B55F90779CAEF394C3BE2C4A0EB53C17168F4E70BACB097119C6142A1582CD + A820C06536FB791F94941C0851755D83DE5B01625AFF3E151EBCA98B17E82573 + E8CE6EE6A71488066429ADCD3296F007774294DD1D2196F8E6ABC2CEA941E2D9 + 693604DB2C3F94B0359354FAC24EEF6EACADD27F329DCFC93FBE26B39291091B + 85067B17E9FF5C381EFF64D0837630477E6FE94FF2F5FC7AC6394E519BBB6217 + 7F7F412BE1A7EF13DFB276D6EDAE569E5EE6D3F529BBF7A6BDD889ED45FDEFD3 + 87BCBB9B6F2D31096973C32B01E487EDEF24D824E0E1DDC2BDD1F92FBE8DFFE9 + 066E220E4367828FDC23C61B378004E058E1D927B8E58F176A3FD85000B2039D + 2B1B26A2438D9C390686F6F6B96C002B2414F9DBEA3880B906A3D2AF5AC775FE + 52F05D01296D3EA2D47FCC6D347FA7692141DB0593E21D4B2E8C3D342470F751 + F829217411002AB486557BEF213EB27D819B85B9A1D5B654045780EBB46DE4A9 + F8F1BA7BBEFC98300552B3B424AB6C9E69C20C48D26B0B3C13074BF0E8752458 + 75C235FB1EE4B543723DA1E434897BBD77F834B1A54CE760FA300C7CFF5CD949 + 9F92E61A21044923E7194ABFC6C58429F789F6EDF1AEAF747D530780940978B2 + 96E090DCD80B984CE41050AC5F6A4C4A29DEFD59D0F807E19F1BF32422F29DB5 + F56E2797FA7E2DC9CEB9FD120A85DE4B988CF6FC6146EEAB1B817FF00D79F2CD + 520781D9E3B2AA8DC9D4D9458CF484DC80EA624B19BEA6FE7399A88B9E3CE059 + 0CD796EB4ED7319B5E7485AD3D824BB38D45CA62EDD0F4AFA864F37AA990370F + EDE8CBCBF270DBCD7D2EBA3D0548B299CF4065F771D874A3A1BC2275498B423F + E27D5E5BF8212C12488B4EE21802804A3418A84F780857FD7A0064FE45BBC2DE + 48C7571E1BFC13CD1407B8BE12CADEC8E0B2DC8B222B89A669708624055961F6 + 450DCA468B95C8473B4D01B5479602A14D32004A5A3ADAA1613C96DAD7ACEEBF + 7E6027255E1E8640F90418793F8141E9C75D9642D9D3E292D8DE7C88302A0901 + 82741202D45176A327697D3A2AA6CF171260C0EB4E0AC8935B7A94721B402159 + A6AA496B571B66C85CAB8ABCA22905F55E4C779D90BE6114ABFA1F1CA10E33B9 + A09733D32F364769C3E5E3477FFC69D5D1FCDB72B4F49BE47811C41A678AF6EF + 196822EA9AF26D7FE64C832E138BEFC940DA2D1DBEDE61463CE4CA7F5CB77000 + D1FDC1EFF3284C9BEB76B72EA24FE97F1D5F357717DA77A4185331B53107BC60 + E703DF39E34CC6645F73F8A8F70E9640EB278EEDBF52F9CAC31D62F60BCF7E6E + 752E295139388BE683216BCF3A69EA11699ABFC34CF8AD180D957223A5AFE2A9 + 27B901F7975F138E55AA7760592E10375A9F9BDF8D08CFCF43D98863B4AF06F6 + B98346A71F594E104C40358AC3CC22C79D7D0E5F38E3F72A270DB99E1658051F + 14B86CE8ECAE0E6AD504DF77E2C372A507A1C83662A89B5094D684F2202FC945 + 0C4569B209F4ED7780910002E0579D55C3EA88BD6EDC5C3F20E085717DA8A64A + 478A7042E98F923584140FCAB8BDB3C3BAD03B4B7C22E617BFC3B5D04614375E + DC8C5481542BF63FBB732E4289407F1907420E6D15AB6FCB99FD7C830145EFEE + 7D89469EA0B67AB659A816EC070985A7E594BE5C8C7C52E2F041A8417DCEFBE1 + 41FB3A73806C7D66675512747755DE892AEB2B6A43EF0AE4A7619337725B58F3 + 468A7C9DE94E1E4D05FB7CE721ED5D25AE6D3DBE16855AEDCD2A00497AC4092C + A6758A7085AAD15ABFE4578190CE6F9AD4F33ACBC4A23DE7C41965F35505B973 + E1F52B245D3E1834455B21891EC8CEA9A00201EE22CBDC727121786E67A9AD30 + 40771424F7618A32390424B58404F91F8CA18D6273B1A6C5F00B9D36D8FDDB34 + 91F84D7801B3C1DED20C2868047DF572376ED104B8AFD35D6C5BB9CEF782D397 + 0C51E84CEA234E49FD27F4E71A695747C6BBF3902AD4885BBECD25981DA869FD + 70B0B21633E3C6016CCD2264E556C3D8FF3AF7D2F7B253681B49665726CD0AC5 + 0FE17842F2EA7E902EAE0D722364918AAA6B250250C71D72A4D9CE2C0B9EFA14 + 27CDACF30A45481AC3EDA8967BE3E62B7A2D1AF882978E9422AA40DDDEA7CD3E + ADCE0288CC1200C503AA52D4E3C465F256478386E97B8DC1C5FF1A89DFFF1897 + 973BE9D0095EDF648E6F49CD8B494BDBBC659E234EFFE836A6B53DDBEA2C5DA3 + 0DD259CC04EC777B74AA32D47AFA77D388903C95BF57A42AABF1515FEE830F2B + DCB39D6C5E3CD98261BD0B009AADF7D9503860621643E95FDDB79C0E582B7DFF + 3D4FEBB6B526F99C1D7F7D914FADCE490AA473A0CFEE3F3D5CA99B172FF2274A + 502AF5200DDD95DD7F85122D37591A859A13AD31919D1130C1C3E4588CCA16EB + 4B32C6D8B01F6B85741A0FDE2F2E233BA88072839326CB5B6699CCB9503AA65A + 669B72D9EE37C4C2CDF6FFAF35EB8B15F79398FAE62BFC86B9F9EDDA951538F7 + 16BE3D53A8B3734E02FE35BD942D63893E7CE1D1CFC37F6523FD06D56347B0C3 + 34D6D206F14EF6363B6A2144089C31205002BC5DD6437F6E0A5A5A4FD583188F + 3C6598895D3FE0EB494382C6BF965EACBC1774298A5FC4D6619F4BC5BC9122E1 + 0ED7997B490FD16401019D0C18C97A35EBB9D4BDE0BCF4F7BB06718ED581B8BF + 78FD15D0FF530A80373DB33043128A3210088CA6DF14B4464B9B9FCD7EEC7663 + 913DCA0F21345E871BA31AA098BAEF7A73D6987C99737F5EA158C13DFFDC1870 + E793DD211A036B472549652B8AB05F55F75692A70D7C99E217ACD663662D7073 + 84F7A5461D09D94CF1C9459B079706377EF114383F42DA227F391DF458763185 + 4E2346ABEA42674D997A2AC7C7F39A9C3F5AE95D67431E8999B8BF3D4B323AF2 + C85419C08C3DC08E2F7FB9B740C01B4B64FF80FC0CBA523E21CE7AEFFE49F93B + F0A2DEEA3B4757E6880B9A41117ABE27C90DE096AA8B28A1F15EBC6EFCB0F252 + 04420811C7CBC7FB0A55EB7B5664D9EA0E90448DA327CD92B665DBAC9F320829 + 7B677231236F20D6156E1D6DCA904A0356552B0BBF79D2F00C9CF4B4804D7028 + 686035D59C4FD77BA1BFDCB6AF9BD899CFEB0DDBE9E78A2DDCA32CCBFBEA26B4 + 1750BE5710CE140CF1D06A65595BDC7DC299CA3FA6DBF81C15651C92D865D8E5 + A51995A5E7F5448B9C3D8E94E4FDA1418AB261AAB84B41AB19E95E431C987C17 + 13C042184CD6A2C0B86F767F0A8AC3CBD06E2F278BE54E5CE941FD7877608D5B + 922FB337CD2C1A54A3AB4D19A3FC23E97CC725A7CDBCDEE55657F2D7BC5BCC13 + 1211E73AE4AEB75661A0E217E4259D91AA4F0FD463C054FCD8C5BD355D3AEEC1 + DE241D932DFA092EFF86F19CFF55E60B6BDCC0442757DB652AF3FDEEC143B440 + C2CEEA3157236C66E8777CC56E3E689B643D6FBE05FC1D922B4DA981E50F30C8 + 2A04B37D82F82ABCDDD1CB50FC48CFB1FF3391D62AC38A8431B52986878F6780 + 8DC8E8C2C0CD1C158E84EE408C12A8055E1F094B8A7E5F44420031E6B587B977 + 46191BFB3A7BB6B5658813AB9D6B6DCFBA5C4DD81E568F9153301E7A680C0AE2 + 561A9CBF1F3639B7F9C4E492FA79DBB26755EA15C1AF63E93C76FF27BE6AF272 + DA727A56FA880B8C99840AA1F692E8F1FA01AC4B444BFA05E1F2AC2A78978935 + 35387C82339083AAF17311FF175DA0FEE05FB7530AD48A90947DD7BC72674676 + C97661A8926E87613DA9E00DABC6670EECEE608694338248A50F5EBEE760AF53 + 9B1AE100A25CEB5296356CA1DAE17F30D45DC9EA8C575E589FD97A834F89A35F + E625152D594D37402C507E81710009D1C18BF3C9C92672EB8228611DEFE04E63 + B53CA74ACF4C9BBC71145603C69C51023D73A52313B370B2D9E1D7012305A6F9 + A572DC71961ABD25048CF5181D8B9D12BA2027360C5DD66902E3E58B2599505B + 441D185688E917EC3C6A87872EBE8231E7FAFE9AC6C193B2A887EFAE75EB324B + 0940B075A226298C3CC0CAC07C74AEB0EC4C6D6BBB9FA0D9B7766070A566E430 + 2EF0A7E813EC5035116EE1AC58764EE062E370A2A11390A7D7FE4BBFD3B54313 + 4A80F9994287699810CA1C59F717DE173E0321CFE747723E0F1BC63792F39126 + 20FAF893187621860EB968E790E5CB71C9C224578D83EA1DE7E31D138BE0C02F + CDD8F60692AE7950C8EB2F914015B652AD72C3994C68378D3EC045AABC1E7188 + C8295AE6815268D5C00130517AD065D96DF088E319FA8863878D7CD64F02A3AE + 5577D1982735B42FB2C771D5D2BB4510A0B5B76C5D8D2287B062555F2B599C26 + 73DF68367717DE338D297BEBD79F3ED67BBAF97891F9962B3DDF941AC3BECE9C + 429E6DDCE24EC0C259CDFB53730844E67708157B90A543290F932CD904544F60 + 18C38A2D104DED6A7B1C448330BCFDADF1E33294449EDBFA3F84200535BE5683 + CCC252B32C513BE7ABDAD0B3912559FB12D971371E14C24702A90CD20ECD241C + 63B13B9F9A2ADD39C846255F07AB8473560E7C370741EFF910201D7BDB237B9C + 30542FA7DEC2EDA8412E54F233A9CF36876571F458479603659B843801527C0E + BE5A846FA7F768E7E3400CE7D63BB85183DC4BB49E123A42C4C184AD214455BD + 40922BFB341EA0FDE549CFC8859AD12703E045B2B5839C39FFC6861E8B27B804 + B068BAE5F38680FAB0EED311337650ACEBA8ED0C038A993BBE17597FB63039FB + 8D36338AE570340F4B2FB466BE38E1046DB3B63A205539388E088F6E8FB6B7F5 + E5A3D9119B98507F312DCFC26FD393E7A49FB6BE9B90C90A50C6F0F86E696A26 + DAA09C48F7FC11D4B2D4204654DA9FAFCDFBB73EC1B4C503EC5C4D064C5C3B07 + 0DA64205767EC9C448AE264975F351E07435AAFFAD75423D7AF884C8557B089D + E5D7762E3F360626C9F803F96603739F31E4D3D29B0635F72F50285B060EBA88 + 7F455C85485487FD8178C8C4C71A57B088D743B5CF3A7C833563B43A92E9AB62 + 380F6274179F1B55AF8F58A18F5D371C484B753A4924C07ABE4EE78BED12F9B3 + E817C832C321BD162D24AD7451FA83CD8CBC9790A67393C4005B0ED1F90B703A + 531AF2F178E6A61B3861CA408D19287D55F3AD4E1312111D8A6B184F2D951CFD + CEC994F45D2EFC71F98ADDB90AAB25B6803A1F4BF35B51EF83159E5152651D61 + DD24A820CF36DF307F40A55F9C8D9A6A95599FE2D9BA6B5B75A0CB8131BB462C + 2DC441785590AA2E53DC911E8FE399A4277DFDAAF8633671E2F249DAE8C97E5E + BDAA88D9107D25BF1E71B28D35ED2B3A66C744781526EF44C084CEE6990C6745 + C30FE04B1D90EA67BD49384A0360827B12B195AD0E5C91568F7D62CFCE8416BF + 8B8DF1577746471D1AC59CF42A357F9AB9DEBEF5C4170E63F9C4785781729FCB + 09C863FA16DFF30D9268759ACB9BDEBB3311B5EE74E238BE5F133394B0359354 + FAC24EEF6EACAD99D9BE992BE9CA5468DA3B7B0946E08134986B792B4CFC0B2E + A49B337FBC3C91EB944A7998F2D1F93E701B8AC856D2096E507A1E538DE9959B + 62EA0FD01800545A1FEEA06F8726430A249C491D557AD12548055850A257270A + 2945D184A27C8641CBCC0D6019F5158F5864BA7587F08AA861FC8F4EA8518133 + 2305E54A6C78E1A5834F1E5AE66E24BDCE2AB611645855FBEEB3EF9BF1E5C1B8 + 9FEEBE90306E6F9F6B99E542AE9119EBDC4411B978F5BCEC1C8B0A7B79903593 + 794FFF21968640D4031F4AB8C19704FC3A90DB5362D6ADC7939C022F4DBC9DDD + B897AA69E99B180930B982CC0AFF31806A7BD89451960A8756F4A10D63DB131C + 9FF74F6C2A03AD6D7B578AD48C4EDB45A6760C2735FC6E7CDBAFE74E384F5FC0 + 9405BC6605BDE80C3D245797CEEDF30B68A4838D5BDAB7BF6C0D59A0227E0F86 + C5E5E623EDA487609DDB178AAA44DF39B1E3B63CE0E6AF78D0CC316AF16017D2 + AB03393E93685BE2D2ECEF1453B12729AA40AB6A093B6D2C07709434266C04D6 + 220BCD9D88491DCFBD5A15D682BB7529D096214E6D6A8C6E423D938C44E905F2 + 1314615232F50BA5CDA9FF8B13DCB01463CD75C3278788C4946BB4E3F491BB8B + 22C7536EAB500F0110533D5E2F76D82CD6FF1B87B3AA986A1779A654DEC5AD06 + 2C0B301829F9A14929B8C68DDFA24AA2BBEE6BD3C2450F61D32AE541A616EB54 + 4C3B75F9AED7C458194DC57C095EDBF5387016BCA4FFE6B6FC0A15268D97907D + 2C87A5B173DA0D5737F48D5CA5CD8C83A786F504369E73A457A4E21306DE3B9A + 2BE0211B91104F87ED5E4B55FEED0225C421B7C89B4AC1623E3E6C77B4DAAABB + 8813301F75EF28420E186714709EA3D9C8D87A0D089D52C594FCB68E559D31F3 + E996F4C7A9185A263EA9484B4BEAA48FFDAE3C5B62BFCA1473C9AB351C661326 + B14F05D88FEDBEE85EE98C3F97187ACEE919CD06CCD16332D3A34A2019A5F975 + 1DA935273F911E7B56A7281AB952F9D4D5EB1B99DF278BB0E2046780E2851B05 + ACBB2BF8156C60AF489F1E290DB2637DC467E4F5415AE9ECCB9029E983DEC4F3 + 45F31169CD89A804D1149C9F6040440C5E4FC7714F28EBB5F1F272D545166695 + EF1EAA252E1E754CEBA779FE6E4E4A0DF2F5B5762CC09125CAFC534D1DC0DA4E + A2B3A0840B404733890EC3E543F5B8EA27DE5FA72E1C31708C04458771764808 + D885A0A2D5BEF21021EA8A6ADEF630D42C42E5399B324BDF5B93A516F3F3F069 + 1F808508119066D7143BE1640E21E51C5AE42D1433FBCA643FD79E906BCE66B9 + 51973C6ACC0B7C60CF3E97365F63C201DA8EEAA05FB94E06F34AD47205A6ABE8 + FB834502CCD99B916A5B75D31A6DC2366087A0E08AEFA3CDEF0302A300CAA2D3 + D4AAA3891F161C1E37A08172BF7E01C70A658D048D1FBC77A7B2DBECFD846F53 + 05C85E1A51CD8F505900ACC5DDED4D38ED7A69F71C49D9A70AC2E1F36C7B2803 + 2C7F5D524B96C24736CD0474905649ABD209F2B1D17AD6981CCD84099D05477C + E37EDD1711BA251D60616169E826A00F2BA8E1B5E6D803820EA57D38399DB030 + 0CADD4C4A717818B7660F5AA3E0943F3A0E20D2BE952E2101463B328B18F97EE + F38D41D1AF9AE668737CC624461B9E7F0E6F1A81BC2C666013D952C76979AAD6 + ACD918A3FBEFD613285B8E95E6BCD4D9E6EFD6AA181DD34E82188B2B1436D0EB + 5B872AA1FCDD519DFA6B3E7B1EEDB6747F214255FC6BC55EC1B6996C78E3C85A + 6E23AE7CE174371FD55AF36A973A19228F49128559CA32F8F8793F0799526AF3 + 503BCD5FD804B5ECBDFC68A46CCB40A5107A7CF1F4058DB27522EF6D5AB86740 + BB6410BF10F53F7FB60F619706351C2A5D4E43C5028111F2AC4CF596BAE7AD10 + 5D03A1E8B4A7D6D06B12EB7E1272C8DB959B70AA49A896D13CFFF76EA6A39C75 + 06BBD99E7DCE04B4228B26254473264EEDD97C2D1CF1BE32FCEDD4AEDC88B0A0 + 30728FD23C1A50FF4D4725CB3AAC5BF1790A5199BD37BBFC71C80737B1D9B1E7 + 9E5BFC08125300D0E06D786F112DB59881438DA43E93A4670A55C41FED4DEC57 + 1AFD39E56FA96C2F4D60B714A3232F169A02C41E587A140B4B6074772022D8BC + CD043355644234CFFDE47D1794853A9E23CD31B3969C21F40572D6B2D950925E + 733919F37215B48B44CD3AA8E4A039F768A7E09EA1211E90618F705EB9FD5E76 + 26FED9039B41B1F6345FD02474C3D2FB67F8BBD3B39175248920F53C6761C95F + 979189AA63AC110E49774FC13E + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /WKHOVJ+CMTI10 findfont /Encoding get + dup 39 /quoteright put + dup 40 /parenleft put + dup 41 /parenright put + dup 45 /hyphen put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 52 /four put + dup 65 /A put + dup 67 /C put + dup 68 /D put + dup 71 /G put + dup 73 /I put + dup 76 /L put + dup 77 /M put + dup 78 /N put + dup 79 /O put + dup 80 /P put + dup 83 /S put + dup 84 /T put + dup 97 /a 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 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 121 /y put + dup 122 /z put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/ff + /fi/fl/ffi/ffl/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/suppress/exclam/quotedblright/numbersign + /sterling/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /exclamdown/equal/questiondown/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/endash/emdash/hungarumlaut + /tilde/dieresis/suppress/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /ff/fi/fl/ffi/ffl/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/suppress/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N101/WKHOVJ+CMTI10 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font IOYFDP+CMBX12 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.0) def + /FullName (CMBX12) def + /FamilyName (Computer Modern) def + /Weight (Bold) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /IOYFDP+CMBX12 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -53 -251 1139 750 } def + /XUID [6 5000769 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC67F973A7D + D910BBCA8FA950CADA53428ADA87055C66C84903F07F66481254896782FDF2A4 + DCDEAB2999969F5A6734747823B5041212A1A6A3CD412CCD0EE61173E1EB05DD + F2B7DCA21E965DF4EB09D153FA00AC23728D25C5DC9BB0A1944C5671068B302A + D0309F99CF5211A3284B39D335A60C7DFD0BC14ACFF2B3C123318746D7569FA7 + D46BDEA41DC698FF8E70859812B9B1D5C7E4FD37F567E45F827518C39376A886 + A804C346208D37664B1B9E94DB1FB2E2EE9F9F1DB367186382AAAC9F88AE0B1B + 76F3D577A495E8941B2845D58030749D3FF00468783A615907208CF914F9918C + DA0D219B6E2B51CE87499D98C30CA000F373786617007C4E72F955EFA73ACDD7 + E584726C3AFC22EB900C82CF2D8177914EFE48AA370F7D5CD02CDF91919D186E + 63FDD2F8FEBCD41D4C3B1B928A1A815296FF0953856E29CF6A2F670E83591EAC + 77FE25BCA4F2867052E0B846DC2EC87C634E709D8E88FA5ADEB86D5BBF953D5A + E5BCEDD294D4CDA8D8FBDBA47F351B3F117E678E1C3D253AC2F9AAF5023F1EA8 + 19E9D6AABF66C49F5D2C5591F0A4B173F74FBDE6BA67F703FF63026502BBEEC8 + 4AA68C76BEF6D21F15ECD326E787410AC606DAFC12EA42F4671FEA9F65606493 + 4FE97033A84ABF79CF4345263C8D6DCA1957A1E27DC60404C324A7F5DBE5BB6B + DFD5EFB3ED4D6BB6CF6E1D701F5CCA0C3AE7E3B72E4DEB931DA853921178519F + C8FDC220AD8BFD90E4731DC41EF880054C54824A991E330BE5630D02CBDA4874 + 70D9648636475BA352060CAE7303389161E71BC0EDCAEC5660CC7CBBA773F0C1 + 04CC871ED896574C147F2B0AADBCCFF2AFFE819A7D6DA71FB954ECCC22EA2869 + C9E585AC37B6A045BE660A766FAFB91750034816800AD3AC6D447F16821F77AE + 272F0192F311C232A08F7ED439998ADECF49C0A1CD76F40F2177A7CE4167C463 + 1ECB1052D388C2EACAFB876CA92FBFE45053CD9385A915A31C37B363252E8897 + 4F2182C20F4669B99E2BEFD41A18E33A2099DCA0904BB200F1C4E18695B33C8D + FCAA525577F524E87AC892A64575D0E3E54194FE37276A3AD49CFDC8510472E3 + 8928F00891D315ACB503A7310EA8FCE2AE949AAB28B71DCDACBC32115D4EC015 + 64EE49856B867849E6735383DF5BF4F523F4EA73156096793EF7276F2A99E004 + E0513F40CC3DB39814179E72785D7A963375FC510A6ED7865C14011EA6DFAC6D + A6970B57F95E02939942981F079D790636BF4226FEE5AC072CEB78444E6E9B15 + A7931111DAF18D419777340D050AD1E000EB575FFEA05997C05338DAD83FC982 + 97884A81F02CAC668431B4B0DEDB23CC50631716DCE27C73ADD5124BD5C8B206 + 84BF8BF880DCD9F9FE468C254D6A069064BB28965B32F1E0D5EF61363A700AA3 + 0B7E39758DD713BA604219BE2158E635892F4ECAD058EA9548DD8DC60EEC664C + 0807D67151D8A8227355E72BCF65F960A05EDA9DCE43201F3383842F1D85F7D5 + E8EE7B0BF64B0C3C5F8B54173C265CF32D278C1CB462C7010B3A413255710A87 + 410AAC48489248B2FFE8FE0A45ACE6083A9165B7B8F500E6C48162830E45E691 + 5726E707F5844F5DDD72C4EDF599DF25D8115CB504863DB4DA6F00705112FB40 + 1583E6E39387103369F7CF0F07387F9A8205E2ECD2AEDD19173DEE9D5965D74B + 8C583B116825A67C95A180728AAEF30B208A66AB6CBD0EC62DF4D3DB24109E45 + 570CFA896A35365C0091749F6B45C2C4AD1D1C5D763120A4A9C50B6063C4CCA1 + 1574667E977D48AA860B4B9E7488FDCEB0F95A18ACAC87C5331360B716FC627D + 423C209305AEFA2F1B27BFDC626636A0E66201B1AE4A77B2E1B7BE7A4B58BC30 + 6718648A7440929C5036408C0D6A36C02B5304C086E0CCF9F3BCB09ADFC5E99C + FB7689B27059B4739884FCB91AFEEE1C1219358465CD1CAD869FBD2B76227912 + 359BA87EFCFA3716E32BF9C3216DC0144C15DA93C376A60345995E583BAF94F5 + 876C6925349823EAEDE4F1EDB386174D6A0656B95946A7E95709B41ED490C0CC + 8EDDFECEB9F56DE4C52B22D377C27A0B235F4B0C82B2E74041001C7D3C04BE76 + 1FAEB226B775E29E576938621B4C252B8CD39257E1EFAE5DE0FAA47556471692 + 8ECD5C0721F21B485998C84D833BA6E785D00BCDBF757295F7F3B98C6E57A607 + 4DF5BFAA036D09537CF05FE79A1BC2518AC326E60139504E64B509A346224D0D + 34EEBF3947B31CA3C5B1D6F3A9555D79B10A3D6D807D5D46333F58AF05E344C1 + B70FF410ACC2D8A72C0B3519094F2AD72889419BBCAB118FABA92878CB4609C3 + B70D3CD901007439B2D377BA9E48EF8ECB62FA73C0FEF971CE75C2CB1EE4E53E + 835B50ECDE2EEE1BB3E77302B990DB56B86EE5175DFFE108643158A9BE64C782 + 67D2BCCE98A7B7989B51260A939D28F958AFE6CD0AC62CA81C2F747A48A8B858 + 1B21CBB7D2FDDACBF271945C130EB378C4036750C334306C41612F1D0B0D3F75 + 3DBF0F8FE8CDEA01C8A00D9B0F2CF742A85415CB679556B1A036F7D77C1ED0B9 + 7CB7CA4ED1C112AFD6C24ACFB0D526293E1E58E34DE9A544D8C54758C3EADECA + 0AE2ECE4236E8FED3DBE74F1C91B922ADAEC1DC09BF2F44C6EA516E3C4A2485C + 77D78490BD5A569FE01C9946B94CB70F9496395F68A707C5255830248D7954AF + 1FD9DAB6C7082950374A33B40B30E6AE044B2F5CDA535377F2ABFA145373D1D5 + E2389D6E187272B22EB1D69A7C4D3D0A4B9CE71137D110D3BB57B465B3D12522 + C9959DFC7DF157B495CC379B835B90E9CF6727432C1EDBAD5C64E463142C89B3 + E5197B9281F94B4EC5AF09F999944F6FFCA0E9E83033A9BCC08F3D2EAF65411F + B0F901941B35FBE86D799CBAA0B4BC8F04453E58ED0DE3A52A54E699934280BB + 96C139B5DBF18458075A7ADD0EF3ADBD9114B2FD6AC807FE84318E7506E09B5A + 757FBCD2DCCEF2C02A89058EB9119E3FC587F58D4BC368F277AD4106BE0055F9 + 70D6AC324EA64E64E775D5F2588D4B2EE5AE55FA591DEC15484FC227B9E3FC1D + 3ED14A467E425EF3C77A4EBA46BD236ED3B26E6FC4940F4BC67B4A61FCFBEB43 + 66D0F57D633335561FD7AAA8B8165D1001718FA9025052C197B99EB0F64CBDD7 + 6E6D66732F18AC0DE023D7CDF1B6A059F90A98D1BA6FBF93807136849BCAACF9 + 8B760D55E8A69DCEEAF55DCC9A0B01C9037250A09693632A782E219366E33CCF + 8C270D09793D9224BD81902D18555C3645BCA15E13D83CB086F8E2AF892F45D8 + F01F350DDE13C3EBB1D835298EC9D764F63780417D4B0492A783DF19E89E23DF + 40DFB3A28C62938E3B085BBA7FF56F57B2788AEADDBFB4D0BBF4293F47CB6443 + C08D03315D3A7E257BF328B81C20B56A8498AB64F4A424E231D51703E49BEC57 + E95DFCFF7DCAFD6EC8781403B167889FE1F62EB8C60076D6F08F79EAC27C6601 + F21ACFDA9E2AA2D9E7DC56D4130F575A9B3EEC57174AB5F60ECD26732A9334B4 + 647601039E8E2F1BA7C610205415C33268E09D2497465B21AC1FFCD29FF3F765 + ACE9CD020A158B0081256B1C1DFBEBAF902A65B42BF836249047EA8A10E11F8A + 5A745E17FC0B3297616DE9B3B35927C36E858B48640B2ACD0D2C642BDE8E2C59 + 835E9E949FC0AC12790E1AB19A49DE22E587F6EE343ADFB4DF4A57742D0CDA95 + D7B208EEB1D380C2846824C860464E3B075E40F804C7EDAB2CA96109D39C3929 + DF0F0BCC232E1C4E2FAB255AE898D25189AC06C02D1BB00B360B6751FFC0345A + 0477F0C38DA01685F09141E58598F57ECCB9F2802F5C26CAC5FDA596A4CB1867 + 50F88829157C971F985EC7AEDAE214BDC52528907AE07FA6FB9EAECFE89096A8 + 538E719E9E94FDFB20C8DD6E4C13682B65E93F715A731A93DAF73109C21A2D9B + 9FAA43D5747EA814716A2F1C38923C13E4B2EFDBFBE44C703FFB1AE4931F00E6 + 7CCB1CE76473224FDDE7DB0FE984430F84708FF779FE8F0ACCED6C0DE46D3885 + F394A0277F37500A03BC214610676DBAD2027A08BA8CC6F96A208D455B7E0913 + 20A51DEE91B901C737CBCA9C327BBBC7CAF98FAA5C388DBF16F6C59EB04B00DB + 66CBEE2C3273BB54E9213E4277073FBA6E25044AA7F95DCC86638F14606776A6 + 420960BDACAA468C9324591BF05B0F85CE86D549628A05E332DE4224E4E8907A + 8B9D629E251E455A6E34805A0BA95868FD7D65CABBDEE5856DE1AA00623DFC4C + EA4ED8EE9699904277B8C4085F89CCDD79126B37BC71D268F941DA85ACFC199F + C4443918868E157CE37B797F396EA9FF4C151A1A2D28CEF6FCFE104D0D43E3B9 + 5A8164BFC91814C9F4F5C665AC02088F9D5F2243ADA894E8C1FE3572E6955A34 + EA34A2D4AFF234B806280FEDE49ACF4428E36438F91F426DDD3B6FDBE643E1EE + 4A1E1876E52B86BB7FF11632F00F11EA82EBF429DD8FEB8886287FEBF97ED721 + 8365EBCCA6970FE8C6BE47ACEE2C7DBCF7629C0584B1AFBF1439998955B5773B + 9294E8CBC957D10850292F7EF4625A85240F090074EB124848320D45CE1FA58A + 23E57271EF65A400A774104BD67CEF074388112392F9EDC45846F011626CDFE1 + 820FAB1934EBDD2D0C92C9F4C340B2EB9AA00FEB0E8423CD1BB90449A4446232 + 0E628ADDD290976D6759DD21BB2B7DC0E57EB481C996BF5FE8DE0C918BA89D27 + CC98028F055E58CAFB79C27AC3E4159E95F437634B50C18866C6D2B045E73689 + 5295172154734B9F3733AF3C1832F80C818FBC56FB06317214B10920BEC6381C + 42E311DDFF30419E9B1D5B6DA9D8D15CD0A2FF4C89D236007E2480C6718A154C + A1B97EAF7BB868E93BACCB7D6CCC9B11E1B7B26950649D1978DA0EF47FC6B445 + 0138447ABAD6D735E3C7C7954FFB688BD33ECAA65843A0EB03E369C681104A1B + 73A115256A4A8B45EF5FBED0DE52A362D3AE6EBEDCD5BB0DFE2075A6F35CFC6C + A9593E5B1D03B5E418C3234330E598773DE5C5A2FF9DD632502DB83EB683E6F8 + 739EA9F00D520772DC93E11CF7B777C283BEEE49F35982D498932EA323C6962D + 72C11CCF6EA9E6DBF5BDA081A480FC70C1435F4011EBD552BE4033A83DF0F520 + FAC6396E109D07772CC03F1E70F39D93A6E15C93F2ACA755164D13A15312D2F5 + 6E640980754B70A98527C0DA6BA95A2B2E597F97AC3D3E46A53071C6096A4320 + 6D5F9D3D82F8E01DA3DC004C0E98A40907F4975E328D24A1F84B6B0E832165BC + 27C0DD2C9DDA755BE1F763D6C1F48235654448A1DE31E6EC5E123C61C386F963 + 7CE6FFFE7EBCBB7BD0C60922D1201A4489557CA0EECFD701EB5F82DD34C692B7 + 1B43729E7D988DC7C4ADBD6D7D0E3F20EAB11F62AD26BF9387FD7D1677387D72 + 362551EBB6F9BED4B9CAE273BB745BEAD53BD9E8BF7E8C4570AE4E2D9F85A57E + 4AF2BC5A5B65E94EE15C0703C3C0D6F85989E43AC48FF2373228893A34555714 + 74AED1A59DDA3392F79154645C2738121004A5F51199A099309B3566502BDEE5 + 597642B51A42EA885AE978AC518C867EA3585BB70AB422010EC8E2474B90C7BB + B7ADE8678896E98E1CCBFAE5FD1503BB88256596475EA185CCF8332962484563 + ED73CB7E62CD19871B6964CDBDFA76D354685AA178755BB72D666E8EB71D48A8 + EE96C2CFB591C38E64A5388F655B796CCA6B389574E1B2AE26B3F706ACAFB8C1 + 3F1F338C185640691C7C29CA7561958A010CC79547A6FB0ACB0CF1F94ED287D3 + C06F115203B6F2FEF8681246C773EA615521F28ED547F265A75FE435A458F94C + C9101E86363EE42C1C86D6A522E24B2D953921105034FF88B77635A9A53AFE14 + 5E5A792B641994FF8CA591D28F6D771A8AC02AED857C1A3EE97C863C725127A1 + 7E3A5479BDB59F1D69E0199545D574547EAE000701847A6887E4E9BFC45BA798 + DC651A2E683750DA07F37F6F565D43467F6A7FDE3ABC368B55C5692184364450 + D1617DFD760C52E4BB4F7553358584CA6BAA003EF4104AB33659251D165171CC + 72B4A07B8449D2F1379ED1667321F146A1EBC6D29B1069D3B1CC157B77309045 + 147965C7BAC47D4A81B2876CF5AF45C3A871A8B1471BF27343BD3584949D3191 + 5DA546BCC17B1F2D1D0873D418943D58AEC8FE70F1ABDBD0F1FA9BFD00FE1E57 + 5CAF0D2ABDF595EBACABEED188BA353218A15EF30C8AB826F0284FE48DACAF72 + 2A9FE10D839FBED4730C15B961440DEFE0A051D79A130B8CE848F252339095AB + F01B84ED84B9C33A8D57E6A8AFF52478C47E4D1C4989CF294A6416D86E6C3FDC + F857ED174387A143FB7684B99D7336422ADC86B25463796B5631AE29DE7AE904 + FDB1CF06D408AB33068AB1127BEEEF07C2F9F8AE688EE22270EC315C21B08FC7 + 0488B8CABEAFE615D65149FE739DB818C629F02F2F370510AB18518B5CBD5A24 + DA1E4110247CB979F3415E5E23018BFE205CFE327D69C65CD4915C37A93F563C + 8A55EBA0CB67B53E669B3F85A2DE0C4388C71B837AE7234F7A6B4BDD203FFEF6 + 2BE6174DB04C23A17C11C7EB9170BA211BFF8535DD1384C1ACA787041EEB8C1A + 78E35748CE28FC64DE6A8A5449DF32144D7C7CD734AAB5A8B3DC81E4444EEBAF + D76B0D9118117E49EF5693044074333CD1AB59A8E872E1C60B71DF6200641162 + EE88D118A99175B5A8FC25D6E2CA7BF3184FDD8EB7AD0AD05E0A1A7213341037 + A04AAF07068342B3E0101C6BF913A373F10EFB8772EA6F61EB61DB66EFFBBAF3 + F7D9DCF3D16B7F6DB930F15BD6C52B55549E4E85FD10124D0870BD4A85A153FD + 30455ABB0C887F2A6512CCE4001CCDDF32BCEB8D0804BF127BCE9C896F74638A + DD77937098A6ABA8120E429B0FDC3446774FE98CA39F26051A48D5A5D69C2D34 + BA89C0F473A49C4FA87F02B8231C4A15898CF2D2A1A073EEB1EF44B6D661F2E3 + 3852635B2FC3D10F4862C54A53605C8984CAA3BD1072C8BEA92BF3D671732F8E + B7D124BB0B566D0D8EB4566B693B09D6C64E951287DD36BA0D3DBD0721124728 + 14F109C8386E181E7E7A4F5839DD1B6B351E2D153D737B58422FDFB61D97749A + 413B0BA35F672D40F522D4E1FBFC3026BF7E223662A8274247DE0584AFEDF7EE + A2ECC15FFED15C9FB09BF677644589A1BA42DB16D4E03773948681CAB3237BFA + 2EC3C188AF20DE494B301884033EB950798FD09C30E6A212027A022ECD9E68A6 + 423A6E1D56842A78ED975103C57209E7290B2EF22C8AD0473CDCFE9A408DF458 + 56EB44C47FC63BD4A5E15D67A6A6D6A876412B0030AABB665663CFBA648FDFF1 + D084CD17285466DAB595493FC24AE2D25E2C565EBCD358199F7D00CC29067D3C + 8DF926566FB71E75C4717414D4DD18E529DC5BF69A5F2D48456D591E28FF1FB1 + 8986EDD0CCB67DEF21B331D1BF69D2BE0184389ADE51F624F86A5934CD9EB8C3 + B8ACC69AE36B15FCE1F3A13625A2C9D6AE251F201C17F0E6C151287E00AF669D + E9794A6632152231B2ADDE7034DADFEEB07E5B9978D4CEF20162D1761B7CF821 + B0AF7CFAEE9152CC436F86AFFE10073D53EF2930E0EEED1AB15CBCA96592EA4E + 264CADF2B8D72944BA809AE642FA48C75FCE32A99505558AAAC433ED666F8ED2 + 745B631891F4EA7D7F2AB7D2B62ACC406B9ACFBD66819140F6CB30F082CD370A + 9DF99DCB5F6B2E1F6493D64792959434A301F60C7FA183F446062DAECF994FAF + D4166C75E27CE3BBC59C0AD63725700F036DF8CD8CF3C130CA1A8F92E2A448D5 + 2529E823989FF1EFB1A611117EB69FD0FC6CE866F72AE32827391B37D5B4EF8E + 066E8A48B18CF8BAE8A39F843EB489375F7FB57782FA748A4643DA23100B0C0B + 87E0477C9C72FBC0043DA1F05894187305AF0D95C92A974CEBD3115740F0C7BE + 4B73FAE2C074DDA3457A0A172D611A2DC71BA727A2996A65242DDF663955E248 + 391B6916C8F267F5AD2716F89D3AFE4E0803EDE0514241FE6000AE7423CD5D8D + 93D6C987E6A8E5B7BF29A62F1126FD549FB36739F372B012D11A3328ECA8CB54 + 26ABD0B888B0F7FD763DF0E59D0AE073838FA27874B24397AD8307EC7D3E932C + 75D0A7CA230F748C66EEB68B75C990DD3AB614FAEEC161ECCB6F7683DB928E1C + 9CD82D6702C9F1AD6BA6026AEAD5F4261C5715BA4D5C28DF284391811ED71BA8 + 21B58E3D06AC5FC0DE72EC6F20A62B653F6D176362A0233D4601B28E4B8456CD + 0AF5D6B10F59C5744A3C1345DAB7AAD8F11F7ADAF13B6C7BA7DE3A7414B53001 + 291DA33151BE26EEDDABFAA12132C41355DC6445568CDF97B1C2BB389113F7CC + B4BF68F1F16F042CBCDC9B5ABB100F0FBED2FEC0B1486AE4C9C69E7C4E63E612 + B6A3AC4F013F73F9E5FFF5409FC84B1035F899C900B424B80E9EA17B0C7C063B + 9ACB47F0733D56C3492D10D9AE4A8D697E59C8A3DE054DA91ED7F46668C14438 + C6938539B5D391B7E917EFC07E48B49843B53981357CA17910E6D4D20A87F89C + 2A693392CB450C85F50F33F5A5D897BF0924AAB5C12CFD0E0EC67D2AD138CCF2 + E2E34123565377BB07C71FB78FC1144547331C21D8A0FCF3F4C616E38B16B90A + 0DA07295F9BCC6A64FE117010E489EE3B769760245E7B07085FD09FD45AD88A4 + 12D08F8C69109FFA84A0C75BD3A299D8C81C9E8F193B0D4B3D84D571AE52716E + 901F3D9553C4C53D99AA90A5B57F47120D7BB57F8DA110E49DFC7E3FDAD97068 + D0BB47532EEBA64E1A8E92BD258E4D6B3570B0799FC2BD96F12E6DDCB71A4A41 + D7D0DE5CC5BE1B3985E44E8E19F267FC6D3BBDA933CF70079B07B27FE064CBFF + 0B8EC4A4ED34A9AA89FFDCC5B1985476261625EAE6DA5BCD20883B5957E49779 + EA06094584EEB0C3BE7535A5CD151A1C5155C5A57582C010062BDAB03B9E7E77 + 4DA0591B0A714E55D074955E088A720547D7675CD1DC7B6313DE093271EEA6C9 + 8F3F8C2E09B83E147EB365B32B357406B49408D7BD0659CE6D0984F6C91AA46A + 2823F62943F9C1122973230976D65C578ACDEB4A48D6A444E8BF8380D930E720 + BA090B94F0BE901AF3819567D6B89C483E1AF37045D674A9959C1FE8B4708B61 + C93AF4E54213CBE4E19A116642996F40FB9FB328DE68EB78225D1CE8785424D8 + 6F858C22EE039DAE09A3122E60B8604A72291271C6A3294E1E2CE078A1030567 + 1834C3CD4AB757B01E8C354FA0D44364F8097BBC140EAB79819F9839AB2B4726 + D181E144F4FCFF86F1735C32EEF99CEC3068D8263A996F919F7DDDEDBC1A4BE4 + C0C10A0A52FB745A252D0780AC5278BB526B59BAC6326E1E9B0A2614E9F45576 + D63D4E294FD548D9C392033CF33F6D8676435DA696DCC0E392E8061926BCFA05 + F252D814E047A64519B349D311E86567FDA9E9AC2B130D945D147F1103BFA908 + 1AC884DC39D0A26A06932D82A63B1088BB8B6984EDFEEC7FD3DD9F3116FA2379 + C8B47119EA5196BC803D6AEA523C0A37982C93FC831B74B034B7437683A5039A + 24D0C4DFD5AED1B7F5F02D083F650606119EB1F2E9DF681D6DF33D7BD875DED3 + E677A58AF6F88CB6FC4B421FD195A9A17924DEEC5E9AD3F14EFD8B8563418CF4 + 0A4D9FAA67F553050F47EACF285E76CB7276A6B7DDD92EDD29040CE1AAADDA65 + 6FC4906D0CD81923EDE3D7732AAAFFB07F37DB9D08F9DD3BFA3FE4E5E12F56D5 + 8558CF915B74BA1BCE141AC61549D1DCE1FC7105377DBA653CBA631B05373D3A + EFFC0857BF5B2CCB8BEE11D799C646BE6011F6BB3D7263971341B20722C78298 + E78E5261D2010727DD400A39008B941F4BACAF8C10C0E39094EEA87D46B768E2 + 0EBCF8C487CBDBE8E50C34BAAB62AA64AF247752B744F289CC10A9B175ABA103 + C3F281E9AA244277017F55926B2311FCD2FA5DE230260CC28C28656A85299D2F + E26932EE28469314C76686630FC72281D0B99C81C09E4162EF5BE16E134C3F6A + 0F301663E2B09D6427A2CA0337769DB5AD474DDF4B66167B6C1B6F75E301E2DA + 30F42D5B8DF67BA1FC0C1333DC0B31D20B2FF104B3F9415F07D220050E5B40AF + 6612CC88B0A550FB1ECE8387A79F75057E3D2A3C3B5ED6FF533BDC35D58800E6 + 1E7010F86C1C5BC28B1DB17667A015921AC32B970EC966B0B437A67346B83349 + 2A13A9A5642CD29B0754F3A194BE43C3F092317B4EE352151C30CFDD4BA3B032 + C61ABE629BDFCC383F7D4A4A1F97781D1C143A8AC1CE955590ED436AD50EDD80 + B0F7CBC2192E5165C193DC17 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /IOYFDP+CMBX12 findfont /Encoding get + dup 12 /fi put + dup 46 /period put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 65 /A put + dup 67 /C put + dup 69 /E put + dup 70 /F put + dup 73 /I put + dup 76 /L put + dup 80 /P put + dup 82 /R put + dup 83 /S put + dup 87 /W 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 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 118 /v put + dup 119 /w put + dup 120 /x put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/ff + /fi/fl/ffi/ffl/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/suppress/exclam/quotedblright/numbersign + /dollar/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /exclamdown/equal/questiondown/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/endash/emdash/hungarumlaut + /tilde/dieresis/suppress/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /ff/fi/fl/ffi/ffl/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/suppress/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N71/IOYFDP+CMBX12 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font ERZGXP+CMMI10 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.100) def + /FullName (CMMI10) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle -14.0400085 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /ERZGXP+CMMI10 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -32 -250 1048 750 } def + /XUID [6 5087385 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C80C0DC39DD6133A821B832A2E5715CD8DD3C7DDBB03FB0392FE0 + DD1B381E192CDDE6EC064726FE07A46ABAE08BFAA613B8A042D015EE7CE253E8 + 08727F73BCBC9B99270D557D06018142C27A7ED95D3AA666CC36583600E54C19 + 78353FB232E97BBD2C7677F7F482F9C427DA43966CF504999C21554CED6AFF26 + 2AADE446B0B09A001F7C1FDA17CC82E9DF8448F332E1E3C4EC6BDEE9A21F01A4 + 6957355A5D4161A2F21791D8BE95C7AD9D9855D8A3FDEC54DDC9CED857684258 + 0D8B1A7F8E4A0E8E70030BB0894D8BB181E02EC730C1C608F6F8C3DCB6396754 + 71C8098A84ECE5355044359C7AEC8FC864D315DA2F2DD2555CFB93222D149848 + A6B81DADB8DC2F573CBC0EC59E60E22D9648838FF0D1B51BE192858658E17CD7 + 435ECD414A961FAF38EC8305ACB95DD22D718BC9D52458651DCB4C745118E934 + 150F5359D098F5B1CF66AE559AD205A0B229705AA59928B998158D7F69E872BF + 5E25F60B1A37EA6313495EB4AC215F568FA93336508E6DA2378C2E16902B03DA + 28C776EFFC0E878833EF71EE519BD0AB1903A1C977FC7CA6FDACB31D317E1805 + 269B3D498010A8EB034C8E617DFC3DC42A22DEB72DE2A66A69245E40ECF954A6 + A5DB301688ADA8174B76D523290F82B936E795468F37EB34A675E25C0B8F0993 + 2A045C7A54F134F326859B3B1E7D9F28EC88A25180DCFDDE33EC37BF869F39BC + 7FC992B29322B03214B078BCAC929875C59C3F57A97074BFE8D49D9F8163DD31 + B3AD333364B573135187D26A8EBF04B025AF5CB9C32AFF88FE48D8A823D8B475 + B50A095BD4030CC47F07C088245150F99F101C141C9F878D17363731FEC3C77B + 8057DB509162011C8BE93E2C2CDB23F38FD7914BA42CBE20FE92BA08F688049C + 1F1B0C8F1555E88AE77D252E436E0DF418F4585F37C83B08D3F1F04C99F38773 + F564173A92E9B93AC30B30997FC321E88E3504D16DBC674F14B3BE50B9B26F93 + CD32403684FDB6ABE39577C0107889D2F572C4281BEB7197CB2DF3954C460C35 + EB757DEB84FA693D8ED0C2D10996B2D96F175150775447D7CF1EC86D2C9536C1 + B8208547AC119EE22D0E646311C85F9A4EE1A524C84F6DDFE38C297E4E5B58F4 + 6C360700E13227C5C35E2921C2BCD566EF7A68884A81F5C55BAFC8C9263831F4 + 4603505F5CEBE22D3739935229A8E67490BC5EEC023B4A83261797177309F47A + A7FC9350329AA9E3B7BD590DED648213FB3B43B64C7ADE66323FCC3345AC21FF + C5C7E1D05DF53A540B6454566BA66097F23848761A33D335DF121899EF7ECDA6 + 4FDD65E19F5BDB211026403E86A96F548534E816E8E69A39AB1FC57CA05D6515 + 6308BC204599DEAE0429FA7C5B631EB67D955761540F30E351503DFFB1FAAE4E + 1897C500AC7A323E765B8FFACF159CC587033EA8982F85D5475F419D425CFE78 + 79B7CB0D803D8F72A00978B1988247956CBEA3D6ED719223C3F06C8FCD3F3433 + 05D062DEC4852FA3319F1B88652CB308ECC22F25EE4B3D8F637CAED07BA6FEA6 + 3C31FE7FB9FD9AB82585A176268D68F8DC25EB3ED49D9D261A698AB4BAF85A3A + 8DFBCDF689B50856D1B034559FB14D5B72C2892E7D0A9836DEB52565E1C2005F + 4D5676E7C4A159E8106A35963A44256E2EE5C11A4748D7B2AC7AB79C6008CB0B + 150AF708DB868C73A84818DCCB08DC3BE503C8AF13F80817EE1C5BAF3197C90C + 883A693F54A216478E9FFF087F6B16EED5721864E81DB59E7D95D4D98DCEA15D + DE34D121F6A8D3F7D1528C26653401D6EAEB6B51562D70439FF6711EDA3E5774 + 0D6399DED4C961AE4AC2173D8D43700211BB897ABFAC1EB8702FDE10793EC5ED + A330577263C1BC00153536C55603398792A843F3C5BC19750F41ADC3DB975396 + B7E900E13E0C3323FF8BAC576BBD42A8BF874C6A8899AB244B2012D298887F60 + 43B9021248BF4D60442CB05DDE372127801F0DC408B1560FFFADFBEB86604255 + 2529862CA556C287D39D0B997A3DAA46C18593559625BC51168884AF72421EFF + 69F23042C07D5A256AE69B78864CA00EBDEC47580755FCDC4DABF5A6AC97AC25 + 49A94A2C4901D3F0500625E094E088C84904C52A8682CD5E0756AE61D7C516FA + DF4655B57F7C238389851DC1A410D7D25C9A22E55AC4B9816EF537E6F9B37A3D + A30B3D1CC518E3297D41C3E0CD29F55EDCA1D1C209334CB780D60959E26BDDE7 + 06478ECE4147D8AB877F710A5DE35770159E616DEC46BF139B7F3B43A299BC76 + D0092D533DD180618DE1C0B055220402DA5CA62FF5BFA92836B1BC5496C21840 + 183C72B35CC3E545848CA2E370522D840C8C6A78DD5788B14D121640D0B0D549 + D6ACED1E0D19C139600E65FCB0427AE0E970B4EA4644853E62E6DFC5D804DF80 + 322A33CE1D85F7A5C38C4964B29B5D12CB646F0362092C00D7D64BC77C33FF15 + AF5F4738639D359FBDF8873027D40D315A42473BA9B72354CF7D1BB59084D6BC + 73D879D622DA5B0B658EE68EBBA49C63CBD41078677B0969C7431DFD1F4ADB5C + BAF89E54F37C42A7A0F0D0148026A10C7A861D60C5F460C0E0F02AFAF47BDCF0 + 6F05176BB4FF292E6C084593E9C816947546F3AB25155274E5269DD095BD60DF + B5A947EB9CEBC2DF374CAB90049E02048136ACACB9A9356C0FF8325749B1C126 + 4907BFAD6CC580219264D67918483722D6CA18BF0B5ACB2128C6D2224BC96A33 + ED5067070EA8EBF7D79A9FC0773E248828E07C19556FE58F6F4E6949ED910B63 + 36C44F22F4A623A8078B07A68BA298E691744EDAB09C38E00584A308EACAA95F + 1DAF10CA083CED1DC1AF646E2E2B599ED05AB2C8E1BC4EDB0AD0507A589CEFB8 + 5D2BFE970BCD0E5AE42EE5D0571EFAC77FBF780DF4CE21A12334C6BE80EFBE1C + 643603B32F7727A685D18BCE2D322AD2783497F6A043E062B212AE660A8C88F4 + 945EAAD8BA5D74EE4F5BD903A049F626258E457FE148F93CFD3E91E67A0C9E39 + 8D2C103D65978B9F86F7FD10504BAE68422B39F0245C9579E5105AD441D5164A + 514431A1317970EFBDCEE595983828BBE75C89E41749BD9E8DC650A4950750F9 + D898BB6198BF35A344F3ADE17349C6A7846CAFDE77B835CDA354C4063E73C407 + CDD51CD84C4C6A3597476CD480B999B4EEB52D6478FD81CAA591BE7601FD2029 + F90F373A841418012AF63B6BB8FF9AC72759EE6902334B02759C5C61A3D12E93 + E8CBE38972024A4FB9CFBA2AB31256B7A2F081370655FE20E6660F34AAEED064 + 54AB7333B87F733506F483A852104FD8FDCF970CAB9C885F2F5EB6C71E5B3876 + E6464DE3EC3492F701973EAC9E573768AFDEE740F1EE37270306A54C6662E002 + 8EEE726E1FC57D13ADE71D5963D1161A2675EAD995D5D4ED72A05FFFBEEE68F8 + FD106DC998BEEA8729754478AC75AE333E6906B5ABB53977D766887808A63203 + 6D3F9297323569ADD07E92D9334B775CA339834A3AA8B4F239635EBEF60A74B6 + 7DFAFE37394D8A257B5B327D9DA01954B97A28E36F4F0C424D24D7CD9AF64BBA + EC7A5A523796AEEEACB8988A798402EFF69D765BD1C6B4EEF37A254EB1AC33CA + 30DD5BA83147120473F3F884AA8944DA077D08BAF918874C1E084837AA9D919D + 349BF77C09A661252DBAA40030E88377DB08D77350CDF72EA98DAE4FAD233D81 + 790545F6F6362A555CDAA50EBF33C92AFC2EF0AFDC09D6056E14D549C1DCC887 + F385C698941D8FD0EA2C4C43611BFF7E221146556B0116CBF131CA99A81BCB5F + AABA74FD3B796C0943BEAF84E8A514BC4F825607141BA1D1CB3A2EF7B0C92E20 + 3D55FCB2B6482622E4A2D4858A29D14BB850E2C5CE41C635F36ECF78080A87D0 + 2779ED4FFA3CB617D8B6C9A023E1D2A08AEECF603E838F41003EA03356E6793F + 50A08F9BF468225611DF948D06F8B3D65ACAA886686F2AA9C46033632784FEEA + B39B7FF46E8B47B0AA1D21D7A97B4B549E87468FE8E0879DA97F8560160E6FAD + E8D2FE1E7B2294054C58D1A05957CAC77BB0525F640DAE07BC557E8A34975F11 + 3F5973FED36F75BFFA4CC882D88E027A72A6AA6B37D872E07E41D9B840155AFF + E49A97F0E4F46E7CC9097EF324207187A52205ED3A4B6191E88EA00DCF5CD3E7 + AE1BA24F1E9EF061C972B90607223581D2580DABDEADA085E3C4E7039258C1F7 + 711C3FDF441101F6DFED4D6AA38F40A56B3F1681F7C7D17B411C172695CE384C + E3D8743A5B6B070197235A01603C0FE71995BF87A969FB8DD12D674C49F8E345 + 3A1AAB07757FB25E50E74BC7F023BCE9A88159A65B892607093646D231C7C281 + 8215DF2DE72A41B723F36DEF12C202BE0312B17B1B2A1EFB60E8DB56D0F8203B + BBAEB33FA393E50F75A9A0F8201969E2A32F8CA22000097B6049620B06F16C0E + A3AD384A9551CF96E42F781797E45B380EBD04A952C7644C6FDF93CA2CE61ADB + 192AC27AB6E1DA12FD2A661EABE9DBD7CF2791CC0633E9D488556F1B5C92D454 + 69D5E65933D3A9A02192B9034F71924E6678F4FAEAF0A4A28CD9474CD965D6FA + 1B322870B7402D6A6A26B73BE81696005C1ADFBB7953C6203871DE2D3051C4F3 + FE4276740BCB8E0A2CC8FDB9CB6222DC67D1F5D158536201A1D21E08BF44F0A3 + 3E4A3374689936E47D925C498FC6DDEEB55A54BF3B8A1D797783C28F43C4C3A0 + 6B16F7129925416F151792D039F727352F9706445E86AD135647680D8C7DB023 + 54FE943B12C0053D8E95A49F308959B12936D714FB52784C2A472C3736AFD6CC + FEB3D87732E1F01990ABBED221945B164CEAD03D2085E9FB6427DD7712CEB1A7 + 12A5F993540F1FE28E90751FBBE79F697C86EB47D10BEEA531840F2AF3F8E2F6 + C3812846495C23900E04C594314027EE19D50963950E05971C278C3C69FA452E + 063755CB296CB82AB72B42DF5B399D29E604BE2155EC6D3855C2223C9FCDE422 + 796A359FFE84BAB952CE87345524B7A70DD9B78E07ED8910EADED9F9039B40F8 + E85BFF37295EC5DC515A4CA1FC08B10067AC230BE20A283DC4F7D2AA50541053 + F6C400F399CD321C339005D5D7B1CE554CCFE21A9A5491BD511A52F490BEBEFA + CD11DEFE87166A30068C1E058AE481EFD876C6A894CCAFCE07EBC208960C0DD1 + BEEC78A0D74C130F678FE98656999051A7FEF3393FB08007404BCBC1C9B37633 + 901E1857AC4F9C2DBBB1E0C4A38C2B9E34E567AF4DA67A4984125A1A5CCDE682 + 97EEDA6EF8CEF4511F443D16667E316EBFA7821CE402EFA614F9B9FD61473E97 + 9CE5608C9C06FC9140EBFDC8926AB59CF80A15A154A0116A479BE155954ABDCA + B921739B0B39E85939B17F1016610671E6A8A5D62ED6BECAC6FC4E26BB03A1BA + A9AA297B055F274F9EFDF0D5446FF682DCBE2040415E021EB16DF74B5A3A2A56 + 1A794E09A5C624AE7E05200E3F9A873C460F1B477E830CF740B03E40E5318C70 + FF1AFFDD9D473666B70F5541675195C403B704353F7B1B83C704302A3CD98DEA + 9F0739B1A54007BEE390B1C767C746FD5444E3772362BBAB570B8BCEDF9B0357 + 0E4CEC95E8A8BFBE332BE3349E8814DA2842133CEA53C1B78E7F3B6F8FA49086 + 546537F52FD781ABCAD87715D62D205486BAECEBA9E7EC516943C5349A243C8D + 81E28B6708BF0F66B1B4C267434F6ACE18FB3CB4F7FB491BAE70D6A68243BD79 + 8DCA02F00E55822C448D2849666DEB23EB37EB265FB5CD66D4F21AE170BBF87B + 97A6C88AB6953C93CDFCF130596E0EABF12B5EEB4718CF3D61DB35F049485F61 + D6E25D2C9863A130DF703007DDFF5A0DB2C9035BE3FB38753598DC0270948C66 + 3ECD2BF2701D0BD246CC982D64430F626149F9509F5F589B6FF417F38193BF11 + C879E688F1F41FFF9AA3F66CD15498271659BFB6AB668F3D3D3024DE22B4928C + 52D259E01AA9491337FBEFFA36CFDA0FF0E1CADCE9A7E81F62886C611BA7FBDD + 43AA39CF76D67ACC271B5D90802DE2F3A374111959CC304D5D1F8F8E7DA667DD + AFCE14B875EF601072239B01AC6DED7EB53DFD0E6AAD25598AEAD02120FD2715 + 0467B180F4D23BA3EA7A9230FB0919934E9233BF96E64A3366C8BE52C8996009 + 0FFD97ACE5A34BCDCC1B768F92AEAEC3C3CB0E638C3F1900E2F5EE1C42FC63C8 + 4BAFD6DDE51D43500A1F3DD073F50A444DE0276F00679A61F66B8AD4FF0E49BD + 7666B5493997C238D620BCF48A457482112B9601C65E742401641EBC0E136D67 + 33D5C8288A04E135F60400DB07689F0C9F7A4677E43361A63C094D3049F30DD1 + F921444312FBC534B6062F3660D8E7B35D90DA074085C8AD1BC38F3F599C5356 + DB62E849B87FEEC3DEA18436E4CF5C2D2840BB6D6354294721A8FCF336FB29BD + C266E37B78689DA61C3FEC4F9631011C8A2EEE4138BC4D5D44394FED2BBCA329 + CD702EA934C93935670BF6E38965F7C12E54C6B8D5AAA5739EC440E91E5648BF + 27E2A6659E8D80D250199DCCC89D3E2C276D5A7A5D7F7FE910940CEC6232389F + 8AA1258287710DFB180C79EA31E4ED2985B578DF260C59DC5E68CA2206EB10C1 + 0422609F39B91A1D86300504700613A253F94532CF817A340766C88A1D9BAC22 + 9EF605B12FE7435821A7AAAF8F262ACBBE6590926E5EA7C67057A70CA8FE7DD8 + 7339013ABD9A3DF69A8B8253F542B5BE3CF26060E2148A42E9EBF37DE2919BC9 + 432A75F7CAF434A54D50CECC7EC40BD252AD1537A45D6A7123D44994920D70E8 + 9AEABD4EE824AB9CB01851532DAF2B46C322053AF725B3CB4A44232D1387DDA0 + 8D9F19108F90443037A921D26F6051CFFA69FEF13B84B358A868EEB1A9E1FE33 + 491771C17EADE5ECACF0F1AAE9EE78B339F3ABC5AE1EDF68A4E5E50CE097368E + F9ED45B527C6B1FAD699FE38813AF8D92D9AD33FBE5873B22A1860AC4A14ECC4 + 8809771D5E2DD9BFA2354D135A7759E433060335734B2275BA0C2975A2CB8AA7 + 7ACF126B2751D28B9F59AE0363461DA23A426A58A0053108EEA79E07A10B80FE + BD096099401B9DF87C32762A11A6CD4EB5DC0FB7B4F3B064CDED155ADE91FCA7 + BFF3337BBAE22D88190D7B9A55259367EBF7F405A78B + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /ERZGXP+CMMI10 findfont /Encoding get + dup 30 /phi put + dup 58 /period put + dup 59 /comma put + dup 65 /A put + dup 66 /B put + dup 67 /C put + dup 68 /D put + dup 69 /E put + dup 73 /I put + dup 74 /J put + dup 76 /L put + dup 78 /N put + dup 79 /O put + dup 82 /R put + dup 83 /S put + dup 84 /T put + dup 86 /V put + dup 105 /i put + dup 106 /j put + dup 120 /x put + dup 121 /y put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/alpha + /beta/gamma/delta/epsilon1/zeta/eta + /theta/iota/kappa/lambda/mu/nu + /xi/pi/rho/sigma/tau/upsilon + /phi/chi/psi/omega/epsilon/theta1 + /pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf + /arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft + /zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle + /sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma + /less/slash/greater/star/partialdiff/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/flat/natural/sharp/slurbelow/slurabove + /lscript/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/dotlessi/dotlessj/weierstrass + /vector/tie/psi/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /alpha/beta/gamma/delta/epsilon1/zeta + /eta/theta/iota/kappa/lambda/mu + /nu/xi/pi/rho/sigma/tau + /upsilon/phi/chi/psi/tie/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N95/ERZGXP+CMMI10 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font IWYHIO+CMSY10 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.0) def + /FullName (CMSY10) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle -14.0350036 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /IWYHIO+CMSY10 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -29 -960 1116 775 } def + /XUID [6 5000820 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C80C0DC39DD6133A821B832A28C5E08CEE6416DE4AEF5349B075E + FACA5CF9FAFC5D181F0E28DA28D0066C8C517A9FA3BA8CFD79F6BF8E6D413BB6 + CD114D039B32EC438B5D98C00EFDE01390A5581181E4714914A4A965558C7657 + CDBC51A5E6FD2A7C4423E8381AA2258278EC813F0C9CB8921E7D9EA9E6A7E196 + CE393F94AD1124BA2D992E9A350C60F76FD1F90489C5173303B3677908F1E3CD + 990ADD159E88D50400AFF196E850B44AB1C183C8211D52E51A1851961AAE7B31 + 66B5B72652706B29569A85FA75D6D2A88EFEDB1F56018E503A02835BE3E89BB2 + 631203116C4A564B03178015522FA0E8E51AEF0508158C3E2C500EBFE7403B52 + 2BC73DAD0447AF0D0DBB9ED89FAB02EB50D9303229027278B5E9BDD0F37DABAD + F82B2B87C4CCAF1E56E74989162538E595598372067BD858A3AF2FBC16603658 + CDAB7BCC8C444DB95ED4C0B180B939473A89619057261A1378EB275A4157E3FF + 9DA4343A9D1C632BCD2E96ABDD1A5100D76D17402AFB9FA3387D5465D25E16E0 + B4E15E2BE6996B8605D732B85367CAB3F59E3F934FB2BB526EADBC3048799B13 + 93C72C992C4F3F0B654550DB47B7F1C1D9ADE09C71711B102C7E7EBA881A082F + E40253C0B3572316A68299B9EC6F3108E35A5E51D98BB564AC499363BA0C4209 + E35C0B382A1784D5591B6586D0276709C2988F281141E117B6E344F6C89F314A + 58DC641399F55227E0AFCEDFD6B2770C6E9AB6440D0C8A89096A5A4C21CCFAE6 + EBEE6A6C3E11A293CE94A7928C73F46D0C4EDE7EA83087D3E59C8BF59AE380C7 + E66CC43544300898E3DEE80C7E690A173568ACB6C753CAEB09E05E9536301CE2 + CD6921DA60C52DC7B20ACD80C6B32C25E107740041BB122BD1220AB6C3C39662 + B3BB7BA06F68172643AD27C85533086F1C6127FBDFCD9F61BE40AA54052D2C5F + 77801E6A3A55EAE3D9A9FA3B7F2952AFDED9E9449DAFFE84F1453FF8842E0406 + D0770CABBEEF7D96CB43C338A418DC61D23514557D69141E25F2176B4420A581 + 361D93794F5D8F8423AECE259D1ED6C9087A0AA4FACFD7E00F96FEC932963F50 + FBDECBA46C31B0E86B83AE4CDBAC50E6BA0EED5D46CFFE36549A7CF68E11D969 + 6FF33F338E7C780F342150A558D4106604494C4A5455C3B6750E8159A16286E4 + F4BE29F60C0E657450FEB629407846C819D4B94387B6D995755EE4DAC7D8D433 + 72A064365412539F85D70868253046800D15257BFDD355E2F49226C32440BC1B + 63748F70789C376B1F3B6626DAB044A6F73789EB338FA8FFC0CCDEA33889391B + 296A71D1C3AD1194345E5BB5C1D175E99E76745B5A2CF3FA8B0D2E5B64AE98C2 + 65138999A6C93AC5382867772AA02C80AB50119315245E5B76E3DC05A5264937 + 88A7A0AC96C78AD9783A7F2314B424AE248D70A65FD51C588BA0DBC345581057 + E90D9A28819319FDDD56FFB62DF2FAF965F1967136ABC1A1B839301056AA6053 + 1EB7484E3A2C623DD5CEC224DC13B553A85B665753401503970505F14099559A + EC767361429C5E7CFBA4218A96A25E458178195D8541F6BC8E6AF55627 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /IWYHIO+CMSY10 findfont /Encoding get + dup 15 /bullet put + dup 20 /lessequal put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /minus/periodcentered/multiply/asteriskmath/divide/diamondmath + /plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide + /circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence + /reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal + /similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch + /precedes/follows/arrowleft/arrowright/arrowup/arrowdown + /arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright + /arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional + /prime/infinity/element/owner/triangle/triangleinv + /negationslash/mapsto/universal/existential/logicalnot/emptyset + /Rfractur/Ifractur/latticetop/perpendicular/aleph/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/union/intersection/unionmulti/logicaland/logicalor + /turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright + /braceleft/braceright/angbracketleft/angbracketright/bar/bardbl + /arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct + /nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal + /section/dagger/daggerdbl/paragraph/club/diamond + /heart/spade/arrowleft/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/minus + /periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus + /minusplus/circleplus/circleminus/.notdef/.notdef/circlemultiply + /circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic + /equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal + /followsequal/similar/approxequal/propersubset/propersuperset/lessmuch + /greatermuch/precedes/follows/arrowleft/spade/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N98/IWYHIO+CMSY10 -1 TZG + PDFVars/TermAll get exec end end + + %%EndSetup + %%Page: 1 1 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font GFDEKI+CMR12 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.0) def + /FullName (CMR12) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /GFDEKI+CMR12 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -34 -251 988 750 } def + /XUID [6 5000794 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC9EBBC6A5E + 2825687306A156DACC32FBF734087CDFC35B78DDA68032BCA38CA8E8A340AAA3 + 002A0E52D0B9162BC68AACFC0F14A1C933363A56EE460EB41CE8C2E9EDC509AB + 9E0462B9F619AD944F133AF072E5FD1625902963260181189070C40FB0D49A96 + 50D86FB0AA90098027455AC2354A299FC7BFC34B4F1162E5E9A3EFD80D6240B6 + 9378BB4F6F9C300E5EF7BC558969907B583EDD5DAF8C916767D08EB8CBACE45A + E97DE422B942588C7A9C988EA7DB9AFA8443B83DAA733B430DED23D044BC48DD + 41CD3329B44755813431C67F85476E9217601EB9EF09B04129D6D36A4E160797 + ED7B8D1252FDC2E5ABF623E7A353DF8D5F5FA85AE5AAFD93FBBA1F8E9034219E + 5BF783EE79B21166BB32FFF75BDCDA20AF252024B870F99C268D3445B086E16A + 0345B8AB573B1FDA7C6CD0ED9D1594C434FC369F1AD9D0A8A476FC3A3FD276FE + E147D2F89BC5AA5335B7ABAAF2424FA895571457683A554BB34D9C749193D018 + 0DEA50AB376ADE9FC43706378362F51A657375C9114841606D683B2F5E9A5472 + 35EF86B590A0E842B1E77C235F8FF3225E4DBB23F5F4AD69DE32D82D74FE95B5 + C7A54FE9FA19A4EA6EE1508B92BCB5FCA9F8F33D20FFD9C33BE26BF01354D746 + A3FE8677ABB1BF1220744E52A967C85F813CBF426BA15C43CFB1AF8D31FE42F5 + 233F6737A57F5DB2B6859F9A1E078E948B3F14EF6F9F0B66E1B371B1D19A7124 + 11BEDBAF1913F2A89D653322343AA837ACBC072AE9DBE9E16747FF190EB4F992 + 52F8EAEEA9624FD671B0116050CC34E106DC5D9D421C1B2556B93AA768FFE6D5 + C419F853289D255F05DDC5D951170477C4479A9A4F9FC5564134D8731CFCE40C + 5F17A30E0EA0E6A8A13B8B3C3726B1635CCD9EF3EE702B4B962E7741950E3F7E + CD983BF5F874CBA36FCE8D5CECF33DAA1C542D3740330FD9AFA5CB76A3070CAA + 78BE329241A42A3310DA59F4F4EBC7A89C1431EC3B04192012422D4084984D10 + F3C949D74F79A24AAB7D4C66FE29B17E7A90B425205E3313DD1535C15D465DE2 + F4D9046D1B58BAAA080EB8DDDB34C0478814D5AA520EB607F4E933E8325F3DA8 + 9152E186A9550A8A7AD421F2D2FD1A13D1CE7D1CD3603E39A1203ED0DAB9F7CD + D6D7CB226AD49C9B7E850D48D6D774AC863F9228ED01E0EEB35BCA1FF7E7520C + 258A76B1605871C3E43C5A3A8296224B6477A00B8EEE3484D7BD52B575E01252 + 9E7CAE1FBC063E0EF740120F4E798BEE055DE69571B3FA2DC65C9A3FF0196B63 + C58187F4B99749D8E6BC9BB534142C387DCDBF2ED16BD9BB1EED2AD3BAEEA587 + 35A7119B82FC65BB174811DF6751BA246131E468F85874C4690FF0B004FF11EF + F04C6A7F150A4F45D1F0D0DD1403572286328ADDE6940E056C1FD956636BD512 + E2EEA5FBDC51B421D294177B7B74A3548D29C32ED7178A627B4D1EBDB28C33C6 + 3D73B37E7B0FAAA45B88CC035A0D2A1391BE88C73AC5C021BD526F9F9FD67FAB + 9667A6D6D26A318DF1A5971F56292A6D70D7B48BB39C75D01973748565FC9550 + CCE1CA680BF4DAC1D0B74718B987EABEE38D6D53B1692B9ADD092E6936F56C7D + C87FB09A36C26EA7D929D9B4D28C9700C3118AD54601B60CDFBCE0D4E1DFCBE4 + E70D537629E4B6670BF3CE832772EBC5A8F75AE4717CF3A813449B2429D83087 + 309AAF496B08F576064875DC0D937695C6B25AAE22E2143B398423D798826C87 + 6C1DEE71649EEAD76BEA2FB2C8A8FFFC533E3D4EBC214FE79C2664D875952435 + FF6C79EC24526D014898BC28AE6DCF0A993DA49DCA92F6B2C5C456B5268693BA + A39B598B44B215F8A2E9346D162B98FCB5028783DCFDF6294674D4CCF8B457EE + 6D0548BAF4DE21D3234A22D747867C5345E463173947CF9DDBF2E3A4BEB0D62F + 3F4E69249CBE32DE0F71E6365E3B84366E8D63A31A60EEAEC88E7ED6F842651D + 956C7BA4C55E1A8CDC50D224C8FB4A4A91F2492825909EDF781697C2019A729F + F3EC6DE519F4D60E8FCED916937E755BFD1E3A0B12F337B22F58415453711D55 + BFD302272B51F8409DED6C36F446BA4289C2E0822190C99EC604AEFF85137EBB + B410C22AC2D4C20D701C55C166A0D5B4C978795F018A8C8F940567C00037F0CC + 854F5534B07F7D7B49D914ED706C82835818F4A91872DF07EF39AB6A605D9642 + B6A060098E233EA0D163ADCC2ED6AA149479394D595FB32DDB41E2CF72EEC8A8 + 31D229C1BF116AB5089FA02A1938913B2AE7B6FA6F4EAAF1CF73F48158FEDCF7 + 35B22DFC82A8D08C85521308462FF03BAB26731A6AF271213BEDED831D21E5AD + 3E949661DCA0DCE66B110908AB5C06340D2ADFE0296473120431D5701076916B + B38153C2952CA5EC81A8BC1822A0614D74555B8BFB73524B472E5FD89F305B09 + FB2340C3599F2C7098BE2783104C0B057D6A2F773F784993AE191DFA700FB37B + 3FC2D57A50C5FCE7170A0D66BB32CCF61351C42515EB29FD5298A863207ED401 + 312B71DC9D15322A86C4D7104D279A5116ADF075F122E0F0CB95460FDF003AB8 + 7CF898F20A61797E92DC09B30DA97C19A0E2F82C949DEA3356F6A979CE7ACBE6 + 0E8862BE3280B06B04753810ED3B049AFE69F607E9B09D620D7D6D0F60B9D29C + EDA182417E27147A638FE2CFC023A9DF342F320EFCD6A849C4D7AA395DF9B2D8 + 75BDE00EFC692989141A21B5FFA0BD1A4CDB7C476861D772DC1AD5845A09D2D1 + 7351C01641F52F0BAA3114D15E961F079BB8D5476586DEC33911C172CFAFBE55 + FEC6E5EF275B2DCDC53B24D52F4CD3B6C1E5201D65CF21E902C1B2331ECF992D + 24183DFA57421C6CCAD4503C1D29A854883DE4356E214CED2E2F443E86DDC88B + 5A183E6720761A59FE556EA2AFDD92A7BB30D3FD7435E367F83C9C24EA8CB00F + DBDDE2236BBC0116ECA0124450C487AC49760F0FB0F458B188FA6E226AEAB95F + 17EEBDE6A84836A19831F43029F68C8AA47F0816B9986694DDCB666BD21E319E + 7BDFA43ED5313031AB3E36AC726AFEE5C5D911C7CD8FECFE79FA7015FD5E4FB5 + 7A7584F945383F8E2A937B5CDEDECD06C8FD4AC9D43828240537F50536EF8C82 + 85D0AD22FFA3EB6979ACB9DB4C0EA62A10704E50DD49EE613D80FACB83FE06CA + 0CE9ABF5B15821EB10F899C6C9C3EC91C6B0E5F3D00A108D74B706C4807285A2 + F0CF7FEE1EA4BB4A88DAEF7781EF0D35918D2A58897AEF796EA7A7271DBA8F0C + 074D154327BF28C46671A3DC26C7212E5CF5210D9347EFFC7793C2C22CB1DEE3 + 794B132DC736C2137047169F683C28586730875E1DB4DAC52E160FB5DCDF812A + 21AD0398DE04ADDAC0619E1E33A8DA3FC250377E58D8CE5150C7756C063664D3 + 14D59C7650A7BFC6CF30C72BD3B80987714DFB05EA96FE2238B020C418DBDA31 + E391C707DF5DFF194A0D1DF7217509E4A0EE39518FCD8B8EC0A072F34AA4A8D9 + 4D51E9BE14381B339BD6EE994EF57498417B05F3478879C161754FE43492F177 + D08D90BFB266F4E3A40A863BABCD47E377CCE68DBC3E17F606F56E9A2AB442A3 + 4C837A763498E220362D5A43A83657B6C23F4012E860854E9ECB26185C9232E8 + 663EBF48BE8E64297602B8B50A20323D4D6AEBB5BE0E0D961AA645E8DECDF884 + 6CCB1977D1B44622BED118047693E85B6452C5E58C39D876D0AAD63AD2AFD376 + 832258E55EC287CF9D015F4121F6CA8CAC451B8BBFE3A7DC284020D8B7EA4452 + 01365790484544994DD1B751924372F71CE0F0A909A8E363D246D2BEC30F78FD + 8B5C5836EC2D5FB638FF35EE7A9F352BBCFE6441C81ACAE33B8823ADCE6CBC98 + 006F3892BEF1165F8CFA927218D5CBFF488D439EE040DB2AB39D67C43BEED95D + FC4B09BB68ECA9FDC9C44667B7F80954AAE48348048E9C7B49632B80C723584D + F519D764E799908682E4A8F5FDB70293DA4AE5FFCFEBA51E655CDCEFF96EFFD4 + 7C6A577CBD34590B9F78C628EFFF47553F2E66B7BC9BD56CEF31084E9E064B45 + B457224BF05C6FF17D4FC6C1D75E6A42C5AD3FD702D3899A72AAFC17C8D40CCC + 228330D9319CF8C8B5F3491B1B74AF816B3512696F42A6B629B51C0D8650EC82 + FC57641E5C1ED4E9A6EBEA7C92C1EC8279402A83DCF350D40DA389B17BEB6DFD + 6A999C1B0BF6AC3EF20D66E256F564DAE08AA68FAC972D1E5B7F092D4FB3B307 + 9C246078510FDFBF7F3EC2D41A6B878F3EA032FDD4BBD202A45063036671E275 + FF3395A9CD9D7FA404FBD93184AB89C28565867D78DFDF4601869AA46C433D96 + 6B29A1C80EFA23F73FFAD63AEF3CA31F9477922A012ADAEE674F92F336A61DB2 + EC088281DC0A7A428C2D1FDB90236A338AC8B36322EFBA84754C3D500361508A + 01C5652339E0B88062E61D055C1FD72DA74456E6F1A06BA95ABF504A7D61E60C + 3E171CEADB1B50979521DEF40DEF82AD592D94964406ED0EB21FBECA3F0B0CC9 + 0CE15B9F824336B7E11BC773164A825020F79C0816A09684C56866252E867755 + 6F23AD5EAA8FBD00D18FF2AB5FD7B2A94AAE355AC0C858AA62352C6F68F811C8 + ADB5C52FF994E6B693396DACA60E9750DDD9AE7917C0F28D136EAF0AB1980A3D + 21699E20D6C2712D2BA266FDFFE8857F06E868CF80A2F0B2949848264264DE32 + 49DF0E73705BF358075F8F06297C0B7F6C70D9CAB815663F5C061BC79214BCEC + EB95EA74349963F86351D89CEC8578C115964E904B5B4041DC6DC71306F1C9AC + C4D4BE420DEF12645124BD3D7AA094A81BEEA57BA32FA0A299D3E79466E41B66 + 591E1CF0232A7CBD1F91314CE989927F1A3BE794E706157DF685356DEE96E334 + AFBFB24B6F156238939FF9C6AE117D9FA734CC8204AC1BB19022CBD7CC4C30EB + 675FA6553622C2C7C5C2CAC73B588082469BB61187463D50AADD8204B6B72C1A + E6318F7A89FFED068A6356580AB690CC72D108965695937E55E079DD801F5784 + 593F1E1E934BEAA605F87151805C773F0EF4896A321646D3837842BAC41E85CD + 92C090C60B4B7606A2994B4F03C0D330FBE4F319D30D751CAA24425F266C1FE6 + 3D8B217D03EE0447D16D863DB992036F4CD3D0248F7478C50467079561D80ADB + AF03A4FB8B8AA6E57E657276A3F527BF9826AE73D0BB806DC8E7AB9A4F0EE5F2 + 32C957E7336E04263DF36AE6FD00E134B976B4C348DD429C4CA88EA181202C73 + A95D397A934E55ACD4275B3A04BF9E2F6FE54BB154BA38D10CD6122B45239156 + 8C591C605AE972BBB35D309A56F91F8E2096BBE7E743928F50A20045D47D925A + 68C5247F5147FF77A6D1E1553EB0CF3A3D9430299DAA701225DE6D3D758EA17D + 3585D16DD960F89AD7E087E0B4FF3F8D5E570ABDC2BA18B92EE05EFFA4994375 + 5FF75BD877C4E3F2690560049EF3A913FFF8297362BC8258541854CBBC4F476C + 6105538222C17D91500EB2DE60CE6BA1A45F0F641E92CF51E8F5138B96A6FC1A + 0923CBC1E1604152DAFF6798DC66F17B2D4125A50BB5D4C264FE05F48F3AF619 + F0C8DCF182F0EB1E996794BC77C0A88673C838894B596715370C33F71A099910 + B508CAF4A0CDAC4D9E96BA2DB401ECD535F5496068227A0B75DB11DEEBAC3707 + 3E0279015C27AD83177D6AD56BDFE9052642A67B1CE62C929558C1B8A82D98AF + FD834452D767E00A0FE1A02B166082E9578C8C85BF1372C9F65F3895175BF957 + CB480C7A97E8A4243B2585FE6F81AFAF51F2874C4541E1218A0C87CE3443134C + 74F86DEF6523A1741DE2A5B18D3B62EE8C7766E565B010EC86A8BE1C25101E0B + 56B8C3D42CD09A5BB94F8975644AFF5762E8A00D04FB18FE334063E95E63488D + D14E2C22A785DFD000C2A8945314C1F0552D4D85A4421EB04E13FD9283A78F9B + 715D5F421647451EF6551C5AB28C257FFADCD89E81E97EE66FCD2EE4F2104970 + 602C230E80ECDFD4C2814F1B7C29966421B11F37C0D145E8AFF8312799F91915 + 795E735EB831B3D6526C3B4410C09257531111067F2AB70485A0A2B2F951AED5 + B36891B1C9FC1E5046B2729D7C53DA1554D4F536813FD22EC70E15769E37942B + 2836985D91CD585A8A1B017A5564CA0435212422F1591B7989B82AAA738F5153 + 51E06B00D4B5B879B87D6F36F438C6B0851B13ED7BBC5C8E00E4CF25759111C1 + A68ABCCD12272BA99B7E89F0E93BDED5CC1D40F31DF779F5E17300E3663B14EF + A17A92C907C6D6528B57B656C4F67BBFF1C0B016E450D783CBB3E814467BAA76 + E34EE2C5F5324195046B05F48095430A977866B9B9DD1F054130F10DFB004E57 + CE48C7584938889759DA652E687B475F02EFDC0B2FF4C715EF9A717386D7C420 + F54DB89EB0881F69D8C27FE5734A44BF4411F04D85ED43FE8063A0CDF001AF36 + 816A4784447BCB8991FF05104B5387DD7C7127504FC9618C2CFAA19A54F23192 + 1CA661F9CFDECE7982CF + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /GFDEKI+CMR12 findfont /Encoding get + dup 40 /parenleft put + dup 41 /parenright put + dup 44 /comma put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 52 /four put + dup 65 /A put + dup 69 /E put + dup 97 /a put + dup 101 /e put + dup 103 /g 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 118 /v put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/ff + /fi/fl/ffi/ffl/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/suppress/exclam/quotedblright/numbersign + /dollar/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /exclamdown/equal/questiondown/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/endash/emdash/hungarumlaut + /tilde/dieresis/suppress/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /ff/fi/fl/ffi/ffl/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/suppress/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N68/GFDEKI+CMR12 -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font SDYAPG+CMR17 + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 15 dict dup begin + /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) def + /version (1.0) def + /FullName (CMR17) def + /FamilyName (Computer Modern) def + /Weight (Medium) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /SDYAPG+CMR17 def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -33 -250 945 749 } def + /XUID [6 5000795 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC9EBBC6A5E + 2825687306A156DACC32FBF734087CDFC35B78DDA68032BCA38CA8E8A340AAA3 + 002A0E52D0B9162BC68AACFC0F14A1C933363A56EE460EB41CE8C2E9EDC509AB + 9E0462B9F619AD944F133AF072E5FD1625902963260181189070C40FB0D49A96 + 50D86FB0AA90098027455AC2354A299FC7BFC34B4F1162E5E9A3EFD80D6240B6 + 9378BB4F6F9F5AFBA48E4B20C5184629EF853CD58B8C69BC6919CF0400492035 + D60CD29FEFB40A0433B16D5A24592FC97BAA3F293737A0491CCE75D4708CB19D + F5A5D7E4CFB41BC910B746258C1FA369BC642CE422BB1D7283AD675B6548A7EA + 17DE1F117EB6516A8F27DCB4156E6FE80DB0F20D17466EAE42092022629D0545 + CD02392596FB98BC0EE2AEDD0566B205E78949AA3B19BE79C8F8CC5365093759 + A4099793DC0A1F7586E79A703EF5FFA13CA20F4384A48453E9CD37B3CB4E47BF + F53E5F6197B87758E36463DBE3ADFF9016473A887D48E42F63BDB1C4A2753A82 + 014EDD80D3D8983A08DF577EF7DE01F892C579FB2DA5C4DCA1262D7BE1A04FFD + 2B8AD6AC13270BF6BABE5DC25239755458D30498C0BD2D58CE1F6565C297CD87 + 01BB1B02AD2602654A5CF99C49711FC23A630427BB52A0CB318D6B54F69EDC65 + 36190766899A59F2A5156DE3E0CEDF26EBAFC9587C328CF86BB9F3DDF97FCC92 + 7DA8E7C940FBA38AB104816F98B7EF49E4E1749B3549A78528FD760A6F656817 + 67D865FA1A3E0508CA14DCE007A5F6DE9ABC17D9CBB8FBFB2685FC0DE2D91ADE + DDBD5AEFFA56E82ABF1D3C7442323E5095E82D53A9E68C084FE43D167287C563 + E9A5EB4888BAFD40FA8C325985B979AB6123C3E6E875EE1661AC4662B8C78370 + C7B66CA6C7E26E233D2B67263441038C465ADBFF17058A607A085E48085EE84A + 7BC18BA737927B88FFE734AD03C2D1F81D967BA18C9C2BF7A16FBBD16031A50E + 6BB41C097182B0F21395C1452C999D8DBC071C8990D6953EB5FF1D3541720F08 + F8D70D68C09100E4ED2455C8BDBFD83FF4313BA31E3E3CFECE3F06C15168C602 + 77EA216E0343BE1B20339459F02057209632493E6D85166915BF4D0A1E94CC9B + F2E5A59F97F327551F145831351D72CBB1862DF5AFA388B77FBECE64AF947744 + 8C7391165E2F4643D99E9B99B23A256AA643B96AAD5DFC02E2FDEAD12F1238E5 + 7FDC732DD157F48CD3A3CEAC161DD769C19BA9934220B533F9B00FA044DF2EAA + 5EE344D2FA8675CC72516F8AE6AD3B87A2539729A98CC097E2EFF1CA96F54A69 + DACDBC59CB68E5E3B985963EAB69BB808447C9C9F1B208407E4903A7F05D8ED0 + 2FFEAC55A0090116848ED530F0ECFB5AD662DF2CE2E4C8190320E90205F17361 + 2F86013F1C53563FDCA858A1AA42CCCCC90862435E725FBF612432E2D049A8AB + BB2FB3ACB0BF0AFD96ECA59F626FFAB8681B4AA3A5CF5AE846CCEE16A15ABF18 + 0DE5C31C573ED2D0E5654730B9C953E30308100C09D1C314587D6D132599820F + F4DDA9DF6AF026AC0DDC900F20D1DE1DA6B1FBBA7DCBE6D82A9488517FBFAADF + E60686BE912745ABCF5BEAFF5B2DC728F04C72DDE3DA504BDAAEFC0CA1C15BF0 + 343B30378D20D53A2350ED0350A12866CB1F5CF73C4B663932CCE991A787135D + 0902D5124891C844D9736025304CF885FDBC36444EE424D1E44C2D0153B77B7A + 9B4C841A94FCCDEC0F4EACBEB60C34190EC6679BA5470EA059F8E07ACF890A74 + C6CBF709D31E01D685C98935E6E8DAE94A639B8D59F29EB86291A1BB33ECD1AA + 39DB2D25A16518BEE3BC392FEF62E4F7092C0E14C64D959AF5A5C399720E4C38 + 195BD801D652D78F9437A0A177A30E3AF0D32A1C2F84692A1F367E3C46425040 + 4A80941E98977E3001732DBEDE116087687F57CA1256FCA49DB28663F79E9A1E + 7C82558627DA9F9CD96837632C406C64497CAA8E5F769A0825A5F1565739EAE2 + DA58C3D9B98D2BB026B7962A234A0886A4CDEAA70B110ED8930D18AF1C4475F1 + C978F8958D71A241DC0A3F50303787228D8561A84B5B1696D1F133A3C8C4EDFE + B8E7B08146C1CD3139F9B8A34EBA0F2E253210B8D91060F1C8641A18A0C23232 + D11595482825628BD255C446285458D489F5A364EC78747086B9F4B0D5406D19 + 07663F459A9052F1231BEE571D9CF45EC29D622F4523F97A7D218D022ED82836 + 7DB96E3BC5464A15E32C154E71AAA387BA3A9C23011CF05E26448E96ED241F94 + 5CD37421EF50FED328F2C60681724EE3053B1A55FE9281F0B5A14BE56D002A71 + 825333B903F9A7670726C70DEF91CE0362A26C5A17B2585895AC0DF28EC8D51A + B9B8E65214879E5600DB4D794FAA316F30ECAA77236B749215AA28D079A68451 + 7E1DCC028B5AB07A6FC17BF3BC550236EC41E8EF4CAB106CAA4A45BA9410A601 + DA3EAD608C153B3955A088101FBFEF9F02720622594148728EAFA2D6D8CC22F8 + F01867CEDF2D7563157BD1F6235473ECAE786F15164A8BB668EC7448712E97C6 + 6C71D60CB73B7C5CDA3EF720C9835A5686DC3EC1997663D8D20E12D1ACF1AAD1 + AD19DA6E0A21350AE5396336A4EEBEDE6143F0E63162E4F5EACA0D8CACEFB9AE + 1D21ABAFDAA84DE344D6AE164F59E6F4E17AD4D8E5622AE5F144050FCC57E33B + 5DDD08C547F8A3965E08A3B31F2AF40AB73CBAA721E1A1C09070420926078F05 + D09455EE483CD4E3F1F333B04C360CC55F5D7F8FED3ED9474A9A2ABEF0F6A27C + 189D67D83091759E1BCEBA04C20D8F9B2E8E7C97828329CC994552D13F935B4C + 5913EE20BD8E341A2723AB4E861207D34F01CE382E285C2A151682E1789DE795 + C36E5ED28D437CEE2E0E7F5971F5302C0F4E71E2D42E1A7D992C10505C3DCFD5 + 4C99B53028F18075E1485F357FD780F741DAE337C1508F4E1FB0AAD626242791 + 54CE7BE5A25F00B6EDC48B887F023816901149FD0603EBADCA9E5269A1C7A49B + 529B54544D2AB40EBE7FBD240724005670274E81DE4CC7B2A848869115A8EA79 + C7EA3A91201A1F0E2F207D3A7CEDFE7F248A386C2A221F1BC11052D6FC67D537 + 205A86C9B80A3D41AE56D88C25190703585B59EC67D246C5DDD47EC037412375 + E9D533CA7BA50C220F1CBEA8E42F638FE5F6C39855CBDC3BFFB930B839E113A2 + 78823BCA88FE2C53F6E4CC0B47CCC669E6EBDCD5679AF38779484B0917170299 + 7CE68C9AA725C9295CB285A7CF87F8DFE518068082E67BA40ADE794F403F54CB + 69B3174FF5B32AD1B7E4ABD94FA85E86B704D9AD3781C737469225C746EDED4E + BA836F7635EC129371415E9FD7A85B1DA943F64A2061C5F8DF8316F201521068 + CB89339C4B015BD94B785FC24026A0250F85F543CCD30AD9B1915ECBE322FCCB + DB403EAB2D8B490EB7715704E453580AFC2128E42B8DD5BC0E374E6929CEDE2C + CA34270CE2DF04C704BF1DFE31E19FD02738AA4B766938C4C82806989F698BEF + 5FA7A2103C518E7C17FFD5F50AEAB4CE0B2EEDFD2770FF779436E50C130A888D + 028CDFB0C455A103D06269D8C7D2BF0449E20171335BA65871E9F10B9395B169 + 13200C8A79F887A696749A5F0D58366A1A21A10846A884546916796242D635BF + 361C60FA8B468E28670B26BD49C05B01C650EEB2E892AF47DF8DB88591C11B11 + 00A43E707943F96C5E0E42A1E71D2ED5CD98155229EF9A357F2881359AF1E623 + 2AF126D838056791E73389876D49A0350BA2297268B535CC0E6469FA8C9E01F5 + 6370E74704A7DD7241BFABAD6D9E2E0AB80BE4933587EF501E3D2DFCDC6D2196 + C5DBE1934CCE501ACC3544A3772B3455E0C00673B3B8509ED84AC1FE589BCA53 + 9A3BF0EDC8C9B62E2BBD9797B1985E9B479BE5069226818176376E8EBA50544A + 6BFEFDC8ED935C78CD1A26B468B9CCA2FCE3555E406CE60201932F7E4AEFD5B5 + DBB5B2D956FE101DEC6BFB7D16819804AC250591E8D523AEE55D5C4CE33877A1 + 6CC7CADC7CFB50691794D43304D7AE15EC1E29F0DB3EA59C2F073A3C4AB83836 + 68A6EF0F2D91BE7C0183ADACAFB624EBCFA2BCF834516B26E12EEF90E25DFC1E + FA657611EA7515A1E5933B5A309A08F25261E9779409C5D94700F9E6B7BDEF72 + DD4F6B3FD1A0E117F90D6D23F65AE8CE00976574C0AC2ABF6485C8836C7DA1FA + 9578ACE687B017889D2C782DFABD72AA36B3F3C68AB7EF486D2836B0184DF3AA + A11BE3DAB938EBB4B5F3D9DD1938332BDC88B999E79C4035EE2CA6D36838C123 + 559B2836C6F1CA0F51283F69E0BF154487AB65F4F3CDF4A0CB954ECFF068D9F1 + 966B7DE0111F07B3E7CDC98FCA6910EC12A3FB36D1F594DBC1E3F142A518C34A + E353D2A4F18477423B69866E831843CB6C0773A992D0D48672C53563C150B739 + 794DF6E1E30A4CB93AC6D1C0C9F4613767BDD5494D4A50E107D4C314F02352A9 + AAA268EE876A5B62A24E33FEDCF467AEB467D2742214CA9C9B4B070D0B91750D + A5B237EA1210BE4AA695D98C5DD34F7B0BC6A23E4B17C242AF6FBFFB955110AC + 91A3C974EB6F8A9F8358B60B2040E8251E5D7E5709553395BC513623970B264E + 736138351CCB98F9D60D2A710F041FE4DE8EB068399290C33DC36B187A436A18 + 250A0242891ADE94A2F6DC0C16DEAB8F6D173953AAD7C94C29AA909500EEDE67 + 96DAA152821DE84D4590BFCA0C167A32CDC5D090AA353C71C264D2C69AA6C922 + 92D868974BF220A88C42269F81F1600CCD527CF5ADA43B2F9DB8E97F7D0E5C17 + 82751C19A15D7A2882153A05C8D06636407FFBD5D74946EDCE535536F7EF2651 + D46F35F7333BB90A7E1DEB5B2C708CE2E5BFA82CFD350BA6711E869E0973F030 + E4EE32082251C83D85BC80D1A4881F9027C75D1F99B3D7FD53FF025779F2A8CA + 216C654683D683D6D05B2F25CD3CA3490EE8E327467315C18986D3A3537A018E + E7CF485A680ED19A17D4CE80B14FE76241DD3BDFE4BE27031B313B8696A260EF + CC629419B0A25E0866DF5BD1ABB1783DC177942E3B1E34992FEC66CA720C2BC3 + AD6EBC1D9B9AF3F05FB986D5482062C7A4428010F1EAA47B75CAD09D6A147A71 + C0245540BEE7FF5508DCA29840AC210833E7732DCF3050EBE21382C00EA7D1E0 + 3E48EB13E3633CCFA5580C6E2F3B72156D574B57C3160FC87D813612ABB384AF + 58291EED94C68566FC416BE55CF47B3D399810D98F785C06ABA1F927BEC4C507 + 3825CB93B2CBBC5AC6C0E4CA55DBE562EDD654D73CAA6BED4B7B61EACBE87698 + CF811865B97FC0DEA5C146C1BC3C055AD04D3B93EA3C1DAC91186FD6279805F8 + 9FD3402DC6E0CE3C + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /SDYAPG+CMR17 findfont /Encoding get + dup 73 /I put + dup 76 /L put + dup 83 /S put + dup 97 /a put + dup 99 /c put + dup 101 /e put + dup 103 /g put + dup 105 /i 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 118 /v put + dup 32 /.notdef put + pop + end + %%EndResource + + userdict /pdf_svglb get setglobal + [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi + /Sigma/Upsilon/Phi/Psi/Omega/ff + /fi/fl/ffi/ffl/dotlessi/dotlessj + /grave/acute/caron/breve/macron/ring + /cedilla/germandbls/ae/oe/oslash/AE + /OE/Oslash/suppress/exclam/quotedblright/numbersign + /dollar/percent/ampersand/quoteright/parenleft/parenright + /asterisk/plus/comma/hyphen/period/slash + /zero/one/two/three/four/five + /six/seven/eight/nine/colon/semicolon + /exclamdown/equal/questiondown/question/at/A + /B/C/D/E/F/G + /H/I/J/K/L/M + /N/O/P/Q/R/S + /T/U/V/W/X/Y + /Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent + /quoteleft/a/b/c/d/e + /f/g/h/i/j/k + /l/m/n/o/p/q + /r/s/t/u/v/w + /x/y/z/endash/emdash/hungarumlaut + /tilde/dieresis/suppress/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/space/Gamma + /Delta/Theta/Lambda/Xi/Pi/Sigma + /Upsilon/Phi/Psi/.notdef/.notdef/Omega + /ff/fi/fl/ffi/ffl/dotlessi + /dotlessj/grave/acute/caron/breve/macron + /ring/cedilla/germandbls/ae/oe/oslash + /AE/OE/Oslash/suppress/dieresis/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef + /.notdef/.notdef/.notdef/.notdef + /N65/SDYAPG+CMR17 -1 TZG + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 140.123 615.392 m + /N65 17.215 Tf + (I) + [5.64657 ] pdfxs + (mpr) show + (ove) + [7.43687 7.90169 6.98939 ] pdfxs + (m) show + (en) + [7.0066 8.3493 ] pdfxs + (t) show + (s) + [11.379 ] pdfxs + (t) show + (o) + [13.1006 ] pdfxs + (L) show + (i) + [4.28653 ] pdfxs + (n) show + (ear) + [6.98939 7.90168 11.2931 ] pdfxs + (S) show + (can) + [6.98939 7.90168 13.9958 ] pdfxs + (r) show + (egis) + [6.98939 7.90168 4.30375 6.18007 ] pdfxs + (t) show + (eralloca) + [6.98939 11.3103 7.88446 4.30375 4.28653 8.34927 7.0066 7.88446 ] pdfxs + (t) show + (io) + [4.30375 7.90168 ] pdfxs + (n) show + 240.415 586.501 m + /N68 11.955 Tf + (Al) show + (k) + [6.18071 ] pdfxs + (i) show + (sEv) + [8.51197 7.97398 6.16875 ] pdfxs + (l) show + (og) + [5.85801 5.85801 ] pdfxs + (imen) show + (os\(a) + [5.84605 8.52392 4.55481 5.84605 ] pdfxs + (l) show + (k) + [6.18071 ] pdfxs + (i) show + (s\)) + [4.61464 4.55481 ] pdfxs + 272.296 563.055 m + (Ap) show + (r) + [4.55481 ] pdfxs + (i) show + (l1,2004) + [7.14912 5.85801 7.14912 5.85801 5.84605 5.85801 5.85801 ] pdfxs + 133.768 520.147 m + /N71 14.346 Tf + (1A) + [24.2161 12.1798 ] pdfxs + (b) show + (str) + [6.36962 6.26925 6.59915 ] pdfxs + (ac) show + (t) show + 133.768 498.326 m + /N74 9.963 Tf + (L) show + (ine) + [2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.15341 3.93536 4.42357 ] pdfxs + (a) show + (nre) + [8.78736 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 7.15341 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nisaf) + [8.78736 2.76971 7.18329 8.2394 3.03871 ] pdfxs + (a) show + (st) + [3.93536 7.12362 ] pdfxs + (g) show + (l) + [2.76971 ] pdfxs + (o) show + (b) + [5.52946 ] pdfxs + (a) show + (lre) + [6.02761 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 7.15341 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (n\frstpresen) + [8.79732 5.52946 3.90548 3.92539 7.13358 5.52946 3.90548 4.42357 3.93536 4.42357 5.26046 + ] pdfxs + (t) show + (ed) + [4.42357 5.53942 ] pdfxs + 133.768 486.371 m + (in[PS) + [2.76971 9.55451 2.76971 6.7848 5.52946 ] pdfxs + (99) show + (]) + [6.79476 ] pdfxs + (a) show + (s) + [7.96041 ] pdfxs + (a) show + (n) + [9.55451 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (t) show + (ern) + [4.43354 3.89552 5.53942 ] pdfxs + (at) show + (ive) + [2.75975 4.9815 8.45859 ] pdfxs + (t) show + (o) + [9.00655 ] pdfxs + (t) show + (hem) + [5.52946 8.45859 8.2991 ] pdfxs + (o) show + (rewidelyused) + [3.90548 8.44862 7.20325 2.75975 5.53942 4.42357 2.76971 9.28551 5.53942 3.92539 4.42357 + 9.56448 ] pdfxs + (g) show + (r) + [3.90548 ] pdfxs + (a) show + (phc) + [5.52946 9.56448 4.42357 ] pdfxs + (o) show + (l) + [2.76971 ] pdfxs + (o) show + (ring) + [3.90548 2.76971 5.52946 9.00655 ] pdfxs + (a) show + (ppr) + [5.53942 5.52946 3.90548 ] pdfxs + (oa) show + (ch.) + [4.15457 5.52946 2.76971 ] pdfxs + 133.768 474.415 m + (I) show + (n) + [9.11614 ] pdfxs + (t) show + (hisp) + [5.53942 2.75975 7.51207 5.53942 ] pdfxs + (a) show + (per,I) + [5.80842 4.43354 3.89552 6.41617 7.18325 ] pdfxs + (a) show + (pply) + [5.52946 5.53942 2.76971 8.83718 ] pdfxs + (t) show + (heline) + [5.52946 8.01025 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.48219 3.92539 4.43354 ] pdfxs + (a) show + (nre) + [9.11614 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 7.48219 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.11614 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hminasys) + [5.52946 11.8858 2.76971 9.11614 8.56818 3.92539 5.26046 3.92539 ] pdfxs + (t) show + (em) + [4.43354 8.2991 ] pdfxs + 133.768 462.46 m + (wi) + [7.19329 2.76971 ] pdfxs + (t) show + (hSSAf) + [8.73755 5.53942 5.52946 10.6803 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 11.5072 ] pdfxs + (a) show + (ndshowhow) + [5.52946 8.73755 3.93536 5.52946 4.70253 10.4014 5.53942 4.70253 10.4014 ] pdfxs + (t) show + (oimprovethe) + [8.17962 2.76971 8.2991 5.53942 3.89552 4.7125 4.9815 7.63166 3.86572 5.53942 7.63166 + ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hmbyt) + [5.53942 11.4972 5.26046 8.46855 3.86572 ] pdfxs + (a) show + (king) + [5.26046 2.76971 5.52946 8.18958 ] pdfxs + (a) show + (dv) + [5.53942 4.70253 ] pdfxs + (a) show + (n) + [5.2505 ] pdfxs + (tag) show + (e) + [7.63166 ] pdfxs + (o) show + (f) show + 133.768 450.505 m + (lifetimeh) + [2.76971 2.76971 3.03871 4.43354 3.86572 2.76971 8.2991 7.99033 5.53942 ] pdfxs + (o) show + (les) + [2.75975 4.43354 7.49215 ] pdfxs + (a) show + (ndmem) + [5.52946 9.09621 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 8.81725 ] pdfxs + (o) show + (per) + [5.80842 4.42357 3.90548 ] pdfxs + (a) show + (nds,) + [5.53942 5.52946 3.93536 6.38628 ] pdfxs + (a) show + (nd) + [5.52946 9.09621 ] pdfxs + (a) show + (lsoelimin) + [2.76971 3.92539 8.53829 4.43354 2.76971 2.75975 8.30907 2.75975 5.53942 ] pdfxs + (at) show + (e) + [7.98036 ] pdfxs + (t) show + (heneedf) + [5.53942 7.99033 5.52946 4.43354 4.42357 9.09621 3.03871 ] pdfxs + (o) show + (rreservin) + [7.46227 3.90548 4.42357 3.93536 4.42357 3.90548 5.26046 2.75975 5.53942 ] pdfxs + (g) show + 133.768 438.55 m + (re) + [3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ersf) + [4.43354 3.89552 7.25303 3.04867 ] pdfxs + (o) show + (rspillcode.) + [7.22316 3.92539 5.52946 2.76971 2.76971 6.08739 4.43354 5.2505 5.53942 4.42357 2.76971 + ] pdfxs + 133.768 405.604 m + /N71 14.346 Tf + (2) + [24.2161 ] pdfxs + (I) show + (ntro) + [8.50717 6.2836 6.58481 8.52157 ] pdfxs + (duc) show + (tio) + [6.2836 4.476 8.07685 ] pdfxs + (n) show + 133.768 383.783 m + /N74 9.963 Tf + (L) show + (ine) + [2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [6.43608 3.93536 4.42357 ] pdfxs + (a) show + (nre) + [8.07999 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 6.44604 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nw) + [8.07003 6.92428 ] pdfxs + (a) show + (s\frstin) + [6.46596 5.53942 3.89552 3.93536 6.41625 2.75975 5.26046 ] pdfxs + (t) show + (roducedin[PS) + [3.90548 5.2505 5.53942 5.53942 4.42357 4.42357 8.07999 2.76971 8.07003 2.76971 6.7848 + 5.52946 ] pdfxs + (99) show + (]) + [5.31028 ] pdfxs + (a) show + (saf) + [6.47592 7.52206 3.03871 ] pdfxs + (a) show + (st) + [3.93536 6.41625 ] pdfxs + (a) show + (l) + [2.75975 ] pdfxs + (t) show + (ern) + [4.43354 3.89552 5.53942 ] pdfxs + (at) show + (ive) + [2.75975 4.9815 4.42357 ] pdfxs + 133.768 371.828 m + (t) show + (o) + [8.45858 ] pdfxs + (g) show + (r) + [3.90548 ] pdfxs + (a) show + (phc) + [5.52946 9.01651 4.43354 ] pdfxs + (o) show + (l) + [2.76971 ] pdfxs + (o) show + (ringre) + [3.89552 2.76971 5.53942 8.45858 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 7.38256 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n.) + [5.52946 7.68147 ] pdfxs + (Lat) show + (eraslowerv) + [4.42357 7.38256 8.45858 3.93536 2.76971 4.70253 6.91432 4.43354 7.38256 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.75975 ] pdfxs + (a) show + (nt) + [5.26046 7.35277 ] pdfxs + (o) show + (fline) + [6.52576 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.38256 3.92539 4.43354 ] pdfxs + (a) show + (nth) + [9.01651 3.86572 5.53942 ] pdfxs + (at) show + 133.768 359.873 m + (producedbe) + [5.53942 3.89552 5.26046 5.53942 5.52946 4.42357 4.43354 10.4113 5.81839 4.42357 ] pdfxs + (tt) show + (ercode,sec) + [4.42357 8.78735 4.42357 5.26046 5.52946 4.43354 8.03017 3.93536 4.42357 4.43354 ] pdfxs + (o) show + (nd-ch) + [5.52946 5.53942 3.3176 4.15457 5.52946 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (ebinb) + [9.30544 5.52946 2.76971 10.4213 5.52946 ] pdfxs + (a) show + (ckingw) + [4.15457 5.2505 2.76971 5.53942 9.86337 6.91432 ] pdfxs + (a) show + (spr) + [8.80726 5.53942 3.89552 ] pdfxs + (o) show + (p) + [5.81839 ] pdfxs + (o) show + (sedin[T) + [3.92539 4.42357 10.4213 2.76971 10.4113 2.76971 7.19329 ] pdfxs + (H) show + (S) + [5.52946 ] pdfxs + (98) show + (].) + [2.76971 2.76971 ] pdfxs + 133.768 347.918 m + (I) show + (n) + [10.1324 ] pdfxs + (a) show + (n) + [5.52946 ] pdfxs + (ot) show + (herp) + [5.53942 4.42357 8.49842 5.52946 ] pdfxs + (a) show + (per[MP) + [5.81839 4.42357 8.49842 2.76971 9.12618 6.7848 ] pdfxs + (02) show + (]av) + [7.36265 9.57444 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.75975 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [10.1324 ] pdfxs + (o) show + (fline) + [7.63165 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [8.48846 3.93536 4.42357 ] pdfxs + (a) show + (nw) + [10.1324 6.91432 ] pdfxs + (a) show + (spr) + [8.5283 5.52946 3.90548 ] pdfxs + (o) show + (p) + [5.80842 ] pdfxs + (o) show + (sed) + [3.93536 4.42357 10.1324 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (t) + [8.46862 ] pdfxs + (ta) show + (kes) + [4.9815 4.42357 3.92539 ] pdfxs + 133.768 335.962 m + (a) show + (dv) + [5.53942 4.70253 ] pdfxs + (a) show + (nt) + [5.26046 3.86572 ] pdfxs + (ag) show + (e) + [7.75121 ] pdfxs + (o) show + (flife) + [6.36635 2.76971 2.76971 3.03871 4.42357 ] pdfxs + (t) show + (imeh) + [2.76971 8.2991 7.75121 5.53942 ] pdfxs + (o) show + (les) + [2.75975 4.43354 7.25303 ] pdfxs + (a) show + (ndh) + [5.52946 8.8571 5.53942 ] pdfxs + (a) show + (ndlespre) + [5.52946 5.53942 2.75975 4.43354 7.25303 5.52946 3.90548 4.42357 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (edre) + [4.42357 8.8571 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers.) + [4.43354 3.89552 3.93536 2.76971 ] pdfxs + 148.712 324.007 m + (I) show + (n) + [9.35525 ] pdfxs + (t) show + (hisp) + [5.52946 2.76971 7.75118 5.52946 ] pdfxs + (a) show + (per,Ifurtherre\fne) + [5.81839 4.42357 3.90548 6.7051 7.42236 3.03871 5.53942 3.90548 3.86572 5.53942 4.42357 + 7.72131 3.90548 4.42357 5.53942 5.53942 8.2394 ] pdfxs + (t) show + (heline) + [5.53942 8.2394 2.76971 2.76971 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.72131 3.92539 4.43354 ] pdfxs + (a) show + (n) + [9.35525 ] pdfxs + (a) show + (l) + [2.75975 ] pdfxs + (go) show + (ri) + [3.90548 2.76971 ] pdfxs + (t) show + (hm.Firs) + [5.52946 8.2991 8.6977 6.49587 2.76971 3.90548 3.92539 ] pdfxs + (t) show + (,Iin) + [6.71506 7.4124 2.76971 5.26046 ] pdfxs + (t) show + (roduce) + [3.89552 5.26046 5.53942 5.52946 4.42357 4.42357 ] pdfxs + 133.768 312.052 m + (t) show + (hec) + [5.52946 7.64162 4.42357 ] pdfxs + (o) show + (ncept) + [5.53942 4.42357 4.43354 5.52946 7.08377 ] pdfxs + (o) show + (fins) + [6.2468 2.76971 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (nsl) + [8.74751 3.92539 2.76971 ] pdfxs + (ot) show + (s) + [7.13348 ] pdfxs + (t) show + (o) + [8.18958 ] pdfxs + (g) show + (ener) + [4.43354 5.52946 4.42357 3.90548 ] pdfxs + (a) show + (lize) + [2.76971 2.76971 4.42357 7.63166 ] pdfxs + (t) show + (herepresent) + [5.53942 7.63166 3.90548 4.42357 5.53942 3.90548 4.42357 3.92539 4.43354 5.26046 3.86572 + ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.74751 ] pdfxs + (o) show + (flivein) + [6.2468 2.76971 2.76971 4.9815 7.63166 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 3.92539 ] pdfxs + 133.768 300.097 m + (in) + [2.76971 9.14603 ] pdfxs + (t) show + (hec) + [5.53942 8.04014 4.43354 ] pdfxs + (o) show + (ntext) + [5.26046 3.86572 4.43354 5.26046 7.49225 ] pdfxs + (o) show + (flife) + [6.65528 2.76971 2.76971 3.03871 4.43354 ] pdfxs + (t) show + (imeh) + [2.76971 8.2991 8.04014 5.53942 ] pdfxs + (o) show + (les) + [2.76971 4.42357 7.55192 ] pdfxs + (a) show + (ndspillcode) + [5.52946 9.15599 3.92539 5.53942 2.76971 2.75975 6.38628 4.43354 5.2505 5.53942 8.0501 + ] pdfxs + (a) show + (nd) + [5.52946 9.15599 ] pdfxs + (a) show + (lsoprovide) + [2.76971 3.92539 8.59807 5.53942 3.89552 4.70253 5.26046 2.76971 5.53942 8.04014 ] pdfxs + (a) show + (ne) + [9.15599 4.42357 ] pdfxs + (a) show + (syway) + [3.93536 8.86707 6.92428 4.70253 8.87703 ] pdfxs + (to) show + 133.768 288.142 m + (upd) + [5.53942 5.80842 5.52946 ] pdfxs + (at) show + (e) + [8.13977 ] pdfxs + (t) show + (hisinf) + [5.52946 2.76971 7.64159 2.76971 5.52946 3.04867 ] pdfxs + (o) show + (rm) + [3.89552 8.30907 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nincremen) + [9.24566 2.76971 5.52946 4.43354 3.89552 4.43354 8.2991 4.42357 5.26046 ] pdfxs + (ta) show + (lly.Thisnewc) + [2.76971 2.76971 4.42357 8.35895 7.19329 5.53942 2.75975 7.64159 5.53942 4.42357 10.8995 + 4.43354 ] pdfxs + (o) show + (nceptisdescribedinm) + [5.52946 4.43354 4.42357 5.53942 7.58192 2.76971 7.63163 5.53942 4.42357 3.93536 4.42357 + 3.90548 2.75975 5.81839 4.42357 9.24566 2.76971 9.2357 8.30907 ] pdfxs + (o) show + (re) + [3.89552 4.42357 ] pdfxs + 133.768 276.186 m + (de) + [5.53942 4.42357 ] pdfxs + (ta) show + (ilinSec) + [2.76971 6.5955 2.76971 9.36522 5.53942 4.42357 4.43354 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.36522 ] pdfxs + (3) show + (.) + [2.76971 ] pdfxs + (1) show + (.Then,s) + [8.73755 7.19329 5.52946 4.43354 5.52946 6.73498 3.92539 ] pdfxs + (ta) show + (r) + [3.90548 ] pdfxs + (t) show + (ingfr) + [2.75975 5.53942 8.81725 3.03871 3.90548 ] pdfxs + (o) show + (m) + [12.1349 ] pdfxs + (t) show + (helife) + [5.53942 8.25933 2.76971 2.75975 3.04867 4.42357 ] pdfxs + (t) show + (imeh) + [2.76971 8.2991 8.26929 5.52946 ] pdfxs + (o) show + (leimplement) + [2.76971 8.25933 2.76971 8.2991 5.53942 2.76971 4.42357 8.2991 4.43354 5.26046 3.86572 + ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nin) + [9.37518 2.75975 5.53942 ] pdfxs + 133.768 264.231 m + ([MP) + [2.76971 9.12618 6.7848 ] pdfxs + (02) show + (],I) + [2.76971 5.71876 6.45595 ] pdfxs + (a) show + (ddspillcodefusi) + [5.52946 8.3988 3.92539 5.53942 2.75975 2.76971 5.62909 4.42357 5.26046 5.53942 7.28295 + 3.04867 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (ninmem) + [8.3988 2.76971 8.38884 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 8.10988 ] pdfxs + (o) show + (per) + [5.81839 4.42357 3.90548 ] pdfxs + (a) show + (ndswhen) + [5.52946 5.53942 6.78477 7.19329 5.53942 4.42357 8.3988 ] pdfxs + (t) show + (he) + [5.52946 7.29292 ] pdfxs + (ta) show + (r) + [3.89552 ] pdfxs + (g) show + (etins) + [4.43354 6.7251 2.76971 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) show + 133.768 252.276 m + (setarchi) + [3.92539 4.43354 8.41881 4.97154 3.90548 4.15457 5.52946 2.76971 ] pdfxs + (t) show + (ec) + [4.42357 4.43354 ] pdfxs + (t) show + (uresupp) + [5.52946 3.90548 8.9667 3.92539 5.53942 5.53942 5.80842 ] pdfxs + (o) show + (rtsi) + [3.90548 3.86572 8.47848 2.75975 ] pdfxs + (t) show + (,) + [7.61173 ] pdfxs + (a) show + (sIfur) + [8.46852 8.13969 3.04867 5.52946 3.90548 ] pdfxs + (t) show + (herdescribeinSec) + [5.52946 4.43354 8.43864 5.53942 4.42357 3.93536 4.42357 3.90548 2.75975 5.81839 8.9667 + 2.76971 10.0726 5.52946 4.43354 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [10.0726 ] pdfxs + (3) show + (.) + [2.76971 ] pdfxs + (4) show + (.Fin) + [10.8497 6.50584 2.76971 5.52946 ] pdfxs + (a) show + (lly,in) + [2.76971 2.76971 4.42357 7.62169 2.75975 5.53942 ] pdfxs + 133.768 240.321 m + (Sec) + [5.53942 4.42357 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.35525 ] pdfxs + (3) show + (.) + [2.76971 ] pdfxs + (3) show + (,Ishowhowtoelimin) + [6.7051 7.42236 3.92539 5.53942 4.70253 11.0091 5.53942 4.70253 11.0191 3.86572 8.80729 + 4.42357 2.76971 2.76971 8.2991 2.76971 5.52946 ] pdfxs + (at) show + (e) + [8.24936 ] pdfxs + (t) show + (heneed) + [5.52946 8.24936 5.53942 4.42357 4.42357 9.35525 ] pdfxs + (o) show + (freservedre) + [6.8645 3.90548 4.42357 3.93536 4.42357 3.90548 4.9815 4.42357 9.35525 3.90548 4.42357 + ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers,incre) + [4.43354 3.89552 3.93536 6.7051 2.76971 5.53942 4.42357 3.90548 4.42357 ] pdfxs + (a) show + (sin) + [3.93536 2.75975 5.53942 ] pdfxs + (g) show + 133.768 228.366 m + (o) show + (pp) + [5.53942 5.80842 ] pdfxs + (o) show + (rtuni) + [3.90548 3.86572 5.53942 5.52946 2.76971 ] pdfxs + (t) show + (iesf) + [2.76971 4.42357 6.30655 3.03871 ] pdfxs + (o) show + (rre) + [6.27667 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 6.27667 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [7.90065 ] pdfxs + (a) show + (ndreducingspillcode,especi) + [5.53942 7.90065 3.90548 4.42357 5.53942 5.52946 4.43354 2.75975 5.53942 7.35269 3.92539 + 5.53942 2.75975 2.76971 5.14091 4.42357 5.26046 5.53942 4.42357 5.3302 4.42357 3.93536 + 5.80842 4.42357 4.43354 2.75975 ] pdfxs + (a) show + (llyinre) + [2.76971 2.76971 7.63166 2.75975 7.91062 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 3.90548 ] pdfxs + 133.768 216.411 m + (po) + [5.80842 5.26046 ] pdfxs + (o) show + (r) + [7.22316 ] pdfxs + (I) show + (S) + [5.53942 ] pdfxs + (A) show + (s.) + [3.92539 2.76971 ] pdfxs + 148.712 204.455 m + (Experimen) + [6.7848 5.2505 5.81839 4.42357 3.90548 2.75975 8.30907 4.42357 5.26046 ] pdfxs + (ta) show + (lev) + [7.34273 4.42357 4.70253 ] pdfxs + (a) show + (lu) + [2.76971 5.53942 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [10.1124 ] pdfxs + (o) show + (f) + [7.62169 ] pdfxs + (t) show + (he) + [5.52946 9.00655 ] pdfxs + (a) show + (boveenh) + [5.80842 4.7125 4.9815 8.99659 4.43354 5.52946 5.53942 ] pdfxs + (a) show + (ncementsshows) + [5.52946 4.43354 4.42357 8.2991 4.43354 5.26046 3.86572 8.50837 3.93536 5.52946 4.70253 + 7.19329 8.50837 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (t) + [8.4487 ] pdfxs + (t) show + (heyn) + [5.52946 4.42357 9.83348 5.53942 ] pdfxs + (ot) show + 133.768 192.5 m + (o) show + (nlyincre) + [5.53942 2.75975 9.25562 2.75975 5.53942 4.42357 3.90548 4.42357 ] pdfxs + (a) show + (se) + [3.93536 8.41874 ] pdfxs + (t) show + (hequ) + [5.52946 8.41874 5.26046 5.52946 ] pdfxs + (a) show + (lity) + [2.76971 2.76971 3.59672 9.24566 ] pdfxs + (o) show + (f) + [7.03387 ] pdfxs + (t) show + (he) + [5.52946 8.41874 ] pdfxs + (g) show + (ener) + [4.43354 5.52946 4.43354 3.89552 ] pdfxs + (at) show + (edcodebut) + [4.43354 9.52462 4.42357 5.26046 5.52946 8.41874 5.53942 5.52946 7.87084 ] pdfxs + (a) show + (lsodecre) + [2.75975 3.93536 8.9667 5.53942 4.42357 4.43354 3.89552 4.43354 ] pdfxs + (a) show + (se) + [3.92539 8.41874 ] pdfxs + (t) show + (herunnin) + [5.52946 8.41874 3.90548 5.52946 5.53942 5.53942 2.75975 5.53942 ] pdfxs + (g) show + 133.768 180.545 m + (t) show + (ime) + [2.76971 8.2991 7.75121 ] pdfxs + (o) show + (fthere) + [6.36635 3.86572 5.53942 7.75121 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 7.22316 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (r,) + [3.90548 6.08739 ] pdfxs + (a) show + (sshowninmorede) + [7.24307 3.93536 5.52946 4.7125 7.19329 8.8571 2.75975 8.8571 8.30907 4.97154 3.90548 + 7.75121 5.52946 4.43354 ] pdfxs + (ta) show + (ilinSecti) + [2.75975 6.09735 2.75975 8.8571 5.53942 4.42357 4.43354 3.86572 2.76971 ] pdfxs + (o) show + (n) + [8.8571 ] pdfxs + (4) show + (.) show + 303.133 89.3653 m + (1) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 2 2 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 133.768 657.235 m + /N71 14.346 Tf + (3) + [24.2161 ] pdfxs + (R) show + (e) + [7.3595 ] pdfxs + (\fn) show + (ementsto) + [7.3595 13.4566 7.3595 8.52152 6.26925 11.7494 6.2836 13.4422 ] pdfxs + (L) show + (i) + [4.49035 ] pdfxs + (n) show + (e) + [7.3595 ] pdfxs + (a) show + (r) + [11.9646 ] pdfxs + (Scan) show + 133.768 633.422 m + /N71 11.955 Tf + (3.1) + [6.7307 3.73 20.1801 ] pdfxs + (L) show + (ive) + [3.73 6.73059 10.616 ] pdfxs + (I) show + (nterv) + [7.10126 5.22437 6.13291 5.49929 6.34803 ] pdfxs + (a) show + (ls) + [3.74195 5.30802 ] pdfxs + 133.768 615.033 m + /N74 9.963 Tf + (Cen) + [7.19329 4.43354 5.2505 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (a) show + (l) + [7.39254 ] pdfxs + (t) show + (oline) + [9.61429 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [8.53827 3.92539 4.42357 ] pdfxs + (a) show + (nre) + [10.1722 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 8.52831 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nis) + [10.1623 2.76971 8.55819 ] pdfxs + (t) show + (hen) + [5.52946 9.05637 5.53942 ] pdfxs + (ot) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [10.1623 ] pdfxs + (o) show + (falivein) + [7.68147 9.60433 2.76971 2.76971 4.9815 9.05637 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (l.) + [2.76971 11.1187 ] pdfxs + (I) show + (n) show + 133.768 603.077 m + ([PS) + [2.76971 6.77484 5.53942 ] pdfxs + (99) show + (]alivein) + [6.92428 9.13607 2.75975 2.76971 4.9815 8.58811 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lisde\fned) + [6.92428 2.76971 8.07996 5.53942 4.42357 5.53942 5.52946 4.43354 9.68403 ] pdfxs + (a) show + (sinin) + [8.08993 2.75975 9.69399 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (l[) + [6.91432 2.76971 ] pdfxs + 341.936 603.077 m + /N95 9.963 Tf + (i;) + [3.42728 4.43353 ] pdfxs + (j) show + 354.469 603.077 m + /N74 9.963 Tf + (]where) + [6.92428 7.19329 5.52946 4.43354 3.90548 8.57814 ] pdfxs + (1) show + 400.171 603.077 m + /N98 9.963 Tf + (\024) show + 412.077 603.077 m + /N95 9.963 Tf + (i) show + 419.666 603.077 m + /N98 9.963 Tf + (\024) show + 431.571 603.077 m + /N95 9.963 Tf + (j) show + 440.401 603.077 m + /N98 9.963 Tf + (\024) show + 452.306 603.077 m + /N95 9.963 Tf + (N) show + 465.552 603.077 m + /N74 9.963 Tf + (f) + [3.04867 ] pdfxs + (o) show + (r) show + 133.768 591.122 m + (whichav) + [7.19329 5.53942 2.76971 4.14461 10.0327 9.47481 4.7125 ] pdfxs + (a) show + (ri) + [3.89552 2.76971 ] pdfxs + (a) show + (bleisliveins) + [5.53942 2.75975 8.92685 2.76971 8.42867 2.76971 2.75975 4.9815 8.92685 2.76971 10.0327 + 3.92539 ] pdfxs + (o) show + (me) + [8.2991 8.92685 ] pdfxs + (o) show + (rdering) + [3.90548 5.52946 4.43354 3.90548 2.75975 5.53942 9.47481 ] pdfxs + (1) show + 328.234 591.122 m + /N95 9.963 Tf + (:::N) + [4.42357 4.43353 4.42357 8.00023 ] pdfxs + 355.105 591.122 m + /N74 9.963 Tf + (o) show + (f) + [7.54199 ] pdfxs + (t) show + (heins) + [5.52946 8.92685 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ns.) + [5.53942 3.92539 10.7202 ] pdfxs + (I) show + (n) + [10.0327 ] pdfxs + (t) show + (his) + [5.53942 2.75975 3.92539 ] pdfxs + 133.768 579.167 m + (implemen) + [2.76971 8.2991 5.53942 2.75975 4.43354 8.2991 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (nIin) + [9.25562 7.32273 2.76971 5.2505 ] pdfxs + (t) show + (roduce) + [3.90548 5.26046 5.52946 5.53942 4.42357 8.14973 ] pdfxs + (t) show + (hec) + [5.53942 8.14973 4.42357 ] pdfxs + (o) show + (ncept) + [5.53942 4.42357 4.43354 5.52946 7.60184 ] pdfxs + (o) show + (fins) + [6.76487 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nsl) + [9.25562 3.93536 2.75975 ] pdfxs + (ot) show + (sin) + [7.65155 2.76971 9.25562 ] pdfxs + (o) show + (rder) + [3.90548 5.53942 4.42357 7.62168 ] pdfxs + (t) show + (oh) + [8.70766 5.53942 ] pdfxs + (a) show + (ndle) + [5.52946 5.53942 2.75975 4.42357 ] pdfxs + 133.768 567.212 m + (spillcode) + [3.92539 5.53942 2.76971 2.76971 6.34643 4.43354 5.26046 5.52946 8.02022 ] pdfxs + (a) show + (ndreusel) + [5.52946 9.1261 3.90548 4.42357 5.53942 3.92539 8.02022 2.75975 ] pdfxs + (a) show + (s) + [3.93536 ] pdfxs + (t) show + 242.951 567.212 m + /N101 9.963 Tf + (u) + [5.35016 ] pdfxs + (se) show + 261.291 567.212 m + /N74 9.963 Tf + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndsf) + [5.53942 5.52946 7.52204 3.04867 ] pdfxs + (o) show + (r) + [7.48219 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (in) + [2.76971 5.52946 ] pdfxs + (g) show + 365.428 567.212 m + /N101 9.963 Tf + (de) show + (f) show + 383.858 567.212 m + /N74 9.963 Tf + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndsina) + [5.53942 5.52946 7.52204 2.76971 9.1261 8.56818 ] pdfxs + (g) show + (eneric) + [4.42357 5.53942 4.42357 3.90548 2.75975 4.42357 ] pdfxs + 133.768 555.257 m + (way.Fur) + [6.91432 4.7125 4.42357 8.18958 5.67891 5.52946 3.90548 ] pdfxs + (t) show + (herm) + [5.52946 4.43354 3.89552 8.30907 ] pdfxs + (o) show + (re,livein) + [3.89552 4.43354 6.50584 2.75975 2.76971 4.9815 8.07999 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 7.58181 ] pdfxs + (a) show + (rec) + [3.89552 8.07999 4.43354 ] pdfxs + (o) show + (mp) + [8.2991 5.80842 ] pdfxs + (o) show + (sed) + [3.93536 4.42357 9.18588 ] pdfxs + (o) show + (ut) + [5.53942 7.52214 ] pdfxs + (o) show + (fliver) + [6.70509 2.75975 2.76971 4.9815 8.07999 3.90548 ] pdfxs + (a) show + (n) + [5.52946 ] pdfxs + (g) show + (es) + [4.43354 7.58181 ] pdfxs + (a) show + (nd) + [5.52946 9.19584 ] pdfxs + (t) show + (husc) + [5.2505 5.53942 7.58181 4.42357 ] pdfxs + (a) show + (n) show + 133.768 543.302 m + (representlife) + [3.90548 4.42357 5.53942 3.89552 4.43354 3.92539 4.43354 5.2505 7.20332 2.75975 2.76971 + 3.04867 4.42357 ] pdfxs + (t) show + (imeh) + [2.76971 8.2991 7.75121 5.52946 ] pdfxs + (o) show + (les.) + [2.76971 4.42357 3.93536 2.76971 ] pdfxs + 148.712 531.346 m + (E) + [6.7848 ] pdfxs + (a) show + (chinstruc) + [4.14461 9.80359 2.76971 5.52946 3.93536 3.86572 3.90548 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nh) + [9.79362 5.53942 ] pdfxs + (a) show + (sf) + [8.18956 3.04867 ] pdfxs + (o) show + (ursl) + [5.52946 8.16964 3.93536 2.75975 ] pdfxs + (ot) show + (s.) + [3.93536 10.0228 ] pdfxs + (A) show + 307.501 531.346 m + /N101 9.963 Tf + (lo) + [2.55049 4.58299 ] pdfxs + (ad) show + 330.108 531.346 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (ot) show + (,) + [7.27299 ] pdfxs + (a) show + 362.175 531.346 m + /N101 9.963 Tf + (u) + [5.35016 ] pdfxs + (se) show + 381.192 531.346 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (ot) show + (,) + [7.27299 ] pdfxs + (a) show + 413.259 531.346 m + /N101 9.963 Tf + (de) show + (f) show + 432.365 531.346 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (o) show + (t) + [8.13984 ] pdfxs + (a) show + (nd) + [5.53942 9.79362 ] pdfxs + (a) show + 133.768 519.391 m + /N101 9.963 Tf + (s) show + (t) + [3.30772 ] pdfxs + (o) show + (r) + [3.69624 ] pdfxs + (e) show + 158.672 519.391 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (ot) show + (.The) + [7.45232 7.19329 5.52946 4.42357 ] pdfxs + 202.237 519.391 m + /N101 9.963 Tf + (u) + [5.35016 ] pdfxs + (se) show + 220.394 519.391 m + /N74 9.963 Tf + (a) show + (nd) + [5.53942 5.53942 ] pdfxs + 239.851 519.391 m + /N101 9.963 Tf + (de) show + (f) show + 258.098 519.391 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (ot) show + (smodel) + [7.33274 8.30907 5.2505 5.53942 4.42357 6.17706 ] pdfxs + (t) show + (hewaym) + [5.52946 7.84088 6.91432 4.70253 8.66781 8.2991 ] pdfxs + (a) show + (chineinstruc) + [4.15457 5.52946 2.76971 5.53942 7.83092 2.76971 5.52946 3.93536 3.86572 3.90548 5.53942 + 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nsl) + [5.52946 7.33274 2.76971 ] pdfxs + (og) show + (ic) + [2.76971 4.42357 ] pdfxs + (a) show + (lly) + [2.76971 2.76971 5.26046 ] pdfxs + 133.768 507.436 m + (use) + [5.53942 3.92539 8.24936 ] pdfxs + (t) show + (heir) + [5.53942 4.42357 2.76971 7.72131 ] pdfxs + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (nds:) + [5.53942 5.52946 3.93536 8.19955 ] pdfxs + (a) show + (ll) + [2.76971 6.58554 ] pdfxs + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (nds) + [5.53942 5.52946 7.75118 ] pdfxs + (a) show + (re\frstre) + [3.90548 8.24936 5.53942 3.89552 3.93536 7.69151 3.90548 4.42357 ] pdfxs + (a) show + (d,c) + [5.53942 6.71506 4.42357 ] pdfxs + (o) show + (mpu) + [8.30907 5.52946 5.53942 ] pdfxs + (ta) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nisperf) + [9.35525 2.76971 7.75118 5.81839 4.42357 3.90548 3.03871 ] pdfxs + (o) show + (rmed) + [3.90548 8.2991 4.43354 9.35525 ] pdfxs + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 133.768 495.481 m + (\fn) + [5.53942 5.52946 ] pdfxs + (a) show + (lly) + [2.76971 2.76971 7.8608 ] pdfxs + (o) show + (per) + [5.80842 4.42357 3.90548 ] pdfxs + (a) show + (nds) + [5.53942 5.52946 6.5357 ] pdfxs + (a) show + (rewri) + [3.89552 7.03388 7.19329 3.90548 2.76971 ] pdfxs + (t) show + (tenb) + [3.86572 4.43354 8.13977 5.52946 ] pdfxs + (a) show + (ckin) + [4.15457 7.8608 2.76971 8.1298 ] pdfxs + (t) show + (heregis) + [5.53942 7.02392 3.90548 4.43354 4.97154 2.76971 3.93536 ] pdfxs + (t) show + (er\fle.Bymodeling) + [4.42357 6.50582 5.52946 2.76971 4.43354 6.95417 7.05373 7.8608 8.2991 5.26046 5.53942 + 4.42357 2.76971 2.76971 5.52946 7.58184 ] pdfxs + (t) show + (hisin) + [5.53942 2.76971 6.52574 2.76971 8.13977 ] pdfxs + (t) show + (helive) + [5.52946 7.03388 2.76971 2.75975 4.9815 4.42357 ] pdfxs + 133.768 483.526 m + (interv) + [2.76971 5.26046 3.86572 4.43354 3.90548 4.70253 ] pdfxs + (a) show + (lrepresen) + [6.29661 3.90548 4.42357 5.53942 3.89552 4.43354 3.92539 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (n,) + [5.52946 6.35639 ] pdfxs + (a) show + (dj) + [5.53942 3.03871 ] pdfxs + (a) show + (centlivein) + [4.43354 4.42357 5.26046 7.40258 2.76971 2.76971 4.9815 7.96044 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 7.46226 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (tdon) + [7.40258 5.53942 8.5084 5.53942 ] pdfxs + (o) show + (toverl) + [7.40258 4.70253 4.9815 4.43354 3.89552 2.76971 ] pdfxs + (a) show + (p,c) + [5.53942 6.34643 4.43354 ] pdfxs + (a) show + (nreuse) + [9.06633 3.89552 4.43354 5.52946 3.93536 7.96044 ] pdfxs + (a) show + 133.768 471.57 m + (re) + [3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 6.88441 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (ed) + [4.42357 8.51836 ] pdfxs + (t) show + (oal) + [7.9704 7.9704 2.76971 ] pdfxs + (a) show + (stusef) + [3.92539 6.86458 5.52946 3.93536 7.41247 3.03871 ] pdfxs + (o) show + (r) + [6.89438 ] pdfxs + (a) show + (nins) + [8.51836 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ndef.F) + [8.51836 5.53942 4.42357 3.04867 7.08369 5.66894 ] pdfxs + (o) show + (rex) + [6.89438 4.42357 5.26046 ] pdfxs + (a) show + (mplef) + [8.2991 5.53942 2.75975 7.42244 3.03871 ] pdfxs + (o) show + (rthiscode:) + [6.89438 3.86572 5.53942 2.76971 6.91429 4.42357 5.26046 5.53942 4.42357 2.76971 ] pdfxs + 118.423 451.645 m + /N104 4.98099 Tf + (0) show + 133.768 451.645 m + /N107 9.963 Tf + (A=) + [10.4611 10.4611 ] pdfxs + (...) show + 118.423 439.69 m + /N104 4.98099 Tf + (4) show + 133.768 439.69 m + /N107 9.963 Tf + (B=) + [10.4611 10.4611 ] pdfxs + (...) show + 118.423 427.735 m + /N104 4.98099 Tf + (8) show + 133.768 427.735 m + /N107 9.963 Tf + (C=A+B) + [10.4611 10.4611 10.4611 10.4611 10.4611 ] pdfxs + (;) show + (;) + [10.4611 ] pdfxs + (las) show + (t) + [10.4611 ] pdfxs + (us) show + (e) + [10.4611 ] pdfxs + (o) show + (f) + [10.4511 ] pdfxs + (A) show + 133.768 407.81 m + /N74 9.963 Tf + (wewillhavethef) + [6.91432 8.36892 7.19329 2.76971 2.76971 6.7051 5.53942 4.70253 4.9815 8.36892 3.86572 + 5.53942 8.36892 3.03871 ] pdfxs + (o) show + (llowingin) + [2.76971 2.76971 4.70253 7.19329 2.76971 5.52946 8.92685 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls:) + [2.75975 3.93536 2.76971 ] pdfxs + 297.579 407.81 m + /N95 9.963 Tf + (A) show + 308.848 407.81 m + /N74 9.963 Tf + (=[) + [11.5471 2.76971 ] pdfxs + (3) show + 328.142 407.81 m + /N95 9.963 Tf + (;) show + 332.57 407.81 m + /N74 9.963 Tf + (11\)) show + (,) show + 353.268 407.81 m + /N95 9.963 Tf + (B) show + 365.121 407.81 m + /N74 9.963 Tf + (=[) + [11.5471 2.76971 ] pdfxs + (7) show + 384.416 407.81 m + /N95 9.963 Tf + (;x) + [4.42357 5.6989 ] pdfxs + 394.537 407.81 m + /N74 9.963 Tf + (\)) show + (,and) + [6.8645 4.97154 5.53942 5.53942 ] pdfxs + 425.262 407.81 m + /N95 9.963 Tf + (C) show + 436.892 407.81 m + /N74 9.963 Tf + (=[) + [11.5471 2.76971 ] pdfxs + (11) show + 461.168 407.81 m + /N95 9.963 Tf + (;y) + [4.42357 4.88192 ] pdfxs + 470.838 407.81 m + /N74 9.963 Tf + (\)) show + (.) show + 133.768 395.854 m + (Bec) + [7.05373 4.43354 4.42357 ] pdfxs + (a) show + (use) + [5.53942 3.92539 7.02392 ] pdfxs + (o) show + (f) + [5.64902 ] pdfxs + (t) show + (hedi\013erentsl) + [5.52946 7.03388 5.52946 2.76971 5.80835 4.43354 3.89552 4.43354 5.2505 6.47602 3.93536 + 2.75975 ] pdfxs + (ot) show + (susedf) + [6.5357 5.52946 3.93536 4.42357 8.1298 3.04867 ] pdfxs + (o) show + (r) show + 295.451 395.854 m + /N101 9.963 Tf + (u) + [5.35016 ] pdfxs + (se) show + 312.802 395.854 m + /N74 9.963 Tf + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 331.452 395.854 m + /N101 9.963 Tf + (de) show + (f) show + 348.892 395.854 m + /N74 9.963 Tf + (t) show + (hef) + [5.52946 7.03388 3.03871 ] pdfxs + (a) show + (ct) + [4.43354 6.46606 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (ttheliver) + [6.47602 3.86572 5.53942 7.02392 2.76971 2.76971 4.9815 7.02392 3.90548 ] pdfxs + (a) show + (n) + [5.52946 ] pdfxs + (g) show + (es) + [4.43354 6.52574 ] pdfxs + (o) show + (f) show + 133.768 383.899 m + (A) + [10.0826 ] pdfxs + (a) show + (ndCdon) + [5.53942 8.14973 9.80359 5.53942 7.5918 5.53942 ] pdfxs + (o) show + (toverl) + [6.48599 4.70253 4.9815 4.43354 3.89552 2.76971 ] pdfxs + (a) show + (pc) + [8.14973 4.42357 ] pdfxs + (a) show + (nben) + [8.14973 5.81839 7.03388 5.53942 ] pdfxs + (at) show + (ur) + [5.52946 3.90548 ] pdfxs + (a) show + (llyexpressedin) + [2.76971 2.76971 7.87077 4.42357 5.26046 5.52946 3.90548 4.43354 3.92539 3.92539 4.43354 + 8.14973 2.75975 8.14973 ] pdfxs + (t) show + (hein) + [5.53942 7.04384 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lrepresen) + [5.38998 3.89552 4.43354 5.52946 3.90548 4.42357 3.93536 4.42357 5.26046 ] pdfxs + (tat) show + (i) + [2.75975 ] pdfxs + (o) show + (n) show + 133.768 371.944 m + (wi) + [7.19329 2.76971 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (o) show + (utrequiringfur) + [5.53942 8.29925 3.89552 4.43354 5.26046 5.52946 2.76971 3.90548 2.75975 5.53942 9.40507 + 3.03871 5.53942 3.89552 ] pdfxs + (t) show + (herinf) + [5.53942 4.42357 8.32905 2.76971 5.52946 3.04867 ] pdfxs + (o) show + (rm) + [3.89552 8.30907 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (n.The) + [5.53942 10.501 7.19329 5.53942 8.84714 ] pdfxs + (o) show + (ri) + [3.90548 2.75975 ] pdfxs + (g) show + (in) + [2.76971 5.53942 ] pdfxs + (a) show + (lline) + [7.18332 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [8.31909 3.93536 4.42357 ] pdfxs + (a) show + (n) + [9.963 ] pdfxs + (a) show + (l) + [2.75975 ] pdfxs + (go) show + (ri) + [3.90548 2.76971 ] pdfxs + (t) show + (hm) + [5.52946 12.7227 ] pdfxs + (a) show + (s) show + 133.768 359.989 m + (presen) + [5.53942 3.89552 4.43354 3.92539 4.43354 5.2505 ] pdfxs + (t) show + (edin[PS) + [4.43354 8.95673 2.76971 8.95673 2.76971 6.7848 5.52946 ] pdfxs + (99) show + (]doesn) + [6.19698 5.53942 5.2505 4.43354 7.35266 5.53942 ] pdfxs + (o) show + (thave) + [7.30295 5.52946 4.70253 4.9815 7.86081 ] pdfxs + (t) show + (hispr) + [5.52946 2.76971 7.35266 5.53942 3.90548 ] pdfxs + (o) show + (blemsince) + [5.52946 2.76971 4.42357 11.7363 3.92539 2.76971 5.52946 4.43354 7.85084 ] pdfxs + (t) show + (hede\fni) + [5.53942 7.85084 5.53942 4.42357 5.53942 5.52946 2.76971 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (nis) + [8.96669 2.76971 7.35266 ] pdfxs + (t) show + (hes) + [5.53942 7.85084 3.92539 ] pdfxs + (ta) show + (r) + [3.90548 ] pdfxs + (t) show + 133.768 348.034 m + (a) show + (ndl) + [5.53942 10.0427 2.75975 ] pdfxs + (a) show + (stuseis) + [3.93536 8.37896 5.53942 3.92539 8.93681 2.76971 8.42867 ] pdfxs + (t) show + (heend) + [5.53942 8.93681 4.42357 5.53942 10.0427 ] pdfxs + (o) show + (f) + [7.55195 ] pdfxs + (t) show + (hein) + [5.52946 8.93681 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (lwi) + [7.27299 7.19329 2.76971 ] pdfxs + (t) show + (hnoh) + [10.0427 5.52946 9.49474 5.52946 ] pdfxs + (o) show + (lesinbetween.Since) + [2.76971 4.42357 8.43863 2.76971 10.0427 5.80842 4.43354 3.59672 6.91432 4.43354 4.42357 + 5.53942 10.7501 5.53942 2.75975 5.53942 4.42357 8.93681 ] pdfxs + (t) show + (his) + [5.53942 2.75975 3.92539 ] pdfxs + 133.768 336.079 m + (implemen) + [2.76971 8.2991 5.53942 2.75975 4.43354 8.2991 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [7.93054 ] pdfxs + (ta) show + (kes) + [4.9815 4.42357 6.32648 ] pdfxs + (a) show + (dv) + [5.53942 4.70253 ] pdfxs + (a) show + (n) + [5.2505 ] pdfxs + (tag) show + (e) + [6.82466 ] pdfxs + (o) show + (flife) + [5.43979 2.76971 2.76971 3.03871 4.43354 ] pdfxs + (t) show + (imeh) + [2.75975 8.30907 6.82466 5.52946 ] pdfxs + (o) show + (les,thereis) + [2.76971 4.42357 3.93536 5.35013 3.86572 5.53942 4.42357 3.90548 6.82466 2.76971 6.32648 + ] pdfxs + (t) show + (heneed) + [5.52946 6.82466 5.52946 4.43354 4.42357 7.93054 ] pdfxs + (t) show + (odis) + [7.38258 5.52946 2.76971 3.92539 ] pdfxs + (t) show + (in) + [2.76971 5.53942 ] pdfxs + (g) show + (uish) + [5.52946 2.76971 3.92539 5.53942 ] pdfxs + 133.768 324.123 m + (betweenal) + [5.80842 4.43354 3.59672 6.91432 4.43354 4.42357 8.8571 8.29918 2.76971 ] pdfxs + (a) show + (stuse) + [3.93536 7.19336 5.52946 3.93536 7.74125 ] pdfxs + (a) show + (ndabre) + [5.53942 8.8571 8.29918 5.53942 3.89552 4.43354 ] pdfxs + (a) show + (kina) + [8.57814 2.76971 8.84714 8.30914 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ry'slife) + [3.90548 5.26046 2.75975 7.25303 2.76971 2.76971 3.03871 4.43354 ] pdfxs + (t) show + (ime.) + [2.75975 8.30907 4.42357 2.76971 ] pdfxs + 148.712 312.168 m + (The) + [7.19329 5.53942 4.42357 ] pdfxs + 170.755 312.168 m + /N101 9.963 Tf + (lo) + [2.55049 4.58299 ] pdfxs + (ad) show + 193.983 312.168 m + /N74 9.963 Tf + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 214.919 312.168 m + /N101 9.963 Tf + (s) show + (t) + [3.30772 ] pdfxs + (o) show + (r) + [3.69624 ] pdfxs + (e) show + 241.302 312.168 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (ot) show + (s) + [8.81722 ] pdfxs + (a) show + (reusedf) + [3.89552 9.3154 5.53942 3.92539 4.43354 10.4213 3.03871 ] pdfxs + (o) show + (rh) + [8.78735 5.53942 ] pdfxs + (a) show + (ndlingspillcode.Bec) + [5.52946 5.53942 2.75975 2.76971 5.53942 9.86337 3.92539 5.53942 2.76971 2.76971 7.65158 + 4.42357 5.26046 5.52946 4.43354 11.8859 7.05373 4.43354 4.42357 ] pdfxs + (a) show + (use) + [5.53942 3.92539 9.3154 ] pdfxs + (t) show + (his) + [5.52946 2.76971 3.92539 ] pdfxs + 133.768 300.213 m + (implemen) + [2.76971 8.2991 5.53942 2.75975 4.43354 8.2991 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (ndoesn) + [9.17592 5.52946 5.26046 4.42357 7.57185 5.53942 ] pdfxs + (o) show + (treservere) + [7.51218 3.89552 4.43354 3.92539 4.43354 3.89552 4.9815 8.07003 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ersf) + [4.43354 3.89552 7.57185 3.04867 ] pdfxs + (o) show + (rspilling) + [7.54197 3.92539 5.53942 2.75975 2.76971 2.76971 2.76971 5.52946 8.61799 ] pdfxs + (t) show + (emp) + [4.43354 8.2991 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ries,) + [3.90548 2.75975 4.43354 3.92539 6.48591 ] pdfxs + (t) show + (hereis) + [5.53942 4.42357 3.90548 8.07003 2.75975 7.57185 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 288.258 m + (need) + [5.53942 4.42357 4.42357 8.64788 ] pdfxs + (t) show + (oencodespillcodeinf) + [8.07999 4.43354 5.52946 4.43354 5.2505 5.53942 7.53203 3.92539 5.53942 2.76971 2.76971 + 5.8682 4.42357 5.26046 5.53942 7.53203 2.76971 5.52946 3.04867 ] pdfxs + (o) show + (rm) + [3.89552 8.30907 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (ninthelivein) + [8.64788 2.75975 8.64788 3.86572 5.53942 7.53203 2.76971 2.76971 4.9815 7.53203 2.75975 + 5.26046 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (l.) + [2.76971 7.12354 ] pdfxs + (A) show + (dding) + [5.53942 5.52946 2.76971 5.53942 8.07999 ] pdfxs + (t) show + (hespillcode) + [5.53942 7.53203 3.92539 5.53942 2.75975 2.76971 5.87817 4.42357 5.26046 5.52946 4.42357 + ] pdfxs + 133.768 276.303 m + (incremen) + [2.76971 5.52946 4.43354 3.89552 4.43354 8.2991 4.43354 5.2505 ] pdfxs + (ta) show + (llywillc) + [2.76971 2.76971 8.56818 7.19329 2.76971 2.76971 6.07743 4.42357 ] pdfxs + (a) show + (usearenumbering) + [5.53942 3.92539 7.74125 8.28921 3.90548 4.42357 5.26046 5.52946 8.0301 5.80842 4.43354 + 3.89552 2.76971 5.53942 8.28921 ] pdfxs + (o) show + (f) + [6.35639 ] pdfxs + (t) show + (heins) + [5.52946 7.74125 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nsf) + [5.52946 7.24307 3.04867 ] pdfxs + (o) show + (rthelivein) + [7.21319 3.86572 5.53942 7.74125 2.75975 2.76971 4.9815 7.74125 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 3.92539 ] pdfxs + 133.768 264.347 m + (t) show + (obec) + [8.10988 5.81839 7.56192 4.42357 ] pdfxs + (o) show + (rrec) + [3.90548 3.89552 4.43354 4.42357 ] pdfxs + (t) show + (,whichis) + [5.93794 7.19329 5.53942 2.76971 4.14461 8.66781 2.76971 7.06374 ] pdfxs + (a) show + (nexpensive) + [8.66781 4.42357 5.26046 5.80842 4.43354 5.52946 3.93536 2.75975 4.9815 7.56192 ] pdfxs + (o) show + (per) + [5.81839 4.42357 3.90548 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (n.) + [5.53942 7.1335 ] pdfxs + (I) show + (ns) + [5.52946 3.93536 ] pdfxs + (t) show + (e) + [4.42357 ] pdfxs + (a) show + (d,) + [5.53942 5.93794 ] pdfxs + (t) show + (helivein) + [5.52946 7.56192 2.76971 2.76971 4.9815 7.55195 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lf) + [5.89809 3.04867 ] pdfxs + (o) show + (r) + [7.03386 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 252.392 m + (spilled) + [3.92539 5.53942 2.76971 2.76971 2.75975 4.43354 9.28551 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ryisupd) + [3.90548 9.00655 2.76971 7.68144 5.52946 5.80842 5.53942 ] pdfxs + (at) show + (ed) + [4.42357 9.28551 ] pdfxs + (t) show + (o) + [8.72759 ] pdfxs + (ta) show + (keinto) + [4.9815 8.17962 2.76971 5.26046 3.86572 8.73755 ] pdfxs + (a) show + (cc) + [4.42357 4.43354 ] pdfxs + (o) show + (unt) + [5.52946 5.26046 7.62177 ] pdfxs + (t) show + (hew) + [5.53942 8.16966 6.92428 ] pdfxs + (o) show + (rstc) + [3.89552 3.93536 7.62177 4.43354 ] pdfxs + (a) show + (sespillcode:) + [3.92539 8.17962 3.92539 5.53942 2.75975 2.76971 6.5158 4.43354 5.26046 5.52946 4.43354 + 8.0501 ] pdfxs + (a) show + 133.768 240.437 m + (l) + [2.76971 ] pdfxs + (oa) show + (dbef) + [8.26929 5.80842 4.43354 3.03871 ] pdfxs + (o) show + (ree) + [3.90548 7.1634 4.43354 ] pdfxs + (a) show + (ch) + [4.14461 5.53942 ] pdfxs + 205.939 240.437 m + /N101 9.963 Tf + (us) + [5.35016 4.06487 ] pdfxs + (e) show + 223.429 240.437 m + /N74 9.963 Tf + (a) show + (ndas) + [5.52946 8.27925 7.72132 3.92539 ] pdfxs + (to) show + (re) + [3.90548 7.1634 ] pdfxs + (a) show + (ftere) + [3.04867 3.86572 4.43354 6.63534 4.43354 ] pdfxs + (a) show + (ch) + [4.14461 5.53942 ] pdfxs + 318.594 240.437 m + /N101 9.963 Tf + (de) show + (f) show + 333.435 240.437 m + /N74 9.963 Tf + (.) + [7.00399 ] pdfxs + (A) show + (f) + [3.03871 ] pdfxs + (t) show + (erupd) + [4.43354 6.63534 5.53942 5.80842 5.52946 ] pdfxs + (at) show + (in) + [2.76971 5.53942 ] pdfxs + (g) show + (,) + [5.61913 ] pdfxs + (t) show + (helivein) + [5.52946 7.17336 2.75975 2.76971 4.9815 7.17336 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (l) show + 133.768 228.483 m + (c) + [4.42357 ] pdfxs + (a) show + (nbeusedbytheunmodi\fedline) + [8.03017 5.80842 6.91432 5.52946 3.93536 4.42357 8.02021 5.26046 7.75121 3.86572 5.53942 + 6.91432 5.53942 5.52946 8.2991 5.26046 5.53942 2.75975 5.53942 4.42357 8.03017 2.75975 + 2.76971 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [6.38626 3.93536 4.42357 ] pdfxs + (a) show + (n) + [8.02021 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.90548 2.75975 ] pdfxs + (t) show + (hm) + [5.53942 10.7899 ] pdfxs + (t) show + (o) + [7.46229 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (easpillre) + [6.91432 7.46229 3.93536 5.52946 2.76971 2.76971 5.2505 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 6.38626 ] pdfxs + (to) show + 133.768 216.528 m + (t) show + (he) + [5.52946 7.57188 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ry.Theneedf) + [3.90548 4.42357 7.1335 7.20325 5.52946 7.56192 5.53942 4.42357 4.43354 8.66781 3.04867 + ] pdfxs + (o) show + (r) + [7.03386 ] pdfxs + (t) show + (he) + [5.53942 4.42357 ] pdfxs + 277.882 216.528 m + /N101 9.963 Tf + (lo) + [2.55049 4.58299 ] pdfxs + (ad) show + 299.361 216.528 m + /N74 9.963 Tf + (a) show + (nd) + [5.53942 5.53942 ] pdfxs + 318.549 216.528 m + /N101 9.963 Tf + (s) show + (t) + [3.30772 ] pdfxs + (o) show + (r) + [3.69624 ] pdfxs + (e) show + 343.184 216.528 m + /N74 9.963 Tf + (sl) + [3.92539 2.76971 ] pdfxs + (ot) show + (sisevidentin) + [7.06374 2.76971 7.06374 4.43354 5.26046 2.75975 5.53942 4.42357 5.26046 7.01403 2.76971 + 8.66781 ] pdfxs + (t) show + (hef) + [5.52946 7.57188 3.03871 ] pdfxs + (o) show + (llowin) + [2.76971 2.76971 4.70253 7.19329 2.76971 5.52946 ] pdfxs + (g) show + 133.768 204.573 m + (ex) + [4.42357 5.26046 ] pdfxs + (a) show + (mple:) + [8.30907 5.52946 2.76971 4.42357 2.76971 ] pdfxs + 118.423 184.647 m + /N104 4.98099 Tf + (0) show + 133.768 184.647 m + /N107 9.963 Tf + (A=B+) + [10.4611 10.4611 10.4611 10.4611 ] pdfxs + (...) show + 118.423 172.692 m + /N104 4.98099 Tf + (4) show + 133.768 172.692 m + /N107 9.963 Tf + (C=A+) + [10.4611 10.4611 10.4611 10.4611 ] pdfxs + (D) show + 133.768 152.767 m + /N74 9.963 Tf + (A) show + (ssuming) + [3.92539 3.93536 5.52946 8.30907 2.75975 5.53942 9.35526 ] pdfxs + (a) show + (ll) + [2.75975 7.14347 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (rieswillbespilledwehave) + [3.90548 2.76971 4.42357 8.29915 7.19329 2.76971 2.76971 7.1335 5.81839 8.79733 3.92539 + 5.53942 2.75975 2.76971 2.76971 4.42357 9.91318 6.91432 8.79733 5.53942 4.70253 4.9815 + 8.79733 ] pdfxs + (t) show + (hef) + [5.52946 8.79733 3.04867 ] pdfxs + (o) show + (llowinglivein) + [2.76971 2.75975 4.7125 7.19329 2.75975 5.53942 9.35526 2.75975 2.76971 4.9815 8.79733 + 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls:) + [2.76971 3.92539 2.76971 ] pdfxs + 133.768 140.812 m + /N95 9.963 Tf + (A) show + 144.008 140.812 m + /N74 9.963 Tf + (=[) + [10.511 2.76971 ] pdfxs + (3) show + 162.272 140.812 m + /N95 9.963 Tf + (;) show + 166.7 140.812 m + /N74 9.963 Tf + (4\)) show + 175.556 140.812 m + /N95 9.963 Tf + (;) show + 179.984 140.812 m + /N74 9.963 Tf + ([) + [2.76971 ] pdfxs + (4) show + 187.733 140.812 m + /N95 9.963 Tf + (;) show + 192.16 140.812 m + /N74 9.963 Tf + (5) show + (\)=[) + [6.64539 10.511 2.76971 ] pdfxs + (3) show + 222.048 140.812 m + /N95 9.963 Tf + (;) show + 226.476 140.812 m + /N74 9.963 Tf + (5\)) show + (,) show + 241.285 140.812 m + /N95 9.963 Tf + (B) show + 252.109 140.812 m + /N74 9.963 Tf + (=[) + [10.5209 2.75975 ] pdfxs + (0) show + 270.374 140.812 m + /N95 9.963 Tf + (;) show + 274.802 140.812 m + /N74 9.963 Tf + (2\)) show + (,) show + 289.611 140.812 m + /N95 9.963 Tf + (C) show + 300.211 140.812 m + /N74 9.963 Tf + (=[) + [10.5209 2.75975 ] pdfxs + (7) show + 318.476 140.812 m + /N95 9.963 Tf + (;x) + [4.42357 5.6989 ] pdfxs + 328.598 140.812 m + /N74 9.963 Tf + (\)) show + (,) + [5.94791 ] pdfxs + (a) show + (nd) + [5.53942 5.53942 ] pdfxs + 357.628 140.812 m + /N95 9.963 Tf + (D) show + 368.921 140.812 m + /N74 9.963 Tf + (=[) + [10.511 2.76971 ] pdfxs + (4) show + 387.185 140.812 m + /N95 9.963 Tf + (;) show + 391.613 140.812 m + /N74 9.963 Tf + (6\)) show + (.Bec) + [7.1335 7.06369 4.42357 4.43354 ] pdfxs + (a) show + (use) + [5.52946 3.93536 7.57188 ] pdfxs + (t) show + (helive) + [5.53942 7.58184 2.75975 2.76971 4.9815 4.42357 ] pdfxs + 133.768 128.857 m + (interv) + [2.76971 5.26046 3.86572 4.43354 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [2.75975 7.18329 ] pdfxs + (o) show + (fA) + [6.28665 10.7102 ] pdfxs + (a) show + (ndDoverl) + [5.53942 8.7774 10.8597 4.70253 4.9815 4.42357 3.90548 2.76971 ] pdfxs + (a) show + (p,twospillre) + [5.52946 6.02761 3.59672 6.92428 8.21947 3.93536 5.52946 2.76971 2.76971 6.00769 3.90548 + 4.42357 ] pdfxs + (g) show + (isters) + [2.76971 3.93536 3.86572 4.43354 3.90548 7.17333 ] pdfxs + (a) show + (reneeded) + [3.89552 7.67151 5.53942 4.42357 4.43354 5.52946 4.43354 8.7774 ] pdfxs + (t) show + (o) + [8.21947 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (e) + [7.67151 ] pdfxs + (t) show + (hecode) + [5.53942 7.67151 4.42357 5.26046 5.52946 4.42357 ] pdfxs + 303.133 89.3656 m + (2) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 3 3 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 133.768 657.235 m + /N74 9.963 Tf + (fr) + [3.04867 3.89552 ] pdfxs + (ag) show + (men) + [8.30907 4.42357 5.26046 ] pdfxs + (t) show + (.) + [7.27299 ] pdfxs + (A) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (ingB) + [2.76971 5.52946 8.32907 10.4113 ] pdfxs + (a) show + (ndCis) + [5.52946 8.87703 10.5508 2.75975 7.28292 ] pdfxs + (t) show + (rivi) + [3.89552 2.76971 5.26046 2.76971 ] pdfxs + (a) show + (lsince) + [6.10732 3.93536 2.75975 5.53942 4.42357 7.7811 ] pdfxs + (t) show + (heirlivein) + [5.52946 4.43354 2.75975 7.25304 2.76971 2.75975 4.9815 7.7811 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (lsdonotoverl) + [2.76971 7.28292 5.52946 8.32907 5.53942 4.97154 7.22325 4.70253 4.9815 4.43354 3.90548 + 2.75975 ] pdfxs + (a) show + (p) show + 133.768 645.28 m + (wi) + [7.19329 2.76971 ] pdfxs + (t) show + (h) + [8.8571 ] pdfxs + (a) show + (ny) + [5.2505 8.5881 ] pdfxs + (o) show + (thersowec) + [3.86572 5.53942 4.42357 7.22316 3.93536 8.29918 6.92428 7.74125 4.43354 ] pdfxs + (a) show + (nuse) + [8.8571 5.52946 3.93536 7.74125 ] pdfxs + (a) show + (ny) + [5.26046 8.57814 ] pdfxs + (o) show + (f) + [6.36635 ] pdfxs + (t) show + (hetwore) + [5.52946 7.75121 3.59672 6.92428 8.29918 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers.) + [4.43354 3.89552 3.93536 2.76971 ] pdfxs + 148.712 633.325 m + (Tobuildlivein) + [6.36636 8.44862 5.52946 5.53942 2.75975 2.76971 8.99658 2.76971 2.76971 4.9815 7.8907 + 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (lsinf) + [2.75975 7.39252 2.76971 5.53942 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n,Iuse) + [5.52946 6.26672 7.06369 5.53942 3.92539 7.8907 ] pdfxs + (t) show + (helivev) + [5.53942 7.8907 2.75975 2.76971 4.9815 7.8907 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (ble) + [5.52946 2.76971 7.8907 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (a) show + (lysisprovided) + [2.75975 5.26046 3.93536 2.75975 7.39252 5.53942 3.90548 4.70253 5.26046 2.75975 5.53942 + 4.42357 5.53942 ] pdfxs + 133.768 621.37 m + (by) + [5.26046 8.15969 ] pdfxs + (t) show + (he) + [5.53942 7.33277 ] pdfxs + (L) show + (L) + [5.12098 ] pdfxs + (V) show + (Mc) + [12.0354 4.42357 ] pdfxs + (o) show + (mpil) + [8.30907 5.52946 2.76971 2.76971 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nfr) + [8.43866 3.04867 3.90548 ] pdfxs + (a) show + (mew) + [8.2991 4.42357 6.92428 ] pdfxs + (o) show + (rk[) + [3.89552 8.16966 2.76971 ] pdfxs + (LA) show + (0) + [4.97154 ] pdfxs + (4) show + (].Thepseud) + [2.76971 7.06376 7.19329 5.52946 7.33277 5.53942 3.92539 4.43354 5.52946 5.53942 ] pdfxs + (o) show + (-codeforbuildinglive) + [3.3176 4.43354 5.2505 5.53942 7.33277 3.04867 4.97154 6.81467 5.52946 5.53942 2.76971 + 2.75975 5.53942 2.76971 5.52946 7.89069 2.76971 2.75975 4.9815 4.42357 ] pdfxs + 133.768 609.415 m + (interv) + [2.76971 5.26046 3.86572 4.43354 3.90548 4.70253 ] pdfxs + (a) show + (lsusinglivev) + [2.75975 7.25303 5.53942 3.92539 2.76971 5.53942 8.29918 2.76971 2.75975 4.9815 7.75121 + 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (bleinf) + [5.52946 2.76971 7.75121 2.76971 5.52946 3.04867 ] pdfxs + (o) show + (rm) + [3.89552 8.30907 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nisprovidedinFi) + [8.8571 2.76971 7.25303 5.52946 3.90548 4.70253 5.26046 2.75975 5.53942 4.42357 8.8571 + 2.76971 8.8571 6.50584 2.75975 ] pdfxs + (g) show + (ure) + [5.53942 3.90548 7.74125 ] pdfxs + (1) show + (.) show + 1 0 0 1 133.768 596.434 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 0 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -477.081 -593.445 cm + 118.423 585.076 m + /N104 4.98099 Tf + (1) show + 1 0 0 1 133.768 581.49 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -581.49 cm + 137.156 585.076 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (eac) show + (h) + [10.4611 ] pdfxs + (basi) show + (c) + [10.4611 ] pdfxs + (bloc) show + (kB) + [10.4511 10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (df) show + (s) + [10.4611 ] pdfxs + (orde) show + (r) + [10.4611 ] pdfxs + (do) show + 1 0 0 1 477.081 581.49 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -581.49 cm + 118.423 573.121 m + /N104 4.98099 Tf + (2) show + 1 0 0 1 133.768 569.535 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -569.535 cm + 158.077 573.121 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (eac) show + (h) + [10.4611 ] pdfxs + (instructio) show + (nI) + [10.4611 10.4511 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (B) show + 1 0 0 1 477.081 569.535 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -569.535 cm + 118.423 561.166 m + /N104 4.98099 Tf + (3) show + 1 0 0 1 133.768 557.579 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -557.579 cm + 178.998 561.166 m + /N107 9.963 Tf + (le) show + (tV) + [10.4611 10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (registe) show + (r) + [10.4611 ] pdfxs + (defin) show + (ed) + [5.22055 10.4611 ] pdfxs + (b) show + (y) + [10.4611 ] pdfxs + (I) show + 1 0 0 1 477.081 557.579 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -557.579 cm + 118.423 549.211 m + /N104 4.98099 Tf + (4) show + 1 0 0 1 133.768 545.624 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -545.624 cm + 178.998 549.211 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (interva) show + (l) + [10.4611 ] pdfxs + (fo) show + (r) + [10.4511 ] pdfxs + (registe) show + (r) + [10.4611 ] pdfxs + (V) show + 1 0 0 1 477.081 545.624 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -545.624 cm + 118.423 537.256 m + /N104 4.98099 Tf + (5) show + 1 0 0 1 133.768 533.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -533.669 cm + 178.998 537.256 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (I.) show + (n) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (inde) show + (x) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (ins) show + (t) + [5.22055 ] pdfxs + (ruction) show + 1 0 0 1 477.081 533.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -533.669 cm + 118.423 525.301 m + /N104 4.98099 Tf + (6) show + 1 0 0 1 133.768 521.714 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -521.714 cm + 118.423 513.345 m + (7) show + 1 0 0 1 133.768 509.759 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -509.759 cm + 178.998 513.345 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\() show + (V) + [10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (liv) show + (e) + [10.4611 ] pdfxs + (throug) show + (h) + [10.4611 ] pdfxs + (B\)) show + 1 0 0 1 477.081 509.759 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -509.759 cm + 118.423 501.39 m + /N104 4.98099 Tf + (8) show + 1 0 0 1 133.768 497.804 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -497.804 cm + 199.92 501.39 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (rang) show + (e) + [10.4611 ] pdfxs + ([DEF-SLOT\() show + (I) + [5.22055 ] pdfxs + (.n\)) show + (,) + [10.4611 ] pdfxs + (B.end+1) show + (\)) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (INT) show + 1 0 0 1 477.081 497.804 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -497.804 cm + 118.423 489.435 m + /N104 4.98099 Tf + (9) show + 1 0 0 1 133.768 485.848 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -485.848 cm + 178.998 489.435 m + /N107 9.963 Tf + (else) show + 1 0 0 1 477.081 485.848 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -485.848 cm + 115.033 477.48 m + /N104 4.98099 Tf + (10) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 473.893 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -473.893 cm + 199.92 477.48 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (B.kill[V].) show + (n) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (i) show + (n) + [5.22055 ] pdfxs + (de) show + (x) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (instructio) show + (n) + [10.4611 ] pdfxs + (tha) show + (t) + [10.4611 ] pdfxs + (kill) show + (s) + [10.4611 ] pdfxs + (V) show + 1 0 0 1 477.081 473.893 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -473.893 cm + 115.033 465.525 m + /N104 4.98099 Tf + (11) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 461.938 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -461.938 cm + 199.92 465.525 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (rang) show + (e) + [10.4611 ] pdfxs + ([DEF-SLOT\() show + (I) + [5.22055 ] pdfxs + (.n\)) show + (,) + [10.4611 ] pdfxs + (USE-SLOT\(B.kill[V].n\)\)) show + 1 0 0 1 477.081 461.938 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -461.938 cm + 115.033 453.57 m + /N104 4.98099 Tf + (12) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 449.983 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -449.983 cm + 115.033 441.614 m + (13) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 438.028 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -438.028 cm + 178.998 441.614 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (al) show + (l) + [10.4611 ] pdfxs + (basi) show + (c) + [10.4611 ] pdfxs + (block) show + (s) + [10.4611 ] pdfxs + (B) show + (') + [10.4511 ] pdfxs + (tha) show + (tV) + [10.4611 10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (liv) show + (e) + [10.4611 ] pdfxs + (through) show + 1 0 0 1 477.081 438.028 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -438.028 cm + 115.033 429.659 m + /N104 4.98099 Tf + (14) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 426.073 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -426.073 cm + 199.92 429.659 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (rang) show + (e) + [10.4611 ] pdfxs + ([B'.start) show + (,) + [10.4511 ] pdfxs + (B'.end+1) show + (\)) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (INT) show + 1 0 0 1 477.081 426.073 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -426.073 cm + 115.033 417.704 m + /N104 4.98099 Tf + (15) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 414.117 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -414.117 cm + 115.033 405.749 m + (16) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 402.162 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -402.162 cm + 178.998 405.749 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (al) show + (l) + [10.4611 ] pdfxs + (basi) show + (c) + [10.4611 ] pdfxs + (block) show + (s) + [10.4611 ] pdfxs + (B') show + (') + [10.4511 ] pdfxs + (tha) show + (tV) + [10.4611 10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (killed) show + 1 0 0 1 477.081 402.162 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -402.162 cm + 115.033 393.794 m + /N104 4.98099 Tf + (17) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 390.207 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -390.207 cm + 199.92 393.794 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (I) show + (') + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (instructio) show + (n) + [10.4511 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (B') show + (') + [10.4611 ] pdfxs + (tha) show + (t) + [10.4611 ] pdfxs + (kill) show + (s) + [10.4611 ] pdfxs + (V) show + 1 0 0 1 477.081 390.207 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -390.207 cm + 115.033 381.839 m + /N104 4.98099 Tf + (18) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 378.252 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -378.252 cm + 199.92 381.839 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (rang) show + (e) + [10.4611 ] pdfxs + ([B''.start) show + (,) + [10.4511 ] pdfxs + (USE-SLOT\(I'.n\)) show + (\)) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (INT) show + 1 0 0 1 477.081 378.252 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -378.252 cm + 115.033 369.883 m + /N104 4.98099 Tf + (19) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 366.297 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -343.313 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -343.313 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 -133.768 -362.91 cm + 203.479 331.029 m + /N74 9.963 Tf + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (1) show + (:COMP) + [7.20325 7.19329 7.75121 9.12618 6.7848 ] pdfxs + (U) show + (TE-) + [7.19329 6.77484 3.32757 ] pdfxs + (IN) show + (TERV) + [7.19329 6.7848 6.2268 6.35639 ] pdfxs + (AL) show + (S) + [8.8571 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.90548 2.75975 ] pdfxs + (t) show + (hm.) + [5.53942 8.2991 2.76971 ] pdfxs + 133.768 293.059 m + /N71 11.955 Tf + (3.2) + [6.7307 3.73 20.1801 ] pdfxs + (R) show + (egistermove) + [6.13291 6.7307 3.73 5.30802 5.22437 6.14487 9.97045 11.2138 6.34814 6.71863 10.628 + ] pdfxs + (c) show + (o) + [6.71874 ] pdfxs + (a) show + (les) + [3.74195 6.13291 5.30802 ] pdfxs + (c) show + (i) + [3.73 ] pdfxs + (n) show + (g) show + 133.768 274.67 m + /N74 9.963 Tf + (A) show + (fterlivein) + [3.04867 3.86572 4.43354 6.54567 2.76971 2.75975 4.9815 7.07373 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lc) + [5.40991 4.43354 ] pdfxs + (o) show + (mpu) + [8.2991 5.52946 5.53942 ] pdfxs + (tat) show + (i) + [2.75975 ] pdfxs + (o) show + (n,re) + [5.53942 5.54939 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ermovec) + [4.42357 6.54567 8.30907 4.70253 4.9815 7.07373 4.42357 ] pdfxs + (oa) show + (lescingisperf) + [2.76971 4.42357 3.93536 4.42357 2.76971 5.53942 7.62169 2.76971 6.57555 5.80842 4.42357 + 3.90548 3.03871 ] pdfxs + (o) show + (rmedinasin) + [3.90548 8.2991 4.43354 8.17962 2.76971 8.17962 7.62169 3.92539 2.76971 5.53942 ] pdfxs + (g) show + (le) + [2.75975 4.42357 ] pdfxs + 133.768 262.715 m + (p) + [5.53942 ] pdfxs + (a) show + (ssover) + [3.92539 7.39252 4.70253 4.9815 4.42357 7.36264 ] pdfxs + (t) show + (heins) + [5.53942 7.88073 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ns) + [8.99658 3.92539 ] pdfxs + (t) show + (re) + [3.90548 4.42357 ] pdfxs + (a) show + (m.The) + [8.2991 7.61173 7.19329 5.53942 7.8907 ] pdfxs + (a) show + (ppr) + [5.52946 5.53942 3.89552 ] pdfxs + (oa) show + (chissimil) + [4.15457 8.99658 2.76971 7.38255 3.93536 2.75975 8.30907 2.75975 2.76971 ] pdfxs + (a) show + (r) + [7.36264 ] pdfxs + (t) show + (o) + [8.43866 ] pdfxs + (t) show + (he) + [5.53942 7.88073 ] pdfxs + (o) show + (nedescribed) + [5.53942 7.88073 5.53942 4.42357 3.93536 4.42357 3.90548 2.76971 5.80842 4.42357 5.53942 + ] pdfxs + 133.768 250.76 m + (in[MP) + [2.76971 9.67407 2.76971 9.12618 6.7848 ] pdfxs + (02) show + (]in) + [6.90436 2.76971 9.67407 ] pdfxs + (t) show + (hesense) + [5.53942 8.56818 3.92539 4.43354 5.52946 3.93536 8.56818 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (tauni) + [8.02029 9.12611 5.52946 5.53942 2.76971 ] pdfxs + (o) show + (n-\fnd) + [5.52946 3.3176 5.53942 5.53942 9.67407 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hmisused.Them) + [5.52946 12.4437 2.76971 8.07 5.53942 3.92539 4.43354 5.52946 9.66411 7.19329 5.52946 + 8.57814 8.2991 ] pdfxs + (a) show + (indi\013er-) + [2.76971 9.67407 5.52946 2.76971 5.80835 4.43354 3.90548 3.3176 ] pdfxs + 133.768 238.804 m + (enceis) + [4.42357 5.53942 4.42357 8.09992 2.76971 7.60174 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (tj) + [7.54206 3.04867 ] pdfxs + (o) show + (ininglivein) + [2.76971 5.52946 2.76971 5.52946 8.65784 2.76971 2.76971 4.9815 8.09992 2.75975 5.26046 + ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lsisless) + [2.76971 7.60174 2.76971 7.60174 2.76971 4.42357 3.93536 7.60174 ] pdfxs + (agg) show + (ressivesinceI) + [3.89552 4.43354 3.92539 3.93536 2.75975 4.9815 8.09992 3.93536 2.76971 5.52946 4.43354 + 8.09992 7.26295 ] pdfxs + (o) show + (nlyj) + [5.53942 2.76971 8.92684 3.04867 ] pdfxs + (o) show + (in) + [2.75975 9.20581 ] pdfxs + (o) show + (nre) + [9.21577 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 3.90548 ] pdfxs + 133.768 226.849 m + (moveswhere) + [8.2991 4.7125 4.9815 4.42357 6.96411 7.19329 5.53942 4.42357 3.90548 4.42357 ] pdfxs + (a) show + (sin[MP) + [6.96411 2.76971 8.56818 2.76971 9.12618 6.7848 ] pdfxs + (02) show + (]) + [5.79846 ] pdfxs + (a) show + (nytwolivein) + [5.26046 8.28921 3.59672 6.92428 8.01025 2.76971 2.76971 4.9815 7.46229 2.76971 5.2505 + ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 6.96411 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (tdon) + [6.90443 5.53942 8.01025 5.53942 ] pdfxs + (o) show + (toverl) + [6.90443 4.70253 4.9815 4.43354 3.89552 2.76971 ] pdfxs + (a) show + (p) + [8.56818 ] pdfxs + (a) show + (nd) + [5.53942 8.56818 ] pdfxs + (a) show + (ren) + [3.89552 7.46229 5.53942 ] pdfxs + (ot) show + 133.768 214.894 m + (pre) + [5.53942 3.89552 4.43354 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (ed) + [4.43354 8.8571 ] pdfxs + (a) show + (rej) + [3.89552 7.75121 3.03871 ] pdfxs + (o) show + (ined.) + [2.76971 5.53942 4.42357 5.53942 2.76971 ] pdfxs + 148.712 202.939 m + (F) + [5.66894 ] pdfxs + (o) show + (reveryre) + [7.46227 4.42357 4.9815 4.43354 3.89552 8.81725 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ermove,) + [4.43354 7.45231 8.30907 4.70253 4.9815 4.42357 6.38628 ] pdfxs + (t) show + (hes) + [5.52946 7.98036 3.93536 ] pdfxs + (o) show + (urce) + [5.52946 3.90548 4.43354 7.98036 ] pdfxs + (a) show + (nddes) + [5.52946 9.09621 5.52946 4.43354 3.92539 ] pdfxs + (t) show + (in) + [2.76971 5.52946 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.08625 ] pdfxs + (o) show + (per) + [5.81839 4.42357 3.90548 ] pdfxs + (a) show + (nds) + [5.52946 5.53942 7.48218 ] pdfxs + (a) show + (re) + [3.90548 7.98036 ] pdfxs + (o) show + (bserved.) + [5.53942 3.92539 4.43354 3.89552 4.9815 4.43354 5.52946 2.76971 ] pdfxs + 133.768 190.984 m + (I) show + (f) + [7.58184 ] pdfxs + (t) show + (heliveinterv) + [5.53942 8.9667 2.75975 2.76971 4.9815 8.9667 2.76971 5.26046 3.86572 4.43354 3.90548 + 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 8.45856 ] pdfxs + (o) show + (fthetwo) + [7.5918 3.86572 5.53942 8.9667 3.59672 6.91432 9.52462 ] pdfxs + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndsdon) + [5.53942 5.52946 8.46852 5.53942 9.51466 5.53942 ] pdfxs + (o) show + (toverl) + [8.40885 4.7125 4.9815 4.42357 3.90548 2.75975 ] pdfxs + (a) show + (p,) + [5.53942 7.61173 ] pdfxs + (a) show + (nd) + [5.52946 10.0726 ] pdfxs + (a) show + (tle) + [8.41881 2.76971 4.42357 ] pdfxs + (a) show + (st) + [3.92539 8.41881 ] pdfxs + (o) show + (ne) + [5.52946 8.9667 ] pdfxs + (o) show + (f) show + 133.768 179.029 m + (t) show + (he) + [5.52946 8.75748 ] pdfxs + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndsisn) + [5.53942 5.52946 8.2593 2.75975 8.2593 5.52946 ] pdfxs + (o) show + (tpre) + [8.19962 5.53942 3.89552 4.43354 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (ed,) + [4.43354 5.52946 7.34273 ] pdfxs + (t) show + (helivein) + [5.53942 8.74751 2.76971 2.75975 4.9815 8.75748 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 8.2593 ] pdfxs + (a) show + (rej) + [3.89552 8.75748 3.03871 ] pdfxs + (o) show + (ined.Whenj) + [2.76971 5.53942 4.42357 5.52946 10.2121 10.232 5.53942 4.42357 9.86337 3.03871 ] pdfxs + (o) show + (inin) + [2.76971 5.53942 2.75975 5.53942 ] pdfxs + (g) show + 133.768 167.073 m + (auni) + [8.62796 5.53942 5.52946 2.76971 ] pdfxs + (o) show + (n-\fndd) + [5.53942 3.3176 5.53942 5.52946 9.18588 5.53942 ] pdfxs + (at) show + (as) + [8.62796 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (ureisused,whereb) + [5.52946 3.90548 8.07999 2.76971 7.57185 5.53942 3.92539 4.43354 5.52946 6.50584 7.19329 + 5.52946 4.43354 3.90548 8.07003 5.81839 ] pdfxs + (ot) show + (h) + [9.17592 ] pdfxs + (o) show + (per) + [5.81839 4.42357 3.90548 ] pdfxs + (a) show + (nds) + [5.52946 5.53942 7.58181 ] pdfxs + (g) show + (etarepresen) + [4.42357 7.52214 8.63792 3.89552 4.43354 5.52946 3.90548 4.43354 3.92539 4.42357 5.26046 + ] pdfxs + (tat) show + (ive.) + [2.76971 4.9815 4.42357 2.76971 ] pdfxs + 133.768 155.118 m + (I) show + (n) + [8.84714 ] pdfxs + (t) show + (hec) + [5.52946 7.74125 4.42357 ] pdfxs + (a) show + (se) + [3.93536 7.73129 ] pdfxs + (o) show + (ne) + [5.53942 7.74125 ] pdfxs + (o) show + (f) + [6.34643 ] pdfxs + (t) show + (hemispre) + [5.53942 4.42357 11.6168 2.76971 7.23311 5.53942 3.89552 4.43354 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (ted,therepresen) + [3.86572 4.43354 5.52946 6.08739 3.86572 5.53942 7.74125 3.89552 4.43354 5.52946 3.90548 + 4.42357 3.93536 4.42357 5.26046 ] pdfxs + (tat) show + (iveisth) + [2.76971 4.9815 7.73129 2.76971 7.24307 3.86572 5.53942 ] pdfxs + (a) show + (t\fxedre) + [7.1834 5.53942 5.2505 4.43354 8.84714 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 3.90548 ] pdfxs + 133.768 143.163 m + (ot) show + (herwiseitis) + [5.52946 4.43354 3.90548 7.19329 2.75975 3.93536 7.79107 2.76971 7.24317 2.76971 7.29289 + ] pdfxs + (t) show + (he) + [5.52946 7.80103 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (rywi) + [3.90548 8.62795 7.19329 2.76971 ] pdfxs + (t) show + (h) + [8.89695 ] pdfxs + (t) show + (helivein) + [5.52946 7.80103 2.76971 2.75975 4.9815 7.80103 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (lst) + [6.13721 3.93536 3.86572 ] pdfxs + (a) show + (r) + [3.90548 ] pdfxs + (t) show + (inge) + [2.76971 5.52946 8.34899 4.43354 ] pdfxs + (a) show + (rlier.Ich) + [3.89552 2.76971 2.76971 4.42357 3.90548 7.33277 6.96406 4.15457 5.52946 ] pdfxs + (o) show + (se) + [3.93536 7.79107 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 131.208 m + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (rywiththelivein) + [3.89552 8.53829 7.19329 2.76971 3.86572 8.81725 3.86572 5.53942 7.7014 2.76971 2.76971 + 4.9815 7.7014 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [6.04754 3.92539 ] pdfxs + (ta) show + (r) + [3.90548 ] pdfxs + (t) show + (inge) + [2.75975 5.53942 8.24936 4.43354 ] pdfxs + (a) show + (rlierso) + [3.90548 2.75975 2.76971 4.42357 7.1833 3.92539 8.25933 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (t) + [7.15351 ] pdfxs + (t) show + (he) + [5.52946 7.7014 ] pdfxs + (o) show + (rdering) + [3.90548 5.52946 4.43354 3.89552 2.76971 5.53942 8.24936 ] pdfxs + (o) show + (f) + [6.31654 ] pdfxs + (t) show + (helive) + [5.53942 7.7014 2.76971 2.75975 4.9815 4.42357 ] pdfxs + 133.768 119.253 m + (interv) + [2.76971 5.26046 3.86572 4.43354 3.90548 4.70253 ] pdfxs + (a) show + (lsispreserved.) + [2.75975 7.25303 2.76971 7.25303 5.52946 3.90548 4.42357 3.93536 4.42357 3.90548 4.9815 + 4.42357 5.53942 2.76971 ] pdfxs + 303.133 89.3652 m + (3) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 4 4 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 148.712 657.235 m + /N74 9.963 Tf + (I) + [8.05999 ] pdfxs + (o) show + (p) + [5.52946 ] pdfxs + (t) show + (ed) + [4.43354 9.99288 ] pdfxs + (t) show + (oj) + [9.44492 3.03871 ] pdfxs + (o) show + (in) + [2.76971 9.99288 ] pdfxs + (o) show + (nly) + [5.53942 2.76971 9.71392 ] pdfxs + (o) show + (nre) + [9.99288 3.90548 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (ermoves) + [4.42357 8.3689 8.2991 4.70253 4.9815 4.42357 8.39878 ] pdfxs + (a) show + (s) + [8.38882 ] pdfxs + (t) show + (hish) + [5.52946 2.76971 8.38882 5.53942 ] pdfxs + (a) show + (s) + [8.38882 ] pdfxs + (t) show + (hecle) + [5.53942 8.887 4.42357 2.76971 4.42357 ] pdfxs + (a) show + (r) + [8.3689 ] pdfxs + (a) show + (dv) + [5.52946 4.7125 ] pdfxs + (a) show + (n) + [5.2505 ] pdfxs + (tag) show + (e) + [8.887 ] pdfxs + (o) show + (f) show + 133.768 645.28 m + (elimin) + [4.42357 2.76971 2.76971 8.2991 2.76971 5.53942 ] pdfxs + (a) show + (ting) + [3.86572 2.76971 5.53942 8.0501 ] pdfxs + (t) show + (hemoveins) + [5.53942 7.50214 8.2991 4.70253 4.9815 7.50214 2.76971 5.53942 3.92539 ] pdfxs + (t) show + (ructi) + [3.90548 5.52946 4.43354 3.86572 2.76971 ] pdfxs + (o) show + (n.) + [5.53942 7.11358 ] pdfxs + (Jo) show + (ining) + [2.75975 5.53942 2.76971 5.52946 8.06007 ] pdfxs + (a) show + (nytwoin) + [5.2505 8.33903 3.59672 6.91432 8.06007 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 7.00396 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (tdon) + [6.94428 5.53942 8.0501 5.53942 ] pdfxs + (o) show + (toverl) + [6.94428 4.7125 4.97153 4.43354 3.90548 2.75975 ] pdfxs + (a) show + (p) show + 133.768 633.325 m + (incre) + [2.76971 5.52946 4.43354 3.89552 4.43354 ] pdfxs + (a) show + (ses) + [3.92539 4.43354 6.62537 ] pdfxs + (t) show + (henumber) + [5.53942 7.12355 5.26046 5.53942 8.02014 5.81839 4.42357 6.60545 ] pdfxs + (o) show + (foverl) + [5.74865 4.70253 4.9815 4.42357 3.90548 2.76971 ] pdfxs + (a) show + (ppingin) + [5.52946 5.53942 2.75975 5.53942 7.68147 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 6.62537 ] pdfxs + (a) show + (s) + [6.63533 ] pdfxs + (t) show + (henewj) + [5.52946 7.13351 5.52946 4.43354 9.89326 3.04867 ] pdfxs + (o) show + (inedin) + [2.76971 5.52946 4.42357 8.2394 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (loverl) + [5.46968 4.70253 4.9815 4.42357 3.90548 2.76971 ] pdfxs + (a) show + (ps) + [5.52946 3.92539 ] pdfxs + 133.768 621.37 m + (t) show + (heuni) + [5.52946 8.36892 5.53942 5.52946 2.76971 ] pdfxs + (o) show + (n) + [9.47481 ] pdfxs + (o) show + (f) + [6.98406 ] pdfxs + (t) show + (heoverl) + [5.52946 8.36892 4.70253 4.9815 4.43354 3.90548 2.75975 ] pdfxs + (a) show + (ppingin) + [5.53942 5.52946 2.76971 5.53942 8.91688 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 7.86078 ] pdfxs + (o) show + (f) + [6.98406 ] pdfxs + (t) show + (hetwoj) + [5.53942 8.36892 3.59672 6.91432 8.92685 3.03871 ] pdfxs + (o) show + (inedin) + [2.76971 5.52946 4.43354 9.47481 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (ls.) + [2.76971 3.93536 9.0464 ] pdfxs + (A) show + (l) + [2.76971 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (o) show + (u) + [5.53942 ] pdfxs + (g) show + (h) + [9.47481 ] pdfxs + (I) show + 133.768 609.415 m + (haven) + [5.53942 4.70253 4.9815 8.04014 5.52946 ] pdfxs + (o) show + (texperimen) + [7.48229 4.43354 5.2505 5.81839 4.42357 3.90548 2.76971 8.2991 4.42357 5.26046 ] pdfxs + (ta) show + (llyveri\fed) + [2.76971 2.76971 8.86707 4.9815 4.42357 3.90548 2.75975 5.53942 4.42357 9.14603 ] pdfxs + (t) show + (his,Iexpect) + [5.53942 2.76971 3.92539 6.44606 7.21314 4.42357 5.26046 5.80842 4.43354 4.42357 7.48229 + ] pdfxs + (t) show + (henumber) + [5.53942 8.03018 5.26046 5.53942 8.02014 5.81839 4.42357 7.51208 ] pdfxs + (o) show + (fspills) + [6.65528 3.92539 5.53942 2.76971 2.75975 2.76971 7.54196 ] pdfxs + (t) show + (oincre) + [8.5881 2.76971 5.52946 4.43354 3.90548 4.42357 ] pdfxs + (a) show + (se) + [3.92539 4.42357 ] pdfxs + 133.768 597.459 m + (wi) + [7.19329 2.76971 ] pdfxs + (t) show + (h) + [9.40507 ] pdfxs + (t) show + (hem) + [5.52946 8.30914 8.2991 ] pdfxs + (o) show + (rea) + [3.89552 8.30914 4.97154 ] pdfxs + (gg) show + (ressivec) + [3.90548 4.43354 3.92539 3.92539 2.76971 4.9815 8.29918 4.43354 ] pdfxs + (oa) show + (lescin) + [2.75975 4.43354 3.92539 4.43354 2.75975 5.53942 ] pdfxs + (g) show + (,) + [6.77484 ] pdfxs + (a) show + (saresult) + [7.801 8.8571 3.89552 4.43354 3.92539 5.53942 2.76971 7.74132 ] pdfxs + (o) show + (fincre) + [6.91432 2.76971 5.53942 4.42357 3.90548 4.42357 ] pdfxs + (a) show + (sedre) + [3.93536 4.42357 9.40507 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (erpressure.) + [4.43354 7.77112 5.52946 3.90548 4.43354 3.92539 3.92539 5.53942 3.90548 4.42357 2.76971 + ] pdfxs + 133.768 585.504 m + (Thepseud) + [7.19329 5.53942 7.75121 5.52946 3.92539 4.43354 5.52946 5.53942 ] pdfxs + (o) show + (-codef) + [3.3176 4.43354 5.2505 5.53942 7.75121 3.03871 ] pdfxs + (o) show + (rj) + [7.22316 3.04867 ] pdfxs + (o) show + (iningliveinterv) + [2.76971 5.52946 2.76971 5.52946 8.30914 2.76971 2.75975 4.9815 7.75121 2.76971 5.26046 + 3.86572 4.43354 3.89552 4.7125 ] pdfxs + (a) show + (lsisshowninFi) + [2.75975 7.25303 2.76971 7.25303 3.92539 5.53942 4.70253 7.19329 8.8571 2.76971 8.8571 + 6.49587 2.76971 ] pdfxs + (g) show + (ure) + [5.53942 3.89552 7.75121 ] pdfxs + (2) show + (.) show + 1 0 0 1 133.768 572.523 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 0 -2.98799 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -477.081 -569.535 cm + 118.423 561.166 m + /N104 4.98099 Tf + (1) show + 1 0 0 1 133.768 557.579 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -557.579 cm + 137.156 561.166 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (eac) show + (h) + [10.4611 ] pdfxs + (basi) show + (c) + [10.4611 ] pdfxs + (bloc) show + (kB) + [10.4511 10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (df) show + (s) + [10.4611 ] pdfxs + (orde) show + (r) + [10.4611 ] pdfxs + (do) show + 1 0 0 1 477.081 557.579 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -557.579 cm + 118.423 549.211 m + /N104 4.98099 Tf + (2) show + 1 0 0 1 133.768 545.624 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -545.624 cm + 158.077 549.211 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (eac) show + (h) + [10.4611 ] pdfxs + (instructio) show + (nI) + [10.4611 10.4511 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (B) show + 1 0 0 1 477.081 545.624 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -545.624 cm + 118.423 537.256 m + /N104 4.98099 Tf + (3) show + 1 0 0 1 133.768 533.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -533.669 cm + 178.998 537.256 m + /N107 9.963 Tf + (i) show + (fI) + [10.4611 10.4611 ] pdfxs + (i) show + (sa) + [10.4611 10.4611 ] pdfxs + (mov) show + (e) + [10.4611 ] pdfxs + (instruct) show + (i) + [5.22055 ] pdfxs + (on) show + 1 0 0 1 477.081 533.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -533.669 cm + 118.423 525.301 m + /N104 4.98099 Tf + (4) show + 1 0 0 1 133.768 521.714 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -521.714 cm + 199.92 525.301 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (DS) show + (T) + [10.4611 ] pdfxs + (b) show + (e) + [10.4611 ] pdfxs + (th) show + (e) + [10.4611 ] pdfxs + (desti) show + (n) + [5.22055 ] pdfxs + (atio) show + (n) + [10.4611 ] pdfxs + (register) show + 1 0 0 1 477.081 521.714 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -521.714 cm + 118.423 513.345 m + /N104 4.98099 Tf + (5) show + 1 0 0 1 133.768 509.759 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -509.759 cm + 199.92 513.345 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (SR) show + (C) + [10.4611 ] pdfxs + (b) show + (e) + [10.4611 ] pdfxs + (th) show + (e) + [10.4611 ] pdfxs + (sourc) show + (e) + [10.4511 ] pdfxs + (register) show + 1 0 0 1 477.081 509.759 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -509.759 cm + 118.423 501.39 m + /N104 4.98099 Tf + (6) show + 1 0 0 1 133.768 497.804 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -497.804 cm + 199.92 501.39 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (DSTIN) show + (T) + [10.4611 ] pdfxs + (b) show + (e) + [10.4611 ] pdfxs + (th) show + (e) + [10.4611 ] pdfxs + (in) show + (t) + [5.22055 ] pdfxs + (erva) show + (l) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (DST) show + 1 0 0 1 477.081 497.804 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -497.804 cm + 118.423 489.435 m + /N104 4.98099 Tf + (7) show + 1 0 0 1 133.768 485.848 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -485.848 cm + 199.92 489.435 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (SRCIN) show + (T) + [10.4611 ] pdfxs + (b) show + (e) + [10.4611 ] pdfxs + (th) show + (e) + [10.4611 ] pdfxs + (in) show + (t) + [5.22055 ] pdfxs + (erva) show + (l) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (SRC) show + 1 0 0 1 477.081 485.848 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -485.848 cm + 118.423 477.48 m + /N104 4.98099 Tf + (8) show + 1 0 0 1 133.768 473.893 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -473.893 cm + 118.423 465.525 m + (9) show + 1 0 0 1 133.768 461.938 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -461.938 cm + 199.92 465.525 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (DSTIN) show + (T) + [10.4611 ] pdfxs + (doe) show + (s) + [10.4611 ] pdfxs + (no) show + (t) + [10.4611 ] pdfxs + (o) show + (v) + [5.22055 ] pdfxs + (erla) show + (p) + [10.4611 ] pdfxs + (SRCINT) show + 1 0 0 1 477.081 461.938 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -461.938 cm + 115.033 453.57 m + /N104 4.98099 Tf + (10) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 449.983 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -449.983 cm + 220.841 453.57 m + /N107 9.963 Tf + (joi) show + (n) + [10.4611 ] pdfxs + (DSTIN) show + (T) + [10.4611 ] pdfxs + (wit) show + (h) + [10.4611 ] pdfxs + (SRCINT) show + 1 0 0 1 477.081 449.983 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -343.313 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -343.313 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 -133.768 -446.596 cm + 217.662 414.715 m + /N74 9.963 Tf + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (2) show + (:) + [7.20325 ] pdfxs + (J) show + (O) + [7.74125 ] pdfxs + (IN) show + (-) + [3.32757 ] pdfxs + (IN) show + (TERV) + [7.19329 6.77484 6.2268 6.36636 ] pdfxs + (AL) show + (S) + [8.8571 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hm.) + [5.53942 8.2991 2.76971 ] pdfxs + 133.768 376.746 m + /N71 11.955 Tf + (3.3Elimi) + [6.7307 3.73 20.1801 8.82286 3.74195 3.73 11.2138 3.73 ] pdfxs + (na) show + (tionofreservedregisters) + [5.22437 3.74195 6.71874 11.955 6.7307 8.59556 5.48733 6.14487 5.29606 6.14487 5.48733 + 6.73059 6.13291 11.955 5.48733 6.14487 6.71874 3.74195 5.30802 5.22437 6.13291 5.49929 + 5.30802 ] pdfxs + 133.768 358.356 m + /N74 9.963 Tf + (I) show + (nb) + [8.71762 5.81839 ] pdfxs + (ot) show + (h) + [8.71762 ] pdfxs + (t) show + (he) + [5.52946 7.61173 ] pdfxs + (o) show + (ri) + [3.90548 2.76971 ] pdfxs + (g) show + (in) + [2.75975 5.53942 ] pdfxs + (a) show + (l[PS) + [5.94791 2.76971 6.7848 5.52946 ] pdfxs + (99) show + (]) + [5.95787 ] pdfxs + (a) show + (ndimproved[MP) + [5.52946 8.71762 2.76971 8.2991 5.53942 3.90548 4.70253 4.9815 4.42357 8.71762 2.76971 + 9.13614 6.77484 ] pdfxs + (02) show + (]line) + [5.95787 2.75975 2.76971 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.09364 3.92539 4.42357 ] pdfxs + (a) show + (n) + [8.72758 ] pdfxs + (a) show + (l) + [2.75975 ] pdfxs + (go) show + (ri) + [3.90548 2.76971 ] pdfxs + (t) show + (hm) + [5.52946 11.4873 ] pdfxs + (t) show + (hereis) + [5.52946 4.43354 3.90548 7.61173 2.75975 3.92539 ] pdfxs + 133.768 346.401 m + (nomen) + [5.53942 7.53203 8.2991 4.43354 5.2505 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.08995 ] pdfxs + (o) show + (fhowspillcodeis) + [5.5992 5.52946 4.7125 9.74381 3.93536 5.52946 2.76971 2.76971 5.32024 4.42357 5.26046 + 5.52946 6.98406 2.76971 6.48588 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (ted.Fr) + [3.86572 4.43354 5.52946 6.94421 5.66894 3.90548 ] pdfxs + (o) show + (m) + [10.8596 ] pdfxs + (t) show + (heirpseud) + [5.52946 4.42357 2.76971 6.45601 5.53942 3.92539 4.43354 5.52946 5.53942 ] pdfxs + (o) show + (-code) + [3.3176 4.42357 5.26046 5.53942 6.98406 ] pdfxs + (a) show + (nd) + [5.52946 8.08995 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hm) + [5.53942 8.2991 ] pdfxs + 133.768 334.446 m + (descrip) + [5.53942 4.42357 3.92539 4.43354 3.90548 2.75975 5.53942 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [8.67777 ] pdfxs + (o) show + (nec) + [5.52946 7.56192 4.43354 ] pdfxs + (a) show + (ninfer) + [8.66781 2.76971 5.53942 3.03871 4.42357 7.04382 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (tre) + [7.01403 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers) + [4.43354 3.89552 7.06374 ] pdfxs + (a) show + (rereservedf) + [3.90548 7.56192 3.90548 4.42357 3.93536 4.42357 3.90548 4.9815 4.42357 8.67777 3.03871 + ] pdfxs + (o) show + (r) + [7.03386 ] pdfxs + (t) show + (hispurp) + [5.53942 2.76971 7.06374 5.52946 5.53942 3.90548 5.80842 ] pdfxs + (o) show + (se.) + [3.92539 4.43354 7.1335 ] pdfxs + (R) show + (eservin) + [4.42357 3.93536 4.42357 3.90548 5.26046 2.75975 5.53942 ] pdfxs + (g) show + 133.768 322.491 m + (2re) + [7.72132 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.93536 ] pdfxs + (t) show + (erswhen) + [4.42357 3.90548 6.66522 7.20325 5.52946 4.43354 8.26929 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (ingf) + [2.76971 5.52946 7.73129 3.03871 ] pdfxs + (o) show + (rare) + [6.6453 7.73129 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (erpo) + [4.42357 6.6453 5.80842 5.26046 ] pdfxs + (o) show + (r) + [6.6453 ] pdfxs + (I) show + (SAlike) + [5.53942 10.2121 2.76971 2.76971 4.9815 7.1634 ] pdfxs + (t) show + (hex) + [5.53942 7.17336 5.2505 ] pdfxs + (86) show + (,c) + [5.62909 4.42357 ] pdfxs + (a) show + (uses) + [5.53942 3.92539 4.43354 6.67518 ] pdfxs + (a) show + (n) + [8.26929 ] pdfxs + (a) show + (lm) + [2.76971 8.30907 ] pdfxs + (o) show + (s) + [3.92539 ] pdfxs + (t) show + 133.768 310.535 m + (30) show + (%l) + [12.2046 2.75975 ] pdfxs + (o) show + (ss) + [3.93536 7.83089 ] pdfxs + (o) show + (f) + [6.93424 ] pdfxs + (t) show + (heav) + [5.53942 8.32907 4.70253 4.70253 ] pdfxs + (a) show + (il) + [2.76971 2.75975 ] pdfxs + (a) show + (blere) + [5.53942 2.76971 8.31911 3.90548 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er\fle) + [4.42357 7.80101 5.53942 2.75975 8.32907 ] pdfxs + (\() show + (2) + [8.87703 ] pdfxs + (o) show + (ut) + [5.53942 7.77121 ] pdfxs + (o) show + (f7av) + [6.94421 8.87703 4.70253 4.70253 ] pdfxs + (a) show + (il) + [2.76971 2.76971 ] pdfxs + (a) show + (blere) + [5.52946 2.76971 8.32907 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers) + [4.43354 3.89552 3.93536 ] pdfxs + (\)) show + (.) + [8.92684 ] pdfxs + (I) show + (n) + [9.43496 ] pdfxs + (o) show + (rder) + [3.89552 5.53942 4.42357 3.90548 ] pdfxs + 133.768 298.58 m + (t) show + (om) + [8.22944 8.2991 ] pdfxs + (a) show + (ximizeperf) + [5.26046 2.76971 8.2991 2.76971 4.42357 7.67151 5.81839 4.42357 3.90548 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (a) show + (nce,especi) + [5.53942 4.42357 4.43354 6.02761 4.42357 3.92539 5.81839 4.42357 4.43354 2.75975 ] pdfxs + (a) show + (llyf) + [2.76971 2.76971 8.49844 3.04867 ] pdfxs + (o) show + (rregis) + [7.14345 3.90548 4.43354 4.97154 2.76971 3.93536 ] pdfxs + (t) show + (erpo) + [4.42357 7.14345 5.81839 5.26046 ] pdfxs + (o) show + (r) + [7.14345 ] pdfxs + (a) show + (rchitec) + [3.90548 4.14461 5.53942 2.76971 3.86572 4.43354 4.42357 ] pdfxs + (t) show + (ures,Idevised) + [5.53942 3.89552 4.43354 3.92539 6.02761 6.8445 5.53942 4.42357 5.26046 2.76971 3.92539 + 4.43354 8.7774 ] pdfxs + (a) show + 133.768 286.625 m + (way) + [6.91432 4.7125 8.84714 ] pdfxs + (t) show + (oreservenore) + [8.57814 3.90548 4.42357 3.93536 4.42357 3.90548 4.9815 8.02022 5.53942 8.57814 3.89552 + 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ersf) + [4.42357 3.90548 7.52204 3.04867 ] pdfxs + (o) show + (rspillcode.) + [7.50212 3.92539 5.53942 2.75975 2.76971 6.36635 4.42357 5.26046 5.53942 4.42357 8.02021 + ] pdfxs + (I) show + (ns) + [5.53942 3.92539 ] pdfxs + (t) show + (e) + [4.43354 ] pdfxs + (a) show + (dwhenspillin) + [9.1261 7.19329 5.53942 4.42357 9.13607 3.92539 5.53942 2.76971 2.75975 2.76971 2.76971 + 5.52946 ] pdfxs + (g) show + (,) + [6.4361 ] pdfxs + (t) show + (he) + [5.53942 8.02022 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hm) + [5.53942 8.2991 ] pdfxs + 133.768 274.67 m + (b) + [5.53942 ] pdfxs + (a) show + (ck) + [4.14461 5.26046 ] pdfxs + (t) show + (racks,upd) + [3.90548 4.97154 4.15457 5.26046 3.92539 8.03017 5.52946 5.81839 5.52946 ] pdfxs + (at) show + (es) + [4.43354 8.7973 ] pdfxs + (t) show + (hespilled) + [5.52946 9.30544 3.92539 5.53942 2.75975 2.76971 2.76971 4.42357 10.4113 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ry'slivein) + [3.90548 5.26046 2.75975 8.80726 2.75975 2.76971 4.9815 9.29548 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (l) + [7.64162 ] pdfxs + (a) show + (ndres) + [5.52946 10.4113 3.89552 4.43354 3.92539 ] pdfxs + (ta) show + (r) + [3.90548 ] pdfxs + (t) show + (s.This) + [3.92539 11.846 7.19329 5.53942 2.75975 3.92539 ] pdfxs + 133.768 262.715 m + (m) + [8.2991 ] pdfxs + (a) show + (kes) + [4.9815 4.43354 7.56189 ] pdfxs + (t) show + (he) + [5.52946 8.07003 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (g) show + (ori) + [4.97154 3.90548 2.76971 ] pdfxs + (t) show + (hmsuper-line) + [5.52946 11.9456 3.92539 5.52946 5.81839 4.42357 3.90548 3.3176 2.76971 2.76971 5.52946 + 4.43354 ] pdfxs + (a) show + (rwi) + [7.53201 7.19329 2.76971 ] pdfxs + (t) show + (haw) + [9.16595 8.61799 6.92428 ] pdfxs + (o) show + (rstc) + [3.89552 3.93536 7.51218 4.42357 ] pdfxs + (a) show + (sequ) + [3.92539 8.07003 5.26046 5.52946 ] pdfxs + (a) show + (dr) + [5.53942 3.89552 ] pdfxs + (at) show + (icc) + [2.76971 8.06007 4.43354 ] pdfxs + (o) show + (mplexity) + [8.2991 5.52946 2.76971 4.43354 5.2505 2.76971 3.59672 8.89696 ] pdfxs + (a) show + (si) + [7.56189 2.76971 ] pdfxs + (t) show + 133.768 250.76 m + (c) + [4.42357 ] pdfxs + (a) show + (np) + [8.35895 5.80842 ] pdfxs + (ot) show + (en) + [4.42357 5.26046 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (a) show + (llyb) + [2.76971 2.75975 8.07999 5.52946 ] pdfxs + (a) show + (ck) + [4.15457 5.26046 ] pdfxs + (t) show + (r) + [3.89552 ] pdfxs + (a) show + (ck) + [4.15457 8.07003 ] pdfxs + (o) show + (nevery) + [8.35895 4.42357 4.9815 4.43354 3.89552 8.07999 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.34899 ] pdfxs + (att) show + (emp) + [4.43354 8.2991 5.52946 ] pdfxs + (t) show + (.) + [7.03387 ] pdfxs + (N) show + (ever) + [4.42357 4.9815 4.42357 3.90548 ] pdfxs + (t) show + (heless,inpr) + [5.53942 4.42357 2.76971 4.42357 3.93536 3.92539 5.68887 2.75975 8.35895 5.52946 3.90548 + ] pdfxs + (a) show + (c) + [4.42357 ] pdfxs + (t) show + (ice) + [2.76971 4.42357 4.42357 ] pdfxs + 133.768 238.804 m + (t) show + (herunning) + [5.52946 7.75121 3.90548 5.52946 5.53942 5.52946 2.76971 5.53942 8.29918 ] pdfxs + (t) show + (imeiss) + [2.76971 8.2991 7.75121 2.76971 7.24307 3.93536 ] pdfxs + (t) show + (illline) + [2.75975 2.76971 6.08739 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (r.) + [3.89552 2.76971 ] pdfxs + 148.712 226.849 m + (Therelev) + [7.19329 5.53942 8.11985 3.90548 4.43354 2.75975 4.43354 4.70253 ] pdfxs + (a) show + (ntch) + [5.26046 7.57195 4.15457 5.52946 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (es) + [4.42357 7.63163 ] pdfxs + (t) show + (o) + [8.67777 ] pdfxs + (t) show + (heline) + [5.52946 8.12981 2.76971 2.76971 5.52946 4.42357 ] pdfxs + (a) show + (rsc) + [7.60175 3.93536 4.42357 ] pdfxs + (a) show + (n) + [9.2357 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hm) + [5.53942 11.9954 ] pdfxs + (a) show + (sre\fnedin[MP) + [7.63163 3.90548 4.42357 5.53942 5.52946 4.42357 9.2357 2.76971 9.2357 2.76971 9.12618 + 6.7848 ] pdfxs + (02) show + (]) + [6.46598 ] pdfxs + (a) show + (re) + [3.89552 4.42357 ] pdfxs + 133.768 214.894 m + (shownin) + [3.92539 5.53942 4.70253 7.19329 7.76117 2.76971 7.75121 ] pdfxs + (t) show + (hepseud) + [5.52946 6.65528 5.52946 3.93536 4.42357 5.53942 5.52946 ] pdfxs + (o) show + (-codeinFi) + [3.32757 4.42357 5.26046 5.52946 6.65528 2.75975 7.76117 6.50584 2.75975 ] pdfxs + (g) show + (ure) + [5.53942 3.90548 6.64532 ] pdfxs + (4) show + (.When) + [6.82465 10.242 5.53942 4.42357 7.75121 ] pdfxs + (t) show + (here) + [5.53942 4.42357 3.90548 6.64532 ] pdfxs + (a) show + (renom) + [3.90548 6.64532 5.53942 7.20325 8.2991 ] pdfxs + (o) show + (refreere) + [3.90548 6.64532 3.03871 3.90548 4.43354 6.64532 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers) + [4.42357 3.90548 6.14714 ] pdfxs + (\() show + (line) + [2.76971 2.76971 5.52946 4.42357 ] pdfxs + 133.768 202.939 m + (22\)) show + (,) + [5.5195 ] pdfxs + (t) show + (he) + [5.53942 7.04384 ] pdfxs + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ry) + [3.89552 7.88073 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (toverl) + [6.49595 4.70253 4.9815 4.42357 3.90548 2.76971 ] pdfxs + (a) show + (pswi) + [5.52946 6.54566 7.20325 2.75975 ] pdfxs + (t) show + (h) + [8.14973 ] pdfxs + (t) show + (hecurrentinterv) + [5.53942 7.04384 4.42357 5.53942 3.90548 3.89552 4.43354 5.2505 6.49595 2.76971 5.26046 + 3.86572 4.43354 3.89552 4.7125 ] pdfxs + (a) show + (l) + [5.38002 ] pdfxs + (a) show + (ndh) + [5.53942 8.14973 5.52946 ] pdfxs + (a) show + (stheminimum) + [6.55562 3.86572 5.53942 7.04384 8.2991 2.76971 5.53942 2.75975 8.0301 5.53942 8.2991 + ] pdfxs + 133.768 190.984 m + (spillwei) + [3.92539 5.53942 2.76971 2.76971 7.35269 6.91432 4.43354 2.76971 ] pdfxs + (g) show + (htisspilled.) + [5.2505 8.46862 2.76971 8.51833 3.92539 5.53942 2.76971 2.75975 2.76971 4.43354 5.52946 + 11.0091 ] pdfxs + (I) show + (tisw) + [8.45866 2.76971 8.51833 6.92428 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (t) show + (hn) + [10.1324 5.52946 ] pdfxs + (ot) show + (ing) + [2.76971 5.52946 9.57444 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (t) + [8.46862 ] pdfxs + (t) show + (hecurrentin) + [5.52946 9.02648 4.42357 5.53942 3.89552 3.90548 4.42357 5.26046 8.46862 2.75975 5.26046 + ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (lisaspill) + [7.36265 2.76971 8.51833 9.57444 3.92539 5.53942 2.75975 2.76971 2.76971 ] pdfxs + 133.768 179.029 m + (c) + [4.42357 ] pdfxs + (a) show + (ndid) + [5.53942 5.53942 2.75975 5.53942 ] pdfxs + (at) show + (e) + [6.86451 ] pdfxs + (a) show + (swell.) + [6.37629 6.91432 4.42357 2.76971 2.76971 6.90436 ] pdfxs + (I) show + (n) + [7.9704 ] pdfxs + (t) show + (hec) + [5.53942 6.86451 4.43354 ] pdfxs + (a) show + (se) + [3.92539 6.86451 ] pdfxs + (t) show + (hecurrentin) + [5.53942 6.86451 4.43354 5.52946 3.90548 3.89552 4.43354 5.26046 6.31662 2.75975 5.26046 + ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lisspillednor) + [5.21065 2.76971 6.36633 3.93536 5.52946 2.76971 2.76971 2.75975 4.43354 7.9704 5.53942 + 7.42243 3.90548 ] pdfxs + (o) show + (llb) + [2.75975 2.76971 5.53942 ] pdfxs + (a) show + (ckisneeded.) + [4.14461 7.7014 2.76971 6.36633 5.53942 4.42357 4.43354 5.52946 4.43354 5.52946 2.76971 + ] pdfxs + 133.768 167.073 m + (O) + [7.75121 ] pdfxs + (t) show + (herwise,) + [5.52946 4.43354 3.89552 7.19329 2.76971 3.93536 4.42357 7.09365 ] pdfxs + (a) show + (ll) + [2.75975 6.89439 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nsneed) + [5.53942 8.05007 5.52946 4.43354 4.42357 9.65414 ] pdfxs + (t) show + (obeund) + [9.10618 5.80842 8.54825 5.53942 5.52946 5.53942 ] pdfxs + (o) show + (ne) + [5.52946 8.54825 ] pdfxs + (a) show + (sshowninFi) + [8.05007 3.93536 5.52946 4.70253 7.20325 9.65414 2.76971 9.65414 6.50584 2.75975 ] pdfxs + (g) show + (ure) + [5.53942 3.89552 8.55822 ] pdfxs + (6) show + (.) + [9.59437 ] pdfxs + (I) show + (nterv) + [5.26046 3.86572 4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 3.92539 ] pdfxs + 133.768 155.118 m + (a) show + (rep) + [3.90548 8.08996 5.80842 ] pdfxs + (o) show + (pped) + [5.53942 5.80842 4.42357 9.20581 ] pdfxs + (o) show + (ut) + [5.52946 7.54206 ] pdfxs + (o) show + (f) + [6.70509 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 233.75 155.118 m + /N101 9.963 Tf + (ha) show + (ndle) + [5.59917 5.60918 2.54053 4.07493 ] pdfxs + (d) show + 271.541 155.118 m + /N74 9.963 Tf + (set) + [3.92539 4.43354 7.5321 ] pdfxs + (a) show + (ndhave) + [5.53942 9.19584 5.53942 4.70253 4.9815 8.08996 ] pdfxs + (t) show + (heir) + [5.52946 4.43354 2.76971 7.5619 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nsundoneun) + [5.53942 7.59178 5.52946 5.53942 5.53942 4.97154 5.53942 8.08996 5.53942 5.2505 ] pdfxs + (t) show + (ilthe) + [2.76971 6.4361 3.86572 5.53942 4.42357 ] pdfxs + 133.768 143.163 m + (s) + [3.92539 ] pdfxs + (ta) show + (rt) + [3.90548 6.9144 ] pdfxs + (o) show + (f) + [6.09735 ] pdfxs + (t) show + (hespilledinterv) + [5.52946 7.47225 3.93536 5.52946 2.76971 2.76971 2.75975 4.43354 8.57814 2.76971 5.26046 + 3.86572 4.43354 3.89552 4.7125 ] pdfxs + (a) show + (l.Byperf) + [2.75975 7.10362 7.06369 8.29918 5.80842 4.43354 3.90548 3.03871 ] pdfxs + (o) show + (rming) + [3.90548 8.2991 2.76971 5.52946 8.03018 ] pdfxs + (t) show + (her) + [5.52946 7.47225 3.90548 ] pdfxs + (o) show + (llb) + [2.76971 2.76971 5.52946 ] pdfxs + (a) show + (ck,spilled) + [4.15457 5.26046 5.85824 3.93536 5.52946 2.76971 2.76971 2.76971 4.42357 8.57814 ] pdfxs + (t) show + (emp) + [4.43354 8.2991 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ries) + [3.90548 2.75975 4.43354 6.97407 ] pdfxs + (a) show + (re) + [3.89552 4.42357 ] pdfxs + 133.768 131.208 m + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (edin) + [4.42357 9.38514 2.76971 9.38514 ] pdfxs + (t) show + (hec) + [5.53942 8.27925 4.42357 ] pdfxs + (o) show + (n) + [5.26046 ] pdfxs + (t) show + (ext) + [4.42357 5.26046 7.73136 ] pdfxs + (o) show + (fline) + [6.89439 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.7512 3.92539 4.43354 ] pdfxs + (a) show + (n) + [9.38514 ] pdfxs + (a) show + (nd) + [5.53942 9.38514 ] pdfxs + (a) show + (ssuchreservingre) + [7.78107 3.92539 5.53942 4.15457 9.38514 3.90548 4.42357 3.92539 4.43354 3.89552 5.26046 + 2.76971 5.53942 8.82722 3.90548 4.42357 ] pdfxs + (g) show + (istersf) + [2.76971 3.93536 3.86572 4.43354 3.89552 7.79104 3.03871 ] pdfxs + (o) show + (rspill) + [7.76116 3.92539 5.53942 2.75975 2.76971 2.76971 ] pdfxs + 133.768 119.253 m + (codeisnol) + [4.42357 5.26046 5.53942 7.75121 2.75975 7.25303 5.53942 8.29918 2.76971 ] pdfxs + (o) show + (n) + [5.52946 ] pdfxs + (g) show + (errequired.) + [4.43354 7.22316 3.89552 4.43354 5.2505 5.53942 2.76971 3.89552 4.43354 5.52946 2.76971 + ] pdfxs + 303.133 89.3653 m + (4) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 5 5 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 133.768 657.235 m + /N71 11.955 Tf + (3.4F) + [6.7307 3.73 20.1801 7.32842 ] pdfxs + (u) show + (si) + [5.30802 3.73 ] pdfxs + (n) show + (gs) + [11.2138 5.30802 ] pdfxs + (p) show + (ill) + [3.73 3.74195 8.21312 ] pdfxs + (c) show + (o) + [7.1013 ] pdfxs + (d) show + (eintoi) + [10.616 3.74195 7.08931 5.23633 11.2019 3.74195 ] pdfxs + (n) show + (str) + [5.30802 5.22437 5.49929 ] pdfxs + (uc) show + (tio) + [5.22437 3.74195 6.71874 ] pdfxs + (n) show + (s) show + 133.768 638.846 m + /N74 9.963 Tf + (S) + [5.53942 ] pdfxs + (o) show + (me) + [8.2991 8.46855 ] pdfxs + (a) show + (rchi) + [3.90548 4.15457 5.52946 2.76971 ] pdfxs + (t) show + (ectures,like) + [4.42357 4.43354 3.86572 5.53942 3.90548 4.42357 3.93536 6.98406 2.76971 2.76971 4.9815 + 8.46855 ] pdfxs + (t) show + (hex) + [5.53942 8.46855 5.26046 ] pdfxs + (86) show + (,) + [6.99402 ] pdfxs + (a) show + (llowmem) + [2.76971 2.75975 4.7125 11.2383 8.2991 4.42357 8.30907 ] pdfxs + (o) show + (ryins) + [3.89552 9.30544 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.5844 ] pdfxs + (o) show + (per) + [5.80842 4.42357 3.90548 ] pdfxs + (a) show + (nds.) + [5.52946 5.53942 3.92539 9.37518 ] pdfxs + (I) show + (n) + [9.57444 ] pdfxs + (t) show + (his) + [5.53942 2.75975 3.92539 ] pdfxs + 133.768 626.891 m + (implemen) + [2.76971 8.2991 5.53942 2.75975 4.43354 8.2991 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (n,Ishowhow) + [5.52946 7.07373 7.70132 3.92539 5.53942 4.70253 11.298 5.53942 4.70253 11.298 ] pdfxs + (t) show + (o) + [9.08625 ] pdfxs + (ta) show + (ke) + [4.9815 8.52833 ] pdfxs + (a) show + (dv) + [5.52946 4.7125 ] pdfxs + (a) show + (n) + [5.2505 ] pdfxs + (tag) show + (e) + [8.53829 ] pdfxs + (o) show + (f) + [7.14347 ] pdfxs + (t) show + (hisfe) + [5.52946 2.76971 8.04011 3.03871 4.43354 ] pdfxs + (a) show + (ture.Whenupd) + [3.86572 5.53942 3.90548 4.42357 9.54455 10.242 5.52946 4.43354 9.63422 5.53942 5.80842 + 5.53942 ] pdfxs + (at) show + (-) show + 133.768 614.936 m + (ing) + [2.76971 5.52946 9.39511 ] pdfxs + (t) show + (helivein) + [5.52946 8.83718 2.76971 2.76971 4.9815 8.83718 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (l) + [7.18332 ] pdfxs + (o) show + (faspilled) + [7.45232 9.38514 3.93536 5.52946 2.76971 2.76971 2.76971 4.42357 9.94307 ] pdfxs + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ry,liver) + [3.89552 4.43353 7.44236 2.76971 2.76971 4.9815 8.83718 3.89552 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (es) + [4.42357 8.339 ] pdfxs + (a) show + (re) + [3.90548 8.83718 ] pdfxs + (o) show + (nly) + [5.53942 2.75975 9.67407 ] pdfxs + (a) show + (ddedwhen) + [5.52946 5.53942 4.42357 9.94307 7.19329 5.53942 4.42357 5.53942 ] pdfxs + 133.768 602.98 m + (t) show + (hemem) + [5.52946 8.37888 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (ryreferencec) + [3.90548 9.19585 3.90548 4.42357 3.04867 4.42357 3.90548 4.42357 5.53942 4.42357 8.37888 + 4.42357 ] pdfxs + (a) show + (nn) + [5.53942 5.52946 ] pdfxs + (o) show + (tbefusedin) + [7.82103 5.81839 8.36892 3.04867 5.52946 3.93536 4.42357 9.48477 2.75975 9.48477 ] pdfxs + (t) show + (heins) + [5.52946 8.37888 2.75975 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n.F) + [5.52946 9.06633 5.67891 ] pdfxs + (o) show + (rex) + [7.84086 4.43354 5.26046 ] pdfxs + (a) show + (mplein) + [8.2991 5.52946 2.76971 8.37888 2.75975 9.48477 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 591.025 m + (f) + [3.04867 ] pdfxs + (o) show + (llowingcodesequence,) + [2.75975 2.76971 4.70253 7.20325 2.75975 5.53942 8.29918 4.43354 5.2505 5.53942 7.75121 + 3.92539 4.42357 5.26046 5.53942 4.42357 5.53942 4.42357 4.43354 6.08739 ] pdfxs + (a) show + (ssumin) + [3.92539 3.93536 5.52946 8.2991 2.76971 5.53942 ] pdfxs + (g) show + 286.142 591.025 m + /N95 9.963 Tf + (A) show + 296.935 591.025 m + /N74 9.963 Tf + (willbespilled:) + [7.19329 2.76971 2.76971 6.08739 5.80842 7.75121 3.92539 5.53942 2.76971 2.75975 2.76971 + 4.43354 5.52946 2.76971 ] pdfxs + 118.423 570.18 m + /N104 4.98099 Tf + (0) show + 133.768 570.18 m + /N107 9.963 Tf + (mo) show + (v) + [10.4611 ] pdfxs + (A) show + (,) + [10.4611 ] pdfxs + (B) show + 118.423 558.225 m + /N104 4.98099 Tf + (4) show + 133.768 558.225 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (C) show + (,) + [10.4611 ] pdfxs + (B) show + 118.423 546.27 m + /N104 4.98099 Tf + (8) show + 133.768 546.27 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (B) show + (,) + [10.4611 ] pdfxs + (A) show + 148.712 525.424 m + /N74 9.963 Tf + (Bef) + [7.05373 4.43354 3.03871 ] pdfxs + (o) show + (respillin) + [3.90548 7.96044 3.93536 5.52946 2.76971 2.76971 2.75975 2.76971 5.53942 ] pdfxs + (g) show + 214.671 525.424 m + /N95 9.963 Tf + (A) show + 225.678 525.424 m + /N74 9.963 Tf + (willhave) + [7.19329 2.76971 2.76971 6.29661 5.53942 4.70253 4.9815 7.96044 ] pdfxs + (t) show + (hef) + [5.53942 7.96044 3.03871 ] pdfxs + (o) show + (llowinglivein) + [2.76971 2.76971 4.70253 7.19329 2.76971 5.52946 8.51836 2.76971 2.76971 4.9815 7.96044 + 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (l:[) + [2.75975 7.62169 2.76971 ] pdfxs + (3) show + 394.074 525.424 m + /N95 9.963 Tf + (;) show + 398.502 525.424 m + /N74 9.963 Tf + (11\)) show + (.) + [7.83091 ] pdfxs + (A) show + (f) + [3.04867 ] pdfxs + (t) show + (erspillin) + [4.42357 7.44234 3.92539 5.52946 2.76971 2.76971 2.76971 2.76971 5.52946 ] pdfxs + (g) show + 133.768 513.469 m + (wi) + [7.19329 2.76971 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (o) show + (utfusi) + [5.53942 6.81477 3.04867 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (n) + [8.47851 ] pdfxs + (t) show + (hecodesequencewillrem) + [5.53942 7.36266 4.43354 5.26046 5.52946 7.37262 3.92539 4.43354 5.2505 5.53942 4.42357 + 5.53942 4.42357 7.37262 7.19329 2.76971 2.76971 5.7088 3.89552 4.43354 8.2991 ] pdfxs + (a) show + (in) + [2.76971 8.47851 ] pdfxs + (t) show + (hes) + [5.52946 7.37262 3.92539 ] pdfxs + (a) show + (mebutthenewlivein) + [8.30907 7.36266 5.53942 5.52946 6.82473 3.86572 5.53942 7.37262 5.52946 4.43354 10.1324 + 2.76971 2.76971 4.9815 7.36266 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (l) show + 133.768 501.514 m + (willbe:[) + [7.19329 2.76971 2.76971 6.08739 5.80842 4.43354 7.19328 2.76971 ] pdfxs + (3) show + 177.77 501.514 m + /N95 9.963 Tf + (;) show + 182.198 501.514 m + /N74 9.963 Tf + (5\)) show + 191.054 501.514 m + /N95 9.963 Tf + (;) show + 195.481 501.514 m + /N74 9.963 Tf + ([) + [2.76971 ] pdfxs + (8) show + 203.23 501.514 m + /N95 9.963 Tf + (;) show + 207.658 501.514 m + /N74 9.963 Tf + (10\)) show + (.) show + 148.712 489.559 m + (Whenspillcodefusionisused) + [10.242 5.52946 4.43354 8.94677 3.92539 5.53942 2.76971 2.75975 6.18702 4.42357 5.26046 + 5.52946 7.84088 3.04867 5.52946 3.93536 2.76971 4.97154 8.95673 2.75975 7.3427 5.53942 + 3.92539 4.43354 8.94677 ] pdfxs + (a) show + (nd) + [5.52946 8.94677 ] pdfxs + (a) show + (ssuming) + [3.93536 3.92539 5.53942 8.2991 2.76971 5.52946 8.39881 ] pdfxs + (o) show + (nly) + [5.52946 2.76971 8.66781 ] pdfxs + (t) show + (he\frstreferencec) + [5.53942 7.84088 5.52946 3.90548 3.92539 7.29299 3.89552 4.43354 3.03871 4.43354 3.89552 + 4.43354 5.52946 4.43354 7.84088 4.42357 ] pdfxs + (a) show + (nbe) + [8.94677 5.80842 4.42357 ] pdfxs + 133.768 477.603 m + (fused) + [3.04867 5.52946 3.93536 4.42357 8.8571 ] pdfxs + (t) show + (hecodesequencewillbemodi\fed) + [5.52946 7.75121 4.42357 5.26046 5.53942 7.74125 3.93536 4.42357 5.26046 5.53942 4.42357 + 5.53942 4.42357 7.75121 7.19329 2.76971 2.76971 6.08739 5.80842 7.75121 8.2991 5.26046 + 5.52946 2.76971 5.53942 4.42357 8.8571 ] pdfxs + (to) show + (:) show + 118.423 456.758 m + /N104 4.98099 Tf + (0) show + 133.768 456.758 m + /N107 9.963 Tf + (mo) show + (v) + [10.4611 ] pdfxs + ([stac) show + (k) + [10.4611 ] pdfxs + (slot]) show + (,) + [10.4611 ] pdfxs + (B) show + 118.423 444.803 m + /N104 4.98099 Tf + (4) show + 133.768 444.803 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (C) show + (,) + [10.4611 ] pdfxs + (B) show + 118.423 432.848 m + /N104 4.98099 Tf + (8) show + 133.768 432.848 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (B) show + (,) + [10.4611 ] pdfxs + (A) show + 148.712 412.002 m + /N74 9.963 Tf + (a) show + (nd) + [5.53942 5.53942 ] pdfxs + 167.616 412.002 m + /N95 9.963 Tf + (A) show + 177.941 412.002 m + /N74 9.963 Tf + (willhavei) + [7.19329 2.76971 2.76971 5.61913 5.52946 4.7125 4.9815 7.27299 2.76971 ] pdfxs + (t) show + (sliveinterv) + [6.78477 2.76971 2.75975 4.9815 7.28295 2.76971 5.26046 3.86572 4.43354 3.90548 4.70253 + ] pdfxs + (a) show + (lupd) + [5.61913 5.52946 5.81839 5.52946 ] pdfxs + (at) show + (ed) + [4.43354 8.37888 ] pdfxs + (to) show + (:[) + [6.96413 2.76971 ] pdfxs + (8) show + 347.668 412.002 m + /N95 9.963 Tf + (;) show + 352.096 412.002 m + /N74 9.963 Tf + (10\)) show + (.) + [7.03387 ] pdfxs + (I) show + (f) + [5.89809 ] pdfxs + (o) show + (nly) + [5.53942 2.76971 8.10988 ] pdfxs + (t) show + (hel) + [5.52946 7.28295 2.76971 ] pdfxs + (a) show + (streference) + [3.92539 6.7251 3.90548 4.42357 3.04867 4.42357 3.90548 4.43354 5.52946 4.42357 4.42357 + ] pdfxs + 133.768 400.047 m + (c) + [4.42357 ] pdfxs + (a) show + (nbefused,) + [8.8571 5.81839 7.74125 3.04867 5.52946 3.93536 4.42357 5.53942 6.08739 ] pdfxs + (t) show + (hecodesequencewillins) + [5.52946 7.75121 4.43354 5.2505 5.53942 7.75121 3.92539 4.42357 5.26046 5.53942 4.42357 + 5.53942 4.42357 7.75121 7.19329 2.76971 2.76971 6.08739 2.75975 5.53942 3.92539 ] pdfxs + (t) show + (e) + [4.43354 ] pdfxs + (a) show + (dbemodi\fed) + [8.8571 5.80842 7.75121 8.2991 5.26046 5.52946 2.76971 5.53942 4.42357 8.8571 ] pdfxs + (to) show + (:) show + 118.423 379.202 m + /N104 4.98099 Tf + (0) show + 133.768 379.202 m + /N107 9.963 Tf + (mo) show + (v) + [10.4611 ] pdfxs + (A) show + (,) + [10.4611 ] pdfxs + (B) show + 118.423 367.246 m + /N104 4.98099 Tf + (4) show + 133.768 367.246 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (C) show + (,) + [10.4611 ] pdfxs + (B) show + 118.423 355.291 m + /N104 4.98099 Tf + (8) show + 133.768 355.291 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (B) show + (,) + [10.4611 ] pdfxs + ([stac) show + (k) + [10.4611 ] pdfxs + (slot]) show + 148.712 334.446 m + /N74 9.963 Tf + (a) show + (nd) + [5.53942 5.53942 ] pdfxs + 167.808 334.446 m + /N95 9.963 Tf + (A) show + 175.28 334.446 m + /N74 9.963 Tf + ('slivein) + [2.76971 6.97407 2.76971 2.75975 4.9815 7.47225 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lwill) + [5.80843 7.20325 2.75975 2.76971 5.81839 ] pdfxs + (o) show + (bvi) + [5.2505 5.26046 2.76971 ] pdfxs + (o) show + (uslybejust[) + [5.52946 3.93536 2.76971 8.29918 5.80842 7.47225 3.04867 5.52946 3.93536 6.9144 2.76971 + ] pdfxs + (3) show + 341.523 334.446 m + /N95 9.963 Tf + (;) show + 345.951 334.446 m + /N74 9.963 Tf + (5\)) show + (.) + [7.10362 ] pdfxs + (I) show + (n) + [8.57814 ] pdfxs + (t) show + (hec) + [5.52946 7.48221 4.42357 ] pdfxs + (a) show + (seb) + [3.92539 7.47225 5.81839 ] pdfxs + (ot) show + (hreferences) + [8.57814 3.89552 4.43354 3.03871 4.43354 3.89552 4.43354 5.52946 4.43354 4.42357 3.92539 + ] pdfxs + 133.768 322.491 m + (a) show + (refused) + [3.90548 8.75748 3.04867 5.52946 3.93536 4.42357 9.87333 ] pdfxs + (t) show + (heresultinglivein) + [5.52946 8.76744 3.89552 4.43354 3.92539 5.53942 2.76971 3.86572 2.76971 5.53942 9.3154 + 2.76971 2.75975 4.9815 8.76744 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (lwillbeempty) + [7.09365 7.20325 2.75975 2.76971 7.10362 5.80842 8.76744 4.42357 8.30907 5.52946 3.59672 + 9.59437 ] pdfxs + (a) show + (nd) + [5.53942 9.86337 ] pdfxs + (t) show + (hecodewillhaven) + [5.53942 8.75748 4.43354 5.2505 5.53942 8.75748 7.20325 2.75975 2.76971 7.10362 5.53942 + 4.70253 4.9815 8.75748 5.53942 ] pdfxs + (o) show + 133.768 310.535 m + (references) + [3.90548 4.42357 3.04867 4.42357 3.90548 4.42357 5.53942 4.42357 4.43354 7.24307 ] pdfxs + (t) show + (o) + [8.29918 ] pdfxs + (t) show + (he) + [5.53942 7.75121 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ry) + [3.90548 5.26046 ] pdfxs + 257.637 310.535 m + /N95 9.963 Tf + (A) show + 265.109 310.535 m + /N74 9.963 Tf + (.) show + 148.712 298.58 m + (A) show + (l) + [2.76971 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (o) show + (u) + [5.53942 ] pdfxs + (g) show + (hspillcodefusi) + [8.95673 3.93536 5.52946 2.76971 2.76971 6.19698 4.42357 5.26046 5.52946 7.86081 3.03871 + 5.53942 3.92539 2.76971 ] pdfxs + (o) show + (nism) + [8.96669 2.75975 7.36263 8.2991 ] pdfxs + (o) show + (reheavilyusedin) + [3.90548 7.85084 5.53942 4.42357 4.70253 5.26046 2.76971 2.76971 8.68773 5.52946 3.93536 + 4.42357 8.96669 2.75975 8.96669 ] pdfxs + (t) show + (heC) + [5.52946 7.86081 7.19329 ] pdfxs + (I) show + (SC) + [5.53942 10.6206 ] pdfxs + (I) show + (S) + [5.52946 ] pdfxs + (A) show + (s,itiss) + [3.93536 6.21691 2.76971 7.30295 2.76971 7.35266 3.93536 ] pdfxs + (t) show + (ill) + [2.75975 2.76971 2.76971 ] pdfxs + 133.768 286.625 m + (usefulf) + [5.53942 3.92539 4.42357 3.04867 5.53942 6.23684 3.03871 ] pdfxs + (o) show + (r) + [7.3726 ] pdfxs + (R) show + (ISC) + [3.60653 5.52946 10.6704 ] pdfxs + (I) show + (S) + [5.52946 ] pdfxs + (A) show + (s) + [7.40248 ] pdfxs + (a) show + (swell.F) + [7.40248 6.91432 4.43354 2.76971 2.75975 7.65158 5.66894 ] pdfxs + (o) show + (rex) + [7.3726 4.43354 5.26046 ] pdfxs + (a) show + (mple,re) + [8.2991 5.52946 2.76971 4.43354 6.27669 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (ermovesc) + [4.42357 7.3726 8.30907 4.70253 4.9815 4.42357 7.40248 4.43354 ] pdfxs + (a) show + (nhave) + [8.99658 5.53942 4.70253 4.9815 7.90066 ] pdfxs + (t) show + (hes) + [5.52946 7.90066 3.93536 ] pdfxs + (o) show + (urce) + [5.52946 3.90548 4.42357 4.42357 ] pdfxs + 133.768 274.67 m + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndfusedin) + [5.53942 8.8571 3.03871 5.53942 3.92539 4.43354 8.8571 2.75975 5.26046 ] pdfxs + (t) show + (oal) + [8.29918 8.30914 2.75975 ] pdfxs + (oa) show + (d) + [8.8571 ] pdfxs + (o) show + (r) + [7.22316 ] pdfxs + (t) show + (hedes) + [5.53942 7.74125 5.53942 4.42357 3.93536 ] pdfxs + (t) show + (in) + [2.75975 5.53942 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.84714 ] pdfxs + (o) show + (per) + [5.81839 4.42357 3.90548 ] pdfxs + (a) show + (ndfusedin) + [5.52946 8.8571 3.04867 5.52946 3.93536 4.42357 8.8571 2.76971 5.2505 ] pdfxs + (t) show + (oas) + [8.30914 8.29918 3.92539 ] pdfxs + (to) show + (re.) + [3.90548 4.42357 2.76971 ] pdfxs + 148.712 262.715 m + (A) show + (nin) + [9.35525 2.76971 5.2505 ] pdfxs + (t) show + (eres) + [4.43354 3.89552 4.43354 3.92539 ] pdfxs + (t) show + (ingc) + [2.76971 5.52946 8.80729 4.42357 ] pdfxs + (o) show + (nsequence) + [5.53942 3.92539 4.42357 5.26046 5.53942 4.42357 5.53942 4.42357 8.24936 ] pdfxs + (o) show + (ffusingmem) + [6.8645 3.03871 5.53942 3.92539 2.76971 5.53942 8.79733 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 9.07629 ] pdfxs + (o) show + (per) + [5.80842 4.42357 3.90548 ] pdfxs + (a) show + (ndsin) + [5.53942 5.52946 7.75118 2.76971 5.2505 ] pdfxs + (t) show + (oins) + [8.80729 2.75975 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (nsis) + [5.53942 7.75118 2.75975 3.92539 ] pdfxs + 133.768 250.76 m + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (titslowsdownb) + [7.16347 2.76971 7.16347 3.93536 2.75975 4.70253 7.20325 7.21318 5.53942 4.70253 7.19329 + 8.82721 5.52946 ] pdfxs + (a) show + (ck) + [4.15457 5.26046 ] pdfxs + (t) show + (r) + [3.89552 ] pdfxs + (a) show + (ckin) + [4.15457 5.26046 2.75975 5.53942 ] pdfxs + (g) show + (.Whena) + [7.18332 10.242 5.52946 4.43354 8.81725 8.26929 ] pdfxs + (t) show + (emp) + [4.43354 8.2991 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ryisspilled,i) + [3.90548 8.53829 2.76971 7.22315 3.92539 5.53942 2.75975 2.76971 2.76971 4.42357 5.53942 + 6.0575 2.76971 ] pdfxs + (t) show + (supd) + [7.22315 5.52946 5.80842 5.53942 ] pdfxs + (at) show + (edlive) + [4.42357 8.82721 2.76971 2.75975 4.9815 4.42357 ] pdfxs + 133.768 238.804 m + (interv) + [2.76971 5.26046 3.86572 4.43354 3.90548 4.70253 ] pdfxs + (a) show + (lispushedb) + [6.5158 2.76971 7.68144 5.53942 5.52946 3.92539 5.53942 4.42357 9.29547 5.52946 ] pdfxs + (a) show + (ckin) + [4.15457 9.00655 2.76971 5.26046 ] pdfxs + (t) show + (o) + [8.72759 ] pdfxs + (t) show + (he) + [5.53942 4.42357 ] pdfxs + 276.804 238.804 m + /N101 9.963 Tf + (un) + [5.35016 5.59917 ] pdfxs + (ha) show + (ndle) + [5.59917 5.59922 2.55049 4.07493 ] pdfxs + (d) show + 325.632 238.804 m + /N74 9.963 Tf + (se) + [3.92539 4.43354 ] pdfxs + (t) show + (.) + [8.48847 ] pdfxs + (R) show + (ec) + [4.42357 4.43354 ] pdfxs + (a) show + (ll) + [2.76971 6.5158 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (t) + [7.63173 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 416.42 238.804 m + /N101 9.963 Tf + (un) + [5.35016 5.59917 ] pdfxs + (ha) show + (ndle) + [5.59917 5.59922 2.55049 4.07493 ] pdfxs + (d) show + 465.247 238.804 m + /N74 9.963 Tf + (se) + [3.92539 4.43354 ] pdfxs + (t) show + 133.768 226.849 m + (c) + [4.42357 ] pdfxs + (o) show + (n) + [5.26046 ] pdfxs + (ta) show + (ins) + [2.76971 5.52946 6.19696 ] pdfxs + (t) show + (helivein) + [5.53942 6.69514 2.75975 2.76971 4.9815 6.69514 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (ls) + [2.75975 6.19696 ] pdfxs + (t) show + (obe) + [7.25306 5.80842 6.69514 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (edinincre) + [4.43354 7.80102 2.75975 7.80102 2.76971 5.53942 4.42357 3.90548 4.42357 ] pdfxs + (a) show + (sings) + [3.93536 2.75975 5.53942 7.2431 3.93536 ] pdfxs + (ta) show + (rtp) + [3.89552 6.14724 5.80842 ] pdfxs + (o) show + (in) + [2.76971 5.2505 ] pdfxs + (t) show + (.Sincemem) + [6.84458 5.53942 2.76971 5.52946 4.43354 6.68517 8.30907 4.42357 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 5.26046 ] pdfxs + 133.768 214.894 m + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndfusi) + [5.53942 8.48847 3.03871 5.53942 3.92539 2.76971 ] pdfxs + (o) show + (nc) + [8.48847 4.42357 ] pdfxs + (a) show + (nch) + [8.48847 4.15457 5.52946 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (e) + [7.38258 ] pdfxs + (t) show + (hes) + [5.52946 7.38258 3.92539 ] pdfxs + (ta) show + (rtp) + [3.90548 6.82473 5.80842 ] pdfxs + (o) show + (int) + [2.76971 5.26046 6.82473 ] pdfxs + (o) show + (falivein) + [5.99772 7.93055 2.76971 2.76971 4.9815 7.38258 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (l) + [5.71876 ] pdfxs + (\(a) show + (sisthec) + [6.8844 2.76971 6.8844 3.86572 5.53942 7.38258 4.42357 ] pdfxs + (a) show + (sein) + [3.93536 7.37262 2.76971 8.48847 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 202.939 m + (codesequencewhere) + [4.42357 5.26046 5.53942 6.96414 3.92539 4.43354 5.26046 5.52946 4.43354 5.52946 4.42357 + 6.9741 7.19329 5.52946 4.43354 3.89552 6.9741 ] pdfxs + (o) show + (nly) + [5.52946 2.76971 7.79106 ] pdfxs + (t) show + (hemoveisfused) + [5.53942 6.96414 8.2991 4.7125 4.9815 6.96414 2.76971 6.46596 3.03871 5.53942 3.92539 + 4.43354 5.52946 ] pdfxs + (\)) show + (,) + [5.45972 ] pdfxs + (t) show + (hespilledlivein) + [5.53942 6.96414 3.92539 5.53942 2.76971 2.75975 2.76971 4.43354 8.07003 2.76971 2.76971 + 4.97153 6.9741 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (lc) + [5.31028 4.42357 ] pdfxs + (a) show + (nn) + [5.53942 5.52946 ] pdfxs + (o) show + (tsim-) + [6.41625 3.92539 2.76971 8.30907 3.3176 ] pdfxs + 133.768 190.984 m + (plybeinser) + [5.53942 2.75975 8.09992 5.80842 7.26303 2.76971 5.52946 3.93536 4.42357 3.90548 ] pdfxs + (t) show + (edin) + [4.42357 8.36892 2.76971 8.36892 ] pdfxs + (t) show + (hefr) + [5.52946 7.26303 3.04867 3.89552 ] pdfxs + (o) show + (nt) + [5.26046 6.70517 ] pdfxs + (o) show + (f) + [5.87817 ] pdfxs + (t) show + (he) + [5.53942 4.42357 ] pdfxs + 279.704 190.984 m + /N101 9.963 Tf + (un) + [5.35016 5.59917 ] pdfxs + (ha) show + (ndle) + [5.59917 5.59922 2.55049 4.07493 ] pdfxs + (d) show + 327.613 190.984 m + /N74 9.963 Tf + (se) + [3.92539 4.43354 ] pdfxs + (t) show + (.) + [7.03387 ] pdfxs + (I) show + (n) + [8.36892 ] pdfxs + (t) show + (hecurrentimplemen) + [5.52946 7.26303 4.43354 5.52946 3.90548 3.89552 4.43354 5.26046 6.70517 2.76971 8.2991 + 5.53942 2.75975 4.43354 8.2991 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (n) show + 133.768 179.028 m + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 150.637 179.028 m + /N101 9.963 Tf + (un) + [5.35016 5.59917 ] pdfxs + (ha) show + (ndle) + [5.59917 5.59922 2.55049 4.07493 ] pdfxs + (d) show + 198.744 179.028 m + /N74 9.963 Tf + (issc) + [2.76971 6.96411 3.92539 4.42357 ] pdfxs + (a) show + (nnedun) + [5.53942 5.52946 4.43354 8.56818 5.52946 5.26046 ] pdfxs + (t) show + (ilasui) + [2.76971 5.79846 8.01025 3.92539 5.53942 2.76971 ] pdfxs + (ta) show + (blep) + [5.52946 2.76971 7.46229 5.80842 ] pdfxs + (o) show + (intisf) + [2.76971 5.26046 6.90443 2.75975 6.96411 3.04867 ] pdfxs + (o) show + (und.Thisc) + [5.52946 5.53942 5.52946 7.10362 7.19329 5.53942 2.75975 6.96411 4.43354 ] pdfxs + (a) show + (nbe) + [8.55821 5.81839 7.45232 ] pdfxs + (o) show + (p) + [5.53942 ] pdfxs + (t) show + (imized) + [2.76971 8.2991 2.76971 4.42357 4.43354 5.53942 ] pdfxs + 133.768 167.073 m + (t) show + (oabin) + [8.5881 8.5881 5.52946 2.76971 5.52946 ] pdfxs + (a) show + (ryse) + [3.90548 8.86707 3.92539 4.43354 ] pdfxs + (a) show + (rchin) + [3.89552 4.15457 9.13607 2.76971 9.13607 ] pdfxs + (t) show + (hese) + [5.53942 8.03018 3.93536 4.42357 ] pdfxs + (t) show + (,butitwills) + [6.44606 5.52946 5.53942 7.47232 2.76971 7.48229 7.19329 2.76971 2.76971 6.36635 3.93536 + ] pdfxs + (t) show + (illbeslower) + [2.75975 2.76971 6.37632 5.80842 8.03018 3.93536 2.76971 4.70253 6.91432 4.43354 7.50212 + ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (n) + [9.13607 ] pdfxs + (t) show + (hec) + [5.52946 8.04014 4.42357 ] pdfxs + (o) show + (ns) + [5.53942 3.92539 ] pdfxs + (ta) show + (nt) + [5.26046 7.47232 ] pdfxs + (t) show + (ime) + [2.76971 8.2991 4.42357 ] pdfxs + 133.768 155.118 m + (inser) + [2.76971 5.52946 3.93536 4.42357 3.90548 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (nneededwhenalivein) + [8.86707 5.53942 4.42357 4.42357 5.53942 4.42357 8.86707 7.19329 5.53942 4.42357 8.86707 + 8.30914 2.75975 2.76971 4.9815 7.76118 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (l'ss) + [2.76971 2.76971 7.25303 3.93536 ] pdfxs + (ta) show + (rtp) + [3.89552 7.20332 5.80842 ] pdfxs + (o) show + (intneverch) + [2.76971 5.26046 7.20332 5.52946 4.43354 4.9815 4.42357 7.23312 4.15457 5.52946 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (es.) + [4.42357 3.92539 7.22317 ] pdfxs + (N) show + (ever) + [4.42357 4.9815 4.43354 3.89552 ] pdfxs + (t) show + (heless,) + [5.53942 4.42357 2.76971 4.42357 3.93536 3.92539 2.76971 ] pdfxs + 133.768 143.163 m + (t) show + (hereducedre) + [5.52946 7.07373 3.90548 4.42357 5.53942 5.52946 4.43354 4.42357 8.17962 3.89552 4.43354 + ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (erpressurebec) + [4.42357 6.54567 5.53942 3.89552 4.43354 3.92539 3.93536 5.52946 3.90548 7.06377 5.81839 + 4.42357 4.43354 ] pdfxs + (a) show + (use) + [5.52946 3.92539 7.07373 ] pdfxs + (o) show + (f) + [5.68887 ] pdfxs + (t) show + (heuse) + [5.52946 7.07373 5.52946 3.93536 7.06377 ] pdfxs + (o) show + (fmem) + [5.68887 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 7.90066 ] pdfxs + (o) show + (per) + [5.80842 4.42357 3.90548 ] pdfxs + (a) show + (nds) + [5.53942 5.52946 6.57555 ] pdfxs + (o) show + (n) + [8.16966 ] pdfxs + (t) show + (hex) + [5.53942 7.06377 5.26046 ] pdfxs + (86) show + (,) show + 133.768 131.208 m + (resul) + [3.90548 4.42357 3.93536 5.52946 2.76971 ] pdfxs + (t) show + (sinlessspills) + [6.87444 2.75975 8.47851 2.76971 4.43354 3.92539 6.87444 3.92539 5.53942 2.76971 2.76971 + 2.75975 6.87444 ] pdfxs + (a) show + (nd) + [5.53942 8.47851 ] pdfxs + (t) show + (huslessr) + [5.2505 5.53942 6.87444 2.76971 4.42357 3.93536 6.86448 3.90548 ] pdfxs + (o) show + (llb) + [2.76971 2.76971 5.52946 ] pdfxs + (a) show + (ckswhichin) + [4.15457 5.26046 6.86448 7.20325 5.52946 2.76971 4.15457 8.47851 2.75975 8.47851 ] pdfxs + (t) show + (urnimprovesrunning) + [5.53942 3.90548 8.47851 2.75975 8.30907 5.52946 3.90548 4.70253 4.9815 4.42357 6.87444 + 3.90548 5.53942 5.52946 5.53942 2.75975 5.53942 7.92058 ] pdfxs + (t) show + (ime) + [2.76971 8.2991 4.42357 ] pdfxs + 133.768 119.253 m + (a) show + (sshowninFi) + [7.25303 3.92539 5.53942 4.70253 7.19329 8.8571 2.76971 8.8571 6.49587 2.76971 ] pdfxs + (g) show + (ure) + [5.53942 3.89552 7.75121 ] pdfxs + (7) show + (.) show + 303.133 89.3655 m + (5) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 6 6 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 133.768 657.235 m + /N71 14.346 Tf + (4Experiment) + [24.2161 10.5874 8.52144 9.41097 7.3595 6.59915 4.476 13.4566 7.3595 8.52152 6.26925 + ] pdfxs + (a) show + (lres) + [9.87009 6.58481 7.37385 6.35528 ] pdfxs + (u) show + (lts) + [4.49035 6.26925 6.36962 ] pdfxs + 133.768 635.414 m + /N74 9.963 Tf + (F) + [5.66894 ] pdfxs + (o) show + (rexperiment) + [8.5582 4.42357 5.26046 5.80842 4.43354 3.89552 2.76971 8.2991 4.43354 5.26046 3.86572 + ] pdfxs + (a) show + (lresul) + [7.42243 3.90548 4.42357 3.92539 5.53942 2.76971 ] pdfxs + (t) show + (sIused) + [8.57811 8.23932 5.53942 3.92539 4.43354 10.1822 ] pdfxs + (t) show + (heSPECsuite) + [5.52946 9.07629 5.53942 6.7848 6.77484 11.846 3.92539 5.53942 2.76971 3.86572 9.08626 + ] pdfxs + (o) show + (fpr) + [7.69143 5.52946 3.90548 ] pdfxs + (og) show + (r) + [3.90548 ] pdfxs + (a) show + (ms,c) + [8.2991 3.92539 7.75121 4.42357 ] pdfxs + (o) show + (mpiledwi) + [8.30907 5.52946 2.76971 2.76971 4.42357 10.1822 7.20325 2.75975 ] pdfxs + (t) show + (h) show + 133.768 623.459 m + (t) show + (hex) + [5.52946 7.76118 5.26046 ] pdfxs + (8) show + (6b) + [8.30914 5.53942 ] pdfxs + (a) show + (ck-end) + [4.14461 5.26046 3.3176 4.43354 5.52946 8.86707 ] pdfxs + (o) show + (f) + [6.37632 ] pdfxs + (t) show + (he) + [5.52946 7.76118 ] pdfxs + (L) show + (L) + [5.12098 ] pdfxs + (V) show + (Mc) + [12.4638 4.42357 ] pdfxs + (o) show + (mpilerinfr) + [8.2991 5.53942 2.76971 2.75975 4.43354 7.23312 2.76971 5.52946 3.04867 3.89552 ] pdfxs + (a) show + (s) + [3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (ure) + [5.53942 3.89552 7.76118 ] pdfxs + (o) show + (n) + [8.86707 ] pdfxs + (a) show + (n) + [8.8571 ] pdfxs + (A) show + (MDA) + [9.13614 10.9394 7.19328 ] pdfxs + (t) show + (hl) + [5.53942 2.76971 ] pdfxs + (o) show + (n) + [8.8571 ] pdfxs + (X) show + (P) show + 133.768 611.504 m + (2400) show + (+CP) + [11.0689 7.19329 6.7848 ] pdfxs + (U) show + (.There) + [6.08739 7.19329 5.53942 7.74125 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 7.22316 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (t) + [3.86572 ] pdfxs + (o) show + (rsused) + [3.90548 7.25303 5.52946 3.93536 4.42357 8.8571 ] pdfxs + (a) show + (re:) + [3.90548 4.42357 2.76971 ] pdfxs + 148.712 591.579 m + /N98 9.963 Tf + (\017) show + 158.675 591.579 m + /N74 9.963 Tf + (loc) + [2.76971 5.26046 4.42357 ] pdfxs + (a) show + (l:aloc) + [2.76971 9.02647 9.22574 2.76971 5.26046 4.42357 ] pdfxs + (a) show + (lre) + [7.00399 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 8.13975 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (ato) show + (r.) + [3.89552 9.95303 ] pdfxs + (I) show + (tspills) + [8.11992 3.92539 5.53942 2.76971 2.75975 2.76971 8.16963 ] pdfxs + (a) show + (ll) + [2.76971 7.00399 ] pdfxs + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ries) + [3.89552 2.76971 4.43354 8.16963 ] pdfxs + (o) show + (nb) + [9.7737 5.52946 ] pdfxs + (a) show + (sicblock) + [3.93536 2.75975 8.66781 5.53942 2.76971 5.2505 4.15457 5.26046 ] pdfxs + 158.675 579.624 m + (b) + [5.80842 ] pdfxs + (o) show + (und) + [5.53942 5.52946 5.53942 ] pdfxs + (a) show + (ries) + [3.90548 2.75975 4.43354 6.62537 ] pdfxs + (a) show + (ndusesasimplel) + [5.52946 8.2394 5.52946 3.93536 4.42357 6.62537 7.68147 3.92539 2.76971 8.2991 5.53942 + 2.76971 7.12355 2.76971 ] pdfxs + (a) show + (s) + [3.92539 ] pdfxs + (t) show + (-useheuristicwhenspillingin) + [3.3176 5.53942 3.92539 7.12355 5.53942 4.42357 5.53942 3.89552 2.76971 3.93536 3.86572 + 2.76971 7.12355 7.20325 5.52946 4.43354 8.22943 3.92539 5.53942 2.75975 2.76971 2.76971 + 2.76971 5.52946 7.68147 2.76971 8.22943 ] pdfxs + (t) show + (hemiddle) + [5.52946 7.13351 8.2991 2.76971 5.52946 5.53942 2.75975 4.42357 ] pdfxs + 158.675 567.668 m + (o) show + (fab) + [6.36635 8.29918 5.53942 ] pdfxs + (a) show + (sicblock.) + [3.92539 2.76971 7.75121 5.52946 2.76971 5.26046 4.14461 5.26046 2.76971 ] pdfxs + 148.712 547.743 m + /N98 9.963 Tf + (\017) show + 158.675 547.743 m + /N74 9.963 Tf + (ls:ab) + [2.76971 3.92539 7.19328 8.27925 5.53942 ] pdfxs + (a) show + (sicversi) + [3.92539 2.76971 7.73129 4.9815 4.42357 3.90548 3.92539 2.76971 ] pdfxs + (o) show + (n) + [8.83718 ] pdfxs + (o) show + (f) + [6.34643 ] pdfxs + (t) show + (heline) + [5.53942 7.73129 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.21319 3.92539 4.42357 ] pdfxs + (a) show + (nre) + [8.84714 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 7.20323 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (r,wi) + [3.90548 6.06746 7.19329 2.76971 ] pdfxs + (t) show + (hlife) + [8.83718 2.76971 2.76971 3.03871 4.43354 ] pdfxs + (t) show + (imeh) + [2.75975 8.30907 7.73129 5.52946 ] pdfxs + (o) show + (les) + [2.76971 4.42357 3.92539 ] pdfxs + 158.675 535.788 m + (a) show + (ndnoreservedre) + [5.53942 8.29917 5.53942 7.74125 3.90548 4.42357 3.93536 4.42357 3.90548 4.9815 4.42357 + 8.30914 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers.Thisinn) + [4.42357 3.90548 3.93536 7.00399 7.19329 5.53942 2.76971 6.69511 2.76971 8.29917 5.53942 + ] pdfxs + (o) show + (t) + [6.64539 ] pdfxs + (t) show + (he) + [5.52946 7.19329 ] pdfxs + (o) show + (ri) + [3.90548 2.76971 ] pdfxs + (g) show + (in) + [2.76971 5.52946 ] pdfxs + (a) show + (lline) + [5.53943 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [6.67519 3.92539 4.43354 ] pdfxs + (a) show + (n,sinceituses) + [5.52946 5.64902 3.92539 2.76971 5.53942 4.42357 7.19329 2.76971 6.64539 5.53942 3.92539 + 4.42357 3.92539 ] pdfxs + 158.675 523.833 m + (b) + [5.53942 ] pdfxs + (a) show + (ck) + [4.14461 5.26046 ] pdfxs + (t) show + (r) + [3.89552 ] pdfxs + (a) show + (cking) + [4.15457 5.26046 2.76971 5.52946 8.29918 ] pdfxs + (t) show + (oelimin) + [8.30914 4.42357 2.76971 2.76971 8.2991 2.76971 5.52946 ] pdfxs + (at) show + (e) + [7.75121 ] pdfxs + (t) show + (heneedf) + [5.52946 7.75121 5.53942 4.42357 4.42357 8.8571 3.04867 ] pdfxs + (o) show + (rreservedre) + [7.22316 3.89552 4.43354 3.92539 4.43354 3.89552 4.9815 4.43354 8.8571 3.89552 4.43354 + ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (ers.) + [4.42357 3.90548 3.92539 2.76971 ] pdfxs + 148.712 503.908 m + /N98 9.963 Tf + (\017) show + 158.675 503.908 m + /N74 9.963 Tf + (ls+mem) + [2.76971 3.92539 7.75121 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (p:s) + [5.53942 6.89439 3.93536 ] pdfxs + (a) show + (me) + [8.2991 7.15343 ] pdfxs + (a) show + (s) + [6.66522 ] pdfxs + (t) show + (helsre) + [5.52946 7.1634 2.76971 6.65525 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 6.63534 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (rwi) + [6.63534 7.19329 2.76971 ] pdfxs + (t) show + (htheaddi) + [8.26929 3.86572 5.53942 7.1634 4.97154 5.53942 5.53942 2.75975 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.26929 ] pdfxs + (o) show + (fspillcode) + [5.76857 3.93536 5.52946 2.76971 2.76971 5.49957 4.42357 5.26046 5.52946 4.42357 ] pdfxs + 158.675 491.952 m + (fusi) + [3.04867 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (ninmem) + [8.8571 2.76971 8.8571 8.2991 4.42357 8.30907 ] pdfxs + (o) show + (ry) + [3.89552 8.5881 ] pdfxs + (o) show + (per) + [5.80842 4.42357 3.90548 ] pdfxs + (a) show + (nds,) + [5.52946 5.53942 3.92539 2.76971 ] pdfxs + 148.712 472.027 m + /N98 9.963 Tf + (\017) show + 158.675 472.027 m + /N74 9.963 Tf + (ls+j) + [2.76971 3.92539 7.75121 3.03871 ] pdfxs + (o) show + (in:s) + [2.76971 5.53942 6.81469 3.92539 ] pdfxs + (a) show + (me) + [8.2991 6.99403 ] pdfxs + (a) show + (s) + [6.48588 ] pdfxs + (t) show + (helsre) + [5.52946 6.98406 2.76971 6.48588 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 6.45601 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (rwi) + [6.45601 7.19329 2.76971 ] pdfxs + (t) show + (h) + [8.08995 ] pdfxs + (t) show + (he) + [5.53942 6.98406 ] pdfxs + (a) show + (ddi) + [5.52946 5.53942 2.76971 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [8.09991 ] pdfxs + (o) show + (fre) + [5.5992 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ermove) + [4.43354 6.45601 8.2991 4.70253 4.9815 4.42357 ] pdfxs + 158.675 460.072 m + (c) + [4.42357 ] pdfxs + (oa) show + (lescing) + [2.76971 4.43354 3.92539 4.42357 2.76971 5.53942 8.29918 ] pdfxs + (\() show + (j) + [3.03871 ] pdfxs + (o) show + (in-in) + [2.76971 5.53942 3.3176 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 3.92539 ] pdfxs + (\)) show + (.) show + 148.712 440.147 m + /N98 9.963 Tf + (\017) show + 158.675 440.147 m + /N74 9.963 Tf + (ls+j) + [2.76971 3.92539 7.75121 3.03871 ] pdfxs + (o) show + (in+mem) + [2.76971 5.53942 7.75121 8.2991 4.42357 8.30907 ] pdfxs + (o) show + (p:s) + [5.52946 9.59437 3.93536 ] pdfxs + (a) show + (me) + [8.2991 8.94677 ] pdfxs + (a) show + (s) + [8.44859 ] pdfxs + (t) show + (helsre) + [5.53942 8.94677 2.76971 8.44859 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 8.42868 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (t) + [3.86572 ] pdfxs + (o) show + (rwi) + [8.42868 7.19329 2.76971 ] pdfxs + (t) show + (h) + [10.0527 ] pdfxs + (t) show + (he) + [5.52946 8.95674 ] pdfxs + (a) show + (ddi) + [5.52946 5.53942 2.75975 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [10.0527 ] pdfxs + (o) show + (f) show + 158.675 428.191 m + (b) + [5.80842 ] pdfxs + (ot) show + (hre) + [8.8571 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ermovec) + [4.43354 7.22316 8.2991 4.70253 4.9815 7.75121 4.42357 ] pdfxs + (oa) show + (lescing) + [2.76971 4.42357 3.93536 4.42357 2.76971 5.53942 8.29918 ] pdfxs + (a) show + (ndspillcodefusi) + [5.52946 8.8571 3.93536 5.52946 2.76971 2.76971 6.08739 4.42357 5.26046 5.53942 7.74125 + 3.04867 5.52946 3.93536 2.76971 ] pdfxs + (o) show + (ninmem) + [8.84714 2.76971 8.8571 8.2991 4.43354 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 8.57814 ] pdfxs + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (nds.) + [5.53942 5.52946 3.93536 2.76971 ] pdfxs + 133.768 400.303 m + /N71 11.955 Tf + (4.1) + [6.7307 3.73 20.1801 ] pdfxs + (R) show + (egistermove) + [6.13291 6.7307 3.73 5.30802 5.22437 6.14487 9.97045 11.2138 6.34814 6.71863 10.628 + ] pdfxs + (c) show + (o) + [6.71874 ] pdfxs + (a) show + (les) + [3.74195 6.13291 5.30802 ] pdfxs + (c) show + (i) + [3.73 ] pdfxs + (n) show + (g) show + 133.768 381.914 m + /N74 9.963 Tf + (Thein) + [7.19329 5.53942 8.41874 2.76971 5.26046 ] pdfxs + (t) show + (ern) + [4.42357 3.90548 5.52946 ] pdfxs + (a) show + (lrepresen) + [6.76487 3.90548 4.42357 5.53942 3.89552 4.43354 3.92539 4.43354 5.2505 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.53459 ] pdfxs + (o) show + (f) + [7.03387 ] pdfxs + (L) show + (L) + [5.12098 ] pdfxs + (V) show + (MisinSSAf) + [13.1313 2.75975 7.93052 2.76971 9.52462 5.53942 5.52946 11.4674 3.04867 ] pdfxs + (o) show + (rm.) + [3.89552 8.30907 9.21577 ] pdfxs + (A) show + (f) + [3.04867 ] pdfxs + (t) show + (er) + [4.42357 7.90064 ] pdfxs + (t) show + (r) + [3.89552 ] pdfxs + (a) show + (nsf) + [5.53942 3.92539 3.04867 ] pdfxs + (o) show + (rming) + [3.89552 8.30907 2.75975 5.53942 8.97666 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 369.958 m + (I) show + (Rin) + [10.7998 2.76971 5.26046 ] pdfxs + (t) show + (om) + [8.44862 8.2991 ] pdfxs + (a) show + (chinecode,SSAispreservedwi) + [4.15457 5.52946 2.76971 5.52946 7.90066 4.42357 5.26046 5.53942 4.42357 6.27669 5.52946 + 5.53942 10.9394 2.75975 7.40248 5.52946 3.90548 4.42357 3.93536 4.42357 3.90548 4.9815 + 4.42357 9.00655 7.19329 2.76971 ] pdfxs + (t) show + (h) + [8.99658 ] pdfxs + (t) show + (he) + [5.53942 4.42357 ] pdfxs + 350.456 369.958 m + /N95 9.963 Tf + (\036) show + 359.859 369.958 m + /N74 9.963 Tf + (pseudoins) + [5.53942 3.92539 4.42357 5.53942 5.53942 8.44862 2.75975 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (ns.These) + [5.53942 3.92539 7.64162 7.19329 5.52946 4.43354 3.92539 4.42357 ] pdfxs + 133.768 358.003 m + (pseudoins) + [5.53942 3.92539 4.42357 5.53942 5.53942 7.41247 2.75975 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (ns) + [5.53942 6.35636 ] pdfxs + (a) show + (reelimin) + [3.90548 6.85454 4.43354 2.76971 2.75975 8.30907 2.76971 5.52946 ] pdfxs + (at) show + (edbef) + [4.42357 7.9704 5.80842 4.43354 3.03871 ] pdfxs + (o) show + (rere) + [3.90548 6.85454 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 6.33645 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n.) + [5.52946 6.90436 ] pdfxs + (D) show + (ue) + [5.52946 6.86451 ] pdfxs + (t) show + (o) + [7.41247 ] pdfxs + (t) show + (hesimplic-) + [5.52946 6.86451 3.92539 2.76971 8.2991 5.53942 2.75975 2.76971 4.43354 3.3176 ] pdfxs + 133.768 346.048 m + (ity) + [2.76971 3.59672 8.65784 ] pdfxs + (o) show + (f) + [6.44606 ] pdfxs + (t) show + (he) + [5.53942 7.83092 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hmuseddurin) + [5.52946 11.7064 5.53942 3.92539 4.43354 8.93681 5.52946 5.53942 3.90548 2.75975 5.53942 + ] pdfxs + (g) show + 277.448 346.048 m + /N95 9.963 Tf + (\036) show + 283.384 346.048 m + /N74 9.963 Tf + (-elimin) + [3.3176 4.43354 2.76971 2.75975 8.30907 2.75975 5.53942 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n,) + [5.52946 6.18702 ] pdfxs + (a) show + (nexcessive) + [8.94677 4.42357 5.26046 4.42357 4.43354 3.92539 3.93536 2.75975 4.9815 7.83092 ] pdfxs + (a) show + (m) + [8.30907 ] pdfxs + (o) show + (unt) + [5.52946 5.26046 7.27306 ] pdfxs + (o) show + (fregis) + [6.44606 3.90548 4.43354 4.97154 2.76971 3.93536 ] pdfxs + (t) show + (er) + [4.42357 3.90548 ] pdfxs + 133.768 334.093 m + (movesis) + [8.2991 4.7125 4.9815 4.42357 6.79474 2.76971 6.8047 ] pdfxs + (g) show + (ener) + [4.42357 5.52946 4.43354 3.90548 ] pdfxs + (a) show + (ted.The) + [3.86572 4.43354 5.52946 7.04384 7.20325 5.52946 4.42357 ] pdfxs + 241.713 334.093 m + /N95 9.963 Tf + (JOIN) + [6.48592 7.87077 5.16086 8.00023 ] pdfxs + 270.324 334.093 m + /N74 9.963 Tf + (-) show + 273.645 334.093 m + /N95 9.963 Tf + (INTERV) + [5.16086 9.08619 7.21321 7.93061 7.64165 8.02014 ] pdfxs + (A) show + (L) + [6.7848 ] pdfxs + (S) show + 342.503 334.093 m + /N74 9.963 Tf + (pass) + [5.53942 4.97154 3.93536 6.79474 ] pdfxs + (a) show + (sdescribedinSec) + [6.8047 5.52946 4.43354 3.92539 4.43354 3.89552 2.76971 5.80842 4.43354 8.3988 2.76971 + 8.40877 5.52946 4.42357 4.43354 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.3988 ] pdfxs + (3) show + (.) + [2.76971 ] pdfxs + (2) show + 133.768 322.138 m + (att) show + (emp) + [4.42357 8.30907 5.52946 ] pdfxs + (t) show + (s) + [7.25303 ] pdfxs + (t) show + (orec) + [8.29918 3.90548 4.42357 4.42357 ] pdfxs + (t) show + (ify) + [2.76971 3.04867 8.57814 ] pdfxs + (t) show + (hisbyj) + [5.52946 2.76971 7.25303 5.2505 8.57814 3.04867 ] pdfxs + (o) show + (ininglivein) + [2.76971 5.52946 2.76971 5.53942 8.29918 2.76971 2.75975 4.9815 7.75121 2.76971 5.26046 + ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls) + [2.76971 7.24307 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (tdon) + [7.19336 5.52946 8.30914 5.52946 ] pdfxs + (o) show + (toverl) + [7.20332 4.70253 4.9815 4.42357 3.90548 2.76971 ] pdfxs + (a) show + (p.) + [5.52946 2.76971 ] pdfxs + 148.712 310.183 m + (A) show + (sshowninT) + [6.33644 3.92539 5.53942 4.70253 7.19329 7.94051 2.76971 7.94051 6.36636 ] pdfxs + (a) show + (ble) + [5.52946 2.76971 6.83462 ] pdfxs + (1) show + (,) + [5.35013 ] pdfxs + (t) show + (he) + [5.53942 4.42357 ] pdfxs + 255.59 310.183 m + /N95 9.963 Tf + (JOIN) + [6.48592 7.87077 5.16086 8.00023 ] pdfxs + 284.201 310.183 m + /N74 9.963 Tf + (-) show + 287.522 310.183 m + /N95 9.963 Tf + (INTERV) + [5.16086 9.08619 7.21321 7.93061 7.64165 8.02014 ] pdfxs + (A) show + (L) + [6.7848 ] pdfxs + (S) show + 355.915 310.183 m + /N74 9.963 Tf + (p) + [5.53942 ] pdfxs + (a) show + (ssm) + [3.92539 6.33644 8.2991 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (ag) show + (es) + [4.42357 6.33644 ] pdfxs + (t) show + (osuccessfully) + [7.38258 3.93536 5.52946 4.43354 4.42357 4.42357 3.93536 3.92539 3.04867 5.52946 2.76971 + 2.76971 5.26046 ] pdfxs + 133.768 298.227 m + (elimin) + [4.42357 2.76971 2.76971 8.2991 2.76971 5.53942 ] pdfxs + (a) show + (te) + [3.86572 8.31911 ] pdfxs + (o) show + (naver) + [9.41503 4.70253 4.9815 4.43354 3.89552 ] pdfxs + (ag) show + (eover) + [8.30914 4.7125 4.9815 4.42357 7.78108 ] pdfxs + (35) show + (%) + [12.1946 ] pdfxs + (o) show + (f) + [6.92428 ] pdfxs + (t) show + (he) + [5.52946 8.30914 ] pdfxs + (o) show + (ri) + [3.90548 2.76971 ] pdfxs + (g) show + (in) + [2.76971 5.52946 ] pdfxs + (a) show + (llivein) + [6.65528 2.75975 2.76971 4.9815 8.30914 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (ls,fr) + [2.76971 3.92539 6.79476 3.04867 3.89552 ] pdfxs + (o) show + (mpr) + [12.1847 5.53942 3.89552 ] pdfxs + (og) show + (r) + [3.90548 ] pdfxs + (a) show + (msin) + [8.2991 7.82093 2.75975 5.53942 ] pdfxs + 133.768 286.272 m + (t) show + (heSPEC) + [5.52946 7.75121 5.53942 6.77484 6.7848 7.19329 ] pdfxs + (200) show + (0sui) + [8.29918 3.93536 5.52946 2.76971 ] pdfxs + (t) show + (e.) + [4.42357 2.76971 ] pdfxs + 148.712 274.317 m + (Thereduc) + [7.19329 5.53942 8.39881 3.89552 4.43354 5.52946 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nin) + [9.5047 2.75975 9.5047 ] pdfxs + (t) show + (henumber) + [5.53942 8.39881 5.2505 5.53942 8.02014 5.81839 4.42357 7.87075 ] pdfxs + (o) show + (flivein) + [7.01395 2.76971 2.76971 4.9815 8.38885 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lsendsupspeedingupc) + [2.76971 7.90063 4.42357 5.53942 5.52946 7.90063 5.52946 9.5047 3.93536 5.80842 4.42357 + 4.43354 5.52946 2.76971 5.53942 8.94677 5.53942 9.5047 4.42357 ] pdfxs + (o) show + (mpi-) + [8.2991 5.53942 2.76971 3.3176 ] pdfxs + 133.768 262.362 m + (l) + [2.76971 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [9.79362 ] pdfxs + (a) show + (sshowninFi) + [8.17959 3.93536 5.52946 4.70253 7.20325 9.78366 2.76971 9.78366 6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 8.67777 ] pdfxs + (7) show + (.) + [9.99289 ] pdfxs + (I) show + (t) + [8.12988 ] pdfxs + (a) show + (lsoreduces) + [2.76971 3.92539 9.2357 3.90548 4.42357 5.53942 5.52946 4.43354 4.42357 8.17959 ] pdfxs + (t) show + (heins) + [5.53942 8.67777 2.76971 5.52946 3.93536 ] pdfxs + (t) show + (ruc) + [3.89552 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nc) + [9.78366 4.43354 ] pdfxs + (o) show + (unt) + [5.52946 5.26046 8.12988 ] pdfxs + (a) show + (sal) + [8.17959 9.2357 2.76971 ] pdfxs + (a) show + (r) + [3.89552 ] pdfxs + (g) show + (e) show + 133.768 250.407 m + (number) + [5.26046 5.52946 8.0301 5.80842 4.43354 7.98034 ] pdfxs + (o) show + (fre) + [7.12354 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (ermoves) + [4.42357 7.98034 8.30907 4.70253 4.9815 4.42357 8.01022 ] pdfxs + (a) show + (reelimin) + [3.90548 8.5084 4.42357 2.76971 2.76971 8.2991 2.76971 5.52946 ] pdfxs + (at) show + (ed) + [4.42357 9.61429 ] pdfxs + (a) show + (sshowninFi) + [8.01022 3.93536 5.52946 4.70253 7.20325 9.61429 2.75975 9.61429 6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 8.5084 ] pdfxs + (8) show + (.On) + [9.46485 7.75121 9.61429 ] pdfxs + (t) show + (he) + [5.53942 8.49844 ] pdfxs + (ot) show + (her) + [5.53942 4.42357 3.90548 ] pdfxs + 133.768 238.452 m + (h) + [5.53942 ] pdfxs + (a) show + (ndj) + [5.52946 8.56818 3.04867 ] pdfxs + (o) show + (iningliveran) + [2.75975 5.53942 2.76971 5.52946 8.02021 2.75975 2.76971 4.9815 7.46229 3.90548 4.97154 + 5.53942 ] pdfxs + (g) show + (esincre) + [4.42357 6.96411 2.76971 5.53942 4.42357 3.90548 4.42357 ] pdfxs + (a) show + (sesre) + [3.92539 4.43354 6.96411 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (erpressure) + [4.42357 6.93423 5.53942 3.90548 4.42357 3.92539 3.93536 5.52946 3.90548 7.46229 ] pdfxs + (a) show + (nd) + [5.52946 8.56818 ] pdfxs + (a) show + (ssuchmayc) + [6.96411 3.92539 5.53942 4.15457 8.56818 8.2991 4.70253 8.28921 4.43354 ] pdfxs + (a) show + (usem) + [5.52946 3.93536 7.45232 8.30907 ] pdfxs + (o) show + (re) + [3.89552 4.42357 ] pdfxs + 133.768 226.496 m + (spills.Thisis) + [3.92539 5.53942 2.76971 2.76971 2.75975 3.93536 8.97666 7.19329 5.53942 2.75975 7.85081 + 2.76971 7.84085 ] pdfxs + (t) show + (ruef) + [3.89552 5.53942 8.33903 3.04867 ] pdfxs + (o) show + (rafewbenchm) + [7.82094 8.88699 3.04867 4.42357 11.1187 5.80842 4.42357 5.53942 4.15457 5.52946 8.2991 + ] pdfxs + (a) show + (rks,n) + [3.90548 5.26046 3.92539 6.83461 5.52946 ] pdfxs + (a) show + (mely) + [8.30907 4.42357 2.76971 9.17592 ] pdfxs + (255) show + (.v) + [2.75975 4.9815 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (t) show + (ex) + [4.42357 9.17592 ] pdfxs + (a) show + (nd) + [5.53942 9.44492 ] pdfxs + (300) show + (.tw) + [2.76971 3.59672 6.91432 ] pdfxs + (o) show + (lfin) + [2.76971 6.96413 2.75975 5.53942 ] pdfxs + 133.768 214.541 m + (which) + [7.19329 5.53942 2.76971 4.14461 9.11614 ] pdfxs + (t) show + (henumber) + [5.53942 8.00029 5.26046 5.53942 8.02014 5.80842 4.43354 7.48219 ] pdfxs + (o) show + (fl) + [6.62539 2.76971 ] pdfxs + (oa) show + (ds) + [5.52946 3.93536 ] pdfxs + (/) show + (s) + [3.92539 ] pdfxs + (to) show + (res) + [3.89552 4.43354 7.51207 ] pdfxs + (a) show + (ddedis) + [5.52946 5.53942 4.42357 9.11614 2.76971 7.51207 ] pdfxs + (g) show + (re) + [3.89552 4.43354 ] pdfxs + (at) show + (erwhen) + [4.42357 7.48219 7.19329 5.53942 4.42357 9.11614 ] pdfxs + (t) show + (hels+j) + [5.53942 8.00029 2.76971 3.93536 7.74125 3.04867 ] pdfxs + (o) show + (inisusedin) + [2.76971 9.11614 2.75975 7.51207 5.53942 3.92539 4.43354 9.11614 2.75975 5.53942 ] pdfxs + 133.768 202.586 m + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.26303 ] pdfxs + (9) show + (.Evenin) + [7.04384 6.77484 4.9815 4.43354 8.36892 2.76971 8.37888 ] pdfxs + (t) show + (hisc) + [5.52946 2.76971 6.77481 4.42357 ] pdfxs + (a) show + (ses,) + [3.93536 4.42357 3.93536 5.69883 ] pdfxs + (t) show + (heendresultis) + [5.53942 7.27299 4.42357 5.52946 8.37888 3.90548 4.42357 3.93536 5.52946 2.76971 6.71514 + 2.76971 6.77481 ] pdfxs + (a) show + (nover) + [8.37888 4.70253 4.9815 4.42357 3.90548 ] pdfxs + (a) show + (llreduc) + [2.76971 5.60917 3.89552 4.43354 5.52946 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ninins) + [8.37888 2.76971 8.36892 2.76971 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) show + 133.768 190.631 m + (c) + [4.42357 ] pdfxs + (o) show + (un) + [5.53942 5.26046 ] pdfxs + (t) show + (s.) + [3.92539 2.76971 ] pdfxs + 133.768 150.787 m + /N71 11.955 Tf + (4.2F) + [6.7307 3.73 20.1801 7.32842 ] pdfxs + (u) show + (si) + [5.30802 3.73 ] pdfxs + (n) show + (gs) + [11.2138 5.30802 ] pdfxs + (p) show + (ill) + [3.73 3.74195 8.21312 ] pdfxs + (c) show + (o) + [7.1013 ] pdfxs + (d) show + (eintoi) + [10.616 3.74195 7.08931 5.23633 11.2019 3.74195 ] pdfxs + (n) show + (str) + [5.30802 5.22437 5.49929 ] pdfxs + (uc) show + (tio) + [5.22437 3.74195 6.71874 ] pdfxs + (n) show + (s) show + 133.768 132.398 m + /N74 9.963 Tf + (Byfusingspillcodein) + [7.05373 7.93054 3.03871 5.53942 3.92539 2.76971 5.53942 7.64162 3.93536 5.52946 2.76971 + 2.76971 5.4398 4.42357 5.26046 5.52946 7.09366 2.76971 5.26046 ] pdfxs + (t) show + (oins) + [7.65158 2.75975 5.53942 3.92539 ] pdfxs + (t) show + (ruc) + [3.90548 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ns,re) + [5.52946 3.92539 5.56931 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (erpressureisreduced) + [4.43354 6.5656 5.53942 3.89552 4.43354 3.92539 3.93536 5.52946 3.90548 7.09366 2.76971 + 6.59548 3.90548 4.42357 5.53942 5.52946 4.43354 4.42357 8.19954 ] pdfxs + (a) show + (nd) + [5.53942 8.19954 ] pdfxs + (a) show + (saresul) + [6.59548 7.65158 3.90548 4.42357 3.93536 5.52946 2.76971 ] pdfxs + (t) show + 133.768 120.443 m + (be) + [5.80842 4.43354 ] pdfxs + (tt) show + (er) + [4.42357 7.71134 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nisp) + [9.34529 2.75975 7.74122 5.81839 ] pdfxs + (o) show + (ssible.) + [3.92539 3.93536 2.75975 5.53942 2.76971 4.42357 8.66781 ] pdfxs + (L) show + (o) + [5.26046 ] pdfxs + (o) show + (king) + [5.26046 2.75975 5.53942 8.78736 ] pdfxs + (a) show + (tFi) + [7.69151 6.50584 2.75975 ] pdfxs + (g) show + (ure) + [5.53942 3.90548 8.2394 ] pdfxs + (1) show + (0wec) + [8.78736 6.91432 8.2394 4.43354 ] pdfxs + (a) show + (nsee) + [9.34529 3.92539 4.43354 8.2394 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (tusingspill) + [7.69151 5.52946 3.93536 2.75975 5.53942 8.79733 3.92539 5.53942 2.75975 2.76971 2.76971 + ] pdfxs + 303.133 89.3655 m + (6) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 7 7 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + 1 0 0 1 210.218 666.8 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -0.199997 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -210.018 -654.844 cm + [/DeviceGray] cs 0 sc + 216.195 658.431 m + /N74 9.963 Tf + (Benchm) + [7.05373 4.43354 5.52946 4.15457 5.52946 8.30907 ] pdfxs + (a) show + (rk) + [3.89552 5.26046 ] pdfxs + 1 0 0 1 275.689 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -654.844 cm + 281.866 658.431 m + (Ori) + [7.75121 3.89552 2.76971 ] pdfxs + (g) show + (in) + [2.76971 5.52946 ] pdfxs + (a) show + (l) show + 1 0 0 1 323.095 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -654.844 cm + 330.794 658.431 m + (Jo) show + (ined) + [2.76971 5.52946 4.43354 5.53942 ] pdfxs + 1 0 0 1 364.938 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -654.844 cm + 371.115 658.431 m + (Rat) show + (i) + [2.76971 ] pdfxs + (o) show + 1 0 0 1 400.831 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 0 -1.993 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -640.498 cm + 216.195 644.085 m + (177) show + (.mes) + [2.76971 8.2991 4.42357 3.93536 ] pdfxs + (a) show + 1 0 0 1 275.689 640.498 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -640.498 cm + 292.41 644.085 m + (82058) show + 1 0 0 1 323.095 640.498 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -640.498 cm + 334.253 644.085 m + (56039) show + 1 0 0 1 364.938 640.498 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -640.498 cm + 377.341 644.085 m + (0) show + (.) + [2.76971 ] pdfxs + (68) show + 1 0 0 1 400.831 640.498 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -628.144 cm + 216.195 631.731 m + (179) show + (.) + [2.76971 ] pdfxs + (a) show + (r) + [3.89552 ] pdfxs + (t) show + 1 0 0 1 275.689 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -628.144 cm + 297.391 631.731 m + (2430) show + 1 0 0 1 323.095 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -628.144 cm + 339.234 631.731 m + (1637) show + 1 0 0 1 364.938 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -628.144 cm + 377.341 631.731 m + (0) show + (.) + [2.76971 ] pdfxs + (67) show + 1 0 0 1 400.831 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -615.791 cm + 216.195 619.377 m + (183) show + (.equ) + [2.76971 4.42357 5.26046 5.52946 ] pdfxs + (a) show + (ke) + [4.9815 4.42357 ] pdfxs + 1 0 0 1 275.689 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -615.791 cm + 297.391 619.377 m + (2597) show + 1 0 0 1 323.095 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -615.791 cm + 339.234 619.377 m + (1940) show + 1 0 0 1 364.938 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -615.791 cm + 377.341 619.377 m + (0) show + (.) + [2.76971 ] pdfxs + (75) show + 1 0 0 1 400.831 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -603.437 cm + 216.195 607.024 m + (188) show + (.) + [2.76971 ] pdfxs + (a) show + (mmp) + [8.2991 8.2991 5.53942 ] pdfxs + 1 0 0 1 275.689 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -603.437 cm + 292.41 607.024 m + (19460) show + 1 0 0 1 323.095 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -603.437 cm + 334.253 607.024 m + (14059) show + 1 0 0 1 364.938 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -603.437 cm + 377.341 607.024 m + (0) show + (.) + [2.76971 ] pdfxs + (72) show + 1 0 0 1 400.831 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -591.083 cm + 216.195 594.67 m + (164) show + (.) + [2.76971 ] pdfxs + (g) show + (zip) + [4.42357 2.76971 5.53942 ] pdfxs + 1 0 0 1 275.689 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -591.083 cm + 297.391 594.67 m + (7939) show + 1 0 0 1 323.095 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -591.083 cm + 339.234 594.67 m + (4678) show + 1 0 0 1 364.938 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -591.083 cm + 377.341 594.67 m + (0) show + (.) + [2.76971 ] pdfxs + (59) show + 1 0 0 1 400.831 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -578.73 cm + 216.195 582.316 m + (175) show + (.vpr) + [2.76971 5.26046 5.52946 3.90548 ] pdfxs + 1 0 0 1 275.689 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -578.73 cm + 292.41 582.316 m + (26138) show + 1 0 0 1 323.095 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -578.73 cm + 334.253 582.316 m + (15877) show + 1 0 0 1 364.938 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -578.73 cm + 377.341 582.316 m + (0) show + (.) + [2.76971 ] pdfxs + (61) show + 1 0 0 1 400.831 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -566.376 cm + 216.195 569.963 m + (176) show + (.) + [2.76971 ] pdfxs + (g) show + (cc) + [4.42357 4.42357 ] pdfxs + 1 0 0 1 275.689 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -566.376 cm + 287.428 569.963 m + (273574) show + 1 0 0 1 323.095 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -566.376 cm + 329.271 569.963 m + (151894) show + 1 0 0 1 364.938 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -566.376 cm + 377.341 569.963 m + (0) show + (.) + [2.76971 ] pdfxs + (56) show + 1 0 0 1 400.831 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -554.022 cm + 216.195 557.609 m + (181) show + (.mcf) + [2.76971 8.2991 4.42357 3.04867 ] pdfxs + 1 0 0 1 275.689 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -554.022 cm + 297.391 557.609 m + (2065) show + 1 0 0 1 323.095 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -554.022 cm + 339.234 557.609 m + (1331) show + 1 0 0 1 364.938 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -554.022 cm + 377.341 557.609 m + (0) show + (.) + [2.76971 ] pdfxs + (64) show + 1 0 0 1 400.831 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -541.669 cm + 216.195 545.255 m + (186) show + (.cr) + [2.76971 4.42357 3.90548 ] pdfxs + (a) show + (fty) + [3.03871 3.59672 5.26046 ] pdfxs + 1 0 0 1 275.689 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -541.669 cm + 292.41 545.255 m + (46567) show + 1 0 0 1 323.095 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -541.669 cm + 334.253 545.255 m + (27110) show + 1 0 0 1 364.938 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -541.669 cm + 377.341 545.255 m + (0) show + (.) + [2.76971 ] pdfxs + (58) show + 1 0 0 1 400.831 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -529.315 cm + 216.195 532.902 m + (197) show + (.p) + [2.76971 5.52946 ] pdfxs + (a) show + (rser) + [3.90548 3.92539 4.43354 3.90548 ] pdfxs + 1 0 0 1 275.689 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -529.315 cm + 292.41 532.902 m + (21810) show + 1 0 0 1 323.095 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -529.315 cm + 334.253 532.902 m + (13100) show + 1 0 0 1 364.938 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -529.315 cm + 377.341 532.902 m + (0) show + (.) + [2.76971 ] pdfxs + (60) show + 1 0 0 1 400.831 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -516.961 cm + 216.195 520.548 m + (252) show + (.e) + [2.76971 4.42357 ] pdfxs + (o) show + (n) show + 1 0 0 1 275.689 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -516.961 cm + 287.428 520.548 m + (102570) show + 1 0 0 1 323.095 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -516.961 cm + 334.253 520.548 m + (80503) show + 1 0 0 1 364.938 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -516.961 cm + 377.341 520.548 m + (0) show + (.) + [2.76971 ] pdfxs + (78) show + 1 0 0 1 400.831 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -504.608 cm + 216.195 508.194 m + (253) show + (.perlbmk) + [2.76971 5.80842 4.42357 3.90548 2.76971 5.52946 8.30907 5.26046 ] pdfxs + 1 0 0 1 275.689 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -504.608 cm + 287.428 508.194 m + (139692) show + 1 0 0 1 323.095 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -504.608 cm + 334.253 508.194 m + (89065) show + 1 0 0 1 364.938 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -504.608 cm + 377.341 508.194 m + (0) show + (.) + [2.76971 ] pdfxs + (64) show + 1 0 0 1 400.831 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -492.254 cm + 216.195 495.841 m + (254) show + (.) + [2.76971 ] pdfxs + (ga) show + (p) show + 1 0 0 1 275.689 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -492.254 cm + 287.428 495.841 m + (115386) show + 1 0 0 1 323.095 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -492.254 cm + 334.253 495.841 m + (68589) show + 1 0 0 1 364.938 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -492.254 cm + 377.341 495.841 m + (0) show + (.) + [2.76971 ] pdfxs + (59) show + 1 0 0 1 400.831 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -479.9 cm + 216.195 483.487 m + (255) show + (.v) + [2.76971 4.9815 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (t) show + (ex) + [4.43354 5.26046 ] pdfxs + 1 0 0 1 275.689 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -479.9 cm + 292.41 483.487 m + (65644) show + 1 0 0 1 323.095 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -479.9 cm + 334.253 483.487 m + (46026) show + 1 0 0 1 364.938 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -479.9 cm + 377.341 483.487 m + (0) show + (.) + [2.76971 ] pdfxs + (70) show + 1 0 0 1 400.831 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -467.547 cm + 216.195 471.133 m + (256) show + (.bzip) + [2.76971 5.52946 4.43354 2.75975 5.53942 ] pdfxs + (2) show + 1 0 0 1 275.689 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -467.547 cm + 297.391 471.133 m + (5211) show + 1 0 0 1 323.095 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -467.547 cm + 339.234 471.133 m + (3046) show + 1 0 0 1 364.938 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -467.547 cm + 377.341 471.133 m + (0) show + (.) + [2.76971 ] pdfxs + (58) show + 1 0 0 1 400.831 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -455.193 cm + 216.195 458.78 m + (300) show + (.tw) + [2.76971 3.59672 6.91432 ] pdfxs + (o) show + (lf) + [2.76971 3.04867 ] pdfxs + 1 0 0 1 275.689 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -455.193 cm + 292.41 458.78 m + (43959) show + 1 0 0 1 323.095 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -455.193 cm + 334.253 458.78 m + (29381) show + 1 0 0 1 364.938 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -455.193 cm + 377.341 458.78 m + (0) show + (.) + [2.76971 ] pdfxs + (67) show + 1 0 0 1 400.831 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 0 -1.993 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -0.199997 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -210.018 -440.847 cm + 216.195 444.434 m + (T) + [6.36636 ] pdfxs + (ota) show + (l) show + 1 0 0 1 275.689 440.847 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -275.689 -440.847 cm + 287.428 444.434 m + (957100) show + 1 0 0 1 323.095 440.847 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -323.095 -440.847 cm + 329.271 444.434 m + (604275) show + 1 0 0 1 364.938 440.847 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -364.938 -440.847 cm + 377.341 444.434 m + (0) show + (.) + [2.76971 ] pdfxs + (63) show + 1 0 0 1 400.831 440.847 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -190.613 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 190.813 0.19899 l + S + Q + 1 0 0 1 -210.218 -440.448 cm + 151.258 412.608 m + (T) + [6.36636 ] pdfxs + (a) show + (ble) + [5.52946 2.76971 7.75121 ] pdfxs + (1) show + (:) + [7.19328 ] pdfxs + (L) show + (ivein) + [2.76971 4.9815 7.75121 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lc) + [6.08739 4.43354 ] pdfxs + (o) show + (un) + [5.52946 5.26046 ] pdfxs + (t) show + (sbef) + [7.25303 5.80842 4.42357 3.04867 ] pdfxs + (o) show + (re) + [3.90548 7.74125 ] pdfxs + (a) show + (nd) + [5.53942 8.8571 ] pdfxs + (a) show + (f) + [3.03871 ] pdfxs + (t) show + (erre) + [4.43354 7.22316 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (ermovec) + [4.42357 7.22316 8.2991 4.7125 4.9815 7.74125 4.43354 ] pdfxs + (oa) show + (lescin) + [2.76971 4.42357 3.92539 4.43354 2.76971 5.52946 ] pdfxs + (g) show + (.) show + 133.768 380.783 m + (codefusi) + [4.42357 5.26046 5.53942 8.13977 3.04867 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (n) + [9.25562 ] pdfxs + (o) show + (f) + [3.03871 ] pdfxs + (t) show + (enresultsin) + [4.42357 9.25562 3.89552 4.43354 3.92539 5.53942 2.76971 3.86572 7.65155 2.75975 9.25562 + ] pdfxs + (a) show + (nincre) + [9.24566 2.76971 5.52946 4.43354 3.90548 4.42357 ] pdfxs + (a) show + (seinmem) + [3.92539 8.14973 2.75975 9.25562 8.2991 4.42357 8.30907 ] pdfxs + (o) show + (ryreferences.Thisisbec) + [3.89552 8.97666 3.90548 4.42357 3.04867 4.42357 3.90548 4.42357 5.53942 4.42357 4.42357 + 3.93536 8.37888 7.19329 5.52946 2.76971 7.64159 2.76971 7.64159 5.81839 4.42357 4.42357 + ] pdfxs + (a) show + (use) + [5.53942 3.92539 4.42357 ] pdfxs + 133.768 368.828 m + (codeth) + [4.42357 5.26046 5.53942 7.75121 3.86572 5.53942 ] pdfxs + (a) show + (tused) + [7.19336 5.53942 3.92539 4.43354 8.84714 ] pdfxs + (t) show + (obelike) + [8.30914 5.80842 7.75121 2.75975 2.76971 4.9815 7.75121 ] pdfxs + (t) show + (hef) + [5.52946 7.75121 3.04867 ] pdfxs + (o) show + (llowingbef) + [2.75975 2.76971 4.70253 7.20325 2.75975 5.53942 8.29918 5.80842 4.43354 3.03871 ] pdfxs + (o) show + (re) + [3.90548 7.75121 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (n:) + [5.53942 2.76971 ] pdfxs + 118.423 334.955 m + /N104 4.98099 Tf + (0) show + 133.768 334.955 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (%R3) show + (,) + [10.4611 ] pdfxs + (%R1) show + 118.423 323 m + /N104 4.98099 Tf + (1) show + 133.768 323 m + /N107 9.963 Tf + (su) show + (b) + [10.4611 ] pdfxs + (%R4) show + (,) + [10.4611 ] pdfxs + (%R1) show + 148.712 301.082 m + /N74 9.963 Tf + (bec) + [5.80842 4.43354 4.42357 ] pdfxs + (o) show + (mes:) + [8.2991 4.43354 3.92539 2.76971 ] pdfxs + 118.423 279.164 m + /N104 4.98099 Tf + (0) show + 133.768 279.164 m + /N107 9.963 Tf + (mo) show + (v) + [10.4611 ] pdfxs + (%R1) show + (,) + [10.4611 ] pdfxs + ([stac) show + (k) + [10.4611 ] pdfxs + (slot]) show + 118.423 267.209 m + /N104 4.98099 Tf + (1) show + 133.768 267.209 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (%R3) show + (,) + [10.4611 ] pdfxs + (%R1) show + 118.423 255.254 m + /N104 4.98099 Tf + (2) show + 133.768 255.254 m + /N107 9.963 Tf + (su) show + (b) + [10.4611 ] pdfxs + (%R4) show + (,) + [10.4611 ] pdfxs + (%R1) show + 148.712 233.336 m + /N74 9.963 Tf + (whenfusi) + [7.19329 5.53942 4.42357 8.8571 3.04867 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (nisn) + [8.8571 2.76971 7.25303 5.52946 ] pdfxs + (o) show + (tused) + [7.19336 5.53942 3.92539 4.43354 8.8571 ] pdfxs + (a) show + (nd:) + [5.52946 5.53942 2.76971 ] pdfxs + 118.423 211.418 m + /N104 4.98099 Tf + (0) show + 133.768 211.418 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (%R3) show + (,) + [10.4611 ] pdfxs + ([stac) show + (k) + [10.4611 ] pdfxs + (slot]) show + 118.423 199.463 m + /N104 4.98099 Tf + (1) show + 133.768 199.463 m + /N107 9.963 Tf + (su) show + (b) + [10.4611 ] pdfxs + (%R4) show + (,) + [10.4611 ] pdfxs + ([stac) show + (k) + [10.4611 ] pdfxs + (slot]) show + 148.712 177.545 m + /N74 9.963 Tf + (whenfusi) + [7.19329 5.53942 4.42357 9.52462 3.04867 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (nisused.Thecodeusingmem) + [9.52462 2.76971 7.92056 5.52946 3.93536 4.42357 5.53942 9.19585 7.20325 5.52946 8.41874 + 4.42357 5.26046 5.53942 8.40877 5.53942 3.92539 2.76971 5.53942 8.9667 8.2991 4.43354 + 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 9.24566 ] pdfxs + (o) show + (per) + [5.80842 4.43354 3.89552 ] pdfxs + (a) show + (ndsh) + [5.53942 5.52946 7.92056 5.53942 ] pdfxs + (a) show + (sm) + [7.92056 8.2991 ] pdfxs + (o) show + (remem) + [3.90548 8.40877 8.30907 4.42357 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 5.26046 ] pdfxs + 133.768 165.59 m + (referencesbutnoexplicitl) + [3.90548 4.42357 3.04867 4.42357 3.90548 4.42357 5.53942 4.42357 4.43354 7.86078 5.53942 + 5.52946 7.81107 5.53942 8.91688 4.42357 5.26046 5.52946 2.76971 2.76971 4.42357 2.76971 + 7.81107 2.76971 ] pdfxs + (oa) show + (ds.Bec) + [5.52946 3.93536 9.03644 7.05373 4.43354 4.42357 ] pdfxs + (a) show + (use) + [5.53942 3.92539 8.35896 ] pdfxs + (t) show + (hec) + [5.53942 8.35896 4.43354 ] pdfxs + (a) show + (che) + [4.14461 5.53942 8.35896 ] pdfxs + (o) show + (fmodernx) + [6.98406 8.2991 5.26046 5.53942 4.42357 3.90548 9.46484 5.26046 ] pdfxs + (8) show + (6v) + [8.91688 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (n) + [5.2505 ] pdfxs + (t) show + (sis) + [7.87074 2.75975 3.92539 ] pdfxs + 133.768 153.635 m + (a) show + (lm) + [2.76971 8.2991 ] pdfxs + (o) show + (st) + [3.92539 6.65536 ] pdfxs + (a) show + (sf) + [6.70507 3.04867 ] pdfxs + (a) show + (st) + [3.92539 6.65536 ] pdfxs + (a) show + (sre) + [6.70507 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers) + [4.42357 3.90548 6.70507 ] pdfxs + (a) show + (nd) + [5.53942 8.30914 ] pdfxs + (a) show + (llsubsequentreferences) + [2.76971 5.53943 3.93536 5.52946 5.53942 3.92539 4.42357 5.26046 5.53942 4.42357 5.26046 + 6.65536 3.89552 4.43354 3.03871 4.43354 3.89552 4.43354 5.52946 4.43354 4.42357 6.70507 + ] pdfxs + (o) show + (f) + [5.81839 ] pdfxs + (t) show + (hespilled) + [5.53942 7.20325 3.92539 5.53942 2.76971 2.75975 2.76971 4.43354 8.30914 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ry) + [3.90548 5.26046 ] pdfxs + 133.768 141.68 m + (a) show + (re) + [3.90548 9.07629 ] pdfxs + (g) show + (u) + [5.53942 ] pdfxs + (a) show + (r) + [3.89552 ] pdfxs + (a) show + (n) + [5.26046 ] pdfxs + (t) show + (eed) + [4.43354 4.42357 10.1921 ] pdfxs + (t) show + (obein) + [9.63422 5.80842 9.08626 2.76971 10.1822 ] pdfxs + (t) show + (he) + [5.53942 9.07629 ] pdfxs + (L) show + (1c) + [9.64418 4.42357 ] pdfxs + (a) show + (che,) + [4.15457 5.52946 4.43354 7.75121 ] pdfxs + (t) show + (heperf) + [5.53942 9.07629 5.81839 4.42357 3.90548 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (a) show + (nce) + [5.53942 4.42357 9.08626 ] pdfxs + (o) show + (f) + [7.69143 ] pdfxs + (t) show + (hefusedcodeis) + [5.53942 9.08626 3.03871 5.53942 3.92539 4.42357 10.1921 4.43354 5.2505 5.53942 9.08626 + 2.75975 3.92539 ] pdfxs + 133.768 129.725 m + (expec) + [4.42357 5.26046 5.81839 4.42357 4.42357 ] pdfxs + (t) show + (edtobesimil) + [4.43354 8.8571 3.86572 8.30914 5.80842 7.75121 3.92539 2.76971 8.2991 2.76971 2.76971 + ] pdfxs + (a) show + (r) + [7.22316 ] pdfxs + (t) show + (o) + [8.29918 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (t) + [7.20332 ] pdfxs + (o) show + (f) + [6.35639 ] pdfxs + (t) show + (hen) + [5.53942 7.75121 5.52946 ] pdfxs + (o) show + (n-fusedcode.) + [5.53942 3.3176 3.04867 5.52946 3.93536 4.42357 8.8571 4.42357 5.26046 5.53942 4.42357 + 2.76971 ] pdfxs + 303.133 89.3651 m + (7) show + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 8 8 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 148.712 657.235 m + /N74 9.963 Tf + (I) show + (nFi) + [9.76374 6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 8.65785 ] pdfxs + (9) show + (,weseeadr) + [7.23314 6.91432 8.65785 3.93536 4.42357 8.65785 9.21577 5.52946 3.90548 ] pdfxs + (a) show + (m) + [8.2991 ] pdfxs + (at) show + (icreduc) + [2.76971 8.65785 3.90548 4.42357 5.53942 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [9.7737 ] pdfxs + (o) show + (fexplicitl) + [7.27299 4.42357 5.26046 5.53942 2.75975 2.76971 4.43354 2.75975 8.10996 2.76971 ] pdfxs + (oa) show + (ds) + [5.52946 3.93536 ] pdfxs + (/) show + (s) + [3.92539 ] pdfxs + (to) show + (res.Thisis) + [3.90548 4.42357 3.93536 9.92314 7.19329 5.53942 2.76971 8.15967 2.75975 3.92539 ] pdfxs + 133.768 645.28 m + (b) + [5.80842 ] pdfxs + (ot) show + (hdue) + [9.52462 5.52946 5.53942 8.40877 ] pdfxs + (t) show + (oareducti) + [8.9667 8.9667 3.90548 4.42357 5.53942 5.52946 4.43354 3.86572 2.76971 ] pdfxs + (o) show + (ninre) + [9.52462 2.76971 9.51466 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (erspillsbec) + [4.43354 7.88071 3.93536 5.52946 2.76971 2.76971 2.76971 7.91059 5.80842 4.43354 4.42357 + ] pdfxs + (a) show + (use) + [5.53942 3.92539 8.40877 ] pdfxs + (o) show + (freducedre) + [7.03387 3.90548 4.42357 5.53942 5.52946 4.43354 4.42357 9.52462 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (erpressure) + [4.42357 7.89068 5.52946 3.90548 4.42357 3.93536 3.92539 5.53942 3.89552 4.42357 ] pdfxs + 133.768 633.325 m + (a) show + (nd) + [5.53942 8.84714 ] pdfxs + (a) show + (lsoadirectreduc) + [2.76971 3.93536 8.29918 8.29918 5.53942 2.76971 3.89552 4.43354 4.42357 7.19336 3.90548 + 4.42357 5.53942 5.52946 4.43354 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [8.8571 ] pdfxs + (o) show + (fl) + [6.36635 2.76971 ] pdfxs + (oa) show + (ds) + [5.52946 3.93536 ] pdfxs + (/) show + (s) + [3.92539 ] pdfxs + (to) show + (resbec) + [3.90548 4.42357 7.25303 5.80842 4.43354 4.42357 ] pdfxs + (a) show + (use) + [5.53942 3.92539 7.75121 ] pdfxs + (o) show + (fspillcodefusi) + [6.36635 3.92539 5.53942 2.75975 2.76971 6.08739 4.43354 5.2505 5.53942 7.75121 3.03871 + 5.53942 3.92539 2.76971 ] pdfxs + (o) show + (n.) + [5.53942 2.76971 ] pdfxs + 148.712 621.37 m + (G) + [7.82099 ] pdfxs + (o) show + (ingb) + [2.75975 5.53942 7.99032 5.53942 ] pdfxs + (a) show + (ck) + [4.14461 8.26929 ] pdfxs + (t) show + (oFi) + [7.99032 6.50584 2.75975 ] pdfxs + (g) show + (ure7wec) + [5.53942 3.90548 7.4324 7.99032 6.91432 7.44236 4.42357 ] pdfxs + (a) show + (nsee) + [8.54825 3.92539 4.43354 7.4324 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (tc) + [6.87454 4.43354 ] pdfxs + (o) show + (mpil) + [8.2991 5.53942 2.75975 2.76971 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.53829 ] pdfxs + (t) show + (imes) + [2.76971 8.2991 4.43354 6.93422 ] pdfxs + (a) show + (re) + [3.90548 7.4324 ] pdfxs + (a) show + (lsoimproved) + [2.76971 3.92539 7.99032 2.76971 8.30907 5.52946 3.90548 4.70253 4.9815 4.42357 5.53942 + ] pdfxs + 133.768 609.415 m + (even) + [4.42357 4.9815 4.43354 10.2519 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (o) show + (u) + [5.52946 ] pdfxs + (g) show + (hspillcodefusi) + [10.2519 3.93536 5.52946 2.76971 2.76971 7.48221 4.43354 5.2505 5.53942 9.14603 3.04867 + 5.52946 3.93536 2.75975 ] pdfxs + (o) show + (nslowsdownb) + [10.2619 3.92539 2.76971 4.70253 7.19329 8.64785 5.53942 4.70253 7.19329 10.2519 5.53942 + ] pdfxs + (a) show + (ck) + [4.15457 5.2505 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (a) show + (ckin) + [4.15457 5.2505 2.76971 5.53942 ] pdfxs + (g) show + (.Thisism) + [11.3877 7.19329 5.53942 2.75975 8.65782 2.75975 8.65782 8.2991 ] pdfxs + (a) show + (inlydue) + [2.76971 5.52946 2.76971 9.97296 5.53942 5.52946 4.42357 ] pdfxs + 133.768 597.459 m + (t) show + (olessb) + [9.30544 2.75975 4.43354 3.92539 8.2593 5.52946 ] pdfxs + (a) show + (ck) + [4.15457 5.2505 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (a) show + (ckingbec) + [4.15457 5.2505 2.76971 5.53942 9.29548 5.81839 4.42357 4.43354 ] pdfxs + (a) show + (use) + [5.52946 3.93536 8.74751 ] pdfxs + (o) show + (fdecre) + [7.36265 5.53942 4.42357 4.42357 3.90548 4.43354 ] pdfxs + (a) show + (sedspillin) + [3.92539 4.42357 9.86337 3.92539 5.53942 2.75975 2.76971 2.76971 2.76971 5.52946 ] pdfxs + (g) show + (.) + [10.2021 ] pdfxs + (A) show + (lsowhen) + [2.76971 3.92539 9.30544 7.19329 5.53942 4.42357 9.8534 ] pdfxs + (t) show + (he) + [5.53942 8.74751 ] pdfxs + (t) show + (emp) + [4.42357 8.2991 5.81839 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (a) show + (ry) + [3.90548 5.26046 ] pdfxs + 133.768 585.504 m + (c) + [4.42357 ] pdfxs + (o) show + (rresp) + [3.90548 3.90548 4.42357 3.93536 5.80842 ] pdfxs + (o) show + (nding) + [5.52946 5.53942 2.76971 5.52946 8.62796 ] pdfxs + (t) show + (othecurrentin) + [8.62796 3.86572 5.53942 8.07003 4.43354 5.52946 3.90548 3.89552 4.43354 5.26046 7.51218 + 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lisspilled) + [6.40621 2.76971 7.57185 3.93536 5.52946 2.76971 2.76971 2.76971 4.42357 9.17592 ] pdfxs + (a) show + (nd) + [5.53942 9.17592 ] pdfxs + (a) show + (lli) + [2.76971 6.40621 2.76971 ] pdfxs + (t) show + (sreferences) + [7.57185 3.90548 4.42357 3.04867 4.42357 3.90548 4.42357 5.53942 4.42357 4.43354 7.57185 + ] pdfxs + (a) show + (refused,) + [3.89552 8.07999 3.03871 5.53942 3.92539 4.43354 5.52946 2.76971 ] pdfxs + 133.768 573.549 m + (i) + [2.76971 ] pdfxs + (t) show + (slivein) + [7.24307 2.76971 2.76971 4.9815 7.75121 2.75975 5.26046 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.70253 ] pdfxs + (a) show + (lisremoved) + [6.08739 2.76971 7.25303 3.90548 4.42357 8.2991 4.7125 4.9815 4.42357 8.8571 ] pdfxs + (a) show + (ndnob) + [5.52946 8.8571 5.53942 8.29918 5.53942 ] pdfxs + (a) show + (ck) + [4.14461 5.26046 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (a) show + (ckingisnecess) + [4.14461 5.26046 2.76971 5.52946 8.30914 2.75975 7.25303 5.53942 4.42357 4.42357 4.43354 + 3.92539 3.93536 ] pdfxs + (a) show + (ry.) + [3.89552 4.43353 2.76971 ] pdfxs + 133.768 545.661 m + /N71 11.955 Tf + (4.3) + [6.7307 3.73 20.1801 ] pdfxs + (Ru) show + (ntimePerform) + [7.08931 5.23633 3.73 11.2138 10.616 8.82275 6.13291 5.48733 4.11245 6.7307 5.48733 + 11.2138 ] pdfxs + (anc) show + (e) show + 133.768 527.271 m + /N74 9.963 Tf + (Theloc) + [7.19329 5.53942 7.4324 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (lre) + [5.76857 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 6.90434 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (risc) + [6.90434 2.76971 6.92426 4.43354 ] pdfxs + (o) show + (mp) + [8.2991 5.53942 ] pdfxs + (a) show + (red) + [3.89552 4.43354 8.53829 ] pdfxs + (t) show + (ols+j) + [7.98036 2.76971 3.92539 7.75121 3.03871 ] pdfxs + (o) show + (in+mem) + [2.76971 5.53942 7.74125 8.30907 4.42357 8.2991 ] pdfxs + (o) show + (pre) + [8.53829 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.93536 ] pdfxs + (t) show + (er) + [4.42357 6.90434 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (ato) show + (rin) + [6.90434 2.75975 5.53942 ] pdfxs + 133.768 515.316 m + (b) + [5.80842 ] pdfxs + (ot) show + (hs) + [9.7737 3.93536 ] pdfxs + (ta) show + (tic) + [3.86572 2.76971 8.66781 ] pdfxs + (a) show + (nddyn) + [5.53942 9.7737 5.52946 5.26046 5.53942 ] pdfxs + (a) show + (micc) + [8.2991 2.76971 8.66781 4.42357 ] pdfxs + (o) show + (mpil) + [8.2991 5.53942 2.76971 2.76971 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (ninT) + [9.7737 2.76971 9.7737 6.36636 ] pdfxs + (a) show + (ble) + [5.52946 2.76971 8.66781 ] pdfxs + (2) show + (.F) + [9.95303 5.67891 ] pdfxs + (o) show + (rs) + [8.13975 3.92539 ] pdfxs + (tat) show + (icc) + [2.76971 8.66781 4.42357 ] pdfxs + (o) show + (mpil) + [8.2991 5.53942 2.76971 2.75975 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n,) + [5.53942 7.23314 ] pdfxs + (t) show + (he) + [5.52946 4.42357 ] pdfxs + 133.768 503.361 m + (line) + [2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.41245 3.93536 4.42357 ] pdfxs + (a) show + (nre) + [9.05636 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 7.42242 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (riscle) + [7.42242 2.76971 7.44233 4.42357 2.76971 4.43354 ] pdfxs + (a) show + (rlyabet) + [3.89552 2.76971 8.7774 8.49844 5.80842 4.43354 3.86572 ] pdfxs + (t) show + (erch) + [4.43354 7.41245 4.15457 5.53942 ] pdfxs + (o) show + (ice.) + [2.75975 4.43354 4.42357 7.7811 ] pdfxs + (R) show + (unning) + [5.53942 5.52946 5.53942 2.76971 5.52946 8.49844 ] pdfxs + (t) show + (imeimprove-) + [2.76971 8.2991 7.95047 2.75975 8.30907 5.52946 3.90548 4.70253 4.9815 4.43354 3.3176 + ] pdfxs + 133.768 491.406 m + (mentsr) + [8.2991 4.43354 5.26046 3.86572 7.0737 3.89552 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (ebetween) + [7.56192 5.80842 4.43354 3.59672 6.91432 4.42357 4.43354 8.66781 ] pdfxs + (9) show + (%) + [11.4374 ] pdfxs + (t) show + (o) + [8.11984 ] pdfxs + (58) show + (%.F) + [8.2991 7.1335 5.66894 ] pdfxs + (o) show + (rtwobenchm) + [7.04382 3.59672 6.91432 8.11984 5.80842 4.43354 5.52946 4.15457 5.52946 8.30907 ] pdfxs + (a) show + (rks) + [3.89552 5.26046 7.06374 ] pdfxs + (t) show + (heline) + [5.53942 7.56192 2.75975 2.76971 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.04382 3.92539 4.42357 ] pdfxs + (a) show + (n) + [8.67777 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (r) show + 133.768 479.451 m + (perf) + [5.80842 4.43354 3.89552 3.04867 ] pdfxs + (o) show + (rmsw) + [3.90548 8.2991 7.801 6.91432 ] pdfxs + (o) show + (rseth) + [3.90548 3.93536 8.29918 3.86572 5.53942 ] pdfxs + (a) show + (n) + [9.40507 ] pdfxs + (t) show + (heloc) + [5.53942 8.29918 2.76971 5.2505 4.43354 ] pdfxs + (a) show + (l) + [6.63535 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (ato) show + (r.Ihaven'tyetiden) + [3.89552 8.8571 7.46221 5.53942 4.70253 4.9815 4.42357 5.53942 2.76971 7.74132 4.9815 + 4.43354 7.74132 2.76971 5.53942 4.42357 5.26046 ] pdfxs + (t) show + (i\fed) + [2.75975 5.53942 4.42357 9.41503 ] pdfxs + (t) show + (hes) + [5.52946 8.29918 3.93536 ] pdfxs + (o) show + (urce) + [5.52946 3.90548 4.42357 8.29918 ] pdfxs + (o) show + (f) show + 133.768 467.495 m + (t) show + (hisslowdown.) + [5.52946 2.76971 7.25303 3.92539 2.76971 4.70253 7.20325 5.52946 4.70253 7.20325 5.52946 + 2.76971 ] pdfxs + 148.712 455.54 m + (F) + [5.66894 ] pdfxs + (o) show + (rdyn) + [6.8346 5.53942 5.26046 5.52946 ] pdfxs + (a) show + (micc) + [8.30907 2.75975 7.36266 4.43354 ] pdfxs + (o) show + (mpil) + [8.2991 5.52946 2.76971 2.76971 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n,) + [5.52946 5.77854 ] pdfxs + (t) show + (herunning) + [5.52946 7.36266 3.90548 5.53942 5.52946 5.53942 2.75975 5.53942 7.91062 ] pdfxs + (t) show + (imeperf) + [2.76971 8.2991 7.36266 5.80842 4.43354 3.89552 3.04867 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (a) show + (nceism) + [5.52946 4.43354 7.36266 2.75975 6.86448 8.30907 ] pdfxs + (o) show + (rev) + [3.89552 7.36266 4.70253 ] pdfxs + (a) show + (ried.Be-) + [3.90548 2.76971 4.42357 5.53942 7.06376 7.05373 4.43354 3.3176 ] pdfxs + 133.768 443.585 m + (c) + [4.42357 ] pdfxs + (a) show + (use) + [5.53942 3.92539 7.1634 ] pdfxs + (o) show + (f) + [5.76857 ] pdfxs + (t) show + (he) + [5.53942 7.15343 ] pdfxs + (a) show + (ddi) + [5.52946 5.53942 2.76971 ] pdfxs + (t) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [5.53942 ] pdfxs + (a) show + (loverhe) + [5.49957 4.70253 4.9815 4.42357 3.90548 5.52946 4.43354 ] pdfxs + (a) show + (d) + [8.25932 ] pdfxs + (o) show + (fline) + [5.77854 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [6.63534 3.92539 4.43354 ] pdfxs + (a) show + (nc) + [8.25932 4.43354 ] pdfxs + (o) show + (mp) + [8.2991 5.52946 ] pdfxs + (a) show + (red) + [3.90548 4.42357 8.26929 ] pdfxs + (t) show + (o) + [7.71136 ] pdfxs + (t) show + (heloc) + [5.52946 7.15343 2.76971 5.26046 4.42357 ] pdfxs + (a) show + (l) + [5.49957 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (ato) show + (ri) + [6.62538 2.76971 ] pdfxs + (t) show + 133.768 431.63 m + (ism) + [2.76971 7.25303 8.30907 ] pdfxs + (o) show + (re) + [3.89552 7.76118 ] pdfxs + (o) show + (f) + [3.03871 ] pdfxs + (t) show + (en) + [4.43354 8.8571 ] pdfxs + (t) show + (hec) + [5.53942 7.76118 4.42357 ] pdfxs + (a) show + (se) + [3.92539 7.76118 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (tline) + [7.20332 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.23312 3.92539 4.43354 ] pdfxs + (a) show + (nperf) + [8.8571 5.81839 4.42357 3.90548 3.03871 ] pdfxs + (o) show + (rmsw) + [3.90548 8.2991 7.263 6.91432 ] pdfxs + (o) show + (rse) + [3.90548 3.92539 7.76118 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (n) + [8.86707 ] pdfxs + (t) show + (heloc) + [5.52946 7.76118 2.76971 5.26046 4.42357 ] pdfxs + (a) show + (l) + [6.09735 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (t) + [3.86572 ] pdfxs + (o) show + (r.) + [3.90548 2.76971 ] pdfxs + 133.768 419.675 m + (F) + [5.66894 ] pdfxs + (o) show + (rpr) + [6.93423 5.52946 3.90548 ] pdfxs + (og) show + (r) + [3.90548 ] pdfxs + (a) show + (ms) + [8.2991 6.95414 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (trunf) + [6.89447 3.90548 5.52946 8.56818 3.03871 ] pdfxs + (o) show + (ran) + [6.93423 8.00029 5.53942 ] pdfxs + (o) show + (n-) + [5.52946 3.32757 ] pdfxs + (t) show + (rivi) + [3.89552 2.76971 5.26046 2.76971 ] pdfxs + (a) show + (l) + [5.7885 ] pdfxs + (a) show + (m) + [8.2991 ] pdfxs + (o) show + (unt) + [5.53942 5.26046 6.89447 ] pdfxs + (o) show + (ftime) + [6.07743 3.86572 2.76971 8.2991 7.46229 ] pdfxs + (t) show + (hec) + [5.52946 7.45232 4.43354 ] pdfxs + (o) show + (st) + [3.92539 6.90443 ] pdfxs + (o) show + (fre) + [6.06746 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 6.92427 ] pdfxs + (a) show + (ll) + [2.76971 2.76971 ] pdfxs + (o) show + (-) show + 133.768 407.72 m + (c) + [4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nis) + [8.2394 2.75975 6.63533 ] pdfxs + (a) show + (m) + [8.2991 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (t) show + (ized) + [2.75975 4.43354 4.42357 8.2394 ] pdfxs + (a) show + (nd) + [5.52946 8.2394 ] pdfxs + (t) show + (husline) + [5.2505 5.53942 6.62537 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [6.59549 3.93536 4.42357 ] pdfxs + (a) show + (n) + [8.2394 ] pdfxs + (o) show + (u) + [5.52946 ] pdfxs + (t) show + (perf) + [5.80842 4.43354 3.89552 3.04867 ] pdfxs + (o) show + (rms) + [3.90548 8.2991 6.62537 ] pdfxs + (t) show + (heloc) + [5.53942 7.12355 2.76971 5.26046 4.42357 ] pdfxs + (a) show + (lre) + [5.46968 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 6.60545 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (t) + [3.86572 ] pdfxs + (o) show + (r.) + [3.90548 2.76971 ] pdfxs + 133.768 395.764 m + (Thus,inthec) + [7.19329 5.26046 5.53942 3.92539 6.28665 2.76971 9.01651 3.86572 5.53942 7.91062 4.42357 + ] pdfxs + (o) show + (n) + [5.26046 ] pdfxs + (t) show + (ext) + [4.42357 5.26046 7.35277 ] pdfxs + (o) show + (fa) + [6.52576 8.45858 ] pdfxs + (JI) show + (Titmaybeabe) + [10.6704 2.76971 7.35277 8.30907 4.70253 8.73755 5.80842 7.91062 8.45858 5.80842 4.43354 + ] pdfxs + (tt) show + (erch) + [4.42357 7.38256 4.15457 5.52946 ] pdfxs + (o) show + (ice) + [2.76971 4.42357 7.91062 ] pdfxs + (t) show + (o\frst) + [8.45858 5.53942 3.89552 3.93536 7.35277 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (at) show + (ewi) + [7.90066 7.19329 2.76971 ] pdfxs + (t) show + (h) + [9.01651 ] pdfxs + (a) show + 133.768 383.809 m + (veryf) + [4.9815 4.42357 3.90548 8.93681 3.04867 ] pdfxs + (a) show + (stre) + [3.92539 7.56199 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 7.59179 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (rlike) + [7.59179 2.75975 2.76971 4.9815 8.10988 ] pdfxs + (t) show + (heloc) + [5.52946 8.11985 2.75975 5.26046 4.42357 ] pdfxs + (a) show + (l) + [6.45602 ] pdfxs + (o) show + (ne,) + [5.52946 4.43354 6.53573 ] pdfxs + (a) show + (ndiden) + [5.53942 9.21577 2.76971 5.52946 4.43354 5.2505 ] pdfxs + (t) show + (ifyh) + [2.76971 3.04867 8.93681 5.52946 ] pdfxs + (o) show + (tfunc) + [7.56199 3.03871 5.53942 5.53942 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (nswhich) + [5.52946 7.6117 7.19329 5.53942 2.76971 4.14461 5.53942 ] pdfxs + 133.768 371.854 m + (willl) + [7.19329 2.76971 2.76971 6.08739 2.76971 ] pdfxs + (a) show + (terbere) + [3.86572 4.43354 7.22316 5.80842 7.75121 3.90548 4.42357 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (edby) + [4.42357 8.8571 5.26046 8.57814 ] pdfxs + (t) show + (heslowerbutbe) + [5.52946 7.75121 3.92539 2.76971 4.70253 6.92428 4.42357 7.22316 5.53942 5.52946 7.19336 + 5.81839 4.42357 ] pdfxs + (tt) show + (erline) + [4.42357 7.22316 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.22316 3.92539 4.43354 ] pdfxs + (a) show + (nre) + [8.84714 3.90548 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 7.22316 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (ato) show + (r.) + [3.89552 2.76971 ] pdfxs + 133.768 338.908 m + /N71 14.346 Tf + (5) + [24.2161 ] pdfxs + (R) show + (el) + [7.3595 4.476 ] pdfxs + (a) show + (tedWork) + [6.2836 7.3595 14.346 15.3359 8.0625 6.59915 8.52144 ] pdfxs + 133.768 317.087 m + /N74 9.963 Tf + (L) show + (ine) + [2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [6.89438 3.92539 4.43354 ] pdfxs + (a) show + (nre) + [8.52832 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 6.89438 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nw) + [8.52832 6.91432 ] pdfxs + (a) show + (s\frstin) + [6.92426 5.53942 3.89552 3.93536 6.86458 2.76971 5.26046 ] pdfxs + (t) show + (roducedin[PEK) + [3.89552 5.26046 5.52946 5.53942 4.42357 4.43354 8.52832 2.76971 8.52832 2.75975 6.7848 + 6.7848 7.74125 ] pdfxs + (97) show + (]) + [5.76857 ] pdfxs + (a) show + (ndfur) + [5.52946 8.52832 3.04867 5.52946 3.90548 ] pdfxs + (t) show + (herdoc-) + [5.52946 4.43354 6.89438 5.52946 5.26046 4.43354 3.3176 ] pdfxs + 133.768 305.132 m + (umen) + [5.53942 8.2991 4.42357 5.26046 ] pdfxs + (t) show + (edin[PS) + [4.42357 8.36892 2.76971 8.35895 2.76971 6.7848 5.52946 ] pdfxs + (99) show + (].Thisini) + [2.76971 7.03387 7.19329 5.53942 2.75975 6.76485 2.76971 5.52946 2.76971 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (a) show + (linc) + [5.5992 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (n) + [5.26046 ] pdfxs + (tat) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [8.36892 ] pdfxs + (o) show + (f) + [5.87817 ] pdfxs + (t) show + (he) + [5.52946 7.26303 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (g) show + (ori) + [4.97154 3.90548 2.76971 ] pdfxs + (t) show + (hmisex) + [5.52946 11.1386 2.76971 6.75488 4.43354 5.2505 ] pdfxs + (t) show + (remelysimple) + [3.90548 4.42357 8.30907 4.42357 2.76971 8.08995 3.92539 2.76971 8.2991 5.53942 2.75975 + 4.42357 ] pdfxs + 133.768 293.177 m + (m) + [8.2991 ] pdfxs + (a) show + (inlybec) + [2.76971 5.53942 2.75975 8.1298 5.80842 4.42357 4.43354 ] pdfxs + (a) show + (use) + [5.52946 3.93536 7.28295 ] pdfxs + (t) show + (hequ) + [5.53942 7.29292 5.2505 5.53942 ] pdfxs + (a) show + (lity) + [2.76971 2.76971 3.59672 8.11984 ] pdfxs + (o) show + (f) + [5.90805 ] pdfxs + (t) show + (hecodew) + [5.52946 7.29292 4.42357 5.26046 5.53942 7.28295 6.92428 ] pdfxs + (a) show + (s) + [6.79474 ] pdfxs + (g) show + (ooden) + [5.2505 5.26046 8.3988 4.42357 5.53942 ] pdfxs + (o) show + (u) + [5.53942 ] pdfxs + (g) show + (hf) + [8.38884 3.04867 ] pdfxs + (o) show + (r) + [6.76486 ] pdfxs + (t) show + (he) + [5.52946 7.29292 ] pdfxs + (a) show + (pplic) + [5.53942 5.52946 2.76971 2.76971 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.3988 ] pdfxs + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 133.768 281.222 m + (t) show + (he) + [5.52946 8.80729 ] pdfxs + (a) show + (u) + [5.52946 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (o) show + (rsc) + [3.89552 8.30911 4.42357 ] pdfxs + (o) show + (ncen) + [5.53942 4.42357 4.42357 5.26046 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (at) show + (edm) + [4.42357 9.90322 8.30907 ] pdfxs + (o) show + (reinc) + [3.89552 8.80729 2.75975 9.91318 4.42357 ] pdfxs + (o) show + (mpile) + [8.30907 5.52946 2.76971 2.76971 8.79733 ] pdfxs + (t) show + (imeperf) + [2.76971 8.2991 8.79733 5.80842 4.43354 3.90548 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (a) show + (ncer) + [5.53942 4.42357 8.79733 3.90548 ] pdfxs + (at) show + (her) + [5.52946 4.43354 8.26927 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (nrun) + [9.90322 3.90548 5.52946 5.53942 ] pdfxs + 133.768 269.267 m + (t) show + (imeperf) + [2.76971 8.2991 8.30914 5.81839 4.42357 3.90548 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (a) show + (nce.C) + [5.53942 4.42357 4.43354 8.88699 7.19329 ] pdfxs + (o) show + (nsequen) + [5.53942 3.92539 4.43354 5.2505 5.53942 4.42357 5.26046 ] pdfxs + (t) show + (ly,lifetimeh) + [2.76971 4.42357 6.79476 2.76971 2.76971 3.03871 4.43354 3.86572 2.76971 8.2991 8.31911 + 5.52946 ] pdfxs + (o) show + (les) + [2.76971 4.43354 7.81096 ] pdfxs + (a) show + (ren) + [3.90548 8.30914 5.53942 ] pdfxs + (o) show + (texpl) + [7.76125 4.42357 5.26046 5.52946 2.76971 ] pdfxs + (o) show + (i) + [2.76971 ] pdfxs + (t) show + (ed) + [4.42357 9.42499 ] pdfxs + (a) show + (nd) + [5.52946 9.42499 ] pdfxs + (t) show + (hereis) + [5.52946 4.43354 3.89552 8.31911 2.75975 3.92539 ] pdfxs + 133.768 257.311 m + (no) + [5.53942 8.70766 ] pdfxs + (at) show + (tempt) + [3.86572 4.43354 8.2991 5.53942 7.60184 ] pdfxs + (t) show + (oc) + [8.70766 4.42357 ] pdfxs + (oa) show + (lescere) + [2.76971 4.42357 3.93536 4.42357 8.1597 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ermoves.Also) + [4.43354 7.62168 8.30907 4.70253 4.9815 4.42357 3.93536 8.41873 7.46229 2.76971 3.93536 + 8.70766 ] pdfxs + (t) show + (hereisli) + [5.52946 4.43354 3.89552 8.1597 2.76971 7.65155 2.76971 2.76971 ] pdfxs + (tt) show + (leinf) + [2.75975 8.1597 2.76971 5.52946 3.04867 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [9.26558 ] pdfxs + (o) show + (nhow) + [9.26558 5.52946 4.7125 7.19329 ] pdfxs + 133.768 245.356 m + (re) + [3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers) + [4.43354 3.89552 7.85081 ] pdfxs + (a) show + (re) + [3.90548 8.34899 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.2505 4.43354 ] pdfxs + (at) show + (edf) + [4.42357 9.45488 3.04867 ] pdfxs + (o) show + (rspillcode.Thepseud) + [7.82094 3.93536 5.52946 2.76971 2.76971 6.68517 4.43354 5.26046 5.52946 4.43354 8.99659 + 7.19329 5.53942 8.34899 5.52946 3.93536 4.42357 5.53942 5.52946 ] pdfxs + (o) show + (-codeprovidedsu) + [3.32757 4.42357 5.26046 5.52946 8.35896 5.52946 3.90548 4.70253 5.26046 2.75975 5.53942 + 4.42357 9.46484 3.92539 5.53942 ] pdfxs + (gg) show + (eststh) + [4.42357 3.93536 3.86572 7.86078 3.86572 5.53942 ] pdfxs + (at) show + 133.768 233.401 m + (en) + [4.42357 5.53942 ] pdfxs + (o) show + (u) + [5.53942 ] pdfxs + (g) show + (hre) + [8.75747 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ers) + [4.43354 3.89552 7.16337 ] pdfxs + (a) show + (rereservedf) + [3.89552 7.66155 3.89552 4.43354 3.92539 4.43354 3.89552 4.9815 4.43354 8.75747 3.04867 + ] pdfxs + (o) show + (rusewhenspillin) + [7.12353 5.53942 3.92539 7.66155 7.19329 5.53942 4.42357 8.75747 3.93536 5.52946 2.76971 + 2.76971 2.76971 2.76971 5.52946 ] pdfxs + (g) show + (,so) + [6.01765 3.92539 8.20951 ] pdfxs + (t) show + (hism) + [5.53942 2.75975 7.16337 8.2991 ] pdfxs + (a) show + (kesitarel) + [4.9815 4.42357 7.16337 2.76971 7.09373 8.20951 3.90548 4.42357 2.76971 ] pdfxs + (at) show + (ively) + [2.76971 4.9815 4.42357 2.76971 5.26046 ] pdfxs + 133.768 221.446 m + (b) + [5.53942 ] pdfxs + (a) show + (d) + [8.84714 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (rf) + [7.22316 3.03871 ] pdfxs + (o) show + (rre) + [7.22316 3.90548 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (erpo) + [4.42357 7.22316 5.80842 5.26046 ] pdfxs + (o) show + (r) + [7.22316 ] pdfxs + (a) show + (rchi) + [3.90548 4.14461 5.53942 2.76971 ] pdfxs + (t) show + (ec) + [4.42357 4.42357 ] pdfxs + (t) show + (ures.) + [5.53942 3.89552 4.43354 3.92539 2.76971 ] pdfxs + 148.712 209.491 m + (Sec) + [5.53942 4.42357 4.42357 ] pdfxs + (o) show + (nd-ch) + [5.53942 5.52946 3.32757 4.14461 5.53942 ] pdfxs + (a) show + (ncebin-p) + [5.53942 4.42357 6.86451 5.52946 2.76971 5.52946 3.32757 5.52946 ] pdfxs + (a) show + (ckingw) + [4.15457 5.26046 2.75975 5.53942 7.41247 6.91432 ] pdfxs + (a) show + (spr) + [6.36633 5.53942 3.89552 ] pdfxs + (o) show + (p) + [5.81839 ] pdfxs + (o) show + (sed) + [3.92539 4.42357 7.9704 ] pdfxs + (a) show + (s) + [6.36633 ] pdfxs + (a) show + (nimprovement) + [7.96043 2.76971 8.2991 5.53942 3.90548 4.70253 4.9815 4.42357 8.30907 4.42357 5.26046 + 6.30665 ] pdfxs + (t) show + (oline) + [7.41247 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [6.33645 3.92539 4.43354 ] pdfxs + (a) show + (nin) + [7.9704 2.75975 5.53942 ] pdfxs + 133.768 197.536 m + ([T) + [2.76971 7.19329 ] pdfxs + (H) show + (S9) + [5.53942 4.97154 ] pdfxs + (8) show + (].) + [2.76971 6.89439 ] pdfxs + (A) show + (sin) + [6.35636 2.76971 7.96043 ] pdfxs + (t) show + (hisimplemen) + [5.52946 2.76971 6.35636 2.75975 8.30907 5.52946 2.76971 4.43354 8.2991 4.42357 5.26046 + ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (nsec) + [7.95047 3.93536 4.42357 4.43354 ] pdfxs + (o) show + (nd-ch) + [5.52946 5.53942 3.3176 4.15457 5.52946 ] pdfxs + (a) show + (ncebinp) + [5.53942 4.42357 6.85454 5.52946 2.76971 7.96043 5.53942 ] pdfxs + (a) show + (cking) + [4.14461 5.26046 2.76971 5.52946 7.41247 ] pdfxs + (t) show + (akes) + [4.97154 4.9815 4.43354 6.35636 ] pdfxs + (a) show + (dv) + [5.52946 4.70253 ] pdfxs + (a) show + (n) + [5.26046 ] pdfxs + (tag) show + (es) + [4.42357 3.92539 ] pdfxs + 133.768 185.58 m + (o) show + (flife) + [5.48961 2.75975 2.76971 3.04867 4.42357 ] pdfxs + (t) show + (imeh) + [2.76971 8.2991 6.86451 5.53942 ] pdfxs + (o) show + (les,butitdoesn) + [2.76971 4.42357 3.93536 5.38002 5.52946 5.53942 6.31662 2.76971 6.30665 5.53942 5.26046 + 4.42357 6.37629 5.52946 ] pdfxs + (o) show + (t) + [6.31662 ] pdfxs + (att) show + (empt) + [4.42357 8.2991 5.53942 6.31662 ] pdfxs + (t) show + (ob) + [7.42243 5.52946 ] pdfxs + (a) show + (ck) + [4.15457 5.2505 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (a) show + (ck) + [4.15457 7.69143 ] pdfxs + (a) show + (ndre) + [5.53942 7.9704 3.90548 4.42357 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (e) + [6.86451 ] pdfxs + (a) show + (f) + [3.04867 ] pdfxs + (t) show + (eraspill.) + [4.42357 6.34641 7.42243 3.92539 5.53942 2.76971 2.75975 2.76971 2.76971 ] pdfxs + 133.768 173.625 m + (I) show + (ns) + [5.53942 3.92539 ] pdfxs + (t) show + (e) + [4.42357 ] pdfxs + (a) show + (d,) + [5.53942 5.69883 ] pdfxs + (t) show + (heliveinterv) + [5.52946 7.26303 2.76971 2.76971 4.9815 7.26303 2.76971 5.26046 3.86572 4.43354 3.90548 + 4.70253 ] pdfxs + (a) show + (lissplit) + [5.5992 2.76971 6.76485 3.92539 5.53942 2.76971 2.75975 6.71514 ] pdfxs + (a) show + (ndthe) + [5.52946 8.37888 3.86572 5.53942 7.26303 ] pdfxs + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ryis) + [3.89552 8.09992 2.75975 6.76485 ] pdfxs + (a) show + (llowed) + [2.76971 2.76971 4.70253 6.92428 4.42357 8.36892 ] pdfxs + (t) show + (oliveindi\013eren) + [7.82095 2.75975 2.76971 4.9815 7.26303 2.76971 8.36892 5.53942 2.75975 5.81832 4.42357 + 3.90548 4.42357 5.26046 ] pdfxs + (t) show + 133.768 161.671 m + (re) + [3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (ersini) + [4.43354 3.89552 8.29915 2.76971 9.89325 2.76971 ] pdfxs + (t) show + (slife) + [8.28919 2.76971 2.76971 3.04867 4.42357 ] pdfxs + (t) show + (ime.Bec) + [2.76971 8.2991 4.42357 10.3316 7.05373 4.43354 4.42357 ] pdfxs + (a) show + (use) + [5.53942 3.92539 8.79733 ] pdfxs + (o) show + (f) + [7.4025 ] pdfxs + (t) show + (his,) + [5.53942 2.76971 3.92539 7.39254 ] pdfxs + (t) show + (heirimplemen) + [5.52946 4.43354 2.76971 8.25931 2.76971 8.30907 5.52946 2.76971 4.42357 8.30907 4.42357 + 5.26046 ] pdfxs + (tat) show + (i) + [2.75975 ] pdfxs + (o) show + (nneeds) + [9.90322 5.52946 4.43354 4.42357 5.53942 8.28919 ] pdfxs + (t) show + (okeep) + [9.34529 4.9815 4.43354 4.42357 5.53942 ] pdfxs + 133.768 149.716 m + (ex) + [4.42357 5.26046 ] pdfxs + (t) show + (rabo) + [3.90548 9.45488 5.80842 5.26046 ] pdfxs + (o) show + (kkeepinginf) + [5.26046 4.9815 4.42357 4.43354 5.52946 2.76971 5.53942 9.45488 2.76971 5.52946 3.04867 + ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (at) show + (ion) + [2.76971 4.97154 10.0128 ] pdfxs + (o) show + (nwhereaspilled) + [10.0128 7.20325 5.52946 4.43354 3.89552 8.90692 9.45488 3.93536 5.52946 2.76971 2.76971 + 2.76971 4.42357 10.0128 ] pdfxs + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (rylivesduringits) + [3.89552 9.74381 2.75975 2.76971 4.9815 4.42357 8.40874 5.53942 5.52946 3.90548 2.76971 + 5.52946 9.46485 2.76971 3.86572 3.92539 ] pdfxs + 133.768 137.761 m + (lifetime.) + [2.76971 2.76971 3.03871 4.43354 3.86572 2.76971 8.2991 4.43354 8.34899 ] pdfxs + (I) show + (n) + [9.2357 ] pdfxs + (a) show + (ddi) + [5.53942 5.52946 2.76971 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [9.2357 ] pdfxs + (t) show + (o) + [8.68773 ] pdfxs + (t) show + (heex) + [5.52946 8.13977 4.42357 5.26046 ] pdfxs + (t) show + (rainf) + [3.89552 8.68773 2.76971 5.53942 3.03871 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n,c) + [5.52946 6.57558 4.42357 ] pdfxs + (o) show + (mpens) + [8.2991 5.81839 4.42357 5.53942 3.92539 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (ncodeneeds) + [9.2357 4.42357 5.26046 5.53942 8.12981 5.53942 4.42357 4.42357 5.53942 7.63163 ] pdfxs + (t) show + (obe) + [8.68773 5.80842 4.42357 ] pdfxs + 133.768 125.805 m + (a) show + (dded) + [5.53942 5.52946 4.43354 8.84714 ] pdfxs + (o) show + (nCFGed) + [8.8571 7.19329 6.22687 11.1387 4.43354 5.52946 ] pdfxs + (g) show + (esso) + [4.43354 7.25303 3.92539 8.29918 ] pdfxs + (t) show + (h) + [5.53942 ] pdfxs + (a) show + (t) + [7.19336 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (n) + [8.8571 ] pdfxs + (a) show + (ssump) + [3.92539 3.93536 5.52946 8.30907 5.52946 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ns) + [5.52946 7.25303 ] pdfxs + (a) show + (rem) + [3.90548 7.75121 8.2991 ] pdfxs + (a) show + (in) + [2.76971 5.2505 ] pdfxs + (ta) show + (ined.) + [2.76971 5.53942 4.42357 5.53942 2.76971 ] pdfxs + 303.133 89.3655 m + (8) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 9 9 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + 1 0 0 1 157.637 666.8 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -157.438 -654.844 cm + [/DeviceGray] cs 0 sc + 163.614 658.431 m + /N74 9.963 Tf + (Benchm) + [7.05373 4.43354 5.52946 4.15457 5.53942 8.2991 ] pdfxs + (a) show + (rk) + [3.89552 5.26046 ] pdfxs + 1 0 0 1 223.108 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -654.844 cm + 268.153 658.431 m + (St) + [5.53942 3.86572 ] pdfxs + (at) show + (ic) + [2.76971 4.42357 ] pdfxs + 1 0 0 1 338.26 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -654.844 cm + 388.079 658.431 m + (JI) show + (T) show + 1 0 0 1 453.412 654.844 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 65.67 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -642.491 cm + 233.021 646.077 m + (loc) + [2.76971 5.26046 4.42357 ] pdfxs + (a) show + (l) show + 1 0 0 1 262.737 642.491 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -642.491 cm + 279.403 646.077 m + (ls) + [2.76971 3.92539 ] pdfxs + 1 0 0 1 302.367 642.491 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -642.491 cm + 308.544 646.077 m + (Rat) show + (i) + [2.76971 ] pdfxs + (o) show + 1 0 0 1 338.26 642.491 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -642.491 cm + 348.173 646.077 m + (loc) + [2.76971 5.26046 4.42357 ] pdfxs + (a) show + (l) show + 1 0 0 1 377.889 642.491 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -642.491 cm + 394.555 646.077 m + (ls) + [2.76971 3.92539 ] pdfxs + 1 0 0 1 417.519 642.491 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -642.491 cm + 423.695 646.077 m + (Rat) show + (i) + [2.76971 ] pdfxs + (o) show + 1 0 0 1 453.412 642.491 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 0 -1.99199 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -628.144 cm + 163.614 631.731 m + (177) show + (.mes) + [2.76971 8.2991 4.42357 3.93536 ] pdfxs + (a) show + 1 0 0 1 223.108 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -628.144 cm + 234.266 631.731 m + (2) show + (.) + [2.76971 ] pdfxs + (776) show + 1 0 0 1 262.737 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -628.144 cm + 273.896 631.731 m + (2) show + (.) + [2.76971 ] pdfxs + (744) show + 1 0 0 1 302.367 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -628.144 cm + 314.77 631.731 m + (1) show + (.) + [2.76971 ] pdfxs + (01) show + 1 0 0 1 338.26 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -628.144 cm + 349.418 631.731 m + (6) show + (.) + [2.76971 ] pdfxs + (121) show + 1 0 0 1 377.889 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -628.144 cm + 389.047 631.731 m + (6) show + (.) + [2.76971 ] pdfxs + (023) show + 1 0 0 1 417.519 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -628.144 cm + 429.922 631.731 m + (1) show + (.) + [2.76971 ] pdfxs + (01) show + 1 0 0 1 453.412 628.144 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -615.791 cm + 163.614 619.377 m + (179) show + (.) + [2.76971 ] pdfxs + (a) show + (r) + [3.89552 ] pdfxs + (t) show + 1 0 0 1 223.108 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -615.791 cm + 234.266 619.377 m + (5) show + (.) + [2.76971 ] pdfxs + (663) show + 1 0 0 1 262.737 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -615.791 cm + 273.896 619.377 m + (4) show + (.) + [2.76971 ] pdfxs + (863) show + 1 0 0 1 302.367 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -615.791 cm + 314.77 619.377 m + (1) show + (.) + [2.76971 ] pdfxs + (16) show + 1 0 0 1 338.26 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -615.791 cm + 349.418 619.377 m + (5) show + (.) + [2.76971 ] pdfxs + (926) show + 1 0 0 1 377.889 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -615.791 cm + 389.047 619.377 m + (5) show + (.) + [2.76971 ] pdfxs + (441) show + 1 0 0 1 417.519 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -615.791 cm + 429.922 619.377 m + (1) show + (.) + [2.76971 ] pdfxs + (09) show + 1 0 0 1 453.412 615.791 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -603.437 cm + 163.614 607.024 m + (183) show + (.equ) + [2.76971 4.42357 5.26046 5.52946 ] pdfxs + (a) show + (ke) + [4.9815 4.42357 ] pdfxs + 1 0 0 1 223.108 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -603.437 cm + 229.285 607.024 m + (24) show + (.) + [2.76971 ] pdfxs + (160) show + 1 0 0 1 262.737 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -603.437 cm + 268.914 607.024 m + (22) show + (.) + [2.76971 ] pdfxs + (215) show + 1 0 0 1 302.367 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -603.437 cm + 314.77 607.024 m + (1) show + (.) + [2.76971 ] pdfxs + (09) show + 1 0 0 1 338.26 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -603.437 cm + 344.437 607.024 m + (24) show + (.) + [2.76971 ] pdfxs + (498) show + 1 0 0 1 377.889 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -603.437 cm + 384.066 607.024 m + (26) show + (.) + [2.76971 ] pdfxs + (159) show + 1 0 0 1 417.519 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -603.437 cm + 429.922 607.024 m + (0) show + (.) + [2.76971 ] pdfxs + (94) show + 1 0 0 1 453.412 603.437 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -591.083 cm + 163.614 594.67 m + (188) show + (.) + [2.76971 ] pdfxs + (a) show + (mmp) + [8.2991 8.2991 5.53942 ] pdfxs + 1 0 0 1 223.108 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -591.083 cm + 229.285 594.67 m + (87) show + (.) + [2.76971 ] pdfxs + (710) show + 1 0 0 1 262.737 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -591.083 cm + 268.914 594.67 m + (93) show + (.) + [2.76971 ] pdfxs + (219) show + 1 0 0 1 302.367 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -591.083 cm + 314.77 594.67 m + (0) show + (.) + [2.76971 ] pdfxs + (88) show + 1 0 0 1 338.26 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -591.083 cm + 344.437 594.67 m + (91) show + (.) + [2.76971 ] pdfxs + (520) show + 1 0 0 1 377.889 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -591.083 cm + 384.066 594.67 m + (96) show + (.) + [2.76971 ] pdfxs + (941) show + 1 0 0 1 417.519 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -591.083 cm + 429.922 594.67 m + (0) show + (.) + [2.76971 ] pdfxs + (94) show + 1 0 0 1 453.412 591.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -578.73 cm + 163.614 582.316 m + (164) show + (.) + [2.76971 ] pdfxs + (g) show + (zip) + [4.42357 2.76971 5.53942 ] pdfxs + 1 0 0 1 223.108 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -578.73 cm + 229.285 582.316 m + (49) show + (.) + [2.76971 ] pdfxs + (297) show + 1 0 0 1 262.737 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -578.73 cm + 268.914 582.316 m + (40) show + (.) + [2.76971 ] pdfxs + (049) show + 1 0 0 1 302.367 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -578.73 cm + 314.77 582.316 m + (1) show + (.) + [2.76971 ] pdfxs + (23) show + 1 0 0 1 338.26 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -578.73 cm + 344.437 582.316 m + (52) show + (.) + [2.76971 ] pdfxs + (012) show + 1 0 0 1 377.889 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -578.73 cm + 384.066 582.316 m + (40) show + (.) + [2.76971 ] pdfxs + (011) show + 1 0 0 1 417.519 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -578.73 cm + 429.922 582.316 m + (1) show + (.) + [2.76971 ] pdfxs + (29) show + 1 0 0 1 453.412 578.73 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -566.376 cm + 163.614 569.963 m + (175) show + (.vpr) + [2.76971 5.26046 5.52946 3.90548 ] pdfxs + 1 0 0 1 223.108 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -566.376 cm + 229.285 569.963 m + (19) show + (.) + [2.76971 ] pdfxs + (664) show + 1 0 0 1 262.737 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -566.376 cm + 268.914 569.963 m + (15) show + (.) + [2.76971 ] pdfxs + (074) show + 1 0 0 1 302.367 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -566.376 cm + 314.77 569.963 m + (1) show + (.) + [2.76971 ] pdfxs + (30) show + 1 0 0 1 338.26 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -566.376 cm + 344.437 569.963 m + (21) show + (.) + [2.76971 ] pdfxs + (394) show + 1 0 0 1 377.889 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -566.376 cm + 384.066 569.963 m + (19) show + (.) + [2.76971 ] pdfxs + (713) show + 1 0 0 1 417.519 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -566.376 cm + 429.922 569.963 m + (1) show + (.) + [2.76971 ] pdfxs + (09) show + 1 0 0 1 453.412 566.376 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -554.022 cm + 163.614 557.609 m + (176) show + (.) + [2.76971 ] pdfxs + (g) show + (cc) + [4.42357 4.42357 ] pdfxs + 1 0 0 1 223.108 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -554.022 cm + 234.266 557.609 m + (4) show + (.) + [2.76971 ] pdfxs + (747) show + 1 0 0 1 262.737 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -554.022 cm + 273.896 557.609 m + (3) show + (.) + [2.76971 ] pdfxs + (421) show + 1 0 0 1 302.367 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -554.022 cm + 314.77 557.609 m + (1) show + (.) + [2.76971 ] pdfxs + (39) show + 1 0 0 1 338.26 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -554.022 cm + 344.437 557.609 m + (40) show + (.) + [2.76971 ] pdfxs + (157) show + 1 0 0 1 377.889 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -554.022 cm + 384.066 557.609 m + (52) show + (.) + [2.76971 ] pdfxs + (579) show + 1 0 0 1 417.519 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -554.022 cm + 429.922 557.609 m + (0) show + (.) + [2.76971 ] pdfxs + (76) show + 1 0 0 1 453.412 554.022 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -541.669 cm + 163.614 545.255 m + (181) show + (.mcf) + [2.76971 8.2991 4.42357 3.04867 ] pdfxs + 1 0 0 1 223.108 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -541.669 cm + 229.285 545.255 m + (32) show + (.) + [2.76971 ] pdfxs + (720) show + 1 0 0 1 262.737 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -541.669 cm + 268.914 545.255 m + (27) show + (.) + [2.76971 ] pdfxs + (628) show + 1 0 0 1 302.367 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -541.669 cm + 314.77 545.255 m + (1) show + (.) + [2.76971 ] pdfxs + (18) show + 1 0 0 1 338.26 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -541.669 cm + 344.437 545.255 m + (32) show + (.) + [2.76971 ] pdfxs + (397) show + 1 0 0 1 377.889 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -541.669 cm + 384.066 545.255 m + (28) show + (.) + [2.76971 ] pdfxs + (425) show + 1 0 0 1 417.519 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -541.669 cm + 429.922 545.255 m + (1) show + (.) + [2.76971 ] pdfxs + (14) show + 1 0 0 1 453.412 541.669 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -529.315 cm + 163.614 532.902 m + (186) show + (.cr) + [2.76971 4.42357 3.90548 ] pdfxs + (a) show + (fty) + [3.03871 3.59672 5.26046 ] pdfxs + 1 0 0 1 223.108 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -529.315 cm + 229.285 532.902 m + (31) show + (.) + [2.76971 ] pdfxs + (132) show + 1 0 0 1 262.737 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -529.315 cm + 268.914 532.902 m + (25) show + (.) + [2.76971 ] pdfxs + (211) show + 1 0 0 1 302.367 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -529.315 cm + 314.77 532.902 m + (1) show + (.) + [2.76971 ] pdfxs + (23) show + 1 0 0 1 338.26 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -529.315 cm + 362.148 532.902 m + (**) show + 1 0 0 1 377.889 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -529.315 cm + 401.777 532.902 m + (**) show + 1 0 0 1 417.519 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -529.315 cm + 437.671 532.902 m + (**) show + 1 0 0 1 453.412 529.315 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -516.961 cm + 163.614 520.548 m + (197) show + (.p) + [2.76971 5.52946 ] pdfxs + (a) show + (rser) + [3.90548 3.92539 4.43354 3.90548 ] pdfxs + 1 0 0 1 223.108 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -516.961 cm + 234.266 520.548 m + (8) show + (.) + [2.76971 ] pdfxs + (456) show + 1 0 0 1 262.737 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -516.961 cm + 273.896 520.548 m + (6) show + (.) + [2.76971 ] pdfxs + (261) show + 1 0 0 1 302.367 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -516.961 cm + 314.77 520.548 m + (1) show + (.) + [2.76971 ] pdfxs + (35) show + 1 0 0 1 338.26 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -516.961 cm + 344.437 520.548 m + (10) show + (.) + [2.76971 ] pdfxs + (591) show + 1 0 0 1 377.889 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -516.961 cm + 389.047 520.548 m + (9) show + (.) + [2.76971 ] pdfxs + (383) show + 1 0 0 1 417.519 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -516.961 cm + 429.922 520.548 m + (1) show + (.) + [2.76971 ] pdfxs + (12) show + 1 0 0 1 453.412 516.961 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -504.608 cm + 163.614 508.194 m + (252) show + (.e) + [2.76971 4.42357 ] pdfxs + (o) show + (n) show + 1 0 0 1 223.108 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -504.608 cm + 234.266 508.194 m + (2) show + (.) + [2.76971 ] pdfxs + (047) show + 1 0 0 1 262.737 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -504.608 cm + 273.896 508.194 m + (1) show + (.) + [2.76971 ] pdfxs + (733) show + 1 0 0 1 302.367 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -504.608 cm + 314.77 508.194 m + (1) show + (.) + [2.76971 ] pdfxs + (18) show + 1 0 0 1 338.26 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -504.608 cm + 349.418 508.194 m + (8) show + (.) + [2.76971 ] pdfxs + (885) show + 1 0 0 1 377.889 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -504.608 cm + 384.066 508.194 m + (18) show + (.) + [2.76971 ] pdfxs + (992) show + 1 0 0 1 417.519 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -504.608 cm + 429.922 508.194 m + (0) show + (.) + [2.76971 ] pdfxs + (47) show + 1 0 0 1 453.412 504.608 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -492.254 cm + 163.614 495.841 m + (253) show + (.perlbmk) + [2.76971 5.80842 4.43354 3.89552 2.76971 5.52946 8.30907 5.26046 ] pdfxs + 1 0 0 1 223.108 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -492.254 cm + 251.978 495.841 m + (*) show + 1 0 0 1 262.737 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -492.254 cm + 291.607 495.841 m + (*) show + 1 0 0 1 302.367 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -492.254 cm + 327.5 495.841 m + (*) show + 1 0 0 1 338.26 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -492.254 cm + 367.13 495.841 m + (*) show + 1 0 0 1 377.889 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -492.254 cm + 406.759 495.841 m + (*) show + 1 0 0 1 417.519 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -492.254 cm + 442.652 495.841 m + (*) show + 1 0 0 1 453.412 492.254 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -479.9 cm + 163.614 483.487 m + (254) show + (.) + [2.76971 ] pdfxs + (ga) show + (p) show + 1 0 0 1 223.108 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -479.9 cm + 234.266 483.487 m + (6) show + (.) + [2.76971 ] pdfxs + (745) show + 1 0 0 1 262.737 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -479.9 cm + 273.896 483.487 m + (4) show + (.) + [2.76971 ] pdfxs + (727) show + 1 0 0 1 302.367 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -479.9 cm + 314.77 483.487 m + (1) show + (.) + [2.76971 ] pdfxs + (41) show + 1 0 0 1 338.26 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -479.9 cm + 344.437 483.487 m + (12) show + (.) + [2.76971 ] pdfxs + (526) show + 1 0 0 1 377.889 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -479.9 cm + 384.066 483.487 m + (13) show + (.) + [2.76971 ] pdfxs + (725) show + 1 0 0 1 417.519 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -479.9 cm + 429.922 483.487 m + (0) show + (.) + [2.76971 ] pdfxs + (91) show + 1 0 0 1 453.412 479.9 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -467.547 cm + 163.614 471.133 m + (255) show + (.v) + [2.76971 4.9815 ] pdfxs + (o) show + (r) + [3.89552 ] pdfxs + (t) show + (ex) + [4.43354 5.26046 ] pdfxs + 1 0 0 1 223.108 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -467.547 cm + 234.266 471.133 m + (9) show + (.) + [2.76971 ] pdfxs + (394) show + 1 0 0 1 262.737 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -467.547 cm + 268.914 471.133 m + (10) show + (.) + [2.76971 ] pdfxs + (025) show + 1 0 0 1 302.367 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -467.547 cm + 314.77 471.133 m + (0) show + (.) + [2.76971 ] pdfxs + (94) show + 1 0 0 1 338.26 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -467.547 cm + 344.437 471.133 m + (17) show + (.) + [2.76971 ] pdfxs + (845) show + 1 0 0 1 377.889 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -467.547 cm + 384.066 471.133 m + (25) show + (.) + [2.76971 ] pdfxs + (053) show + 1 0 0 1 417.519 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -467.547 cm + 429.922 471.133 m + (0) show + (.) + [2.76971 ] pdfxs + (71) show + 1 0 0 1 453.412 467.547 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -455.193 cm + 163.614 458.78 m + (256) show + (.bzip) + [2.76971 5.52946 4.43354 2.76971 5.52946 ] pdfxs + (2) show + 1 0 0 1 223.108 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -455.193 cm + 229.285 458.78 m + (52) show + (.) + [2.76971 ] pdfxs + (161) show + 1 0 0 1 262.737 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -455.193 cm + 268.914 458.78 m + (32) show + (.) + [2.76971 ] pdfxs + (933) show + 1 0 0 1 302.367 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -455.193 cm + 314.77 458.78 m + (1) show + (.) + [2.76971 ] pdfxs + (58) show + 1 0 0 1 338.26 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -455.193 cm + 344.437 458.78 m + (52) show + (.) + [2.76971 ] pdfxs + (872) show + 1 0 0 1 377.889 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -455.193 cm + 384.066 458.78 m + (33) show + (.) + [2.76971 ] pdfxs + (647) show + 1 0 0 1 417.519 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -455.193 cm + 429.922 458.78 m + (1) show + (.) + [2.76971 ] pdfxs + (57) show + 1 0 0 1 453.412 455.193 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -0.19899 -11.956 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -157.438 -442.839 cm + 163.614 446.426 m + (300) show + (.tw) + [2.76971 3.59672 6.91432 ] pdfxs + (o) show + (lf) + [2.76971 3.04867 ] pdfxs + 1 0 0 1 223.108 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -223.108 -442.839 cm + 229.285 446.426 m + (14) show + (.) + [2.76971 ] pdfxs + (177) show + 1 0 0 1 262.737 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -262.737 -442.839 cm + 268.914 446.426 m + (11) show + (.) + [2.76971 ] pdfxs + (202) show + 1 0 0 1 302.367 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -302.367 -442.839 cm + 314.77 446.426 m + (1) show + (.) + [2.76971 ] pdfxs + (27) show + 1 0 0 1 338.26 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -338.26 -442.839 cm + 362.148 446.426 m + (**) show + 1 0 0 1 377.889 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -377.889 -442.839 cm + 401.777 446.426 m + (**) show + 1 0 0 1 417.519 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -417.519 -442.839 cm + 437.671 446.426 m + (**) show + 1 0 0 1 453.412 442.839 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -295.775 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 295.974 0.19899 l + S + Q + 1 0 0 1 -157.637 -442.441 cm + 133.768 414.601 m + (T) + [6.36636 ] pdfxs + (a) show + (ble) + [5.52946 2.76971 7.42244 ] pdfxs + (2) show + (:) + [7.03387 ] pdfxs + (R) show + (unning) + [5.52946 5.53942 5.53942 2.75975 5.53942 7.9704 ] pdfxs + (t) show + (imef) + [2.76971 8.2991 7.42244 3.04867 ] pdfxs + (o) show + (rs) + [6.89438 3.92539 ] pdfxs + (tat) show + (ic) + [2.76971 7.42244 ] pdfxs + (a) show + (nd) + [5.52946 8.52832 ] pdfxs + (JI) show + (Tc) + [10.1921 4.42357 ] pdfxs + (o) show + (mpil) + [8.30907 5.52946 2.76971 2.76971 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nsc) + [5.53942 6.92426 4.42357 ] pdfxs + (o) show + (mp) + [8.2991 5.53942 ] pdfxs + (a) show + (ring) + [3.90548 2.75975 5.53942 7.9704 ] pdfxs + (t) show + (heloc) + [5.53942 7.42244 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (l) + [5.75861 ] pdfxs + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 133.768 402.646 m + (ls+j) + [2.76971 3.92539 7.75121 3.04867 ] pdfxs + (o) show + (in+mem) + [2.75975 5.53942 7.75121 8.2991 4.42357 8.30907 ] pdfxs + (o) show + (pre) + [9.10618 3.90548 4.42357 ] pdfxs + (g) show + (ister) + [2.76971 3.93536 3.86572 4.43354 7.48219 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (rs) + [3.90548 7.50211 ] pdfxs + (\() show + (*running) + [8.55821 3.90548 5.53942 5.52946 5.53942 2.76971 5.52946 8.55821 ] pdfxs + (t) show + (imes) + [2.76971 8.2991 4.43354 7.50211 ] pdfxs + (a) show + (re) + [3.90548 8.00029 ] pdfxs + (t) show + (oosh) + [5.26046 8.55821 3.93536 5.52946 ] pdfxs + (o) show + (rt) + [3.90548 7.4524 ] pdfxs + (t) show + (oc) + [8.55821 4.42357 ] pdfxs + (o) show + (mp) + [8.2991 5.53942 ] pdfxs + (a) show + (re,) + [3.90548 4.42357 2.76971 ] pdfxs + 133.768 390.691 m + (*) show + (*benchm) + [8.29918 5.81839 4.42357 5.53942 4.14461 5.53942 8.2991 ] pdfxs + (a) show + (rkrunf) + [3.90548 8.57814 3.89552 5.53942 8.8571 3.03871 ] pdfxs + (a) show + (ils) + [2.76971 2.76971 3.92539 ] pdfxs + (\)) show + (.) show + 148.712 358.312 m + (I) show + (nal) + [9.21577 8.66781 2.76971 ] pdfxs + (a) show + (terstudy,av) + [3.86572 4.43354 7.58182 3.93536 3.86572 5.53942 5.53942 4.42357 6.53573 8.66781 4.70253 + ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (nt) + [5.2505 7.56199 ] pdfxs + (o) show + (fline) + [6.72502 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.59179 3.92539 4.42357 ] pdfxs + (a) show + (nth) + [9.22573 3.86572 5.53942 ] pdfxs + (a) show + (t) + [7.55203 ] pdfxs + (att) show + (emp) + [4.43354 8.2991 5.52946 ] pdfxs + (t) show + (ed) + [4.43354 9.21577 ] pdfxs + (t) show + (o) + [8.65784 ] pdfxs + (ta) show + (ke) + [4.9815 8.10988 ] pdfxs + (a) show + (dv) + [5.53942 4.70253 ] pdfxs + (a) show + (n) + [5.26046 ] pdfxs + (ta) show + (ge) + [4.97154 4.42357 ] pdfxs + 133.768 346.357 m + (o) show + (fSSA) + [6.81469 5.53942 5.52946 11.2482 ] pdfxs + (a) show + (ndw) + [5.52946 9.30544 6.92428 ] pdfxs + (o) show + (rkwellwithre) + [3.89552 9.03644 6.91432 4.43354 2.75975 6.54569 7.19329 2.76971 3.86572 9.3154 3.89552 + 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (erc) + [4.42357 7.67149 4.43354 ] pdfxs + (o) show + (ns) + [5.52946 3.93536 ] pdfxs + (t) show + (r) + [3.89552 ] pdfxs + (a) show + (in) + [2.76971 5.26046 ] pdfxs + (t) show + (sw) + [7.70137 6.91432 ] pdfxs + (a) show + (spr) + [7.70137 5.53942 3.89552 ] pdfxs + (o) show + (p) + [5.81839 ] pdfxs + (o) show + (sedin[MP) + [3.92539 4.42357 9.30544 2.76971 9.30544 2.76971 9.13614 6.77484 ] pdfxs + (02) show + (].This) + [2.76971 8.54825 7.19329 5.53942 2.75975 3.92539 ] pdfxs + 133.768 334.402 m + (v) + [4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (n) + [5.2505 ] pdfxs + (t) show + (,likesec) + [8.13977 2.76971 2.76971 4.9815 9.39511 3.92539 4.43354 4.42357 ] pdfxs + (o) show + (nd-ch) + [5.52946 5.53942 3.3176 4.15457 5.53942 ] pdfxs + (a) show + (ncebinp) + [5.52946 4.42357 9.39511 5.53942 2.75975 10.501 5.53942 ] pdfxs + (a) show + (ckin) + [4.14461 5.26046 2.76971 5.52946 ] pdfxs + (g) show + (,) + [8.14973 ] pdfxs + (t) show + (akes) + [4.97154 4.9815 4.43354 8.89693 ] pdfxs + (a) show + (dv) + [5.52946 4.70253 ] pdfxs + (a) show + (n) + [5.26046 ] pdfxs + (tag) show + (e) + [9.39511 ] pdfxs + (o) show + (flife) + [8.00028 2.76971 2.76971 3.03871 4.43354 ] pdfxs + (t) show + (imein) + [2.75975 8.30907 9.38515 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (l) show + 133.768 322.446 m + (h) + [5.53942 ] pdfxs + (o) show + (les.Fur) + [2.75975 4.43354 3.92539 11.2781 5.66894 5.53942 3.89552 ] pdfxs + (t) show + (herm) + [5.53942 4.42357 3.90548 8.2991 ] pdfxs + (o) show + (reitj) + [3.90548 9.10618 2.76971 8.55829 3.03871 ] pdfxs + (o) show + (inslivein) + [2.76971 5.52946 8.61796 2.75975 2.76971 4.9815 9.10618 2.76971 5.26046 ] pdfxs + (t) show + (erv) + [4.42357 3.90548 4.70253 ] pdfxs + (a) show + (lsinasimil) + [2.76971 8.608 2.76971 10.2121 9.66411 3.92539 2.76971 8.2991 2.76971 2.76971 ] pdfxs + (a) show + (rway) + [8.57812 6.92428 4.70253 9.94307 ] pdfxs + (a) show + (sIpresen) + [8.608 8.27918 5.52946 3.90548 4.42357 3.93536 4.42357 5.26046 ] pdfxs + (t) show + (edin) + [4.42357 10.222 2.75975 5.53942 ] pdfxs + 133.768 310.491 m + (Sec) + [5.53942 4.42357 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [8.8571 ] pdfxs + (3) show + (.) + [2.76971 ] pdfxs + (2) show + (.) show + 133.768 277.545 m + /N71 14.346 Tf + (6Co) + [24.2161 11.649 8.07685 ] pdfxs + (nc) show + (l) + [4.476 ] pdfxs + (u) show + (sion) + [6.36962 4.476 8.07685 14.346 ] pdfxs + (an) show + (df) + [14.346 4.93494 ] pdfxs + (u) show + (rt) + [6.58481 6.2836 ] pdfxs + (h) show + (erwork) + [7.3595 11.9646 11.2186 8.0625 6.59915 8.52144 ] pdfxs + 133.768 255.725 m + /N74 9.963 Tf + (I) show + (n) + [8.90692 ] pdfxs + (t) show + (hisp) + [5.52946 2.76971 7.29289 5.53942 ] pdfxs + (a) show + (per,Ipresen) + [5.80842 4.43354 3.89552 6.14717 6.97402 5.52946 3.90548 4.42357 3.93536 4.42357 5.26046 + ] pdfxs + (t) show + (edsever) + [4.42357 8.90692 3.92539 4.43354 4.9815 4.42357 3.90548 ] pdfxs + (a) show + (lre\fnements) + [6.12724 3.90548 4.43354 5.52946 5.53942 4.42357 8.2991 4.43354 5.26046 3.86572 7.30285 + ] pdfxs + (t) show + (o) + [8.34899 ] pdfxs + (t) show + (heline) + [5.52946 7.80103 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.27297 3.92539 4.43354 ] pdfxs + (a) show + (nre) + [8.90692 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 7.27297 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (-) show + 133.768 243.769 m + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [7.81099 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.90548 2.75975 ] pdfxs + (t) show + (hm.Thesere\fnementssuccessfullyimprove) + [5.53942 8.2991 6.84458 7.20325 5.52946 4.43354 3.92539 6.71506 3.89552 4.43354 5.52946 + 5.53942 4.42357 8.2991 4.43354 5.26046 3.86572 6.21688 3.92539 5.53942 4.42357 4.43354 + 4.42357 3.93536 3.92539 3.04867 5.52946 2.76971 2.76971 7.53202 2.76971 8.2991 5.53942 + 3.90548 4.70253 4.9815 6.7051 ] pdfxs + (t) show + (hequ) + [5.53942 6.7051 5.26046 5.52946 ] pdfxs + (a) show + (lity) + [2.76971 2.76971 3.59672 7.54199 ] pdfxs + (o) show + (fcode,while) + [5.32024 4.43354 5.26046 5.52946 4.43354 5.2505 7.19329 5.53942 2.76971 2.75975 4.42357 + ] pdfxs + 133.768 231.814 m + (reducingc) + [3.90548 4.42357 5.53942 5.52946 4.43354 2.75975 5.53942 8.88699 4.42357 ] pdfxs + (o) show + (mpil) + [8.30907 5.52946 2.76971 2.76971 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (n) + [9.44492 ] pdfxs + (t) show + (ime.) + [2.76971 8.2991 4.42357 8.95673 ] pdfxs + (I) show + (mprovingcodequ) + [8.2991 5.53942 3.90548 4.70253 5.26046 2.75975 5.53942 8.88699 4.42357 5.26046 5.53942 + 8.32907 5.26046 5.53942 ] pdfxs + (a) show + (lityis) + [2.75975 2.76971 3.59672 9.16596 2.76971 7.83089 ] pdfxs + (a) show + (lways) + [2.76971 6.92428 4.70253 5.26046 7.83089 ] pdfxs + (a) show + (n) + [9.44492 ] pdfxs + (a) show + (dv) + [5.52946 4.70253 ] pdfxs + (a) show + (n) + [5.26046 ] pdfxs + (tag) show + (ein) + [8.33903 2.75975 5.53942 ] pdfxs + 133.768 219.859 m + (a) show + (nyc) + [5.26046 8.67777 4.42357 ] pdfxs + (o) show + (mpilerfr) + [8.2991 5.53942 2.76971 2.76971 4.42357 7.32279 3.03871 3.90548 ] pdfxs + (a) show + (mew) + [8.2991 4.43354 6.91432 ] pdfxs + (o) show + (rk.) + [3.90548 5.26046 7.48221 ] pdfxs + (R) show + (educingc) + [4.43354 5.52946 5.53942 4.42357 2.76971 5.53942 8.39881 4.42357 ] pdfxs + (o) show + (mpil) + [8.30907 5.52946 2.76971 2.76971 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (nc) + [8.95673 4.42357 ] pdfxs + (o) show + (mplexity) + [8.30907 5.52946 2.76971 4.42357 5.26046 2.76971 3.59672 8.67777 ] pdfxs + (a) show + (ndc) + [5.53942 8.94677 4.43354 ] pdfxs + (o) show + (mpu) + [8.2991 5.53942 5.52946 ] pdfxs + (tat) show + (i) + [2.76971 ] pdfxs + (o) show + (n) + [5.52946 ] pdfxs + (a) show + (l) show + 133.768 207.904 m + (res) + [3.90548 4.42357 3.93536 ] pdfxs + (o) show + (urcesm) + [5.52946 3.90548 4.42357 4.43354 7.56189 8.2991 ] pdfxs + (a) show + (kes) + [4.9815 4.43354 7.56189 ] pdfxs + (t) show + (hisv) + [5.53942 2.75975 7.57185 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (nt) + [5.2505 7.51218 ] pdfxs + (o) show + (fline) + [6.68517 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.54197 3.92539 4.43354 ] pdfxs + (a) show + (nabe) + [9.16595 8.62796 5.80842 4.42357 ] pdfxs + (tt) show + (erc) + [4.42357 7.54197 4.43354 ] pdfxs + (a) show + (ndid) + [5.52946 5.53942 2.75975 5.53942 ] pdfxs + (at) show + (ef) + [8.06007 3.04867 ] pdfxs + (o) show + (ruseinajus) + [7.54197 5.52946 3.93536 8.06007 2.76971 9.16595 8.61799 3.04867 5.53942 3.92539 ] pdfxs + (t) show + 133.768 195.949 m + (in) + [2.76971 8.8571 ] pdfxs + (t) show + (imec) + [2.75975 8.30907 7.74125 4.43354 ] pdfxs + (o) show + (mpilerwhenc) + [8.2991 5.53942 2.75975 2.76971 4.43354 7.22316 7.19329 5.52946 4.43354 8.8571 4.42357 + ] pdfxs + (o) show + (mpil) + [8.2991 5.53942 2.76971 2.75975 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nspeedis) + [8.8571 3.92539 5.81839 4.42357 4.42357 8.8571 2.76971 7.25303 ] pdfxs + (o) show + (fcritic) + [6.36635 4.42357 3.90548 2.76971 3.86572 2.76971 4.43354 ] pdfxs + (a) show + (limp) + [6.08739 2.75975 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (ta) show + (nce.) + [5.52946 4.43354 4.42357 2.76971 ] pdfxs + 148.712 183.993 m + (There) + [7.19329 5.53942 4.42357 3.90548 8.26929 ] pdfxs + (a) show + (resever) + [3.90548 8.26929 3.92539 4.43354 4.9815 4.42357 3.90548 ] pdfxs + (a) show + (ldirec) + [6.60547 5.53942 2.76971 3.89552 4.43354 4.42357 ] pdfxs + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (ns) + [5.52946 7.77111 ] pdfxs + (t) show + (oimproving) + [8.82722 2.76971 8.2991 5.53942 3.89552 4.7125 5.2505 2.76971 5.53942 8.81725 ] pdfxs + (t) show + (he) + [5.53942 8.26929 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (go) show + (ri) + [3.89552 2.76971 ] pdfxs + (t) show + (hmevenm) + [5.52946 12.1548 4.42357 4.9815 4.42357 9.38514 8.2991 ] pdfxs + (o) show + (re.Given) + [3.90548 4.42357 8.75747 7.82099 2.76971 4.9815 4.42357 5.53942 ] pdfxs + 133.768 172.038 m + (t) show + (herel) + [5.52946 8.27925 3.90548 4.42357 2.76971 ] pdfxs + (at) show + (ivelyinexpensiveway) + [2.76971 4.9815 4.42357 2.76971 9.10618 2.76971 5.52946 4.43354 5.26046 5.80842 4.42357 + 5.53942 3.92539 2.76971 4.9815 8.27925 6.91432 4.7125 9.10618 ] pdfxs + (o) show + (fupd) + [6.89439 5.52946 5.80842 5.53942 ] pdfxs + (at) show + (inglivein) + [2.76971 5.52946 8.83718 2.75975 2.76971 4.9815 8.27925 2.76971 5.2505 ] pdfxs + (t) show + (erv) + [4.43354 3.89552 4.7125 ] pdfxs + (a) show + (linf) + [6.61543 2.76971 5.52946 3.04867 ] pdfxs + (o) show + (rm) + [3.89552 8.30907 ] pdfxs + (a) show + (ti) + [3.86572 2.76971 ] pdfxs + (o) show + (n,itwillbe) + [5.53942 6.74495 2.76971 7.7214 7.19329 2.76971 2.76971 6.61543 5.80842 4.42357 ] pdfxs + 133.768 160.083 m + (interes) + [2.76971 5.26046 3.86572 4.43354 3.90548 4.42357 3.92539 ] pdfxs + (t) show + (ing) + [2.76971 5.53942 7.67151 ] pdfxs + (t) show + (oseehowapr) + [7.67151 3.92539 4.43354 7.11358 5.53942 4.70253 9.89326 7.67151 5.52946 3.90548 ] pdfxs + (o) show + (\fledriven,re) + [5.52946 2.76971 7.12355 5.52946 3.90548 2.76971 4.9815 4.42357 5.53942 5.57928 3.90548 + 4.43354 ] pdfxs + (g) show + (i) + [2.75975 ] pdfxs + (o) show + (nb) + [8.22943 5.53942 ] pdfxs + (a) show + (sedline) + [3.92539 4.42357 8.22943 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [6.59549 3.92539 4.42357 ] pdfxs + (a) show + (nre) + [8.22943 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 6.59549 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (r) show + 133.768 148.128 m + (c) + [4.42357 ] pdfxs + (a) show + (nbene\fta) + [10.0726 5.81839 4.42357 5.53942 4.42357 5.53942 8.40885 9.51466 ] pdfxs + (JI) show + (Tc) + [11.7264 4.43354 ] pdfxs + (o) show + (mpiler.) + [8.2991 5.53942 2.75975 2.76971 4.43354 3.89552 10.8497 ] pdfxs + (A) show + (n) + [5.52946 ] pdfxs + (ot) show + (herimprovementwillbe) + [5.52946 4.43354 8.43864 2.76971 8.2991 5.53942 3.89552 4.70253 4.9815 4.43354 8.2991 + 4.43354 5.2505 8.40885 7.20325 2.75975 2.76971 7.30288 5.81839 8.95674 ] pdfxs + (t) show + (oin) + [9.52462 2.75975 5.26046 ] pdfxs + (t) show + (roducenew) + [3.90548 5.2505 5.53942 5.52946 4.43354 8.9667 5.52946 4.43354 7.19329 ] pdfxs + 133.768 136.173 m + (t) show + (emp) + [4.42357 8.30907 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (riesf) + [3.89552 2.76971 4.42357 7.51207 3.04867 ] pdfxs + (o) show + (re) + [7.48219 4.43354 ] pdfxs + (a) show + (chdef) + [4.14461 9.11614 5.53942 4.42357 6.63535 ] pdfxs + (o) show + (ruse) + [7.48219 5.52946 3.93536 8.01025 ] pdfxs + (o) show + (faspilled) + [6.62539 8.56818 3.92539 5.53942 2.75975 2.76971 2.76971 4.42357 9.11614 ] pdfxs + (t) show + (emp) + [4.43354 8.2991 5.80842 ] pdfxs + (o) show + (r) + [3.90548 ] pdfxs + (a) show + (ryso) + [3.90548 8.83718 3.92539 8.56818 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (tspillcodeisn) + [7.46236 3.92539 5.53942 2.76971 2.75975 6.35639 4.42357 5.26046 5.53942 8.01025 2.75975 + 7.51207 5.53942 ] pdfxs + (ot) show + 133.768 124.218 m + (c) + [4.42357 ] pdfxs + (o) show + (ns) + [5.53942 3.92539 ] pdfxs + (t) show + (r) + [3.90548 ] pdfxs + (a) show + (inedtouse) + [2.76971 5.52946 4.43354 8.8571 3.86572 8.30914 5.52946 3.93536 7.74125 ] pdfxs + (o) show + (nly) + [5.53942 2.76971 8.57814 ] pdfxs + (o) show + (nere) + [5.52946 7.75121 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er.) + [4.43354 3.89552 2.76971 ] pdfxs + 303.133 89.3652 m + (9) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 10 10 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + q + [/DeviceGray] cs 0 sc + 148.712 657.235 m + /N74 9.963 Tf + (A) show + (nin) + [8.87703 2.76971 5.2505 ] pdfxs + (t) show + (eres) + [4.43354 3.89552 4.43354 3.92539 ] pdfxs + (t) show + (ings) + [2.76971 5.52946 8.32907 3.92539 ] pdfxs + (t) show + (udyc) + [5.52946 5.53942 8.59807 4.42357 ] pdfxs + (o) show + (uldbed) + [5.53942 2.76971 8.87703 5.80842 7.77114 5.52946 ] pdfxs + (o) show + (nec) + [5.53942 7.76118 4.43354 ] pdfxs + (o) show + (mp) + [8.2991 5.53942 ] pdfxs + (a) show + (ring) + [3.89552 2.76971 5.52946 8.32907 ] pdfxs + (a) show + (n) + [8.86707 ] pdfxs + (agg) show + (ressive) + [3.90548 4.43354 3.92539 3.92539 2.76971 4.9815 7.77114 ] pdfxs + (g) show + (r) + [3.89552 ] pdfxs + (a) show + (phc) + [5.53942 8.87703 4.42357 ] pdfxs + (o) show + (l) + [2.76971 ] pdfxs + (o) show + (rin) + [3.90548 2.75975 5.53942 ] pdfxs + (g) show + 133.768 645.28 m + (re) + [3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 7.2929 ] pdfxs + (a) show + (lloca) + [2.76971 2.75975 5.26046 4.43354 4.97154 ] pdfxs + (to) show + (rto) + [7.30286 3.86572 8.37888 ] pdfxs + (t) show + (hisv) + [5.52946 2.76971 7.32277 4.70253 ] pdfxs + (a) show + (ri) + [3.90548 2.76971 ] pdfxs + (a) show + (nt) + [5.2505 7.27306 ] pdfxs + (o) show + (fline) + [6.43609 2.76971 2.75975 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.30286 3.92539 4.42357 ] pdfxs + (a) show + (n.) + [5.53942 7.41247 ] pdfxs + (I) show + (nprevi) + [8.92684 5.52946 3.90548 4.43354 5.2505 2.76971 ] pdfxs + (o) show + (uss) + [5.53942 7.32277 3.92539 ] pdfxs + (t) show + (udies,[PS) + [5.52946 5.53942 2.76971 4.42357 3.93536 6.17706 2.75975 6.7848 5.53942 ] pdfxs + (99) show + (]) + [6.15713 ] pdfxs + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 133.768 633.325 m + ([T) + [2.76971 7.19329 ] pdfxs + (H) show + (S9) + [5.53942 4.97154 ] pdfxs + (8) show + (]itw) + [6.27669 2.75975 7.38266 6.91432 ] pdfxs + (a) show + (sshownth) + [7.43237 3.93536 5.52946 4.70253 7.20325 9.03644 3.86572 5.53942 ] pdfxs + (a) show + (tline) + [7.37269 2.76971 2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [7.40249 3.92539 4.43354 ] pdfxs + (a) show + (nperf) + [9.03644 5.80842 4.42357 3.90548 3.04867 ] pdfxs + (o) show + (rmsin) + [3.89552 8.30907 7.42241 2.76971 9.03644 ] pdfxs + (t) show + (her) + [5.53942 7.93055 3.89552 ] pdfxs + (a) show + (n) + [5.53942 ] pdfxs + (g) show + (e) + [7.93055 ] pdfxs + (o) show + (f) + [6.54569 ] pdfxs + (10) show + (%) + [11.7961 ] pdfxs + (o) show + (fa) + [6.54569 8.48847 ] pdfxs + (g) show + (ood) + [5.26046 5.2505 5.53942 ] pdfxs + 133.768 621.37 m + (qu) + [5.26046 5.52946 ] pdfxs + (a) show + (lity) + [2.76971 2.76971 3.59672 8.75747 ] pdfxs + (g) show + (r) + [3.90548 ] pdfxs + (a) show + (phc) + [5.53942 9.03644 4.42357 ] pdfxs + (o) show + (l) + [2.76971 ] pdfxs + (o) show + (ringre) + [3.90548 2.75975 5.53942 8.48847 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 7.41245 ] pdfxs + (a) show + (lloc) + [2.75975 2.76971 5.26046 4.42357 ] pdfxs + (ato) show + (r.Given) + [3.90548 7.74125 7.82099 2.76971 4.9815 4.42357 9.03644 ] pdfxs + (t) show + (hepr) + [5.53942 7.93055 5.52946 3.90548 ] pdfxs + (o) show + (p) + [5.80842 ] pdfxs + (o) show + (sedimprovemen) + [3.93536 4.42357 9.03644 2.76971 8.30907 5.52946 3.90548 4.70253 4.9815 4.42357 8.30907 + 4.42357 5.26046 ] pdfxs + (t) show + (s,i) + [3.92539 6.31654 2.76971 ] pdfxs + (t) show + 133.768 609.415 m + (ish) + [2.76971 6.71503 5.53942 ] pdfxs + (o) show + (ped) + [5.80842 4.42357 8.32906 ] pdfxs + (t) show + (h) + [5.52946 ] pdfxs + (a) show + (t) + [6.66532 ] pdfxs + (t) show + (he) + [5.53942 7.21321 ] pdfxs + (ga) show + (pwillbefurtherreducedbutth) + [8.32906 7.19329 2.76971 2.75975 5.55935 5.80842 7.22318 3.03871 5.53942 3.90548 3.86572 + 5.53942 4.42357 6.69512 3.90548 4.42357 5.53942 5.52946 4.43354 4.42357 8.32906 5.52946 + 5.53942 6.66532 3.86572 5.53942 ] pdfxs + (a) show + (th) + [6.66532 5.52946 ] pdfxs + (a) show + (syet) + [6.725 4.9815 4.42357 6.66532 ] pdfxs + (t) show + (obedetermined.) + [7.77114 5.80842 7.22318 5.52946 4.43354 3.86572 4.43354 3.90548 8.2991 2.76971 5.52946 + 4.43354 5.52946 2.76971 ] pdfxs + 133.768 576.469 m + /N71 14.346 Tf + (R) show + (efere) + [7.3595 4.93494 7.37385 6.58481 7.3595 ] pdfxs + (nc) show + (es) + [7.37385 6.36962 ] pdfxs + 133.768 554.648 m + /N74 9.963 Tf + ([) + [2.76971 ] pdfxs + (LA04) show + (]Chris) + [15.353 7.20325 5.52946 3.90548 2.76971 7.64159 ] pdfxs + (Latt) show + (ner) + [5.52946 4.43354 7.62168 ] pdfxs + (a) show + (nd) + [5.52946 9.25562 ] pdfxs + (V) show + (ikr) + [2.76971 5.26046 3.89552 ] pdfxs + (a) show + (m) + [12.0253 ] pdfxs + (A) show + (dve.) + [5.52946 4.9815 4.43354 8.36892 ] pdfxs + (L) show + (L) + [5.11102 ] pdfxs + (V) show + (M:AC) + [9.13614 6.48591 11.1884 7.19329 ] pdfxs + (o) show + (mpil) + [8.30907 5.52946 2.76971 2.76971 ] pdfxs + (at) show + (i) + [2.75975 ] pdfxs + (o) show + (nFr) + [9.25562 5.67891 3.89552 ] pdfxs + (a) show + (mew) + [8.30907 4.42357 6.91432 ] pdfxs + (o) show + (rk) + [3.90548 5.26046 ] pdfxs + 175.556 542.693 m + (f) + [3.04867 ] pdfxs + (o) show + (r) + [6.35638 ] pdfxs + (L) show + (ifel) + [2.75975 3.04867 4.42357 2.76971 ] pdfxs + (o) show + (ngPr) + [5.53942 7.4324 6.7848 3.89552 ] pdfxs + (og) show + (r) + [3.90548 ] pdfxs + (a) show + (m) + [10.76 ] pdfxs + (A) show + (n) + [5.52946 ] pdfxs + (a) show + (lysis&Tr) + [2.76971 5.26046 3.92539 2.76971 6.38625 10.2021 6.36636 3.89552 ] pdfxs + (a) show + (nsf) + [5.53942 3.92539 3.04867 ] pdfxs + (o) show + (rm) + [3.90548 8.2991 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n.) + [5.52946 5.77854 ] pdfxs + (I) show + (n) show + 401.154 542.693 m + /N101 9.963 Tf + (Procee) + [6.75485 3.69624 4.58299 4.07493 4.07493 4.06497 ] pdfxs + (d) show + (in) + [3.05871 5.59917 ] pdfxs + (g) show + (s) + [6.84455 ] pdfxs + (o) show + (ft) + [5.82842 3.30772 ] pdfxs + (he) show + 175.556 530.738 m + (200) show + (4Int) + [8.38886 3.83577 5.60913 3.30772 ] pdfxs + (e) show + (rn) + [4.19439 5.60913 ] pdfxs + (a) show + (ti) + [3.30772 3.05871 ] pdfxs + (o) show + (n) + [5.59917 ] pdfxs + (a) show + (lSymp) + [5.83828 5.59917 4.84194 8.1397 4.58299 ] pdfxs + (os) show + (ium) + [3.05871 5.35016 11.4375 ] pdfxs + (o) show + (nCo) + [8.89692 7.12358 4.58299 ] pdfxs + (d) show + (eG) + [7.8808 7.70142 ] pdfxs + (e) show + (n) + [5.59917 ] pdfxs + (e) show + (r) + [3.69624 ] pdfxs + (a) show + (ti) + [3.30772 3.05871 ] pdfxs + (o) show + (n) + [8.89692 ] pdfxs + (a) show + (ndO) + [5.59917 8.3789 7.6416 ] pdfxs + (p) show + (timi) + [3.30772 3.05871 8.14966 3.04875 ] pdfxs + (za) show + (ti) + [3.31769 3.04875 ] pdfxs + (o) show + (n) show + 175.556 518.782 m + (\() show + (CGO') + [7.12358 7.71138 7.6416 3.04875 ] pdfxs + (04\)) show + 219.416 518.782 m + /N74 9.963 Tf + (,P) + [6.08739 6.50584 ] pdfxs + (a) show + (lo) + [2.76971 8.29918 ] pdfxs + (A) show + (l) + [2.76971 ] pdfxs + (to) show + (,C) + [6.08739 7.19329 ] pdfxs + (a) show + (lif) + [2.76971 2.75975 3.04867 ] pdfxs + (o) show + (rni) + [3.90548 5.52946 2.76971 ] pdfxs + (a) show + (,M) + [6.08739 9.13614 ] pdfxs + (a) show + (r) + [7.22316 ] pdfxs + (20) show + (0) + [4.97154 ] pdfxs + (4) show + (.) show + 133.768 498.857 m + ([MP) + [2.76971 9.12618 6.7848 ] pdfxs + (02) show + (]) + [13.1412 ] pdfxs + (Ha) show + (nspe) + [5.53942 3.92539 5.81839 4.42357 ] pdfxs + (t) show + (erM) + [4.42357 6.79475 9.13614 ] pdfxs + (o) show + (ssenbock) + [3.92539 3.92539 4.43354 5.26046 5.80842 5.26046 4.14461 8.14973 ] pdfxs + (a) show + (ndMich) + [5.53942 8.41873 9.13614 2.76971 4.14461 5.53942 ] pdfxs + (a) show + (elPfei\013er.) + [4.42357 5.65898 6.77484 3.04867 4.42357 2.76971 5.81832 4.42357 3.90548 6.47595 ] pdfxs + (L) show + (ine) + [2.76971 5.52946 4.43354 ] pdfxs + (a) show + (rsc) + [6.78478 3.93536 4.42357 ] pdfxs + (a) show + (nre) + [8.42869 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.42357 6.79475 ] pdfxs + (a) show + (ll) + [2.76971 2.76971 ] pdfxs + (o) show + (-) show + 175.556 486.902 m + (c) + [4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (nin) + [8.75747 2.76971 8.75747 ] pdfxs + (t) show + (hec) + [5.52946 7.65158 4.43354 ] pdfxs + (o) show + (n) + [5.2505 ] pdfxs + (t) show + (ext) + [4.43354 5.2505 7.10369 ] pdfxs + (o) show + (fssaf) + [6.26672 3.92539 3.93536 8.19955 3.04867 ] pdfxs + (o) show + (rm) + [3.89552 11.5271 ] pdfxs + (a) show + (ndre) + [5.53942 8.75747 3.89552 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (erc) + [4.42357 7.12353 4.43354 ] pdfxs + (o) show + (ns) + [5.52946 3.93536 ] pdfxs + (t) show + (r) + [3.89552 ] pdfxs + (a) show + (in) + [2.76971 5.26046 ] pdfxs + (t) show + (s.) + [3.92539 7.02391 ] pdfxs + (I) show + (n) show + 441.57 486.902 m + /N101 9.963 Tf + (Proceed-) + [6.75485 3.69624 4.58299 4.07493 4.07493 4.06497 5.10107 3.56677 ] pdfxs + 175.556 474.947 m + (in) + [3.05871 5.59917 ] pdfxs + (g) show + (s) + [7.86077 ] pdfxs + (o) show + (fthe) + [6.83468 3.30772 5.10107 8.35902 ] pdfxs + (1) show + (1thInt) + [5.10107 3.30772 8.87705 3.83577 5.59917 3.31769 ] pdfxs + (e) show + (rnation) + [4.19439 5.59917 5.10107 3.30772 3.04875 5.10107 5.59917 ] pdfxs + (a) show + (lC) + [6.32647 7.13354 ] pdfxs + (o) show + (nf) + [5.59917 3.05871 ] pdfxs + (e) show + (r) + [3.68628 ] pdfxs + (e) show + (nce) + [5.59917 4.07493 8.36898 ] pdfxs + (o) show + (nC) + [9.38511 7.13354 ] pdfxs + (o) show + (m) + [8.14966 ] pdfxs + (p) show + (il) + [3.04875 2.55049 ] pdfxs + (e) show + (rC) + [7.98033 7.13354 ] pdfxs + (o) show + (n) + [5.59917 ] pdfxs + (s) show + (tru) + [3.30772 4.20436 5.35016 ] pdfxs + (c) show + (tion) + [3.30772 3.04875 5.10107 5.59917 ] pdfxs + 474.712 474.947 m + /N74 9.963 Tf + (,) show + 175.556 462.992 m + (p) + [5.53942 ] pdfxs + (ag) show + (es) + [4.42357 7.25303 ] pdfxs + (229{246) show + (.Sprin) + [6.08739 5.52946 5.53942 3.89552 2.76971 5.53942 ] pdfxs + (g) show + (er-Verl) + [4.42357 3.90548 3.3176 6.64532 4.42357 3.90548 2.76971 ] pdfxs + (ag) show + (,) + [6.08739 ] pdfxs + (2002) show + (.) show + 133.768 443.066 m + ([PEK) + [2.76971 6.77484 6.7848 7.75121 ] pdfxs + (97) show + (]M) + [7.74125 9.13614 ] pdfxs + (a) show + (ssimili) + [3.92539 3.93536 2.76971 8.2991 2.76971 2.75975 2.76971 ] pdfxs + (a) show + (noP) + [5.53942 9.74381 6.50584 ] pdfxs + (o) show + (le) + [2.75975 4.43354 ] pdfxs + (t) show + (t) + [3.86572 ] pdfxs + (o) show + (,Daws) + [7.90066 7.60184 4.7125 7.19329 3.92539 ] pdfxs + (o) show + (n) + [10.3017 ] pdfxs + (R) show + (.En) + [7.53202 6.77484 5.53942 ] pdfxs + (g) show + (ler,) + [2.76971 4.42357 3.90548 7.89069 ] pdfxs + (a) show + (ndM.Fr) + [5.52946 10.3017 9.12618 7.53202 5.67891 3.89552 ] pdfxs + (a) show + (nsK) + [5.53942 8.68771 7.75121 ] pdfxs + (aa) show + (shoek.) + [3.93536 5.52946 5.26046 4.42357 5.26046 2.76971 ] pdfxs + 175.556 431.111 m + (t) show + (cc:Asys) + [4.42357 4.43354 8.11984 11.2482 3.93536 5.26046 3.92539 ] pdfxs + (t) show + (emf) + [4.42357 12.085 3.04867 ] pdfxs + (o) show + (rf) + [7.68145 3.04867 ] pdfxs + (a) show + (s) + [3.92539 ] pdfxs + (t) show + (,\rexible,) + [6.66524 5.53942 4.42357 5.26046 2.76971 5.52946 2.76971 4.42357 6.66524 ] pdfxs + (a) show + (ndhi) + [5.53942 9.3154 5.53942 2.75975 ] pdfxs + (g) show + (h-leveldyn) + [5.53942 3.3176 2.76971 4.42357 4.9815 4.43354 6.54569 5.53942 5.26046 5.52946 ] pdfxs + (a) show + (miccode) + [8.2991 2.76971 8.20951 4.43354 5.26046 5.52946 8.20951 ] pdfxs + (g) show + (ener) + [4.43354 5.52946 4.43354 3.89552 ] pdfxs + (a) show + (-) show + 175.556 419.156 m + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n.) + [5.52946 6.45602 ] pdfxs + (I) show + (n) show + 211.169 419.156 m + /N101 9.963 Tf + (SIGPLANC) + [5.59917 3.84573 7.70142 6.76481 6.24679 7.40247 10.5607 7.12358 ] pdfxs + (o) show + (nf) + [5.59917 3.05871 ] pdfxs + (e) show + (r) + [3.69624 ] pdfxs + (e) show + (nce) + [5.59917 4.07493 7.73135 ] pdfxs + (o) show + (nPro) + [8.74748 6.76481 3.68628 4.58299 ] pdfxs + (g) show + (r) + [3.69624 ] pdfxs + (a) show + (mmingLan) + [8.14966 8.1397 3.05871 5.59917 7.73135 5.73868 5.10107 5.59917 ] pdfxs + (g) show + (u) + [5.34019 ] pdfxs + (ag) show + (e) + [7.74132 ] pdfxs + (Des) show + (i) + [3.04875 ] pdfxs + (g) show + (n) + [8.75744 ] pdfxs + (a) show + (n) + [5.59917 ] pdfxs + (d) show + 175.556 407.201 m + (Im) + [3.84573 8.1397 ] pdfxs + (p) show + (l) + [2.55049 ] pdfxs + (e) show + (m) + [8.14966 ] pdfxs + (e) show + (nt) + [5.59917 3.30772 ] pdfxs + (a) show + (ti) + [3.30772 3.05871 ] pdfxs + (o) show + (n) show + 243.556 407.201 m + /N74 9.963 Tf + (,p) + [6.08739 5.53942 ] pdfxs + (ag) show + (es) + [4.42357 7.25303 ] pdfxs + (109{121) show + (,) + [6.08739 ] pdfxs + (1997) show + (.) show + 133.768 387.276 m + ([PS) + [2.76971 6.77484 5.53942 ] pdfxs + (99) show + (]M) + [16.7378 9.13614 ] pdfxs + (a) show + (ssimili) + [3.92539 3.93536 2.76971 8.2991 2.76971 2.75975 2.76971 ] pdfxs + (a) show + (noP) + [5.53942 8.98662 6.50584 ] pdfxs + (o) show + (le) + [2.75975 4.43354 ] pdfxs + (tt) show + (o) + [8.98662 ] pdfxs + (a) show + (nd) + [5.52946 9.54455 ] pdfxs + (V) show + (ivekS) + [2.76971 4.9815 4.42357 9.26559 5.53942 ] pdfxs + (a) show + (rk) + [3.89552 4.70253 ] pdfxs + (a) show + (r.) + [3.90548 9.22573 ] pdfxs + (L) show + (ine) + [2.76971 5.53942 4.42357 ] pdfxs + (a) show + (rsc) + [7.9106 3.92539 4.43354 ] pdfxs + (a) show + (nre) + [9.53459 3.90548 4.43354 ] pdfxs + (g) show + (is) + [2.75975 3.93536 ] pdfxs + (t) show + (er) + [4.42357 7.9106 ] pdfxs + (a) show + (lloc) + [2.76971 2.75975 5.26046 4.43354 ] pdfxs + (a) show + (-) show + 175.556 375.32 m + (t) show + (i) + [2.76971 ] pdfxs + (o) show + (n.) + [5.52946 2.76971 ] pdfxs + 203.704 375.32 m + /N101 9.963 Tf + (ACMTr) + [7.15339 7.12358 13.6792 6.35643 3.69624 ] pdfxs + (a) show + (n) + [5.59917 ] pdfxs + (sac) show + (ti) + [3.30772 3.05871 ] pdfxs + (o) show + (ns) + [5.59917 8.81722 ] pdfxs + (o) show + (nPro) + [10.3416 6.75485 3.69624 4.58299 ] pdfxs + (g) show + (r) + [3.68628 ] pdfxs + (a) show + (mmingLan) + [8.14966 8.14966 3.04875 5.60913 9.31547 5.73868 5.10107 5.59917 ] pdfxs + (g) show + (u) + [5.34019 ] pdfxs + (age) show + (s) + [8.81722 ] pdfxs + (a) show + (ndSy) + [5.59917 9.83349 5.59917 4.84194 ] pdfxs + (s) show + (t) + [3.30772 ] pdfxs + (e) show + (m) + [8.14966 ] pdfxs + (s) show + 474.712 375.32 m + /N74 9.963 Tf + (,) show + 175.556 363.365 m + (21\(5\)) show + (:) + [2.75975 ] pdfxs + (895{913) show + (,) + [6.08739 ] pdfxs + (1999) show + (.) show + 133.768 343.44 m + ([T) + [2.76971 7.19329 ] pdfxs + (H) show + (S9) + [5.53942 4.97154 ] pdfxs + (8) show + (]OmriTr) + [8.8571 7.75121 8.2991 3.90548 6.11728 6.35639 3.90548 ] pdfxs + (a) show + (ub,Glenn) + [5.53942 5.52946 6.11728 7.82099 2.76971 4.42357 5.53942 8.87703 ] pdfxs + (H) show + (.) + [6.10732 ] pdfxs + (Ho) show + (lloway,) + [2.76971 2.76971 4.70253 6.92428 4.70253 4.42357 6.11728 ] pdfxs + (a) show + (ndMich) + [5.53942 8.87703 9.13614 2.76971 4.14461 5.53942 ] pdfxs + (a) show + (el) + [4.42357 6.11728 ] pdfxs + (D) show + (.Smi) + [6.10732 5.53942 8.2991 2.76971 ] pdfxs + (t) show + (h.Qu) + [5.52946 7.25306 7.75121 5.53942 ] pdfxs + (a) show + (lity) + [2.75975 2.76971 3.59672 8.60803 ] pdfxs + (a) show + (nd) + [5.52946 5.53942 ] pdfxs + 175.556 331.485 m + (speedinline) + [3.92539 5.81839 4.42357 4.43354 9.32536 2.76971 9.32536 2.76971 2.76971 5.52946 4.43354 + ] pdfxs + (a) show + (r-sc) + [3.89552 3.32757 3.92539 4.43354 ] pdfxs + (a) show + (nre) + [9.32536 3.90548 4.42357 ] pdfxs + (g) show + (is) + [2.76971 3.92539 ] pdfxs + (t) show + (er) + [4.43354 7.69142 ] pdfxs + (a) show + (lloc) + [2.76971 2.76971 5.26046 4.42357 ] pdfxs + (at) show + (i) + [2.76971 ] pdfxs + (o) show + (n.) + [5.52946 8.59807 ] pdfxs + (I) show + (n) show + 365.826 331.485 m + /N101 9.963 Tf + (SIGPLANConf) + [5.59917 3.84573 7.70142 6.76481 6.24679 7.40247 11.4076 7.12358 5.10107 5.59917 3.04875 + ] pdfxs + (e) show + (r) + [3.69624 ] pdfxs + (e) show + (nce) + [5.59917 4.07493 8.58817 ] pdfxs + (o) show + (n) show + 175.556 319.53 m + (Pro) + [6.75485 3.69624 4.58299 ] pdfxs + (g) show + (r) + [3.68628 ] pdfxs + (a) show + (mmingL) + [8.14966 8.14966 3.05871 5.59917 8.92691 5.73868 ] pdfxs + (a) show + (n) + [5.59917 ] pdfxs + (g) show + (u) + [5.35016 ] pdfxs + (ag) show + (e) + [8.91695 ] pdfxs + (Des) show + (i) + [3.05871 ] pdfxs + (g) show + (n) + [9.94304 ] pdfxs + (a) show + (ndIm) + [5.59917 9.43497 3.84573 8.1397 ] pdfxs + (p) show + (l) + [2.55049 ] pdfxs + (e) show + (m) + [8.14966 ] pdfxs + (e) show + (nt) + [5.59917 3.30772 ] pdfxs + (a) show + (ti) + [3.30772 3.05871 ] pdfxs + (o) show + (n) show + 404.677 319.53 m + /N74 9.963 Tf + (,p) + [7.14347 5.53942 ] pdfxs + (ag) show + (es) + [4.42357 8.09989 ] pdfxs + (142{151) show + (,) show + 175.556 307.574 m + (1998) show + (.) show + 300.642 89.3655 m + (10) show + Q + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 11 11 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + 1 0 0 1 133.768 592.451 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 0 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -477.081 -589.462 cm + [/DeviceGray] cs 0 sc + 118.423 581.093 m + /N104 4.98099 Tf + (1) show + 1 0 0 1 133.768 577.507 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -577.507 cm + 137.156 581.093 m + /N107 9.963 Tf + (UNHANDLE) show + (D=) + [10.4611 10.4611 ] pdfxs + (interval) show + (s) + [10.4511 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (increasin) show + (g) + [10.4611 ] pdfxs + (star) show + (t) + [10.4611 ] pdfxs + (point) show + 1 0 0 1 477.081 577.507 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -577.507 cm + 118.423 569.138 m + /N104 4.98099 Tf + (2) show + 1 0 0 1 133.768 565.551 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -565.551 cm + 137.156 569.138 m + /N107 9.963 Tf + (FIXE) show + (D=) + [10.4611 10.4611 ] pdfxs + (fixe) show + (d) + [10.4611 ] pdfxs + (interv) show + (a) + [5.22055 ] pdfxs + (l) show + (s) + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (increasin) show + (g) + [10.4611 ] pdfxs + (star) show + (t) + [10.4611 ] pdfxs + (point) show + 1 0 0 1 477.081 565.551 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -565.551 cm + 118.423 557.183 m + /N104 4.98099 Tf + (3) show + 1 0 0 1 133.768 553.596 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -553.596 cm + 137.156 557.183 m + /N107 9.963 Tf + (ACTIV) show + (E={) + [10.4611 10.4611 10.4611 ] pdfxs + (}) show + 1 0 0 1 477.081 553.596 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -553.596 cm + 118.423 545.228 m + /N104 4.98099 Tf + (4) show + 1 0 0 1 133.768 541.641 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -541.641 cm + 137.156 545.228 m + /N107 9.963 Tf + (INACTIV) show + (E={) + [10.4611 10.4611 10.4611 ] pdfxs + (}) show + 1 0 0 1 477.081 541.641 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -541.641 cm + 118.423 533.272 m + /N104 4.98099 Tf + (5) show + 1 0 0 1 133.768 529.686 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -529.686 cm + 137.156 533.272 m + /N107 9.963 Tf + (HANDLE) show + (D={) + [10.4611 10.4611 10.4611 ] pdfxs + (}) show + 1 0 0 1 477.081 529.686 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -529.686 cm + 118.423 521.317 m + /N104 4.98099 Tf + (6) show + 1 0 0 1 133.768 517.731 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -517.731 cm + 137.156 521.317 m + /N107 9.963 Tf + (REGMA) show + (P=a) + [10.4611 10.4611 10.4611 ] pdfxs + (ma) show + (p) + [10.4611 ] pdfxs + (fro) show + (mI) + [10.4611 5.22055 ] pdfxs + (NT.re) show + (g) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (machin) show + (e) + [10.4611 ] pdfxs + (registers) show + 1 0 0 1 477.081 517.731 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -517.731 cm + 118.423 509.362 m + /N104 4.98099 Tf + (7) show + 1 0 0 1 133.768 505.776 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -505.776 cm + 118.423 497.407 m + (8) show + 1 0 0 1 133.768 493.82 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -493.82 cm + 137.156 497.407 m + /N107 9.963 Tf + (whil) show + (e) + [10.4611 ] pdfxs + (\(UNHANDLE) show + (D) + [10.4611 ] pdfxs + (no) show + (t) + [10.4511 ] pdfxs + (empty) show + (\)) + [10.4611 ] pdfxs + (do) show + 1 0 0 1 477.081 493.82 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -493.82 cm + 118.423 485.452 m + /N104 4.98099 Tf + (9) show + 1 0 0 1 133.768 481.865 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -481.865 cm + 158.077 485.452 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (interva) show + (l) + [10.4611 ] pdfxs + (w) show + (i) + [5.22055 ] pdfxs + (t) show + (h) + [10.4611 ] pdfxs + (earlies) show + (t) + [10.4611 ] pdfxs + (star) show + (t) + [10.4611 ] pdfxs + (point) show + 1 0 0 1 477.081 481.865 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -481.865 cm + 115.033 473.497 m + /N104 4.98099 Tf + (10) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 469.91 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -469.91 cm + 115.033 461.541 m + (11) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 457.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -457.955 cm + 158.077 461.541 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (ACTIVE) show + 1 0 0 1 477.081 457.955 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -457.955 cm + 115.033 449.586 m + /N104 4.98099 Tf + (12) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 446 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -446 cm + 178.998 449.586 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (expire) show + (d) + [10.4611 ] pdfxs + (a) show + (t) + [10.4611 ] pdfxs + (INT) show + (.) + [5.22055 ] pdfxs + (start\)) show + 1 0 0 1 477.081 446 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -446 cm + 115.033 437.631 m + /N104 4.98099 Tf + (13) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 434.045 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -434.045 cm + 199.92 437.631 m + /N107 9.963 Tf + (remov) show + (e) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (fro) show + (m) + [10.4611 ] pdfxs + (ACT) show + (I) + [5.22055 ] pdfxs + (VE) show + 1 0 0 1 477.081 434.045 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -434.045 cm + 115.033 425.676 m + /N104 4.98099 Tf + (14) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 422.089 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -422.089 cm + 199.92 425.676 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT'.reg) show + (]) + [10.4511 ] pdfxs + (free) show + 1 0 0 1 477.081 422.089 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -422.089 cm + 115.033 413.721 m + /N104 4.98099 Tf + (15) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 410.134 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -410.134 cm + 178.998 413.721 m + /N107 9.963 Tf + (els) show + (e) + [10.4611 ] pdfxs + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (no) show + (t) + [10.4611 ] pdfxs + (liv) show + (eat) + [10.4611 5.22055 10.4611 ] pdfxs + (INT.start\)) show + 1 0 0 1 477.081 410.134 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -410.134 cm + 115.033 401.766 m + /N104 4.98099 Tf + (16) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 398.179 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -398.179 cm + 199.92 401.766 m + /N107 9.963 Tf + (mov) show + (e) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (INACTIVE) show + 1 0 0 1 477.081 398.179 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -398.179 cm + 115.033 389.81 m + /N104 4.98099 Tf + (17) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 386.224 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -386.224 cm + 199.92 389.81 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT'.reg) show + (]) + [10.4511 ] pdfxs + (free) show + 1 0 0 1 477.081 386.224 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -386.224 cm + 115.033 377.855 m + /N104 4.98099 Tf + (18) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 374.269 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -374.269 cm + 115.033 365.9 m + (19) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 362.314 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -362.314 cm + 158.077 365.9 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (INACT) show + (I) + [5.22055 ] pdfxs + (VE) show + 1 0 0 1 477.081 362.314 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -362.314 cm + 115.033 353.945 m + /N104 4.98099 Tf + (20) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 350.358 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -350.358 cm + 178.998 353.945 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (expire) show + (d) + [10.4611 ] pdfxs + (a) show + (t) + [10.4611 ] pdfxs + (INT) show + (.) + [5.22055 ] pdfxs + (start\)) show + 1 0 0 1 477.081 350.358 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -350.358 cm + 115.033 341.99 m + /N104 4.98099 Tf + (21) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 338.403 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -338.403 cm + 199.92 341.99 m + /N107 9.963 Tf + (remov) show + (e) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (fro) show + (m) + [10.4611 ] pdfxs + (INA) show + (C) + [5.22055 ] pdfxs + (TIVE) show + 1 0 0 1 477.081 338.403 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -338.403 cm + 115.033 330.035 m + /N104 4.98099 Tf + (22) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 326.448 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -326.448 cm + 178.998 330.035 m + /N107 9.963 Tf + (els) show + (e) + [10.4611 ] pdfxs + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (liv) show + (e) + [10.4611 ] pdfxs + (a) show + (t) + [10.4611 ] pdfxs + (I) show + (N) + [5.22055 ] pdfxs + (T.start\)) show + 1 0 0 1 477.081 326.448 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -326.448 cm + 115.033 318.079 m + /N104 4.98099 Tf + (23) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 314.493 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -314.493 cm + 199.92 318.079 m + /N107 9.963 Tf + (mov) show + (e) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (ACTIVE) show + 1 0 0 1 477.081 314.493 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -314.493 cm + 115.033 306.124 m + /N104 4.98099 Tf + (24) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 302.538 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -302.538 cm + 199.92 306.124 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT'.reg) show + (]) + [10.4511 ] pdfxs + (used) show + 1 0 0 1 477.081 302.538 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -302.538 cm + 115.033 294.169 m + /N104 4.98099 Tf + (25) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 290.583 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -290.583 cm + 115.033 282.214 m + (26) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 278.627 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -278.627 cm + 158.077 282.214 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(IN) show + (T) + [10.4611 ] pdfxs + (fixed\)) show + 1 0 0 1 477.081 278.627 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -278.627 cm + 115.033 270.259 m + /N104 4.98099 Tf + (27) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 266.672 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -266.672 cm + 178.998 270.259 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (ACTIVE) show + 1 0 0 1 477.081 266.672 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -266.672 cm + 115.033 258.304 m + /N104 4.98099 Tf + (28) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 254.717 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -254.717 cm + 178.998 258.304 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT.reg) show + (]) + [10.4611 ] pdfxs + (a) show + (s) + [10.4511 ] pdfxs + (used) show + 1 0 0 1 477.081 254.717 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -254.717 cm + 115.033 246.348 m + /N104 4.98099 Tf + (29) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 242.762 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -242.762 cm + 158.077 246.348 m + /N107 9.963 Tf + (else) show + 1 0 0 1 477.081 242.762 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -242.762 cm + 115.033 234.393 m + /N104 4.98099 Tf + (30) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 230.807 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -230.807 cm + 178.998 234.393 m + /N107 9.963 Tf + (ASSIGN-REG-OR-MEM\(INT\)) show + 1 0 0 1 477.081 230.807 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -343.313 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -343.313 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 -133.768 -227.419 cm + 224.788 195.539 m + /N74 9.963 Tf + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (3) show + (:) + [7.20325 ] pdfxs + (LIN) show + (E) + [6.77484 ] pdfxs + (AR) show + (-SC) + [3.32757 5.52946 7.19329 ] pdfxs + (A) show + (N) + [10.7999 ] pdfxs + (a) show + (l) + [2.75975 ] pdfxs + (go) show + (ri) + [3.90548 2.76971 ] pdfxs + (t) show + (hm.) + [5.52946 8.2991 2.76971 ] pdfxs + 300.643 89.365 m + (11) show + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 12 12 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + 1 0 0 1 133.768 652.503 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 0 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -477.081 -649.514 cm + [/DeviceGray] cs 0 sc + 118.423 641.146 m + /N104 4.98099 Tf + (1) show + 1 0 0 1 133.768 637.559 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -637.559 cm + 137.156 641.146 m + /N107 9.963 Tf + (/) show + (/) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (th) show + (e) + [10.4611 ] pdfxs + (interv) show + (al) + [5.22055 10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (allocate) show + 1 0 0 1 477.081 637.559 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -637.559 cm + 118.423 629.191 m + /N104 4.98099 Tf + (2) show + 1 0 0 1 133.768 625.604 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -625.604 cm + 118.423 617.235 m + (3) show + 1 0 0 1 133.768 613.649 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -613.649 cm + 137.156 617.235 m + /N107 9.963 Tf + (sav) show + (e) + [10.4611 ] pdfxs + (physica) show + (l) + [10.4611 ] pdfxs + (regist) show + (er) + [5.22055 10.4611 ] pdfxs + (free/us) show + (e) + [10.4611 ] pdfxs + (state) show + 1 0 0 1 477.081 613.649 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -613.649 cm + 118.423 605.28 m + /N104 4.98099 Tf + (4) show + 1 0 0 1 133.768 601.694 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -601.694 cm + 118.423 593.325 m + (5) show + 1 0 0 1 133.768 589.738 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -589.738 cm + 137.156 593.325 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (ACTI) show + (V) + [5.22055 ] pdfxs + (E) show + 1 0 0 1 477.081 589.738 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -589.738 cm + 118.423 581.37 m + /N104 4.98099 Tf + (6) show + 1 0 0 1 133.768 577.783 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -577.783 cm + 158.077 581.37 m + /N107 9.963 Tf + (UPDATE-SPILL-WEIGHTS\() show + (I) + [5.22055 ] pdfxs + (NT'\)) show + 1 0 0 1 477.081 577.783 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -577.783 cm + 118.423 569.415 m + /N104 4.98099 Tf + (7) show + 1 0 0 1 133.768 565.828 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -565.828 cm + 118.423 557.46 m + (8) show + 1 0 0 1 133.768 553.873 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -553.873 cm + 137.156 557.46 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (INAC) show + (T) + [5.22055 ] pdfxs + (IV) show + (E) + [10.4611 ] pdfxs + (an) show + (d) + [10.4611 ] pdfxs + (FIXED) show + 1 0 0 1 477.081 553.873 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -553.873 cm + 118.423 545.504 m + /N104 4.98099 Tf + (9) show + 1 0 0 1 133.768 541.918 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -541.918 cm + 158.077 545.504 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(IN) show + (T) + [10.4611 ] pdfxs + (overlap) show + (s) + [10.4611 ] pdfxs + (INT'\)) show + 1 0 0 1 477.081 541.918 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -541.918 cm + 115.033 533.549 m + /N104 4.98099 Tf + (10) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 529.963 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -529.963 cm + 178.998 533.549 m + /N107 9.963 Tf + (UPDATE-SPILL-WEIGHTS\(IN) show + (T) + [5.22055 ] pdfxs + ('\)) show + 1 0 0 1 477.081 529.963 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -529.963 cm + 115.033 521.594 m + /N104 4.98099 Tf + (11) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 518.007 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -518.007 cm + 178.998 521.594 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT'.reg) show + (]) + [10.4611 ] pdfxs + (u) show + (s) + [5.22055 ] pdfxs + (ed) show + 1 0 0 1 477.081 518.007 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -518.007 cm + 115.033 509.639 m + /N104 4.98099 Tf + (12) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 506.052 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -506.052 cm + 115.033 497.684 m + (13) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 494.097 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -494.097 cm + 137.156 497.684 m + /N107 9.963 Tf + (le) show + (tR) + [10.4611 10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (fre) show + (e) + [10.4611 ] pdfxs + (regist) show + (er) + [5.22055 10.4611 ] pdfxs + (fo) show + (r) + [10.4611 ] pdfxs + (INT.re) show + (g) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (NULL) show + 1 0 0 1 477.081 494.097 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -494.097 cm + 115.033 485.729 m + /N104 4.98099 Tf + (14) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 482.142 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -482.142 cm + 115.033 473.773 m + (15) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 470.187 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -470.187 cm + 137.156 473.773 m + /N107 9.963 Tf + (restor) show + (e) + [10.4611 ] pdfxs + (physica) show + (l) + [10.4611 ] pdfxs + (reg) show + (i) + [5.22055 ] pdfxs + (ste) show + (r) + [10.4611 ] pdfxs + (free/us) show + (e) + [10.4611 ] pdfxs + (state) show + 1 0 0 1 477.081 470.187 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -470.187 cm + 115.033 461.818 m + /N104 4.98099 Tf + (16) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 458.232 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -458.232 cm + 115.033 449.863 m + (17) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 446.276 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -446.276 cm + 137.156 449.863 m + /N107 9.963 Tf + (i) show + (fR) + [10.4611 10.4611 ] pdfxs + (!) show + (=) + [10.4611 ] pdfxs + (NULL) show + 1 0 0 1 477.081 446.276 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -446.276 cm + 115.033 437.908 m + /N104 4.98099 Tf + (18) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 434.321 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -434.321 cm + 158.077 437.908 m + /N107 9.963 Tf + (REGMAP[INT.reg) show + (]=) + [10.4611 10.4611 ] pdfxs + (R) show + 1 0 0 1 477.081 434.321 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -434.321 cm + 115.033 425.953 m + /N104 4.98099 Tf + (19) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 422.366 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -422.366 cm + 158.077 425.953 m + /N107 9.963 Tf + (mar) show + (kR) + [10.4611 10.4611 ] pdfxs + (used) show + 1 0 0 1 477.081 422.366 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -422.366 cm + 115.033 413.998 m + /N104 4.98099 Tf + (20) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 410.411 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -410.411 cm + 158.077 413.998 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (ACTIVE) show + 1 0 0 1 477.081 410.411 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -410.411 cm + 115.033 402.042 m + /N104 4.98099 Tf + (21) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 398.456 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -398.456 cm + 158.077 402.042 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (HANDLED) show + 1 0 0 1 477.081 398.456 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -398.456 cm + 115.033 390.087 m + /N104 4.98099 Tf + (22) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 386.501 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -386.501 cm + 137.156 390.087 m + /N107 9.963 Tf + (else) show + 1 0 0 1 477.081 386.501 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -386.501 cm + 115.033 378.132 m + /N104 4.98099 Tf + (23) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 374.545 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -374.545 cm + 158.077 378.132 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (REG-OF-MIN-WEIGH) show + (T) + [10.4511 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (registe) show + (r) + [10.4611 ] pdfxs + (wit) show + (h) + [10.4611 ] pdfxs + (mi) show + (n) + [10.4611 ] pdfxs + (spil) show + (l) + [10.4611 ] pdfxs + (weight) show + 1 0 0 1 477.081 374.545 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -374.545 cm + 115.033 366.177 m + /N104 4.98099 Tf + (24) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 362.59 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -362.59 cm + 158.077 366.177 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (MIN-WEIGH) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (wei) show + (g) + [5.22055 ] pdfxs + (h) show + (t) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (REG-OF-MIN-WEIGHT) show + 1 0 0 1 477.081 362.59 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -362.59 cm + 115.033 354.222 m + /N104 4.98099 Tf + (25) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 350.635 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -350.635 cm + 115.033 342.267 m + (26) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 338.68 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -338.68 cm + 158.077 342.267 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT.weigh) show + (t) + [10.4611 ] pdfxs + (<) show + (=) + [10.4611 ] pdfxs + (MIN) show + (-) + [5.22055 ] pdfxs + (WEIGHT\)) show + 1 0 0 1 477.081 338.68 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -338.68 cm + 115.033 330.311 m + /N104 4.98099 Tf + (27) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 326.725 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -326.725 cm + 178.998 330.311 m + /N107 9.963 Tf + (UPDATE-SPILLED-INTERVAL) show + (\() + [5.22055 ] pdfxs + (INT\)) show + 1 0 0 1 477.081 326.725 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -326.725 cm + 115.033 318.356 m + /N104 4.98099 Tf + (28) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 314.77 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -314.77 cm + 178.998 318.356 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(IN) show + (T) + [10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (no) show + (t) + [10.4611 ] pdfxs + (empty\)) show + 1 0 0 1 477.081 314.77 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -314.77 cm + 115.033 306.401 m + /N104 4.98099 Tf + (29) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 302.814 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -302.814 cm + 199.92 306.401 m + /N107 9.963 Tf + (inser) show + (t) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (a) show + (t) + [10.4611 ] pdfxs + (correc) show + (t) + [10.4511 ] pdfxs + (positio) show + (n) + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (UNHANDLED) show + 1 0 0 1 477.081 302.814 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -302.814 cm + 115.033 294.446 m + /N104 4.98099 Tf + (30) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 290.859 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -290.859 cm + 158.077 294.446 m + /N107 9.963 Tf + (else) show + 1 0 0 1 477.081 290.859 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -290.859 cm + 115.033 282.491 m + /N104 4.98099 Tf + (31) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 278.904 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -278.904 cm + 178.998 282.491 m + /N107 9.963 Tf + (prepen) show + (d) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (UNHANDLED) show + 1 0 0 1 477.081 278.904 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -278.904 cm + 115.033 270.536 m + /N104 4.98099 Tf + (32) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 266.949 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -266.949 cm + 178.998 270.536 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (EARLIEST-STAR) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (I) show + (N) + [5.22055 ] pdfxs + (T.start) show + 1 0 0 1 477.081 266.949 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -266.949 cm + 115.033 258.58 m + /N104 4.98099 Tf + (33) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 254.994 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -254.994 cm + 115.033 246.625 m + (34) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 243.039 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -243.039 cm + 178.998 246.625 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (ACTIV) show + (Ea) + [10.4611 5.22055 ] pdfxs + (n) show + (d) + [10.4611 ] pdfxs + (INACTIVE) show + 1 0 0 1 477.081 243.039 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -243.039 cm + 115.033 234.67 m + /N104 4.98099 Tf + (35) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 231.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -231.083 cm + 199.92 234.67 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(regmap[INT'.reg) show + (]) + [10.4511 ] pdfxs + (=) show + (=) + [10.4611 ] pdfxs + (REG-OF-MIN-WEIGH) show + (T) + [10.4611 ] pdfxs + (&&) show + 1 0 0 1 477.081 231.083 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -231.083 cm + 115.033 222.715 m + /N104 4.98099 Tf + (36) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 219.128 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -219.128 cm + 220.841 222.715 m + /N107 9.963 Tf + (INT) show + (') + [10.4611 ] pdfxs + (no) show + (t) + [10.4611 ] pdfxs + (fixe) show + (d) + [10.4611 ] pdfxs + (&) show + (&) + [10.4611 ] pdfxs + (INT) show + (') + [10.4511 ] pdfxs + (overlap) show + (s) + [10.4611 ] pdfxs + (INT\)) show + 1 0 0 1 477.081 219.128 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -219.128 cm + 115.033 210.76 m + /N104 4.98099 Tf + (37) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 207.173 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -207.173 cm + 220.841 210.76 m + /N107 9.963 Tf + (EARLIEST-STAR) show + (T=) + [10.4611 10.4611 ] pdfxs + (min\(E) show + (A) + [5.22055 ] pdfxs + (RLIEST-START) show + (,) + [10.4611 ] pdfxs + (INT'.start\)) show + 1 0 0 1 477.081 207.173 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -207.173 cm + 115.033 198.805 m + /N104 4.98099 Tf + (38) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 195.218 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -195.218 cm + 220.841 198.805 m + /N107 9.963 Tf + (UPDATE-SPILLED-INTERVA) show + (L) + [5.22055 ] pdfxs + (\(INT'\)) show + 1 0 0 1 477.081 195.218 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -195.218 cm + 115.033 186.849 m + /N104 4.98099 Tf + (39) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 183.263 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -183.263 cm + 115.033 174.894 m + (40) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 171.308 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -171.308 cm + 178.998 174.894 m + /N107 9.963 Tf + (ROLLBACK\(EARLIEST-START\)) show + 1 0 0 1 477.081 171.308 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -343.313 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -343.313 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 -133.768 -167.92 cm + 191.994 136.04 m + /N74 9.963 Tf + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (4) show + (:) + [7.20325 ] pdfxs + (A) show + (SS) + [5.52946 5.53942 ] pdfxs + (I) show + (GN-) + [7.82099 7.46229 3.32757 ] pdfxs + (R) show + (EG-O) + [6.77484 7.82099 3.3176 7.75121 ] pdfxs + (R) show + (-MEM) + [3.32757 9.12618 6.7848 9.12618 ] pdfxs + (\(IN) show + (T\)) + [7.20325 7.19336 ] pdfxs + (a) show + (lg) + [2.76971 4.97154 ] pdfxs + (o) show + (ri) + [3.90548 2.76971 ] pdfxs + (t) show + (hm.) + [5.52946 8.30907 2.76971 ] pdfxs + 300.643 89.365 m + (12) show + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 13 13 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + %%EndPageSetup + 0 0 612 792 re + W + n + 1 0 0 1 133.768 651.009 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 0 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + [/DeviceGray] cs 0 sc + S + Q + 1 0 0 1 -477.081 -648.02 cm + [/DeviceGray] cs 0 sc + 118.423 639.651 m + /N104 4.98099 Tf + (1) show + 1 0 0 1 133.768 636.065 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -636.065 cm + 137.156 639.651 m + /N107 9.963 Tf + (/) show + (/) + [10.4611 ] pdfxs + (IN) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (interva) show + (l) + [10.4611 ] pdfxs + (t) show + (o) + [10.4511 ] pdfxs + (b) show + (e) + [10.4611 ] pdfxs + (updated) show + 1 0 0 1 477.081 636.065 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -636.065 cm + 118.423 627.696 m + /N104 4.98099 Tf + (2) show + 1 0 0 1 133.768 624.11 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -624.11 cm + 118.423 615.741 m + (3) show + 1 0 0 1 133.768 612.154 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -612.154 cm + 137.156 615.741 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (spille) show + (di) + [10.4611 5.22055 ] pdfxs + (nterva) show + (l) + [10.4611 ] pdfxs + (fo) show + (r) + [10.4611 ] pdfxs + (INT.reg) show + 1 0 0 1 477.081 612.154 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -612.154 cm + 118.423 603.786 m + /N104 4.98099 Tf + (4) show + 1 0 0 1 133.768 600.199 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -600.199 cm + 118.423 591.831 m + (5) show + 1 0 0 1 133.768 588.244 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -588.244 cm + 137.156 591.831 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (instructio) show + (nI) + [10.4611 10.4511 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (INT) show + 1 0 0 1 477.081 588.244 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -588.244 cm + 118.423 579.876 m + /N104 4.98099 Tf + (6) show + 1 0 0 1 133.768 576.289 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -576.289 cm + 158.077 579.876 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (I.) show + (n) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (inde) show + (x) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (i) show + (n) + [5.22055 ] pdfxs + (struction) show + 1 0 0 1 477.081 576.289 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -576.289 cm + 118.423 567.92 m + /N104 4.98099 Tf + (7) show + 1 0 0 1 133.768 564.334 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -564.334 cm + 158.077 567.92 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (I.next.) show + (n) + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (inde) show + (x) + [10.4511 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (nex) show + (t) + [10.4611 ] pdfxs + (instruction) show + 1 0 0 1 477.081 564.334 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -564.334 cm + 118.423 555.965 m + /N104 4.98099 Tf + (8) show + 1 0 0 1 133.768 552.379 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -552.379 cm + 118.423 544.01 m + (9) show + 1 0 0 1 133.768 540.423 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -540.423 cm + 158.077 544.01 m + /N107 9.963 Tf + (fol) show + (d) + [10.4611 ] pdfxs + (a) show + (s) + [10.4611 ] pdfxs + (man) show + (y) + [10.4611 ] pdfxs + (referenc) show + (es) + [5.22055 10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (INT.re) show + (g) + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (I) show + 1 0 0 1 477.081 540.423 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -540.423 cm + 115.033 532.055 m + /N104 4.98099 Tf + (10) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 528.468 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -528.468 cm + 158.077 532.055 m + /N107 9.963 Tf + (fo) show + (r) + [10.4611 ] pdfxs + (eac) show + (h) + [10.4611 ] pdfxs + (referenc) show + (eRof) + [10.4611 10.4611 5.22055 10.4611 ] pdfxs + (INT.reg) show + 1 0 0 1 477.081 528.468 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -528.468 cm + 115.033 520.1 m + /N104 4.98099 Tf + (11) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 516.513 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -516.513 cm + 178.998 520.1 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (STAR) show + (T) + [10.4611 ] pdfxs + (<) show + (-R) + [10.4611 10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (us) show + (e?) + [10.4611 10.4511 ] pdfxs + (USE-SLOT\(I.n) show + (\):) + [10.4611 10.4611 ] pdfxs + (DEF-SLOT\(I.n\)) show + 1 0 0 1 477.081 516.513 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -516.513 cm + 115.033 508.144 m + /N104 4.98099 Tf + (12) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 504.558 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -504.558 cm + 178.998 508.144 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (EN) show + (D) + [20.9222 ] pdfxs + (<) show + (-R) + [10.4611 10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (de) show + (f?) + [10.4611 10.4511 ] pdfxs + (USE-SLOT\(I.next.n) show + (\):) + [10.4611 10.4611 ] pdfxs + (USE-SLOT\(I.n\)) show + 1 0 0 1 477.081 504.558 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -504.558 cm + 115.033 496.189 m + /N104 4.98099 Tf + (13) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 492.603 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -492.603 cm + 178.998 496.189 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (rang) show + (e) + [10.4611 ] pdfxs + ([START) show + (,) + [10.4611 ] pdfxs + (END\)) show + 1 0 0 1 477.081 492.603 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -343.313 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -343.313 -0.398987 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 -133.768 -489.215 cm + 175.251 457.335 m + /N74 9.963 Tf + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (5) show + (:) + [7.20325 ] pdfxs + (U) show + (PDATE-SP) + [6.77484 7.33284 6.64532 7.19329 6.7848 3.3176 5.53942 6.77484 ] pdfxs + (ILL) show + (E) + [6.7848 ] pdfxs + (D) show + (-) + [3.3176 ] pdfxs + (IN) show + (TERV) + [7.19329 6.7848 6.2268 6.35639 ] pdfxs + (AL\(IN) show + (T\)) + [7.20325 7.19336 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (g) show + (ori) + [4.97154 3.90548 2.76971 ] pdfxs + (t) show + (hm.) + [5.52946 8.30907 2.76971 ] pdfxs + 1 0 0 1 133.768 414.894 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 0 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -477.081 -411.905 cm + 118.423 403.537 m + /N104 4.98099 Tf + (1) show + 1 0 0 1 133.768 399.95 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -399.95 cm + 137.156 403.537 m + /N107 9.963 Tf + (/) show + (/) + [10.4611 ] pdfxs + (EARLIEST-STAR) show + (T) + [10.4611 ] pdfxs + (<) show + (-) + [10.4511 ] pdfxs + (star) show + (t) + [10.4611 ] pdfxs + (o) show + (f) + [10.4611 ] pdfxs + (earlies) show + (t) + [10.4611 ] pdfxs + (interva) show + (l) + [10.4611 ] pdfxs + (affected) show + 1 0 0 1 477.081 399.95 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -399.95 cm + 118.423 391.582 m + /N104 4.98099 Tf + (2) show + 1 0 0 1 133.768 387.995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -387.995 cm + 118.423 379.626 m + (3) show + 1 0 0 1 133.768 376.04 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -376.04 cm + 137.156 379.626 m + /N107 9.963 Tf + (whil) show + (e) + [10.4611 ] pdfxs + (\(HANDLE) show + (D) + [10.4611 ] pdfxs + (no) show + (t) + [10.4611 ] pdfxs + (e) show + (m) + [5.22055 ] pdfxs + (pty\)) show + 1 0 0 1 477.081 376.04 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -376.04 cm + 118.423 367.671 m + /N104 4.98099 Tf + (4) show + 1 0 0 1 133.768 364.085 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -364.085 cm + 158.077 367.671 m + /N107 9.963 Tf + (le) show + (t) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (<) show + (-) + [10.4611 ] pdfxs + (las) show + (t) + [10.4611 ] pdfxs + (inte) show + (r) + [5.22055 ] pdfxs + (va) show + (l) + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (HANDLED) show + 1 0 0 1 477.081 364.085 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -364.085 cm + 118.423 355.716 m + /N104 4.98099 Tf + (5) show + 1 0 0 1 133.768 352.13 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -352.13 cm + 118.423 343.761 m + (6) show + 1 0 0 1 133.768 340.174 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -340.174 cm + 158.077 343.761 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT'.star) show + (t<) + [10.4611 10.4611 ] pdfxs + (EARL) show + (I) + [5.22055 ] pdfxs + (EST-START\)) show + 1 0 0 1 477.081 340.174 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -340.174 cm + 118.423 331.806 m + /N104 4.98099 Tf + (7) show + 1 0 0 1 133.768 328.219 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -328.219 cm + 178.998 331.806 m + /N107 9.963 Tf + (break) show + 1 0 0 1 477.081 328.219 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -328.219 cm + 118.423 319.851 m + /N104 4.98099 Tf + (8) show + 1 0 0 1 133.768 316.264 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -316.264 cm + 118.423 307.895 m + (9) show + 1 0 0 1 133.768 304.309 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -304.309 cm + 158.077 307.895 m + /N107 9.963 Tf + (remov) show + (e) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (fro) show + (m) + [10.4611 ] pdfxs + (HAND) show + (L) + [5.22055 ] pdfxs + (ED) show + 1 0 0 1 477.081 304.309 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -304.309 cm + 115.033 295.94 m + /N104 4.98099 Tf + (10) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 292.354 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -292.354 cm + 158.077 295.94 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (ACTIVE\)) show + 1 0 0 1 477.081 292.354 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -292.354 cm + 115.033 283.985 m + /N104 4.98099 Tf + (11) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 280.399 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -280.399 cm + 178.998 283.985 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT'.reg) show + (]) + [10.4611 ] pdfxs + (a) show + (s) + [10.4511 ] pdfxs + (free) show + 1 0 0 1 477.081 280.399 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -280.399 cm + 115.033 272.03 m + /N104 4.98099 Tf + (12) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 268.443 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -268.443 cm + 115.033 260.075 m + (13) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 256.488 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -256.488 cm + 158.077 260.075 m + /N107 9.963 Tf + (remov) show + (e) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (fro) show + (m) + [10.4611 ] pdfxs + (ACTI) show + (VE) + [5.22055 10.4611 ] pdfxs + (o) show + (r) + [10.4611 ] pdfxs + (INACTIVE) show + 1 0 0 1 477.081 256.488 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -256.488 cm + 115.033 248.12 m + /N104 4.98099 Tf + (14) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 244.533 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -244.533 cm + 158.077 248.12 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (i) show + (s) + [10.4611 ] pdfxs + (no) show + (t) + [10.4611 ] pdfxs + (empty\)) show + 1 0 0 1 477.081 244.533 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -244.533 cm + 115.033 236.164 m + /N104 4.98099 Tf + (15) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 232.578 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -232.578 cm + 178.998 236.164 m + /N107 9.963 Tf + (inser) show + (t) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (a) show + (t) + [10.4611 ] pdfxs + (correc) show + (tp) + [10.4611 5.22055 ] pdfxs + (ositio) show + (n) + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (UNHANDLED) show + 1 0 0 1 477.081 232.578 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -232.578 cm + 115.033 224.209 m + /N104 4.98099 Tf + (16) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 220.623 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -220.623 cm + 115.033 212.254 m + (17) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 208.667 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -208.667 cm + 137.156 212.254 m + /N107 9.963 Tf + (foreac) show + (h) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (i) show + (n) + [10.4611 ] pdfxs + (HAND) show + (L) + [5.22055 ] pdfxs + (ED) show + 1 0 0 1 477.081 208.667 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -208.667 cm + 115.033 200.299 m + /N104 4.98099 Tf + (18) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 196.712 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -196.712 cm + 158.077 200.299 m + /N107 9.963 Tf + (i) show + (f) + [10.4611 ] pdfxs + (\(INT) show + (') + [10.4611 ] pdfxs + (expire) show + (d) + [10.4611 ] pdfxs + (afte) show + (r) + [10.4511 ] pdfxs + (EARLIEST-START\)) show + 1 0 0 1 477.081 196.712 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -196.712 cm + 115.033 188.344 m + /N104 4.98099 Tf + (19) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 184.757 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -184.757 cm + 178.998 188.344 m + /N107 9.963 Tf + (ad) show + (d) + [10.4611 ] pdfxs + (INT) show + (') + [10.4611 ] pdfxs + (t) show + (o) + [10.4611 ] pdfxs + (ACTIVE) show + 1 0 0 1 477.081 184.757 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -477.081 -184.757 cm + 115.033 176.389 m + /N104 4.98099 Tf + (20) + [3.39205 3.39205 ] pdfxs + 1 0 0 1 133.768 172.802 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -133.768 -172.802 cm + 178.998 176.389 m + /N107 9.963 Tf + (mar) show + (k) + [10.4611 ] pdfxs + (REGMAP[INT'.reg) show + (]) + [10.4611 ] pdfxs + (u) show + (s) + [5.22055 ] pdfxs + (ed) show + 1 0 0 1 477.081 172.802 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 11.955 l + S + Q + 1 0 0 1 -343.313 -2.989 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 343.313 0 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0.19899 0 m + 0.19899 2.989 l + S + Q + 1 0 0 1 -343.313 -0.397995 cm + q + [] 0 d + 0 J + 0.397995 w + n + 0 0.19899 m + 343.711 0.19899 l + S + Q + 1 0 0 1 -133.768 -169.415 cm + 183.969 137.534 m + /N74 9.963 Tf + (Figure) + [6.50584 2.76971 4.97154 5.53942 3.90548 7.74125 ] pdfxs + (6) show + (:RO) + [7.20325 7.05373 7.75121 ] pdfxs + (LL) show + (BACK) + [7.05373 7.19328 7.19329 7.75121 ] pdfxs + (\() show + (EAR) + [6.7848 7.46229 7.34265 ] pdfxs + (LI) show + (EST-ST) + [6.77484 5.53942 7.19329 3.3176 5.53942 6.36636 ] pdfxs + (A) show + (RT\)) + [6.4958 7.20325 7.19336 ] pdfxs + (a) show + (l) + [2.76971 ] pdfxs + (g) show + (ori) + [4.97154 3.90548 2.76971 ] pdfxs + (t) show + (hm.) + [5.52946 8.30907 2.76971 ] pdfxs + 300.643 89.365 m + (13) show + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 14 14 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font VXRDKN+Times-Roman + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 13 dict dup begin + /Notice (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development; Cyrillic glyphs added by Valek Filippov (C) 2001-2002; Numero, infinity and Omega made by Dmitry 40in (C) 2001) def + /FullName (Nimbus Roman No9 L Regular) def + /FamilyName (Nimbus Roman No9 L) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /VXRDKN+Times-Roman def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -168 -281 1031 924 } def + /XUID [6 5020931 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C825D7C534A1D7572F4904734D34A8EB5CCBF6AF4BD16868351B4 + 9720597C58AD9250B850406E3B7095164E634F096B16B87B7EB1DA7059CE66FD + DF08D200E8C5AE20931835F16D7D7ECCDC34AB3F57D265A00C5D0A72E3CA8B4E + 49BA6F0CBA0EC0987186D1A03F59396A66B8598AA6B0CB27BECD323BCD56A450 + 6FF06BDE9F9660206894E244782EE2A4F9F2095DB9D302903551DE228BD73649 + 8ED42C07EE7F3F8AE376C27370F6597A701D2142320B3893171D130CAC2E1B3C + E59E06FB14DD91901F8EE7567D0040934052E6AD60DFA3C126257D5CDB4B68B5 + B56FBEE67185463F7B12BFB9C19E7E97DBA924861E9E608E22865BC28EB29D26 + 0D8BC0804D9952BA0D22E8B6F7FD7E1A8452A0CB318D6B54F69EDC6536190766 + 899A59F5C772A33448031BB2F6754DAE1C12A021160B276434E0EFD0514FA1F1 + 62E5A8C7A0E7D34ADAB439E68A74679529C577A8121C9C7A767E8DD9DB28529A + ED6EA385AC394740E3DD3DBAE66C6A47CB1940EFF6139A9884C0F47C50DBAC50 + E6BA0179B53814BC5B7C0A549CB3CC2522CDEADE767AF894F3ED46A977CE8CE5 + 9278E1BC59986D428A39EBB5FBAEF2365F61CF569F74A87572F384175447E977 + 2F65FD764BB71FC5DB33DC0C60E9DC28E7B9D8F9DEB4C70CFC9BB72A758F7CFB + 8ADF1F632B3AA4F39D9568424F78C3C54DED65A13A4A5A802A3A47E8DF4ACB6B + 3E452224D2944B77F91EB545413DA6DDAA435C5B9FEBA826132604ADBF708EF8 + EFEFCB2420FBA2D86DACBBC5AD92AFB2407E4559A6F21E4B01B7BB8EC41C53DD + 59E55678703A99F7B6E52442B840FC9521FC1C3AC6FA580046FE5EFA8F73D2BD + 330D6B10FBEC163C6849AA9DFB222DED8527C89DB2FB4150CA543604EBB34BE8 + 19FCC9C8099109AEA0543C9545DEBCF8D564E0769CB56BFF435FC652A7C95EF5 + D602AA6E065355F2274C5963BCB5253548343CAB0607D13BDC987064365DF859 + FE644040D939A89C379282F905229E37E630B5A2D1F8B0A1D35D40B241558BBF + D4703B4D3DA2CDF748D72631748C4B637FC1F6CD2FA15A7B6EBF43070378EFD9 + A6283B963E86FAAD60241C7B1270B1AF2789CEDF60BA32450E16D08337CFA7B0 + 68A5191E42C8D902A96BF06D595CD758EA3998734B197DB02BC0192FF4012700 + F9B2F25BF43D09CD37A04C7BFE8DC4902F3D86165046C9432FF121AF42D6DC22 + AFF50E91F6C6848EC2667DB0EB2410D086C56856AD375608C131C3F1107CD6A5 + BE043BB82C4F91E5D458A527CD4DD44244C331F5FC1FEBE2600D813BA1884BD8 + 0B56FCC5EB98505E6636AD7C0294697D6FA6805D4CE3CB676936FAA8EEC741CE + 57B3F7D69ED0B316EBE3D0433693924E6D1E021D6BC3AD6E473535C1CD65795D + 9DA3A5881DF0227B1435EC7ADC1B28506F9DE6F32BC4FE61B311B94E798174A5 + 54A7F16EBE5FAA99596627A4E9E23BD2CDBBC8E57E8CAB227502585F766BA81D + 5930A386A5F9FEF57CF7B3232B0C36826F08A98A425A150FEED40B5EB5FDAF2B + 4DE1E40BA845DCBCB2131378FC02D98BB85F4F75BB62F2054D4CB01DCFE70EA9 + EC3A0297C3F87E425A2E782467DE20EA2C1F702F8EF6A802056BEF180EE6698F + C9D84A4DEE49534DEFACF6792A27476641F5DC997ADA81EA3B3CFF0FDCBBEFF9 + EA8427CDE6D769CE844057CF26143D843296FB7D9C534EA7F321B2E6D8E1E7D0 + 5D03370008A6CA562019D05900AC18F2C0FE820974BEB15262E683CF7AF43938 + D0548878EE363C356AC3298D107C8CAFE21BAA04B59DBE0D4331997303F8C9BE + C70A541625C7C8BB4D9623D3AC063B80D0692213D21F3D944BF5861B70803695 + A8306C5B4227A86E08D40E7F5B2E133C16AEAFAEAB90088840CA156ADFE6A481 + 8EF8C0A6F3B71923257270DA5371E8C1F5878C9BC4838959C455AE4FA093299B + 3ED0FFF05E697974443C9F8D2A917C685F4335F92035281FAD919268E451E0E7 + 95782A6EC33019849927B638020827379BB4ACC4A83B275F9D2D7A433D9C271A + 1D5CAE777282FAAC59CCAB25E048B17C9A65AFB48051C9324F43C35FE6EFE769 + 2973D085A1909B0F728BDE20D3ACBF27FA74D7640B92D10026CCEA5FA99A7CE4 + C0F9EAB2A2D528E33156A94F075FE74B6DA616BBFA1EAFA9A9C8A5AA035D2712 + 18EFBC2C55FFACBA6A81274120D96BA24472804B891139ED8306C60A4BDC80BB + 7058ACAE6EF9A3C759ACFF7096EBD3966C61B3F8EBA6B4A22338C689D538ACA9 + F3E9D107EABB9269C2AD9705F6D366FADAAF7D6B4F85CF5659F2E5C946AB2594 + D499255A76F6B3DD5B9E82BBCBA80F2DDFD8445EBAF68A9368BF2E7661FAB141 + 0343D6A3A9B15A688AB02767A2DA6F5B93C610F3A619837F921D7611734F01C3 + 82A71D7C0FE9915F535B4F87E60B0AC3F05A3FB70F6AFC11B3E1AA18B26545AF + A53C1FFA4504CDBECD5FFC5A16878514C06ED5B575CB030970FD790055BCBF15 + FC675CF3813E435ED827EE8361E40235799CEC6D9C59894AC6B18C2E39889445 + 8E6059D8B2C031978D1920E419A53D936FABBD110709AE66A3C08C53F2581994 + 49228A1ADD52206897DA20680A507F40A601AC4617EE692BC9BF89986E074340 + 2E13BD9680E6655FB453F4B1BA8FB1101E31A0BF0DA2A2FEECD7E3CD483C0AC9 + DF98769283A489BB195381640B0B6AEA4B0EB47383E58C80C7350021B550B630 + 7EC55AAFA0962EB71096461AC8964F6A4C4E03573C0FF599B33D5924291FF039 + F2448FCDCB1F479497D2988E7F42F27C2125547E5CD6010B9BC61631CE9C6789 + 7FFDC72F2028C935603A5F138E1A27B80320083BB1A9C689D2F7ADBB99F93C25 + 23E280AD0EBD54D6FCBBA181F99FBF85DAD8FE45651C32972EACC803A12C7503 + 8799D9400ED3445329C7866FEB84734DE0655F4A044EFB0C1C64135A05647B28 + 8C5A2FC69F6490665633DBF1A4CC745725AD3D52ECA3E2BD2487D30A5361D4ED + 5170701CD40B3B6B9005812F536F84DE7E00367012145A614CEE3F128BBEAE4C + 69A231BC32A6AACFB4E18C539B343A947367EC6DF9B24512B7AFE509F779CF85 + 51E978EE00923D7204E2BAB3E532FB7C8988606D9B1EFA5C409C0968DA3B68B0 + D6C8456B11875897F8995C5EE142021D20602F1CA8DBB88229629D85924685AA + 83585F138A2C3898282B17C7E1CD9107841809DEC1FCAB3431F4A3DA335CF477 + 311E6E17B95A9EA2F5905021757184C317E988BCA19BE77AA645FF06AB0FAD11 + DA658394C53953CD40156227711AF33DC841040C95846BA13CDF2A44B6E1A08C + 31D17233532D045EEEEFA801C48E6FAB25C924AB2240A7279C50178CE2E279A2 + 2F731F5ED91B737E28A975835EBE3FD8D3E46747659BB3FFBA96995A3C845CD8 + 537010902A34FC98F9C66A846963A6DD4297266D27BAD8BE2089F02EDF33D702 + 4EE17541D3AA7930D938055BC5D86F62787A1561E874D6F9D9C91A13DFCC726A + 443467D3B32851D785DBC305CFF177C98209F9BEE2792BA8D2A45064D0B9DF4D + 8A3E4ADF8DC406CDF1F3ABF8714ED17D96C699F76C2160DCB3492F459C9C3734 + 8392750B7A57DFA28EFE0DB14AF1ECF55CD03AF19CC3351E3D769E2924BFB047 + 2DB958918679236D90E66472517B0DCF605231B0AC9E380998B8922CF6C7AB59 + 964EC907CD59DD2813BBD3B0EEEB5DC4028B07AA288D5A9EEBA5336617A2C30B + 438497F7EF6CEC8127C23DA4F2AA73D4A58B684F2689ED3501BE65B80D4237B9 + B6F378BDD0FC0EC43AF4571088103440D958DF270193E0DD9492A9C58876AE70 + B0F41779FEE6916314C36FF57EA5EE08F2A4B519DC87E542BB6C54C0516E297C + 2477ED65E058C387FCFB07ABCCD30F33CD031C58C92CBED8B779A083A0628109 + 6157053857FD99AC2216AC26BA9F34FC0CF6FBBEB435D6D54B0CC0F419FD2655 + 3DCF88BFBC6D5ECD5B3145D8761D38AA58F65C4B2A5491D00470DCF5A1FAA4F4 + 66B2AB366E9EFE685EC65D32FFB90179F9B66AABDEA9DA6DCF21CC48F581C392 + 9C01914EA734DFE81336C03B51096C7E5923774D53E3D7E872FE2E62CD3C6159 + 6C0F3B5B59E77AC60D1C9FD6D4DE3C5A44D0994004A147D08C009E0979E57268 + 879DC77BCE516457A71D985CDA2388788851924213478F2E1A7AE9E3AFBC6C9B + 4CC7A4AB09B0BC1486BF888D987048B5E153807B0CD0C527E4CDE4B8E2F81E22 + 5BCCB886D940E01B99540F510F13DA33A5102E421F4747D6D259D2092EC74F2A + A00E3B8ECF9FAE5E0B5E9C0584FD3CFE15E4D5F9601D057AD8B5847EAFFF5DAA + A9E150660CD5A75E626907F27DCD4A93D9C33B2FC94FA8657669A2263D70BB44 + A94B6F4C0B275A3431D4120E42E5E13F9305A413710033BA0224198508B00EF3 + E0112629BB6B913E122BF93BFF04C2FDF377EDED67B8CE6AE928309A24542EBB + 97D731FA2F4D105503CC0A9294ABA84A725D1C63AFE794AF7E3D7B89E600860E + 2491208D5970B88B721B5624B5BD5844FE4AC51FF8D3B6F5425E1D6C4C97EA17 + C3327EDF1BB6F5E9A168D6D43BADBF71C3D63FA87EC974211D788F5BEA027B2E + C9EDD3343ADAF8B9C737E51328485B686D8A83DA34CE382FAF12F40702685CD5 + B78351E87BFBF1D2E13E81F9F94A3C232F665EDC9B428328A6F8B82F6B67479E + 2D49E6465EFE090D946376113213857C51BFE2B8F9972546A5D1EDA6742D2362 + B47D2AB76D8D7357E7A75421B0F60A3E6E347A016C61CA69C40CB0F797CDA05B + B9CD7BD095F906448EB4C9A6417462B3821386A44E4C50907FCCE0D5BBD4EE02 + F50CFB2C91417CDE756FFFC6E18A51669C549DDB793628E2D9B0DE677243229F + B77341F6E318FAB4199D65CC6C1F28127410D96686D78AB0FA7719F26901A083 + 0A13D57B304760E92E65819112134F94AFA00270BFD3E516C6A64786D8B914DA + 6D11FB9837FB5E9AB86B94B8CB2D2B144A873E032A43603A7684E1AF0735DF82 + BA21E142F6B0031A16A7C8ACCB64711001878F7BE90AB9B85197FBC38F5885D3 + AAD536DF067FFAFFD8C0911DAB56D06F1A94E2D56565185BBCC3712D0FA5DECB + A02989D8EC1FB676439E7B9C0FF98CACBA5FFF5F8855F02C9099DB35E2AAA26A + 5AA5F96427BE61B2C366AD4D67253CDB16513E11A77E471B89018E4EAE3CB478 + 4A8D96504E0C40347C8F8DDD1DBD3E189F85D837058885C14BADA950159CCAE1 + 7CC15AA9B1E030DF0A34752A7B8EED819549438EECE67318C58D99B90A6DEC31 + 35632ED595177D804FC4C844EAA2D30F1F0BDA73D8E5CDBC6F21B180D859D809 + C3E46102C67E47C7585950ADD0F40C897C444FF813EF04C4D981C77DE6056C91 + B7B72BACCF18B6273DDF6B186657C7E3559129D378B70D82F4E762C0BFE52F9C + 08726FE6C941E10BF91A153229BA89B5E6E119CA7FEECA6817B023261700173D + 153EA4DF4316676EEC43A6D4BCB4A9905D9BE08778FEE0C5E07906CEFBA6E583 + 4FDD0F0E9E550D77C1E68C78EA4B24C40826BB68C9A5E838CF19730B1F660CA9 + 3C1AFE1307C3C262BFD17C750471A0D710C7FD7B444E63492B7EA1D005BE2544 + D2AD50603F75D6E53906F6C49E25FC2A414D97E93CC326F3A9A8CF4D7C5F3384 + E273E8664B6B2FF8EC1F86C601BECBBD9D9CECD4F35DED7F2CDD9E7EC424771C + 07A43F9564B877D6232C54A2D3AFB9A3D9E26DB18E244859017258FFFBE16F32 + D9344C04D2CAB114CDCE696D5A44A003E2EBD2580065BAB9D71F86F6CEA68F65 + EAA21E0A5CFBBE4407EDC236BA470F6CF719625421D4D0A36C09605452F44C9A + 818FEE030F5FAAEE663D92272A03631F93A447863509ED40AEAC16B1732CE454 + C35D9F3AA74331191E4F1A789E3375B106236282673985FCF064CDFF3F1CD574 + FBC07A0BDE037E86E091DF4232E1871A5F193741B387D8982AEAD75B53A84730 + FA7195316272EEC6BE9F91B8A9BBF2DCD978C2A7BA400DE9D096B4DE331060C2 + C2F381FE93F68B129383503E2D33286E77D8E3AC172417D5B6261A0EEBAB73E5 + 2D50C9D1375DE627D3D1E72C36C492F5201A2BF0B865A802C5D514E54A856336 + 01E595F1E57CBB58BD3E89DC0FD680B58F669B483397B997AB6317A1B6935213 + 622BD7370C02F52871A1A0A3B6C2ECA8199F41712A39B78ECCB68E3C533F5114 + AAE77C2C3DC840C5D8DF183456A22AC5699C4B91FCF71275278D4D1AE1347F45 + 94E37B75BDE195E356174B1269FDC8163B5C94A00E01717A0C2A422438D4FA2A + 9D78C0E8B750D0DFEFB2790B5A65453DA00A57CDFE8CFE71D49F1FFE18451B1C + 000BD81965CA1F34E45712FE13EC98267B7B4DBFB789AC1B20733482BCF4CF7A + 28A7A79D20B104F59A0C060304AA7E7ED18C70133D7BACBB27EE2E269D8344A8 + 16E0BAC323EACA2434DCE508E7C6A11299093705A7E9F83F6DEB7355D0820CF5 + 32B94BA5834DC504D9F1D3BAC8878CBD5FCDFC2F9AB62A3BB255484B421A5A98 + 74A2D5644AAF9575F471E2EA3C6B74AA220EB991B7F5546FB1956D9D6279EBE8 + 054B10ADC13DEA1560CBCBE5155B2F3F39267D1CD2F42498DC85487E234E1E45 + 9930849367B2E3760A0F59B7F1652352660A57847401BD51A645F281C14C4A91 + B9F8A175570EA4B16FEDDB4CE7FBF09F1777808CCEF219AB7D53E564DB4D7B1C + 7C64B24364CC878B06A6D6481614FB79A66B562A09392B3B32A841842C3739B4 + F0F0ABF3D74A0355F131B766C1903829AE9970D905AD29D77DB2F5345FB83934 + 660654C6627D0AD1260AF608699E43A039187543075EA82A02C7A79F73A94635 + 7D6038D54ADA57E46C91788CBB930333C3FAA60A45360ECD9A4CEC90802B8D4A + 4465944215A8C1622CE18AEDBD5AE6A3024663807975CE8119AF0838A01304E0 + 0808B024E08E353989076ECF1EC03E79C1E118CA3F82E3AACE860F6B7EEE6CC3 + 703EA8BCAEF6B360A769BC2CDEDB18AD8019ECD8D0ABBB2EFF8DA7EFC77436D6 + 8DFBD4D238E75727EDDCAFD0712DCFB4C2ADBFB97DC90F3C86F0CAEC124D85A3 + AEF1028607977C1296B020DB41DE1A3C73F82D0994EAE4F61B76110C41529091 + 247D4F0B56C817A3567C1D541847C582891C32BE2D654720C57333C484CCF008 + 55C1F42BCC5E78B21258D94C6DE5845A27E9995C64C2929AF4AD9C6FBC5DDB48 + 0FB7F8F3B967D17057035EE96AE63E9081E680FC11F7C708828354E59A5F2005 + C91997BBE9DD99C1E2ACE376AAC58F9A11F445DAE701C126A017BC0AC7AD4DFB + A6D0914866C9B58F963B2988C7419B02A4BB4A0AB192AC812EDBA1569AFC474A + 7B840E0377AC3F9AAD3FA854B3C9F1300004EC77BFB8928047696F2905B149A2 + D4BFC1D87953A3D715D68D5E758C4AA14A2059D3BFD842EF42071100B9AA0B8F + A16A3E5401096CFD6B3108168898F0C0ED4F096D77BC91B9F234D4D379DE5891 + 4D524515335EFDEC29A7F244E15D79E02415BB552EB6A70811F77FA7C7B61485 + 5B611773AF7D69BEFFD045A78A44F012878599FBE0970BCED0B7E0815433F39F + C005D58B16E044EE504F35B159CBCD63ADFECC240B64CF40AC75C77A7F376206 + C174F0125E36673090E6A297415EDBB388F476D351B272CF59A3E99A403878EB + E87F94E6A729A77E9D1EA14336B70BEE37A4A988B7B408A11116D5405DA83AFC + 484D88B4B17345544C4E373356320AB91A15DE9FBF711FAF580544CE3F533713 + 4A6D2F8E585D79E114B87871C209821A7497037BB931CD245A75E58974DFB49F + EEB1FDF20B25B4D04AB7EB648CCC53973EB3C4761ADEE3390BAD2C7E82CE6C2C + 38997C490F24BAF48E4BD60EF469555C49CDA7F30063CFF940B55D22C6B9EB08 + 13CD92C3632CB55632146132EFCE4807460E68AC6A1D36CBD7B1DAFE470A610C + B14D8B5D4DBC29C18BBA48B81232195B0A1F7B0290C3967D0D4860E0D10181D2 + 081215BB49CB96E11D963359F7EA3994A88560DF829D6B3DB91F54EAA9FE7950 + AD71ED2849CCA46BCFBD159C640998D72E5769B6869CC0DADF4636245E0A606F + F325D08C6274639D3F56D14EFCDC8B240A928EF3937B84D1BB5755C1DB1DF2E0 + EF5A8D1939272F766CB4309A6987233E05A10CE6FE87E035B49434B574167E21 + A22073C69DB2B21E48E708112C6234EAAE093F9118F03413BCFD92687750EE80 + A53B19BB03C80723700371442E23F72D1C4265C3A5E6B2790D582CB6974EC80D + 4ABFBFDB23A691F1957B1E6E768BBEC7D3B08CEA480031513900BA6E624681AA + C37BA39A315F18E848B5150D4D3ECE50AB07F856A72B323EC4AEC3A5184B8734 + BAAD47F90C58BE95A0E619F98B6034908AE9AC39B8C3D0648729E4C4E5E9C91B + F0F8F2A25063CFC94DE863F7F76B96A3B3E18A4542927CDAA005D0D3BFD2A115 + 93CAB221FA91901829BDFFC464191FE9374CE1AD8EB77B556190D70FC0332A15 + A663E28CE737024C10477226C620DF65628DE0C9E6096D781B83980420A5752E + 94C46D8EA2445D458BCD769E433F9B4A11170D975B9204FFD8A5644400D80254 + FB6B8C6D2F72788BE00A72822FD9D87F3F5075B7C2B3E1CF8FD701996525AAFE + 18D037CA792A819F30021842B97C8BA2A48B94EA7452D6FEEA59EE09C561FDEE + F6F97CD9A778D598BA90D0E620A70344860C8A66A5F8A8F5D02C86B6F54069D9 + 7FA1D2ED9107D957BD85ED8C4B68F475A214310ACD5D792C02FE4C02CA6B89A7 + 2055BACF1BD52914978357451EBE7750B285B6A3B5DDE8AF2E20A719A8A320E3 + 69C700FDE6714FBB4907EB8A5E089BE57E0FB36A5CED4985A469A8D68935160A + ED379F8346E8158FEC9596E6BC9BD1F31A5B962EE44A5EF6C2E888C3F901693A + D07C4C38CEF968A35ADA186DDF03E2C4220CE6091F71940734669CBB71E87549 + 39CF302C131F541CD6BFA2D2ADEC115AAF6918E733C4AC744D171A1985D70721 + ADD47C620F09E9447CE8DD6042554F5A46A6EF4406FE55B0697DEEB3D34A3796 + A320949764E216F9E242FDE3B7938394B39E848F0AF095E961B8DD22F574504F + DF704787E7761E3663D1EE6F1D3FB253B11F3C6E991A9B0B92B805A4EFBC55E2 + E4850570B3D621923E827F0939E5B155D1816FD3720C30B8D58C531BA78E680A + 41AD64ECC640C0CBD653C1A9B6F5036F2735D1F2D2347F3E7700606D3405D601 + A088FF9AB264F95501AD8873A8AFDCAAE0110226A561102AEBD4F9482FA11716 + 1BEA9586B7D3AA26A1A4EBDE5E96370D553CF88BD889B73B1E743DF36A73C532 + 14AAD37F90B0E080911AF1E9AC064E5485A66BBA4800C5F8D562D60E01C28560 + 9448EB3AEC90BF46589E94E6ADC9E68A09EB3EE9EE35122CBBEC6040C8B45ACD + 7FD1B91FC4D6E4A81AE77711B7B21AD06EBA4DB374A19AE081D42E5063CEDBC5 + 7EB4D7EA79F4D2033594732582AECD845E4F419C2E647928290983481DE9D69A + 0B9ECB771292A5692019AB062686AB710CE49931DB78E673F32B713A0AEB8913 + 084187A0C52DF7ED28090977C03A1D221F80E23A1878C498FB549B3E60A8B79E + E9E6C605F790E8B52358E96CBD24B6046158C8FC14655B3B8195AE428078596B + B85663AABEAEC98B3D75CD3454D55F1B2D6C3D26E21E547A046D5ED906193333 + 25CEAB7810F4D1ECB04516D6A829F877E54C82C6296189A7D24FF3189A8C3136 + 5FECC1204BAE0AFA90C2CB0D25629A5C1596B3AC2879B1EFB228F980B766BC7D + DC0AFBC8708CDA337F11B14F4F03DFC042F941694629D8EF4F385A09CF314788 + 61F15798930F256B1427C1CF0058477FBBB7CDD67CFA88E5C7BE13257CC26078 + 1D99C9FE3F2895348A6320 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /VXRDKN+Times-Roman findfont /Encoding get + dup 0 /.notdef put + pop + end + /VXRDKN+Times-Roman findfont /Encoding get + dup 0 /.notdef put + dup 32 /space put + dup 43 /plus put + dup 46 /period put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 55 /seven put + dup 56 /eight put + dup 57 /nine put + dup 67 /C put + dup 83 /S 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 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 120 /x put + dup 121 /y put + dup 122 /z put + pop + %%EndResource + + userdict /pdf_svglb get setglobal + [/N214/VXRDKN+Times-Roman -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font OCPNFL+Times-Roman + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 13 dict dup begin + /Notice (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development; Cyrillic glyphs added by Valek Filippov (C) 2001-2002; Numero, infinity and Omega made by Dmitry 40in (C) 2001) def + /FullName (Nimbus Roman No9 L Regular) def + /FamilyName (Nimbus Roman No9 L) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /OCPNFL+Times-Roman def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -168 -281 1031 924 } def + /XUID [6 5020931 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C825D7C534A1D7572F4904734D34A8EB5CCBF6AF4BD16868351B4 + 9720597C58AD9250B850406E3B7095164E634F096B16B87B7EB1DA7059CE66FD + DF08D200E8C5AE20931835F16D7D7ECCDC34AB3F57D265A00C5D0A72E3CA8B4E + 49BA6F0CBA0EC0987186D1A03F59396A66B8598AA6B0CB27BECD323BCD56A450 + 6FF06BDE9F9660206894E244782EE2A4F9F2095DB9D302903551DE228BD73649 + 8ED42C07EE7F3F8AE376C27370F6597A701D2142320B3893171D130CAC2E1B3C + E59E06FB14DD91901F8EE7567D0040934052E6AD60DFA3C126257D5CDB4B68B5 + B56FBEE67185463F7B12BFB9C19E7E97DBA924861E9E608E22865BC28EB29D26 + 0D8BC0804D9952BA0D22E8B6F7FD7E1A8452A0CB318D6B54F69EDC6536190766 + 899A59F5C772A33448031BB2F6754DAE1C12A021160B276434E0EFD0514FA1F1 + 62E5A8C7A0E7D34ADAB439E68A74679529C577A8121C9C7A767E8DD9DB28529A + ED6EA385AC394740E3DD3DBAE66C6A47CB1940EFF6139A9884C0F47C50DBAC50 + E6BA0179B53814BC5B7C0A549CB3CC2522CDEADE767AF894F3ED46A977CE8CE5 + 9278E1BC59986D428A39EBB5FBAEF2365F61CF569F74A87572F384175447E977 + 2F65FD764BB71FC5DB33DC0C60E9DC28E7B9D8F9DEB4C70CFC9BB72A758F7CFB + 8ADF1F632B3AA4F39D9568424F78C3C54DED65A13A4A5A802A3A47E8DF4ACB6B + 3E452224D2944B77F91EB545413DA6DDAA435C5B9FEBA826132604ADBF708EF8 + EFEFCB2420FBA2D86DACBBC5AD92AFB2407E4559A6F21E4B01B7BB8EC41C53DD + 59E55678703A99F7B6E52442B840FC9521FC1C3AC6FA580046FE5EFA8F73D2BD + 330D6B10FBEC163C6849AA9DFB222DED8527C89DB2FB4150CA543604EBB34BE8 + 19FCC9C8099109AEA0543C9545DEBCF8D564E0769CB56BFF435FC652A7C95EF5 + D602AA6E065355F2274C5963BCB5253548343CAB0607D13BDC987064365DF859 + FE644040D939A89C379282F905229E37E630B5A2D1F8B0A1D35D40B241558BBF + D4703B4D3DA2CDF748D72631748C4B637FC1F6CD2FA15A7B6EBF43070378EFD9 + A6283B963E86FAAD60241C7B1270B1AF2789CEDF60BA32450E16D08337CFA7B0 + 68A5191E42C8D902A96BF06D595CD758EA3998734B197DB02BC0192FF4012700 + F9B2F25BF43D09CD37A04C7BFE8DC4902F3D86165046C9432FF121AF42D6DC22 + AFF50E91F6C6848EC2667DB0EB2410D086C56856AD375608C131C3F1107CD6A5 + BE043BB82C4F91E5D458A527CD4DD44244C331F5FC1FEBE2600D813BA1884BD8 + 0B56FCC5EB98505E6636AD7C0294697D6FA6805D4CE3CB676936FAA8EEC741CE + 57B3F7D69ED0B316EBE3D0433693924E6D1E021D6BC3AD6E473535C1CD65795D + 9DA3A5881DF0227B1435EC7ADC1B28506F9DE6F32BC4FE61B311B94E798174A5 + 54A7F16EBE5FAA99596627A4E9E23BD2CDBBC8E57E8CAB227502585F766BA81D + 5930A386A5F9FEF57CF7B3232B0C36826F08A98A425A150FEED40B5EB5FDAF2B + 4DE1E40BA845DCBCB2131378FC02D98BB85F4F75BB62F2054D4CB01DCFE70EA9 + EC3A0297C3F87E425A2E782467DE20EA2C1F702F8EF6A802056BEF180EE6698F + C9D84A4DEE49534DEFACF6792A27476641F5DC997ADA81EA3B3CFF0FDCBBEFF9 + EA8427CDE6D769CE844057CF26143D843296FB7D9C534EA7F321B2E6D8E1E7D0 + 5D03370008A6CA562019D05900AC18F2C0FE820974BEB15262E683CF7AF43938 + D0548878EE363C356AC3298D107C8CAFE21BAA04B59DBE0D4331997303F8C9BE + C70A541625C7C8BB4D9623D3AC063B80D0692213D21F3D944BF5861B70803695 + A8306C5B4227A86E08D40E7F5B2E133C16AEAFAEAB90088840CA156ADFE6A481 + 8EF8C0A6F3B71923257270DA5371E8C1F5878C9BC4838959C455AE4FA093299B + 3ED0FFF05E697974443C9F8D2A917C685F4335F92035281FAD919268E451E0E7 + 95782A6EC33019849927B638020827379BB4ACC4A83B275F9D2D7A433D9C271A + 1D5CAE777282FAAC59CCAB02A757DB65476B351D335A7CAA5070462FA460EFA5 + F590AAE4ADB66848EAA7741CEBFF366A44D53561FDE87ACCD4B9A03078CE0903 + 9D3F59062ED5C7810DE2DB9623791D5FF951DAC9D98184EE5779F51FD23D1F8E + 24E767D7C520577FD08BE7DC46171F16DABF59E550526BFA8912F4689746A5DA + E875E09D9C4C70C322434AA646E649733E388E7E5C2689A0D156C8DDF7C56E20 + F513C4A8735B9D38FF025FC999937C9F86AB68BA35A1F7215040F30FA433F5E1 + B7EF680C4097CCE26857CF7621CA6DF04FF4F97FE43CA862E2E6273A663FF027 + 214163ADD7D55AEF6B209357D9E64BFB4C8C772FF2CA81AC0DBCC303061EF279 + D7AE0D53F9CDA27864441BDA11EB447050F6BB10CA910654A84144DC24D90743 + AB48B28244332BBC533C19E5163D96C25220D0EED45574766D72FCAAD235ED6F + 963E7A13492359C691B96B4FACE04639551EB90250440353F87F238B856F5E8C + 2171919B78F9B22428BD7124C4422E8F5FA576EC0A537D070F87A2674108C586 + C4D80A50B6B53F1A9F81DEC16B15404C81E37BDC8AC7E7A9E47186DE5BDCB161 + F13BFCB3A5D0496A0E79620787C963C82FDFE8E2E8307330C0AD3D311F0A7BC8 + DC6B972DE7DC0298690061AB77CD78FC232FD763610C285C65B52EFCF258E421 + 3B1B20B90B3C907D69A5E3CC3C5182EC406CBFD6F5D233A86B0C3BC4FA2E0804 + ED573B951A769E03CFC1B5552A261A678741A4A3551701F6722B6E8EF28F1208 + FA06388E40CD526290D659BD42A1313FE6873FC88F1C78B99603E56FDB89F2C7 + 9419366EBE9FA9B3D85A0BC624F5F36AA1A8947DE6778286682A9F5138C2EB6F + 3E059CCB5EED182E0761D50B352B5A4FA4B1936CE07C8233AA49791BF563D4D8 + 9E6995430E85E11856017655F83E8285EA0D9B19D34FF0E3CE26D8E8D67D01FF + 75F0A20AD185BFFE655A8CB1DFC2F7EB343CAC0F2E339DA7CC5EE59CC367770A + E8C6EADED98EB81AF41E7B16C1B202842E7C834AE275D59B3E451140DD8D4D0E + 1632EA3154DE16284B68F8EA0808D4FF63487F732CB35DE181DCE139EECBE7AB + 8097D7205F6C4119DB6DA25EDB382A8335F68C017BC1F299CFA8218C3AC11F06 + 02F5B3608582B2B49ABD632284E85A07CAFEC928B5260D71FBFBF3003F7543F0 + B6BA3660CC65A5ED49AF42D7501E7C399B706B01E29CD864838360258CC43184 + 84E95A40CBC0A7879AFCD4FFBDFFF178299AA43A6FFEA55B5F2ABC09A42A67F8 + 94FF9340D66778B57CBE4AB89C56FA813751DF5BFDDC8859553F21D115FDB6E1 + 65583FD65D1639DFBC947F55149A00087EAB6A7F46248981DCE1F904A5670B57 + A724A6972DF070A42DCA638F8F7FC3F2EDBBE7A900D552B704C75FEF5F1F7AD8 + 197E7D25F345EED3FD44E6FE8A936AAAE669D06DA011B26FE13850A665E4B1F7 + 5F6064E7D4A10892386966A13C48D15FE9EEA2F4B56012857995B23BF11B1100 + DEABC972D553F043440B79CFFF71B3526D1491B85C7F8289498277A73C7B0C4B + 477FF2A6DEA0881ED2D7F72B7DD52B300E8A615F9324DA5F4005859BD383937E + 587A9F0A07917A1251EBC596B95EBACCB9F8373F1320CCCC06FE8A9E46F6152D + 628222A52D3C7DFC79173E1CD45D043917E9BAF36350E640DF0FB242BFE07D7D + 7D46A7C54241D32E0CABEDD5194168E3AA1FE050DB89EFA2EFA5F53A5B455F75 + EB3E9E1975B0F2CA750E66D17FF359543C3FFD2D7DF24E8E3A9AF7C5EF92644A + 6DE3EB8E0036FD03A0F8D32F5A8269CABFF0F80CD265EB57058E591389D6E8D3 + 16A5354550A5DF50F3987B588FF1284F876D9E8BCE2E9A59C8020269AE1C3990 + 314CEFFE9F23480391627EC0F6679EE7F1124C5928D9E29E2919FF1CC0690640 + 9182BDCF020854436CE048EB9771DF718AE166B187DA5E0AE9B4DD31E5F5935C + EC84C2438A7FAA6046AF64B79C139EAEBDC3578F61C25084E0F241F93EFAC08D + 416E54760381F0B6B0D47E31C09CA874BCAF17018604802DE88DCDC3A7C50226 + 303B6DE274A78ABC159BC74B1412B36F5273A49A6B76E37E7E24F483E28FA014 + 07F67AB53B6F672A9D6E43D26476D2E8B3F205E979F67041657410F2DD51BDB3 + D36C3189694B032EFFEC452DC9B898999034250C79DE916F92669837ACB8FC45 + B79A4B869E590F394592B635FFEAD230FDE50C26548DAC208D4F3EA8157D498B + CA3D4B565C00AC41622F0CE439A217E9D2A4CA6D81DE81DC533254BA65565AFC + 4751F23A5911E707D29F97061397EBF2F1E945A30906E0268557506DB905DF18 + 64C5A837FE416773A9B4AEA374F4411D40C8DAE08D23523BF0F6C5439552C6E0 + 87C1BEB28534BC0EB7B0AB47D288D9F1AB883082321B04D232475EA9FEBE5B12 + F5E6A6D5C9336001F3D8FB3A47FCEA2972D2ED97117BC3A194B1141C74B8762A + D0D0CE8076D3F896239A423358880AB46EA3F8EE0250BB41B1F74E587833DDB5 + 73A0F73F6ED753698257F3F6E7F8FA89C68595D0FA67E6B174FD06162AFB1173 + 6FEAF46FF85898B1C974A93CBE22219675E97E88AC27A2ACCB339CAA4184885E + 0DB15708AE1A31D9DAF20483277E0E3F89B61BE89A5DEC754A7EB50F58520273 + 581862ACC810EE1428CFB3BA3FC7EE26679D5D45D4A87AF4FF8CD901E4AEA9C6 + C6B25DA19AEEEB5CE885BAEA96098CFA09A7EB1D48ED05B8BA2389715983BE90 + 949E03F393514AD8E73BA1E02C1669EA6D17BD07ADF0634DE2CB9127BB04CA42 + D7216F95D7FFFFF7F530223C2BEB915B4C829AB824815254E929D72F71452F19 + 398FFFDDFC7301C1E2D81BEEE3F7E5B153485EFCF7D53D6AA9EAFE2D0FB38C61 + A0B2FC43C9D0BE6154BB12E73E1D8FF51480958F38C5F1AA0D3458764DA237AA + 4D026E619B9936C3FC25C81FE186DBBCAA744E3589557AA060C16745F7AE0AE7 + B8A43B277323F879C1F33F4FD55552050057625FCCD21C92B7B53B08C59DAF3B + F75FE1AAEC65B9E728FD22301821E21ED8751BA52C1A5EC1855F590DEFA41E71 + 604811E0768EFCE102E7749D090E16D48465B5EC5B89A798CC4C948173FC818F + A9F90C6E8147AC4C60EEB99AE8F370486C6291A64503B0BAF1DA06F4A6A70DB7 + 2268DF402FBD1DB5ECA5C6EEBD51793755C955EB179B6EE43BE7D23137EBF1E9 + 96401F349D59FBC8862448550EDFFF906EBD2D3B6579572A36FC51410F1C099C + 9627E18551BE9752A657D2D4A23E7C9D0DB336616362EEF7F408397B16E9E7AE + 4B6BABAC60C1081E3D6746B3D2ED9F7E9FF831427840C89645F4C688807B84D8 + 8FEF8138D40B3078FED56067179D07F99AC71CBB0FD06FEB18A8438FC26F2A56 + 2030C9BC0568B0F224C808363C1A222EFE819078B4FA15B8C49630604239BF5A + 1F8D695306CA8C3B667A32908858F8D20CE255B05CDD6045F67CA0609791611E + 47C1A7F2B46FD61605FE85F85B7E1BB8EC74AF10403F8D7FF34C98E860CCD92E + E0553B1213224D3FC57BE0FF5DA571BDBEF5EF239470910675D38230A2454D16 + 83E18FD4F4758A41CE38C163223FB9D9813018E08EA0FD92240D1D73AA8DF29C + 4E1A72688D3A92A4DDD4E37AA00D6909F9FD4838AF58DE9F3598CD1021824B33 + BCAB32C7BFAB14EC1FEFE224D218B89119798F654A8F7D70FEDCFF9FAD3CD80C + A6D6074C28D7FC1E9F57C7C8BC8036CF1CB3664F062029F1BA273AEFBD6CC8C3 + 83378569D6B770C007D531D7BBADA094E82D56C73CAC1AFF1B344178DA99A311 + CACEE451D0E5776CC171A25807DF937289707CDFD014CC2C34053EFD76DEA6DC + D994AD5D59930773F79D40780CECE8E7A155128BA817A1E834790A79C9275B36 + D86EA72A134C50001C19CD7F7E5834C85522C3FF2280C2693BB9547A735EF08D + E76993150290E22815DA361F4EF17AF24BE5F27D643F4A5C12E31927B962A116 + 941908B5EDE39604582A072E91CC1258737F9FE3F1F622E3BFD4C290F95DD33B + 772BA41E2EE35959D0132AE37892DCF64EC3333986B85A25A6AF4BDE4CE323EF + 09E0C71356F15CB29EC83078B8E54F1AFAAFFB10203EDF2A90157D7C3A95192F + 23F11EF07C2570EE288573CBD027BEF3D176C278271D6C280665AFD9CEEC1603 + 9F5F711698D6C3383382B8E613461B1708808007C4EBE5DE3F4F0E6AD461C86A + 9EBAF204097F8DFF0949E3ADACC6254B911CE1A68FD46B0989CDABD1D291D17A + 8D2C9E14D14784A9EEE22568BC2DE3E3D41B500A11CCCE26916132EC169BA988 + 7EED7EDF81D3AB5E55851C1FC1C22596577699B80A67379FF595592C22B91B5C + A0F90CEB995E2ABC959A5BF6FF619EE3BB154260295E280E91721FF0A0BB0900 + DCA484BA6D557B76E42271BABF09C5201A187D33AF0109A1CEAF541A221411F4 + 518825494A1CDEDBDB9336E376F9D86CDA8E70CB975C2FCE7AA807D59A268499 + 5C4507F21300069B4D29DB5D6FF0D7A87998E3E0CEEB6050C292953ECBFC31D3 + E8CC79092662A3376EE94CFEF8F99A647895601D1487A9968D74DC0670BBFA9D + BB34FDBBECA09C5DC0F6DCE3D8E5CAE00BC2A446229E88CEC8F9ED57724A4B77 + 744384D979A4B72ABA454946EB5214892AA7F8CA81865049386C8D6F56112097 + 753BCC23A4BFFBD505BFD01EF16D1FB787A4C12DBDBB07203DB33EADFBF365AA + 5026D208565DA4B25313375AEA7971215709E48F4BE04FD0C21B7AA14E4ACC29 + DC20658B242E503CADDA6190CE192E1D3AECDB672463E03D0D5BC0FC8E61872A + 69AEFF4BF9A99D87F37084E3FBFCF506AB3B30431666D0F5ECB9A8BDEBED951C + F1785CACC28CB81EEE6C915C8CCE0BE0CE728351DBA7835CC96BA4416093A0C6 + A2FD142941677FB89AF7381A2A1040BC8D9E41C1A0CFCE5BC5F419FC0948343A + 519634915148B633BA5E650FECD185D02571CF1AD4FE3333DB976A552B1A1E54 + 294D9AB8A4B597D1BA4C1A6499DFB3930241EF007E9FDAE7F00015F5B5F002EE + 81590DE5FF72DA51C779921ACDDF563641CC28FD44046C608FFBE547590D685C + 5B915322F0EA261B497BF511A2F0ECEF62D6E4D21E66B6F957D06167E82F8758 + 0DF091EED86A487702A6FAD2093355A2E645F92FB49867C3EB9B0616A7AC50E5 + A257A8C8CB9533267E7BB2828DE2AF6A1BEFF7C019B5C537B396301DACEEA138 + 5A5501190B0370B8D8AFF8109CD046C0370BBC1523A5585018F51883141D185E + 626A3C7A82FEF6194193657667EF38C5C2F71A40ABC0B31D8F7C1302E7289618 + 68A399EAFA40299A1F39D64838899B5E4D22105331953BDE364B4259929B75D9 + 72E660C7AF926A362D3FC9D9A89FC140873874B59B6F5A456CB2B3553FA2645E + 920E3D39275152422C8C5B36AF53EC72F20BD2E944ED3304A56156A8A52DACD5 + FA584020D3FC0DA65CC7C599CC292879D0B11BE52E78E61AEFE105683EB081F0 + D728CB693FDAC067BA234C1D9A54BB6AB99B2617168222AA33F14A9F5B12A5D3 + A279BEB009AA558B42B3CB1FE478A9659CDF7A56718849C6B8822C78099B7ED2 + 0A54879304276ADDAFCCD2F5BB9764C47782B8CBE69B68A714EAC02D5BCA9EDD + 9A75F065C6387A20B19634B7915CBA95EE019614F7B5CDF9D3C9B54C25265560 + 5FB73C9605E41C158D31F2E07023E336C074CBD8492E352C8089D79AB967E5F5 + B37263472A70F73FB75828F209C04ED85878AD9A4A2BE99CB2227B415AA0080D + 5C2E570535D7DCA7C6999836FBB13C52EA3FA270641D2A9D8872624ACF3FFFC2 + DB0F3D4BA6609AB86CB0BA960BA148BE0A6DEB04C7170C6C5703F2036CFD276A + 67794E1365365838B27B13CB9D0D62EC1F4E7742EB86D9BCB1C2BAC2975EE923 + 41065F0596C9690A80E3EA49F71A1E714EF7AD280B3EF9F180A74143A085FE2E + D80C547C9121DF12B5EFF5E9182F9077730B1CE92B8084F70482BB76121F92C4 + 09AB08E983B68A518E932F093C93AFFBAEF81ECC793BC437C0267471F9EBB649 + C82375ACACD96E62DDE83B02336B850E5E1834E613561EC0D254A2F06B656936 + A1E62E0ED1E00AF0460EB0D987E3F16157880F434792CFEA168A493B4C95B2B1 + 6443BE0B4781C03AC5F5D6B44F29C6EA933AC8E1B9FF3497BD8702B1B81B408A + E1BFA95B50950837B00560FF1C8148AA5459E29FA53EA8C0D32F4588120D0FEE + CE170E82DEA29CFCBC43AA5858D459E7668AB1988E363DD45D1039AAFC1BF206 + 4B50352459F5AC62A020C590C26CCCC51249A3D12A9E834957A3FEB9F55F89E1 + EB4EF6C318834A83866CCEEDDAE5A6BDED1BB99A2E3F7BDC79EF13D24B5EC14B + 07761D97EA39341D7ECB360F802B43B42C05271548D6AA68D1CB2B7964B2E693 + A6121813721FB3F53AE74AAC33640EAA0E00F791202E79A38FB1E686058D5FAD + 327E134987BEBFEF85E8D09BB13F3A6C5E8F9FCDB62AF4020FF85CAF0242374B + A21B03A7FD4BE91235B0C727537F670E160189B2DC79979045C7E42C9F1249FE + 8F67550DF7D21A4C9FE75971C1E136767A296D31F7C4BFDCACFCB068AFB0024D + BBADB86E76A9701D5FCB0FAFEEF63C5DE4FD5D01A5E34EB57FE5C26F3514C592 + 323F55A4394250B0C1DBD321D03D2D96447BEF7F5504F02D792EFF8FBC92F2C9 + 1D847DC05D7481BD98A89C698174BAB69C8A20BE9700F1EB8ACFE00B260B778E + EFB1212E8D2E87EBC182FD26C52AF18C76B42DC0C1A846D9093EF9452DBAACD8 + 9E9FD2E729D9F224F7E885C43DE76C4E85CA486FF5BBB687FAB8C3D355CD1B6B + 6660A34AA43866AE10C488FDB587D05CFD500102ECEAD2DE4AB1E5F72B99165A + 00FE3064A8EE313835205519F237EDED6FB8AAC8EFF5FF71B9277193C0F80E39 + 176AC9B659506FAD2F560C74B10C2355573868099F408BAFEDE285B195AB607C + EEF6CF242FAF2627B1E77AB88796962C3A3A915F2D698151689F6A0DE0864E12 + 7D4A188D80F5045BAE65E02DD53628992084A7BBC841FC5968ED9638EF2D0A75 + 4175328E7D0327939BB08674064A4A88F7B978DF49B3FC46D2C2C2109876BE12 + F0C04624A5FCADCD4ED96DCBEACBA004828026295D0FCE816D56582D0A8E82F1 + 751D42076413C180C25824D40EC15D7AA6F694DB2D9B4F1EC0C3B2D64CBFBF60 + 2DFF70490B77DE6DBC28C31A59A63C14256DCE78CAA77CA723C2EABCA8F5CE09 + 71BCE1C4EB463CA18CF809A16B1FB6833DC2354116BBC30E4618F9EFEE2ED826 + 17A1FE8D37CB333A05DA9A8E8A87BD77FBFB4097066AA0E7FDAB05E061D64A54 + AD90AE7912CE1107F46723188DC6AF4D80ADDD8DDC500C3CEBF0B877FE470E5F + F808803B46EB365CDB557371906C341C455D44EDEC31F39608D90FCE24CCBA89 + 9892F1156B5FEC477D0F3DF681A0EA8715C3F5216790338EB539AF2BEFEBD9DD + 07A74D47302202EB142C324420437F8CEEA3B738A51037E9550C01970C29E24A + 029994 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /OCPNFL+Times-Roman findfont /Encoding get + dup 0 /.notdef put + pop + end + /OCPNFL+Times-Roman findfont /Encoding get + dup 0 /.notdef put + dup 32 /space put + dup 40 /parenleft put + dup 41 /parenright put + dup 43 /plus put + dup 46 /period put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 55 /seven put + dup 56 /eight put + dup 57 /nine put + dup 67 /C put + dup 84 /T 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 105 /i put + dup 106 /j 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 120 /x put + dup 121 /y put + dup 122 /z put + pop + %%EndResource + + userdict /pdf_svglb get setglobal + [/N207/OCPNFL+Times-Roman -1 TZG + %%EndPageSetup + 0 0 612 792 re + W + n + 1 0 0 1 133.768 635.136 cm + q + 0.651093 0 0 0.651093 0 0 cm + q + 0 -1 1 0 0 0 cm + q + q + q + 0 0 286 566 re + W + n + q + 0.0999908 0 0 0.0999908 0 0 cm + q + {} settransfer + n + 12.8125 5.99648 2846.4 5644.8 re + [/DeviceGray] cs 1 sc + f + 2.39999 w + 1 J + 1 j + n + 10.4126 3.59662 2848.8 5647.2 re + 0 sc + S + n + 406.413 593.997 1699.2 4944 re + [/DeviceRGB] cs 0.830994 0.838989 0.82399 sc + + eofill + Q + q + n + 1894.41 593.997 m + 1894.41 5538 l + 1896.81 5538 l + 1896.81 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1894.41 593.997 m + 1894.41 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1680.81 593.997 m + 1680.81 5538 l + 1683.21 5538 l + 1683.21 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1680.81 593.997 m + 1680.81 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1469.61 593.997 m + 1469.61 5538 l + 1472.01 5538 l + 1472.01 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1469.61 593.997 m + 1469.61 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1256.01 593.997 m + 1256.01 5538 l + 1258.41 5538 l + 1258.41 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1256.01 593.997 m + 1256.01 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1044.81 593.997 m + 1044.81 5538 l + 1047.21 5538 l + 1047.21 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1044.81 593.997 m + 1044.81 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 831.212 593.997 m + 831.212 5538 l + 833.613 5538 l + 833.613 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 831.212 593.997 m + 831.212 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 620.012 593.997 m + 620.012 5538 l + 622.413 5538 l + 622.413 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 620.012 593.997 m + 620.012 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 406.413 593.997 m + 406.413 5538 l + 408.812 5538 l + 408.812 593.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 406.413 593.997 m + 406.413 5538 l + [/DeviceGray] cs 0 sc + S + Q + q + 9.59999 w + 1 J + n + 406.413 593.997 1699.2 4944 re + [/DeviceRGB] cs 0.591995 0.595993 0.587997 sc + + S + Q + q + n + 1944.81 593.997 m + 1944.81 749.997 l + 2105.61 749.997 l + 2105.61 593.997 l + h + W + n + n + 2016.81 629.997 88.7998 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2016.81 629.997 88.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2031.21 867.597 m + 2031.21 1059.6 l + 2105.61 1059.6 l + 2105.61 867.597 l + h + W + n + n + 2103.21 939.597 2.3999 45.5999 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2103.21 939.597 2.3999 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2031.21 1177.2 m + 2031.21 1369.2 l + 2105.61 1369.2 l + 2105.61 1177.2 l + h + W + n + n + 2103.21 1249.2 2.3999 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2103.21 1249.2 2.3999 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1980.81 1484.4 m + 1980.81 1676.4 l + 2105.61 1676.4 l + 2105.61 1484.4 l + h + W + n + n + 2052.81 1556.4 52.7998 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2052.81 1556.4 52.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 1794 m + 2028.81 1986 l + 2105.61 1986 l + 2105.61 1794 l + h + W + n + n + 2100.81 1866 4.7998 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 1866 4.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1992.81 2103.6 m + 1992.81 2295.6 l + 2105.61 2295.6 l + 2105.61 2103.6 l + h + W + n + n + 2064.81 2175.6 40.7998 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2064.81 2175.6 40.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1476.81 2413.2 m + 1476.81 2605.2 l + 2105.61 2605.2 l + 2105.61 2413.2 l + h + W + n + n + 1548.81 2485.2 556.8 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1548.81 2485.2 556.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2031.21 2720.4 m + 2031.21 2912.4 l + 2105.61 2912.4 l + 2105.61 2720.4 l + h + W + n + n + 2103.21 2792.4 2.3999 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2103.21 2792.4 2.3999 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1968.81 3030 m + 1968.81 3222 l + 2105.61 3222 l + 2105.61 3030 l + h + W + n + n + 2040.81 3102 64.7998 45.5999 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2040.81 3102 64.7998 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 3339.6 m + 2007.21 3531.6 l + 2105.61 3531.6 l + 2105.61 3339.6 l + h + W + n + n + 2079.21 3411.6 26.3999 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 3411.6 26.3999 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1940.01 3649.2 m + 1940.01 3841.2 l + 2105.61 3841.2 l + 2105.61 3649.2 l + h + W + n + n + 2012.01 3721.2 93.5999 45.5999 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2012.01 3721.2 93.5999 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1808.01 3956.4 m + 1808.01 4148.4 l + 2105.61 4148.4 l + 2105.61 3956.4 l + h + W + n + n + 1880.01 4028.4 225.6 45.5999 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1880.01 4028.4 225.6 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1925.61 4266 m + 1925.61 4458 l + 2105.61 4458 l + 2105.61 4266 l + h + W + n + n + 1997.61 4338 108 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1997.61 4338 108 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1918.41 4575.6 m + 1918.41 4767.6 l + 2105.61 4767.6 l + 2105.61 4575.6 l + h + W + n + n + 1990.41 4647.6 115.2 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1990.41 4647.6 115.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 4885.2 m + 2028.81 5077.2 l + 2105.61 5077.2 l + 2105.61 4885.2 l + h + W + n + n + 2100.81 4957.2 4.7998 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 4957.2 4.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1959.21 5192.4 m + 1959.21 5384.4 l + 2105.61 5384.4 l + 2105.61 5192.4 l + h + W + n + n + 2031.21 5264.4 74.3999 45.6001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2031.21 5264.4 74.3999 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1606.41 605.997 m + 1606.41 797.997 l + 2105.61 797.997 l + 2105.61 605.997 l + h + W + n + n + 1678.41 677.997 427.2 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1678.41 677.997 427.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 915.597 m + 2024.01 1107.6 l + 2105.61 1107.6 l + 2105.61 915.597 l + h + W + n + n + 2096.01 987.597 9.59985 45.5999 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 987.597 9.59985 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2009.61 1225.2 m + 2009.61 1414.8 l + 2105.61 1414.8 l + 2105.61 1225.2 l + h + W + n + n + 2081.61 1297.2 24 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2081.61 1297.2 24 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1820.01 1532.4 m + 1820.01 1724.4 l + 2105.61 1724.4 l + 2105.61 1532.4 l + h + W + n + n + 1892.01 1604.4 213.6 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1892.01 1604.4 213.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2002.41 1842 m + 2002.41 2034 l + 2105.61 2034 l + 2105.61 1842 l + h + W + n + n + 2074.41 1914 31.2 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2074.41 1914 31.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1841.61 2151.6 m + 1841.61 2343.6 l + 2105.61 2343.6 l + 2105.61 2151.6 l + h + W + n + n + 1913.61 2223.6 192 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1913.61 2223.6 192 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 440.012 2461.2 m + 440.012 2650.8 l + 2105.61 2650.8 l + 2105.61 2461.2 l + h + W + n + n + 512.012 2533.2 1593.6 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 512.012 2533.2 1593.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2021.61 2768.4 m + 2021.61 2960.4 l + 2105.61 2960.4 l + 2105.61 2768.4 l + h + W + n + n + 2093.61 2840.4 12 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2093.61 2840.4 12 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1784.01 3078 m + 1784.01 3270 l + 2105.61 3270 l + 2105.61 3078 l + h + W + n + n + 1856.01 3150 249.6 45.5999 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1856.01 3150 249.6 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1942.41 3387.6 m + 1942.41 3579.6 l + 2105.61 3579.6 l + 2105.61 3387.6 l + h + W + n + n + 2014.41 3459.6 91.2001 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2014.41 3459.6 91.2001 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1505.61 3697.2 m + 1505.61 3886.8 l + 2105.61 3886.8 l + 2105.61 3697.2 l + h + W + n + n + 1577.61 3769.2 528 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1577.61 3769.2 528 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1428.81 4004.4 m + 1428.81 4196.4 l + 2105.61 4196.4 l + 2105.61 4004.4 l + h + W + n + n + 1500.81 4076.4 604.8 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1500.81 4076.4 604.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1587.21 4314 m + 1587.21 4506 l + 2105.61 4506 l + 2105.61 4314 l + h + W + n + n + 1659.21 4386 446.4 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1659.21 4386 446.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1599.21 4623.6 m + 1599.21 4815.6 l + 2105.61 4815.6 l + 2105.61 4623.6 l + h + W + n + n + 1671.21 4695.6 434.4 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1671.21 4695.6 434.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2009.61 4933.2 m + 2009.61 5122.8 l + 2105.61 5122.8 l + 2105.61 4933.2 l + h + W + n + n + 2081.61 5005.2 24 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2081.61 5005.2 24 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1793.61 5240.4 m + 1793.61 5432.4 l + 2105.61 5432.4 l + 2105.61 5240.4 l + h + W + n + n + 1865.61 5312.4 240 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1865.61 5312.4 240 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1647.21 653.997 m + 1647.21 843.597 l + 2105.61 843.597 l + 2105.61 653.997 l + h + W + n + n + 1719.21 725.997 386.4 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1719.21 725.997 386.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 963.597 m + 2024.01 1153.2 l + 2105.61 1153.2 l + 2105.61 963.597 l + h + W + n + n + 2096.01 1035.6 9.59985 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 1035.6 9.59985 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 1270.8 m + 2007.21 1462.8 l + 2105.61 1462.8 l + 2105.61 1270.8 l + h + W + n + n + 2079.21 1342.8 26.3999 45.5999 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 1342.8 26.3999 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1817.61 1580.4 m + 1817.61 1770 l + 2105.61 1770 l + 2105.61 1580.4 l + h + W + n + n + 1889.61 1652.4 216 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1889.61 1652.4 216 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2009.61 1890 m + 2009.61 2079.6 l + 2105.61 2079.6 l + 2105.61 1890 l + h + W + n + n + 2081.61 1962 24 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2081.61 1962 24 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1860.81 2199.6 m + 1860.81 2389.2 l + 2105.61 2389.2 l + 2105.61 2199.6 l + h + W + n + n + 1932.81 2271.6 172.8 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1932.81 2271.6 172.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 588.812 2506.8 m + 588.812 2698.8 l + 2105.61 2698.8 l + 2105.61 2506.8 l + h + W + n + n + 660.812 2578.8 1444.8 45.5999 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 660.812 2578.8 1444.8 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2021.61 2816.4 m + 2021.61 3006 l + 2105.61 3006 l + 2105.61 2816.4 l + h + W + n + n + 2093.61 2888.4 12 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2093.61 2888.4 12 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1820.01 3126 m + 1820.01 3315.6 l + 2105.61 3315.6 l + 2105.61 3126 l + h + W + n + n + 1892.01 3198 213.6 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1892.01 3198 213.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1954.41 3435.6 m + 1954.41 3625.2 l + 2105.61 3625.2 l + 2105.61 3435.6 l + h + W + n + n + 2026.41 3507.6 79.2001 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2026.41 3507.6 79.2001 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1517.61 3742.8 m + 1517.61 3934.8 l + 2105.61 3934.8 l + 2105.61 3742.8 l + h + W + n + n + 1589.61 3814.8 516 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1589.61 3814.8 516 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1486.41 4052.4 m + 1486.41 4242 l + 2105.61 4242 l + 2105.61 4052.4 l + h + W + n + n + 1558.41 4124.4 547.2 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1558.41 4124.4 547.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1623.21 4362 m + 1623.21 4551.6 l + 2105.61 4551.6 l + 2105.61 4362 l + h + W + n + n + 1695.21 4434 410.4 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1695.21 4434 410.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1616.01 4671.6 m + 1616.01 4861.2 l + 2105.61 4861.2 l + 2105.61 4671.6 l + h + W + n + n + 1688.01 4743.6 417.6 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1688.01 4743.6 417.6 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2012.01 4978.8 m + 2012.01 5170.8 l + 2105.61 5170.8 l + 2105.61 4978.8 l + h + W + n + n + 2084.01 5050.8 21.5999 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2084.01 5050.8 21.5999 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1805.61 5288.4 m + 1805.61 5478 l + 2105.61 5478 l + 2105.61 5288.4 l + h + W + n + n + 1877.61 5360.4 228 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1877.61 5360.4 228 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1712.01 699.597 m + 1712.01 891.597 l + 2105.61 891.597 l + 2105.61 699.597 l + h + W + n + n + 1784.01 771.597 321.6 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1784.01 771.597 321.6 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 1009.2 m + 2026.41 1201.2 l + 2105.61 1201.2 l + 2105.61 1009.2 l + h + W + n + n + 2098.41 1081.2 7.19995 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 1081.2 7.19995 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1318.8 m + 2016.81 1508.4 l + 2105.61 1508.4 l + 2105.61 1318.8 l + h + W + n + n + 2088.81 1390.8 16.7998 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1390.8 16.7998 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1860.81 1626 m + 1860.81 1818 l + 2105.61 1818 l + 2105.61 1626 l + h + W + n + n + 1932.81 1698 172.8 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1932.81 1698 172.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2014.41 1935.6 m + 2014.41 2127.6 l + 2105.61 2127.6 l + 2105.61 1935.6 l + h + W + n + n + 2086.41 2007.6 19.2 45.6 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2086.41 2007.6 19.2 45.6 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1868.01 2245.2 m + 1868.01 2437.2 l + 2105.61 2437.2 l + 2105.61 2245.2 l + h + W + n + n + 1940.01 2317.2 165.6 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1940.01 2317.2 165.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 888.812 2554.8 m + 888.812 2744.4 l + 2105.61 2744.4 l + 2105.61 2554.8 l + h + W + n + n + 960.812 2626.8 1144.8 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 960.812 2626.8 1144.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 2862 m + 2024.01 3054 l + 2105.61 3054 l + 2105.61 2862 l + h + W + n + n + 2096.01 2934 9.59985 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 2934 9.59985 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1820.01 3171.6 m + 1820.01 3363.6 l + 2105.61 3363.6 l + 2105.61 3171.6 l + h + W + n + n + 1892.01 3243.6 213.6 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1892.01 3243.6 213.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1973.61 3481.2 m + 1973.61 3673.2 l + 2105.61 3673.2 l + 2105.61 3481.2 l + h + W + n + n + 2045.61 3553.2 59.9999 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2045.61 3553.2 59.9999 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1517.61 3790.8 m + 1517.61 3980.4 l + 2105.61 3980.4 l + 2105.61 3790.8 l + h + W + n + n + 1589.61 3862.8 516 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1589.61 3862.8 516 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1568.01 4098 m + 1568.01 4290 l + 2105.61 4290 l + 2105.61 4098 l + h + W + n + n + 1640.01 4170 465.6 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1640.01 4170 465.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1712.01 4407.6 m + 1712.01 4599.6 l + 2105.61 4599.6 l + 2105.61 4407.6 l + h + W + n + n + 1784.01 4479.6 321.6 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1784.01 4479.6 321.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1661.61 4717.2 m + 1661.61 4909.2 l + 2105.61 4909.2 l + 2105.61 4717.2 l + h + W + n + n + 1733.61 4789.2 372 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1733.61 4789.2 372 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 5026.8 m + 2019.21 5216.4 l + 2105.61 5216.4 l + 2105.61 5026.8 l + h + W + n + n + 2091.21 5098.8 14.3999 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 5098.8 14.3999 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1848.81 5334 m + 1848.81 5526 l + 2105.61 5526 l + 2105.61 5334 l + h + W + n + n + 1920.81 5406 184.8 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1920.81 5406 184.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1731.21 747.597 m + 1731.21 939.597 l + 2105.61 939.597 l + 2105.61 747.597 l + h + W + n + n + 1803.21 819.597 302.4 45.5999 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1803.21 819.597 302.4 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 1057.2 m + 2026.41 1249.2 l + 2105.61 1249.2 l + 2105.61 1057.2 l + h + W + n + n + 2098.41 1129.2 7.19995 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 1129.2 7.19995 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2014.41 1364.4 m + 2014.41 1556.4 l + 2105.61 1556.4 l + 2105.61 1364.4 l + h + W + n + n + 2086.41 1436.4 19.2 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2086.41 1436.4 19.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1863.21 1674 m + 1863.21 1866 l + 2105.61 1866 l + 2105.61 1674 l + h + W + n + n + 1935.21 1746 170.4 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1935.21 1746 170.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2014.41 1983.6 m + 2014.41 2175.6 l + 2105.61 2175.6 l + 2105.61 1983.6 l + h + W + n + n + 2086.41 2055.6 19.2 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2086.41 2055.6 19.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1884.81 2293.2 m + 1884.81 2485.2 l + 2105.61 2485.2 l + 2105.61 2293.2 l + h + W + n + n + 1956.81 2365.2 148.8 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1956.81 2365.2 148.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 915.212 2600.4 m + 915.212 2792.4 l + 2105.61 2792.4 l + 2105.61 2600.4 l + h + W + n + n + 987.212 2672.4 1118.4 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 987.212 2672.4 1118.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 2910 m + 2026.41 3102 l + 2105.61 3102 l + 2105.61 2910 l + h + W + n + n + 2098.41 2982 7.19995 45.5999 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 2982 7.19995 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1884.81 3219.6 m + 1884.81 3411.6 l + 2105.61 3411.6 l + 2105.61 3219.6 l + h + W + n + n + 1956.81 3291.6 148.8 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1956.81 3291.6 148.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1976.01 3529.2 m + 1976.01 3721.2 l + 2105.61 3721.2 l + 2105.61 3529.2 l + h + W + n + n + 2048.01 3601.2 57.5999 45.5999 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2048.01 3601.2 57.5999 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1536.81 3836.4 m + 1536.81 4028.4 l + 2105.61 4028.4 l + 2105.61 3836.4 l + h + W + n + n + 1608.81 3908.4 496.8 45.5999 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1608.81 3908.4 496.8 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1594.41 4146 m + 1594.41 4338 l + 2105.61 4338 l + 2105.61 4146 l + h + W + n + n + 1666.41 4218 439.2 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1666.41 4218 439.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1719.21 4455.6 m + 1719.21 4647.6 l + 2105.61 4647.6 l + 2105.61 4455.6 l + h + W + n + n + 1791.21 4527.6 314.4 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1791.21 4527.6 314.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1671.21 4765.2 m + 1671.21 4957.2 l + 2105.61 4957.2 l + 2105.61 4765.2 l + h + W + n + n + 1743.21 4837.2 362.4 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1743.21 4837.2 362.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 5072.4 m + 2019.21 5264.4 l + 2105.61 5264.4 l + 2105.61 5072.4 l + h + W + n + n + 2091.21 5144.4 14.3999 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 5144.4 14.3999 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1860.81 5382 m + 1860.81 5557.2 l + 2105.61 5557.2 l + 2105.61 5382 l + h + W + n + n + 1932.81 5454 172.8 45.6001 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1932.81 5454 172.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + 2.39999 w + 1 J + n + 406.413 593.997 m + 2105.61 593.997 l + [/DeviceGray] cs 0 sc + S + n + 2105.61 545.997 m + 2105.61 593.997 l + S + n + 1894.41 545.997 m + 1894.41 593.997 l + S + n + 1680.81 545.997 m + 1680.81 593.997 l + S + n + 1469.61 545.997 m + 1469.61 593.997 l + S + n + 1256.01 545.997 m + 1256.01 593.997 l + S + n + 1044.81 545.997 m + 1044.81 593.997 l + S + n + 831.212 545.997 m + 831.212 593.997 l + S + n + 620.012 545.997 m + 620.012 593.997 l + S + n + 406.413 545.997 m + 406.413 593.997 l + S + n + 2105.61 593.997 m + 2105.61 5538 l + S + n + 2134.41 593.997 m + 2105.61 593.997 l + S + n + 2134.41 903.597 m + 2105.61 903.597 l + S + n + 2134.41 1213.2 m + 2105.61 1213.2 l + S + n + 2134.41 1520.4 m + 2105.61 1520.4 l + S + n + 2134.41 1830 m + 2105.61 1830 l + S + n + 2134.41 2139.6 m + 2105.61 2139.6 l + S + n + 2134.41 2449.2 m + 2105.61 2449.2 l + S + n + 2134.41 2756.4 m + 2105.61 2756.4 l + S + n + 2134.41 3066 m + 2105.61 3066 l + S + n + 2134.41 3375.6 m + 2105.61 3375.6 l + S + n + 2134.41 3685.2 m + 2105.61 3685.2 l + S + n + 2134.41 3992.4 m + 2105.61 3992.4 l + S + n + 2134.41 4302 m + 2105.61 4302 l + S + n + 2134.41 4611.6 m + 2105.61 4611.6 l + S + n + 2134.41 4921.2 m + 2105.61 4921.2 l + S + n + 2134.41 5228.4 m + 2105.61 5228.4 l + S + n + 2134.41 5538 m + 2105.61 5538 l + S + q + 10 0 0 10 0 0 cm + q + Q + 24.8012 249 m + /N207 [0 12 -12 0 0 0] Tf + (C) show + 24.8012 256.92 m + (o) show + 24.8012 263.159 m + (m) show + 24.8012 272.038 m + (p) show + 24.8012 278.038 m + (i) show + 24.8012 280.918 m + (l) show + 24.8012 283.798 m + (e) show + 24.8012 292.198 m + (T) show + 24.8012 299.637 m + (i) show + 24.8012 302.517 m + (m) show + 24.8012 311.396 m + (e) show + 215.601 40.1997 m + /N207 [0 15.36 -15.36 0 0 0] Tf + (0) show + 194.481 32.5204 m + (1) show + 194.481 40.2004 m + (0) show + 173.122 32.5204 m + (2) show + 173.122 40.2004 m + (0) show + 152.002 32.5204 m + (3) show + 152.002 40.2004 m + (0) show + 130.642 32.5204 m + (4) show + 130.642 40.2004 m + (0) show + 109.522 32.5204 m + (5) show + 109.522 40.2004 m + (0) show + 88.1628 32.5204 m + (6) show + 88.1628 40.2004 m + (0) show + 67.0428 32.5204 m + (7) show + 67.0428 40.2004 m + (0) show + 45.6833 32.5204 m + (8) show + 45.6833 40.2004 m + (0) show + 250.881 47.3997 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 247.521 50.5197 m + (7) show + 244.401 53.6397 m + (7) show + 241.041 56.9997 m + (.) show + 239.601 58.6796 m + (m) show + 234.561 63.7196 m + (e) show + 231.681 66.3596 m + (s) show + 229.041 68.9996 m + (a) show + 244.641 84.5996 m + (1) show + 241.281 87.7196 m + (7) show + 238.161 90.8396 m + (9) show + 234.801 94.1996 m + (.) show + 233.361 95.8795 m + (a) show + 230.481 98.7595 m + (r) show + 228.321 100.679 m + (t) show + 255.921 104.279 m + (1) show + 252.561 107.399 m + (8) show + 249.441 110.519 m + (3) show + 246.081 113.879 m + (.) show + 244.641 115.559 m + (e) show + 241.761 118.439 m + (q) show + 238.401 121.559 m + (u) show + 235.281 124.679 m + (a) show + 232.401 127.559 m + (k) show + 229.041 130.919 m + (e) show + 253.521 137.639 m + (1) show + 250.161 140.759 m + (8) show + 247.041 143.879 m + (8) show + 243.681 147.239 m + (.) show + 242.241 148.919 m + (a) show + 239.361 151.799 m + (m) show + 234.321 156.599 m + (m) show + 229.281 161.639 m + (p) show + Q + Q + q + n + 2187.21 1662 m + 2187.21 1983.6 l + 2511.21 1983.6 l + 2511.21 1662 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 248.481 173.4 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 245.121 176.52 m + (6) show + 242.001 179.64 m + (4) show + 238.641 183 m + (.) show + 237.201 184.68 m + (g) show + 233.841 187.8 m + (z) show + 230.961 190.68 m + (i) show + 229.281 192.36 m + (p) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 246.081 206.76 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 242.721 209.88 m + (7) show + 239.601 213 m + (5) show + 236.241 216.36 m + (.) show + 234.801 218.04 m + (v) show + 231.441 221.16 m + (p) show + 228.321 224.28 m + (r) show + Q + Q + q + n + 2184.81 2305.2 m + 2184.81 2602.8 l + 2487.21 2602.8 l + 2487.21 2305.2 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 246.081 237.72 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 242.721 240.84 m + (7) show + 239.601 243.96 m + (6) show + 236.241 247.32 m + (.) show + 234.801 249 m + (g) show + 231.441 252.12 m + (c) show + 228.561 255 m + (c) show + Q + Q + q + n + 2180.01 2602.8 m + 2180.01 2912.4 l + 2499.21 2912.4 l + 2499.21 2602.8 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 247.281 267.48 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 243.921 270.6 m + (8) show + 240.801 273.72 m + (1) show + 237.441 277.08 m + (.) show + 236.001 278.76 m + (m) show + 230.961 283.8 m + (c) show + 228.081 286.44 m + (f) show + Q + Q + q + n + 2187.21 2859.6 m + 2187.21 3219.6 l + 2549.61 3219.6 l + 2549.61 2859.6 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 252.321 293.16 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 248.961 296.28 m + (8) show + 245.841 299.4 m + (6) show + 242.481 302.76 m + (.) show + 241.041 304.44 m + (c) show + 238.161 307.32 m + (r) show + 236.001 309.24 m + (a) show + 233.121 312.12 m + (f) show + 230.961 314.28 m + (t) show + 229.041 316.2 m + (y) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 253.521 322.92 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 250.161 326.04 m + (9) show + 247.041 329.16 m + (7) show + 243.681 332.52 m + (.) show + 242.241 334.2 m + (p) show + 238.881 337.32 m + (a) show + 236.001 340.2 m + (r) show + 233.841 342.36 m + (s) show + 231.441 344.76 m + (e) show + 228.561 347.64 m + (r) show + 246.801 360.6 m + (2) show + 243.441 363.72 m + (5) show + 240.321 366.84 m + (2) show + 236.961 370.2 m + (.) show + 235.521 371.88 m + (e) show + 232.641 374.76 m + (o) show + 229.281 377.88 m + (n) show + 259.281 379.08 m + (2) show + 255.921 382.2 m + (5) show + 252.801 385.32 m + (3) show + 249.441 388.68 m + (.) show + 248.001 390.36 m + (p) show + 244.641 393.48 m + (e) show + 241.761 396.36 m + (r) show + 239.601 398.52 m + (l) show + 237.921 400.2 m + (b) show + 234.561 403.56 m + (m) show + 229.521 408.6 m + (k) show + 246.801 422.28 m + (2) show + 243.441 425.4 m + (5) show + 240.321 428.52 m + (4) show + 236.961 431.88 m + (.) show + 235.521 433.56 m + (g) show + 232.161 436.68 m + (a) show + 229.281 439.56 m + (p) show + 254.001 446.04 m + (2) show + 250.641 449.16 m + (5) show + 247.521 452.28 m + (5) show + 244.161 455.64 m + (.) show + 242.722 457.32 m + (v) show + 239.362 460.44 m + (o) show + 236.242 463.56 m + (r) show + 234.082 465.719 m + (t) show + 232.162 467.639 m + (e) show + 229.282 470.519 m + (x) show + 251.842 479.159 m + (2) show + 248.482 482.279 m + (5) show + 245.362 485.399 m + (6) show + 242.002 488.759 m + (.) show + 240.562 490.439 m + (b) show + 237.202 493.559 m + (z) show + 234.322 496.439 m + (i) show + 232.642 498.119 m + (p) show + 229.282 501.479 m + (2) show + Q + Q + q + n + 2182.41 5036.4 m + 2182.41 5384.4 l + 2537.61 5384.4 l + 2537.61 5036.4 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 251.121 510.84 m + /N207 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (3) show + 247.761 513.96 m + (0) show + 244.641 517.08 m + (0) show + 241.281 520.44 m + (.) show + 239.841 522.12 m + (t) show + 237.921 523.8 m + (w) show + 233.361 528.36 m + (o) show + 230.001 531.72 m + (l) show + 228.321 533.4 m + (f) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 155.841 22.4397 m + /N207 -13.92 Tf + (t) show + 152.001 22.4397 m + (i) show + 148.161 22.4397 m + (m) show + 137.361 22.4397 m + (e) show + 127.521 22.4397 m + (\() show + 122.961 22.4397 m + (s) show + 117.441 22.4397 m + (e) show + 111.201 22.4397 m + (c) show + 104.961 22.4397 m + (s) show + 99.4411 22.4397 m + (\)) show + Q + n + 2628.81 1825.2 144 2424 re + [/DeviceGray] cs 1 sc + f + 2.39999 w + 1 J + n + 2626.41 1822.8 146.4 2426.4 re + 0 sc + S + Q + q + n + 2628.81 1825.2 m + 2628.81 1983.6 l + 2770.41 1983.6 l + 2770.41 1825.2 l + h + W + n + n + 2669.61 1854 55.2002 55.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 1854 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 272.961 193.32 m + /N207 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 195.96 m + (o) show + 272.961 200.279 m + (c) show + 272.961 204.119 m + (a) show + 272.961 208.198 m + (l) show + Q + Q + q + n + 2628.81 2082 m + 2628.81 2283.6 l + 2770.41 2283.6 l + 2770.41 2082 l + h + W + n + n + 2669.61 2154 55.2002 55.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 2154 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 272.961 223.32 m + /N207 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 225.96 m + (i) show + 272.961 228.599 m + (n) show + 272.961 233.159 m + (e) show + 272.961 237.239 m + (a) show + 272.961 241.318 m + (r) show + 272.961 246.838 m + (s) show + 272.961 250.437 m + (c) show + 272.961 254.277 m + (a) show + 272.961 258.357 m + (n) show + Q + Q + q + n + 2628.81 2602.8 m + 2628.81 2804.4 l + 2770.41 2804.4 l + 2770.41 2602.8 l + h + W + n + n + 2669.61 2674.8 55.2002 55.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 2674.8 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 272.961 275.4 m + /N207 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 278.04 m + (s) show + 272.961 281.639 m + (+) show + 272.961 286.679 m + (m) show + 272.961 293.638 m + (e) show + 272.961 297.718 m + (m) show + 272.961 304.677 m + (o) show + 272.961 308.997 m + (p) show + Q + Q + q + n + 2628.81 3109.2 m + 2628.81 3310.8 l + 2770.41 3310.8 l + 2770.41 3109.2 l + h + W + n + n + 2669.61 3181.2 55.2002 55.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 3181.2 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 272.961 326.04 m + /N207 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 328.68 m + (s) show + 272.961 332.279 m + (+) show + 272.961 337.319 m + (j) show + 272.961 339.959 m + (o) show + 272.961 344.278 m + (i) show + 272.961 346.918 m + (n) show + Q + Q + q + n + 2628.81 3488.4 m + 2628.81 3690 l + 2770.41 3690 l + 2770.41 3488.4 l + h + W + n + n + 2669.61 3560.4 55.2002 55.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 3560.4 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 272.961 363.96 m + /N207 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 366.6 m + (s) show + 272.961 370.199 m + (+) show + 272.961 375.239 m + (j) show + 272.961 377.879 m + (o) show + 272.961 382.198 m + (i) show + 272.961 384.838 m + (n) show + 272.961 389.397 m + (+) show + 272.961 394.437 m + (m) show + 272.961 401.396 m + (e) show + 272.961 405.476 m + (m) show + 272.961 412.435 m + (o) show + 272.961 416.755 m + (p) show + Q + 2.39999 w + 1 J + n + 10.4126 3.59662 2848.8 5647.2 re + [/DeviceGray] cs 0 sc + S + Q + Q + Q + Q + Q + Q + Q + 1 0 0 1 -133.768 -635.136 cm + [/DeviceGray] cs 0 sc + 251.438 431.046 m + /N74 9.963 Tf + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (7) show + (:C) + [7.20325 7.19329 ] pdfxs + (o) show + (mpileTime.) + [8.2991 5.53942 2.75975 2.76971 7.75121 7.19329 2.76971 8.2991 4.43354 2.76971 ] pdfxs + 1 0 0 1 133.768 357.014 cm + q + 0.649887 0 0 0.649887 0 0 cm + q + 0 -1 1 0 0 0 cm + q + q + q + 0 0 286 567 re + W + n + q + 0.0999908 0 0 0.0999908 0 0 cm + q + {} settransfer + n + 12.8125 5.99648 2839.2 5654.4 re + 1 sc + f + 2.39999 w + 1 J + 1 j + n + 10.4126 3.59662 2841.6 5656.8 re + 0 sc + S + n + 387.212 920.397 1711.2 4627.2 re + [/DeviceRGB] cs 0.830994 0.838989 0.82399 sc + + eofill + Q + q + n + 1884.81 920.397 m + 1884.81 5547.6 l + 1887.21 5547.6 l + 1887.21 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1884.81 920.397 m + 1884.81 5547.6 l + S + Q + q + n + 1671.21 920.397 m + 1671.21 5547.6 l + 1673.61 5547.6 l + 1673.61 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1671.21 920.397 m + 1671.21 5547.6 l + S + Q + q + n + 1457.61 920.397 m + 1457.61 5547.6 l + 1460.01 5547.6 l + 1460.01 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1457.61 920.397 m + 1457.61 5547.6 l + S + Q + q + n + 1244.01 920.397 m + 1244.01 5547.6 l + 1246.41 5547.6 l + 1246.41 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1244.01 920.397 m + 1244.01 5547.6 l + S + Q + q + n + 1028.01 920.397 m + 1028.01 5547.6 l + 1030.41 5547.6 l + 1030.41 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1028.01 920.397 m + 1028.01 5547.6 l + S + Q + q + n + 814.413 920.397 m + 814.413 5547.6 l + 816.812 5547.6 l + 816.812 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 814.413 920.397 m + 814.413 5547.6 l + S + Q + q + n + 600.812 920.397 m + 600.812 5547.6 l + 603.212 5547.6 l + 603.212 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 600.812 920.397 m + 600.812 5547.6 l + S + Q + q + n + 387.212 920.397 m + 387.212 5547.6 l + 389.613 5547.6 l + 389.613 920.397 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 387.212 920.397 m + 387.212 5547.6 l + S + Q + q + 9.59999 w + 1 J + n + 387.212 920.397 1711.2 4627.2 re + [/DeviceRGB] cs 0.591995 0.595993 0.587997 sc + + S + Q + q + n + 1546.41 920.397 m + 1546.41 1071.6 l + 2098.41 1071.6 l + 2098.41 920.397 l + h + W + n + n + 1618.41 953.997 480 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1618.41 953.997 480 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1172.4 m + 2016.81 1359.6 l + 2098.41 1359.6 l + 2098.41 1172.4 l + h + W + n + n + 2088.81 1244.4 9.59985 40.7999 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1244.4 9.59985 40.7999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1460.4 m + 2016.81 1650 l + 2098.41 1650 l + 2098.41 1460.4 l + h + W + n + n + 2088.81 1532.4 9.59985 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1532.4 9.59985 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1925.61 1750.8 m + 1925.61 1938 l + 2098.41 1938 l + 2098.41 1750.8 l + h + W + n + n + 1997.61 1822.8 100.8 40.8 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1997.61 1822.8 100.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1992.81 2038.8 m + 1992.81 2228.4 l + 2098.41 2228.4 l + 2098.41 2038.8 l + h + W + n + n + 2064.81 2110.8 33.5999 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2064.81 2110.8 33.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1889.61 2329.2 m + 1889.61 2516.4 l + 2098.41 2516.4 l + 2098.41 2329.2 l + h + W + n + n + 1961.61 2401.2 136.8 40.8 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1961.61 2401.2 136.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 526.413 2617.2 m + 526.413 2806.8 l + 2098.41 2806.8 l + 2098.41 2617.2 l + h + W + n + n + 598.413 2689.2 1500 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 598.413 2689.2 1500 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 2907.6 m + 2016.81 3094.8 l + 2098.41 3094.8 l + 2098.41 2907.6 l + h + W + n + n + 2088.81 2979.6 9.59985 40.8 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 2979.6 9.59985 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1822.41 3195.6 m + 1822.41 3385.2 l + 2098.41 3385.2 l + 2098.41 3195.6 l + h + W + n + n + 1894.41 3267.6 204 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1894.41 3267.6 204 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1930.41 3486 m + 1930.41 3673.2 l + 2098.41 3673.2 l + 2098.41 3486 l + h + W + n + n + 2002.41 3558 96.0001 40.7998 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2002.41 3558 96.0001 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1589.61 3774 m + 1589.61 3963.6 l + 2098.41 3963.6 l + 2098.41 3774 l + h + W + n + n + 1661.61 3846 436.8 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1661.61 3846 436.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1325.61 4064.4 m + 1325.61 4251.6 l + 2098.41 4251.6 l + 2098.41 4064.4 l + h + W + n + n + 1397.61 4136.4 700.8 40.7998 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1397.61 4136.4 700.8 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1505.61 4352.4 m + 1505.61 4542 l + 2098.41 4542 l + 2098.41 4352.4 l + h + W + n + n + 1577.61 4424.4 520.8 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1577.61 4424.4 520.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1671.21 4642.8 m + 1671.21 4830 l + 2098.41 4830 l + 2098.41 4642.8 l + h + W + n + n + 1743.21 4714.8 355.2 40.7998 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1743.21 4714.8 355.2 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2002.41 4930.8 m + 2002.41 5120.4 l + 2098.41 5120.4 l + 2098.41 4930.8 l + h + W + n + n + 2074.41 5002.8 24 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2074.41 5002.8 24 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1827.21 5221.2 m + 1827.21 5408.4 l + 2098.41 5408.4 l + 2098.41 5221.2 l + h + W + n + n + 1899.21 5293.2 199.2 40.7998 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1899.21 5293.2 199.2 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1589.61 927.597 m + 1589.61 1114.8 l + 2098.41 1114.8 l + 2098.41 927.597 l + h + W + n + n + 1661.61 999.597 436.8 40.8 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1661.61 999.597 436.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1215.6 m + 2016.81 1405.2 l + 2098.41 1405.2 l + 2098.41 1215.6 l + h + W + n + n + 2088.81 1287.6 9.59985 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1287.6 9.59985 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1506 m + 2016.81 1693.2 l + 2098.41 1693.2 l + 2098.41 1506 l + h + W + n + n + 2088.81 1578 9.59985 40.8 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1578 9.59985 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1937.61 1794 m + 1937.61 1983.6 l + 2098.41 1983.6 l + 2098.41 1794 l + h + W + n + n + 2009.61 1866 88.7999 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2009.61 1866 88.7999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1997.61 2084.4 m + 1997.61 2271.6 l + 2098.41 2271.6 l + 2098.41 2084.4 l + h + W + n + n + 2069.61 2156.4 28.8 40.8 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2069.61 2156.4 28.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1901.61 2372.4 m + 1901.61 2562 l + 2098.41 2562 l + 2098.41 2372.4 l + h + W + n + n + 1973.61 2444.4 124.8 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1973.61 2444.4 124.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 764.012 2662.8 m + 764.012 2850 l + 2098.41 2850 l + 2098.41 2662.8 l + h + W + n + n + 836.012 2734.8 1262.4 40.7998 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 836.012 2734.8 1262.4 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 2950.8 m + 2019.21 3140.4 l + 2098.41 3140.4 l + 2098.41 2950.8 l + h + W + n + n + 2091.21 3022.8 7.19995 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 3022.8 7.19995 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1832.01 3241.2 m + 1832.01 3428.4 l + 2098.41 3428.4 l + 2098.41 3241.2 l + h + W + n + n + 1904.01 3313.2 194.4 40.8 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1904.01 3313.2 194.4 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1944.81 3529.2 m + 1944.81 3718.8 l + 2098.41 3718.8 l + 2098.41 3529.2 l + h + W + n + n + 2016.81 3601.2 81.5999 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2016.81 3601.2 81.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1637.61 3819.6 m + 1637.61 4006.8 l + 2098.41 4006.8 l + 2098.41 3819.6 l + h + W + n + n + 1709.61 3891.6 388.8 40.8 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1709.61 3891.6 388.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1436.01 4107.6 m + 1436.01 4297.2 l + 2098.41 4297.2 l + 2098.41 4107.6 l + h + W + n + n + 1508.01 4179.6 590.4 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1508.01 4179.6 590.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1570.41 4398 m + 1570.41 4585.2 l + 2098.41 4585.2 l + 2098.41 4398 l + h + W + n + n + 1642.41 4470 456 40.7998 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1642.41 4470 456 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1712.01 4686 m + 1712.01 4875.6 l + 2098.41 4875.6 l + 2098.41 4686 l + h + W + n + n + 1784.01 4758 314.4 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1784.01 4758 314.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2004.81 4976.4 m + 2004.81 5163.6 l + 2098.41 5163.6 l + 2098.41 4976.4 l + h + W + n + n + 2076.81 5048.4 21.5999 40.7998 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2076.81 5048.4 21.5999 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1851.21 5264.4 m + 1851.21 5454 l + 2098.41 5454 l + 2098.41 5264.4 l + h + W + n + n + 1923.21 5336.4 175.2 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1923.21 5336.4 175.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1616.01 970.797 m + 1616.01 1160.4 l + 2098.41 1160.4 l + 2098.41 970.797 l + h + W + n + n + 1688.01 1042.8 410.4 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1688.01 1042.8 410.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 1261.2 m + 2019.21 1448.4 l + 2098.41 1448.4 l + 2098.41 1261.2 l + h + W + n + n + 2091.21 1333.2 7.19995 40.8 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1333.2 7.19995 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1549.2 m + 2016.81 1738.8 l + 2098.41 1738.8 l + 2098.41 1549.2 l + h + W + n + n + 2088.81 1621.2 9.59985 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1621.2 9.59985 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1940.01 1839.6 m + 1940.01 2026.8 l + 2098.41 2026.8 l + 2098.41 1839.6 l + h + W + n + n + 2012.01 1911.6 86.3999 40.7998 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2012.01 1911.6 86.3999 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 2127.6 m + 2000.01 2317.2 l + 2098.41 2317.2 l + 2098.41 2127.6 l + h + W + n + n + 2072.01 2199.6 26.3999 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 2199.6 26.3999 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1913.61 2418 m + 1913.61 2605.2 l + 2098.41 2605.2 l + 2098.41 2418 l + h + W + n + n + 1985.61 2490 112.8 40.8 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1985.61 2490 112.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 833.613 2706 m + 833.613 2895.6 l + 2098.41 2895.6 l + 2098.41 2706 l + h + W + n + n + 905.613 2778 1192.8 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 905.613 2778 1192.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 2996.4 m + 2019.21 3183.6 l + 2098.41 3183.6 l + 2098.41 2996.4 l + h + W + n + n + 2091.21 3068.4 7.19995 40.8 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 3068.4 7.19995 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1848.81 3284.4 m + 1848.81 3474 l + 2098.41 3474 l + 2098.41 3284.4 l + h + W + n + n + 1920.81 3356.4 177.6 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1920.81 3356.4 177.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1949.61 3574.8 m + 1949.61 3762 l + 2098.41 3762 l + 2098.41 3574.8 l + h + W + n + n + 2021.61 3646.8 76.7999 40.8 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2021.61 3646.8 76.7999 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1644.81 3862.8 m + 1644.81 4052.4 l + 2098.41 4052.4 l + 2098.41 3862.8 l + h + W + n + n + 1716.81 3934.8 381.6 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1716.81 3934.8 381.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1464.81 4153.2 m + 1464.81 4340.4 l + 2098.41 4340.4 l + 2098.41 4153.2 l + h + W + n + n + 1536.81 4225.2 561.6 40.7998 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1536.81 4225.2 561.6 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1606.41 4441.2 m + 1606.41 4630.8 l + 2098.41 4630.8 l + 2098.41 4441.2 l + h + W + n + n + 1678.41 4513.2 420 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1678.41 4513.2 420 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1721.61 4731.6 m + 1721.61 4918.8 l + 2098.41 4918.8 l + 2098.41 4731.6 l + h + W + n + n + 1793.61 4803.6 304.8 40.7998 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1793.61 4803.6 304.8 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 5019.6 m + 2007.21 5209.2 l + 2098.41 5209.2 l + 2098.41 5019.6 l + h + W + n + n + 2079.21 5091.6 19.2 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 5091.6 19.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1863.21 5310 m + 1863.21 5497.2 l + 2098.41 5497.2 l + 2098.41 5310 l + h + W + n + n + 1935.21 5382 163.2 40.7998 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1935.21 5382 163.2 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1616.01 1016.4 m + 1616.01 1203.6 l + 2098.41 1203.6 l + 2098.41 1016.4 l + h + W + n + n + 1688.01 1088.4 410.4 40.7998 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1688.01 1088.4 410.4 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 1304.4 m + 2019.21 1494 l + 2098.41 1494 l + 2098.41 1304.4 l + h + W + n + n + 2091.21 1376.4 7.19995 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1376.4 7.19995 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1594.8 m + 2016.81 1782 l + 2098.41 1782 l + 2098.41 1594.8 l + h + W + n + n + 2088.81 1666.8 9.59985 40.8 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1666.8 9.59985 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1940.01 1882.8 m + 1940.01 2072.4 l + 2098.41 2072.4 l + 2098.41 1882.8 l + h + W + n + n + 2012.01 1954.8 86.3999 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2012.01 1954.8 86.3999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 2173.2 m + 2000.01 2360.4 l + 2098.41 2360.4 l + 2098.41 2173.2 l + h + W + n + n + 2072.01 2245.2 26.3999 40.8 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 2245.2 26.3999 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1911.21 2461.2 m + 1911.21 2650.8 l + 2098.41 2650.8 l + 2098.41 2461.2 l + h + W + n + n + 1983.21 2533.2 115.2 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1983.21 2533.2 115.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 831.212 2751.6 m + 831.212 2938.8 l + 2098.41 2938.8 l + 2098.41 2751.6 l + h + W + n + n + 903.212 2823.6 1195.2 40.8 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 903.212 2823.6 1195.2 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 3039.6 m + 2019.21 3229.2 l + 2098.41 3229.2 l + 2098.41 3039.6 l + h + W + n + n + 2091.21 3111.6 7.19995 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 3111.6 7.19995 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1851.21 3330 m + 1851.21 3517.2 l + 2098.41 3517.2 l + 2098.41 3330 l + h + W + n + n + 1923.21 3402 175.2 40.7998 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1923.21 3402 175.2 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1949.61 3618 m + 1949.61 3807.6 l + 2098.41 3807.6 l + 2098.41 3618 l + h + W + n + n + 2021.61 3690 76.7999 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2021.61 3690 76.7999 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1649.61 3908.4 m + 1649.61 4095.6 l + 2098.41 4095.6 l + 2098.41 3908.4 l + h + W + n + n + 1721.61 3980.4 376.8 40.8 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1721.61 3980.4 376.8 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1462.41 4196.4 m + 1462.41 4386 l + 2098.41 4386 l + 2098.41 4196.4 l + h + W + n + n + 1534.41 4268.4 564 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1534.41 4268.4 564 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1606.41 4486.8 m + 1606.41 4674 l + 2098.41 4674 l + 2098.41 4486.8 l + h + W + n + n + 1678.41 4558.8 420 40.7998 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1678.41 4558.8 420 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1716.81 4774.8 m + 1716.81 4964.4 l + 2098.41 4964.4 l + 2098.41 4774.8 l + h + W + n + n + 1788.81 4846.8 309.6 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1788.81 4846.8 309.6 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 5065.2 m + 2007.21 5252.4 l + 2098.41 5252.4 l + 2098.41 5065.2 l + h + W + n + n + 2079.21 5137.2 19.2 40.7998 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 5137.2 19.2 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1858.41 5353.2 m + 1858.41 5542.8 l + 2098.41 5542.8 l + 2098.41 5353.2 l + h + W + n + n + 1930.41 5425.2 168 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1930.41 5425.2 168 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1640.01 1059.6 m + 1640.01 1249.2 l + 2098.41 1249.2 l + 2098.41 1059.6 l + h + W + n + n + 1712.01 1131.6 386.4 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1712.01 1131.6 386.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 1350 m + 2019.21 1537.2 l + 2098.41 1537.2 l + 2098.41 1350 l + h + W + n + n + 2091.21 1422 7.19995 40.8 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1422 7.19995 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1638 m + 2016.81 1827.6 l + 2098.41 1827.6 l + 2098.41 1638 l + h + W + n + n + 2088.81 1710 9.59985 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1710 9.59985 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1944.81 1928.4 m + 1944.81 2115.6 l + 2098.41 2115.6 l + 2098.41 1928.4 l + h + W + n + n + 2016.81 2000.4 81.5999 40.7999 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2016.81 2000.4 81.5999 40.7999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 2216.4 m + 2000.01 2406 l + 2098.41 2406 l + 2098.41 2216.4 l + h + W + n + n + 2072.01 2288.4 26.3999 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 2288.4 26.3999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1920.81 2506.8 m + 1920.81 2694 l + 2098.41 2694 l + 2098.41 2506.8 l + h + W + n + n + 1992.81 2578.8 105.6 40.7998 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1992.81 2578.8 105.6 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 898.413 2794.8 m + 898.413 2984.4 l + 2098.41 2984.4 l + 2098.41 2794.8 l + h + W + n + n + 970.413 2866.8 1128 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 970.413 2866.8 1128 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 3085.2 m + 2019.21 3272.4 l + 2098.41 3272.4 l + 2098.41 3085.2 l + h + W + n + n + 2091.21 3157.2 7.19995 40.8 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 3157.2 7.19995 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1868.01 3373.2 m + 1868.01 3562.8 l + 2098.41 3562.8 l + 2098.41 3373.2 l + h + W + n + n + 1940.01 3445.2 158.4 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1940.01 3445.2 158.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1954.41 3663.6 m + 1954.41 3850.8 l + 2098.41 3850.8 l + 2098.41 3663.6 l + h + W + n + n + 2026.41 3735.6 72.0001 40.8 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2026.41 3735.6 72.0001 40.8 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1659.21 3951.6 m + 1659.21 4141.2 l + 2098.41 4141.2 l + 2098.41 3951.6 l + h + W + n + n + 1731.21 4023.6 367.2 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1731.21 4023.6 367.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1488.81 4242 m + 1488.81 4429.2 l + 2098.41 4429.2 l + 2098.41 4242 l + h + W + n + n + 1560.81 4314 537.6 40.7998 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1560.81 4314 537.6 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1637.61 4530 m + 1637.61 4719.6 l + 2098.41 4719.6 l + 2098.41 4530 l + h + W + n + n + 1709.61 4602 388.8 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1709.61 4602 388.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1726.41 4820.4 m + 1726.41 5007.6 l + 2098.41 5007.6 l + 2098.41 4820.4 l + h + W + n + n + 1798.41 4892.4 300 40.7998 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1798.41 4892.4 300 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2009.61 5108.4 m + 2009.61 5298 l + 2098.41 5298 l + 2098.41 5108.4 l + h + W + n + n + 2081.61 5180.4 16.8 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2081.61 5180.4 16.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1872.81 5398.8 m + 1872.81 5566.8 l + 2098.41 5566.8 l + 2098.41 5398.8 l + h + W + n + n + 1944.81 5470.8 153.6 40.7998 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1944.81 5470.8 153.6 40.7998 re + [/DeviceGray] cs 0 sc + S + Q + q + 2.39999 w + 1 J + n + 387.212 920.397 m + 2098.41 920.397 l + S + n + 2098.41 874.797 m + 2098.41 920.397 l + S + n + 1884.81 874.797 m + 1884.81 920.397 l + S + n + 1671.21 874.797 m + 1671.21 920.397 l + S + n + 1457.61 874.797 m + 1457.61 920.397 l + S + n + 1244.01 874.797 m + 1244.01 920.397 l + S + n + 1028.01 874.797 m + 1028.01 920.397 l + S + n + 814.413 874.797 m + 814.413 920.397 l + S + n + 600.812 874.797 m + 600.812 920.397 l + S + n + 387.212 874.797 m + 387.212 920.397 l + S + n + 2098.41 920.397 m + 2098.41 5547.6 l + S + n + 2127.21 920.397 m + 2098.41 920.397 l + S + n + 2127.21 1210.8 m + 2098.41 1210.8 l + S + n + 2127.21 1498.8 m + 2098.41 1498.8 l + S + n + 2127.21 1789.2 m + 2098.41 1789.2 l + S + n + 2127.21 2077.2 m + 2098.41 2077.2 l + S + n + 2127.21 2367.6 m + 2098.41 2367.6 l + S + n + 2127.21 2655.6 m + 2098.41 2655.6 l + S + n + 2127.21 2946 m + 2098.41 2946 l + S + n + 2127.21 3234 m + 2098.41 3234 l + S + n + 2127.21 3524.4 m + 2098.41 3524.4 l + S + n + 2127.21 3812.4 m + 2098.41 3812.4 l + S + n + 2127.21 4102.8 m + 2098.41 4102.8 l + S + n + 2127.21 4390.8 m + 2098.41 4390.8 l + S + n + 2127.21 4681.2 m + 2098.41 4681.2 l + S + n + 2127.21 4969.2 m + 2098.41 4969.2 l + S + n + 2127.21 5259.6 m + 2098.41 5259.6 l + S + n + 2127.21 5547.6 m + 2098.41 5547.6 l + S + q + 10 0 0 10 0 0 cm + q + Q + 24.8012 259.08 m + /N214 [0 12 -12 0 0 0] Tf + (C) show + 24.8012 267 m + (o) show + 24.8012 273.239 m + (d) show + 24.8012 279.239 m + (e) show + 24.8012 287.639 m + (S) show + 24.8012 294.359 m + (i) show + 24.8012 297.239 m + (z) show + 24.8012 302.519 m + (e) show + 214.401 73.5597 m + /N214 [0 14.64 -14.64 0 0 0] Tf + (0) show + 193.042 36.3606 m + (1) show + 193.042 43.7999 m + (0) show + 193.042 51.2391 m + (0) show + 193.042 58.6784 m + (0) show + 193.042 66.1177 m + (0) show + 193.042 73.557 m + (0) show + 171.682 36.3579 m + (2) show + 171.682 43.7972 m + (0) show + 171.682 51.2365 m + (0) show + 171.682 58.6758 m + (0) show + 171.682 66.115 m + (0) show + 171.682 73.5543 m + (0) show + 150.323 36.3552 m + (3) show + 150.323 43.7945 m + (0) show + 150.323 51.2338 m + (0) show + 150.323 58.6731 m + (0) show + 150.323 66.1124 m + (0) show + 150.323 73.5517 m + (0) show + 128.964 36.3525 m + (4) show + 128.964 43.7918 m + (0) show + 128.964 51.2311 m + (0) show + 128.964 58.6704 m + (0) show + 128.964 66.1097 m + (0) show + 128.964 73.549 m + (0) show + 107.365 36.3499 m + (5) show + 107.365 43.7891 m + (0) show + 107.365 51.2284 m + (0) show + 107.365 58.6677 m + (0) show + 107.365 66.107 m + (0) show + 107.365 73.5463 m + (0) show + 86.0052 36.3472 m + (6) show + 86.0052 43.7865 m + (0) show + 86.0052 51.2258 m + (0) show + 86.0052 58.665 m + (0) show + 86.0052 66.1043 m + (0) show + 86.0052 73.5436 m + (0) show + 64.6459 36.3445 m + (7) show + 64.6459 43.7838 m + (0) show + 64.6459 51.2231 m + (0) show + 64.6459 58.6624 m + (0) show + 64.6459 66.1017 m + (0) show + 64.6459 73.5409 m + (0) show + 43.2866 36.3418 m + (8) show + 43.2866 43.7811 m + (0) show + 43.2866 51.2204 m + (0) show + 43.2866 58.6597 m + (0) show + 43.2866 66.099 m + (0) show + 43.2866 73.5383 m + (0) show + 250.161 79.0797 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 246.801 82.1997 m + (7) show + 243.681 85.3197 m + (7) show + 240.321 88.6797 m + (.) show + 238.881 90.3596 m + (m) show + 233.841 95.3996 m + (e) show + 230.961 98.0396 m + (s) show + 228.321 100.68 m + (a) show + 243.921 114.36 m + (1) show + 240.561 117.48 m + (7) show + 237.441 120.6 m + (9) show + 234.081 123.96 m + (.) show + 232.641 125.64 m + (a) show + 229.761 128.52 m + (r) show + 227.601 130.44 m + (t) show + 255.201 131.88 m + (1) show + 251.841 135 m + (8) show + 248.721 138.12 m + (3) show + 245.361 141.48 m + (.) show + 243.921 143.16 m + (e) show + 241.041 146.04 m + (q) show + 237.681 149.16 m + (u) show + 234.561 152.28 m + (a) show + 231.681 155.16 m + (k) show + 228.321 158.52 m + (e) show + 252.801 163.32 m + (1) show + 249.441 166.44 m + (8) show + 246.321 169.56 m + (8) show + 242.961 172.92 m + (.) show + 241.521 174.6 m + (a) show + 238.641 177.48 m + (m) show + 233.601 182.28 m + (m) show + 228.561 187.32 m + (p) show + Q + Q + q + n + 2180.01 1899.6 m + 2180.01 2221.2 l + 2504.01 2221.2 l + 2504.01 1899.6 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 247.761 197.16 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 244.401 200.28 m + (6) show + 241.281 203.4 m + (4) show + 237.921 206.76 m + (.) show + 236.481 208.44 m + (g) show + 233.121 211.56 m + (z) show + 230.241 214.44 m + (i) show + 228.561 216.12 m + (p) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 245.361 228.6 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 242.001 231.72 m + (7) show + 238.881 234.84 m + (5) show + 235.521 238.2 m + (.) show + 234.081 239.88 m + (v) show + 230.721 243 m + (p) show + 227.601 246.12 m + (r) show + Q + Q + q + n + 2177.61 2502 m + 2177.61 2799.6 l + 2480.01 2799.6 l + 2480.01 2502 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 245.361 257.4 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 242.001 260.52 m + (7) show + 238.881 263.64 m + (6) show + 235.521 267 m + (.) show + 234.081 268.68 m + (g) show + 230.721 271.8 m + (c) show + 227.841 274.68 m + (c) show + Q + Q + q + n + 2172.81 2780.4 m + 2172.81 3090 l + 2492.01 3090 l + 2492.01 2780.4 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 246.561 285.24 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 243.201 288.36 m + (8) show + 240.081 291.48 m + (1) show + 236.721 294.84 m + (.) show + 235.281 296.52 m + (m) show + 230.241 301.56 m + (c) show + 227.361 304.2 m + (f) show + Q + Q + q + n + 2180.01 3018 m + 2180.01 3378 l + 2542.41 3378 l + 2542.41 3018 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 251.601 309 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 248.241 312.12 m + (8) show + 245.121 315.24 m + (6) show + 241.761 318.6 m + (.) show + 240.321 320.28 m + (c) show + 237.441 323.16 m + (r) show + 235.281 325.08 m + (a) show + 232.401 327.96 m + (f) show + 230.241 330.12 m + (t) show + 228.321 332.04 m + (y) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 252.801 336.84 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 249.441 339.96 m + (9) show + 246.321 343.08 m + (7) show + 242.961 346.44 m + (.) show + 241.521 348.12 m + (p) show + 238.161 351.24 m + (a) show + 235.281 354.12 m + (r) show + 233.121 356.28 m + (s) show + 230.721 358.68 m + (e) show + 227.841 361.56 m + (r) show + 246.081 372.36 m + (2) show + 242.721 375.48 m + (5) show + 239.601 378.6 m + (2) show + 236.241 381.96 m + (.) show + 234.801 383.64 m + (e) show + 231.921 386.52 m + (o) show + 228.561 389.64 m + (n) show + 258.561 388.92 m + (2) show + 255.201 392.04 m + (5) show + 252.081 395.16 m + (3) show + 248.721 398.52 m + (.) show + 247.281 400.2 m + (p) show + 243.921 403.32 m + (e) show + 241.041 406.2 m + (r) show + 238.881 408.36 m + (l) show + 237.201 410.04 m + (b) show + 233.841 413.4 m + (m) show + 228.801 418.44 m + (k) show + 246.081 430.2 m + (2) show + 242.721 433.32 m + (5) show + 239.601 436.44 m + (4) show + 236.241 439.8 m + (.) show + 234.801 441.48 m + (g) show + 231.441 444.6 m + (a) show + 228.562 447.48 m + (p) show + 253.281 452.04 m + (2) show + 249.922 455.16 m + (5) show + 246.802 458.28 m + (5) show + 243.442 461.64 m + (.) show + 242.002 463.319 m + (v) show + 238.642 466.439 m + (o) show + 235.522 469.559 m + (r) show + 233.362 471.719 m + (t) show + 231.442 473.639 m + (e) show + 228.562 476.519 m + (x) show + 251.122 482.999 m + (2) show + 247.762 486.119 m + (5) show + 244.642 489.239 m + (6) show + 241.282 492.599 m + (.) show + 239.842 494.279 m + (b) show + 236.482 497.399 m + (z) show + 233.602 500.279 m + (i) show + 231.922 501.959 m + (p) show + 228.562 505.319 m + (2) show + Q + Q + q + n + 2175.21 5055.6 m + 2175.21 5403.6 l + 2530.41 5403.6 l + 2530.41 5055.6 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 250.401 512.76 m + /N214 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (3) show + 247.041 515.88 m + (0) show + 243.921 519 m + (0) show + 240.561 522.36 m + (.) show + 239.121 524.04 m + (t) show + 237.201 525.72 m + (w) show + 232.641 530.28 m + (o) show + 229.281 533.64 m + (l) show + 227.601 535.32 m + (f) show + Q + Q + q + n + 656.012 135.597 m + 656.012 296.397 l + 1812.81 296.397 l + 1812.81 135.597 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 181.041 26.2797 m + /N214 -13.92 Tf + (m) show + 170.241 26.2797 m + (a) show + 164.001 26.2797 m + (c) show + 157.761 26.2797 m + (h) show + 150.801 26.2797 m + (i) show + 146.961 26.2797 m + (n) show + 140.001 26.2797 m + (e) show + 130.161 26.2797 m + (i) show + 126.321 26.2797 m + (n) show + 119.361 26.2797 m + (s) show + 113.841 26.2797 m + (t) show + 110.001 26.2797 m + (r) show + 105.441 26.2797 m + (u) show + 98.4811 26.2797 m + (c) show + 92.2411 26.2797 m + (t) show + 88.4011 26.2797 m + (i) show + 84.5611 26.2797 m + (o) show + 77.6011 26.2797 m + (n) show + 70.6411 26.2797 m + (s) show + Q + Q + q + n + 2621.61 1971.6 144 2424 re + 1 sc + f + 2.39999 w + 1 J + n + 2619.21 1969.2 146.4 2426.4 re + 0 sc + S + Q + q + n + 2621.61 1971.6 m + 2621.61 2130 l + 2763.21 2130 l + 2763.21 1971.6 l + h + W + n + n + 2662.41 2000.4 55.2 55.2001 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2662.41 2000.4 55.2 55.2001 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.241 207.96 m + /N214 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.241 210.6 m + (o) show + 272.241 214.919 m + (c) show + 272.241 218.759 m + (a) show + 272.241 222.838 m + (l) show + Q + Q + q + n + 2621.61 2228.4 m + 2621.61 2430 l + 2763.21 2430 l + 2763.21 2228.4 l + h + W + n + n + 2662.41 2300.4 55.2 55.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2662.41 2300.4 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.241 237.96 m + /N214 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.241 240.6 m + (i) show + 272.241 243.239 m + (n) show + 272.241 247.799 m + (e) show + 272.241 251.879 m + (a) show + 272.241 255.958 m + (r) show + 272.241 261.478 m + (s) show + 272.241 265.077 m + (c) show + 272.241 268.917 m + (a) show + 272.241 272.997 m + (n) show + Q + Q + q + n + 2621.61 2749.2 m + 2621.61 2950.8 l + 2763.21 2950.8 l + 2763.21 2749.2 l + h + W + n + n + 2662.41 2821.2 55.2 55.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2662.41 2821.2 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.241 290.04 m + /N214 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.241 292.68 m + (s) show + 272.241 296.279 m + (+) show + 272.241 301.319 m + (m) show + 272.241 308.278 m + (e) show + 272.241 312.358 m + (m) show + 272.241 319.317 m + (o) show + 272.241 323.637 m + (p) show + Q + Q + q + n + 2621.61 3255.6 m + 2621.61 3457.2 l + 2763.21 3457.2 l + 2763.21 3255.6 l + h + W + n + n + 2662.41 3327.6 55.2 55.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2662.41 3327.6 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.241 340.68 m + /N214 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.241 343.32 m + (s) show + 272.241 346.919 m + (+) show + 272.241 351.959 m + (j) show + 272.241 354.599 m + (o) show + 272.241 358.918 m + (i) show + 272.241 361.558 m + (n) show + Q + Q + q + n + 2621.61 3634.8 m + 2621.61 3836.4 l + 2763.21 3836.4 l + 2763.21 3634.8 l + h + W + n + n + 2662.41 3706.8 55.2 55.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2662.41 3706.8 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.241 378.6 m + /N214 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.241 381.24 m + (s) show + 272.241 384.839 m + (+) show + 272.241 389.879 m + (j) show + 272.241 392.519 m + (o) show + 272.241 396.838 m + (i) show + 272.241 399.478 m + (n) show + 272.241 404.037 m + (+) show + 272.241 409.077 m + (m) show + 272.241 416.036 m + (e) show + 272.241 420.116 m + (m) show + 272.241 427.075 m + (o) show + 272.241 431.395 m + (p) show + Q + 2.39999 w + 1 J + n + 10.4126 3.59662 2841.6 5656.8 re + S + Q + Q + Q + Q + Q + Q + Q + 1 0 0 1 -133.768 -357.014 cm + 260.986 153.252 m + (Fi) + [6.50584 2.75975 ] pdfxs + (g) show + (ure) + [5.53942 3.90548 7.74125 ] pdfxs + (8) show + (:CodeSize.) + [7.20325 7.19329 5.26046 5.52946 7.75121 5.52946 2.76971 4.43354 4.42357 2.76971 ] pdfxs + 300.643 89.365 m + (14) show + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Page: 15 15 + %%BeginPageSetup + userdict /pgsave save put + PDFVars begin PDF begin PDFVars/InitAll get exec + 0 0 612 792 true PDF begin PDFVars begin AS end end + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font DILVTX+Times-Roman + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 13 dict dup begin + /Notice (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development; Cyrillic glyphs added by Valek Filippov (C) 2001-2002; Numero, infinity and Omega made by Dmitry 40in (C) 2001) def + /FullName (Nimbus Roman No9 L Regular) def + /FamilyName (Nimbus Roman No9 L) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /DILVTX+Times-Roman def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -168 -281 1031 924 } def + /XUID [6 5020931 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C825D7C534A1D7572F4904734D34A8EB5CCBF6AF4BD16868351B4 + 9720597C58AD9250B850406E3B7095164E634F096B16B87B7EB1DA7059CE66FD + DF08D200E8C5AE20931835F16D7D7ECCDC34AB3F57D265A00C5D0A72E3CA8B4E + 49BA6F0CBA0EC0987186D1A03F59396A66B8598AA6B0CB27BECD323BCD56A450 + 6FF06BDE9F9660206894E244782EE2A4F9F2095DB9D302903551DE228BD73649 + 8ED42C07EE7F3F8AE376C27370F6597A701D2142320B3893171D130CAC2E1B3C + E59E06FB14DD91901F8EE7567D0040934052E6AD60DFA3C126257D5CDB4B68B5 + B56FBEE67185463F7B12BFB9C19E7E97DBA924861E9E608E22865BC28EB29D26 + 0D8BC0804D9952BA0D22E8B6F7FD7E1A8452A0CB318D6B54F69EDC6536190766 + 899A59F5C772A33448031BB2F6754DAE1C12A021160B276434E0EFD0514FA1F1 + 62E5A8C7A0E7D34ADAB439E68A74679529C577A8121C9C7A767E8DD9DB28529A + ED6EA385AC394740E3DD3DBAE66C6A47CB1940EFF6139A9884C0F47C50DBAC50 + E6BA0179B53814BC5B7C0A549CB3CC2522CDEADE767AF894F3ED46A977CE8CE5 + 9278E1BC59986D428A39EBB5FBAEF2365F61CF569F74A87572F384175447E977 + 2F65FD764BB71FC5DB33DC0C60E9DC28E7B9D8F9DEB4C70CFC9BB72A758F7CFB + 8ADF1F632B3AA4F39D9568424F78C3C54DED65A13A4A5A802A3A47E8DF4ACB6B + 3E452224D2944B77F91EB545413DA6DDAA435C5B9FEBA826132604ADBF708EF8 + EFEFCB2420FBA2D86DACBBC5AD92AFB2407E4559A6F21E4B01B7BB8EC41C53DD + 59E55678703A99F7B6E52442B840FC9521FC1C3AC6FA580046FE5EFA8F73D2BD + 330D6B10FBEC163C6849AA9DFB222DED8527C89DB2FB4150CA543604EBB34BE8 + 19FCC9C8099109AEA0543C9545DEBCF8D564E0769CB56BFF435FC652A7C95EF5 + D602AA6E065355F2274C5963BCB5253548343CAB0607D13BDC987064365DF859 + FE644040D939A89C379282F905229E37E630B5A2D1F8B0A1D35D40B241558BBF + D4703B4D3DA2CDF748D72631748C4B637FC1F6CD2FA15A7B6EBF43070378EFD9 + A6283B963E86FAAD60241C7B14CD6CDDAACF5BA679EDCE29D062947CE8183624 + AC6B266C7515EF2B5BC762239BF4AA8CA5BBBEA9F8CFFE1CB739CC93416A35D1 + 2D480C1B7C617AAE30CDAC5AA4E30BF211216E2155FA9E8F88CA289687A6DFE1 + 354CE996D533B4B396EB711E5B726DFAE94F4C39A09DB62A1F8222514348D7BD + AE35669CBED402E2A6A9C4235C34883A3C77655E205756003A951E416A283FF8 + BE24D61E4269C27A549287D480469977B794AB9B797A72CC76D1FEF6A88FE6C9 + B3275B86B7FB10ED1DEAABE947982E27C23895DB0C103DFC8A8C41FD9AEB0B4E + 67E2C0AFAC4C15FCADAE90DE0118E0B9273CBC5FD825AF99DD628E72204AE176 + 921B039EF7002A2CEB68AF180EF3D372EF9BD8F8533FB79352F32E5A9DA5279B + 8F4AEFEC6259086B3E82C7BA0AE9CC1CA8BE8630E1664E1E92979799048A1C4D + 283C1BB6DB30D23D000B12C2962CEBD10B4ACA262FBAED780E3066AE9B0CCE48 + 82AC3016E4657E66CFBF1475A7E26E81C0BD58CC381E97FDED5CACF370494160 + 42F79477EF6F800C037F6AD89BE9958F818130256A7CEE12443E0A382046D675 + F74D960E35EB1A0441A40D4C9ACC5434842242A52FC8259FE4D08C67469D36E9 + 6836DBAA2977E1814EA1B1BE6D1282D46470DC0A5E5C5800D2AFDA8487FB2642 + 6BCF9A25A0ED16BFDF8D8EC7D5D48679AADB9F67D1C48D65FBBBD10674716925 + B633ABDBB9C8EAABA1C1A53385E95E8321EB51E750C227DA914E96664BECD9C1 + F4A03801BE8A3A301D18C4B99C63104E63CF3429E089CEDFF2043D11663A6207 + F5B7869EDAF0F53A695F9AE48EED3EE416ADF991D2785B54009A25554680A355 + EF9CFFE1E342EABAFE6C44AC3CA4273C13D9E9EA9572173F71619508600E920C + 88E85E559060AC674767EEB8570200C64CDFBAB97BD3C22FBC101FE2A5FEA19D + BF08D82D9339F86293CCB25B99B2DB3F19CE3C029D9AD4A44DBEF6059B7F9ED3 + F8ABA163B6CF067874E8B6F19B17FD42782342C6927FFDA395CA24B836D25E88 + AEDC8D9F799306067F98BEB31CA92AD056C6F94C391A38D7A1894F0B681726BC + BF30EC5CEDE2E0A230AEE3BC2FA977D17CD7E4A294387EB5270154F62EB163B0 + E6D5DF0DDE044BEBC3674567A4CFC5D1317ED3A1DE13DD2E0DD7622BED76650B + 775DB06FCB5D01F550CAB117A2A5FEF971CAFE4B2504FED269D7AF179A9D2FF9 + 785C1B05E5D08655FBD3840924D734479EC3AF30A74D2656F9D6D1231D8C3759 + 45D938316E144AC7DD8ADE0ADCA2C80C345A66CA586FBF8016DBC663B67AFD9D + D12E436E772EF6F1FAF8B3E830B6202EF9EBEA5BC84DBC3C81703E62B5A84B01 + B4AFAED04013A28EBCD2824D1DDE74172215384D6233D04C694A470A86A1B09A + 306ABDE3AC5D6A92ACFE0BCE34D083C4C3CBE89D1BDB4EB8FF674E47E8AFE69C + 4A6DC04F97241A6EA7ECA360D560F3B4B074D0D5F14C56C1967FD9D6BD9265F4 + 8B88397DC3F0E5889E78789BDEE9E36CD7BC214E71CBD52887380CA4BC8D9628 + 339D4B6A01A3D4B6B9CBC4B95D865C9876F449B1654CE750F4C030EEE65F117E + EA216D73DFD9C6C2868AED00DDB695F8828B5E8234BED8ACFB3EFEB7779B88F1 + BE095D7BAC4E577776933AD200B2004A1AC7BA60B942ADF19177EB3B06E4079E + 21EE635632C5767EDF693926585A9D439DEDCFBAD7439A634236A731F4CE1D0B + B8AE6E37264EBDF8DF6AE4FDA67DB7183F3195C403F49070D85821937BC6ECA9 + 14609FFCE3DBE07D10818881F310543A683AFB31D14A187F4583789DAB926EDA + 1238DDD81ADB226ACAB96EDF89E599B3BC249A92FDB8BE3DA8378002A567E6DC + C6B6AF576978F813B148B2A016E1E4003CA34D62658A34BA79480C318FCB0D86 + 6F6B0FD3ADFE94739CE1E3B0ACE07CE622BB76081809B3335A18D89E0F1D0E1B + 600FC467949442A67BEE78F66C23AFF78E82A9849D62355525D6C5D0A597D9C0 + 8A829FC8CEF09986B1C7DF5AD4BB8C163E264AD815D7C9B2D380BCF97043C8CB + 498F8783D6AC7A357B6035120B4BB94AB9BE655DA34572A82AB92172D4831A82 + 9A14E5561CF0C9AAFD4BDC09E46A0AEA6232950C45D603EF502C6A5025844D6C + 7DC395F01233CDA57E25AFBCCF0A9CFDF412C40BB2F8D52491BC0FF418A7F7BB + 4F2F9556E51CA7490CEB0163D511C7DDFFB95048C74EFA9A337F077303138B8B + C9D6B4561DCDF6B3EF7CD379047DDB6DF588395980AC3DB46CDE3959278347C3 + 79628562204798509C0AC60AB254282A47AE702D945435191D8949F8B01BE216 + 527B20A2E8A1F95E82D007886E9EAAC52BD916F16D596A4C2DF04008C98A5773 + DCE3EBE87ABEE4ACC151B0C4CE33775E700B424BE8BBF17FB3A987752D7BDB0D + CACF58E5D54C5C07FBBC797F0ABBA883D04AAFEE082BA328163E470B6B5F4825 + C2C2F231634BAF5F9D223DADAC3D4ADAD6A8ECC89EBB33E59A80F264B51E79A3 + 4ED3602D179DAF22B262E29CB8F422C024E9209ACD88B5A9030F564D6AD48BFE + D4F4CD00456E6967AC1C761E2E79222DC8E1129DAE2B4323EFB7A414065D4701 + 9EB8598574987E9813F36A3AF4DB9E7078013B8E1628AC481CA520A9957EE723 + AA782122778B933A53A26BE6E721AFAF97F9440DA3919C8FC3FB25ECD542F12F + 7EB2DACC42B1DDD4D71DE7C0922D19C755E56C9263395A99DAF4B38BDD94D5B5 + 6AC6ED5C5D30BA01EEC7B4361E6DAF6FAA44EA878BD74A3820F70656C4106D4A + DF092A812793780FAFD2EEA4BB91767D5D91D2AAF2E099F98C7AE4E9F019158B + A4A9156ABCA1D9200B9AC40238BC9CE5DACA84AFDE3A3FD8BA56D2A7738FAB1F + 1D3F80D5D1E3852E6B341D7087373C1302113A9EF2278C426F7F4DF4A1FB2561 + E3F098866BBC7A3ED7FC0D8E5373D662325E3B39D39F15D23F198DEC4AB68129 + 8D9EE86C379FFD26E42695889272635E91F92F17817C2D7E5189C304E27A51D2 + C1D371469507A7C14D8945A1FA7E5F0C8AD3C5B234BB81F60B772F29C81EC413 + 82F4B73082A304327F63338FDD64F49438F04599104B96E221DBB6DEAEB0BC7A + 59A3EAB12F504CB81394110025A4FAE2E82633C0C9A5FCCA206610563B49FF0C + 89E06844541AD89CFD394346C089993A39029B3151FC705F9273788A82B4AD12 + 92B0E932450F381811ACB50BEF2AC195F362F917DC2B0AB24CBA4EE27D3F8BF0 + 91D249CEF87F0EE522A609D6D4384A8CFF8C79DD9FC457699405C70581AD3FCC + E61521EC6A74BDB847444471E87CEC4270257326AE20A4FE7EFE186C6D45952C + 47BAFB8843DF0C7311D2AE8629C5BD6C447CF498778E346F75AE4CF71509237D + 6122DF92EF18322321B75C4B5903304B43C3B7D2D9446AA615E0AC9F14A026A6 + C4840CE23A98F930CC0EE05E31DE71EBB17624ED797E57FD0A75652947E13322 + 820080708BBC55A643F1DB1379C987350803EEE5D89412763EF9F1A3F57A4A13 + 6F42719C5FA3957C6145A27C5FD2EBFCB49855BB877CFBCEB8927B24B31A8197 + E0A3409B32085D7295CA692F7EA16A4F4F20D49F38888FE961DE93EC22D049FA + D53BB5EBE485F73D39EBB17778CAE809C893F40DBE4B30F30F3444519B2EB34F + 52879A02A13D2544DC87DFA4FC2F51A51F85BE6C8A5539D8213EA82224154AD9 + FAA6DCDB1B215D177E46639EB8AE1214E277E4303DDE883C7422D9D334AC5328 + 1C21A4430B6DB736ED119B7B3854AA160D7C91FFF3608C6F5E50832DE9E73F9A + F34B44AFC48D1FA3436711E373A7660DC8BB2D80157F9E7ECED79D4AE13817CE + C27616E0381D1CDD9A069DABB214E2D9CE55F6B695DE5D121B9A092CD8A72944 + 97B05A51EC99A7047ED372A4436A8AD88D5788C74ED7AA06D8EBDF12C7AD7586 + EC48A4BD59D68C7219BD9B02AD864E4543DF09316B8EE976683B7DFD82BD17CE + 1CF0A989D623B1E52F62CB7F6D0821E0926C4F3FC2D5B6AE3410BA5B06F2E20C + 2AA52058AB3A851B683EBC7995873B52795B97B12510CB1C7BEE10476D661F15 + 2DB60B1FDE9FEAAE1C8B4ED64B2521AF94ED6144C5593B25E048226E937F3CDE + B363DDAA4B9A30F7F488707EE2AB2B0359DA7754E212A1629651C9601F89E448 + 59811F02FD083581250841584A6FC916F1D98BFE159E733BD7830EDDD537AAFF + B5B49272AE95BF75AB8DBEFDBF0B40A7F2ADBDBBA05736430A256EF7EF52919B + A5B4694C926024AA3E3E2F1352D5087D36BD36655D969BBD8E301996B467406F + 614A10280DBA7093C71BB080513A4FEF7A617F2F42C15CEDAE3F4209168A1D5A + 74037860E7979469748700231795139C19549F7C237353B2D81306916B8B5257 + 09787E6F0A64B3B871D10405E57D1D7E5353205B2D443BC3016F8963352DA940 + 7CE6B0AEAF8A725996A1811A4BC4A9ED6BA7376EE610A10D5D7EF8B28EAC2C23 + 3C155FAF009F71C938D0B017290AC9B61C1BCEA72FD3A902D16AF10BE6651A60 + 2D977F40C7409CD3FC67F403C655D41DF3B8B5A1C1352164274C033A4C8205DC + C4ECB8515CFA70E7AC56799E7325B7CFC7ABE696A4EDB3E2335703FEB53ABEBD + 59E7E29EA67BD2CA4115B47F6EC695893B77E7786D97105402B7F8595490BAC8 + FCE7FF7F5F7CA6FCDA30E1BDF8AFD1E7484B4ED6481FBEFBE5AA7527CC04955A + D6CD7D695143059EA6EA7381FA97DAEC70E057C224F1F95A68B2803EC825BB3B + 240237BEA9000F692BF40925B975EF69073224159C5DB71C7EC6FBED8B5B842A + A5A762D2473BF06FED0D567A5AA680615BA27F17ED000AE76D820FF44F16FD86 + C4B6C32F1C346D3E11CD47FF78A3ACE55B7050C865598777D5343F79C9F5B6D5 + D7DD1F7A0FFC33B82EBA1ECB5E550257AF5B178B346179970EE0E8553B11C0DC + 4BA0525BF62988B1DF648D9F38F4FD0B3E339CE77D6EFAE0B3A9F7EE712B62C5 + AD5BC9771969849BA340E3A97453BE2955AE86C5B625847275AAF14F8BF58F5B + E23D9685657FDC59D2896373CD88FA1104EA04DCDD9A3EE10F6F786E955DBCB3 + 2E4C0E859BD8CE7CBAD4EF61D8E6AEB09F9580585BF5871EA672A228EDCCDA8A + C2817DDB1B144C96A96884FED8EABA8287EEF46F26B2E67F1D2BC67C9593EBFB + 731FD147A942C21D62A2B44A9FF5D391C9B63CEC70263E48A340458D20E1F7E4 + E2F3450B0341D508DE35C1C2A67DD430F3E96823140015885B89A953785203E8 + F1BCC5D89446C831E765B83AC7D367FCECB70026A6721CEE97D382DAE89A56EB + 725952672B716A86BA6E59F7CACCCD10174133080505C3CBF85DBBE603C739EB + CC494648DB1B87921CB4B40D3A0FFAAB9129CF340806F9DFAA78917898360742 + 5193A85BABE3A373DAB4C1A9715E096B724DB2CABF021F88548E87E4CC8504BC + 736062E64A2D0E554AA0362D00B0C1A17DFB25D769076C9B0301DC75C818A109 + 5292D6680B7567413809DCC251F080CE98D371141C2B5414C7CF00907515388D + 6E1C6F72E76BCC5784100731E1FF799AD0234C13DCDBE20C17ED0B885AB8BA40 + F1978651B48FDEE8D5D560F6AEF5F047B7EEA20B88C93BBBB28E1B98A9964BC8 + C07DD7D1FD935C8E2410B0420197DC4541CA535B88B443336D9E3D9A94224757 + 8939848449EA074D869EB63B62FBE7613FA1036B6E6441B025A594023E95BEF1 + E67B3BD3B2CF70F45A3BBCC9F1659758F8CD1DA9760D23E947EC09F6152FEC54 + 47B4E4DBBE70A0FC58906E396A367ABB6F4A9F2814F1C1720EC7B36380C827B1 + 99A06B16B964FF5A4EEB54CD0228A5E725AF2E6A2DA84554BC141B3B1A9C6554 + 1677D831AA156D99E7DFA0CB5AE748AD43ACDEFD1CB22FF8C01AE146E357DE41 + 3A13FD91AA636E0816C86957689826EF522E57AFE1033D0C653C0DAEA6DEC4DE + 3412B9A77D3493B23BA3D047918091DB4FFE57D7649F003460DE1E595ED90D52 + 3E214E6DB7312FC5C11E8C4D250C2F0474F5A157230590B8E486307131BC54B7 + CE5F5459DC211E44C87E0116172CAB2F366CDA9E3365B0FF49A0C7814EA696F0 + 53350B6FC07810493C715F1D60E4CD5875F7EE56B36E4589274272CDAD3367C3 + 1BD30551ECDC34B062359DEAFAB76E5A44E0ABA85C9F4EBEFF60940B055EAA93 + C7288A40268730816D0F760A85479C415BD3D9E7D1588C08223A8147888CCCBE + E5DD6BE337738884B7D2FA5072C09F876AE1F5668EF65C156D8091369911EC4D + 6B2B7D3F24349C7E99A2C6099D92606E1890D7DB0D87C11998FCB3D33E9D51EC + 2540C37969E521FABA8AC7466F3F1D0F4C5EB3FC99ED8FCD2F79599F1DE88166 + B20E3641F095AB4A0BBB3822C0D402185A584D27A0674CEE9787A50809523477 + BFE8808D795F2680C40E5CDCC5C9BBE67060C68D1207FD009230D6460965C899 + C79090E6E9E23C0C43B91E8AB8E0BCBAEDE644394972F7C241C97C87B0FB1357 + D421D49EA0962AE529D9798E5EC79253F5F0697D510F31074799EC5CF691083D + 13192124B7A4F3D14193AD42C42E89B46417A139D0DDC65776484D04389A24D9 + 4BDD18B277CD506F158D57907EEF9D5863F7E5309B354B82A985E3050AA53381 + 6ECB7156EA8C543E52D316029FAA05EA2951990EA6CEC54EDD358C901622A62E + 499C21EDBF0C38C474FFF3305132B8CD2F2B7335FC6A4BA1C0CBB46EA47C1481 + 3BC5CA15D8378AC673B6F33018BDF1EB374EB3983073A0DF502F36B15AE17223 + A96BE57344D0A4363CBCA7E7EA644F66A121DF1751AA8E4A54F81595743FA0CA + A54C75236B0E96A433581397C389C23AB4C2922BB6A8E5DCE82EE42A1C912236 + 5A0B605291ABA5981D7F197A646E7305A55E95BA1318710CE4A90E80D4DD0C12 + 25D359CB765A3DFC2A8FAA7A3131A33EB66AE6FD00E13EC093E876FB49F95128 + 76F34D9E4647A8463E3D332B5A5125E4FF5D838DC977963C38EEBF91BCCB0A82 + 95F5DD6C55E745A1314B50E54338D1ABC233167F65889033A0C14ED7147784A3 + 21CB6BEC3223AF3A31D6BCC51219A2DF23DF7E8A3E51879C2B6DA85B7BED8AD0 + 4B145964A630FD9AE94DBD824B4979AB7C0622EBA5DCDDAC68B867BED9E1F70A + D14AE47895A636931E430BECFF6CF669AD7333B5BBC7F89285C65976C8E9E3AC + 03F2B008F78B97D8BF0373FCB0ABF96FCFA521227E976A6705A214B6547EEEFB + D036004A7939632FAD065583079DC2428AE8318446D038C2382F502735CA3F28 + 796262F743CBDB788996DA74C4D8C63ADD0C531509965B4CD862F4D8A409C412 + 510685ACED0FB7E09C701005237BB225ED8BA5A23F77E4B4A7056D88192825FB + C013FC6D3D0778782B8C9D3D2A041744DCCF44615DA1E72B3BDD2A7F5F28F35A + 3F4C8AD28C2D99D61394479A265D4B0FEAA7C5786E52DE08D9A6E7E25373F580 + E237B4F1BA68F0E03347C70C3A6CE2E8A536098BBAC95029730A2109FF1DF7FD + 7C65A480A315331AFAC286BC84A14FE16B47DF0720A4FD5A7EB42FE05699F387 + A8A2CCAABEFFD35E311E27865CE597FD0120FCD57DC210A7E87135E7AE32CD29 + 5076AC0E4D2D78DDEAFC7BA0225BA7977B701509057636C6839EB3C9EC37F2D7 + 1791607F4E33BA4AAD9B794E650CFDD337105B2C5FE04C57F5069E52DEB33629 + 79D4C02E95E65C45A3FF393224B7DAE48F7738BA20F46232663D298E7A322A26 + BF65512E929B5CD1AC52EAEDD9287C9EC5122F92933901547B03E2C9720C830E + 94A5B0486CB39EDD09A15F8BF29504C6B2B9AE476D5CC36FAA270E45F0DF0D92 + C77844DF36841F7CDB7A1FF7009F8A1A48C54BB9E001AF37DC75B7EF902E3A4B + 2BE80AD1EDDFFDACEC5ECD8E1830DC3B8141B39B5E557C00CD15664B23BA68A8 + AD9099E0B817653CBF6B99C7ECE102656B06C2511BB177D25C1323E0E5B91EAC + DC90965677C748B585CE51BEB496B826487477DE20FFC8F5FD48F4C9F88E4FD0 + FC04F2A56781079EE8C903D005A4D397FD5F9B1728E4875DBF0181CF19BD4E47 + CCF7EE110B5E8A828F55E78EBBBD71A434A29F81D210AEAE64E801D30C2255B2 + 50A7B94BB31C7FC323888E6324BCB6CA1DCA46B726953C7A1FAEB5AF274CDE23 + 0058301C213574889D447B0C8A34D6AD125238FA959D471C9578838528105A00 + 3056F0E6E9CC0C2A20D19FAEE6BA5900A4C99DC5DDBEA6678053EB31D1D612CC + CA9B1381EDE9355E396E53A6965F909A9E7AE09CEA1BD472F6CA6DB18371E3B9 + BF03D87A3B9D79DAC6FCF5D787507FC701B9D2B7AC4F0896212BC8B17E3C1720 + D74A77F58C40F2C22F80B3D56D60BB799C3B59E0DB97AA316FA8F225CD41B07D + 2FFAB90FEB287F491494610D31BE5F7C8532CA0851396C256F4B9C45CA0EA682 + B508830CDF9BFE963B53635097F59B23390D5485886D6AE3DE5FA08227F2A122 + D854DA7B58D427F382717EBA530985711334D7CC38BBF38894F18CE66FA04FBF + 83A77DE71850021DB924C33A40074278B5ED9D83901BBA0278A28F9A12AC9AEA + 12A54084A14CED6337447BE42979A6BA890C1FF67D1542EA1107B7A04058381D + 4153425AEC3919FBF159AE525E1B69F049CDB74E5D2C8F7BB5CBB0D960291CD8 + 9EA502DFBB553163DDCD72FE010B92C68773FCADA233F68BAEF9D957163F0BF6 + 018D3A8A4A35994269DB0B0F69A2B47D837967F96F9C15DB04FE50A0E6FA8F6E + 115CADFAEAD24718B297AEC32CBD220111B880FBD0CC4D9EA4548CA8C301482E + 4CFA9B98725E9AE7FB0168B152F0C14F00BB87CA3DF60EE48DC7898BC18AEA12 + 10DA55168F0DCC6776DDE10223DB60878EDFEFEC6B10D3EC43426F6AB239FF7B + 257E81A25EC8E8C18A82D2A45258AAEC169DEBFFF117FE269E963BB784DF9707 + 810DAF5F48FDD4812FF5B858F48D8DB5A455C42D2691419A82EE1C1BA1B2B185 + A8B3CC3A1926D6600DB293FF841FA0624F5449F8EFC1272342DCC9F404FBBE12 + 8D8FA3249773A80B1741DD7D23FB1DE3086102E55C534722DF25D6CE699D608B + 55C15486D7C493 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /DILVTX+Times-Roman findfont /Encoding get + dup 0 /.notdef put + pop + end + /DILVTX+Times-Roman findfont /Encoding get + dup 0 /.notdef put + dup 32 /space put + dup 40 /parenleft put + dup 41 /parenright put + dup 43 /plus put + dup 46 /period put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 55 /seven put + dup 56 /eight put + dup 57 /nine put + dup 67 /C put + dup 75 /K put + dup 81 /Q 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 105 /i put + dup 106 /j 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 120 /x put + dup 121 /y put + dup 122 /z put + pop + %%EndResource + + userdict /pdf_svglb get setglobal + [/N232/DILVTX+Times-Roman -1 TZG + userdict /pdf_svglb currentglobal put true setglobal + %%BeginResource: font IGTKPC+Times-Roman + ct_CffDict begin + %!FontType1 + 16 dict begin + /FontInfo 13 dict dup begin + /Notice (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development; Cyrillic glyphs added by Valek Filippov (C) 2001-2002; Numero, infinity and Omega made by Dmitry 40in (C) 2001) def + /FullName (Nimbus Roman No9 L Regular) def + /FamilyName (Nimbus Roman No9 L) def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -100 def + /UnderlineThickness 50 def + end def + /FontName /IGTKPC+Times-Roman def + /Encoding 256 array + 0 1 255 {1 index exch /.notdef put} for + dup 0 /.notdef put + def + /PaintType 0 def + /FontType 1 def + /FontMatrix [0.001 0 0 0.001 0 0 ] def + /FontBBox { -168 -281 1031 924 } def + /XUID [6 5020931 ] def + /StrokeWidth 0 def + currentdict end + currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3EC8DC423323 + 00A152553EC9C9C51591C81BB5A2F58753878D92B1C73E948BB360F467A7D593 + 2446E52E22935D5D0316634839C917AE2BE363D6AE3760363F748EAAEAD9AB74 + D863835F45718D23FB3980D0C645610BF765847F4BC5CB03391BDC9D40A6A460 + ABF0D95BB6A176DB5088A1068A0DFDC266C25ADCBEF3E5472E03E0D29BC6801F + A2AEAD77E33C825D7C534A1D7572F4904734D34A8EB5CCBF6AF4BD16868351B4 + 9720597C58AD9250B850406E3B7095164E634F096B16B87B7EB1DA7059CE66FD + DF08D200E8C5AE20931835F16D7D7ECCDC34AB3F57D265A00C5D0A72E3CA8B4E + 49BA6F0CBA0EC0987186D1A03F59396A66B8598AA6B0CB27BECD323BCD56A450 + 6FF06BDE9F9660206894E244782EE2A4F9F2095DB9D302903551DE228BD73649 + 8ED42C07EE7F3F8AE376C27370F6597A701D2142320B3893171D130CAC2E1B3C + E59E06FB14DD91901F8EE7567D0040934052E6AD60DFA3C126257D5CDB4B68B5 + B56FBEE67185463F7B12BFB9C19E7E97DBA924861E9E608E22865BC28EB29D26 + 0D8BC0804D9952BA0D22E8B6F7FD7E1A8452A0CB318D6B54F69EDC6536190766 + 899A59F5C772A33448031BB2F6754DAE1C12A021160B276434E0EFD0514FA1F1 + 62E5A8C7A0E7D34ADAB439E68A74679529C577A8121C9C7A767E8DD9DB28529A + ED6EA385AC394740E3DD3DBAE66C6A47CB1940EFF6139A9884C0F47C50DBAC50 + E6BA0179B53814BC5B7C0A549CB3CC2522CDEADE767AF894F3ED46A977CE8CE5 + 9278E1BC59986D428A39EBB5FBAEF2365F61CF569F74A87572F384175447E977 + 2F65FD764BB71FC5DB33DC0C60E9DC28E7B9D8F9DEB4C70CFC9BB72A758F7CFB + 8ADF1F632B3AA4F39D9568424F78C3C54DED65A13A4A5A802A3A47E8DF4ACB6B + 3E452224D2944B77F91EB545413DA6DDAA435C5B9FEBA826132604ADBF708EF8 + EFEFCB2420FBA2D86DACBBC5AD92AFB2407E4559A6F21E4B01B7BB8EC41C53DD + 59E55678703A99F7B6E52442B840FC9521FC1C3AC6FA580046FE5EFA8F73D2BD + 330D6B10FBEC163C6849AA9DFB222DED8527C89DB2FB4150CA543604EBB34BE8 + 19FCC9C8099109AEA0543C9545DEBCF8D564E0769CB56BFF435FC652A7C95EF5 + D602AA6E065355F2274C5963BCB5253548343CAB0607D13BDC987064365DF859 + FE644040D939A89C379282F905229E37E630B5A2D1F8B0A1D35D40B241558BBF + D4703B4D3DA2CDF748D72631748C4B637FC1F6CD2FA15A7B6EBF43070378EFD9 + A6283B963E86FAAD60241C7B159B3506806F90ED4B5C071653F5E22CA4083454 + 01424AF522C7F0CFE5C21579250B6242B2CE1A614E2126491842D0507E8F2551 + 64EC9327667CD6F22AFA0D8A0FB82883D423E487BDEB0D2205A9B75753586740 + 522A2ED8693F5F0FC962E692421B5EF592F656A63C9CA1153EE3527D3D7D027E + 96FD5EFC82651A52EC8E29DA4B4540F729E9B5825608EFF341BE58F7FA7A9360 + 9E813573D02A8AA765EE86B26B3459AA5B6980C18F34E9A9343AC3DB38D3922D + 64E22380B6754F1901D76E5A16922D946DCDC3B1C04BDE3340811286B0307E9C + 8EB95B846C24DD618B0BEA484E652A92B2444F27427F1D9A8ABFDBB6272EE783 + 2A62ED1D1CFEB339D9658F3772E963853B4E661527BCAD492B05B2FA3048BEA6 + B5145BBE74946E39D821891DDE2DC66DCE584B77D72511F9A9A9B7F837A50E7D + F4887B9C9ACEE8D28B80CA591BF5E111AA3507C6D727ADE9EBF5E4EC33DED7F2 + 0A4466E507587CB37B9596409E8E0768D4094C213B228FEFF08928857DE5A894 + 7FC70C9C55FB2E3C50D5DAB947CADE18678895A057BCB5C6D61C46580356B0AE + 06F8FEE166CCAF5AE95E97659DC26F2AF8F9E244C11537DF771D0E01831CFA8B + 3A0D6247DBBFFA44AB6C63E7CD2B445C820E40A20D9748323625B913F61E0625 + 54DF1F8436CFCEA6F248C3A919412B2FDCC5FA2FC452E6CED873DEB244E7EECA + 2DF47BD76A02110EE58C0E4086CAD3A9A77FF50CE01E5461933FF1A6ADFE7ECF + 58AFCD9BEB0885AC25C11DC203BFC402EF6645D08C664D3DCD7345C0B51CFCA7 + 02356A64A2AB968942D2FEFE1F617EF6B973EF1797A1AA3377DBF4DA50143002 + C1FDBE95E48AF705BB2DACD2B8462533BC304B1129D3EE481C26C9678D3984F4 + 97890EAC2FEE266AE2C4C6FCB9157156C987970ED1DE135347C47EC5FF985217 + 43AA507A566E5DE7D69916294885C3FA2E4158DCE32C8936F2C1B37E73E42F14 + 9ECE4C6512A72472B62F2D76267CB65ED2D994C6FB0499CE61E585330CE8365B + 7EA6586E6D0E5C0D54E85363B722866097C207CEC92A3808C26016F1FCEB27DE + 46291800327B151B642756E186C425A9AF0E34BA2F5C55DB9FD1F447C01F3F27 + FE468FB10102EE268F801DAB1C109CB2F2019F19211062B227A492BF051CDA21 + C4CF59CC225BF6DD65D46FB3DE191662EB7473E8F99889963A54770E73E298A6 + BF3B3EB81874B3B5DE6914E0AD0AFAB73C4E527D15A591B0FFDC972A49489284 + EEB276152FA614433C85D11D979049E4FE112182379647239BE99973ABA85D3B + 6F7AD8C66D4C2F71E6B99AECF56B52F22713AD4883EB6724F9B83E48055750DB + F524BF40E13758E48C72DC1FB9A31C1262A5E0B3233364B337BE13C503E478E4 + 42D91AE0ED6BD04031545DAFD0C51DA20DD403BB9B64EC42508EF47365C3DF5B + C65780D41AA8237D511EC4BCEBA1F063536D99C5B42A3D17A14EE8C41354241A + B36665957AB798BBA551024AB52EAB805F9ADCD8860722605CB9B7794DEAD02E + 9D885669AD1DA4C42138A69FC37A1AF0D94C631E85E08EE7FF4C2591CFD373C3 + 81F5D7EA3884E7359F7CADFCC064D3F2020064BD7F8C021DB5B31E8B945B57DA + 4764A89EBD63DF306591E4D91EB71019FA28200985863AD3199CF5C0EA775DE9 + 8DD6C427C84CCC6EB665BE68623A7A0E09FE9BE7DEDD6A4283194B7978445415 + AD76358A5D80A42B921C980D369302918E7EC6FDE5F700245B7BD405403AE0CD + 859063B636B48040C2BC427539328239CC4061658AA0A65C2EEC29B7B5BA849A + 7E8AFD16574C6B89C591E42FD853125B86754C904308E7624F1841BC30BACDCA + 631636F33A4B584BE6A97A059862C5CBB9BA6F40D2FB0186BBD02AE289E7656D + 8BDAF83C67FFBAEA7452A4C341C5DB56065F5178333BDAE5BA2CE2C1CA3FFF45 + FBAACE206ABED7A2489392323AFEE7D8E9D78F4440C0CE80B21201C3A36E3F32 + AC8A58812C6B30293456838285F9ABE05BCA4DA1D49A1AD515AD15D49363CADC + 8D7617066D5DC6F0906E2319C7246EB3045C1BC3CED9D3CC84A497BCF6BCEBE4 + 9934B94C7A53909D63C18989A3A5B6482D31326785B437FC2DF9C24E5D081A5D + 5BA74812CC98D84E3B62435F29183E5A42CD437F4122EC60880FB74A151FEDE2 + 5ED113D944180F339B2EDDE01B4C43B9661B95256CA836BA93F4E489323628DF + 4458F9D6DB29C712FE1BEC80944007C92EB84B0949C34CABEF23D495CA08B72E + 2C7AFE9EDBEA3FAC2CC602B0DD49777AC631618C0C68FF063B277580425880AE + 60B46A9457AF32517EBE4CB8AE6D54B67008CFB8548807B887345D13A72DD6F2 + 087507FDF93A00A7421C6F0129C1E2C9F88ACAABC7E7EC537D101DEEAEFCF6D5 + 56556EED01ECC82FAD8AFD8A5A655C9ABE45C5513A205493F79E284AB1F1228F + 26D1EF8F51CD96985D6953B3235535BC44BCA134B01C4F1D615B4854ACB290DA + 25C469B1EAAF5EC106D81DC561AAF6391FD2C3B401E282A2836B1D71DC4DCCC7 + 662A3B51BD78452BA00D0E42DB5678160CD5E80C81106072221C64A42460571C + 2FC0632E75FC33C7B66299F643B4A573A941950B08AD61E77F9B229C4ABE93BE + 4A69D3BE57462E79A8C4DBE2AD0D7007D9435B3F04D33069076EB81C4D595712 + F590378451AD3DF42380CA6A525038B1BA0D06BCA499C86755F9E4A379B11AC8 + 051ADFFCB04A38D53B28E56454554BACC83FE89C30B72F4983BE6FA8B772D059 + 8E96ACC016102D9865475787A83F9BE5359E243E5EF1446A03BB9EB18EA9B8EB + BB1520ECA152C32B12237A5E7BEA5B22C7219E69B723A02A660147282E48BBBE + 739AAF23633BE6816BF30280CAA6985C5D7B3EE88ECE414A048ED057E098E64E + 05B547845B9F4A75765760EB5032E76D838353183E15244BB068A6685EE6CEE6 + 517BD52AB83433A24C06550B77AA1598C5AFFFAB8B82475FFE3966BE0E7BA20A + A958DAB80CD41D42FEE30471178995311A7E7234A04D86E87C27DC704B38890D + 70869BB2191C8C19A06AB437C991E04EEE6A29B0366B805FA89800DDD6F4D4A9 + F075252144BD2E9394EE238DB8547C15CB2D0D4188AFA9CEDF053E742B5546A8 + 6087F22EC2C010A3CC5B6F4925A9AED98A638B665697457E951950049DF6B097 + 8A7641C7BD410FC57EB1B050CB29905728C53DD122A5E7755E212BA68CE151CA + 2F8236AEEE88287E5D493135EE70EB1F838CA9AD049D784792CD98128F9EFFBB + 47EDF13DDDB4BF670E6443A6FEAA4DA3DEB8AB5E3CC2B43AECBA1FB045C8F498 + 49415E63B4BD36F2311A2FA3429428C4D3F1BDD10A5902EEAFA98D909FE23B0B + 8DC86DA58A3F8CCFBB8AB2CBB272682952A396857A0D6530F4D69E94AE334FC6 + 93A2F1D8FBD8F6584D44AC8A55A92F516116C57550FC93C931BCAB7F960356B4 + 08A350FBF25740EDA2E36816E38A31DCCFB01532FACF6AB7F85EEB01187BA8B0 + 19AA919D0DCF4CEF4DF1EA704AF4BAECA570D5353202EFCF7E1161FAAAEB6493 + A1F20812E84CF362D4CF137FA7CF513391E6A843A6B06609E22953131E94EC95 + EC5C749C028728FC23F3943243CDDEBEB7EA7080285CC01B3BCB98270B10D13F + 434E49DF5E814C3D4926C0441F453206AA88B43798B113972D7001A60BC9F61D + E06BB1D297BDCB71BE89E7489FF48B90192010585D11E6E24E1F5F3186BE8265 + B200C5AD3DA22B58DA8B647A6833BD58AB92DC68182D25105C3ED0B78407D0E4 + 568880E50B3E0602928A843A1908B63C1B471A8C9653E8ED8FF4B82F6DDAB5DB + A593655AB58F1BFCE835AB5CBD87ECDC50541F1046057F28F5F6F1396DD8D467 + 92D71D76A81D6AAB64072A7793CAC9F4ACB3F7F417B8D49832D3D032526219DA + 9A409AEBB8C246C9DC6540781BE463C0F82C49E5AFE9AE6CC999422E10A89578 + 37ED554BD176D460196C3DED288E2F03426BC18CA05A8B3D00844E0CBB508342 + 7FBD44661718A282AEA8EEE3562086CAD7D29C0190C5ACAB675EA7A79B96727D + 692FEA9439DF5CDB0781ECF8CD11A28EDF7BE2F93F89C613AEF9E761041FC079 + 4EE186C714B6B06A0B597D9052082D9FA6A756A9A3B76D2F949A03D80B688541 + 4C34810C1EC655C98CB727AD1834237D275B0699C3C979A5C3FE5B9A8BDD7CF1 + BE17CF02D0F389972D62CA59DFAE6E701E985BE45C25173247FF905A75DFC075 + 2ACACA99685ABBC3317387595DE4F288DF9B526A4C0133FAE06620287DA0F740 + F4666AE712A63701021E45180278348D408831CD92D7D4A9F039C37B39CEFB31 + D1B34CD0A4D0A2B7943B9C1326778C4946D4EC7C66C2EF6D484B7672CE8A195C + C255BD4B04E8D83A285F5907A261A3E4A141EDF46D49444C9B66E1A705EB6BC4 + 5FDCBEC759129E9063EFB3C0781AC2603E739A036DB47E03384E3CC6C3FBC051 + 0319957C2E91C9631BB12122349F225111A823FF6F4B1C8E4605E26E209F8882 + 6A1BBB793159AC8DA4BA6071071E9E96E8E58EA6BD8B801D7B30822CDAA7C66A + ACCD0688419950A49FC39213EBFA41183F2E4448B7589DD18FC876BDFA50BAD8 + F37D6F36F075D639C4DFFC7EC9DB86E51285F2D3881C7D7E2D28E102B0F18704 + D311CC642A12F2B2F00233E16311C1F81A4F04C3C8D0AB3784E0D242112C7CEC + 2410263C89B213AC92706DC13ECD31CE8C05C41D52AFB80827F56AC3D3CF00D0 + FC19EFFE31B406140D3696571067DFCE6E37C22142EBF84E2EC8C91DA8224348 + 31C7B945FD22818DF8F6743732FCA56E66B72139A10514031D418F06C5B7B68E + 56BDB8DD2DF868A22732C5998C55E33B2B69D5FE69B7279F854F98AA5227E922 + 834DBB1A1867427E0764AD47FD11BADD89D779712BDBDE99EA49950BE49ABC21 + 91A0C681AD474A3480AC79EC892459E2D28057528114AA7AAA7C5236B3EE72FA + 883901297206A6CC871078FE6E7348633D2B414B034809A511331FBA3517CA40 + 5DCFEFADC504ADE85166E7967C202164443D3CAFFE525B13BDB81995A30E0498 + A41E5C48820B6F5100E37BBAD535A7D9966A334D5F9E8F0A77DE90DF3208000E + 573598CBA6DD825EC9B7D37D7693431960C28C0F68FF11F39BF81989A64722DB + 7B6CA763B3C67C9B250E0E69F991D1EF02FFF79285044468046BF7212F100361 + 9640CB1D54CB86D5F842651D956C7BA4C5595A56D8D9B4B438FFBE281B9C784A + 51883FFBAC08B35D9B82702128443B8DC1DBC773E578BA4EE18DA698E6A27213 + A03238EA2AB4DC173FF7F761C1990351BC5B22A01195787B603766BE94281EEC + 40EE8DF78D102A9E1C5EB97C040409EFD7C1735E7219FBAB0C821C8F09DC7571 + 03C83182DC610C3CEFBDEAC252586C27843F1C237C04F67E0C5698D57EB23116 + B2E5AB227476429D2219F0696776C68F4F52F0A2E1A3E6C9008DCD0C118514A9 + 2F992E79BFDED36A0844DA3C500F1B6A5D2D3B90E806A19CA7247CC384FE8212 + 5BD01702DD5E2E463E8BA5C5598D7C58AE171196C18ED652AE2DA214FC45BF8E + 7441A166515A304545107A59B6B57F66B86545765341A70962441E235728B309 + A9DB85696E3A4324EC8A4AD7440C0E6D8DA0A783C69F78E2ADAC8B74BE0E1FA4 + D723D84AB714C57DF6638DAEE6BD265F0C63B053C76905DE40C9D70EA0A02785 + 8D2D5E7919E3C0102AE1E35CB152EBEC9C9E3B69804FE42F7D17C05925C10749 + 824B0EF5BE0D03DBA8FB6A79E238983A44D20071AA6A8E5C34177407BDACE0CE + 3A506FB7ED3A11F3AB9C1BE9422777DEA0A0620D5A9878229951B663E29A38EE + A7475D4CD5A96B7414F0F6C9612ADD5950FC0F0A546994989DDF10073E2ED99A + BDB97BD30A655FC9320BFC9F1057A294D4AE5F7FB62041A34321F2EB30B8C171 + 917570069B23D3F62C3520ACAA6FEA7BD4282A01734CC176705A588FDEB99832 + C397735F1DA0CBDDD7B7DC1E929CB055CC7E4E684FE9937EC1BB2A69D2AC54D2 + 5A466B3C8AECE0D4BCC23CCAFF3897BD2A856122AA36028B692A1443C1EA3699 + 5A7823EE455AFF62FD1C9E17930F9942166D05F4B7559782E34E3F5A6C450E19 + 8A718A3C79B714EF70158ABBF6F341D11D90ACB81DAB9532CE84786E2A7EFBFA + E84DB015BA5C4B242023C87F09747814A5DB9691906528A267FD62D760EACFB4 + 9BB63EBCCD1665E3BAD59DD33CAA40807925150573B1AEAA2F2B1B8E9B1B318A + A20C9FE6AA502A43145448231A2B8D3A6BA72ED8D1BA968FE41E5BBD755B58A0 + 2360CA3837FC9F921BA9C6236BAEB2FB3AA447FA6D873A70F861DCE41167DD9B + B1B484955483A1AABD5CCC315DA7CE5DDA138FE0D56757B586AE2CC97E0156C4 + 36B416D450C8005C2966C16752E903CD89AC9DEBFA87239B18FF47CA7B0282EC + 3493417CE098679F5E11D36D92D024482A3E048727FD764E83C6EBEC9627CD89 + BE5301B4E921FC96CB2B7C8F9224EAF2ED8C21B0B5B8F1952BB1811A3D4C5999 + A1E55610D6A13DBD516F25A0A96FE126A649A91A3CC4625992FC10837F162D5F + 5E6EC8593C9622B46B391204F1A9E6D31FB96E65A68487DD75DE8A96C431D4DA + BCE04CADC6F3FB833839D27D5A38DA42A01E445817E42B0B6AF3DA1F16BBE5D1 + 108827D4C64497A27E754C067E619014D7B3D2B8EB47071E9CB2E7A9BB83F2DC + 2719A0C46AF5CF5AF466DD314E7D56111D4EBD84C972424409FEBE09D50D40AA + 5D1C2108FD9AD8CD295E94327F4E3EE169AAC79713F3FFA899EE695A37F207FB + DB4F271AE4E8A14C3D9EC31F95BA69B5FC6AB98F4654865D61D1EFA523715F66 + EBBA7C5925249266C204FECF81A5B81609AD3CDB2CAA97A1B70E444F3E0F0057 + E0A67E6BE1B284153AAE85BEB67BB656D9AA6F1ACCE79DA0AFE97D154645DBD5 + 9252F7750FCA5A64F46616FFE61D2BBF853B810BF5110FAFB048CFB9132E63E3 + 2F44266BEF2BEBB0632BB7355372CCB8055C6D761EEF33CBF08B09DA21024D5E + FBC2A2C9EC56D009EB582641D57B0C729099D6F3D9B67B484EE7AEE1774D7F0F + 3568439CC759184B6B9AFC566EA8137FBBBB70ADF8838C062F192999449B2455 + 803998B90F3B8786026324B6A9B42F21E96F37EB449DC7382D3EFE43F1C5DE5D + EC39321D196E125D69D72ADE009D062E8326C06D4000C4BC175D46053FE90E52 + 8F7DE2FBC1BBC4C4BF26CD297F4A193347A986553BB6DE5AE6AF7394D835A5FD + 051627574ED6AA7CFBE514CB5C26AE9F3DF279B667386711A2F7A856F78CBA72 + 57E75DC4BF8A1E0E164AE2EDB13C602496391FBB860F283681F07ACD69AEC2F0 + 3697A0DD5C35F088E606975773E08A9A330D3D743CC44D4BF6D5D6695A4E3D99 + B00D0CE7A4D3BE86EFA1E1601786B83B7AD6CCC2C22754414E833A9275D5A4D2 + 2BE8709043FD5A5A0CF430EB8004A53C3677F6139AE04AED8B36484E29E63DCB + A03D6B97CB9AA8DF2CE8E1142990C762E307437C7EA545B1FF9E3F16B8234257 + 1B033A367F1EEB209D8869DF75225ED6878337B23D86A890248217D3C7B49AEE + 822B10B0AF79B909147A29D2AAA3F1B1C1FE1B9B7FBB3FAEA82F3C8B7BDE56AA + 417E2809806780668DD0E433148EFD73676769218BB695FB603E542AD4B02FF4 + 8F5EFA8BB98B3264392E35EF6AD4A99457478A38AB941330802D88035E6C3449 + 71678801966FD5C5CEC8034B6B0458949104AB1894A2A0D9103BA7C34C4DEA3C + 26A9ADB1F93F7FAC7D807A75813B99F93E12252C8CE4B60CA8CB79718196D97E + 47B06A9BECE264A2066CF93B9A855442B6B86221DACD2C20EA88DBEF7B7C0E8B + F88220143FF0F313334875E86DCE7BA8266BCEA4CCC3B7340F7023D34FDF517E + 1B4D1708AF0D6949C44EDDEBFEEB9586DEF7374C950B85FD1653B78C7F55BB09 + 044881EBED06BA0FF66017F33281D2EDCAED10F7E6556D1975D31F95B343DC20 + 04E67C5398F32B5D68AC544C2B8473B064F4DCF44447CE21760DD0D32B6839BE + F333B6A8104B78CEFE46FBC5A1F86C59DB3E59A10A9DC44D29F580727B099BC1 + CA33F6AE4E4E1767A3BA831BF2F936A6CD8689A971E9D6406A9234623FB2506B + F799A892FA0CF6260266E31ECAEE110D67E59297B87C8E3FB339DA57D788865E + 054A3E1D1CDDDBCF6C1466E3BEC67A08432782B3314B48A5CFCF342FFEC839DA + 93D343BC1DFE7950DA8B721265A4B96CD8706A76CAF9137A31E0E9DFA11AD748 + 0899D8897B9CC29D3BF49188231FD161DBE8786846DE566BAFBD0F4E22942904 + C5A243780F0A54FFAB3FD830787142B4DD5A1034FB85712479659F3C8B6CC08D + 0E81D4775344CB2B883657B4FA53161CDD050FC34311E17FFCAAA2006DC08645 + CC3AED298F0277C0688D155D66CA4FF5C1932B535BFB83CD3B3E86CF52F4F311 + 14F94AF2BED310C65117F50FDBF32F9077A19E0A25E0A04B153D08182A8A8F1B + CDDAE25552B4D854ADEA70B664C63B85B1D781F87F925300FFB9324B6E135D4C + 10F2F7C2340985DB630335F8C60F8845E3DDF31A913E772DD85C1D1256DEBED9 + F9ED8299888139E762D7BCCF7ED58E60A0FBBDDBDB160B6AEE4CCE020DCD07DD + 8041D58DA140AAE747E22177DE87008F7CCCD4C669EED997023443879DC29713 + 80241B6F3C42B3683501A047B3082869AAA7A375C72F37E52DC0C962A9D6A9C5 + EC9EFB77E332EBD37D5040F0F2F3EDBC37ADA1CB851840CD6A1BAFC2A11B47B4 + 03F618FEF23D29CD2D21D72BDC0E57F2C4DF282531FF75A9B612AEFBCD6F5C2E + 532285155B5927ED957D9A50FF31E58C84C608F0240148A9035F7B793E54E416 + 99483205B2256C9B4A9F2D25CAFABA33C7943A83D1720AE6AAB8630FAC185846 + 97DCFB7973F60564964344A6CDDDDBDB1AE29E17A2B23F5A50ED8FCBDBBE9904 + C3A9517E68E73EC43468FF11AA40663DCB90293D86141FCBF301D76D5B425670 + EF3A324DA415441964CF260C846BE6F84AD877E58185132703A2F1CD71D12B32 + BB6A148EAE23289248B7AFDA9929245583EE1CFB69F7BA4A6120DAD06562A9CE + C2A5E47983B6ACD123321A7CE4B3634CAE9BC63D7CDB72 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + cleartomark + /IGTKPC+Times-Roman findfont /Encoding get + dup 0 /.notdef put + pop + end + /IGTKPC+Times-Roman findfont /Encoding get + dup 0 /.notdef put + dup 32 /space put + dup 40 /parenleft put + dup 41 /parenright put + dup 43 /plus put + dup 46 /period put + dup 47 /slash put + dup 48 /zero put + dup 49 /one put + dup 50 /two put + dup 51 /three put + dup 52 /four put + dup 53 /five put + dup 54 /six put + dup 55 /seven put + dup 56 /eight put + dup 57 /nine put + dup 67 /C put + dup 75 /K put + dup 81 /Q 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 105 /i put + dup 106 /j 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 120 /x put + dup 121 /y put + dup 122 /z put + pop + %%EndResource + + userdict /pdf_svglb get setglobal + [/N225/IGTKPC+Times-Roman -1 TZG + %%EndPageSetup + 0 0 612 792 re + W + n + 1 0 0 1 133.768 635.575 cm + q + 0.649887 0 0 0.649887 0 0 cm + q + 0 -1 1 0 0 0 cm + q + q + q + 0 0 287 567 re + W + n + q + 0.0999908 0 0 0.0999908 0 0 cm + q + {} settransfer + n + 12.8125 5.99648 2853.6 5654.4 re + [/DeviceGray] cs 1 sc + f + 2.39999 w + 1 J + 1 j + n + 10.4126 3.59662 2856 5656.8 re + 0 sc + S + n + 387.212 711.597 1725.6 4836 re + [/DeviceRGB] cs 0.830994 0.838989 0.82399 sc + + eofill + Q + q + n + 1940.01 711.597 m + 1940.01 5547.6 l + 1942.41 5547.6 l + 1942.41 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1940.01 711.597 m + 1940.01 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1767.21 711.597 m + 1767.21 5547.6 l + 1769.61 5547.6 l + 1769.61 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1767.21 711.597 m + 1767.21 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1594.41 711.597 m + 1594.41 5547.6 l + 1596.81 5547.6 l + 1596.81 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1594.41 711.597 m + 1594.41 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1421.61 711.597 m + 1421.61 5547.6 l + 1424.01 5547.6 l + 1424.01 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1421.61 711.597 m + 1421.61 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1251.21 711.597 m + 1251.21 5547.6 l + 1253.61 5547.6 l + 1253.61 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1251.21 711.597 m + 1251.21 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 1078.41 711.597 m + 1078.41 5547.6 l + 1080.81 5547.6 l + 1080.81 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1078.41 711.597 m + 1078.41 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 905.613 711.597 m + 905.613 5547.6 l + 908.012 5547.6 l + 908.012 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 905.613 711.597 m + 905.613 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 732.812 711.597 m + 732.812 5547.6 l + 735.212 5547.6 l + 735.212 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 732.812 711.597 m + 732.812 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 560.012 711.597 m + 560.012 5547.6 l + 562.413 5547.6 l + 562.413 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 560.012 711.597 m + 560.012 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + n + 387.212 711.597 m + 387.212 5547.6 l + 389.613 5547.6 l + 389.613 711.597 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 387.212 711.597 m + 387.212 5547.6 l + [/DeviceGray] cs 0 sc + S + Q + q + 9.59999 w + 1 J + n + 387.212 711.597 1725.6 4836 re + [/DeviceRGB] cs 0.591995 0.595993 0.587997 sc + + S + Q + q + n + 838.413 711.597 m + 838.413 862.797 l + 2112.81 862.797 l + 2112.81 711.597 l + h + W + n + n + 910.413 745.197 1202.4 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 910.413 745.197 1202.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 975.597 m + 2019.21 1165.2 l + 2112.81 1165.2 l + 2112.81 975.597 l + h + W + n + n + 2091.21 1047.6 21.6001 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1047.6 21.6001 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 1278 m + 2019.21 1467.6 l + 2112.81 1467.6 l + 2112.81 1278 l + h + W + n + n + 2091.21 1350 21.6001 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1350 21.6001 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1760.01 1580.4 m + 1760.01 1770 l + 2112.81 1770 l + 2112.81 1580.4 l + h + W + n + n + 1832.01 1652.4 280.8 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1832.01 1652.4 280.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1944.81 1882.8 m + 1944.81 2072.4 l + 2112.81 2072.4 l + 2112.81 1882.8 l + h + W + n + n + 2016.81 1954.8 96 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2016.81 1954.8 96 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1635.21 2185.2 m + 1635.21 2374.8 l + 2112.81 2374.8 l + 2112.81 2185.2 l + h + W + n + n + 1707.21 2257.2 405.6 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1707.21 2257.2 405.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 368.012 2487.6 m + 368.012 2677.2 l + 2112.81 2677.2 l + 2112.81 2487.6 l + h + W + n + n + 0 2559.6 2112.81 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + -5.79979 2559.6 2118.61 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 2790 m + 2016.81 2979.6 l + 2112.81 2979.6 l + 2112.81 2790 l + h + W + n + n + 2088.81 2862 24 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 2862 24 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1577.61 3092.4 m + 1577.61 3282 l + 2112.81 3282 l + 2112.81 3092.4 l + h + W + n + n + 1649.61 3164.4 463.2 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1649.61 3164.4 463.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1774.41 3392.4 m + 1774.41 3582 l + 2112.81 3582 l + 2112.81 3392.4 l + h + W + n + n + 1846.41 3464.4 266.4 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1846.41 3464.4 266.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1092.81 3694.8 m + 1092.81 3884.4 l + 2112.81 3884.4 l + 2112.81 3694.8 l + h + W + n + n + 1164.81 3766.8 948 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1164.81 3766.8 948 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 368.012 3997.2 m + 368.012 4186.8 l + 2112.81 4186.8 l + 2112.81 3997.2 l + h + W + n + n + 440.012 4069.2 1672.8 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 440.012 4069.2 1672.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 598.413 4299.6 m + 598.413 4489.2 l + 2112.81 4489.2 l + 2112.81 4299.6 l + h + W + n + n + 670.413 4371.6 1442.4 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 670.413 4371.6 1442.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1284.81 4602 m + 1284.81 4791.6 l + 2112.81 4791.6 l + 2112.81 4602 l + h + W + n + n + 1356.81 4674 756 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1356.81 4674 756 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1973.61 4904.4 m + 1973.61 5094 l + 2112.81 5094 l + 2112.81 4904.4 l + h + W + n + n + 2045.61 4976.4 67.2001 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2045.61 4976.4 67.2001 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1517.61 5206.8 m + 1517.61 5396.4 l + 2112.81 5396.4 l + 2112.81 5206.8 l + h + W + n + n + 1589.61 5278.8 523.2 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1589.61 5278.8 523.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1318.41 718.797 m + 1318.41 910.797 l + 2112.81 910.797 l + 2112.81 718.797 l + h + W + n + n + 1390.41 790.797 722.4 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1390.41 790.797 722.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2031.21 1021.2 m + 2031.21 1213.2 l + 2112.81 1213.2 l + 2112.81 1021.2 l + h + W + n + n + 2103.21 1093.2 9.6001 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2103.21 1093.2 9.6001 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 1323.6 m + 2026.41 1515.6 l + 2112.81 1515.6 l + 2112.81 1323.6 l + h + W + n + n + 2098.41 1395.6 14.4001 45.5999 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 1395.6 14.4001 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1856.01 1626 m + 1856.01 1818 l + 2112.81 1818 l + 2112.81 1626 l + h + W + n + n + 1928.01 1698 184.8 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1928.01 1698 184.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 1928.4 m + 2007.21 2120.4 l + 2112.81 2120.4 l + 2112.81 1928.4 l + h + W + n + n + 2079.21 2000.4 33.6001 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 2000.4 33.6001 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1774.41 2230.8 m + 1774.41 2422.8 l + 2112.81 2422.8 l + 2112.81 2230.8 l + h + W + n + n + 1846.41 2302.8 266.4 45.5999 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1846.41 2302.8 266.4 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 656.012 2533.2 m + 656.012 2725.2 l + 2112.81 2725.2 l + 2112.81 2533.2 l + h + W + n + n + 728.012 2605.2 1384.8 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 728.012 2605.2 1384.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 2835.6 m + 2028.81 3027.6 l + 2112.81 3027.6 l + 2112.81 2835.6 l + h + W + n + n + 2100.81 2907.6 12 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 2907.6 12 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1716.81 3138 m + 1716.81 3327.6 l + 2112.81 3327.6 l + 2112.81 3138 l + h + W + n + n + 1788.81 3210 324 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1788.81 3210 324 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1944.81 3438 m + 1944.81 3630 l + 2112.81 3630 l + 2112.81 3438 l + h + W + n + n + 2016.81 3510 96 45.5999 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2016.81 3510 96 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1553.61 3740.4 m + 1553.61 3932.4 l + 2112.81 3932.4 l + 2112.81 3740.4 l + h + W + n + n + 1625.61 3812.4 487.2 45.5999 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1625.61 3812.4 487.2 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1532.01 4042.8 m + 1532.01 4234.8 l + 2112.81 4234.8 l + 2112.81 4042.8 l + h + W + n + n + 1604.01 4114.8 508.8 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1604.01 4114.8 508.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1443.21 4345.2 m + 1443.21 4537.2 l + 2112.81 4537.2 l + 2112.81 4345.2 l + h + W + n + n + 1515.21 4417.2 597.6 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1515.21 4417.2 597.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1688.01 4647.6 m + 1688.01 4839.6 l + 2112.81 4839.6 l + 2112.81 4647.6 l + h + W + n + n + 1760.01 4719.6 352.8 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1760.01 4719.6 352.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 4950 m + 2007.21 5142 l + 2112.81 5142 l + 2112.81 4950 l + h + W + n + n + 2079.21 5022 33.6001 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 5022 33.6001 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1798.41 5252.4 m + 1798.41 5444.4 l + 2112.81 5444.4 l + 2112.81 5252.4 l + h + W + n + n + 1870.41 5324.4 242.4 45.6001 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1870.41 5324.4 242.4 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1596.81 766.797 m + 1596.81 956.397 l + 2112.81 956.397 l + 2112.81 766.797 l + h + W + n + n + 1668.81 838.797 444 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1668.81 838.797 444 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2033.61 1069.2 m + 2033.61 1258.8 l + 2112.81 1258.8 l + 2112.81 1069.2 l + h + W + n + n + 2105.61 1141.2 7.2002 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2105.61 1141.2 7.2002 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 1371.6 m + 2028.81 1561.2 l + 2112.81 1561.2 l + 2112.81 1371.6 l + h + W + n + n + 2100.81 1443.6 12 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 1443.6 12 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1892.01 1674 m + 1892.01 1863.6 l + 2112.81 1863.6 l + 2112.81 1674 l + h + W + n + n + 1964.01 1746 148.8 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1964.01 1746 148.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 1976.4 m + 2028.81 2166 l + 2112.81 2166 l + 2112.81 1976.4 l + h + W + n + n + 2100.81 2048.4 12 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 2048.4 12 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1887.21 2278.8 m + 1887.21 2468.4 l + 2112.81 2468.4 l + 2112.81 2278.8 l + h + W + n + n + 1959.21 2350.8 153.6 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1959.21 2350.8 153.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1443.21 2581.2 m + 1443.21 2770.8 l + 2112.81 2770.8 l + 2112.81 2581.2 l + h + W + n + n + 1515.21 2653.2 597.6 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1515.21 2653.2 597.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2033.61 2883.6 m + 2033.61 3073.2 l + 2112.81 3073.2 l + 2112.81 2883.6 l + h + W + n + n + 2105.61 2955.6 7.2002 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2105.61 2955.6 7.2002 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1901.61 3183.6 m + 1901.61 3375.6 l + 2112.81 3375.6 l + 2112.81 3183.6 l + h + W + n + n + 1973.61 3255.6 139.2 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1973.61 3255.6 139.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 3486 m + 2000.01 3675.6 l + 2112.81 3675.6 l + 2112.81 3486 l + h + W + n + n + 2072.01 3558 40.8 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 3558 40.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1652.01 3788.4 m + 1652.01 3978 l + 2112.81 3978 l + 2112.81 3788.4 l + h + W + n + n + 1724.01 3860.4 388.8 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1724.01 3860.4 388.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1844.01 4090.8 m + 1844.01 4280.4 l + 2112.81 4280.4 l + 2112.81 4090.8 l + h + W + n + n + 1916.01 4162.8 196.8 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1916.01 4162.8 196.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1817.61 4393.2 m + 1817.61 4582.8 l + 2112.81 4582.8 l + 2112.81 4393.2 l + h + W + n + n + 1889.61 4465.2 223.2 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1889.61 4465.2 223.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1803.21 4695.6 m + 1803.21 4885.2 l + 2112.81 4885.2 l + 2112.81 4695.6 l + h + W + n + n + 1875.21 4767.6 237.6 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1875.21 4767.6 237.6 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 4998 m + 2028.81 5187.6 l + 2112.81 5187.6 l + 2112.81 4998 l + h + W + n + n + 2100.81 5070 12 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 5070 12 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1930.41 5300.4 m + 1930.41 5490 l + 2112.81 5490 l + 2112.81 5300.4 l + h + W + n + n + 2002.41 5372.4 110.4 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2002.41 5372.4 110.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1378.41 812.397 m + 1378.41 1004.4 l + 2112.81 1004.4 l + 2112.81 812.397 l + h + W + n + n + 1450.41 884.397 662.4 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1450.41 884.397 662.4 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2031.21 1114.8 m + 2031.21 1306.8 l + 2112.81 1306.8 l + 2112.81 1114.8 l + h + W + n + n + 2103.21 1186.8 9.6001 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2103.21 1186.8 9.6001 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 1417.2 m + 2026.41 1609.2 l + 2112.81 1609.2 l + 2112.81 1417.2 l + h + W + n + n + 2098.41 1489.2 14.4001 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 1489.2 14.4001 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1865.61 1719.6 m + 1865.61 1911.6 l + 2112.81 1911.6 l + 2112.81 1719.6 l + h + W + n + n + 1937.61 1791.6 175.2 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1937.61 1791.6 175.2 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2007.21 2022 m + 2007.21 2214 l + 2112.81 2214 l + 2112.81 2022 l + h + W + n + n + 2079.21 2094 33.6001 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2079.21 2094 33.6001 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1791.21 2324.4 m + 1791.21 2516.4 l + 2112.81 2516.4 l + 2112.81 2324.4 l + h + W + n + n + 1863.21 2396.4 249.6 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1863.21 2396.4 249.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 713.613 2626.8 m + 713.613 2818.8 l + 2112.81 2818.8 l + 2112.81 2626.8 l + h + W + n + n + 785.613 2698.8 1327.2 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 785.613 2698.8 1327.2 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 2929.2 m + 2028.81 3121.2 l + 2112.81 3121.2 l + 2112.81 2929.2 l + h + W + n + n + 2100.81 3001.2 12 45.5999 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 3001.2 12 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1781.61 3231.6 m + 1781.61 3421.2 l + 2112.81 3421.2 l + 2112.81 3231.6 l + h + W + n + n + 1853.61 3303.6 259.2 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1853.61 3303.6 259.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1952.01 3531.6 m + 1952.01 3723.6 l + 2112.81 3723.6 l + 2112.81 3531.6 l + h + W + n + n + 2024.01 3603.6 88.8 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2024.01 3603.6 88.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1568.01 3834 m + 1568.01 4026 l + 2112.81 4026 l + 2112.81 3834 l + h + W + n + n + 1640.01 3906 472.8 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1640.01 3906 472.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1541.61 4136.4 m + 1541.61 4328.4 l + 2112.81 4328.4 l + 2112.81 4136.4 l + h + W + n + n + 1613.61 4208.4 499.2 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1613.61 4208.4 499.2 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1484.01 4438.8 m + 1484.01 4630.8 l + 2112.81 4630.8 l + 2112.81 4438.8 l + h + W + n + n + 1556.01 4510.8 556.8 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1556.01 4510.8 556.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1676.01 4741.2 m + 1676.01 4933.2 l + 2112.81 4933.2 l + 2112.81 4741.2 l + h + W + n + n + 1748.01 4813.2 364.8 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1748.01 4813.2 364.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2009.61 5043.6 m + 2009.61 5235.6 l + 2112.81 5235.6 l + 2112.81 5043.6 l + h + W + n + n + 2081.61 5115.6 31.2002 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2081.61 5115.6 31.2002 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1791.21 5346 m + 1791.21 5538 l + 2112.81 5538 l + 2112.81 5346 l + h + W + n + n + 1863.21 5418 249.6 45.6001 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1863.21 5418 249.6 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1608.81 860.397 m + 1608.81 1050 l + 2112.81 1050 l + 2112.81 860.397 l + h + W + n + n + 1680.81 932.397 432 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1680.81 932.397 432 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2033.61 1162.8 m + 2033.61 1352.4 l + 2112.81 1352.4 l + 2112.81 1162.8 l + h + W + n + n + 2105.61 1234.8 7.2002 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2105.61 1234.8 7.2002 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2028.81 1465.2 m + 2028.81 1654.8 l + 2112.81 1654.8 l + 2112.81 1465.2 l + h + W + n + n + 2100.81 1537.2 12 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2100.81 1537.2 12 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1904.01 1767.6 m + 1904.01 1957.2 l + 2112.81 1957.2 l + 2112.81 1767.6 l + h + W + n + n + 1976.01 1839.6 136.8 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1976.01 1839.6 136.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 2070 m + 2026.41 2259.6 l + 2112.81 2259.6 l + 2112.81 2070 l + h + W + n + n + 2098.41 2142 14.4001 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 2142 14.4001 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1887.21 2372.4 m + 1887.21 2562 l + 2112.81 2562 l + 2112.81 2372.4 l + h + W + n + n + 1959.21 2444.4 153.6 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1959.21 2444.4 153.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1371.21 2674.8 m + 1371.21 2864.4 l + 2112.81 2864.4 l + 2112.81 2674.8 l + h + W + n + n + 1443.21 2746.8 669.6 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1443.21 2746.8 669.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2033.61 2977.2 m + 2033.61 3166.8 l + 2112.81 3166.8 l + 2112.81 2977.2 l + h + W + n + n + 2105.61 3049.2 7.2002 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2105.61 3049.2 7.2002 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1925.61 3277.2 m + 1925.61 3466.8 l + 2112.81 3466.8 l + 2112.81 3277.2 l + h + W + n + n + 1997.61 3349.2 115.2 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1997.61 3349.2 115.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1997.61 3579.6 m + 1997.61 3769.2 l + 2112.81 3769.2 l + 2112.81 3579.6 l + h + W + n + n + 2069.61 3651.6 43.2002 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2069.61 3651.6 43.2002 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1649.61 3882 m + 1649.61 4071.6 l + 2112.81 4071.6 l + 2112.81 3882 l + h + W + n + n + 1721.61 3954 391.2 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1721.61 3954 391.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1808.01 4184.4 m + 1808.01 4374 l + 2112.81 4374 l + 2112.81 4184.4 l + h + W + n + n + 1880.01 4256.4 232.8 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1880.01 4256.4 232.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1781.61 4486.8 m + 1781.61 4676.4 l + 2112.81 4676.4 l + 2112.81 4486.8 l + h + W + n + n + 1853.61 4558.8 259.2 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1853.61 4558.8 259.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1767.21 4789.2 m + 1767.21 4978.8 l + 2112.81 4978.8 l + 2112.81 4789.2 l + h + W + n + n + 1839.21 4861.2 273.6 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1839.21 4861.2 273.6 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2026.41 5091.6 m + 2026.41 5281.2 l + 2112.81 5281.2 l + 2112.81 5091.6 l + h + W + n + n + 2098.41 5163.6 14.4001 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2098.41 5163.6 14.4001 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1916.01 5394 m + 1916.01 5566.8 l + 2112.81 5566.8 l + 2112.81 5394 l + h + W + n + n + 1988.01 5466 124.8 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1988.01 5466 124.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + 2.39999 w + 1 J + n + 387.212 711.597 m + 2112.81 711.597 l + [/DeviceGray] cs 0 sc + S + n + 2112.81 665.997 m + 2112.81 711.597 l + S + n + 1940.01 665.997 m + 1940.01 711.597 l + S + n + 1767.21 665.997 m + 1767.21 711.597 l + S + n + 1594.41 665.997 m + 1594.41 711.597 l + S + n + 1421.61 665.997 m + 1421.61 711.597 l + S + n + 1251.21 665.997 m + 1251.21 711.597 l + S + n + 1078.41 665.997 m + 1078.41 711.597 l + S + n + 905.613 665.997 m + 905.613 711.597 l + S + n + 732.812 665.997 m + 732.812 711.597 l + S + n + 560.012 665.997 m + 560.012 711.597 l + S + n + 387.212 665.997 m + 387.212 711.597 l + S + n + 2112.81 711.597 m + 2112.81 5547.6 l + S + n + 2141.61 711.597 m + 2112.81 711.597 l + S + n + 2141.61 1014 m + 2112.81 1014 l + S + n + 2141.61 1316.4 m + 2112.81 1316.4 l + S + n + 2141.61 1618.8 m + 2112.81 1618.8 l + S + n + 2141.61 1921.2 m + 2112.81 1921.2 l + S + n + 2141.61 2223.6 m + 2112.81 2223.6 l + S + n + 2141.61 2526 m + 2112.81 2526 l + S + n + 2141.61 2828.4 m + 2112.81 2828.4 l + S + n + 2141.61 3130.8 m + 2112.81 3130.8 l + S + n + 2141.61 3430.8 m + 2112.81 3430.8 l + S + n + 2141.61 3733.2 m + 2112.81 3733.2 l + S + n + 2141.61 4035.6 m + 2112.81 4035.6 l + S + n + 2141.61 4338 m + 2112.81 4338 l + S + n + 2141.61 4640.4 m + 2112.81 4640.4 l + S + n + 2141.61 4942.8 m + 2112.81 4942.8 l + S + n + 2141.61 5245.2 m + 2112.81 5245.2 l + S + n + 2141.61 5547.6 m + 2112.81 5547.6 l + S + q + 10 0 0 10 0 0 cm + q + Q + 24.8012 251.64 m + /N225 [0 12 -12 0 0 0] Tf + (C) show + 24.8012 259.56 m + (o) show + 24.8012 265.799 m + (d) show + 24.8012 271.799 m + (e) show + 24.8012 280.199 m + (Q) show + 24.8012 288.838 m + (u) show + 24.8012 294.838 m + (a) show + 24.8012 300.118 m + (l) show + 24.8012 302.998 m + (i) show + 24.8012 305.878 m + (t) show + 24.8012 309.478 m + (y) show + 216.081 52.4397 m + /N225 [0 15.12 -15.12 0 0 0] Tf + (0) show + 198.801 44.7604 m + (1) show + 198.801 52.4397 m + (0) show + 181.521 44.7604 m + (2) show + 181.521 52.4397 m + (0) show + 164.241 44.7604 m + (3) show + 164.241 52.4397 m + (0) show + 146.961 44.7604 m + (4) show + 146.961 52.4397 m + (0) show + 129.921 44.7604 m + (5) show + 129.921 52.4397 m + (0) show + 112.641 44.7604 m + (6) show + 112.641 52.4397 m + (0) show + 95.3615 44.7604 m + (7) show + 95.3615 52.4397 m + (0) show + 78.0815 44.7604 m + (8) show + 78.0815 52.4397 m + (0) show + 60.8016 44.7604 m + (9) show + 60.8016 52.4397 m + (0) show + 43.5217 37.0798 m + (1) show + 43.5217 44.759 m + (0) show + 43.5217 52.4383 m + (0) show + 251.601 58.9197 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 248.241 62.0397 m + (7) show + 245.121 65.1597 m + (7) show + 241.761 68.5197 m + (.) show + 240.321 70.1996 m + (m) show + 235.281 75.2396 m + (e) show + 232.401 77.8796 m + (s) show + 229.761 80.5196 m + (a) show + 245.361 95.3996 m + (1) show + 242.001 98.5196 m + (7) show + 238.881 101.64 m + (9) show + 235.521 105 m + (.) show + 234.081 106.68 m + (a) show + 231.201 109.56 m + (r) show + 229.041 111.48 m + (t) show + 256.641 114.36 m + (1) show + 253.281 117.48 m + (8) show + 250.161 120.6 m + (3) show + 246.801 123.96 m + (.) show + 245.361 125.64 m + (e) show + 242.481 128.52 m + (q) show + 239.121 131.64 m + (u) show + 236.001 134.76 m + (a) show + 233.121 137.64 m + (k) show + 229.761 141 m + (e) show + 254.241 147 m + (1) show + 250.881 150.12 m + (8) show + 247.761 153.24 m + (8) show + 244.401 156.599 m + (.) show + 242.961 158.279 m + (a) show + 240.081 161.159 m + (m) show + 235.041 165.959 m + (m) show + 230.001 170.999 m + (p) show + Q + Q + q + n + 2194.41 1750.8 m + 2194.41 2072.4 l + 2518.41 2072.4 l + 2518.41 1750.8 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 249.201 182.28 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 245.841 185.4 m + (6) show + 242.721 188.52 m + (4) show + 239.361 191.88 m + (.) show + 237.921 193.56 m + (g) show + 234.561 196.68 m + (z) show + 231.681 199.56 m + (i) show + 230.001 201.24 m + (p) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 246.801 214.92 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 243.441 218.04 m + (7) show + 240.321 221.16 m + (5) show + 236.961 224.52 m + (.) show + 235.521 226.2 m + (v) show + 232.161 229.32 m + (p) show + 229.041 232.44 m + (r) show + Q + Q + q + n + 2192.01 2379.6 m + 2192.01 2677.2 l + 2494.41 2677.2 l + 2494.41 2379.6 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 246.801 245.16 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 243.441 248.28 m + (7) show + 240.321 251.4 m + (6) show + 236.961 254.76 m + (.) show + 235.521 256.44 m + (g) show + 232.161 259.56 m + (c) show + 229.281 262.44 m + (c) show + Q + Q + q + n + 2187.21 2670 m + 2187.21 2979.6 l + 2506.41 2979.6 l + 2506.41 2670 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 248.001 274.2 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 244.641 277.32 m + (8) show + 241.521 280.44 m + (1) show + 238.161 283.8 m + (.) show + 236.721 285.48 m + (m) show + 231.681 290.52 m + (c) show + 228.801 293.16 m + (f) show + Q + Q + q + n + 2194.41 2919.6 m + 2194.41 3279.6 l + 2556.81 3279.6 l + 2556.81 2919.6 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 253.041 299.16 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 249.681 302.28 m + (8) show + 246.561 305.4 m + (6) show + 243.201 308.76 m + (.) show + 241.761 310.44 m + (c) show + 238.881 313.32 m + (r) show + 236.721 315.24 m + (a) show + 233.841 318.12 m + (f) show + 231.681 320.28 m + (t) show + 229.761 322.2 m + (y) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 254.241 328.2 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 250.881 331.32 m + (9) show + 247.761 334.44 m + (7) show + 244.401 337.8 m + (.) show + 242.961 339.48 m + (p) show + 239.601 342.6 m + (a) show + 236.721 345.48 m + (r) show + 234.561 347.64 m + (s) show + 232.161 350.04 m + (e) show + 229.281 352.92 m + (r) show + 247.521 365.16 m + (2) show + 244.161 368.28 m + (5) show + 241.041 371.4 m + (2) show + 237.681 374.76 m + (.) show + 236.241 376.44 m + (e) show + 233.361 379.32 m + (o) show + 230.001 382.44 m + (n) show + 260.001 382.92 m + (2) show + 256.641 386.04 m + (5) show + 253.521 389.16 m + (3) show + 250.161 392.52 m + (.) show + 248.721 394.2 m + (p) show + 245.361 397.32 m + (e) show + 242.481 400.2 m + (r) show + 240.321 402.36 m + (l) show + 238.641 404.04 m + (b) show + 235.281 407.4 m + (m) show + 230.241 412.44 m + (k) show + 247.521 425.64 m + (2) show + 244.161 428.76 m + (5) show + 241.041 431.88 m + (4) show + 237.681 435.24 m + (.) show + 236.241 436.92 m + (g) show + 232.881 440.04 m + (a) show + 230.002 442.919 m + (p) show + 254.722 448.68 m + (2) show + 251.362 451.799 m + (5) show + 248.242 454.919 m + (5) show + 244.882 458.279 m + (.) show + 243.442 459.959 m + (v) show + 240.082 463.079 m + (o) show + 236.962 466.199 m + (r) show + 234.802 468.359 m + (t) show + 232.882 470.279 m + (e) show + 230.002 473.159 m + (x) show + 252.562 481.079 m + (2) show + 249.202 484.199 m + (5) show + 246.082 487.319 m + (6) show + 242.722 490.679 m + (.) show + 241.282 492.359 m + (b) show + 237.922 495.479 m + (z) show + 235.042 498.359 m + (i) show + 233.362 500.039 m + (p) show + 230.002 503.399 m + (2) show + Q + Q + q + n + 2189.61 5048.4 m + 2189.61 5396.4 l + 2544.81 5396.4 l + 2544.81 5048.4 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 251.841 512.04 m + /N225 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (3) show + 248.481 515.16 m + (0) show + 245.361 518.28 m + (0) show + 242.001 521.64 m + (.) show + 240.561 523.32 m + (t) show + 238.641 525 m + (w) show + 234.081 529.56 m + (o) show + 230.721 532.92 m + (l) show + 229.041 534.6 m + (f) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 187.521 26.9997 m + /N225 -13.92 Tf + (l) show + 183.681 26.9997 m + (o) show + 176.721 26.9997 m + (a) show + 170.481 26.9997 m + (d) show + 163.521 26.9997 m + (s) show + 158.001 26.9997 m + (/) show + 154.161 26.9997 m + (s) show + 148.641 26.9997 m + (t) show + 144.801 26.9997 m + (o) show + 137.841 26.9997 m + (r) show + 133.281 26.9997 m + (e) show + 127.041 26.9997 m + (s) show + 117.921 26.9997 m + (a) show + 111.681 26.9997 m + (d) show + 104.721 26.9997 m + (d) show + 97.7611 26.9997 m + (e) show + 91.5211 26.9997 m + (d) show + 80.9612 26.9997 m + (\() show + 76.4012 26.9997 m + (K) show + 66.3212 26.9997 m + (\)) show + Q + n + 2636.01 1902 144 2424 re + [/DeviceGray] cs 1 sc + f + 2.39999 w + 1 J + n + 2633.61 1899.6 146.4 2426.4 re + 0 sc + S + Q + q + n + 2636.01 1902 m + 2636.01 2060.4 l + 2777.61 2060.4 l + 2777.61 1902 l + h + W + n + n + 2676.81 1930.8 55.2 55.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2676.81 1930.8 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 273.681 201 m + /N225 [0 9.12 -9.12 0 0 0] Tf + (l) show + 273.681 203.64 m + (o) show + 273.681 207.959 m + (c) show + 273.681 211.799 m + (a) show + 273.681 215.878 m + (l) show + Q + Q + q + n + 2636.01 2158.8 m + 2636.01 2360.4 l + 2777.61 2360.4 l + 2777.61 2158.8 l + h + W + n + n + 2676.81 2230.8 55.2 55.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2676.81 2230.8 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 273.681 231 m + /N225 [0 9.12 -9.12 0 0 0] Tf + (l) show + 273.681 233.64 m + (i) show + 273.681 236.279 m + (n) show + 273.681 240.839 m + (e) show + 273.681 244.919 m + (a) show + 273.681 248.998 m + (r) show + 273.681 254.518 m + (s) show + 273.681 258.117 m + (c) show + 273.681 261.957 m + (a) show + 273.681 266.037 m + (n) show + Q + Q + q + n + 2636.01 2679.6 m + 2636.01 2881.2 l + 2777.61 2881.2 l + 2777.61 2679.6 l + h + W + n + n + 2676.81 2751.6 55.2 55.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2676.81 2751.6 55.2 55.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 273.681 283.08 m + /N225 [0 9.12 -9.12 0 0 0] Tf + (l) show + 273.681 285.72 m + (s) show + 273.681 289.319 m + (+) show + 273.681 294.359 m + (m) show + 273.681 301.318 m + (e) show + 273.681 305.398 m + (m) show + 273.681 312.357 m + (o) show + 273.681 316.677 m + (p) show + Q + Q + q + n + 2636.01 3186 m + 2636.01 3387.6 l + 2777.61 3387.6 l + 2777.61 3186 l + h + W + n + n + 2676.81 3258 55.2 55.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2676.81 3258 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 273.681 333.72 m + /N225 [0 9.12 -9.12 0 0 0] Tf + (l) show + 273.681 336.36 m + (s) show + 273.681 339.959 m + (+) show + 273.681 344.999 m + (j) show + 273.681 347.639 m + (o) show + 273.681 351.958 m + (i) show + 273.681 354.598 m + (n) show + Q + Q + q + n + 2636.01 3565.2 m + 2636.01 3766.8 l + 2777.61 3766.8 l + 2777.61 3565.2 l + h + W + n + n + 2676.81 3637.2 55.2 55.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2676.81 3637.2 55.2 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + [/DeviceGray] cs 0 sc + 273.681 371.64 m + /N225 [0 9.12 -9.12 0 0 0] Tf + (l) show + 273.681 374.28 m + (s) show + 273.681 377.879 m + (+) show + 273.681 382.919 m + (j) show + 273.681 385.559 m + (o) show + 273.681 389.878 m + (i) show + 273.681 392.518 m + (n) show + 273.681 397.078 m + (+) show + 273.681 402.117 m + (m) show + 273.681 409.076 m + (e) show + 273.681 413.156 m + (m) show + 273.681 420.115 m + (o) show + 273.681 424.435 m + (p) show + Q + 2.39999 w + 1 J + n + 10.4126 3.59662 2856 5656.8 re + [/DeviceGray] cs 0 sc + S + Q + Q + Q + Q + Q + Q + Q + 1 0 0 1 -133.768 -635.575 cm + [/DeviceGray] cs 0 sc + 204.946 430.609 m + /N74 9.963 Tf + (Fi) + [6.50584 2.75975 ] pdfxs + (g) show + (ure) + [5.53942 3.90548 7.74125 ] pdfxs + (9) show + (:CodeQu) + [7.20325 7.19329 5.26046 5.52946 7.75121 7.75121 5.52946 ] pdfxs + (a) show + (lity-) + [2.76971 2.76971 3.59672 8.57814 6.63528 ] pdfxs + (Loa) show + (ds) + [5.53942 3.92539 ] pdfxs + (/) show + (S) + [5.53942 ] pdfxs + (to) show + (res) + [3.89552 4.43354 7.25303 ] pdfxs + (a) show + (dded.) + [5.52946 5.53942 4.42357 5.53942 2.76971 ] pdfxs + 1 0 0 1 133.768 356.902 cm + q + 0.651093 0 0 0.651093 0 0 cm + q + 0 -1 1 0 0 0 cm + q + q + q + 0 0 286 566 re + W + n + q + 0.0999908 0 0 0.0999908 0 0 cm + q + {} settransfer + n + 12.8125 5.99648 2846.4 5644.8 re + 1 sc + f + 2.39999 w + 1 J + 1 j + n + 10.4126 3.59662 2848.8 5647.2 re + 0 sc + S + n + 399.212 749.997 1706.4 4785.6 re + [/DeviceRGB] cs 0.830994 0.838989 0.82399 sc + + eofill + Q + q + n + 1764.81 749.997 m + 1764.81 5535.6 l + 1767.21 5535.6 l + 1767.21 749.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1764.81 749.997 m + 1764.81 5535.6 l + S + Q + q + n + 1424.01 749.997 m + 1424.01 5535.6 l + 1426.41 5535.6 l + 1426.41 749.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1424.01 749.997 m + 1424.01 5535.6 l + S + Q + q + n + 1080.81 749.997 m + 1080.81 5535.6 l + 1083.21 5535.6 l + 1083.21 749.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 1080.81 749.997 m + 1080.81 5535.6 l + S + Q + q + n + 740.012 749.997 m + 740.012 5535.6 l + 742.413 5535.6 l + 742.413 749.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 740.012 749.997 m + 740.012 5535.6 l + S + Q + q + n + 399.212 749.997 m + 399.212 5535.6 l + 401.613 5535.6 l + 401.613 749.997 l + h + W + n + 2.39999 w + 1 J + 1 j + n + 399.212 749.997 m + 399.212 5535.6 l + S + Q + q + 9.59999 w + 1 J + n + 399.212 749.997 1706.4 4785.6 re + [/DeviceRGB] cs 0.591995 0.595993 0.587997 sc + + S + Q + q + n + 788.012 749.997 m + 788.012 901.197 l + 2105.61 901.197 l + 2105.61 749.997 l + h + W + n + n + 860.012 783.597 1245.6 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 860.012 783.597 1245.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2012.01 1011.6 m + 2012.01 1201.2 l + 2105.61 1201.2 l + 2105.61 1011.6 l + h + W + n + n + 2084.01 1083.6 21.5999 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2084.01 1083.6 21.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2012.01 1309.2 m + 2012.01 1498.8 l + 2105.61 1498.8 l + 2105.61 1309.2 l + h + W + n + n + 2084.01 1381.2 21.5999 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2084.01 1381.2 21.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1750.41 1609.2 m + 1750.41 1798.8 l + 2105.61 1798.8 l + 2105.61 1609.2 l + h + W + n + n + 1822.41 1681.2 283.2 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1822.41 1681.2 283.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1937.61 1909.2 m + 1937.61 2098.8 l + 2105.61 2098.8 l + 2105.61 1909.2 l + h + W + n + n + 2009.61 1981.2 95.9999 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2009.61 1981.2 95.9999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1606.41 2206.8 m + 1606.41 2396.4 l + 2105.61 2396.4 l + 2105.61 2206.8 l + h + W + n + n + 1678.41 2278.8 427.2 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1678.41 2278.8 427.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 380.012 2506.8 m + 380.012 2696.4 l + 2105.61 2696.4 l + 2105.61 2506.8 l + h + W + n + n + 0 2578.8 2105.61 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + -5.79979 2578.8 2111.41 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2009.61 2804.4 m + 2009.61 2994 l + 2105.61 2994 l + 2105.61 2804.4 l + h + W + n + n + 2081.61 2876.4 24 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2081.61 2876.4 24 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1544.01 3104.4 m + 1544.01 3294 l + 2105.61 3294 l + 2105.61 3104.4 l + h + W + n + n + 1616.01 3176.4 489.6 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1616.01 3176.4 489.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1764.81 3404.4 m + 1764.81 3594 l + 2105.61 3594 l + 2105.61 3404.4 l + h + W + n + n + 1836.81 3476.4 268.8 43.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1836.81 3476.4 268.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1092.81 3702 m + 1092.81 3891.6 l + 2105.61 3891.6 l + 2105.61 3702 l + h + W + n + n + 1164.81 3774 940.8 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1164.81 3774 940.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 380.012 4002 m + 380.012 4191.6 l + 2105.61 4191.6 l + 2105.61 4002 l + h + W + n + n + 413.613 4074 1692 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 413.613 4074 1692 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 584.012 4302 m + 584.012 4491.6 l + 2105.61 4491.6 l + 2105.61 4302 l + h + W + n + n + 656.012 4374 1449.6 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 656.012 4374 1449.6 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1275.21 4599.6 m + 1275.21 4789.2 l + 2105.61 4789.2 l + 2105.61 4599.6 l + h + W + n + n + 1347.21 4671.6 758.4 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1347.21 4671.6 758.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1966.41 4899.6 m + 1966.41 5089.2 l + 2105.61 5089.2 l + 2105.61 4899.6 l + h + W + n + n + 2038.41 4971.6 67.2001 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2038.41 4971.6 67.2001 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1500.81 5197.2 m + 1500.81 5386.8 l + 2105.61 5386.8 l + 2105.61 5197.2 l + h + W + n + n + 1572.81 5269.2 532.8 43.2002 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 1572.81 5269.2 532.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1318.41 757.197 m + 1318.41 946.797 l + 2105.61 946.797 l + 2105.61 757.197 l + h + W + n + n + 1390.41 829.197 715.2 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1390.41 829.197 715.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 1057.2 m + 2024.01 1246.8 l + 2105.61 1246.8 l + 2105.61 1057.2 l + h + W + n + n + 2096.01 1129.2 9.59985 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 1129.2 9.59985 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 1354.8 m + 2019.21 1544.4 l + 2105.61 1544.4 l + 2105.61 1354.8 l + h + W + n + n + 2091.21 1426.8 14.3999 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1426.8 14.3999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1851.21 1654.8 m + 1851.21 1844.4 l + 2105.61 1844.4 l + 2105.61 1654.8 l + h + W + n + n + 1923.21 1726.8 182.4 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1923.21 1726.8 182.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 1954.8 m + 2000.01 2144.4 l + 2105.61 2144.4 l + 2105.61 1954.8 l + h + W + n + n + 2072.01 2026.8 33.5999 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 2026.8 33.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1769.61 2252.4 m + 1769.61 2442 l + 2105.61 2442 l + 2105.61 2252.4 l + h + W + n + n + 1841.61 2324.4 264 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1841.61 2324.4 264 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 663.212 2552.4 m + 663.212 2742 l + 2105.61 2742 l + 2105.61 2552.4 l + h + W + n + n + 735.212 2624.4 1370.4 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 735.212 2624.4 1370.4 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2021.61 2850 m + 2021.61 3039.6 l + 2105.61 3039.6 l + 2105.61 2850 l + h + W + n + n + 2093.61 2922 12 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2093.61 2922 12 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1714.41 3150 m + 1714.41 3339.6 l + 2105.61 3339.6 l + 2105.61 3150 l + h + W + n + n + 1786.41 3222 319.2 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1786.41 3222 319.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1940.01 3450 m + 1940.01 3639.6 l + 2105.61 3639.6 l + 2105.61 3450 l + h + W + n + n + 2012.01 3522 93.5999 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2012.01 3522 93.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1553.61 3747.6 m + 1553.61 3937.2 l + 2105.61 3937.2 l + 2105.61 3747.6 l + h + W + n + n + 1625.61 3819.6 480 43.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1625.61 3819.6 480 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1529.61 4047.6 m + 1529.61 4237.2 l + 2105.61 4237.2 l + 2105.61 4047.6 l + h + W + n + n + 1601.61 4119.6 504 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1601.61 4119.6 504 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1443.21 4347.6 m + 1443.21 4537.2 l + 2105.61 4537.2 l + 2105.61 4347.6 l + h + W + n + n + 1515.21 4419.6 590.4 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1515.21 4419.6 590.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1685.61 4645.2 m + 1685.61 4834.8 l + 2105.61 4834.8 l + 2105.61 4645.2 l + h + W + n + n + 1757.61 4717.2 348 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1757.61 4717.2 348 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 4945.2 m + 2000.01 5134.8 l + 2105.61 5134.8 l + 2105.61 4945.2 l + h + W + n + n + 2072.01 5017.2 33.5999 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 5017.2 33.5999 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1793.61 5242.8 m + 1793.61 5432.4 l + 2105.61 5432.4 l + 2105.61 5242.8 l + h + W + n + n + 1865.61 5314.8 240 43.2002 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 1865.61 5314.8 240 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1217.61 802.797 m + 1217.61 994.797 l + 2105.61 994.797 l + 2105.61 802.797 l + h + W + n + n + 1289.61 874.797 816 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1289.61 874.797 816 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 1102.8 m + 2024.01 1292.4 l + 2105.61 1292.4 l + 2105.61 1102.8 l + h + W + n + n + 2096.01 1174.8 9.59985 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 1174.8 9.59985 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1400.4 m + 2016.81 1592.4 l + 2105.61 1592.4 l + 2105.61 1400.4 l + h + W + n + n + 2088.81 1472.4 16.7998 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1472.4 16.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1836.81 1700.4 m + 1836.81 1892.4 l + 2105.61 1892.4 l + 2105.61 1700.4 l + h + W + n + n + 1908.81 1772.4 196.8 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1908.81 1772.4 196.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1997.61 2000.4 m + 1997.61 2190 l + 2105.61 2190 l + 2105.61 2000.4 l + h + W + n + n + 2069.61 2072.4 36 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2069.61 2072.4 36 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1752.81 2298 m + 1752.81 2490 l + 2105.61 2490 l + 2105.61 2298 l + h + W + n + n + 1824.81 2370 280.8 45.5999 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1824.81 2370 280.8 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 586.413 2598 m + 586.413 2787.6 l + 2105.61 2787.6 l + 2105.61 2598 l + h + W + n + n + 658.413 2670 1447.2 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 658.413 2670 1447.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 2895.6 m + 2016.81 3087.6 l + 2105.61 3087.6 l + 2105.61 2895.6 l + h + W + n + n + 2088.81 2967.6 16.7998 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 2967.6 16.7998 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1680.81 3195.6 m + 1680.81 3387.6 l + 2105.61 3387.6 l + 2105.61 3195.6 l + h + W + n + n + 1752.81 3267.6 352.8 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1752.81 3267.6 352.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1930.41 3495.6 m + 1930.41 3685.2 l + 2105.61 3685.2 l + 2105.61 3495.6 l + h + W + n + n + 2002.41 3567.6 103.2 43.2 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2002.41 3567.6 103.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1532.01 3793.2 m + 1532.01 3985.2 l + 2105.61 3985.2 l + 2105.61 3793.2 l + h + W + n + n + 1604.01 3865.2 501.6 45.5999 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1604.01 3865.2 501.6 45.5999 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1517.61 4093.2 m + 1517.61 4285.2 l + 2105.61 4285.2 l + 2105.61 4093.2 l + h + W + n + n + 1589.61 4165.2 516 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1589.61 4165.2 516 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1368.81 4393.2 m + 1368.81 4582.8 l + 2105.61 4582.8 l + 2105.61 4393.2 l + h + W + n + n + 1440.81 4465.2 664.8 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1440.81 4465.2 664.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1668.81 4690.8 m + 1668.81 4882.8 l + 2105.61 4882.8 l + 2105.61 4690.8 l + h + W + n + n + 1740.81 4762.8 364.8 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1740.81 4762.8 364.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1992.81 4990.8 m + 1992.81 5180.4 l + 2105.61 5180.4 l + 2105.61 4990.8 l + h + W + n + n + 2064.81 5062.8 40.7998 43.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2064.81 5062.8 40.7998 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1752.81 5288.4 m + 1752.81 5480.4 l + 2105.61 5480.4 l + 2105.61 5288.4 l + h + W + n + n + 1824.81 5360.4 280.8 45.6001 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 1824.81 5360.4 280.8 45.6001 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1378.41 850.797 m + 1378.41 1040.4 l + 2105.61 1040.4 l + 2105.61 850.797 l + h + W + n + n + 1450.41 922.797 655.2 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1450.41 922.797 655.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 1148.4 m + 2024.01 1338 l + 2105.61 1338 l + 2105.61 1148.4 l + h + W + n + n + 2096.01 1220.4 9.59985 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 1220.4 9.59985 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 1448.4 m + 2019.21 1638 l + 2105.61 1638 l + 2105.61 1448.4 l + h + W + n + n + 2091.21 1520.4 14.3999 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 1520.4 14.3999 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1860.81 1748.4 m + 1860.81 1938 l + 2105.61 1938 l + 2105.61 1748.4 l + h + W + n + n + 1932.81 1820.4 172.8 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1932.81 1820.4 172.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2000.01 2046 m + 2000.01 2235.6 l + 2105.61 2235.6 l + 2105.61 2046 l + h + W + n + n + 2072.01 2118 33.5999 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2072.01 2118 33.5999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1788.81 2346 m + 1788.81 2535.6 l + 2105.61 2535.6 l + 2105.61 2346 l + h + W + n + n + 1860.81 2418 244.8 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1860.81 2418 244.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 720.812 2643.6 m + 720.812 2833.2 l + 2105.61 2833.2 l + 2105.61 2643.6 l + h + W + n + n + 792.812 2715.6 1312.8 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 792.812 2715.6 1312.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2021.61 2943.6 m + 2021.61 3133.2 l + 2105.61 3133.2 l + 2105.61 2943.6 l + h + W + n + n + 2093.61 3015.6 12 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2093.61 3015.6 12 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1776.81 3243.6 m + 1776.81 3433.2 l + 2105.61 3433.2 l + 2105.61 3243.6 l + h + W + n + n + 1848.81 3315.6 256.8 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1848.81 3315.6 256.8 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1944.81 3541.2 m + 1944.81 3730.8 l + 2105.61 3730.8 l + 2105.61 3541.2 l + h + W + n + n + 2016.81 3613.2 88.7998 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2016.81 3613.2 88.7998 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1565.61 3841.2 m + 1565.61 4030.8 l + 2105.61 4030.8 l + 2105.61 3841.2 l + h + W + n + n + 1637.61 3913.2 468 43.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1637.61 3913.2 468 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1541.61 4141.2 m + 1541.61 4330.8 l + 2105.61 4330.8 l + 2105.61 4141.2 l + h + W + n + n + 1613.61 4213.2 492 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1613.61 4213.2 492 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1484.01 4438.8 m + 1484.01 4628.4 l + 2105.61 4628.4 l + 2105.61 4438.8 l + h + W + n + n + 1556.01 4510.8 549.6 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1556.01 4510.8 549.6 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1673.61 4738.8 m + 1673.61 4928.4 l + 2105.61 4928.4 l + 2105.61 4738.8 l + h + W + n + n + 1745.61 4810.8 360 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1745.61 4810.8 360 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2002.41 5036.4 m + 2002.41 5226 l + 2105.61 5226 l + 2105.61 5036.4 l + h + W + n + n + 2074.41 5108.4 31.2 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2074.41 5108.4 31.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1786.41 5336.4 m + 1786.41 5526 l + 2105.61 5526 l + 2105.61 5336.4 l + h + W + n + n + 1858.41 5408.4 247.2 43.2002 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 1858.41 5408.4 247.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1318.41 896.397 m + 1318.41 1086 l + 2105.61 1086 l + 2105.61 896.397 l + h + W + n + n + 1390.41 968.397 715.2 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1390.41 968.397 715.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2024.01 1194 m + 2024.01 1383.6 l + 2105.61 1383.6 l + 2105.61 1194 l + h + W + n + n + 2096.01 1266 9.59985 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2096.01 1266 9.59985 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2016.81 1494 m + 2016.81 1683.6 l + 2105.61 1683.6 l + 2105.61 1494 l + h + W + n + n + 2088.81 1566 16.7998 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2088.81 1566 16.7998 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1853.61 1794 m + 1853.61 1983.6 l + 2105.61 1983.6 l + 2105.61 1794 l + h + W + n + n + 1925.61 1866 180 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1925.61 1866 180 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1995.21 2091.6 m + 1995.21 2281.2 l + 2105.61 2281.2 l + 2105.61 2091.6 l + h + W + n + n + 2067.21 2163.6 38.3999 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2067.21 2163.6 38.3999 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1774.41 2391.6 m + 1774.41 2581.2 l + 2105.61 2581.2 l + 2105.61 2391.6 l + h + W + n + n + 1846.41 2463.6 259.2 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1846.41 2463.6 259.2 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 670.413 2689.2 m + 670.413 2878.8 l + 2105.61 2878.8 l + 2105.61 2689.2 l + h + W + n + n + 742.413 2761.2 1363.2 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 742.413 2761.2 1363.2 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 2019.21 2989.2 m + 2019.21 3178.8 l + 2105.61 3178.8 l + 2105.61 2989.2 l + h + W + n + n + 2091.21 3061.2 14.3999 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2091.21 3061.2 14.3999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1772.01 3289.2 m + 1772.01 3478.8 l + 2105.61 3478.8 l + 2105.61 3289.2 l + h + W + n + n + 1844.01 3361.2 261.6 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1844.01 3361.2 261.6 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1937.61 3586.8 m + 1937.61 3776.4 l + 2105.61 3776.4 l + 2105.61 3586.8 l + h + W + n + n + 2009.61 3658.8 95.9999 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2009.61 3658.8 95.9999 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1553.61 3886.8 m + 1553.61 4076.4 l + 2105.61 4076.4 l + 2105.61 3886.8 l + h + W + n + n + 1625.61 3958.8 480 43.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1625.61 3958.8 480 43.2 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1529.61 4186.8 m + 1529.61 4376.4 l + 2105.61 4376.4 l + 2105.61 4186.8 l + h + W + n + n + 1601.61 4258.8 504 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1601.61 4258.8 504 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1433.61 4484.4 m + 1433.61 4674 l + 2105.61 4674 l + 2105.61 4484.4 l + h + W + n + n + 1505.61 4556.4 600 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1505.61 4556.4 600 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1668.81 4784.4 m + 1668.81 4974 l + 2105.61 4974 l + 2105.61 4784.4 l + h + W + n + n + 1740.81 4856.4 364.8 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1740.81 4856.4 364.8 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1997.61 5082 m + 1997.61 5271.6 l + 2105.61 5271.6 l + 2105.61 5082 l + h + W + n + n + 2069.61 5154 36 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2069.61 5154 36 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + n + 1767.21 5382 m + 1767.21 5554.8 l + 2105.61 5554.8 l + 2105.61 5382 l + h + W + n + n + 1839.21 5454 266.4 43.2002 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 1839.21 5454 266.4 43.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + 2.39999 w + 1 J + n + 399.212 749.997 m + 2105.61 749.997 l + S + n + 2105.61 697.197 m + 2105.61 749.997 l + S + n + 1764.81 697.197 m + 1764.81 749.997 l + S + n + 1424.01 697.197 m + 1424.01 749.997 l + S + n + 1080.81 697.197 m + 1080.81 749.997 l + S + n + 740.012 697.197 m + 740.012 749.997 l + S + n + 399.212 697.197 m + 399.212 749.997 l + S + n + 2105.61 749.997 m + 2105.61 5535.6 l + S + n + 2134.41 749.997 m + 2105.61 749.997 l + S + n + 2134.41 1050 m + 2105.61 1050 l + S + n + 2134.41 1347.6 m + 2105.61 1347.6 l + S + n + 2134.41 1647.6 m + 2105.61 1647.6 l + S + n + 2134.41 1947.6 m + 2105.61 1947.6 l + S + n + 2134.41 2245.2 m + 2105.61 2245.2 l + S + n + 2134.41 2545.2 m + 2105.61 2545.2 l + S + n + 2134.41 2842.8 m + 2105.61 2842.8 l + S + n + 2134.41 3142.8 m + 2105.61 3142.8 l + S + n + 2134.41 3442.8 m + 2105.61 3442.8 l + S + n + 2134.41 3740.4 m + 2105.61 3740.4 l + S + n + 2134.41 4040.4 m + 2105.61 4040.4 l + S + n + 2134.41 4340.4 m + 2105.61 4340.4 l + S + n + 2134.41 4638 m + 2105.61 4638 l + S + n + 2134.41 4938 m + 2105.61 4938 l + S + n + 2134.41 5235.6 m + 2105.61 5235.6 l + S + n + 2134.41 5535.6 m + 2105.61 5535.6 l + S + q + 10 0 0 10 0 0 cm + q + Q + 24.8012 251.16 m + /N232 [0 12 -12 0 0 0] Tf + (C) show + 24.8012 259.08 m + (o) show + 24.8012 265.319 m + (d) show + 24.8012 271.319 m + (e) show + 24.8012 279.719 m + (Q) show + 24.8012 288.358 m + (u) show + 24.8012 294.358 m + (a) show + 24.8012 299.638 m + (l) show + 24.8012 302.518 m + (i) show + 24.8012 305.398 m + (t) show + 24.8012 308.997 m + (y) show + 216.081 53.8797 m + /N232 [0 16.8 -16.8 0 0 0] Tf + (0) show + 182.001 45.4797 m + (2) show + 182.001 53.8797 m + (0) show + 147.921 45.4797 m + (4) show + 147.921 53.8797 m + (0) show + 113.601 45.4797 m + (6) show + 113.601 53.8797 m + (0) show + 79.5214 45.4797 m + (8) show + 79.5214 53.8797 m + (0) show + 45.4415 37.0797 m + (1) show + 45.4415 45.4797 m + (0) show + 45.4415 53.8797 m + (0) show + 250.881 62.5197 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 247.521 65.6397 m + (7) show + 244.401 68.7597 m + (7) show + 241.041 72.1197 m + (.) show + 239.601 73.7996 m + (m) show + 234.561 78.8396 m + (e) show + 231.681 81.4796 m + (s) show + 229.041 84.1196 m + (a) show + 244.641 98.7597 m + (1) show + 241.281 101.88 m + (7) show + 238.161 105 m + (9) show + 234.801 108.36 m + (.) show + 233.361 110.04 m + (a) show + 230.481 112.92 m + (r) show + 228.321 114.84 m + (t) show + 255.921 117.48 m + (1) show + 252.561 120.6 m + (8) show + 249.441 123.72 m + (3) show + 246.081 127.08 m + (.) show + 244.641 128.76 m + (e) show + 241.761 131.64 m + (q) show + 238.401 134.76 m + (u) show + 235.281 137.88 m + (a) show + 232.401 140.76 m + (k) show + 229.041 144.12 m + (e) show + 253.521 149.64 m + (1) show + 250.161 152.76 m + (8) show + 247.041 155.88 m + (8) show + 243.681 159.24 m + (.) show + 242.241 160.92 m + (a) show + 239.361 163.8 m + (m) show + 234.321 168.6 m + (m) show + 229.281 173.64 m + (p) show + Q + Q + q + n + 2187.21 1774.8 m + 2187.21 2096.4 l + 2511.21 2096.4 l + 2511.21 1774.8 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 248.481 184.68 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 245.121 187.8 m + (6) show + 242.001 190.92 m + (4) show + 238.641 194.28 m + (.) show + 237.201 195.96 m + (g) show + 233.841 199.08 m + (z) show + 230.961 201.96 m + (i) show + 229.281 203.64 m + (p) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 246.081 216.84 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 242.721 219.96 m + (7) show + 239.601 223.08 m + (5) show + 236.241 226.44 m + (.) show + 234.801 228.12 m + (v) show + 231.441 231.24 m + (p) show + 228.321 234.36 m + (r) show + Q + Q + q + n + 2184.81 2396.4 m + 2184.81 2694 l + 2487.21 2694 l + 2487.21 2396.4 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 246.081 246.84 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 242.721 249.96 m + (7) show + 239.601 253.08 m + (6) show + 236.241 256.44 m + (.) show + 234.801 258.12 m + (g) show + 231.441 261.24 m + (c) show + 228.561 264.12 m + (c) show + Q + Q + q + n + 2180.01 2684.4 m + 2180.01 2994 l + 2499.21 2994 l + 2499.21 2684.4 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 247.281 275.64 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 243.921 278.76 m + (8) show + 240.801 281.88 m + (1) show + 237.441 285.24 m + (.) show + 236.001 286.92 m + (m) show + 230.961 291.96 m + (c) show + 228.081 294.6 m + (f) show + Q + Q + q + n + 2187.21 2931.6 m + 2187.21 3291.6 l + 2549.61 3291.6 l + 2549.61 2931.6 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 252.321 300.36 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 248.961 303.48 m + (8) show + 245.841 306.6 m + (6) show + 242.481 309.96 m + (.) show + 241.041 311.64 m + (c) show + 238.161 314.52 m + (r) show + 236.001 316.44 m + (a) show + 233.121 319.32 m + (f) show + 230.961 321.48 m + (t) show + 229.041 323.4 m + (y) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 253.521 329.16 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (1) show + 250.161 332.28 m + (9) show + 247.041 335.4 m + (7) show + 243.681 338.76 m + (.) show + 242.241 340.44 m + (p) show + 238.881 343.56 m + (a) show + 236.001 346.44 m + (r) show + 233.841 348.6 m + (s) show + 231.441 351 m + (e) show + 228.561 353.88 m + (r) show + 246.801 365.88 m + (2) show + 243.441 369 m + (5) show + 240.321 372.12 m + (2) show + 236.961 375.48 m + (.) show + 235.521 377.16 m + (e) show + 232.641 380.04 m + (o) show + 229.281 383.16 m + (n) show + 259.281 383.16 m + (2) show + 255.921 386.28 m + (5) show + 252.801 389.4 m + (3) show + 249.441 392.76 m + (.) show + 248.001 394.44 m + (p) show + 244.641 397.56 m + (e) show + 241.761 400.44 m + (r) show + 239.601 402.6 m + (l) show + 237.921 404.28 m + (b) show + 234.561 407.64 m + (m) show + 229.521 412.68 m + (k) show + 246.801 425.64 m + (2) show + 243.441 428.76 m + (5) show + 240.321 431.88 m + (4) show + 236.961 435.24 m + (.) show + 235.521 436.92 m + (g) show + 232.161 440.04 m + (a) show + 229.282 442.919 m + (p) show + 254.002 448.2 m + (2) show + 250.642 451.32 m + (5) show + 247.522 454.44 m + (5) show + 244.162 457.799 m + (.) show + 242.722 459.479 m + (v) show + 239.362 462.599 m + (o) show + 236.242 465.719 m + (r) show + 234.082 467.879 m + (t) show + 232.162 469.799 m + (e) show + 229.282 472.679 m + (x) show + 251.842 480.359 m + (2) show + 248.482 483.479 m + (5) show + 245.362 486.599 m + (6) show + 242.002 489.959 m + (.) show + 240.562 491.639 m + (b) show + 237.202 494.759 m + (z) show + 234.322 497.639 m + (i) show + 232.642 499.319 m + (p) show + 229.282 502.679 m + (2) show + Q + Q + q + n + 2182.41 5038.8 m + 2182.41 5386.8 l + 2537.61 5386.8 l + 2537.61 5038.8 l + h + W + n + q + 10 0 0 10 0 0 cm + q + Q + 251.121 511.08 m + /N232 [-6.44803 6.44803 -6.44803 -6.44803 0 0] Tf + (3) show + 247.761 514.2 m + (0) show + 244.641 517.32 m + (0) show + 241.281 520.68 m + (.) show + 239.841 522.36 m + (t) show + 237.921 524.04 m + (w) show + 233.361 528.6 m + (o) show + 230.001 531.96 m + (l) show + 228.321 533.64 m + (f) show + Q + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 207.681 26.7597 m + /N232 -13.92 Tf + (m) show + 196.881 26.7597 m + (e) show + 190.641 26.7597 m + (m) show + 179.841 26.7597 m + (o) show + 172.881 26.7597 m + (r) show + 168.321 26.7597 m + (y) show + 157.761 26.7597 m + (r) show + 153.201 26.7597 m + (e) show + 146.961 26.7597 m + (f) show + 142.401 26.7597 m + (e) show + 136.161 26.7597 m + (r) show + 131.601 26.7597 m + (e) show + 125.361 26.7597 m + (n) show + 118.401 26.7597 m + (c) show + 112.161 26.7597 m + (e) show + 105.921 26.7597 m + (s) show + 96.8011 26.7597 m + (a) show + 90.5612 26.7597 m + (d) show + 83.6012 26.7597 m + (d) show + 76.6412 26.7597 m + (e) show + 70.4012 26.7597 m + (d) show + 59.8412 26.7597 m + (\() show + 55.2812 26.7597 m + (K) show + 45.2012 26.7597 m + (\)) show + Q + n + 2628.81 1878 144 2424 re + 1 sc + f + 2.39999 w + 1 J + n + 2626.41 1875.6 146.4 2426.4 re + 0 sc + S + Q + q + n + 2628.81 1878 m + 2628.81 2036.4 l + 2770.41 2036.4 l + 2770.41 1878 l + h + W + n + n + 2669.61 1906.8 55.2002 55.2 re + [/DeviceRGB] cs 0.693985 0.630997 0.995987 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 1906.8 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.961 198.6 m + /N232 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 201.24 m + (o) show + 272.961 205.559 m + (c) show + 272.961 209.399 m + (a) show + 272.961 213.478 m + (l) show + Q + Q + q + n + 2628.81 2134.8 m + 2628.81 2336.4 l + 2770.41 2336.4 l + 2770.41 2134.8 l + h + W + n + n + 2669.61 2206.8 55.2002 55.2 re + [/DeviceRGB] cs 0.713989 0.0779877 0.411987 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 2206.8 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.961 228.6 m + /N232 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 231.24 m + (i) show + 272.961 233.879 m + (n) show + 272.961 238.439 m + (e) show + 272.961 242.519 m + (a) show + 272.961 246.598 m + (r) show + 272.961 252.118 m + (s) show + 272.961 255.717 m + (c) show + 272.961 259.557 m + (a) show + 272.961 263.637 m + (n) show + Q + Q + q + n + 2628.81 2655.6 m + 2628.81 2857.2 l + 2770.41 2857.2 l + 2770.41 2655.6 l + h + W + n + n + 2669.61 2727.6 55.2002 55.2002 re + [/DeviceRGB] cs 0.306 0.858994 0.160995 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 2727.6 55.2002 55.2002 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.961 280.68 m + /N232 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 283.32 m + (s) show + 272.961 286.919 m + (+) show + 272.961 291.959 m + (m) show + 272.961 298.918 m + (e) show + 272.961 302.998 m + (m) show + 272.961 309.957 m + (o) show + 272.961 314.277 m + (p) show + Q + Q + q + n + 2628.81 3162 m + 2628.81 3363.6 l + 2770.41 3363.6 l + 2770.41 3162 l + h + W + n + n + 2669.61 3234 55.2002 55.2 re + [/DeviceRGB] cs 0.932999 1 0.94899 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 3234 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.961 331.32 m + /N232 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 333.96 m + (s) show + 272.961 337.559 m + (+) show + 272.961 342.599 m + (j) show + 272.961 345.239 m + (o) show + 272.961 349.558 m + (i) show + 272.961 352.198 m + (n) show + Q + Q + q + n + 2628.81 3541.2 m + 2628.81 3742.8 l + 2770.41 3742.8 l + 2770.41 3541.2 l + h + W + n + n + 2669.61 3613.2 55.2002 55.2 re + [/DeviceRGB] cs 0.399994 0.0039978 0.662994 sc + + eofill + 9.59999 w + 1 J + n + 2669.61 3613.2 55.2002 55.2 re + [/DeviceGray] cs 0 sc + S + Q + q + q + 10 0 0 10 0 0 cm + q + Q + 272.961 369.24 m + /N232 [0 9.12 -9.12 0 0 0] Tf + (l) show + 272.961 371.88 m + (s) show + 272.961 375.479 m + (+) show + 272.961 380.519 m + (j) show + 272.961 383.159 m + (o) show + 272.961 387.478 m + (i) show + 272.961 390.118 m + (n) show + 272.961 394.677 m + (+) show + 272.961 399.717 m + (m) show + 272.961 406.676 m + (e) show + 272.961 410.756 m + (m) show + 272.961 417.715 m + (o) show + 272.961 422.035 m + (p) show + Q + 2.39999 w + 1 J + n + 10.4126 3.59662 2848.8 5647.2 re + S + Q + Q + Q + Q + Q + Q + Q + 1 0 0 1 -133.768 -356.902 cm + 187.248 152.813 m + (Fi) + [6.50584 2.76971 ] pdfxs + (g) show + (ure) + [5.52946 3.90548 7.74125 ] pdfxs + (10) show + (:CodeQu) + [7.20325 7.19329 5.26046 5.52946 7.75121 7.75121 5.52946 ] pdfxs + (a) show + (lity-) + [2.76971 2.76971 3.59672 8.57814 6.64525 ] pdfxs + (A) show + (ddedMem) + [5.52946 5.53942 4.42357 8.8571 9.13614 4.42357 8.2991 ] pdfxs + (o) show + (ry) + [3.90548 8.57814 ] pdfxs + (R) show + (eferences.) + [4.42357 3.04867 4.42357 3.90548 4.43354 5.52946 4.42357 4.43354 3.92539 2.76971 ] pdfxs + 300.643 89.365 m + (15) show + PDFVars/TermAll get exec end end + userdict /pgsave get restore + showpage + %%PageTrailer + %%EndPage + %%Trailer + %%DocumentProcessColors: Cyan Magenta Yellow Black + %%EOF Index: llvm-www/ProjectsWithLLVM/index.html diff -u llvm-www/ProjectsWithLLVM/index.html:1.8 llvm-www/ProjectsWithLLVM/index.html:1.9 --- llvm-www/ProjectsWithLLVM/index.html:1.8 Tue Feb 17 11:55:24 2004 +++ llvm-www/ProjectsWithLLVM/index.html Thu Apr 1 15:48:47 2004 @@ -25,6 +25,29 @@ +
    +CS426: Improvements to Linear Scan register allocation (Fall 2004) +
    + + + + + +

    Linear scan register allocation is a fast global register allocation first + presented in \cite{poletto99linear} as an alternative to the more widely + used graph coloring approach. In this paper, I apply the linear scan register + allocation algorithm in a system with SSA form and show how to improve the + algorithm by taking advantage of lifetime holes and memory operands, and also + eliminate the need for reserving registers for spill code.

    + +

    +Project report: PS, +PDF +

    + +
    XPS - eXtensible Programming System - eXtensible Systems, Inc.
    From alkis at niobe.cs.uiuc.edu Thu Apr 1 16:00:03 2004 From: alkis at niobe.cs.uiuc.edu (Alkis Evlogimenos) Date: Thu Apr 1 16:00:03 2004 Subject: [llvm-commits] CVS: llvm-www/ProjectsWithLLVM/index.html Message-ID: <200404012159.i31Lx3B06776@niobe.cs.uiuc.edu> Changes in directory llvm-www/ProjectsWithLLVM: index.html updated: 1.9 -> 1.10 --- Log message: Fix some oversights --- Diffs of the changes: (+4 -2) Index: llvm-www/ProjectsWithLLVM/index.html diff -u llvm-www/ProjectsWithLLVM/index.html:1.9 llvm-www/ProjectsWithLLVM/index.html:1.10 --- llvm-www/ProjectsWithLLVM/index.html:1.9 Thu Apr 1 15:48:47 2004 +++ llvm-www/ProjectsWithLLVM/index.html Thu Apr 1 15:58:53 2004 @@ -26,17 +26,19 @@
    -CS426: Improvements to Linear Scan register allocation (Fall 2004) +CS426: Advanced Compilers (Fall 2004)

    Linear scan register allocation is a fast global register allocation first - presented in \cite{poletto99linear} as an alternative to the more widely + presented in Linear + Scan Register Allocation as an alternative to the more widely used graph coloring approach. In this paper, I apply the linear scan register allocation algorithm in a system with SSA form and show how to improve the algorithm by taking advantage of lifetime holes and memory operands, and also From brukman at cs.uiuc.edu Thu Apr 1 16:13:01 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Thu Apr 1 16:13:01 2004 Subject: [llvm-commits] CVS: llvm-www/ProjectsWithLLVM/index.html Message-ID: <200404012212.QAA17932@zion.cs.uiuc.edu> Changes in directory llvm-www/ProjectsWithLLVM: index.html updated: 1.10 -> 1.11 --- Log message: Quote URLs, and eliminate unnecessary space. --- Diffs of the changes: (+10 -11) Index: llvm-www/ProjectsWithLLVM/index.html diff -u llvm-www/ProjectsWithLLVM/index.html:1.10 llvm-www/ProjectsWithLLVM/index.html:1.11 --- llvm-www/ProjectsWithLLVM/index.html:1.10 Thu Apr 1 15:58:53 2004 +++ llvm-www/ProjectsWithLLVM/index.html Thu Apr 1 16:12:36 2004 @@ -37,20 +37,19 @@

    Linear scan register allocation is a fast global register allocation first - presented in Linear - Scan Register Allocation as an alternative to the more widely - used graph coloring approach. In this paper, I apply the linear scan register - allocation algorithm in a system with SSA form and show how to improve the - algorithm by taking advantage of lifetime holes and memory operands, and also - eliminate the need for reserving registers for spill code.

    +presented in Linear +Scan Register Allocation as an alternative to the more widely used graph +coloring approach. In this paper, I apply the linear scan register allocation +algorithm in a system with SSA form and show how to improve the algorithm by +taking advantage of lifetime holes and memory operands, and also eliminate the +need for reserving registers for spill code.

    -

    -Project report: PS, -PDF -

    +

    Project report: PS, PDF

    -
    XPS - eXtensible Programming System - eXtensible Systems, Inc.
    +
    XPS - eXtensible Programming System - eXtensible +Systems, Inc.

    The XPS project's purpose is to provide a comprehensive application From brukman at cs.uiuc.edu Thu Apr 1 21:07:02 2004 From: brukman at cs.uiuc.edu (Misha Brukman) Date: Thu Apr 1 21:07:02 2004 Subject: [llvm-commits] [parallel] CVS: llvm/test/Regression/Analysis/ParallelInfo/20040331-NestedPbr.ll Message-ID: <200404020306.VAA23389@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Analysis/ParallelInfo: 20040331-NestedPbr.ll added (r1.1.2.1) --- Log message: New test case with nested parallel branches. --- Diffs of the changes: (+39 -0) Index: llvm/test/Regression/Analysis/ParallelInfo/20040331-NestedPbr.ll diff -c /dev/null llvm/test/Regression/Analysis/ParallelInfo/20040331-NestedPbr.ll:1.1.2.1 *** /dev/null Thu Apr 1 21:06:40 2004 --- llvm/test/Regression/Analysis/ParallelInfo/20040331-NestedPbr.ll Thu Apr 1 21:06:30 2004 *************** *** 0 **** --- 1,39 ---- + declare void %llvm.join(sbyte* %x) + + int %main(int %argc, sbyte** %argv) { + entry: + %A = alloca [25 x int] + br label %parallel + + parallel: + %i = phi int [ 0, %entry ], [ %inc, %indvar ] + %x = pbr label %indvar, label %array + + array: + %tmp.4 = cast int %i to long + %tmp.5 = getelementptr [25 x int]* %A, long 0, long %tmp.4 + store int %i, int* %tmp.5 + br label %para2 + + para2: + %y = pbr label %y1, label %y2 + + y1: + br label %joiny + + y2: + br label %joiny + + joiny: + call void %llvm.join(sbyte* %y) + br label %loopexit + + indvar: + %inc = add int %i, 1 + %tmp.1 = setle int %inc, 24 + br bool %tmp.1, label %parallel, label %loopexit + + loopexit: + call void %llvm.join(sbyte* %x) + ret int 0 + } From lattner at cs.uiuc.edu Thu Apr 1 23:05:02 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu Apr 1 23:05:02 2004 Subject: [llvm-commits] CVS: llvm/lib/Support/SystemUtils.cpp Message-ID: <200404020504.XAA26881@zion.cs.uiuc.edu> Changes in directory llvm/lib/Support: SystemUtils.cpp updated: 1.21 -> 1.22 --- Log message: Add new function, autoconf support required tho --- Diffs of the changes: (+8 -0) Index: llvm/lib/Support/SystemUtils.cpp diff -u llvm/lib/Support/SystemUtils.cpp:1.21 llvm/lib/Support/SystemUtils.cpp:1.22 --- llvm/lib/Support/SystemUtils.cpp:1.21 Sat Jan 10 13:15:14 2004 +++ llvm/lib/Support/SystemUtils.cpp Thu Apr 1 23:04:03 2004 @@ -44,6 +44,14 @@ return Buf.st_mode & S_IXOTH; } +/// isStandardOutAConsole - Return true if we can tell that the standard output +/// stream goes to a terminal window or console. +bool llvm::isStandardOutAConsole() { + // FIXME: if we don't have isatty, just return false. + return isatty(1); +} + + /// FindExecutable - Find a named executable, giving the argv[0] of program /// being executed. This allows us to find another LLVM tool if it is built /// into the same directory, but that directory is neither the current From lattner at cs.uiuc.edu Thu Apr 1 23:05:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu Apr 1 23:05:21 2004 Subject: [llvm-commits] CVS: llvm/include/Support/SystemUtils.h Message-ID: <200404020504.XAA27069@zion.cs.uiuc.edu> Changes in directory llvm/include/Support: SystemUtils.h updated: 1.9 -> 1.10 --- Log message: Add new function --- Diffs of the changes: (+4 -0) Index: llvm/include/Support/SystemUtils.h diff -u llvm/include/Support/SystemUtils.h:1.9 llvm/include/Support/SystemUtils.h:1.10 --- llvm/include/Support/SystemUtils.h:1.9 Tue Nov 11 16:41:29 2003 +++ llvm/include/Support/SystemUtils.h Thu Apr 1 23:04:12 2004 @@ -24,6 +24,10 @@ /// bool isExecutableFile(const std::string &ExeFileName); +/// isStandardOutAConsole - Return true if we can tell that the standard output +/// stream goes to a terminal window or console. +bool isStandardOutAConsole(); + /// FindExecutable - Find a named executable, giving the argv[0] of program /// being executed. This allows us to find another LLVM tool if it is built into /// the same directory, but that directory is neither the current directory, nor From lattner at cs.uiuc.edu Thu Apr 1 23:08:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu Apr 1 23:08:01 2004 Subject: [llvm-commits] CVS: llvm/tools/opt/opt.cpp Message-ID: <200404020507.XAA27648@zion.cs.uiuc.edu> Changes in directory llvm/tools/opt: opt.cpp updated: 1.88 -> 1.89 --- Log message: Fix wonky header Address PR305: http://llvm.cs.uiuc.edu/PR305 : LLVM tools will happily spew bytecode onto your terminal --- Diffs of the changes: (+14 -2) Index: llvm/tools/opt/opt.cpp diff -u llvm/tools/opt/opt.cpp:1.88 llvm/tools/opt/opt.cpp:1.89 --- llvm/tools/opt/opt.cpp:1.88 Thu Feb 19 14:32:08 2004 +++ llvm/tools/opt/opt.cpp Thu Apr 1 23:06:57 2004 @@ -1,4 +1,4 @@ -//===----------------------------------------------------------------------===// +//===- opt.cpp - The LLVM Modular Optimizer -------------------------------===// // // The LLVM Compiler Infrastructure // @@ -6,7 +6,6 @@ // the University of Illinois Open Source License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// -// LLVM Modular Optimizer Utility: opt // // Optimizations may be specified an arbitrary number of times on the command // line, they are run in the order specified. @@ -23,6 +22,7 @@ #include "llvm/Target/TargetMachineImpls.h" #include "llvm/Support/PassNameParser.h" #include "Support/Signals.h" +#include "Support/SystemUtils.h" #include #include #include @@ -112,6 +112,18 @@ // Make sure that the Output file gets unlinked from the disk if we get a // SIGINT RemoveFileOnSignal(OutputFilename); + } + + // If the output is set to be emitted to standard out, and standard out is a + // console, print out a warning message and refuse to do it. We don't impress + // anyone by spewing tons of binary goo to a terminal. + if (Out == &std::cout && isStandardOutAConsole() && !Force && !NoOutput) { + std::cerr << "WARNING: It looks like you're attempting to print out a " + << "bytecode file. I'm\ngoing to pretend you didn't ask me to do" + << " this (for your own good). If you\nREALLY want to taste LLVM" + << " bytecode first hand, you can force output with the\n'-f'" + << " option.\n\n"; + NoOutput = true; } // Create a PassManager to hold and optimize the collection of passes we are From lattner at cs.uiuc.edu Thu Apr 1 23:34:03 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Thu Apr 1 23:34:03 2004 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/ExecutionDriver.cpp Message-ID: <200404020533.XAA28561@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: ExecutionDriver.cpp updated: 1.38 -> 1.39 --- Log message: If the program returns a non-zero exit value, don't leave files laying around --- Diffs of the changes: (+4 -1) Index: llvm/tools/bugpoint/ExecutionDriver.cpp diff -u llvm/tools/bugpoint/ExecutionDriver.cpp:1.38 llvm/tools/bugpoint/ExecutionDriver.cpp:1.39 --- llvm/tools/bugpoint/ExecutionDriver.cpp:1.38 Wed Feb 18 17:25:22 2004 +++ llvm/tools/bugpoint/ExecutionDriver.cpp Thu Apr 1 23:33:06 2004 @@ -265,8 +265,11 @@ &ProgramExitedNonzero); // If we're checking the program exit code, assume anything nonzero is bad. - if (CheckProgramExitCode && ProgramExitedNonzero) + if (CheckProgramExitCode && ProgramExitedNonzero) { + removeFile(Output); + if (RemoveBytecode) removeFile(BytecodeFile); return true; + } std::string Error; bool FilesDifferent = false; From lattner at cs.uiuc.edu Fri Apr 2 00:33:03 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 00:33:03 2004 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/Miscompilation.cpp Message-ID: <200404020632.AAA01783@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: Miscompilation.cpp updated: 1.33 -> 1.34 --- Log message: Fix two pretty serious bugs: 1. Each time the loop extractor extracted a loop, we would leak a module. 2. When we extracted a loop, we didn't add the new function to the list of miscompiled functions. Thus if the bug was in a loop nest and we extracted it, we could actually *LOSE THE BUG*, which is very bad. With these patches, bugpoint has successfully found a bug for me in a function with several nested loops, and cut it down to just one of them. :) :) --- Diffs of the changes: (+14 -9) Index: llvm/tools/bugpoint/Miscompilation.cpp diff -u llvm/tools/bugpoint/Miscompilation.cpp:1.33 llvm/tools/bugpoint/Miscompilation.cpp:1.34 --- llvm/tools/bugpoint/Miscompilation.cpp:1.33 Wed Mar 17 11:42:09 2004 +++ llvm/tools/bugpoint/Miscompilation.cpp Fri Apr 2 00:32:17 2004 @@ -165,7 +165,7 @@ // Delete the linked module & restore the original BD.swapProgramIn(OldProgram); - if (DeleteInputs) delete M1; + delete M1; return Broken; } @@ -267,17 +267,22 @@ << ErrorMsg << "\n"; exit(1); } - delete ToOptimizeLoopExtracted; // All of the Function*'s in the MiscompiledFunctions list are in the old - // module. Make sure to update them to point to the corresponding functions - // in the new module. - for (unsigned i = 0, e = MiscompiledFunctions.size(); i != e; ++i) { - Function *OldF = MiscompiledFunctions[i]; - Function *NewF = - ToNotOptimize->getFunction(OldF->getName(), OldF->getFunctionType()); - MiscompiledFunctions[i] = NewF; + // module. Update this list to include all of the functions in the + // optimized and loop extracted module. + MiscompiledFunctions.clear(); + for (Module::iterator I = ToOptimizeLoopExtracted->begin(), + E = ToOptimizeLoopExtracted->end(); I != E; ++I) { + if (!I->isExternal()) { + Function *OldF = I; + Function *NewF = + ToNotOptimize->getFunction(OldF->getName(), OldF->getFunctionType()); + assert(NewF && "Function not found??"); + MiscompiledFunctions.push_back(NewF); + } } + delete ToOptimizeLoopExtracted; BD.setNewProgram(ToNotOptimize); MadeChange = true; From lattner at cs.uiuc.edu Fri Apr 2 00:33:24 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 00:33:24 2004 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/Miscompilation.cpp Message-ID: <200404020632.AAA01795@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: Miscompilation.cpp updated: 1.34 -> 1.35 --- Log message: minor formatting change --- Diffs of the changes: (+2 -3) Index: llvm/tools/bugpoint/Miscompilation.cpp diff -u llvm/tools/bugpoint/Miscompilation.cpp:1.34 llvm/tools/bugpoint/Miscompilation.cpp:1.35 --- llvm/tools/bugpoint/Miscompilation.cpp:1.34 Fri Apr 2 00:32:17 2004 +++ llvm/tools/bugpoint/Miscompilation.cpp Fri Apr 2 00:32:45 2004 @@ -275,9 +275,8 @@ for (Module::iterator I = ToOptimizeLoopExtracted->begin(), E = ToOptimizeLoopExtracted->end(); I != E; ++I) { if (!I->isExternal()) { - Function *OldF = I; - Function *NewF = - ToNotOptimize->getFunction(OldF->getName(), OldF->getFunctionType()); + Function *NewF = ToNotOptimize->getFunction(I->getName(), + I->getFunctionType()); assert(NewF && "Function not found??"); MiscompiledFunctions.push_back(NewF); } From lattner at cs.uiuc.edu Fri Apr 2 00:34:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 00:34:01 2004 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/ExtractFunction.cpp Message-ID: <200404020633.AAA01814@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: ExtractFunction.cpp updated: 1.31 -> 1.32 --- Log message: Fix a fairly nasty bug that prevented bugpoint from working quite right when hacking on programs with two functions that have the same name. --- Diffs of the changes: (+3 -1) Index: llvm/tools/bugpoint/ExtractFunction.cpp diff -u llvm/tools/bugpoint/ExtractFunction.cpp:1.31 llvm/tools/bugpoint/ExtractFunction.cpp:1.32 --- llvm/tools/bugpoint/ExtractFunction.cpp:1.31 Wed Mar 17 11:37:18 2004 +++ llvm/tools/bugpoint/ExtractFunction.cpp Fri Apr 2 00:30:33 2004 @@ -195,7 +195,9 @@ bool funcFound = false; for (std::vector::const_iterator FI = F.begin(), Fe = F.end(); FI != Fe; ++FI) - if (I->getName() == (*FI)->getName()) funcFound = true; + if (I->getName() == (*FI)->getName() && + I->getType() == (*FI)->getType()) + funcFound = true; if (!funcFound) DeleteFunctionBody(I); From alkis at cs.uiuc.edu Fri Apr 2 01:12:02 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Fri Apr 2 01:12:02 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/PeepholeOptimizer.cpp X86InstrInfo.td X86RegisterInfo.cpp Message-ID: <200404020711.BAA02097@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: PeepholeOptimizer.cpp updated: 1.31 -> 1.32 X86InstrInfo.td updated: 1.64 -> 1.65 X86RegisterInfo.cpp updated: 1.79 -> 1.80 --- Log message: Add more ADC and SBB variants --- Diffs of the changes: (+24 -11) Index: llvm/lib/Target/X86/PeepholeOptimizer.cpp diff -u llvm/lib/Target/X86/PeepholeOptimizer.cpp:1.31 llvm/lib/Target/X86/PeepholeOptimizer.cpp:1.32 --- llvm/lib/Target/X86/PeepholeOptimizer.cpp:1.31 Sun Feb 29 02:50:03 2004 +++ llvm/lib/Target/X86/PeepholeOptimizer.cpp Fri Apr 2 01:11:10 2004 @@ -123,8 +123,8 @@ return false; #endif - case X86::ADD16ri: case X86::ADD32ri: - case X86::SUB16ri: case X86::SUB32ri: + case X86::ADD16ri: case X86::ADD32ri: case X86::ADC32ri: + case X86::SUB16ri: case X86::SUB32ri: case X86::SBB32ri: case X86::AND16ri: case X86::AND32ri: case X86::OR16ri: case X86::OR32ri: case X86::XOR16ri: case X86::XOR32ri: @@ -138,8 +138,10 @@ default: assert(0 && "Unknown opcode value!"); case X86::ADD16ri: Opcode = X86::ADD16ri8; break; case X86::ADD32ri: Opcode = X86::ADD32ri8; break; + case X86::ADC32ri: Opcode = X86::ADC32ri8; break; case X86::SUB16ri: Opcode = X86::SUB16ri8; break; case X86::SUB32ri: Opcode = X86::SUB32ri8; break; + case X86::SBB32ri: Opcode = X86::SBB32ri8; break; case X86::AND16ri: Opcode = X86::AND16ri8; break; case X86::AND32ri: Opcode = X86::AND32ri8; break; case X86::OR16ri: Opcode = X86::OR16ri8; break; @@ -156,8 +158,8 @@ } return false; - case X86::ADD16mi: case X86::ADD32mi: - case X86::SUB16mi: case X86::SUB32mi: + case X86::ADD16mi: case X86::ADD32mi: case X86::ADC32mi: + case X86::SUB16mi: case X86::SUB32mi: case X86::SBB32mi: case X86::AND16mi: case X86::AND32mi: case X86::OR16mi: case X86::OR32mi: case X86::XOR16mi: case X86::XOR32mi: @@ -171,8 +173,10 @@ default: assert(0 && "Unknown opcode value!"); case X86::ADD16mi: Opcode = X86::ADD16mi8; break; case X86::ADD32mi: Opcode = X86::ADD32mi8; break; + case X86::ADC32mi: Opcode = X86::ADC32mi8; break; case X86::SUB16mi: Opcode = X86::SUB16mi8; break; case X86::SUB32mi: Opcode = X86::SUB32mi8; break; + case X86::SBB32mi: Opcode = X86::SBB32mi8; break; case X86::AND16mi: Opcode = X86::AND16mi8; break; case X86::AND32mi: Opcode = X86::AND32mi8; break; case X86::OR16mi: Opcode = X86::OR16mi8; break; Index: llvm/lib/Target/X86/X86InstrInfo.td diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.64 llvm/lib/Target/X86/X86InstrInfo.td:1.65 --- llvm/lib/Target/X86/X86InstrInfo.td:1.64 Wed Mar 31 16:02:13 2004 +++ llvm/lib/Target/X86/X86InstrInfo.td Fri Apr 2 01:11:10 2004 @@ -531,10 +531,13 @@ def ADD16mi8 : Im16i8<"add", 0x83, MRM0m >, OpSize; // [mem16] += I8 def ADD32mi8 : Im32i8<"add", 0x83, MRM0m >; // [mem32] += I8 -def ADC32rr : I <"adc", 0x11, MRMDestReg>; // R32 += R32+Carry -def ADC32rm : Im32 <"adc", 0x11, MRMSrcMem >; // R32 += [mem32]+Carry -def ADC32mr : Im32 <"adc", 0x13, MRMDestMem>; // [mem32] += R32+Carry - +def ADC32rr : I <"adc", 0x11, MRMDestReg>; // R32 += R32+Carry +def ADC32rm : Im32 <"adc", 0x11, MRMSrcMem >; // R32 += [mem32]+Carry +def ADC32mr : Im32 <"adc", 0x13, MRMDestMem>; // [mem32] += R32+Carry +def ADC32ri : Ii32 <"adc", 0x81, MRM2r >; // R32 += I32+Carry +def ADC32ri8 : Ii8 <"adc", 0x83, MRM2r >; // R32 += I8+Carry +def ADC32mi : Im32i32<"adc", 0x81, MRM2m >; // [mem32] += I32+Carry +def ADC32mi8 : Im32i8 <"adc", 0x83, MRM2m >; // [mem32[ += I8+Carry def SUB8rr : I <"sub", 0x28, MRMDestReg>, Pattern<(set R8 , (minus R8 , R8 ))>; def SUB16rr : I <"sub", 0x29, MRMDestReg>, OpSize, Pattern<(set R16, (minus R16, R16))>; @@ -558,9 +561,13 @@ def SUB16mi8 : Im16i8<"sub", 0x83, MRM5m >, OpSize; // [mem16] -= I8 def SUB32mi8 : Im32i8<"sub", 0x83, MRM5m >; // [mem32] -= I8 -def SBB32rr : I <"sbb", 0x19, MRMDestReg>; // R32 -= R32+Borrow -def SBB32rm : Im32 <"sbb", 0x19, MRMSrcMem >; // R32 -= [mem32]+Borrow -def SBB32mr : Im32 <"sbb", 0x1B, MRMDestMem>; // [mem32] -= R32+Borrow +def SBB32rr : I <"sbb", 0x19, MRMDestReg>; // R32 -= R32+Borrow +def SBB32rm : Im32 <"sbb", 0x19, MRMSrcMem >; // R32 -= [mem32]+Borrow +def SBB32mr : Im32 <"sbb", 0x1B, MRMDestMem>; // [mem32] -= R32+Borrow +def SBB32ri : Ii32 <"adc", 0x81, MRM3r >; // R32 -= I32+Borrow +def SBB32ri8 : Ii8 <"adc", 0x83, MRM3r >; // R32 -= I8+Borrow +def SBB32mi : Im32i32<"adc", 0x81, MRM3m >; // [mem32] -= I32+Borrow +def SBB32mi8 : Im32i8 <"adc", 0x83, MRM3m >; // [mem32[ -= I8+Borrow def IMUL16rr : I <"imul", 0xAF, MRMSrcReg>, TB, OpSize, Pattern<(set R16, (times R16, R16))>; def IMUL32rr : I <"imul", 0xAF, MRMSrcReg>, TB , Pattern<(set R32, (times R32, R32))>; Index: llvm/lib/Target/X86/X86RegisterInfo.cpp diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.79 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.80 --- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.79 Tue Mar 30 15:29:47 2004 +++ llvm/lib/Target/X86/X86RegisterInfo.cpp Fri Apr 2 01:11:10 2004 @@ -176,6 +176,7 @@ case X86::ADD16rr: return MakeMRInst(X86::ADD16mr, FrameIndex, MI); case X86::ADD32rr: return MakeMRInst(X86::ADD32mr, FrameIndex, MI); case X86::ADC32rr: return MakeMRInst(X86::ADC32mr, FrameIndex, MI); + case X86::ADC32ri: return MakeMIInst(X86::ADC32mi, FrameIndex, MI); case X86::ADD8ri: return MakeMIInst(X86::ADD8mi , FrameIndex, MI); case X86::ADD16ri: return MakeMIInst(X86::ADD16mi, FrameIndex, MI); case X86::ADD32ri: return MakeMIInst(X86::ADD32mi, FrameIndex, MI); @@ -183,6 +184,7 @@ case X86::SUB16rr: return MakeMRInst(X86::SUB16mr, FrameIndex, MI); case X86::SUB32rr: return MakeMRInst(X86::SUB32mr, FrameIndex, MI); case X86::SBB32rr: return MakeMRInst(X86::SBB32mr, FrameIndex, MI); + case X86::SBB32ri: return MakeMIInst(X86::SBB32mi, FrameIndex, MI); case X86::SUB8ri: return MakeMIInst(X86::SUB8mi , FrameIndex, MI); case X86::SUB16ri: return MakeMIInst(X86::SUB16mi, FrameIndex, MI); case X86::SUB32ri: return MakeMIInst(X86::SUB32mi, FrameIndex, MI); From reid at x10sys.com Fri Apr 2 02:04:01 2004 From: reid at x10sys.com (Reid Spencer) Date: Fri Apr 2 02:04:01 2004 Subject: [llvm-commits] Patch For Verifiier - Supports AbortProcessAction, ThrowExceptionAction, PrintMessageAction Message-ID: <1080892981.19732.46.camel@bashful.x10sys.com> The attached patch allows the caller of llvm::verifyModule, llvm::verifyFunction, and createVerifierPass to specify what they would like the verifier to do when it finds a problem. The current behavior of printing the error message and aborting the process is retained as the default. However, it is possible to pass an "action" parameter into each of these functions to control what the verifier will do. See Verifier.h for details. I've compiled this patch against the latest CVS with no problems. Everything compiles and links fine. I've tested it fairly well with the XPL compiler for both AbortProcessAction and ThrowExceptionAction and all is well. I can now catch the exception and handle it in the XPL Compiler. Reid. -------------- next part -------------- A non-text attachment was scrubbed... Name: verifier_patch.txt Type: text/x-patch Size: 10315 bytes Desc: not available Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20040402/e7b096d5/attachment.bin -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: This is a digitally signed message part Url : http://lists.cs.uiuc.edu/pipermail/llvm-commits/attachments/20040402/e7b096d5/attachment-0001.bin From lattner at cs.uiuc.edu Fri Apr 2 10:25:18 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 10:25:18 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Analysis/Verifier.h Message-ID: <200404021544.JAA24750@apoc.cs.uiuc.edu> Changes in directory llvm/include/llvm/Analysis: Verifier.h updated: 1.12 -> 1.13 --- Log message: Make the verifier API more complete and useful --- Diffs of the changes: (+36 -10) Index: llvm/include/llvm/Analysis/Verifier.h diff -u llvm/include/llvm/Analysis/Verifier.h:1.12 llvm/include/llvm/Analysis/Verifier.h:1.13 --- llvm/include/llvm/Analysis/Verifier.h:1.12 Tue Nov 11 16:41:31 2003 +++ llvm/include/llvm/Analysis/Verifier.h Fri Apr 2 09:44:33 2004 @@ -27,20 +27,46 @@ class Module; class Function; -// createVerifierPass - Check a module or function for validity. If errors are -// detected, error messages corresponding to the problem are printed to stderr. -// -FunctionPass *createVerifierPass(); +/// @brief An enumeration to specify the action to be taken if errors found. +/// +/// This enumeration is used in the functions below to indicate what should +/// happen if the verifier finds errors. Each of the functions that uses +/// this enumeration as an argument provides a default value for it. The +/// actions are listed below. +enum VerifierFailureAction { + AbortProcessAction, ///< verifyModule will print to stderr and abort() + ThrowExceptionAction, ///< verifyModule will throw errors as std::string + PrintMessageAction, ///< verifyModule will print to stderr and return true + ReturnStatusAction ///< verifyModule will just return true +}; -// verifyModule - Check a module for errors, printing messages on stderr. -// Return true if the module is corrupt. This should only be used for -// debugging, because it plays games with PassManagers and stuff. -// -bool verifyModule(const Module &M); +/// @brief Create a verifier pass. +/// +/// Check a module or function for validity. When the pass is used, the +/// action indicated by the \p action argument will be used if errors are +/// found. +FunctionPass *createVerifierPass( + VerifierFailureAction action = AbortProcessAction ///< Action to take +); + +/// @brief Check a module for errors. +/// +/// If there are no errors, the function returns false. If an error is found, +/// the action taken depends on the \p action parameter. +/// This should only be used for debugging, because it plays games with +/// PassManagers and stuff. + +bool verifyModule( + const Module &M, ///< The module to be verified + VerifierFailureAction action = AbortProcessAction ///< Action to take +); // verifyFunction - Check a function for errors, useful for use when debugging a // pass. -bool verifyFunction(const Function &F); +bool verifyFunction( + const Function &F, ///< The function to be verified + VerifierFailureAction action = AbortProcessAction ///< Action to take +); } // End llvm namespace From lattner at cs.uiuc.edu Fri Apr 2 10:25:48 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 10:25:48 2004 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Verifier.cpp Message-ID: <200404021545.JAA24767@apoc.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Verifier.cpp updated: 1.89 -> 1.90 --- Log message: Make the verifier API more complete and useful. Patch contributed by Reid Spencer --- Diffs of the changes: (+47 -19) Index: llvm/lib/VMCore/Verifier.cpp diff -u llvm/lib/VMCore/Verifier.cpp:1.89 llvm/lib/VMCore/Verifier.cpp:1.90 --- llvm/lib/VMCore/Verifier.cpp:1.89 Sun Mar 28 18:29:36 2004 +++ llvm/lib/VMCore/Verifier.cpp Fri Apr 2 09:45:08 2004 @@ -55,6 +55,7 @@ #include "llvm/Support/InstVisitor.h" #include "Support/STLExtras.h" #include +#include using namespace llvm; namespace { // Anonymous namespace for class @@ -62,14 +63,25 @@ struct Verifier : public FunctionPass, InstVisitor { bool Broken; // Is this module found to be broken? bool RealPass; // Are we not being run by a PassManager? - bool AbortBroken; // If broken, should it or should it not abort? + VerifierFailureAction action; + // What to do if verification fails. Module *Mod; // Module we are verifying right now DominatorSet *DS; // Dominator set, caution can be null! + std::stringstream msgs; // A stringstream to collect messages - Verifier() : Broken(false), RealPass(true), AbortBroken(true), DS(0) {} - Verifier(bool AB) : Broken(false), RealPass(true), AbortBroken(AB), DS(0) {} + Verifier() + : Broken(false), RealPass(true), action(AbortProcessAction), + DS(0), msgs( std::ios_base::app | std::ios_base::out ) {} + Verifier( VerifierFailureAction ctn ) + : Broken(false), RealPass(true), action(ctn), DS(0), + msgs( std::ios_base::app | std::ios_base::out ) {} + Verifier(bool AB ) + : Broken(false), RealPass(true), + action( AB ? AbortProcessAction : PrintMessageAction), DS(0), + msgs( std::ios_base::app | std::ios_base::out ) {} Verifier(DominatorSet &ds) - : Broken(false), RealPass(false), AbortBroken(false), DS(&ds) {} + : Broken(false), RealPass(false), action(PrintMessageAction), + DS(&ds), msgs( std::ios_base::app | std::ios_base::out ) {} bool doInitialization(Module &M) { @@ -120,10 +132,26 @@ /// abortIfBroken - If the module is broken and we are supposed to abort on /// this condition, do so. /// - void abortIfBroken() const { - if (Broken && AbortBroken) { - std::cerr << "Broken module found, compilation aborted!\n"; - abort(); + void abortIfBroken() { + if (Broken) + { + msgs << "Broken module found, "; + switch (action) + { + case AbortProcessAction: + msgs << "compilation aborted!\n"; + std::cerr << msgs.str(); + abort(); + case ThrowExceptionAction: + msgs << "verification terminated.\n"; + throw msgs.str(); + case PrintMessageAction: + msgs << "verification continues.\n"; + std::cerr << msgs.str(); + break; + case ReturnStatusAction: + break; + } } } @@ -154,12 +182,12 @@ void WriteValue(const Value *V) { if (!V) return; if (isa(V)) { - std::cerr << *V; + msgs << *V; } else if (const Type *Ty = dyn_cast(V)) { - WriteTypeSymbolic(std::cerr, Ty, Mod); + WriteTypeSymbolic(msgs, Ty, Mod); } else { - WriteAsOperand (std::cerr, V, true, true, Mod); - std::cerr << "\n"; + WriteAsOperand (msgs, V, true, true, Mod); + msgs << "\n"; } } @@ -170,7 +198,7 @@ void CheckFailed(const std::string &Message, const Value *V1 = 0, const Value *V2 = 0, const Value *V3 = 0, const Value *V4 = 0) { - std::cerr << Message << "\n"; + msgs << Message << "\n"; WriteValue(V1); WriteValue(V2); WriteValue(V3); @@ -623,18 +651,18 @@ // Implement the public interfaces to this file... //===----------------------------------------------------------------------===// -FunctionPass *llvm::createVerifierPass() { - return new Verifier(); +FunctionPass *llvm::createVerifierPass(VerifierFailureAction action) { + return new Verifier(action); } // verifyFunction - Create -bool llvm::verifyFunction(const Function &f) { +bool llvm::verifyFunction(const Function &f, VerifierFailureAction action) { Function &F = const_cast(f); assert(!F.isExternal() && "Cannot verify external functions"); FunctionPassManager FPM(new ExistingModuleProvider(F.getParent())); - Verifier *V = new Verifier(); + Verifier *V = new Verifier(action); FPM.add(V); FPM.run(F); return V->Broken; @@ -643,9 +671,9 @@ /// verifyModule - Check a module for errors, printing messages on stderr. /// Return true if the module is corrupt. /// -bool llvm::verifyModule(const Module &M) { +bool llvm::verifyModule(const Module &M, VerifierFailureAction action) { PassManager PM; - Verifier *V = new Verifier(); + Verifier *V = new Verifier(action); PM.add(V); PM.run((Module&)M); return V->Broken; From sabre at nondot.org Fri Apr 2 10:26:21 2004 From: sabre at nondot.org (Chris Lattner) Date: Fri Apr 2 10:26:21 2004 Subject: [llvm-commits] Patch For Verifiier - Supports AbortProcessAction, ThrowExceptionAction, PrintMessageAction In-Reply-To: <1080892981.19732.46.camel@bashful.x10sys.com> Message-ID: On Fri, 2 Apr 2004, Reid Spencer wrote: > The attached patch allows the caller of llvm::verifyModule, > llvm::verifyFunction, and createVerifierPass to specify what they would > like the verifier to do when it finds a problem. The current behavior of > printing the error message and aborting the process is retained as the > default. However, it is possible to pass an "action" parameter into each > of these functions to control what the verifier will do. See Verifier.h > for details. Applied, thanks! -Chris > I've compiled this patch against the latest CVS with no problems. > Everything compiles and links fine. I've tested it fairly well with the > XPL compiler for both AbortProcessAction and ThrowExceptionAction and > all is well. I can now catch the exception and handle it in the XPL > Compiler. > > Reid. > -Chris -- http://llvm.cs.uiuc.edu/ http://www.nondot.org/~sabre/Projects/ From alkis at cs.uiuc.edu Fri Apr 2 10:26:59 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Fri Apr 2 10:26:59 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/InstSelectSimple.cpp Message-ID: <200404021551.JAA15722@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: InstSelectSimple.cpp updated: 1.201 -> 1.202 --- Log message: Fix type in instruction builder instantiation --- Diffs of the changes: (+1 -1) Index: llvm/lib/Target/X86/InstSelectSimple.cpp diff -u llvm/lib/Target/X86/InstSelectSimple.cpp:1.201 llvm/lib/Target/X86/InstSelectSimple.cpp:1.202 --- llvm/lib/Target/X86/InstSelectSimple.cpp:1.201 Wed Mar 31 16:22:36 2004 +++ llvm/lib/Target/X86/InstSelectSimple.cpp Fri Apr 2 09:51:03 2004 @@ -1737,7 +1737,7 @@ uint64_t Op1v = cast(Op1C)->getRawValue(); - BuildMI(*MBB, IP, Opcode, 5, DestReg).addReg(Op0r).addImm(Op1v); + BuildMI(*MBB, IP, Opcode, 2, DestReg).addReg(Op0r).addImm(Op1v); return; } From alkis at cs.uiuc.edu Fri Apr 2 10:27:21 2004 From: alkis at cs.uiuc.edu (Alkis Evlogimenos) Date: Fri Apr 2 10:27:21 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/X86InstrInfo.td Message-ID: <200404021603.KAA15794@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: X86InstrInfo.td updated: 1.65 -> 1.66 --- Log message: Fix type in comments --- Diffs of the changes: (+2 -2) Index: llvm/lib/Target/X86/X86InstrInfo.td diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.65 llvm/lib/Target/X86/X86InstrInfo.td:1.66 --- llvm/lib/Target/X86/X86InstrInfo.td:1.65 Fri Apr 2 01:11:10 2004 +++ llvm/lib/Target/X86/X86InstrInfo.td Fri Apr 2 10:02:50 2004 @@ -537,7 +537,7 @@ def ADC32ri : Ii32 <"adc", 0x81, MRM2r >; // R32 += I32+Carry def ADC32ri8 : Ii8 <"adc", 0x83, MRM2r >; // R32 += I8+Carry def ADC32mi : Im32i32<"adc", 0x81, MRM2m >; // [mem32] += I32+Carry -def ADC32mi8 : Im32i8 <"adc", 0x83, MRM2m >; // [mem32[ += I8+Carry +def ADC32mi8 : Im32i8 <"adc", 0x83, MRM2m >; // [mem32] += I8+Carry def SUB8rr : I <"sub", 0x28, MRMDestReg>, Pattern<(set R8 , (minus R8 , R8 ))>; def SUB16rr : I <"sub", 0x29, MRMDestReg>, OpSize, Pattern<(set R16, (minus R16, R16))>; @@ -567,7 +567,7 @@ def SBB32ri : Ii32 <"adc", 0x81, MRM3r >; // R32 -= I32+Borrow def SBB32ri8 : Ii8 <"adc", 0x83, MRM3r >; // R32 -= I8+Borrow def SBB32mi : Im32i32<"adc", 0x81, MRM3m >; // [mem32] -= I32+Borrow -def SBB32mi8 : Im32i8 <"adc", 0x83, MRM3m >; // [mem32[ -= I8+Borrow +def SBB32mi8 : Im32i8 <"adc", 0x83, MRM3m >; // [mem32] -= I8+Borrow def IMUL16rr : I <"imul", 0xAF, MRMSrcReg>, TB, OpSize, Pattern<(set R16, (times R16, R16))>; def IMUL32rr : I <"imul", 0xAF, MRMSrcReg>, TB , Pattern<(set R32, (times R32, R32))>; From lattner at cs.uiuc.edu Fri Apr 2 14:33:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:33:01 2004 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/ExtractFunction.cpp Message-ID: <200404021628.KAA17821@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: ExtractFunction.cpp updated: 1.32 -> 1.33 --- Log message: Minor speedup --- Diffs of the changes: (+5 -10) Index: llvm/tools/bugpoint/ExtractFunction.cpp diff -u llvm/tools/bugpoint/ExtractFunction.cpp:1.32 llvm/tools/bugpoint/ExtractFunction.cpp:1.33 --- llvm/tools/bugpoint/ExtractFunction.cpp:1.32 Fri Apr 2 00:30:33 2004 +++ llvm/tools/bugpoint/ExtractFunction.cpp Fri Apr 2 10:28:32 2004 @@ -26,6 +26,7 @@ #include "Support/CommandLine.h" #include "Support/Debug.h" #include "Support/FileUtilities.h" +#include using namespace llvm; namespace llvm { @@ -183,7 +184,9 @@ I->setInitializer(0); // Delete the initializer to make it external // Remove the Test functions from the Safe module + std::set > TestFunctions; for (unsigned i = 0, e = F.size(); i != e; ++i) { + TestFunctions.insert(std::make_pair(F[i]->getName(), F[i]->getType())); Function *TNOF = M->getFunction(F[i]->getName(), F[i]->getFunctionType()); DEBUG(std::cerr << "Removing function " << F[i]->getName() << "\n"); assert(TNOF && "Function doesn't exist in module!"); @@ -191,16 +194,8 @@ } // Remove the Safe functions from the Test module - for (Module::iterator I = New->begin(), E = New->end(); I != E; ++I) { - bool funcFound = false; - for (std::vector::const_iterator FI = F.begin(), Fe = F.end(); - FI != Fe; ++FI) - if (I->getName() == (*FI)->getName() && - I->getType() == (*FI)->getType()) - funcFound = true; - - if (!funcFound) + for (Module::iterator I = New->begin(), E = New->end(); I != E; ++I) + if (!TestFunctions.count(std::make_pair(I->getName(), I->getType()))) DeleteFunctionBody(I); - } return New; } From gaeke at cs.uiuc.edu Fri Apr 2 14:34:38 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 14:34:38 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp Message-ID: <200404021752.LAA25169@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/SparcV9: SparcV9PreSelection.cpp updated: 1.29 -> 1.30 --- Log message: Add support for constant select expressions. Clarify the assertion failure msg. --- Diffs of the changes: (+17 -3) Index: llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp diff -u llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp:1.29 llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp:1.30 --- llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp:1.29 Thu Mar 11 13:23:15 2004 +++ llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp Fri Apr 2 11:52:29 2004 @@ -104,7 +104,7 @@ Instruction& insertBefore) { Value *getArg1, *getArg2; - + switch(CE->getOpcode()) { case Instruction::Cast: @@ -124,11 +124,25 @@ return new GetElementPtrInst(getArg1, std::vector(CE->op_begin()+1, CE->op_end()), "constantGEP", &insertBefore); - + + case Instruction::Select: { + Value *C, *S1, *S2; + C = CE->getOperand (0); + if (ConstantExpr* CEarg = dyn_cast (C)) + C = DecomposeConstantExpr (CEarg, insertBefore); + S1 = CE->getOperand (1); + if (ConstantExpr* CEarg = dyn_cast (S1)) + S1 = DecomposeConstantExpr (CEarg, insertBefore); + S2 = CE->getOperand (2); + if (ConstantExpr* CEarg = dyn_cast (S2)) + S2 = DecomposeConstantExpr (CEarg, insertBefore); + return new SelectInst (C, S1, S2); + } + default: // must be a binary operator assert(CE->getOpcode() >= Instruction::BinaryOpsBegin && CE->getOpcode() < Instruction::BinaryOpsEnd && - "Unrecognized opcode in ConstantExpr"); + "Unhandled opcode in ConstantExpr"); getArg1 = CE->getOperand(0); if (ConstantExpr* CEarg = dyn_cast(getArg1)) getArg1 = DecomposeConstantExpr(CEarg, insertBefore); From gaeke at cs.uiuc.edu Fri Apr 2 14:35:05 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 14:35:05 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp Message-ID: <200404021752.LAA25232@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/SparcV9: SparcV9TargetMachine.cpp updated: 1.107 -> 1.108 --- Log message: Only strip symbols if emitting bytecode to the assembly file. Move lowerselect pass to come after preselection. Move machine code construction and stack slots pass to come right before instruction selection. This is to help fix perlbmk. Update comments. Make the sequence of passes in addPassesToJITCompile look more like the sequence of passes in addPassesToEmitAssembly, including support for -print-machineinstrs. --- Diffs of the changes: (+33 -29) Index: llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp diff -u llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp:1.107 llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp:1.108 --- llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp:1.107 Tue Mar 30 12:41:57 2004 +++ llvm/lib/Target/SparcV9/SparcV9TargetMachine.cpp Fri Apr 2 11:52:40 2004 @@ -125,39 +125,34 @@ bool SparcV9TargetMachine::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out) { - // The following 3 passes used to be inserted specially by llc. // Replace malloc and free instructions with library calls. PM.add(createLowerAllocationsPass()); - // Strip all of the symbols from the bytecode so that it will be smaller... - if (!DisableStrip) - PM.add(createSymbolStrippingPass()); - // FIXME: implement the switch instruction in the instruction selector. PM.add(createLowerSwitchPass()); - PM.add(createLowerSelectPass()); - // FIXME: implement the invoke/unwind instructions! PM.add(createLowerInvokePass()); // decompose multi-dimensional array references into single-dim refs PM.add(createDecomposeMultiDimRefsPass()); - - // Construct and initialize the MachineFunction object for this fn. - PM.add(createMachineCodeConstructionPass(*this)); - - //Insert empty stackslots in the stack frame of each function - //so %fp+offset-8 and %fp+offset-16 are empty slots now! - PM.add(createStackSlotsPass(*this)); - // Specialize LLVM code for this target machine and then - // run basic dataflow optimizations on LLVM code. + // Lower LLVM code to the form expected by the SPARCv9 instruction selector. PM.add(createPreSelectionPass(*this)); + PM.add(createLowerSelectPass()); + + // Run basic LLVM dataflow optimizations, to clean up after pre-selection. PM.add(createReassociatePass()); PM.add(createLICMPass()); PM.add(createGCSEPass()); + // Construct and initialize the MachineFunction object for this fn. + PM.add(createMachineCodeConstructionPass(*this)); + + // Insert empty stackslots in the stack frame of each function + // so %fp+offset-8 and %fp+offset-16 are empty slots now! + PM.add(createStackSlotsPass(*this)); + PM.add(createInstructionSelectionPass(*this)); if (!DisableSched) @@ -190,9 +185,13 @@ PM.add(createSparcV9MachineCodeDestructionPass()); // Emit bytecode to the assembly file into its special section next - if (EmitMappingInfo) + if (EmitMappingInfo) { + // Strip all of the symbols from the bytecode so that it will be smaller... + if (!DisableStrip) + PM.add(createSymbolStrippingPass()); PM.add(createBytecodeAsmPrinterPass(Out)); - + } + return false; } @@ -206,35 +205,40 @@ TD.getPointerAlignment(), TD.getDoubleAlignment())); // Replace malloc and free instructions with library calls. - // Do this after tracing until lli implements these lib calls. - // For now, it will emulate malloc and free internally. PM.add(createLowerAllocationsPass()); - + // FIXME: implement the switch instruction in the instruction selector. PM.add(createLowerSwitchPass()); - PM.add(createLowerSelectPass()); - // FIXME: implement the invoke/unwind instructions! PM.add(createLowerInvokePass()); - + // decompose multi-dimensional array references into single-dim refs PM.add(createDecomposeMultiDimRefsPass()); - - // Construct and initialize the MachineFunction object for this fn. - PM.add(createMachineCodeConstructionPass(TM)); - // Specialize LLVM code for this target machine and then - // run basic dataflow optimizations on LLVM code. + // Lower LLVM code to the form expected by the SPARCv9 instruction selector. PM.add(createPreSelectionPass(TM)); + PM.add(createLowerSelectPass()); + + // Run basic LLVM dataflow optimizations, to clean up after pre-selection. PM.add(createReassociatePass()); // FIXME: these passes crash the FunctionPassManager when being added... //PM.add(createLICMPass()); //PM.add(createGCSEPass()); + // Construct and initialize the MachineFunction object for this fn. + PM.add(createMachineCodeConstructionPass(TM)); + PM.add(createInstructionSelectionPass(TM)); + if (PrintMachineCode) + PM.add(createMachineFunctionPrinterPass(&std::cerr, "Before reg alloc:\n")); + PM.add(getRegisterAllocator(TM)); + + if (PrintMachineCode) + PM.add(createMachineFunctionPrinterPass(&std::cerr, "After reg alloc:\n")); + PM.add(createPrologEpilogInsertionPass()); if (!DisablePeephole) From alkis at niobe.cs.uiuc.edu Fri Apr 2 14:37:37 2004 From: alkis at niobe.cs.uiuc.edu (Alkis Evlogimenos) Date: Fri Apr 2 14:37:37 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/InstSelectSimple.cpp Message-ID: <200404021811.i32IBjq06979@niobe.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: InstSelectSimple.cpp updated: 1.202 -> 1.203 --- Log message: Clean up code a bit. --- Diffs of the changes: (+7 -14) Index: llvm/lib/Target/X86/InstSelectSimple.cpp diff -u llvm/lib/Target/X86/InstSelectSimple.cpp:1.202 llvm/lib/Target/X86/InstSelectSimple.cpp:1.203 --- llvm/lib/Target/X86/InstSelectSimple.cpp:1.202 Fri Apr 2 09:51:03 2004 +++ llvm/lib/Target/X86/InstSelectSimple.cpp Fri Apr 2 12:11:32 2004 @@ -1674,18 +1674,11 @@ if (ConstantInt *CI = dyn_cast(Op0)) { if (CI->isNullValue()) { unsigned op1Reg = getReg(Op1, MBB, IP); - switch (Class) { - default: assert(0 && "Unknown class for this function!"); - case cByte: - BuildMI(*MBB, IP, X86::NEG8r, 1, DestReg).addReg(op1Reg); - return; - case cShort: - BuildMI(*MBB, IP, X86::NEG16r, 1, DestReg).addReg(op1Reg); - return; - case cInt: - BuildMI(*MBB, IP, X86::NEG32r, 1, DestReg).addReg(op1Reg); - return; - } + static unsigned const NEGTab[] = { + X86::NEG8r, X86::NEG16r, X86::NEG32r + }; + BuildMI(*MBB, IP, NEGTab[Class], 1, DestReg).addReg(op1Reg); + return; } } else if (ConstantFP *CFP = dyn_cast(Op0)) if (CFP->isExactlyValue(-0.0)) { @@ -1716,8 +1709,8 @@ // add X, 1 -> inc X if (OperatorClass == 0 && Op1C->equalsInt(1)) { - static unsigned const DECTab[] = { X86::INC8r, X86::INC16r, X86::INC32r }; - BuildMI(*MBB, IP, DECTab[Class], 1, DestReg).addReg(Op0r); + static unsigned const INCTab[] = { X86::INC8r, X86::INC16r, X86::INC32r }; + BuildMI(*MBB, IP, INCTab[Class], 1, DestReg).addReg(Op0r); return; } From lattner at cs.uiuc.edu Fri Apr 2 14:38:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:38:01 2004 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/SimplifyCFG/return-merge.ll Message-ID: <200404021813.MAA27910@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/SimplifyCFG: return-merge.ll added (r1.1) --- Log message: New testcase --- Diffs of the changes: (+18 -0) Index: llvm/test/Regression/Transforms/SimplifyCFG/return-merge.ll diff -c /dev/null llvm/test/Regression/Transforms/SimplifyCFG/return-merge.ll:1.1 *** /dev/null Fri Apr 2 12:12:59 2004 --- llvm/test/Regression/Transforms/SimplifyCFG/return-merge.ll Fri Apr 2 12:12:49 2004 *************** *** 0 **** --- 1,18 ---- + ; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | not grep br + + int %test1(bool %C) { + entry: + br bool %C, label %T, label %F + T: + ret int 1 + F: + ret int 0 + } + + void %test2(bool %C) { + br bool %C, label %T, label %F + T: + ret void + F: + ret void + } From lattner at cs.uiuc.edu Fri Apr 2 14:38:26 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:38:26 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Utils/SimplifyCFG.cpp Message-ID: <200404021813.MAA27925@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Utils: SimplifyCFG.cpp updated: 1.32 -> 1.33 --- Log message: Implement Transforms/SimplifyCFG/return-merge.ll This actually causes us to turn code like: return C ? A : B; into a select instruction. --- Diffs of the changes: (+57 -1) Index: llvm/lib/Transforms/Utils/SimplifyCFG.cpp diff -u llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.32 llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.33 --- llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.32 Tue Mar 30 13:44:05 2004 +++ llvm/lib/Transforms/Utils/SimplifyCFG.cpp Fri Apr 2 12:13:43 2004 @@ -613,16 +613,23 @@ // If this is a returning block with only PHI nodes in it, fold the return // instruction into any unconditional branch predecessors. + // + // If any predecessor is a conditional branch that just selects among + // different return values, fold the replace the branch/return with a select + // and return. if (ReturnInst *RI = dyn_cast(BB->getTerminator())) { BasicBlock::iterator BBI = BB->getTerminator(); if (BBI == BB->begin() || isa(--BBI)) { - // Find predecessors that end with unconditional branches. + // Find predecessors that end with branches. std::vector UncondBranchPreds; + std::vector CondBranchPreds; for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) { TerminatorInst *PTI = (*PI)->getTerminator(); if (BranchInst *BI = dyn_cast(PTI)) if (BI->isUnconditional()) UncondBranchPreds.push_back(*PI); + else + CondBranchPreds.push_back(BI); } // If we found some, do the transformation! @@ -653,6 +660,55 @@ M->getBasicBlockList().erase(BB); return true; + } + + // Check out all of the conditional branches going to this return + // instruction. If any of them just select between returns, change the + // branch itself into a select/return pair. + while (!CondBranchPreds.empty()) { + BranchInst *BI = CondBranchPreds.back(); + CondBranchPreds.pop_back(); + BasicBlock *TrueSucc = BI->getSuccessor(0); + BasicBlock *FalseSucc = BI->getSuccessor(1); + BasicBlock *OtherSucc = TrueSucc == BB ? FalseSucc : TrueSucc; + + // Check to see if the non-BB successor is also a return block. + if (isa(OtherSucc->getTerminator())) { + // Check to see if there are only PHI instructions in this block. + BasicBlock::iterator OSI = OtherSucc->getTerminator(); + if (OSI == OtherSucc->begin() || isa(--OSI)) { + // Okay, we found a branch that is going to two return nodes. If + // there is no return value for this function, just change the + // branch into a return. + if (RI->getNumOperands() == 0) { + TrueSucc->removePredecessor(BI->getParent()); + FalseSucc->removePredecessor(BI->getParent()); + new ReturnInst(0, BI); + BI->getParent()->getInstList().erase(BI); + return true; + } + + // Otherwise, figure out what the true and false return values are + // so we can insert a new select instruction. + Value *TrueValue = TrueSucc->getTerminator()->getOperand(0); + Value *FalseValue = FalseSucc->getTerminator()->getOperand(0); + + // Unwrap any PHI nodes in the return blocks. + if (PHINode *TVPN = dyn_cast(TrueValue)) + if (TVPN->getParent() == TrueSucc) + TrueValue = TVPN->getIncomingValueForBlock(BI->getParent()); + if (PHINode *FVPN = dyn_cast(FalseValue)) + if (FVPN->getParent() == FalseSucc) + FalseValue = FVPN->getIncomingValueForBlock(BI->getParent()); + + // Insert a new select instruction. + Value *NewRetVal = new SelectInst(BI->getCondition(), TrueValue, + FalseValue, "retval", BI); + new ReturnInst(NewRetVal, BI); + BI->getParent()->getInstList().erase(BI); + return true; + } + } } } } else if (UnwindInst *UI = dyn_cast(BB->begin())) { From lattner at cs.uiuc.edu Fri Apr 2 14:38:45 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:38:45 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Utils/SimplifyCFG.cpp Message-ID: <200404021815.MAA28314@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Utils: SimplifyCFG.cpp updated: 1.33 -> 1.34 --- Log message: Fix the obvious bug in my previous checkin --- Diffs of the changes: (+3 -0) Index: llvm/lib/Transforms/Utils/SimplifyCFG.cpp diff -u llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.33 llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.34 --- llvm/lib/Transforms/Utils/SimplifyCFG.cpp:1.33 Fri Apr 2 12:13:43 2004 +++ llvm/lib/Transforms/Utils/SimplifyCFG.cpp Fri Apr 2 12:15:10 2004 @@ -701,6 +701,9 @@ if (FVPN->getParent() == FalseSucc) FalseValue = FVPN->getIncomingValueForBlock(BI->getParent()); + TrueSucc->removePredecessor(BI->getParent()); + FalseSucc->removePredecessor(BI->getParent()); + // Insert a new select instruction. Value *NewRetVal = new SelectInst(BI->getCondition(), TrueValue, FalseValue, "retval", BI); From gaeke at cs.uiuc.edu Fri Apr 2 14:42:33 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 14:42:33 2004 Subject: [llvm-commits] CVS: llvm-gcc/libiberty/Makefile.in Message-ID: <200404021944.NAA27457@seraph.cs.uiuc.edu> Changes in directory llvm-gcc/libiberty: Makefile.in updated: 1.2 -> 1.3 --- Log message: Solaris chokes on "for $g in ;" - so make sure EXTRA_OFILES is never empty. This is a nasty ol' hack, but if I ever get another makefile error from libiberty, I am going to scream. And besides, the strchr in this file looks reasonable enough. --- Diffs of the changes: (+2 -2) Index: llvm-gcc/libiberty/Makefile.in diff -u llvm-gcc/libiberty/Makefile.in:1.2 llvm-gcc/libiberty/Makefile.in:1.3 --- llvm-gcc/libiberty/Makefile.in:1.2 Mon Mar 29 15:08:41 2004 +++ llvm-gcc/libiberty/Makefile.in Fri Apr 2 13:44:48 2004 @@ -77,7 +77,7 @@ # A configuration can specify extra .o files that should be included, # even if they are in libc. (Perhaps the libc version is buggy.) -EXTRA_OFILES = +EXTRA_OFILES = strchr.o # Flags to pass to a recursive make. FLAGS_TO_PASS = \ @@ -307,7 +307,7 @@ needed-list: Makefile rm -f needed-list; touch needed-list; \ for f in $(NEEDED); do \ - if test -n $(LIBOBJS) -o -n $(EXTRA_OFILES); then \ + if test -n "$(LIBOBJS)" -o -n "$(EXTRA_OFILES)"; then \ for g in $(LIBOBJS) $(EXTRA_OFILES); do \ case "$$g" in \ *$$f*) echo $$g >> needed-list ;; \ From lattner at cs.uiuc.edu Fri Apr 2 14:44:45 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:44:45 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Analysis/ScalarEvolution.h Message-ID: <200404022023.OAA31038@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Analysis: ScalarEvolution.h added (r1.1) --- Log message: Add a new analysis --- Diffs of the changes: (+270 -0) Index: llvm/include/llvm/Analysis/ScalarEvolution.h diff -c /dev/null llvm/include/llvm/Analysis/ScalarEvolution.h:1.1 *** /dev/null Fri Apr 2 14:23:11 2004 --- llvm/include/llvm/Analysis/ScalarEvolution.h Fri Apr 2 14:23:00 2004 *************** *** 0 **** --- 1,270 ---- + //===- llvm/Analysis/ScalarEvolution.h - Scalar Evolution -------*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by the LLVM research group and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // The ScalarEvolution class is an LLVM pass which can be used to analyze and + // catagorize scalar expressions in loops. It specializes in recognizing + // general induction variables, representing them with the abstract and opaque + // SCEV class. Given this analysis, trip counts of loops and other important + // properties can be obtained. + // + // This analysis is primarily useful for induction variable substitution and + // strength reduction. + // + //===----------------------------------------------------------------------===// + + #ifndef LLVM_ANALYSIS_SCALAREVOLUTION_H + #define LLVM_ANALYSIS_SCALAREVOLUTION_H + + #include "llvm/Pass.h" + #include + + namespace llvm { + class Instruction; + class Type; + class ConstantRange; + class Loop; + class LoopInfo; + class SCEVHandle; + class ScalarEvolutionRewriter; + + /// SCEV - This class represent an analyzed expression in the program. These + /// are reference counted opaque objects that the client is not allowed to + /// do much with directly. + /// + class SCEV { + const unsigned SCEVType; // The SCEV baseclass this node corresponds to + unsigned RefCount; + + friend class SCEVHandle; + void addRef() { ++RefCount; } + void dropRef() { + if (--RefCount == 0) { + #if 0 + std::cerr << "DELETING: " << this << ": "; + print(std::cerr); + std::cerr << "\n"; + #endif + delete this; + } + } + + SCEV(const SCEV &); // DO NOT IMPLEMENT + void operator=(const SCEV &); // DO NOT IMPLEMENT + protected: + virtual ~SCEV(); + public: + SCEV(unsigned SCEVTy) : SCEVType(SCEVTy), RefCount(0) {} + + unsigned getSCEVType() const { return SCEVType; } + + /// getValueRange - Return the tightest constant bounds that this value is + /// known to have. This method is only valid on integer SCEV objects. + virtual ConstantRange getValueRange() const; + + /// isLoopInvariant - Return true if the value of this SCEV is unchanging in + /// the specified loop. + virtual bool isLoopInvariant(const Loop *L) const = 0; + + /// hasComputableLoopEvolution - Return true if this SCEV changes value in a + /// known way in the specified loop. This property being true implies that + /// the value is variant in the loop AND that we can emit an expression to + /// compute the value of the expression at any particular loop iteration. + virtual bool hasComputableLoopEvolution(const Loop *L) const = 0; + + /// getType - Return the LLVM type of this SCEV expression. + /// + virtual const Type *getType() const = 0; + + /// expandCodeFor - Given a rewriter object, expand this SCEV into a closed + /// form expression and return a Value corresponding to the expression in + /// question. + virtual Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) = 0; + + + /// print - Print out the internal representation of this scalar to the + /// specified stream. This should really only be used for debugging + /// purposes. + virtual void print(std::ostream &OS) const = 0; + + /// dump - This method is used for debugging. + /// + void dump() const; + }; + + inline std::ostream &operator<<(std::ostream &OS, const SCEV &S) { + S.print(OS); + return OS; + } + + /// SCEVCouldNotCompute - An object of this class is returned by queries that + /// could not be answered. For example, if you ask for the number of + /// iterations of a linked-list traversal loop, you will get one of these. + /// None of the standard SCEV operations are valid on this class, it is just a + /// marker. + struct SCEVCouldNotCompute : public SCEV { + SCEVCouldNotCompute(); + + // None of these methods are valid for this object. + virtual bool isLoopInvariant(const Loop *L) const; + virtual const Type *getType() const; + virtual bool hasComputableLoopEvolution(const Loop *L) const; + virtual Value *expandCodeFor(ScalarEvolutionRewriter &, Instruction *); + virtual void print(std::ostream &OS) const; + + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVCouldNotCompute *S) { return true; } + static bool classof(const SCEV *S); + }; + + /// SCEVHandle - This class is used to maintain the SCEV object's refcounts, + /// freeing the objects when the last reference is dropped. + class SCEVHandle { + SCEV *S; + SCEVHandle(); // DO NOT IMPLEMENT + public: + SCEVHandle(SCEV *s) : S(s) { + assert(S && "Cannot create a handle to a null SCEV!"); + S->addRef(); + } + SCEVHandle(const SCEVHandle &RHS) : S(RHS.S) { + S->addRef(); + } + ~SCEVHandle() { S->dropRef(); } + + operator SCEV*() const { return S; } + + SCEV &operator*() const { return *S; } + SCEV *operator->() const { return S; } + + bool operator==(SCEV *RHS) const { return S == RHS; } + bool operator!=(SCEV *RHS) const { return S != RHS; } + + const SCEVHandle &operator=(SCEV *RHS) { + if (S != RHS) { + S->dropRef(); + S = RHS; + S->addRef(); + } + return *this; + } + + const SCEVHandle &operator=(const SCEVHandle &RHS) { + if (S != RHS.S) { + S->dropRef(); + S = RHS.S; + S->addRef(); + } + return *this; + } + }; + + template struct simplify_type; + template<> struct simplify_type { + typedef SCEV* SimpleType; + static SimpleType getSimplifiedValue(const SCEVHandle &Node) { + return Node; + } + }; + template<> struct simplify_type + : public simplify_type {}; + + /// ScalarEvolution - This class is the main scalar evolution driver. Because + /// client code (intentionally) can't do much with the SCEV objects directly, + /// they must ask this class for services. + /// + class ScalarEvolution : public FunctionPass { + void *Impl; // ScalarEvolution uses the pimpl pattern + public: + ScalarEvolution() : Impl(0) {} + + /// getSCEV - Return a SCEV expression handle for the full generality of the + /// specified expression. + SCEVHandle getSCEV(Value *V) const; + + /// getSCEVAtScope - Return a SCEV expression handle for the specified value + /// at the specified scope in the program. The L value specifies a loop + /// nest to evaluate the expression at, where null is the top-level or a + /// specified loop is immediately inside of the loop. + /// + /// This method can be used to compute the exit value for a variable defined + /// in a loop by querying what the value will hold in the parent loop. + /// + /// If this value is not computable at this scope, a SCEVCouldNotCompute + /// object is returned. + SCEVHandle getSCEVAtScope(Value *V, const Loop *L) const; + + /// getIterationCount - If the specified loop has a predictable iteration + /// count, return it, otherwise return a SCEVCouldNotCompute object. + SCEVHandle getIterationCount(const Loop *L) const; + + /// hasLoopInvariantIterationCount - Return true if the specified loop has + /// an analyzable loop-invariant iteration count. + bool hasLoopInvariantIterationCount(const Loop *L) const; + + /// deleteInstructionFromRecords - This method should be called by the + /// client before it removes an instruction from the program, to make sure + /// that no dangling references are left around. + void deleteInstructionFromRecords(Instruction *I) const; + + /// shouldSubstituteIndVar - Return true if we should perform induction + /// variable substitution for this variable. This is a hack because we + /// don't have a strength reduction pass yet. When we do we will promote + /// all vars, because we can strength reduce them later as desired. + bool shouldSubstituteIndVar(const SCEV *S) const; + + virtual bool runOnFunction(Function &F); + virtual void releaseMemory(); + virtual void getAnalysisUsage(AnalysisUsage &AU) const; + virtual void print(std::ostream &OS) const; + }; + + /// ScalarEvolutionRewriter - This class uses information about analyze + /// scalars to rewrite expressions in canonical form. This can be used for + /// induction variable substitution, strength reduction, or loop exit value + /// replacement. + /// + /// Clients should create an instance of this class when rewriting is needed, + /// and destroying it when finished to allow the release of the associated + /// memory. + class ScalarEvolutionRewriter { + ScalarEvolution &SE; + LoopInfo &LI; + std::map InsertedExpressions; + std::set InsertedInstructions; + public: + ScalarEvolutionRewriter(ScalarEvolution &se, LoopInfo &li) + : SE(se), LI(li) {} + + /// isInsertedInstruction - Return true if the specified instruction was + /// inserted by the code rewriter. If so, the client should not modify the + /// instruction. + bool isInsertedInstruction(Instruction *I) const { + return InsertedInstructions.count(I); + } + + /// GetOrInsertCanonicalInductionVariable - This method returns the + /// canonical induction variable of the specified type for the specified + /// loop (inserts one if there is none). A canonical induction variable + /// starts at zero and steps by one on each iteration. + Value *GetOrInsertCanonicalInductionVariable(const Loop *L, const Type *Ty); + + /// ExpandCodeFor - Insert code to directly compute the specified SCEV + /// expression into the program. The inserted code is inserted into the + /// specified block. + /// + /// If a particular value sign is required, a type may be specified for the + /// result. + Value *ExpandCodeFor(SCEVHandle SH, Instruction *InsertPt, + const Type *Ty = 0); + }; + } + + #endif From lattner at cs.uiuc.edu Fri Apr 2 14:45:12 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:45:12 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/ScalarEvolution.cpp Message-ID: <200404022023.OAA31113@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: ScalarEvolution.cpp added (r1.1) --- Log message: Add a new analysis --- Diffs of the changes: (+2482 -0) Index: llvm/lib/Analysis/ScalarEvolution.cpp diff -c /dev/null llvm/lib/Analysis/ScalarEvolution.cpp:1.1 *** /dev/null Fri Apr 2 14:23:27 2004 --- llvm/lib/Analysis/ScalarEvolution.cpp Fri Apr 2 14:23:17 2004 *************** *** 0 **** --- 1,2482 ---- + //===- ScalarEvolution.cpp - Scalar Evolution Analysis ----------*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by the LLVM research group and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===----------------------------------------------------------------------===// + // + // This file contains the implementation of the scalar evolution analysis + // engine, which is used primarily to analyze expressions involving induction + // variables in loops. + // + // There are several aspects to this library. First is the representation of + // scalar expressions, which are represented as subclasses of the SCEV class. + // These classes are used to represent certain types of subexpressions that we + // can handle. These classes are reference counted, managed by the SCEVHandle + // class. We only create one SCEV of a particular shape, so pointer-comparisons + // for equality are legal. + // + // One important aspect of the SCEV objects is that they are never cyclic, even + // if there is a cycle in the dataflow for an expression (ie, a PHI node). If + // the PHI node is one of the idioms that we can represent (e.g., a polynomial + // recurrence) then we represent it directly as a recurrence node, otherwise we + // represent it as a SCEVUnknown node. + // + // In addition to being able to represent expressions of various types, we also + // have folders that are used to build the *canonical* representation for a + // particular expression. These folders are capable of using a variety of + // rewrite rules to simplify the expressions. + // + // Once the folders are defined, we can implement the more interesting + // higher-level code, such as the code that recognizes PHI nodes of various + // types, computes the execution count of a loop, etc. + // + // Orthogonal to the analysis of code above, this file also implements the + // ScalarEvolutionRewriter class, which is used to emit code that represents the + // various recurrences present in a loop, in canonical forms. + // + // TODO: We should use these routines and value representations to implement + // dependence analysis! + // + //===----------------------------------------------------------------------===// + // + // There are several good references for the techniques used in this analysis. + // + // Chains of recurrences -- a method to expedite the evaluation + // of closed-form functions + // Olaf Bachmann, Paul S. Wang, Eugene V. Zima + // + // On computational properties of chains of recurrences + // Eugene V. Zima + // + // Symbolic Evaluation of Chains of Recurrences for Loop Optimization + // Robert A. van Engelen + // + // Efficient Symbolic Analysis for Optimizing Compilers + // Robert A. van Engelen + // + // Using the chains of recurrences algebra for data dependence testing and + // induction variable substitution + // MS Thesis, Johnie Birch + // + //===----------------------------------------------------------------------===// + + #include "llvm/Analysis/ScalarEvolution.h" + #include "llvm/Constants.h" + #include "llvm/DerivedTypes.h" + #include "llvm/Instructions.h" + #include "llvm/Type.h" + #include "llvm/Value.h" + #include "llvm/Analysis/LoopInfo.h" + #include "llvm/Assembly/Writer.h" + #include "llvm/Transforms/Scalar.h" + #include "llvm/Support/CFG.h" + #include "llvm/Support/ConstantRange.h" + #include "llvm/Support/InstIterator.h" + #include "Support/Statistic.h" + using namespace llvm; + + namespace { + RegisterAnalysis + R("scalar-evolution", "Scalar Evolution Analysis Printer"); + + Statistic<> + NumBruteForceEvaluations("scalar-evolution", + "Number of brute force evaluations needed to calculate high-order polynomial exit values"); + Statistic<> + NumTripCountsComputed("scalar-evolution", + "Number of loops with predictable loop counts"); + Statistic<> + NumTripCountsNotComputed("scalar-evolution", + "Number of loops without predictable loop counts"); + } + + //===----------------------------------------------------------------------===// + // SCEV class definitions + //===----------------------------------------------------------------------===// + + //===----------------------------------------------------------------------===// + // Implementation of the SCEV class. + // + namespace { + enum SCEVTypes { + // These should be ordered in terms of increasing complexity to make the + // folders simpler. + scConstant, scTruncate, scZeroExtend, scAddExpr, scMulExpr, scUDivExpr, + scAddRecExpr, scUnknown, scCouldNotCompute + }; + + /// SCEVComplexityCompare - Return true if the complexity of the LHS is less + /// than the complexity of the RHS. If the SCEVs have identical complexity, + /// order them by their addresses. This comparator is used to canonicalize + /// expressions. + struct SCEVComplexityCompare { + bool operator()(SCEV *LHS, SCEV *RHS) { + if (LHS->getSCEVType() < RHS->getSCEVType()) + return true; + if (LHS->getSCEVType() == RHS->getSCEVType()) + return LHS < RHS; + return false; + } + }; + } + + SCEV::~SCEV() {} + void SCEV::dump() const { + print(std::cerr); + } + + /// getValueRange - Return the tightest constant bounds that this value is + /// known to have. This method is only valid on integer SCEV objects. + ConstantRange SCEV::getValueRange() const { + const Type *Ty = getType(); + assert(Ty->isInteger() && "Can't get range for a non-integer SCEV!"); + Ty = Ty->getUnsignedVersion(); + // Default to a full range if no better information is available. + return ConstantRange(getType()); + } + + + SCEVCouldNotCompute::SCEVCouldNotCompute() : SCEV(scCouldNotCompute) {} + + bool SCEVCouldNotCompute::isLoopInvariant(const Loop *L) const { + assert(0 && "Attempt to use a SCEVCouldNotCompute object!"); + } + + const Type *SCEVCouldNotCompute::getType() const { + assert(0 && "Attempt to use a SCEVCouldNotCompute object!"); + } + + bool SCEVCouldNotCompute::hasComputableLoopEvolution(const Loop *L) const { + assert(0 && "Attempt to use a SCEVCouldNotCompute object!"); + return false; + } + + Value *SCEVCouldNotCompute::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + assert(0 && "Attempt to use a SCEVCouldNotCompute object!"); + return 0; + } + + + void SCEVCouldNotCompute::print(std::ostream &OS) const { + OS << "***COULDNOTCOMPUTE***"; + } + + bool SCEVCouldNotCompute::classof(const SCEV *S) { + return S->getSCEVType() == scCouldNotCompute; + } + + + //===----------------------------------------------------------------------===// + // SCEVConstant - This class represents a constant integer value. + // + namespace { + class SCEVConstant; + // SCEVConstants - Only allow the creation of one SCEVConstant for any + // particular value. Don't use a SCEVHandle here, or else the object will + // never be deleted! + std::map SCEVConstants; + + class SCEVConstant : public SCEV { + ConstantInt *V; + SCEVConstant(ConstantInt *v) : SCEV(scConstant), V(v) {} + + virtual ~SCEVConstant() { + SCEVConstants.erase(V); + } + public: + /// get method - This just gets and returns a new SCEVConstant object. + /// + static SCEVHandle get(ConstantInt *V) { + // Make sure that SCEVConstant instances are all unsigned. + if (V->getType()->isSigned()) { + const Type *NewTy = V->getType()->getUnsignedVersion(); + V = cast(ConstantExpr::getCast(V, NewTy)); + } + + SCEVConstant *&R = SCEVConstants[V]; + if (R == 0) R = new SCEVConstant(V); + return R; + } + + ConstantInt *getValue() const { return V; } + + /// getValueRange - Return the tightest constant bounds that this value is + /// known to have. This method is only valid on integer SCEV objects. + virtual ConstantRange getValueRange() const { + return ConstantRange(V); + } + + virtual bool isLoopInvariant(const Loop *L) const { + return true; + } + + virtual bool hasComputableLoopEvolution(const Loop *L) const { + return false; // Not loop variant + } + + virtual const Type *getType() const { return V->getType(); } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + return getValue(); + } + + virtual void print(std::ostream &OS) const { + WriteAsOperand(OS, V, false); + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVConstant *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scConstant; + } + }; + } + + + //===----------------------------------------------------------------------===// + // SCEVTruncateExpr - This class represents a truncation of an integer value to + // a smaller integer value. + // + namespace { + class SCEVTruncateExpr; + // SCEVTruncates - Only allow the creation of one SCEVTruncateExpr for any + // particular input. Don't use a SCEVHandle here, or else the object will + // never be deleted! + std::map, SCEVTruncateExpr*> SCEVTruncates; + + class SCEVTruncateExpr : public SCEV { + SCEVHandle Op; + const Type *Ty; + SCEVTruncateExpr(const SCEVHandle &op, const Type *ty) + : SCEV(scTruncate), Op(op), Ty(ty) { + assert(Op->getType()->isInteger() && Ty->isInteger() && + Ty->isUnsigned() && + "Cannot truncate non-integer value!"); + assert(Op->getType()->getPrimitiveSize() > Ty->getPrimitiveSize() && + "This is not a truncating conversion!"); + } + + virtual ~SCEVTruncateExpr() { + SCEVTruncates.erase(std::make_pair(Op, Ty)); + } + public: + /// get method - This just gets and returns a new SCEVTruncate object + /// + static SCEVHandle get(const SCEVHandle &Op, const Type *Ty); + + const SCEVHandle &getOperand() const { return Op; } + virtual const Type *getType() const { return Ty; } + + virtual bool isLoopInvariant(const Loop *L) const { + return Op->isLoopInvariant(L); + } + + virtual bool hasComputableLoopEvolution(const Loop *L) const { + return Op->hasComputableLoopEvolution(L); + } + + /// getValueRange - Return the tightest constant bounds that this value is + /// known to have. This method is only valid on integer SCEV objects. + virtual ConstantRange getValueRange() const { + return getOperand()->getValueRange().truncate(getType()); + } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt); + + virtual void print(std::ostream &OS) const { + OS << "(truncate " << *Op << " to " << *Ty << ")"; + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVTruncateExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scTruncate; + } + }; + } + + + //===----------------------------------------------------------------------===// + // SCEVZeroExtendExpr - This class represents a zero extension of a small + // integer value to a larger integer value. + // + namespace { + class SCEVZeroExtendExpr; + // SCEVZeroExtends - Only allow the creation of one SCEVZeroExtendExpr for any + // particular input. Don't use a SCEVHandle here, or else the object will + // never be deleted! + std::map, SCEVZeroExtendExpr*> SCEVZeroExtends; + + class SCEVZeroExtendExpr : public SCEV { + SCEVHandle Op; + const Type *Ty; + SCEVZeroExtendExpr(const SCEVHandle &op, const Type *ty) + : SCEV(scTruncate), Op(Op), Ty(ty) { + assert(Op->getType()->isInteger() && Ty->isInteger() && + Ty->isUnsigned() && + "Cannot zero extend non-integer value!"); + assert(Op->getType()->getPrimitiveSize() < Ty->getPrimitiveSize() && + "This is not an extending conversion!"); + } + + virtual ~SCEVZeroExtendExpr() { + SCEVZeroExtends.erase(std::make_pair(Op, Ty)); + } + public: + /// get method - This just gets and returns a new SCEVZeroExtend object + /// + static SCEVHandle get(const SCEVHandle &Op, const Type *Ty); + + const SCEVHandle &getOperand() const { return Op; } + virtual const Type *getType() const { return Ty; } + + virtual bool isLoopInvariant(const Loop *L) const { + return Op->isLoopInvariant(L); + } + + virtual bool hasComputableLoopEvolution(const Loop *L) const { + return Op->hasComputableLoopEvolution(L); + } + + /// getValueRange - Return the tightest constant bounds that this value is + /// known to have. This method is only valid on integer SCEV objects. + virtual ConstantRange getValueRange() const { + return getOperand()->getValueRange().zeroExtend(getType()); + } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt); + + virtual void print(std::ostream &OS) const { + OS << "(zeroextend " << *Op << " to " << *Ty << ")"; + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVZeroExtendExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scZeroExtend; + } + }; + } + + + //===----------------------------------------------------------------------===// + // SCEVCommutativeExpr - This node is the base class for n'ary commutative + // operators. + + namespace { + class SCEVCommutativeExpr; + // SCEVCommExprs - Only allow the creation of one SCEVCommutativeExpr for any + // particular input. Don't use a SCEVHandle here, or else the object will + // never be deleted! + std::map >, + SCEVCommutativeExpr*> SCEVCommExprs; + + class SCEVCommutativeExpr : public SCEV { + std::vector Operands; + + protected: + SCEVCommutativeExpr(enum SCEVTypes T, const std::vector &ops) + : SCEV(T) { + Operands.reserve(ops.size()); + Operands.insert(Operands.end(), ops.begin(), ops.end()); + } + + ~SCEVCommutativeExpr() { + SCEVCommExprs.erase(std::make_pair(getSCEVType(), + std::vector(Operands.begin(), + Operands.end()))); + } + + public: + unsigned getNumOperands() const { return Operands.size(); } + const SCEVHandle &getOperand(unsigned i) const { + assert(i < Operands.size() && "Operand index out of range!"); + return Operands[i]; + } + + const std::vector &getOperands() const { return Operands; } + typedef std::vector::const_iterator op_iterator; + op_iterator op_begin() const { return Operands.begin(); } + op_iterator op_end() const { return Operands.end(); } + + + virtual bool isLoopInvariant(const Loop *L) const { + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) + if (!getOperand(i)->isLoopInvariant(L)) return false; + return true; + } + + virtual bool hasComputableLoopEvolution(const Loop *L) const { + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) + if (getOperand(i)->hasComputableLoopEvolution(L)) return true; + return false; + } + + virtual const Type *getType() const { return getOperand(0)->getType(); } + + virtual const char *getOperationStr() const = 0; + + virtual void print(std::ostream &OS) const { + assert(Operands.size() > 1 && "This plus expr shouldn't exist!"); + const char *OpStr = getOperationStr(); + OS << "(" << *Operands[0]; + for (unsigned i = 1, e = Operands.size(); i != e; ++i) + OS << OpStr << *Operands[i]; + OS << ")"; + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVCommutativeExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scAddExpr || + S->getSCEVType() == scMulExpr; + } + }; + } + + //===----------------------------------------------------------------------===// + // SCEVAddExpr - This node represents an addition of some number of SCEV's. + // + namespace { + class SCEVAddExpr : public SCEVCommutativeExpr { + SCEVAddExpr(const std::vector &ops) + : SCEVCommutativeExpr(scAddExpr, ops) { + } + + public: + static SCEVHandle get(std::vector &Ops); + + static SCEVHandle get(const SCEVHandle &LHS, const SCEVHandle &RHS) { + std::vector Ops; + Ops.push_back(LHS); + Ops.push_back(RHS); + return get(Ops); + } + + static SCEVHandle get(const SCEVHandle &Op0, const SCEVHandle &Op1, + const SCEVHandle &Op2) { + std::vector Ops; + Ops.push_back(Op0); + Ops.push_back(Op1); + Ops.push_back(Op2); + return get(Ops); + } + + virtual const char *getOperationStr() const { return " + "; } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt); + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVAddExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scAddExpr; + } + }; + } + + //===----------------------------------------------------------------------===// + // SCEVMulExpr - This node represents multiplication of some number of SCEV's. + // + namespace { + class SCEVMulExpr : public SCEVCommutativeExpr { + SCEVMulExpr(const std::vector &ops) + : SCEVCommutativeExpr(scMulExpr, ops) { + } + + public: + static SCEVHandle get(std::vector &Ops); + + static SCEVHandle get(const SCEVHandle &LHS, const SCEVHandle &RHS) { + std::vector Ops; + Ops.push_back(LHS); + Ops.push_back(RHS); + return get(Ops); + } + + virtual const char *getOperationStr() const { return " * "; } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt); + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVMulExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scMulExpr; + } + }; + } + + + //===----------------------------------------------------------------------===// + // SCEVUDivExpr - This class represents a binary unsigned division operation. + // + namespace { + class SCEVUDivExpr; + // SCEVUDivs - Only allow the creation of one SCEVUDivExpr for any particular + // input. Don't use a SCEVHandle here, or else the object will never be + // deleted! + std::map, SCEVUDivExpr*> SCEVUDivs; + + class SCEVUDivExpr : public SCEV { + SCEVHandle LHS, RHS; + SCEVUDivExpr(const SCEVHandle &lhs, const SCEVHandle &rhs) + : SCEV(scUDivExpr), LHS(lhs), RHS(rhs) {} + + virtual ~SCEVUDivExpr() { + SCEVUDivs.erase(std::make_pair(LHS, RHS)); + } + public: + /// get method - This just gets and returns a new SCEVUDiv object. + /// + static SCEVHandle get(const SCEVHandle &LHS, const SCEVHandle &RHS); + + const SCEVHandle &getLHS() const { return LHS; } + const SCEVHandle &getRHS() const { return RHS; } + + virtual bool isLoopInvariant(const Loop *L) const { + return LHS->isLoopInvariant(L) && RHS->isLoopInvariant(L); + } + + virtual bool hasComputableLoopEvolution(const Loop *L) const { + return LHS->hasComputableLoopEvolution(L) && + RHS->hasComputableLoopEvolution(L); + } + + virtual const Type *getType() const { + const Type *Ty = LHS->getType(); + if (Ty->isSigned()) Ty = Ty->getUnsignedVersion(); + return Ty; + } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt); + + virtual void print(std::ostream &OS) const { + OS << "(" << *LHS << " /u " << *RHS << ")"; + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVUDivExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scUDivExpr; + } + }; + } + + + //===----------------------------------------------------------------------===// + + // SCEVAddRecExpr - This node represents a polynomial recurrence on the trip + // count of the specified loop. + // + // All operands of an AddRec are required to be loop invariant. + // + namespace { + class SCEVAddRecExpr; + // SCEVAddRecExprs - Only allow the creation of one SCEVAddRecExpr for any + // particular input. Don't use a SCEVHandle here, or else the object will + // never be deleted! + std::map >, + SCEVAddRecExpr*> SCEVAddRecExprs; + + class SCEVAddRecExpr : public SCEV { + std::vector Operands; + const Loop *L; + + SCEVAddRecExpr(const std::vector &ops, const Loop *l) + : SCEV(scAddRecExpr), Operands(ops), L(l) { + for (unsigned i = 0, e = Operands.size(); i != e; ++i) + assert(Operands[i]->isLoopInvariant(l) && + "Operands of AddRec must be loop-invariant!"); + } + ~SCEVAddRecExpr() { + SCEVAddRecExprs.erase(std::make_pair(L, + std::vector(Operands.begin(), + Operands.end()))); + } + public: + static SCEVHandle get(const SCEVHandle &Start, const SCEVHandle &Step, + const Loop *); + static SCEVHandle get(std::vector &Operands, + const Loop *); + static SCEVHandle get(const std::vector &Operands, + const Loop *L) { + std::vector NewOp(Operands); + return get(NewOp, L); + } + + typedef std::vector::const_iterator op_iterator; + op_iterator op_begin() const { return Operands.begin(); } + op_iterator op_end() const { return Operands.end(); } + + unsigned getNumOperands() const { return Operands.size(); } + const SCEVHandle &getOperand(unsigned i) const { return Operands[i]; } + const SCEVHandle &getStart() const { return Operands[0]; } + const Loop *getLoop() const { return L; } + + + /// getStepRecurrence - This method constructs and returns the recurrence + /// indicating how much this expression steps by. If this is a polynomial + /// of degree N, it returns a chrec of degree N-1. + SCEVHandle getStepRecurrence() const { + if (getNumOperands() == 2) return getOperand(1); + return SCEVAddRecExpr::get(std::vector(op_begin()+1,op_end()), + getLoop()); + } + + virtual bool hasComputableLoopEvolution(const Loop *QL) const { + if (L == QL) return true; + /// FIXME: What if the start or step value a recurrence for the specified + /// loop? + return false; + } + + + virtual bool isLoopInvariant(const Loop *QueryLoop) const { + // This recurrence is invariant w.r.t to QueryLoop iff QueryLoop doesn't + // contain L. + return !QueryLoop->contains(L->getHeader()); + } + + virtual const Type *getType() const { return Operands[0]->getType(); } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt); + + + /// isAffine - Return true if this is an affine AddRec (i.e., it represents + /// an expressions A+B*x where A and B are loop invariant values. + bool isAffine() const { + // We know that the start value is invariant. This expression is thus + // affine iff the step is also invariant. + return getNumOperands() == 2; + } + + /// isQuadratic - Return true if this is an quadratic AddRec (i.e., it + /// represents an expressions A+B*x+C*x^2 where A, B and C are loop + /// invariant values. This corresponds to an addrec of the form {L,+,M,+,N} + bool isQuadratic() const { + return getNumOperands() == 3; + } + + /// evaluateAtIteration - Return the value of this chain of recurrences at + /// the specified iteration number. + SCEVHandle evaluateAtIteration(SCEVHandle It) const; + + /// getNumIterationsInRange - Return the number of iterations of this loop + /// that produce values in the specified constant range. Another way of + /// looking at this is that it returns the first iteration number where the + /// value is not in the condition, thus computing the exit count. If the + /// iteration count can't be computed, an instance of SCEVCouldNotCompute is + /// returned. + SCEVHandle getNumIterationsInRange(ConstantRange Range) const; + + + virtual void print(std::ostream &OS) const { + OS << "{" << *Operands[0]; + for (unsigned i = 1, e = Operands.size(); i != e; ++i) + OS << ",+," << *Operands[i]; + OS << "}<" << L->getHeader()->getName() + ">"; + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVAddRecExpr *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scAddRecExpr; + } + }; + } + + + //===----------------------------------------------------------------------===// + // SCEVUnknown - This means that we are dealing with an entirely unknown SCEV + // value, and only represent it as it's LLVM Value. This is the "bottom" value + // for the analysis. + // + namespace { + class SCEVUnknown; + // SCEVUnknowns - Only allow the creation of one SCEVUnknown for any + // particular value. Don't use a SCEVHandle here, or else the object will + // never be deleted! + std::map SCEVUnknowns; + + class SCEVUnknown : public SCEV { + Value *V; + SCEVUnknown(Value *v) : SCEV(scUnknown), V(v) {} + + protected: + ~SCEVUnknown() { SCEVUnknowns.erase(V); } + public: + /// get method - For SCEVUnknown, this just gets and returns a new + /// SCEVUnknown. + static SCEVHandle get(Value *V) { + if (ConstantInt *CI = dyn_cast(V)) + return SCEVConstant::get(CI); + SCEVUnknown *&Result = SCEVUnknowns[V]; + if (Result == 0) Result = new SCEVUnknown(V); + return Result; + } + + Value *getValue() const { return V; } + + Value *expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + return V; + } + + virtual bool isLoopInvariant(const Loop *L) const { + // All non-instruction values are loop invariant. All instructions are + // loop invariant if they are not contained in the specified loop. + if (Instruction *I = dyn_cast(V)) + return !L->contains(I->getParent()); + return true; + } + + virtual bool hasComputableLoopEvolution(const Loop *QL) const { + return false; // not computable + } + + virtual const Type *getType() const { return V->getType(); } + + virtual void print(std::ostream &OS) const { + WriteAsOperand(OS, V, false); + } + + /// Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SCEVUnknown *S) { return true; } + static inline bool classof(const SCEV *S) { + return S->getSCEVType() == scUnknown; + } + }; + } + + //===----------------------------------------------------------------------===// + // Simple SCEV method implementations + //===----------------------------------------------------------------------===// + + /// getIntegerSCEV - Given an integer or FP type, create a constant for the + /// specified signed integer value and return a SCEV for the constant. + static SCEVHandle getIntegerSCEV(int Val, const Type *Ty) { + Constant *C; + if (Val == 0) + C = Constant::getNullValue(Ty); + else if (Ty->isFloatingPoint()) + C = ConstantFP::get(Ty, Val); + else if (Ty->isSigned()) + C = ConstantSInt::get(Ty, Val); + else { + C = ConstantSInt::get(Ty->getSignedVersion(), Val); + C = ConstantExpr::getCast(C, Ty); + } + return SCEVUnknown::get(C); + } + + /// getTruncateOrZeroExtend - Return a SCEV corresponding to a conversion of the + /// input value to the specified type. If the type must be extended, it is zero + /// extended. + static SCEVHandle getTruncateOrZeroExtend(const SCEVHandle &V, const Type *Ty) { + const Type *SrcTy = V->getType(); + assert(SrcTy->isInteger() && Ty->isInteger() && + "Cannot truncate or zero extend with non-integer arguments!"); + if (SrcTy->getPrimitiveSize() == Ty->getPrimitiveSize()) + return V; // No conversion + if (SrcTy->getPrimitiveSize() > Ty->getPrimitiveSize()) + return SCEVTruncateExpr::get(V, Ty); + return SCEVZeroExtendExpr::get(V, Ty); + } + + /// getNegativeSCEV - Return a SCEV corresponding to -V = -1*V + /// + static SCEVHandle getNegativeSCEV(const SCEVHandle &V) { + if (SCEVConstant *VC = dyn_cast(V)) + return SCEVUnknown::get(ConstantExpr::getNeg(VC->getValue())); + + return SCEVMulExpr::get(V, getIntegerSCEV(-1, V->getType())); + } + + /// getMinusSCEV - Return a SCEV corresponding to LHS - RHS. + /// + static SCEVHandle getMinusSCEV(const SCEVHandle &LHS, const SCEVHandle &RHS) { + // X - Y --> X + -Y + return SCEVAddExpr::get(LHS, getNegativeSCEV(RHS)); + } + + + /// Binomial - Evaluate N!/((N-M)!*M!) . Note that N is often large and M is + /// often very small, so we try to reduce the number of N! terms we need to + /// evaluate by evaluating this as (N!/(N-M)!)/M! + static ConstantInt *Binomial(ConstantInt *N, unsigned M) { + uint64_t NVal = N->getRawValue(); + uint64_t FirstTerm = 1; + for (unsigned i = 0; i != M; ++i) + FirstTerm *= NVal-i; + + unsigned MFactorial = 1; + for (; M; --M) + MFactorial *= M; + + Constant *Result = ConstantUInt::get(Type::ULongTy, FirstTerm/MFactorial); + Result = ConstantExpr::getCast(Result, N->getType()); + assert(isa(Result) && "Cast of integer not folded??"); + return cast(Result); + } + + /// PartialFact - Compute V!/(V-NumSteps)! + static SCEVHandle PartialFact(SCEVHandle V, unsigned NumSteps) { + // Handle this case efficiently, it is common to have constant iteration + // counts while computing loop exit values. + if (SCEVConstant *SC = dyn_cast(V)) { + uint64_t Val = SC->getValue()->getRawValue(); + uint64_t Result = 1; + for (; NumSteps; --NumSteps) + Result *= Val-(NumSteps-1); + Constant *Res = ConstantUInt::get(Type::ULongTy, Result); + return SCEVUnknown::get(ConstantExpr::getCast(Res, V->getType())); + } + + const Type *Ty = V->getType(); + if (NumSteps == 0) + return getIntegerSCEV(1, Ty); + + SCEVHandle Result = V; + for (unsigned i = 1; i != NumSteps; ++i) + Result = SCEVMulExpr::get(Result, getMinusSCEV(V, getIntegerSCEV(i, Ty))); + return Result; + } + + + /// evaluateAtIteration - Return the value of this chain of recurrences at + /// the specified iteration number. We can evaluate this recurrence by + /// multiplying each element in the chain by the binomial coefficient + /// corresponding to it. In other words, we can evaluate {A,+,B,+,C,+,D} as: + /// + /// A*choose(It, 0) + B*choose(It, 1) + C*choose(It, 2) + D*choose(It, 3) + /// + /// FIXME/VERIFY: I don't trust that this is correct in the face of overflow. + /// Is the binomial equation safe using modular arithmetic?? + /// + SCEVHandle SCEVAddRecExpr::evaluateAtIteration(SCEVHandle It) const { + SCEVHandle Result = getStart(); + int Divisor = 1; + const Type *Ty = It->getType(); + for (unsigned i = 1, e = getNumOperands(); i != e; ++i) { + SCEVHandle BC = PartialFact(It, i); + Divisor *= i; + SCEVHandle Val = SCEVUDivExpr::get(SCEVMulExpr::get(BC, getOperand(i)), + getIntegerSCEV(Divisor, Ty)); + Result = SCEVAddExpr::get(Result, Val); + } + return Result; + } + + + //===----------------------------------------------------------------------===// + // SCEV Expression folder implementations + //===----------------------------------------------------------------------===// + + SCEVHandle SCEVTruncateExpr::get(const SCEVHandle &Op, const Type *Ty) { + if (SCEVConstant *SC = dyn_cast(Op)) + return SCEVUnknown::get(ConstantExpr::getCast(SC->getValue(), Ty)); + + // If the input value is a chrec scev made out of constants, truncate + // all of the constants. + if (SCEVAddRecExpr *AddRec = dyn_cast(Op)) { + std::vector Operands; + for (unsigned i = 0, e = AddRec->getNumOperands(); i != e; ++i) + // FIXME: This should allow truncation of other expression types! + if (isa(AddRec->getOperand(i))) + Operands.push_back(get(AddRec->getOperand(i), Ty)); + else + break; + if (Operands.size() == AddRec->getNumOperands()) + return SCEVAddRecExpr::get(Operands, AddRec->getLoop()); + } + + SCEVTruncateExpr *&Result = SCEVTruncates[std::make_pair(Op, Ty)]; + if (Result == 0) Result = new SCEVTruncateExpr(Op, Ty); + return Result; + } + + SCEVHandle SCEVZeroExtendExpr::get(const SCEVHandle &Op, const Type *Ty) { + if (SCEVConstant *SC = dyn_cast(Op)) + return SCEVUnknown::get(ConstantExpr::getCast(SC->getValue(), Ty)); + + // FIXME: If the input value is a chrec scev, and we can prove that the value + // did not overflow the old, smaller, value, we can zero extend all of the + // operands (often constants). This would allow analysis of something like + // this: for (unsigned char X = 0; X < 100; ++X) { int Y = X; } + + SCEVZeroExtendExpr *&Result = SCEVZeroExtends[std::make_pair(Op, Ty)]; + if (Result == 0) Result = new SCEVZeroExtendExpr(Op, Ty); + return Result; + } + + // get - Get a canonical add expression, or something simpler if possible. + SCEVHandle SCEVAddExpr::get(std::vector &Ops) { + assert(!Ops.empty() && "Cannot get empty add!"); + + // Sort by complexity, this groups all similar expression types together. + std::sort(Ops.begin(), Ops.end(), SCEVComplexityCompare()); + + // If there are any constants, fold them together. + unsigned Idx = 0; + if (SCEVConstant *LHSC = dyn_cast(Ops[0])) { + ++Idx; + while (SCEVConstant *RHSC = dyn_cast(Ops[Idx])) { + // We found two constants, fold them together! + Constant *Fold = ConstantExpr::getAdd(LHSC->getValue(), RHSC->getValue()); + if (ConstantInt *CI = dyn_cast(Fold)) { + Ops[0] = SCEVConstant::get(CI); + Ops.erase(Ops.begin()+1); // Erase the folded element + if (Ops.size() == 1) return Ops[0]; + } else { + // If we couldn't fold the expression, move to the next constant. Note + // that this is impossible to happen in practice because we always + // constant fold constant ints to constant ints. + ++Idx; + } + } + + // If we are left with a constant zero being added, strip it off. + if (cast(Ops[0])->getValue()->isNullValue()) { + Ops.erase(Ops.begin()); + --Idx; + } + } + + if (Ops.size() == 1) + return Ops[0]; + + // Okay, check to see if the same value occurs in the operand list twice. If + // so, merge them together into an multiply expression. Since we sorted the + // list, these values are required to be adjacent. + const Type *Ty = Ops[0]->getType(); + for (unsigned i = 0, e = Ops.size()-1; i != e; ++i) + if (Ops[i] == Ops[i+1]) { // X + Y + Y --> X + Y*2 + // Found a match, merge the two values into a multiply, and add any + // remaining values to the result. + SCEVHandle Two = getIntegerSCEV(2, Ty); + SCEVHandle Mul = SCEVMulExpr::get(Ops[i], Two); + if (Ops.size() == 2) + return Mul; + Ops.erase(Ops.begin()+i, Ops.begin()+i+2); + Ops.push_back(Mul); + return SCEVAddExpr::get(Ops); + } + + // Okay, now we know the first non-constant operand. If there are add + // operands they would be next. + if (Idx < Ops.size()) { + bool DeletedAdd = false; + while (SCEVAddExpr *Add = dyn_cast(Ops[Idx])) { + // If we have an add, expand the add operands onto the end of the operands + // list. + Ops.insert(Ops.end(), Add->op_begin(), Add->op_end()); + Ops.erase(Ops.begin()+Idx); + DeletedAdd = true; + } + + // If we deleted at least one add, we added operands to the end of the list, + // and they are not necessarily sorted. Recurse to resort and resimplify + // any operands we just aquired. + if (DeletedAdd) + return get(Ops); + } + + // Skip over the add expression until we get to a multiply. + while (Idx < Ops.size() && Ops[Idx]->getSCEVType() < scMulExpr) + ++Idx; + + // If we are adding something to a multiply expression, make sure the + // something is not already an operand of the multiply. If so, merge it into + // the multiply. + for (; Idx < Ops.size() && isa(Ops[Idx]); ++Idx) { + SCEVMulExpr *Mul = cast(Ops[Idx]); + for (unsigned MulOp = 0, e = Mul->getNumOperands(); MulOp != e; ++MulOp) { + SCEV *MulOpSCEV = Mul->getOperand(MulOp); + for (unsigned AddOp = 0, e = Ops.size(); AddOp != e; ++AddOp) + if (MulOpSCEV == Ops[AddOp] && + (Mul->getNumOperands() != 2 || !isa(MulOpSCEV))) { + // Fold W + X + (X * Y * Z) --> W + (X * ((Y*Z)+1)) + SCEVHandle InnerMul = Mul->getOperand(MulOp == 0); + if (Mul->getNumOperands() != 2) { + // If the multiply has more than two operands, we must get the + // Y*Z term. + std::vector MulOps(Mul->op_begin(), Mul->op_end()); + MulOps.erase(MulOps.begin()+MulOp); + InnerMul = SCEVMulExpr::get(MulOps); + } + SCEVHandle One = getIntegerSCEV(1, Ty); + SCEVHandle AddOne = SCEVAddExpr::get(InnerMul, One); + SCEVHandle OuterMul = SCEVMulExpr::get(AddOne, Ops[AddOp]); + if (Ops.size() == 2) return OuterMul; + if (AddOp < Idx) { + Ops.erase(Ops.begin()+AddOp); + Ops.erase(Ops.begin()+Idx-1); + } else { + Ops.erase(Ops.begin()+Idx); + Ops.erase(Ops.begin()+AddOp-1); + } + Ops.push_back(OuterMul); + return SCEVAddExpr::get(Ops); + } + + // Check this multiply against other multiplies being added together. + for (unsigned OtherMulIdx = Idx+1; + OtherMulIdx < Ops.size() && isa(Ops[OtherMulIdx]); + ++OtherMulIdx) { + SCEVMulExpr *OtherMul = cast(Ops[OtherMulIdx]); + // If MulOp occurs in OtherMul, we can fold the two multiplies + // together. + for (unsigned OMulOp = 0, e = OtherMul->getNumOperands(); + OMulOp != e; ++OMulOp) + if (OtherMul->getOperand(OMulOp) == MulOpSCEV) { + // Fold X + (A*B*C) + (A*D*E) --> X + (A*(B*C+D*E)) + SCEVHandle InnerMul1 = Mul->getOperand(MulOp == 0); + if (Mul->getNumOperands() != 2) { + std::vector MulOps(Mul->op_begin(), Mul->op_end()); + MulOps.erase(MulOps.begin()+MulOp); + InnerMul1 = SCEVMulExpr::get(MulOps); + } + SCEVHandle InnerMul2 = OtherMul->getOperand(OMulOp == 0); + if (OtherMul->getNumOperands() != 2) { + std::vector MulOps(OtherMul->op_begin(), + OtherMul->op_end()); + MulOps.erase(MulOps.begin()+OMulOp); + InnerMul2 = SCEVMulExpr::get(MulOps); + } + SCEVHandle InnerMulSum = SCEVAddExpr::get(InnerMul1,InnerMul2); + SCEVHandle OuterMul = SCEVMulExpr::get(MulOpSCEV, InnerMulSum); + if (Ops.size() == 2) return OuterMul; + Ops.erase(Ops.begin()+Idx); + Ops.erase(Ops.begin()+OtherMulIdx-1); + Ops.push_back(OuterMul); + return SCEVAddExpr::get(Ops); + } + } + } + } + + // If there are any add recurrences in the operands list, see if any other + // added values are loop invariant. If so, we can fold them into the + // recurrence. + while (Idx < Ops.size() && Ops[Idx]->getSCEVType() < scAddRecExpr) + ++Idx; + + // Scan over all recurrences, trying to fold loop invariants into them. + for (; Idx < Ops.size() && isa(Ops[Idx]); ++Idx) { + // Scan all of the other operands to this add and add them to the vector if + // they are loop invariant w.r.t. the recurrence. + std::vector LIOps; + SCEVAddRecExpr *AddRec = cast(Ops[Idx]); + for (unsigned i = 0, e = Ops.size(); i != e; ++i) + if (Ops[i]->isLoopInvariant(AddRec->getLoop())) { + LIOps.push_back(Ops[i]); + Ops.erase(Ops.begin()+i); + --i; --e; + } + + // If we found some loop invariants, fold them into the recurrence. + if (!LIOps.empty()) { + // NLI + LI + { Start,+,Step} --> NLI + { LI+Start,+,Step } + LIOps.push_back(AddRec->getStart()); + + std::vector AddRecOps(AddRec->op_begin(), AddRec->op_end()); + AddRecOps[0] = SCEVAddExpr::get(LIOps); + + SCEVHandle NewRec = SCEVAddRecExpr::get(AddRecOps, AddRec->getLoop()); + // If all of the other operands were loop invariant, we are done. + if (Ops.size() == 1) return NewRec; + + // Otherwise, add the folded AddRec by the non-liv parts. + for (unsigned i = 0;; ++i) + if (Ops[i] == AddRec) { + Ops[i] = NewRec; + break; + } + return SCEVAddExpr::get(Ops); + } + + // Okay, if there weren't any loop invariants to be folded, check to see if + // there are multiple AddRec's with the same loop induction variable being + // added together. If so, we can fold them. + for (unsigned OtherIdx = Idx+1; + OtherIdx < Ops.size() && isa(Ops[OtherIdx]);++OtherIdx) + if (OtherIdx != Idx) { + SCEVAddRecExpr *OtherAddRec = cast(Ops[OtherIdx]); + if (AddRec->getLoop() == OtherAddRec->getLoop()) { + // Other + {A,+,B} + {C,+,D} --> Other + {A+C,+,B+D} + std::vector NewOps(AddRec->op_begin(), AddRec->op_end()); + for (unsigned i = 0, e = OtherAddRec->getNumOperands(); i != e; ++i) { + if (i >= NewOps.size()) { + NewOps.insert(NewOps.end(), OtherAddRec->op_begin()+i, + OtherAddRec->op_end()); + break; + } + NewOps[i] = SCEVAddExpr::get(NewOps[i], OtherAddRec->getOperand(i)); + } + SCEVHandle NewAddRec = SCEVAddRecExpr::get(NewOps, AddRec->getLoop()); + + if (Ops.size() == 2) return NewAddRec; + + Ops.erase(Ops.begin()+Idx); + Ops.erase(Ops.begin()+OtherIdx-1); + Ops.push_back(NewAddRec); + return SCEVAddExpr::get(Ops); + } + } + + // Otherwise couldn't fold anything into this recurrence. Move onto the + // next one. + } + + // Okay, it looks like we really DO need an add expr. Check to see if we + // already have one, otherwise create a new one. + std::vector SCEVOps(Ops.begin(), Ops.end()); + SCEVCommutativeExpr *&Result = SCEVCommExprs[std::make_pair(scAddExpr, + SCEVOps)]; + if (Result == 0) Result = new SCEVAddExpr(Ops); + return Result; + } + + + SCEVHandle SCEVMulExpr::get(std::vector &Ops) { + assert(!Ops.empty() && "Cannot get empty mul!"); + + // Sort by complexity, this groups all similar expression types together. + std::sort(Ops.begin(), Ops.end(), SCEVComplexityCompare()); + + // If there are any constants, fold them together. + unsigned Idx = 0; + if (SCEVConstant *LHSC = dyn_cast(Ops[0])) { + + // C1*(C2+V) -> C1*C2 + C1*V + if (Ops.size() == 2) + if (SCEVAddExpr *Add = dyn_cast(Ops[1])) + if (Add->getNumOperands() == 2 && + isa(Add->getOperand(0))) + return SCEVAddExpr::get(SCEVMulExpr::get(LHSC, Add->getOperand(0)), + SCEVMulExpr::get(LHSC, Add->getOperand(1))); + + + ++Idx; + while (SCEVConstant *RHSC = dyn_cast(Ops[Idx])) { + // We found two constants, fold them together! + Constant *Fold = ConstantExpr::getMul(LHSC->getValue(), RHSC->getValue()); + if (ConstantInt *CI = dyn_cast(Fold)) { + Ops[0] = SCEVConstant::get(CI); + Ops.erase(Ops.begin()+1); // Erase the folded element + if (Ops.size() == 1) return Ops[0]; + } else { + // If we couldn't fold the expression, move to the next constant. Note + // that this is impossible to happen in practice because we always + // constant fold constant ints to constant ints. + ++Idx; + } + } + + // If we are left with a constant one being multiplied, strip it off. + if (cast(Ops[0])->getValue()->equalsInt(1)) { + Ops.erase(Ops.begin()); + --Idx; + } else if (cast(Ops[0])->getValue()->isNullValue()) { + // If we have a multiply of zero, it will always be zero. + return Ops[0]; + } + } + + // Skip over the add expression until we get to a multiply. + while (Idx < Ops.size() && Ops[Idx]->getSCEVType() < scMulExpr) + ++Idx; + + if (Ops.size() == 1) + return Ops[0]; + + // If there are mul operands inline them all into this expression. + if (Idx < Ops.size()) { + bool DeletedMul = false; + while (SCEVMulExpr *Mul = dyn_cast(Ops[Idx])) { + // If we have an mul, expand the mul operands onto the end of the operands + // list. + Ops.insert(Ops.end(), Mul->op_begin(), Mul->op_end()); + Ops.erase(Ops.begin()+Idx); + DeletedMul = true; + } + + // If we deleted at least one mul, we added operands to the end of the list, + // and they are not necessarily sorted. Recurse to resort and resimplify + // any operands we just aquired. + if (DeletedMul) + return get(Ops); + } + + // If there are any add recurrences in the operands list, see if any other + // added values are loop invariant. If so, we can fold them into the + // recurrence. + while (Idx < Ops.size() && Ops[Idx]->getSCEVType() < scAddRecExpr) + ++Idx; + + // Scan over all recurrences, trying to fold loop invariants into them. + for (; Idx < Ops.size() && isa(Ops[Idx]); ++Idx) { + // Scan all of the other operands to this mul and add them to the vector if + // they are loop invariant w.r.t. the recurrence. + std::vector LIOps; + SCEVAddRecExpr *AddRec = cast(Ops[Idx]); + for (unsigned i = 0, e = Ops.size(); i != e; ++i) + if (Ops[i]->isLoopInvariant(AddRec->getLoop())) { + LIOps.push_back(Ops[i]); + Ops.erase(Ops.begin()+i); + --i; --e; + } + + // If we found some loop invariants, fold them into the recurrence. + if (!LIOps.empty()) { + // NLI * LI * { Start,+,Step} --> NLI * { LI*Start,+,LI*Step } + std::vector NewOps; + NewOps.reserve(AddRec->getNumOperands()); + if (LIOps.size() == 1) { + SCEV *Scale = LIOps[0]; + for (unsigned i = 0, e = AddRec->getNumOperands(); i != e; ++i) + NewOps.push_back(SCEVMulExpr::get(Scale, AddRec->getOperand(i))); + } else { + for (unsigned i = 0, e = AddRec->getNumOperands(); i != e; ++i) { + std::vector MulOps(LIOps); + MulOps.push_back(AddRec->getOperand(i)); + NewOps.push_back(SCEVMulExpr::get(MulOps)); + } + } + + SCEVHandle NewRec = SCEVAddRecExpr::get(NewOps, AddRec->getLoop()); + + // If all of the other operands were loop invariant, we are done. + if (Ops.size() == 1) return NewRec; + + // Otherwise, multiply the folded AddRec by the non-liv parts. + for (unsigned i = 0;; ++i) + if (Ops[i] == AddRec) { + Ops[i] = NewRec; + break; + } + return SCEVMulExpr::get(Ops); + } + + // Okay, if there weren't any loop invariants to be folded, check to see if + // there are multiple AddRec's with the same loop induction variable being + // multiplied together. If so, we can fold them. + for (unsigned OtherIdx = Idx+1; + OtherIdx < Ops.size() && isa(Ops[OtherIdx]);++OtherIdx) + if (OtherIdx != Idx) { + SCEVAddRecExpr *OtherAddRec = cast(Ops[OtherIdx]); + if (AddRec->getLoop() == OtherAddRec->getLoop()) { + // F * G --> {A,+,B} * {C,+,D} --> {A*C,+,F*D + G*B + B*D} + SCEVAddRecExpr *F = AddRec, *G = OtherAddRec; + SCEVHandle NewStart = SCEVMulExpr::get(F->getStart(), + G->getStart()); + SCEVHandle B = F->getStepRecurrence(); + SCEVHandle D = G->getStepRecurrence(); + SCEVHandle NewStep = SCEVAddExpr::get(SCEVMulExpr::get(F, D), + SCEVMulExpr::get(G, B), + SCEVMulExpr::get(B, D)); + SCEVHandle NewAddRec = SCEVAddRecExpr::get(NewStart, NewStep, + F->getLoop()); + if (Ops.size() == 2) return NewAddRec; + + Ops.erase(Ops.begin()+Idx); + Ops.erase(Ops.begin()+OtherIdx-1); + Ops.push_back(NewAddRec); + return SCEVMulExpr::get(Ops); + } + } + + // Otherwise couldn't fold anything into this recurrence. Move onto the + // next one. + } + + // Okay, it looks like we really DO need an mul expr. Check to see if we + // already have one, otherwise create a new one. + std::vector SCEVOps(Ops.begin(), Ops.end()); + SCEVCommutativeExpr *&Result = SCEVCommExprs[std::make_pair(scMulExpr, + SCEVOps)]; + if (Result == 0) Result = new SCEVMulExpr(Ops); + return Result; + } + + SCEVHandle SCEVUDivExpr::get(const SCEVHandle &LHS, const SCEVHandle &RHS) { + if (SCEVConstant *RHSC = dyn_cast(RHS)) { + if (RHSC->getValue()->equalsInt(1)) + return LHS; // X /u 1 --> x + if (RHSC->getValue()->isAllOnesValue()) + return getNegativeSCEV(LHS); // X /u -1 --> -x + + if (SCEVConstant *LHSC = dyn_cast(LHS)) { + Constant *LHSCV = LHSC->getValue(); + Constant *RHSCV = RHSC->getValue(); + if (LHSCV->getType()->isSigned()) + LHSCV = ConstantExpr::getCast(LHSCV, + LHSCV->getType()->getUnsignedVersion()); + if (RHSCV->getType()->isSigned()) + RHSCV = ConstantExpr::getCast(RHSCV, LHSCV->getType()); + return SCEVUnknown::get(ConstantExpr::getDiv(LHSCV, RHSCV)); + } + } + + // FIXME: implement folding of (X*4)/4 when we know X*4 doesn't overflow. + + SCEVUDivExpr *&Result = SCEVUDivs[std::make_pair(LHS, RHS)]; + if (Result == 0) Result = new SCEVUDivExpr(LHS, RHS); + return Result; + } + + + /// SCEVAddRecExpr::get - Get a add recurrence expression for the + /// specified loop. Simplify the expression as much as possible. + SCEVHandle SCEVAddRecExpr::get(const SCEVHandle &Start, + const SCEVHandle &Step, const Loop *L) { + std::vector Operands; + Operands.push_back(Start); + if (SCEVAddRecExpr *StepChrec = dyn_cast(Step)) + if (StepChrec->getLoop() == L) { + Operands.insert(Operands.end(), StepChrec->op_begin(), + StepChrec->op_end()); + return get(Operands, L); + } + + Operands.push_back(Step); + return get(Operands, L); + } + + /// SCEVAddRecExpr::get - Get a add recurrence expression for the + /// specified loop. Simplify the expression as much as possible. + SCEVHandle SCEVAddRecExpr::get(std::vector &Operands, + const Loop *L) { + if (Operands.size() == 1) return Operands[0]; + + if (SCEVConstant *StepC = dyn_cast(Operands.back())) + if (StepC->getValue()->isNullValue()) { + Operands.pop_back(); + return get(Operands, L); // { X,+,0 } --> X + } + + SCEVAddRecExpr *&Result = + SCEVAddRecExprs[std::make_pair(L, std::vector(Operands.begin(), + Operands.end()))]; + if (Result == 0) Result = new SCEVAddRecExpr(Operands, L); + return Result; + } + + + //===----------------------------------------------------------------------===// + // Non-trivial closed-form SCEV Expanders + //===----------------------------------------------------------------------===// + + Value *SCEVTruncateExpr::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + Value *V = SER.ExpandCodeFor(getOperand(), InsertPt); + return new CastInst(V, getType(), "tmp.", InsertPt); + } + + Value *SCEVZeroExtendExpr::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + Value *V = SER.ExpandCodeFor(getOperand(), InsertPt, + getOperand()->getType()->getUnsignedVersion()); + return new CastInst(V, getType(), "tmp.", InsertPt); + } + + Value *SCEVAddExpr::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + const Type *Ty = getType(); + Value *V = SER.ExpandCodeFor(getOperand(getNumOperands()-1), InsertPt, Ty); + + // Emit a bunch of add instructions + for (int i = getNumOperands()-2; i >= 0; --i) + V = BinaryOperator::create(Instruction::Add, V, + SER.ExpandCodeFor(getOperand(i), InsertPt, Ty), + "tmp.", InsertPt); + return V; + } + + Value *SCEVMulExpr::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + const Type *Ty = getType(); + int FirstOp = 0; // Set if we should emit a subtract. + if (SCEVConstant *SC = dyn_cast(getOperand(0))) + if (SC->getValue()->isAllOnesValue()) + FirstOp = 1; + + int i = getNumOperands()-2; + Value *V = SER.ExpandCodeFor(getOperand(i+1), InsertPt, Ty); + + // Emit a bunch of multiply instructions + for (; i >= FirstOp; --i) + V = BinaryOperator::create(Instruction::Mul, V, + SER.ExpandCodeFor(getOperand(i), InsertPt, Ty), + "tmp.", InsertPt); + // -1 * ... ---> 0 - ... + if (FirstOp == 1) + V = BinaryOperator::create(Instruction::Sub, Constant::getNullValue(Ty), V, + "tmp.", InsertPt); + return V; + } + + Value *SCEVUDivExpr::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + const Type *Ty = getType(); + Value *LHS = SER.ExpandCodeFor(getLHS(), InsertPt, Ty); + Value *RHS = SER.ExpandCodeFor(getRHS(), InsertPt, Ty); + return BinaryOperator::create(Instruction::Div, LHS, RHS, "tmp.", InsertPt); + } + + Value *SCEVAddRecExpr::expandCodeFor(ScalarEvolutionRewriter &SER, + Instruction *InsertPt) { + const Type *Ty = getType(); + // We cannot yet do fp recurrences, e.g. the xform of {X,+,F} --> X+{0,+,F} + assert(Ty->isIntegral() && "Cannot expand fp recurrences yet!"); + + // {X,+,F} --> X + {0,+,F} + if (!isa(getStart()) || + !cast(getStart())->getValue()->isNullValue()) { + Value *Start = SER.ExpandCodeFor(getStart(), InsertPt, Ty); + std::vector NewOps(op_begin(), op_end()); + NewOps[0] = getIntegerSCEV(0, getType()); + Value *Rest = SER.ExpandCodeFor(SCEVAddRecExpr::get(NewOps, getLoop()), + InsertPt, getType()); + + // FIXME: look for an existing add to use. + return BinaryOperator::create(Instruction::Add, Rest, Start, "tmp.", + InsertPt); + } + + // {0,+,1} --> Insert a canonical induction variable into the loop! + if (getNumOperands() == 2 && getOperand(1) == getIntegerSCEV(1, getType())) { + // Create and insert the PHI node for the induction variable in the + // specified loop. + BasicBlock *Header = getLoop()->getHeader(); + PHINode *PN = new PHINode(Ty, "indvar", Header->begin()); + PN->addIncoming(Constant::getNullValue(Ty), L->getLoopPreheader()); + + // Insert a unit add instruction after the PHI nodes in the header block. + BasicBlock::iterator I = PN; + while (isa(I)) ++I; + + Constant *One = Ty->isFloatingPoint() ?(Constant*)ConstantFP::get(Ty, 1.0) + :(Constant*)ConstantInt::get(Ty, 1); + Instruction *Add = BinaryOperator::create(Instruction::Add, PN, One, + "indvar.next", I); + + pred_iterator PI = pred_begin(Header); + if (*PI == L->getLoopPreheader()) + ++PI; + PN->addIncoming(Add, *PI); + return PN; + } + + // Get the canonical induction variable I for this loop. + Value *I = SER.GetOrInsertCanonicalInductionVariable(getLoop(), Ty); + + if (getNumOperands() == 2) { // {0,+,F} --> i*F + Value *F = SER.ExpandCodeFor(getOperand(1), InsertPt, Ty); + return BinaryOperator::create(Instruction::Mul, I, F, "tmp.", InsertPt); + } + + // If this is a chain of recurrences, turn it into a closed form, using the + // folders, then expandCodeFor the closed form. This allows the folders to + // simplify the expression without having to build a bunch of special code + // into this folder. + SCEVHandle IH = SCEVUnknown::get(I); // Get I as a "symbolic" SCEV. + + SCEVHandle V = evaluateAtIteration(IH); + std::cerr << "Evaluated: " << *this << "\n to: " << *V << "\n"; + + return SER.ExpandCodeFor(V, InsertPt, Ty); + } + + + //===----------------------------------------------------------------------===// + // ScalarEvolutionsImpl Definition and Implementation + //===----------------------------------------------------------------------===// + // + /// ScalarEvolutionsImpl - This class implements the main driver for the scalar + /// evolution code. + /// + namespace { + struct ScalarEvolutionsImpl { + /// F - The function we are analyzing. + /// + Function &F; + + /// LI - The loop information for the function we are currently analyzing. + /// + LoopInfo &LI; + + /// UnknownValue - This SCEV is used to represent unknown trip counts and + /// things. + SCEVHandle UnknownValue; + + /// Scalars - This is a cache of the scalars we have analyzed so far. + /// + std::map Scalars; + + /// IterationCounts - Cache the iteration count of the loops for this + /// function as they are computed. + std::map IterationCounts; + + public: + ScalarEvolutionsImpl(Function &f, LoopInfo &li) + : F(f), LI(li), UnknownValue(new SCEVCouldNotCompute()) {} + + /// getSCEV - Return an existing SCEV if it exists, otherwise analyze the + /// expression and create a new one. + SCEVHandle getSCEV(Value *V); + + /// getSCEVAtScope - Compute the value of the specified expression within + /// the indicated loop (which may be null to indicate in no loop). If the + /// expression cannot be evaluated, return UnknownValue itself. + SCEVHandle getSCEVAtScope(SCEV *V, const Loop *L); + + + /// hasLoopInvariantIterationCount - Return true if the specified loop has + /// an analyzable loop-invariant iteration count. + bool hasLoopInvariantIterationCount(const Loop *L); + + /// getIterationCount - If the specified loop has a predictable iteration + /// count, return it. Note that it is not valid to call this method on a + /// loop without a loop-invariant iteration count. + SCEVHandle getIterationCount(const Loop *L); + + /// deleteInstructionFromRecords - This method should be called by the + /// client before it removes an instruction from the program, to make sure + /// that no dangling references are left around. + void deleteInstructionFromRecords(Instruction *I); + + private: + /// createSCEV - We know that there is no SCEV for the specified value. + /// Analyze the expression. + SCEVHandle createSCEV(Value *V); + SCEVHandle createNodeForCast(CastInst *CI); + + /// createNodeForPHI - Provide the special handling we need to analyze PHI + /// SCEVs. + SCEVHandle createNodeForPHI(PHINode *PN); + void UpdatePHIUserScalarEntries(Instruction *I, PHINode *PN, + std::set &UpdatedInsts); + + /// ComputeIterationCount - Compute the number of times the specified loop + /// will iterate. + SCEVHandle ComputeIterationCount(const Loop *L); + + /// HowFarToZero - Return the number of times a backedge comparing the + /// specified value to zero will execute. If not computable, return + /// UnknownValue + SCEVHandle HowFarToZero(SCEV *V, const Loop *L); + + /// HowFarToNonZero - Return the number of times a backedge checking the + /// specified value for nonzero will execute. If not computable, return + /// UnknownValue + SCEVHandle HowFarToNonZero(SCEV *V, const Loop *L); + }; + } + + //===----------------------------------------------------------------------===// + // Basic SCEV Analysis and PHI Idiom Recognition Code + // + + /// deleteInstructionFromRecords - This method should be called by the + /// client before it removes an instruction from the program, to make sure + /// that no dangling references are left around. + void ScalarEvolutionsImpl::deleteInstructionFromRecords(Instruction *I) { + Scalars.erase(I); + } + + + /// getSCEV - Return an existing SCEV if it exists, otherwise analyze the + /// expression and create a new one. + SCEVHandle ScalarEvolutionsImpl::getSCEV(Value *V) { + assert(V->getType() != Type::VoidTy && "Can't analyze void expressions!"); + + std::map::iterator I = Scalars.find(V); + if (I != Scalars.end()) return I->second; + SCEVHandle S = createSCEV(V); + Scalars.insert(std::make_pair(V, S)); + return S; + } + + + /// UpdatePHIUserScalarEntries - After PHI node analysis, we have a bunch of + /// entries in the scalar map that refer to the "symbolic" PHI value instead of + /// the recurrence value. After we resolve the PHI we must loop over all of the + /// using instructions that have scalar map entries and update them. + void ScalarEvolutionsImpl::UpdatePHIUserScalarEntries(Instruction *I, + PHINode *PN, + std::set &UpdatedInsts) { + std::map::iterator SI = Scalars.find(I); + if (SI == Scalars.end()) return; // This scalar wasn't previous processed. + if (UpdatedInsts.insert(I).second) { + Scalars.erase(SI); // Remove the old entry + getSCEV(I); // Calculate the new entry + + for (Value::use_iterator UI = I->use_begin(), E = I->use_end(); + UI != E; ++UI) + UpdatePHIUserScalarEntries(cast(*UI), PN, UpdatedInsts); + } + } + + + /// createNodeForPHI - PHI nodes have two cases. Either the PHI node exists in + /// a loop header, making it a potential recurrence, or it doesn't. + /// + SCEVHandle ScalarEvolutionsImpl::createNodeForPHI(PHINode *PN) { + if (PN->getNumIncomingValues() == 2) // The loops have been canonicalized. + if (const Loop *L = LI.getLoopFor(PN->getParent())) + if (L->getHeader() == PN->getParent()) { + // If it lives in the loop header, it has two incoming values, one + // from outside the loop, and one from inside. + unsigned IncomingEdge = L->contains(PN->getIncomingBlock(0)); + unsigned BackEdge = IncomingEdge^1; + + // While we are analyzing this PHI node, handle its value symbolically. + SCEVHandle SymbolicName = SCEVUnknown::get(PN); + assert(Scalars.find(PN) == Scalars.end() && + "PHI node already processed?"); + Scalars.insert(std::make_pair(PN, SymbolicName)); + + // Using this symbolic name for the PHI, analyze the value coming around + // the back-edge. + SCEVHandle BEValue = getSCEV(PN->getIncomingValue(BackEdge)); + + // NOTE: If BEValue is loop invariant, we know that the PHI node just + // has a special value for the first iteration of the loop. + + // If the value coming around the backedge is an add with the symbolic + // value we just inserted, then we found a simple induction variable! + if (SCEVAddExpr *Add = dyn_cast(BEValue)) { + // If there is a single occurrence of the symbolic value, replace it + // with a recurrence. + unsigned FoundIndex = Add->getNumOperands(); + for (unsigned i = 0, e = Add->getNumOperands(); i != e; ++i) + if (Add->getOperand(i) == SymbolicName) + if (FoundIndex == e) { + FoundIndex = i; + break; + } + + if (FoundIndex != Add->getNumOperands()) { + // Create an add with everything but the specified operand. + std::vector Ops; + for (unsigned i = 0, e = Add->getNumOperands(); i != e; ++i) + if (i != FoundIndex) + Ops.push_back(Add->getOperand(i)); + SCEVHandle Accum = SCEVAddExpr::get(Ops); + + // This is not a valid addrec if the step amount is varying each + // loop iteration, but is not itself an addrec in this loop. + if (Accum->isLoopInvariant(L) || + (isa(Accum) && + cast(Accum)->getLoop() == L)) { + SCEVHandle StartVal = getSCEV(PN->getIncomingValue(IncomingEdge)); + SCEVHandle PHISCEV = SCEVAddRecExpr::get(StartVal, Accum, L); + + // Okay, for the entire analysis of this edge we assumed the PHI + // to be symbolic. We now need to go back and update all of the + // entries for the scalars that use the PHI (except for the PHI + // itself) to use the new analyzed value instead of the "symbolic" + // value. + Scalars.find(PN)->second = PHISCEV; // Update the PHI value + std::set UpdatedInsts; + UpdatedInsts.insert(PN); + for (Value::use_iterator UI = PN->use_begin(), E = PN->use_end(); + UI != E; ++UI) + UpdatePHIUserScalarEntries(cast(*UI), PN, + UpdatedInsts); + return PHISCEV; + } + } + } + + return SymbolicName; + } + + // If it's not a loop phi, we can't handle it yet. + return SCEVUnknown::get(PN); + } + + /// createNodeForCast - Handle the various forms of casts that we support. + /// + SCEVHandle ScalarEvolutionsImpl::createNodeForCast(CastInst *CI) { + const Type *SrcTy = CI->getOperand(0)->getType(); + const Type *DestTy = CI->getType(); + + // If this is a noop cast (ie, conversion from int to uint), ignore it. + if (SrcTy->isLosslesslyConvertibleTo(DestTy)) + return getSCEV(CI->getOperand(0)); + + if (SrcTy->isInteger() && DestTy->isInteger()) { + // Otherwise, if this is a truncating integer cast, we can represent this + // cast. + if (SrcTy->getPrimitiveSize() > DestTy->getPrimitiveSize()) + return SCEVTruncateExpr::get(getSCEV(CI->getOperand(0)), + CI->getType()->getUnsignedVersion()); + if (SrcTy->isUnsigned() && + SrcTy->getPrimitiveSize() > DestTy->getPrimitiveSize()) + return SCEVZeroExtendExpr::get(getSCEV(CI->getOperand(0)), + CI->getType()->getUnsignedVersion()); + } + + // If this is an sign or zero extending cast and we can prove that the value + // will never overflow, we could do similar transformations. + + // Otherwise, we can't handle this cast! + return SCEVUnknown::get(CI); + } + + + /// createSCEV - We know that there is no SCEV for the specified value. + /// Analyze the expression. + /// + SCEVHandle ScalarEvolutionsImpl::createSCEV(Value *V) { + if (Instruction *I = dyn_cast(V)) { + switch (I->getOpcode()) { + case Instruction::Add: + return SCEVAddExpr::get(getSCEV(I->getOperand(0)), + getSCEV(I->getOperand(1))); + case Instruction::Mul: + return SCEVMulExpr::get(getSCEV(I->getOperand(0)), + getSCEV(I->getOperand(1))); + case Instruction::Div: + if (V->getType()->isInteger() && V->getType()->isUnsigned()) + return SCEVUDivExpr::get(getSCEV(I->getOperand(0)), + getSCEV(I->getOperand(1))); + break; + + case Instruction::Sub: + return getMinusSCEV(getSCEV(I->getOperand(0)), getSCEV(I->getOperand(1))); + + case Instruction::Shl: + // Turn shift left of a constant amount into a multiply. + if (ConstantInt *SA = dyn_cast(I->getOperand(1))) { + Constant *X = ConstantInt::get(V->getType(), 1); + X = ConstantExpr::getShl(X, SA); + return SCEVMulExpr::get(getSCEV(I->getOperand(0)), getSCEV(X)); + } + break; + + case Instruction::Shr: + if (ConstantUInt *SA = dyn_cast(I->getOperand(1))) + if (V->getType()->isUnsigned()) { + Constant *X = ConstantInt::get(V->getType(), 1); + X = ConstantExpr::getShl(X, SA); + return SCEVUDivExpr::get(getSCEV(I->getOperand(0)), getSCEV(X)); + } + break; + + case Instruction::Cast: + return createNodeForCast(cast(I)); + + case Instruction::PHI: + return createNodeForPHI(cast(I)); + + default: // We cannot analyze this expression. + break; + } + } + + return SCEVUnknown::get(V); + } + + + + //===----------------------------------------------------------------------===// + // Iteration Count Computation Code + // + + /// getIterationCount - If the specified loop has a predictable iteration + /// count, return it. Note that it is not valid to call this method on a + /// loop without a loop-invariant iteration count. + SCEVHandle ScalarEvolutionsImpl::getIterationCount(const Loop *L) { + std::map::iterator I = IterationCounts.find(L); + if (I == IterationCounts.end()) { + SCEVHandle ItCount = ComputeIterationCount(L); + I = IterationCounts.insert(std::make_pair(L, ItCount)).first; + if (ItCount != UnknownValue) { + assert(ItCount->isLoopInvariant(L) && + "Computed trip count isn't loop invariant for loop!"); + ++NumTripCountsComputed; + } else if (isa(L->getHeader()->begin())) { + // Only count loops that have phi nodes as not being computable. + ++NumTripCountsNotComputed; + } + } + return I->second; + } + + /// ComputeIterationCount - Compute the number of times the specified loop + /// will iterate. + SCEVHandle ScalarEvolutionsImpl::ComputeIterationCount(const Loop *L) { + // If the loop has a non-one exit block count, we can't analyze it. + if (L->getExitBlocks().size() != 1) return UnknownValue; + + // Okay, there is one exit block. Try to find the condition that causes the + // loop to be exited. + BasicBlock *ExitBlock = L->getExitBlocks()[0]; + + BasicBlock *ExitingBlock = 0; + for (pred_iterator PI = pred_begin(ExitBlock), E = pred_end(ExitBlock); + PI != E; ++PI) + if (L->contains(*PI)) { + if (ExitingBlock == 0) + ExitingBlock = *PI; + else + return UnknownValue; // More than one block exiting! + } + assert(ExitingBlock && "No exits from loop, something is broken!"); + + // Okay, we've computed the exiting block. See what condition causes us to + // exit. + // + // FIXME: we should be able to handle switch instructions (with a single exit) + // FIXME: We should handle cast of int to bool as well + BranchInst *ExitBr = dyn_cast(ExitingBlock->getTerminator()); + if (ExitBr == 0) return UnknownValue; + assert(ExitBr->isConditional() && "If unconditional, it can't be in loop!"); + SetCondInst *ExitCond = dyn_cast(ExitBr->getCondition()); + if (ExitCond == 0) return UnknownValue; + + SCEVHandle LHS = getSCEV(ExitCond->getOperand(0)); + SCEVHandle RHS = getSCEV(ExitCond->getOperand(1)); + + // Try to evaluate any dependencies out of the loop. + SCEVHandle Tmp = getSCEVAtScope(LHS, L); + if (!isa(Tmp)) LHS = Tmp; + Tmp = getSCEVAtScope(RHS, L); + if (!isa(Tmp)) RHS = Tmp; + + // If the condition was exit on true, convert the condition to exit on false. + Instruction::BinaryOps Cond; + if (ExitBr->getSuccessor(1) == ExitBlock) + Cond = ExitCond->getOpcode(); + else + Cond = ExitCond->getInverseCondition(); + + // At this point, we would like to compute how many iterations of the loop the + // predicate will return true for these inputs. + if (isa(LHS) && !isa(RHS)) { + // If there is a constant, force it into the RHS. + std::swap(LHS, RHS); + Cond = SetCondInst::getSwappedCondition(Cond); + } + + // FIXME: think about handling pointer comparisons! i.e.: + // while (P != P+100) ++P; + + // If we have a comparison of a chrec against a constant, try to use value + // ranges to answer this query. + if (SCEVConstant *RHSC = dyn_cast(RHS)) + if (SCEVAddRecExpr *AddRec = dyn_cast(LHS)) + if (AddRec->getLoop() == L) { + // Form the comparison range using the constant of the correct type so + // that the ConstantRange class knows to do a signed or unsigned + // comparison. + ConstantInt *CompVal = RHSC->getValue(); + const Type *RealTy = ExitCond->getOperand(0)->getType(); + CompVal = dyn_cast(ConstantExpr::getCast(CompVal, RealTy)); + if (CompVal) { + // Form the constant range. + ConstantRange CompRange(Cond, CompVal); + + // Now that we have it, if it's signed, convert it to an unsigned + // range. + if (CompRange.getLower()->getType()->isSigned()) { + const Type *NewTy = RHSC->getValue()->getType(); + Constant *NewL = ConstantExpr::getCast(CompRange.getLower(), NewTy); + Constant *NewU = ConstantExpr::getCast(CompRange.getUpper(), NewTy); + CompRange = ConstantRange(NewL, NewU); + } + + SCEVHandle Ret = AddRec->getNumIterationsInRange(CompRange); + if (!isa(Ret)) return Ret; + } + } + + switch (Cond) { + case Instruction::SetNE: // while (X != Y) + // Convert to: while (X-Y != 0) + if (LHS->getType()->isInteger()) + return HowFarToZero(getMinusSCEV(LHS, RHS), L); + break; + case Instruction::SetEQ: + // Convert to: while (X-Y == 0) // while (X == Y) + if (LHS->getType()->isInteger()) + return HowFarToNonZero(getMinusSCEV(LHS, RHS), L); + break; + default: + std::cerr << "ComputeIterationCount "; + if (ExitCond->getOperand(0)->getType()->isUnsigned()) + std::cerr << "[unsigned] "; + std::cerr << *LHS << " " + << Instruction::getOpcodeName(Cond) << " " << *RHS << "\n"; + } + return UnknownValue; + } + + /// getSCEVAtScope - Compute the value of the specified expression within the + /// indicated loop (which may be null to indicate in no loop). If the + /// expression cannot be evaluated, return UnknownValue. + SCEVHandle ScalarEvolutionsImpl::getSCEVAtScope(SCEV *V, const Loop *L) { + // FIXME: this should be turned into a virtual method on SCEV! + + if (isa(V) || isa(V)) return V; + if (SCEVCommutativeExpr *Comm = dyn_cast(V)) { + // Avoid performing the look-up in the common case where the specified + // expression has no loop-variant portions. + for (unsigned i = 0, e = Comm->getNumOperands(); i != e; ++i) { + SCEVHandle OpAtScope = getSCEVAtScope(Comm->getOperand(i), L); + if (OpAtScope != Comm->getOperand(i)) { + if (OpAtScope == UnknownValue) return UnknownValue; + // Okay, at least one of these operands is loop variant but might be + // foldable. Build a new instance of the folded commutative expression. + std::vector NewOps(Comm->op_begin(), Comm->op_begin()+i-1); + NewOps.push_back(OpAtScope); + + for (++i; i != e; ++i) { + OpAtScope = getSCEVAtScope(Comm->getOperand(i), L); + if (OpAtScope == UnknownValue) return UnknownValue; + NewOps.push_back(OpAtScope); + } + if (isa(Comm)) + return SCEVAddExpr::get(NewOps); + assert(isa(Comm) && "Only know about add and mul!"); + return SCEVMulExpr::get(NewOps); + } + } + // If we got here, all operands are loop invariant. + return Comm; + } + + if (SCEVUDivExpr *UDiv = dyn_cast(V)) { + SCEVHandle LHS = getSCEVAtScope(UDiv->getLHS(), L); + if (LHS == UnknownValue) return LHS; + SCEVHandle RHS = getSCEVAtScope(UDiv->getRHS(), L); + if (RHS == UnknownValue) return RHS; + if (LHS == UDiv->getLHS() && RHS == UDiv->getRHS()) + return UDiv; // must be loop invariant + return SCEVUDivExpr::get(LHS, RHS); + } + + // If this is a loop recurrence for a loop that does not contain L, then we + // are dealing with the final value computed by the loop. + if (SCEVAddRecExpr *AddRec = dyn_cast(V)) { + if (!L || !AddRec->getLoop()->contains(L->getHeader())) { + // To evaluate this recurrence, we need to know how many times the AddRec + // loop iterates. Compute this now. + SCEVHandle IterationCount = getIterationCount(AddRec->getLoop()); + if (IterationCount == UnknownValue) return UnknownValue; + IterationCount = getTruncateOrZeroExtend(IterationCount, + AddRec->getType()); + + // If the value is affine, simplify the expression evaluation to just + // Start + Step*IterationCount. + if (AddRec->isAffine()) + return SCEVAddExpr::get(AddRec->getStart(), + SCEVMulExpr::get(IterationCount, + AddRec->getOperand(1))); + + // Otherwise, evaluate it the hard way. + return AddRec->evaluateAtIteration(IterationCount); + } + return UnknownValue; + } + + //assert(0 && "Unknown SCEV type!"); + return UnknownValue; + } + + + /// SolveQuadraticEquation - Find the roots of the quadratic equation for the + /// given quadratic chrec {L,+,M,+,N}. This returns either the two roots (which + /// might be the same) or two SCEVCouldNotCompute objects. + /// + static std::pair + SolveQuadraticEquation(const SCEVAddRecExpr *AddRec) { + assert(AddRec->getNumOperands() == 3 && "This is not a quadratic chrec!"); + SCEVConstant *L = dyn_cast(AddRec->getOperand(0)); + SCEVConstant *M = dyn_cast(AddRec->getOperand(1)); + SCEVConstant *N = dyn_cast(AddRec->getOperand(2)); + + // We currently can only solve this if the coefficients are constants. + if (!L || !M || !N) { + SCEV *CNC = new SCEVCouldNotCompute(); + return std::make_pair(CNC, CNC); + } + + Constant *Two = ConstantInt::get(L->getValue()->getType(), 2); + + // Convert from chrec coefficients to polynomial coefficients AX^2+BX+C + Constant *C = L->getValue(); + // The B coefficient is M-N/2 + Constant *B = ConstantExpr::getSub(M->getValue(), + ConstantExpr::getDiv(N->getValue(), + Two)); + // The A coefficient is N/2 + Constant *A = ConstantExpr::getDiv(N->getValue(), Two); + + // Compute the B^2-4ac term. + Constant *SqrtTerm = + ConstantExpr::getMul(ConstantInt::get(C->getType(), 4), + ConstantExpr::getMul(A, C)); + SqrtTerm = ConstantExpr::getSub(ConstantExpr::getMul(B, B), SqrtTerm); + + // Compute floor(sqrt(B^2-4ac)) + ConstantUInt *SqrtVal = + cast(ConstantExpr::getCast(SqrtTerm, + SqrtTerm->getType()->getUnsignedVersion())); + uint64_t SqrtValV = SqrtVal->getValue(); + uint64_t SqrtValV2 = (uint64_t)sqrtl(SqrtValV); + // The square root might not be precise for arbitrary 64-bit integer + // values. Do some sanity checks to ensure it's correct. + if (SqrtValV2*SqrtValV2 > SqrtValV || + (SqrtValV2+1)*(SqrtValV2+1) <= SqrtValV) { + SCEV *CNC = new SCEVCouldNotCompute(); + return std::make_pair(CNC, CNC); + } + + SqrtVal = ConstantUInt::get(Type::ULongTy, SqrtValV2); + SqrtTerm = ConstantExpr::getCast(SqrtVal, SqrtTerm->getType()); + + Constant *NegB = ConstantExpr::getNeg(B); + Constant *TwoA = ConstantExpr::getMul(A, Two); + + // The divisions must be performed as signed divisions. + const Type *SignedTy = NegB->getType()->getSignedVersion(); + NegB = ConstantExpr::getCast(NegB, SignedTy); + TwoA = ConstantExpr::getCast(TwoA, SignedTy); + SqrtTerm = ConstantExpr::getCast(SqrtTerm, SignedTy); + + Constant *Solution1 = + ConstantExpr::getDiv(ConstantExpr::getAdd(NegB, SqrtTerm), TwoA); + Constant *Solution2 = + ConstantExpr::getDiv(ConstantExpr::getSub(NegB, SqrtTerm), TwoA); + return std::make_pair(SCEVUnknown::get(Solution1), + SCEVUnknown::get(Solution2)); + } + + /// HowFarToZero - Return the number of times a backedge comparing the specified + /// value to zero will execute. If not computable, return UnknownValue + SCEVHandle ScalarEvolutionsImpl::HowFarToZero(SCEV *V, const Loop *L) { + // If the value is a constant + if (SCEVConstant *C = dyn_cast(V)) { + // If the value is already zero, the branch will execute zero times. + if (C->getValue()->isNullValue()) return C; + return UnknownValue; // Otherwise it will loop infinitely. + } + + SCEVAddRecExpr *AddRec = dyn_cast(V); + if (!AddRec || AddRec->getLoop() != L) + return UnknownValue; + + if (AddRec->isAffine()) { + // If this is an affine expression the execution count of this branch is + // equal to: + // + // (0 - Start/Step) iff Start % Step == 0 + // + // Get the initial value for the loop. + SCEVHandle Start = getSCEVAtScope(AddRec->getStart(), L->getParentLoop()); + SCEVHandle Step = AddRec->getOperand(1); + + Step = getSCEVAtScope(Step, L->getParentLoop()); + + // Figure out if Start % Step == 0. + // FIXME: We should add DivExpr and RemExpr operations to our AST. + if (SCEVConstant *StepC = dyn_cast(Step)) { + if (StepC->getValue()->equalsInt(1)) // N % 1 == 0 + return getNegativeSCEV(Start); // 0 - Start/1 == -Start + if (StepC->getValue()->isAllOnesValue()) // N % -1 == 0 + return Start; // 0 - Start/-1 == Start + + // Check to see if Start is divisible by SC with no remainder. + if (SCEVConstant *StartC = dyn_cast(Start)) { + ConstantInt *StartCC = StartC->getValue(); + Constant *StartNegC = ConstantExpr::getNeg(StartCC); + Constant *Rem = ConstantExpr::getRem(StartNegC, StepC->getValue()); + if (Rem->isNullValue()) { + Constant *Result =ConstantExpr::getDiv(StartNegC,StepC->getValue()); + return SCEVUnknown::get(Result); + } + } + } + } else if (AddRec->isQuadratic() && AddRec->getType()->isInteger()) { + // If this is a quadratic (3-term) AddRec {L,+,M,+,N}, find the roots of + // the quadratic equation to solve it. + std::pair Roots = SolveQuadraticEquation(AddRec); + SCEVConstant *R1 = dyn_cast(Roots.first); + SCEVConstant *R2 = dyn_cast(Roots.second); + if (R1) { + std::cerr << "HFTZ: " << *V << " - sol#1: " << *R1 + << " sol#2: " << *R2 << "\n"; + // Pick the smallest positive root value. + assert(R1->getType()->isUnsigned()&&"Didn't canonicalize to unsigned?"); + if (ConstantBool *CB = + dyn_cast(ConstantExpr::getSetLT(R1->getValue(), + R2->getValue()))) { + if (CB != ConstantBool::True) + std::swap(R1, R2); // R1 is the minimum root now. + + // We can only use this value if the chrec ends up with an exact zero + // value at this index. When solving for "X*X != 5", for example, we + // should not accept a root of 2. + SCEVHandle Val = AddRec->evaluateAtIteration(R1); + if (SCEVConstant *EvalVal = dyn_cast(Val)) + if (EvalVal->getValue()->isNullValue()) + return R1; // We found a quadratic root! + } + } + } + + return UnknownValue; + } + + /// HowFarToNonZero - Return the number of times a backedge checking the + /// specified value for nonzero will execute. If not computable, return + /// UnknownValue + SCEVHandle ScalarEvolutionsImpl::HowFarToNonZero(SCEV *V, const Loop *L) { + // Loops that look like: while (X == 0) are very strange indeed. We don't + // handle them yet except for the trivial case. This could be expanded in the + // future as needed. + + // If the value is a constant, check to see if it is known to be non-zero + // already. If so, the backedge will execute zero times. + if (SCEVConstant *C = dyn_cast(V)) { + Constant *Zero = Constant::getNullValue(C->getValue()->getType()); + Constant *NonZero = ConstantExpr::getSetNE(C->getValue(), Zero); + if (NonZero == ConstantBool::True) + return getSCEV(Zero); + return UnknownValue; // Otherwise it will loop infinitely. + } + + // We could implement others, but I really doubt anyone writes loops like + // this, and if they did, they would already be constant folded. + return UnknownValue; + } + + static ConstantInt * + EvaluateConstantChrecAtConstant(const SCEVAddRecExpr *AddRec, Constant *C) { + SCEVHandle InVal = SCEVConstant::get(cast(C)); + SCEVHandle Val = AddRec->evaluateAtIteration(InVal); + assert(isa(Val) && + "Evaluation of SCEV at constant didn't fold correctly?"); + return cast(Val)->getValue(); + } + + + /// getNumIterationsInRange - Return the number of iterations of this loop that + /// produce values in the specified constant range. Another way of looking at + /// this is that it returns the first iteration number where the value is not in + /// the condition, thus computing the exit count. If the iteration count can't + /// be computed, an instance of SCEVCouldNotCompute is returned. + SCEVHandle SCEVAddRecExpr::getNumIterationsInRange(ConstantRange Range) const { + if (Range.isFullSet()) // Infinite loop. + return new SCEVCouldNotCompute(); + + // If the start is a non-zero constant, shift the range to simplify things. + if (SCEVConstant *SC = dyn_cast(getStart())) + if (!SC->getValue()->isNullValue()) { + std::vector Operands(op_begin(), op_end()); + Operands[0] = getIntegerSCEV(0, SC->getType()); + SCEVHandle Shifted = SCEVAddRecExpr::get(Operands, getLoop()); + if (SCEVAddRecExpr *ShiftedAddRec = dyn_cast(Shifted)) + return ShiftedAddRec->getNumIterationsInRange( + Range.subtract(SC->getValue())); + // This is strange and shouldn't happen. + return new SCEVCouldNotCompute(); + } + + // The only time we can solve this is when we have all constant indices. + // Otherwise, we cannot determine the overflow conditions. + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) + if (!isa(getOperand(i))) + return new SCEVCouldNotCompute(); + + + // Okay at this point we know that all elements of the chrec are constants and + // that the start element is zero. + + // First check to see if the range contains zero. If not, the first + // iteration exits. + ConstantInt *Zero = ConstantInt::get(getType(), 0); + if (!Range.contains(Zero)) return SCEVConstant::get(Zero); + + if (isAffine()) { + // If this is an affine expression then we have this situation: + // Solve {0,+,A} in Range === Ax in Range + + // Since we know that zero is in the range, we know that the upper value of + // the range must be the first possible exit value. Also note that we + // already checked for a full range. + ConstantInt *Upper = cast(Range.getUpper()); + ConstantInt *A = cast(getOperand(1))->getValue(); + ConstantInt *One = ConstantInt::get(getType(), 1); + + // The exit value should be (Upper+A-1)/A. + Constant *ExitValue = Upper; + if (A != One) { + ExitValue = ConstantExpr::getSub(ConstantExpr::getAdd(Upper, A), One); + ExitValue = ConstantExpr::getDiv(ExitValue, A); + } + assert(isa(ExitValue) && + "Constant folding of integers not implemented?"); + + // Evaluate at the exit value. If we really did fall out of the valid + // range, then we computed our trip count, otherwise wrap around or other + // things must have happened. + ConstantInt *Val = EvaluateConstantChrecAtConstant(this, ExitValue); + if (Range.contains(Val)) + return new SCEVCouldNotCompute(); // Something strange happened + + // Ensure that the previous value is in the range. This is a sanity check. + assert(Range.contains(EvaluateConstantChrecAtConstant(this, + ConstantExpr::getSub(ExitValue, One))) && + "Linear scev computation is off in a bad way!"); + return SCEVConstant::get(cast(ExitValue)); + } else if (isQuadratic()) { + // If this is a quadratic (3-term) AddRec {L,+,M,+,N}, find the roots of the + // quadratic equation to solve it. To do this, we must frame our problem in + // terms of figuring out when zero is crossed, instead of when + // Range.getUpper() is crossed. + std::vector NewOps(op_begin(), op_end()); + NewOps[0] = getNegativeSCEV(SCEVUnknown::get(Range.getUpper())); + SCEVHandle NewAddRec = SCEVAddRecExpr::get(NewOps, getLoop()); + + // Next, solve the constructed addrec + std::pair Roots = + SolveQuadraticEquation(cast(NewAddRec)); + SCEVConstant *R1 = dyn_cast(Roots.first); + SCEVConstant *R2 = dyn_cast(Roots.second); + if (R1) { + // Pick the smallest positive root value. + assert(R1->getType()->isUnsigned() && "Didn't canonicalize to unsigned?"); + if (ConstantBool *CB = + dyn_cast(ConstantExpr::getSetLT(R1->getValue(), + R2->getValue()))) { + if (CB != ConstantBool::True) + std::swap(R1, R2); // R1 is the minimum root now. + + // Make sure the root is not off by one. The returned iteration should + // not be in the range, but the previous one should be. When solving + // for "X*X < 5", for example, we should not return a root of 2. + ConstantInt *R1Val = EvaluateConstantChrecAtConstant(this, + R1->getValue()); + if (Range.contains(R1Val)) { + // The next iteration must be out of the range... + Constant *NextVal = + ConstantExpr::getAdd(R1->getValue(), + ConstantInt::get(R1->getType(), 1)); + + R1Val = EvaluateConstantChrecAtConstant(this, NextVal); + if (!Range.contains(R1Val)) + return SCEVUnknown::get(NextVal); + return new SCEVCouldNotCompute(); // Something strange happened + } + + // If R1 was not in the range, then it is a good return value. Make + // sure that R1-1 WAS in the range though, just in case. + Constant *NextVal = + ConstantExpr::getSub(R1->getValue(), + ConstantInt::get(R1->getType(), 1)); + R1Val = EvaluateConstantChrecAtConstant(this, NextVal); + if (Range.contains(R1Val)) + return R1; + return new SCEVCouldNotCompute(); // Something strange happened + } + } + } + + // Fallback, if this is a general polynomial, figure out the progression + // through brute force: evaluate until we find an iteration that fails the + // test. This is likely to be slow, but getting an accurate trip count is + // incredibly important, we will be able to simplify the exit test a lot, and + // we are almost guaranteed to get a trip count in this case. + ConstantInt *TestVal = ConstantInt::get(getType(), 0); + ConstantInt *One = ConstantInt::get(getType(), 1); + ConstantInt *EndVal = TestVal; // Stop when we wrap around. + do { + ++NumBruteForceEvaluations; + SCEVHandle Val = evaluateAtIteration(SCEVConstant::get(TestVal)); + if (!isa(Val)) // This shouldn't happen. + return new SCEVCouldNotCompute(); + + // Check to see if we found the value! + if (!Range.contains(cast(Val)->getValue())) + return SCEVConstant::get(TestVal); + + // Increment to test the next index. + TestVal = cast(ConstantExpr::getAdd(TestVal, One)); + } while (TestVal != EndVal); + + return new SCEVCouldNotCompute(); + } + + + + //===----------------------------------------------------------------------===// + // ScalarEvolution Class Implementation + //===----------------------------------------------------------------------===// + + bool ScalarEvolution::runOnFunction(Function &F) { + Impl = new ScalarEvolutionsImpl(F, getAnalysis()); + return false; + } + + void ScalarEvolution::releaseMemory() { + delete (ScalarEvolutionsImpl*)Impl; + Impl = 0; + } + + void ScalarEvolution::getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + AU.addRequiredID(LoopSimplifyID); + AU.addRequiredTransitive(); + } + + SCEVHandle ScalarEvolution::getSCEV(Value *V) const { + return ((ScalarEvolutionsImpl*)Impl)->getSCEV(V); + } + + SCEVHandle ScalarEvolution::getIterationCount(const Loop *L) const { + return ((ScalarEvolutionsImpl*)Impl)->getIterationCount(L); + } + + bool ScalarEvolution::hasLoopInvariantIterationCount(const Loop *L) const { + return !isa(getIterationCount(L)); + } + + SCEVHandle ScalarEvolution::getSCEVAtScope(Value *V, const Loop *L) const { + return ((ScalarEvolutionsImpl*)Impl)->getSCEVAtScope(getSCEV(V), L); + } + + void ScalarEvolution::deleteInstructionFromRecords(Instruction *I) const { + return ((ScalarEvolutionsImpl*)Impl)->deleteInstructionFromRecords(I); + } + + + /// shouldSubstituteIndVar - Return true if we should perform induction variable + /// substitution for this variable. This is a hack because we don't have a + /// strength reduction pass yet. When we do we will promote all vars, because + /// we can strength reduce them later as desired. + bool ScalarEvolution::shouldSubstituteIndVar(const SCEV *S) const { + // Don't substitute high degree polynomials. + if (const SCEVAddRecExpr *AddRec = dyn_cast(S)) + if (AddRec->getNumOperands() > 3) return false; + return true; + } + + + static void PrintLoopInfo(std::ostream &OS, const ScalarEvolution *SE, + const Loop *L) { + // Print all inner loops first + for (Loop::iterator I = L->begin(), E = L->end(); I != E; ++I) + PrintLoopInfo(OS, SE, *I); + + std::cerr << "Loop " << L->getHeader()->getName() << ": "; + if (L->getExitBlocks().size() != 1) + std::cerr << " "; + + if (SE->hasLoopInvariantIterationCount(L)) { + std::cerr << *SE->getIterationCount(L) << " iterations! "; + } else { + std::cerr << "Unpredictable iteration count. "; + } + + std::cerr << "\n"; + } + + void ScalarEvolution::print(std::ostream &OS) const { + Function &F = ((ScalarEvolutionsImpl*)Impl)->F; + LoopInfo &LI = ((ScalarEvolutionsImpl*)Impl)->LI; + + OS << "Classifying expressions for: " << F.getName() << "\n"; + for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) + if ((*I)->getType()->isInteger()) { + OS << **I; + OS << " --> "; + SCEVHandle SV = getSCEV(*I); + SV->print(OS); + OS << "\t\t"; + + if ((*I)->getType()->isIntegral()) { + ConstantRange Bounds = SV->getValueRange(); + if (!Bounds.isFullSet()) + OS << "Bounds: " << Bounds << " "; + } + + if (const Loop *L = LI.getLoopFor((*I)->getParent())) { + OS << "Exits: "; + SCEVHandle ExitValue = getSCEVAtScope(*I, L->getParentLoop()); + if (isa(ExitValue)) { + OS << "<>"; + } else { + OS << *ExitValue; + } + } + + + OS << "\n"; + } + + OS << "Determining loop execution counts for: " << F.getName() << "\n"; + for (LoopInfo::iterator I = LI.begin(), E = LI.end(); I != E; ++I) + PrintLoopInfo(OS, this, *I); + } + + //===----------------------------------------------------------------------===// + // ScalarEvolutionRewriter Class Implementation + //===----------------------------------------------------------------------===// + + Value *ScalarEvolutionRewriter:: + GetOrInsertCanonicalInductionVariable(const Loop *L, const Type *Ty) { + assert((Ty->isInteger() || Ty->isFloatingPoint()) && + "Can only insert integer or floating point induction variables!"); + + // Check to see if we already inserted one. + SCEVHandle H = SCEVAddRecExpr::get(getIntegerSCEV(0, Ty), + getIntegerSCEV(1, Ty), L); + return ExpandCodeFor(H, 0, Ty); + } + + /// ExpandCodeFor - Insert code to directly compute the specified SCEV + /// expression into the program. The inserted code is inserted into the + /// specified block. + Value *ScalarEvolutionRewriter::ExpandCodeFor(SCEVHandle SH, + Instruction *InsertPt, + const Type *Ty) { + std::map::iterator ExistVal =InsertedExpressions.find(SH); + Value *V; + if (ExistVal != InsertedExpressions.end()) { + V = ExistVal->second; + } else { + // Ask the recurrence object to expand the code for itself. + V = SH->expandCodeFor(*this, InsertPt); + // Cache the generated result. + InsertedExpressions.insert(std::make_pair(SH, V)); + } + + if (Ty == 0 || V->getType() == Ty) + return V; + if (Constant *C = dyn_cast(V)) + return ConstantExpr::getCast(C, Ty); + else if (Instruction *I = dyn_cast(V)) { + // FIXME: check to see if there is already a cast! + BasicBlock::iterator IP = I; ++IP; + while (isa(IP)) ++IP; + return new CastInst(V, Ty, V->getName(), IP); + } else { + // FIXME: check to see if there is already a cast! + return new CastInst(V, Ty, V->getName(), InsertPt); + } + } From lattner at cs.uiuc.edu Fri Apr 2 14:45:49 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:45:49 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/IndVarSimplify.cpp Message-ID: <200404022024.OAA31241@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: IndVarSimplify.cpp updated: 1.52 -> 1.53 --- Log message: Rewrite the indvars pass to use the ScalarEvolution analysis. This also implements some new features for the indvars pass, including linear function test replacement, exit value substitution, and it works with a much more general class of induction variables and loops. --- Diffs of the changes: (+341 -293) Index: llvm/lib/Transforms/Scalar/IndVarSimplify.cpp diff -u llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.52 llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.53 --- llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.52 Wed Jan 7 18:09:44 2004 +++ llvm/lib/Transforms/Scalar/IndVarSimplify.cpp Fri Apr 2 14:24:31 2004 @@ -7,65 +7,88 @@ // //===----------------------------------------------------------------------===// // -// Guarantees that all loops with identifiable, linear, induction variables will -// be transformed to have a single, canonical, induction variable. After this -// pass runs, it guarantees the the first PHI node of the header block in the -// loop is the canonical induction variable if there is one. +// This transformation analyzes and transforms the induction variables (and +// computations derived from them) into simpler forms suitable for subsequent +// analysis and transformation. +// +// This transformation make the following changes to each loop with an +// identifiable induction variable: +// 1. All loops are transformed to have a SINGLE canonical induction variable +// which starts at zero and steps by one. +// 2. The canonical induction variable is guaranteed to be the first PHI node +// in the loop header block. +// 3. Any pointer arithmetic recurrences are raised to use array subscripts. +// +// If the trip count of a loop is computable, this pass also makes the following +// changes: +// 1. The exit condition for the loop is canonicalized to compare the +// induction value against the exit value. This turns loops like: +// 'for (i = 7; i*i < 1000; ++i)' into 'for (i = 0; i != 25; ++i)' +// 2. Any use outside of the loop of an expression derived from the indvar +// is changed to compute the derived value outside of the loop, eliminating +// the dependence on the exit value of the induction variable. If the only +// purpose of the loop is to compute the exit value of some derived +// expression, this transformation will make the loop dead. +// +// This transformation should be followed by strength reduction after all of the +// desired loop transformations have been performed. Additionally, on targets +// where it is profitable, the loop could be transformed to count down to zero +// (the "do loop" optimization). // //===----------------------------------------------------------------------===// -#define DEBUG_TYPE "indvar" #include "llvm/Transforms/Scalar.h" -#include "llvm/Constants.h" -#include "llvm/Type.h" +#include "llvm/BasicBlock.h" +#include "llvm/Constant.h" #include "llvm/Instructions.h" -#include "llvm/Analysis/InductionVariable.h" +#include "llvm/Type.h" +#include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/LoopInfo.h" #include "llvm/Support/CFG.h" -#include "llvm/Target/TargetData.h" #include "llvm/Transforms/Utils/Local.h" -#include "Support/Debug.h" +#include "Support/CommandLine.h" #include "Support/Statistic.h" using namespace llvm; namespace { Statistic<> NumRemoved ("indvars", "Number of aux indvars removed"); + Statistic<> NumPointer ("indvars", "Number of pointer indvars promoted"); Statistic<> NumInserted("indvars", "Number of canonical indvars added"); + Statistic<> NumReplaced("indvars", "Number of exit values replaced"); + Statistic<> NumLFTR ("indvars", "Number of loop exit tests replaced"); class IndVarSimplify : public FunctionPass { - LoopInfo *Loops; - TargetData *TD; + LoopInfo *LI; + ScalarEvolution *SE; bool Changed; public: virtual bool runOnFunction(Function &) { - Loops = &getAnalysis(); - TD = &getAnalysis(); + LI = &getAnalysis(); + SE = &getAnalysis(); Changed = false; // Induction Variables live in the header nodes of loops - for (LoopInfo::iterator I = Loops->begin(), E = Loops->end(); I != E; ++I) + for (LoopInfo::iterator I = LI->begin(), E = LI->end(); I != E; ++I) runOnLoop(*I); return Changed; } - unsigned getTypeSize(const Type *Ty) { - if (unsigned Size = Ty->getPrimitiveSize()) - return Size; - return TD->getTypeSize(Ty); // Must be a pointer - } - - Value *ComputeAuxIndVarValue(InductionVariable &IV, Value *CIV); - void ReplaceIndVar(InductionVariable &IV, Value *Counter); - - void runOnLoop(Loop *L); - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); // Need pointer size - AU.addRequired(); AU.addRequiredID(LoopSimplifyID); + AU.addRequired(); + AU.addRequired(); AU.addPreservedID(LoopSimplifyID); AU.setPreservesCFG(); } + private: + void runOnLoop(Loop *L); + void EliminatePointerRecurrence(PHINode *PN, BasicBlock *Preheader, + std::set &DeadInsts); + void LinearFunctionTestReplace(Loop *L, SCEV *IterationCount, + Value *IndVar, ScalarEvolutionRewriter &RW); + void RewriteLoopExitValues(Loop *L); + + void DeleteTriviallyDeadInstructions(std::set &Insts); }; RegisterOpt X("indvars", "Canonicalize Induction Variables"); } @@ -75,298 +98,323 @@ } -void IndVarSimplify::runOnLoop(Loop *Loop) { - // Transform all subloops before this loop... - for (LoopInfo::iterator I = Loop->begin(), E = Loop->end(); I != E; ++I) - runOnLoop(*I); +/// DeleteTriviallyDeadInstructions - If any of the instructions is the +/// specified set are trivially dead, delete them and see if this makes any of +/// their operands subsequently dead. +void IndVarSimplify:: +DeleteTriviallyDeadInstructions(std::set &Insts) { + while (!Insts.empty()) { + Instruction *I = *Insts.begin(); + Insts.erase(Insts.begin()); + if (isInstructionTriviallyDead(I)) { + for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) + if (Instruction *U = dyn_cast(I->getOperand(i))) + Insts.insert(U); + SE->deleteInstructionFromRecords(I); + I->getParent()->getInstList().erase(I); + Changed = true; + } + } +} - // Get the header node for this loop. All of the phi nodes that could be - // induction variables must live in this basic block. - // - BasicBlock *Header = Loop->getHeader(); - - // Loop over all of the PHI nodes in the basic block, calculating the - // induction variables that they represent... stuffing the induction variable - // info into a vector... - // - std::vector IndVars; // Induction variables for block - BasicBlock::iterator AfterPHIIt = Header->begin(); - for (; PHINode *PN = dyn_cast(AfterPHIIt); ++AfterPHIIt) - IndVars.push_back(InductionVariable(PN, Loops)); - // AfterPHIIt now points to first non-phi instruction... - // If there are no phi nodes in this basic block, there can't be indvars... - if (IndVars.empty()) return; - - // Loop over the induction variables, looking for a canonical induction - // variable, and checking to make sure they are not all unknown induction - // variables. Keep track of the largest integer size of the induction - // variable. - // - InductionVariable *Canonical = 0; - unsigned MaxSize = 0; +/// EliminatePointerRecurrence - Check to see if this is a trivial GEP pointer +/// recurrence. If so, change it into an integer recurrence, permitting +/// analysis by the SCEV routines. +void IndVarSimplify::EliminatePointerRecurrence(PHINode *PN, + BasicBlock *Preheader, + std::set &DeadInsts) { + assert(PN->getNumIncomingValues() == 2 && "Noncanonicalized loop!"); + unsigned PreheaderIdx = PN->getBasicBlockIndex(Preheader); + unsigned BackedgeIdx = PreheaderIdx^1; + if (GetElementPtrInst *GEPI = + dyn_cast(PN->getIncomingValue(BackedgeIdx))) + if (GEPI->getOperand(0) == PN) { + assert(GEPI->getNumOperands() == 2 && "GEP types must mismatch!"); + + // Okay, we found a pointer recurrence. Transform this pointer + // recurrence into an integer recurrence. Compute the value that gets + // added to the pointer at every iteration. + Value *AddedVal = GEPI->getOperand(1); + + // Insert a new integer PHI node into the top of the block. + PHINode *NewPhi = new PHINode(AddedVal->getType(), + PN->getName()+".rec", PN); + NewPhi->addIncoming(Constant::getNullValue(NewPhi->getType()), + Preheader); + // Create the new add instruction. + Value *NewAdd = BinaryOperator::create(Instruction::Add, NewPhi, + AddedVal, + GEPI->getName()+".rec", GEPI); + NewPhi->addIncoming(NewAdd, PN->getIncomingBlock(BackedgeIdx)); + + // Update the existing GEP to use the recurrence. + GEPI->setOperand(0, PN->getIncomingValue(PreheaderIdx)); + + // Update the GEP to use the new recurrence we just inserted. + GEPI->setOperand(1, NewAdd); + + // Finally, if there are any other users of the PHI node, we must + // insert a new GEP instruction that uses the pre-incremented version + // of the induction amount. + if (!PN->use_empty()) { + BasicBlock::iterator InsertPos = PN; ++InsertPos; + while (isa(InsertPos)) ++InsertPos; + std::string Name = PN->getName(); PN->setName(""); + Value *PreInc = + new GetElementPtrInst(PN->getIncomingValue(PreheaderIdx), + std::vector(1, NewPhi), Name, + InsertPos); + PN->replaceAllUsesWith(PreInc); + } - for (unsigned i = 0; i != IndVars.size(); ++i) { - InductionVariable &IV = IndVars[i]; + // Delete the old PHI for sure, and the GEP if its otherwise unused. + DeadInsts.insert(PN); - if (IV.InductionType != InductionVariable::Unknown) { - unsigned IVSize = getTypeSize(IV.Phi->getType()); + ++NumPointer; + Changed = true; + } +} - if (IV.InductionType == InductionVariable::Canonical && - !isa(IV.Phi->getType()) && IVSize >= MaxSize) - Canonical = &IV; - - if (IVSize > MaxSize) MaxSize = IVSize; - - // If this variable is larger than the currently identified canonical - // indvar, the canonical indvar is not usable. - if (Canonical && IVSize > getTypeSize(Canonical->Phi->getType())) - Canonical = 0; +/// LinearFunctionTestReplace - This method rewrites the exit condition of the +/// loop to be a canonical != comparison against the loop induction variable. +/// This pass is able to rewrite the exit tests of any loop where the SCEV +/// analysis can determine the trip count of the loop, which is actually a much +/// broader range than just linear tests. +void IndVarSimplify::LinearFunctionTestReplace(Loop *L, SCEV *IterationCount, + Value *IndVar, + ScalarEvolutionRewriter &RW) { + // Find the exit block for the loop. We can currently only handle loops with + // a single exit. + if (L->getExitBlocks().size() != 1) return; + BasicBlock *ExitBlock = L->getExitBlocks()[0]; + + // Make sure there is only one predecessor block in the loop. + BasicBlock *ExitingBlock = 0; + for (pred_iterator PI = pred_begin(ExitBlock), PE = pred_end(ExitBlock); + PI != PE; ++PI) + if (L->contains(*PI)) { + if (ExitingBlock == 0) + ExitingBlock = *PI; + else + return; // Multiple exits from loop to this block. } - } + assert(ExitingBlock && "Loop info is broken"); - // No induction variables, bail early... don't add a canonical indvar - if (MaxSize == 0) return; + if (!isa(ExitingBlock->getTerminator())) + return; // Can't rewrite non-branch yet + BranchInst *BI = cast(ExitingBlock->getTerminator()); + assert(BI->isConditional() && "Must be conditional to be part of loop!"); + + std::set InstructionsToDelete; + if (Instruction *Cond = dyn_cast(BI->getCondition())) + InstructionsToDelete.insert(Cond); + + // Expand the code for the iteration count into the preheader of the loop. + BasicBlock *Preheader = L->getLoopPreheader(); + Value *ExitCnt = RW.ExpandCodeFor(IterationCount, Preheader->getTerminator(), + IndVar->getType()); + + // Insert a new setne or seteq instruction before the branch. + Instruction::BinaryOps Opcode; + if (L->contains(BI->getSuccessor(0))) + Opcode = Instruction::SetNE; + else + Opcode = Instruction::SetEQ; + + Value *Cond = new SetCondInst(Opcode, IndVar, ExitCnt, "exitcond", BI); + BI->setCondition(Cond); + ++NumLFTR; + Changed = true; + DeleteTriviallyDeadInstructions(InstructionsToDelete); +} - // Figure out what the exit condition of the loop is. We can currently only - // handle loops with a single exit. If we cannot figure out what the - // termination condition is, we leave this variable set to null. - // - SetCondInst *TermCond = 0; - if (Loop->getExitBlocks().size() == 1) { - // Get ExitingBlock - the basic block in the loop which contains the branch - // out of the loop. - BasicBlock *Exit = Loop->getExitBlocks()[0]; - pred_iterator PI = pred_begin(Exit); - assert(PI != pred_end(Exit) && "Should have one predecessor in loop!"); - BasicBlock *ExitingBlock = *PI; - assert(++PI == pred_end(Exit) && "Exit block should have one pred!"); - assert(Loop->isLoopExit(ExitingBlock) && "Exiting block is not loop exit!"); - - // Since the block is in the loop, yet branches out of it, we know that the - // block must end with multiple destination terminator. Which means it is - // either a conditional branch, a switch instruction, or an invoke. - if (BranchInst *BI = dyn_cast(ExitingBlock->getTerminator())) { - assert(BI->isConditional() && "Unconditional branch has multiple succs?"); - TermCond = dyn_cast(BI->getCondition()); - } else { - // NOTE: if people actually exit loops with switch instructions, we could - // handle them, but I don't think this is important enough to spend time - // thinking about. - assert(isa(ExitingBlock->getTerminator()) || - isa(ExitingBlock->getTerminator()) && - "Unknown multi-successor terminator!"); - } - } - if (TermCond) - DEBUG(std::cerr << "INDVAR: Found termination condition: " << *TermCond); +/// RewriteLoopExitValues - Check to see if this loop has a computable +/// loop-invariant execution count. If so, this means that we can compute the +/// final value of any expressions that are recurrent in the loop, and +/// substitute the exit values from the loop into any instructions outside of +/// the loop that use the final values of the current expressions. +void IndVarSimplify::RewriteLoopExitValues(Loop *L) { + BasicBlock *Preheader = L->getLoopPreheader(); + + // Scan all of the instructions in the loop, looking at those that have + // extra-loop users and which are recurrences. + ScalarEvolutionRewriter Rewriter(*SE, *LI); + + // We insert the code into the preheader of the loop if the loop contains + // multiple exit blocks, or in the exit block if there is exactly one. + BasicBlock *BlockToInsertInto; + if (L->getExitBlocks().size() == 1) + BlockToInsertInto = L->getExitBlocks()[0]; + else + BlockToInsertInto = Preheader; + BasicBlock::iterator InsertPt = BlockToInsertInto->begin(); + while (isa(InsertPt)) ++InsertPt; - // Okay, we want to convert other induction variables to use a canonical - // indvar. If we don't have one, add one now... - if (!Canonical) { - // Create the PHI node for the new induction variable, and insert the phi - // node at the start of the PHI nodes... - const Type *IVType; - switch (MaxSize) { - default: assert(0 && "Unknown integer type size!"); - case 1: IVType = Type::UByteTy; break; - case 2: IVType = Type::UShortTy; break; - case 4: IVType = Type::UIntTy; break; - case 8: IVType = Type::ULongTy; break; + std::set InstructionsToDelete; + + for (unsigned i = 0, e = L->getBlocks().size(); i != e; ++i) + if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop... + BasicBlock *BB = L->getBlocks()[i]; + for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) + if (I->getType()->isInteger()) { // Is an integer instruction + SCEVHandle SH = SE->getSCEV(I); + if (SH->hasComputableLoopEvolution(L)) { // Varies predictably + // Find out if this predictably varying value is actually used + // outside of the loop. "extra" as opposed to "intra". + std::vector ExtraLoopUsers; + for (Value::use_iterator UI = I->use_begin(), E = I->use_end(); + UI != E; ++UI) + if (!L->contains(cast(*UI)->getParent())) + ExtraLoopUsers.push_back(*UI); + if (!ExtraLoopUsers.empty()) { + // Okay, this instruction has a user outside of the current loop + // and varies predictably in this loop. Evaluate the value it + // contains when the loop exits, and insert code for it. + SCEVHandle ExitValue = SE->getSCEVAtScope(I,L->getParentLoop()); + if (!isa(ExitValue)) { + Changed = true; + ++NumReplaced; + Value *NewVal = Rewriter.ExpandCodeFor(ExitValue, InsertPt, + I->getType()); + + // Rewrite any users of the computed value outside of the loop + // with the newly computed value. + for (unsigned i = 0, e = ExtraLoopUsers.size(); i != e; ++i) + ExtraLoopUsers[i]->replaceUsesOfWith(I, NewVal); + + // If this instruction is dead now, schedule it to be removed. + if (I->use_empty()) + InstructionsToDelete.insert(I); + } + } + } + } } - - PHINode *PN = new PHINode(IVType, "cann-indvar", Header->begin()); - // Create the increment instruction to add one to the counter... - Instruction *Add = BinaryOperator::create(Instruction::Add, PN, - ConstantUInt::get(IVType, 1), - "next-indvar", AfterPHIIt); - - // Figure out which block is incoming and which is the backedge for the loop - BasicBlock *Incoming, *BackEdgeBlock; - pred_iterator PI = pred_begin(Header); - assert(PI != pred_end(Header) && "Loop headers should have 2 preds!"); - if (Loop->contains(*PI)) { // First pred is back edge... - BackEdgeBlock = *PI++; - Incoming = *PI++; - } else { - Incoming = *PI++; - BackEdgeBlock = *PI++; - } - assert(PI == pred_end(Header) && "Loop headers should have 2 preds!"); - - // Add incoming values for the PHI node... - PN->addIncoming(Constant::getNullValue(IVType), Incoming); - PN->addIncoming(Add, BackEdgeBlock); - - // Analyze the new induction variable... - IndVars.push_back(InductionVariable(PN, Loops)); - assert(IndVars.back().InductionType == InductionVariable::Canonical && - "Just inserted canonical indvar that is not canonical!"); - Canonical = &IndVars.back(); - ++NumInserted; - Changed = true; - DEBUG(std::cerr << "INDVAR: Inserted canonical iv: " << *PN); - } else { - // If we have a canonical induction variable, make sure that it is the first - // one in the basic block. - if (&Header->front() != Canonical->Phi) - Header->getInstList().splice(Header->begin(), Header->getInstList(), - Canonical->Phi); - DEBUG(std::cerr << "IndVar: Existing canonical iv used: " - << *Canonical->Phi); - } + DeleteTriviallyDeadInstructions(InstructionsToDelete); +} - DEBUG(std::cerr << "INDVAR: Replacing Induction variables:\n"); - // Get the current loop iteration count, which is always the value of the - // canonical phi node... +void IndVarSimplify::runOnLoop(Loop *L) { + // First step. Check to see if there are any trivial GEP pointer recurrences. + // If there are, change them into integer recurrences, permitting analysis by + // the SCEV routines. // - PHINode *IterCount = Canonical->Phi; + BasicBlock *Header = L->getHeader(); + BasicBlock *Preheader = L->getLoopPreheader(); + + std::set DeadInsts; + for (BasicBlock::iterator I = Header->begin(); + PHINode *PN = dyn_cast(I); ++I) + if (isa(PN->getType())) + EliminatePointerRecurrence(PN, Preheader, DeadInsts); - // Loop through and replace all of the auxiliary induction variables with - // references to the canonical induction variable... - // - for (unsigned i = 0; i != IndVars.size(); ++i) { - InductionVariable *IV = &IndVars[i]; + if (!DeadInsts.empty()) + DeleteTriviallyDeadInstructions(DeadInsts); - DEBUG(IV->print(std::cerr)); - // Don't modify the canonical indvar or unrecognized indvars... - if (IV != Canonical && IV->InductionType != InductionVariable::Unknown) { - ReplaceIndVar(*IV, IterCount); - Changed = true; - ++NumRemoved; + // Next, transform all loops nesting inside of this loop. + for (LoopInfo::iterator I = L->begin(), E = L->end(); I != E; ++I) + runOnLoop(*I); + + // Check to see if this loop has a computable loop-invariant execution count. + // If so, this means that we can compute the final value of any expressions + // that are recurrent in the loop, and substitute the exit values from the + // loop into any instructions outside of the loop that use the final values of + // the current expressions. + // + SCEVHandle IterationCount = SE->getIterationCount(L); + if (!isa(IterationCount)) + RewriteLoopExitValues(L); + + // Next, analyze all of the induction variables in the loop, canonicalizing + // auxillary induction variables. + std::vector > IndVars; + + for (BasicBlock::iterator I = Header->begin(); + PHINode *PN = dyn_cast(I); ++I) + if (PN->getType()->isInteger()) { // FIXME: when we have fast-math, enable! + SCEVHandle SCEV = SE->getSCEV(PN); + if (SCEV->hasComputableLoopEvolution(L)) + if (SE->shouldSubstituteIndVar(SCEV)) // HACK! + IndVars.push_back(std::make_pair(PN, SCEV)); } - } -} -/// ComputeAuxIndVarValue - Given an auxillary induction variable, compute and -/// return a value which will always be equal to the induction variable PHI, but -/// is based off of the canonical induction variable CIV. -/// -Value *IndVarSimplify::ComputeAuxIndVarValue(InductionVariable &IV, Value *CIV){ - Instruction *Phi = IV.Phi; - const Type *IVTy = Phi->getType(); - if (isa(IVTy)) // If indexing into a pointer, make the - IVTy = TD->getIntPtrType(); // index the appropriate type. + // If there are no induction variables in the loop, there is nothing more to + // do. + if (IndVars.empty()) return; - BasicBlock::iterator AfterPHIIt = Phi; - while (isa(AfterPHIIt)) ++AfterPHIIt; - - Value *Val = CIV; - if (Val->getType() != IVTy) - Val = new CastInst(Val, IVTy, Val->getName(), AfterPHIIt); - - if (!isa(IV.Step) || // If the step != 1 - !cast(IV.Step)->equalsInt(1)) { - - // If the types are not compatible, insert a cast now... - if (IV.Step->getType() != IVTy) - IV.Step = new CastInst(IV.Step, IVTy, IV.Step->getName(), AfterPHIIt); - - Val = BinaryOperator::create(Instruction::Mul, Val, IV.Step, - Phi->getName()+"-scale", AfterPHIIt); - } - - // If this is a pointer indvar... - if (isa(Phi->getType())) { - std::vector Idx; - // FIXME: this should not be needed when we fix PR82! - if (Val->getType() != Type::LongTy) - Val = new CastInst(Val, Type::LongTy, Val->getName(), AfterPHIIt); - Idx.push_back(Val); - Val = new GetElementPtrInst(IV.Start, Idx, - Phi->getName()+"-offset", - AfterPHIIt); - - } else if (!isa(IV.Start) || // If Start != 0... - !cast(IV.Start)->isNullValue()) { - // If the types are not compatible, insert a cast now... - if (IV.Start->getType() != IVTy) - IV.Start = new CastInst(IV.Start, IVTy, IV.Start->getName(), - AfterPHIIt); - - // Insert the instruction after the phi nodes... - Val = BinaryOperator::create(Instruction::Add, Val, IV.Start, - Phi->getName()+"-offset", AfterPHIIt); + // Compute the type of the largest recurrence expression. + // + const Type *LargestType = IndVars[0].first->getType(); + bool DifferingSizes = false; + for (unsigned i = 1, e = IndVars.size(); i != e; ++i) { + const Type *Ty = IndVars[i].first->getType(); + DifferingSizes |= Ty->getPrimitiveSize() != LargestType->getPrimitiveSize(); + if (Ty->getPrimitiveSize() > LargestType->getPrimitiveSize()) + LargestType = Ty; } - - // If the PHI node has a different type than val is, insert a cast now... - if (Val->getType() != Phi->getType()) - Val = new CastInst(Val, Phi->getType(), Val->getName(), AfterPHIIt); - - // Move the PHI name to it's new equivalent value... - std::string OldName = Phi->getName(); - Phi->setName(""); - Val->setName(OldName); - - return Val; -} -// ReplaceIndVar - Replace all uses of the specified induction variable with -// expressions computed from the specified loop iteration counter variable. -// Return true if instructions were deleted. -void IndVarSimplify::ReplaceIndVar(InductionVariable &IV, Value *CIV) { - Value *IndVarVal = 0; - PHINode *Phi = IV.Phi; - - assert(Phi->getNumOperands() == 4 && - "Only expect induction variables in canonical loops!"); + // Create a rewriter object which we'll use to transform the code with. + ScalarEvolutionRewriter Rewriter(*SE, *LI); - // Remember the incoming values used by the PHI node - std::vector PHIOps; - PHIOps.reserve(2); - PHIOps.push_back(Phi->getIncomingValue(0)); - PHIOps.push_back(Phi->getIncomingValue(1)); - - // Delete all of the operands of the PHI node... so that the to-be-deleted PHI - // node does not cause any expressions to be computed that would not otherwise - // be. - Phi->dropAllReferences(); - - // Now that we are rid of unneeded uses of the PHI node, replace any remaining - // ones with the appropriate code using the canonical induction variable. - while (!Phi->use_empty()) { - Instruction *U = cast(Phi->use_back()); - - // TODO: Perform LFTR here if possible - if (0) { - - } else { - // Replace all uses of the old PHI node with the new computed value... - if (IndVarVal == 0) - IndVarVal = ComputeAuxIndVarValue(IV, CIV); - U->replaceUsesOfWith(Phi, IndVarVal); - } + // Now that we know the largest of of the induction variables in this loop, + // insert a canonical induction variable of the largest size. + Value *IndVar = Rewriter.GetOrInsertCanonicalInductionVariable(L,LargestType); + ++NumInserted; + Changed = true; + + if (!isa(IterationCount)) + LinearFunctionTestReplace(L, IterationCount, IndVar, Rewriter); + +#if 0 + // If there were induction variables of other sizes, cast the primary + // induction variable to the right size for them, avoiding the need for the + // code evaluation methods to insert induction variables of different sizes. + // FIXME! + if (DifferingSizes) { + std::map InsertedSizes; + for (unsigned i = 0, e = IndVars.size(); i != e; ++i) { + } } +#endif - // If the PHI is the last user of any instructions for computing PHI nodes - // that are irrelevant now, delete those instructions. - while (!PHIOps.empty()) { - Instruction *MaybeDead = dyn_cast(PHIOps.back()); - PHIOps.pop_back(); - - if (MaybeDead && isInstructionTriviallyDead(MaybeDead) && - (!isa(MaybeDead) || - MaybeDead->getParent() != Phi->getParent())) { - PHIOps.insert(PHIOps.end(), MaybeDead->op_begin(), - MaybeDead->op_end()); - MaybeDead->getParent()->getInstList().erase(MaybeDead); - - // Erase any duplicates entries in the PHIOps list. - std::vector::iterator It = - std::find(PHIOps.begin(), PHIOps.end(), MaybeDead); - while (It != PHIOps.end()) { - PHIOps.erase(It); - It = std::find(PHIOps.begin(), PHIOps.end(), MaybeDead); - } - } + // Now that we have a canonical induction variable, we can rewrite any + // recurrences in terms of the induction variable. Start with the auxillary + // induction variables, and recursively rewrite any of their uses. + BasicBlock::iterator InsertPt = Header->begin(); + while (isa(InsertPt)) ++InsertPt; + + while (!IndVars.empty()) { + PHINode *PN = IndVars.back().first; + Value *NewVal = Rewriter.ExpandCodeFor(IndVars.back().second, InsertPt, + PN->getType()); + // Replace the old PHI Node with the inserted computation. + PN->replaceAllUsesWith(NewVal); + DeadInsts.insert(PN); + IndVars.pop_back(); + ++NumRemoved; + Changed = true; } - // Delete the old, now unused, phi node... - Phi->getParent()->getInstList().erase(Phi); -} + DeleteTriviallyDeadInstructions(DeadInsts); + // TODO: In the future we could replace all instructions in the loop body with + // simpler expressions. It's not clear how useful this would be though or if + // the code expansion cost would be worth it! We probably shouldn't do this + // until we have a way to reuse expressions already in the code. +#if 0 + for (unsigned i = 0, e = L->getBlocks().size(); i != e; ++i) + if (LI->getLoopFor(L->getBlocks()[i]) == L) { // Not in a subloop... + BasicBlock *BB = L->getBlocks()[i]; + for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) + if (I->getType()->isInteger() && // Is an integer instruction + !Rewriter.isInsertedInstruction(I)) { + SCEVHandle SH = SE->getSCEV(I); + } + } +#endif +} From lattner at cs.uiuc.edu Fri Apr 2 14:46:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:46:19 2004 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/IndVarsSimplify/2003-09-23-NotAtTop.ll Message-ID: <200404022025.OAA31364@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/IndVarsSimplify: 2003-09-23-NotAtTop.ll updated: 1.2 -> 1.3 --- Log message: Tweak testcase to work with new indvars pass --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/Transforms/IndVarsSimplify/2003-09-23-NotAtTop.ll diff -u llvm/test/Regression/Transforms/IndVarsSimplify/2003-09-23-NotAtTop.ll:1.2 llvm/test/Regression/Transforms/IndVarsSimplify/2003-09-23-NotAtTop.ll:1.3 --- llvm/test/Regression/Transforms/IndVarsSimplify/2003-09-23-NotAtTop.ll:1.2 Tue Dec 9 10:48:24 2003 +++ llvm/test/Regression/Transforms/IndVarsSimplify/2003-09-23-NotAtTop.ll Fri Apr 2 14:25:26 2004 @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep -C1 Loop: | grep Canonical +; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep -C1 Loop: | grep %indvar ; The indvar simplification code should ensure that the first PHI in the block ; is the canonical one! From lattner at cs.uiuc.edu Fri Apr 2 14:46:46 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:46:46 2004 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/IndVarsSimplify/lftr_simple.llx tripcount_compute.llx tripcount_infinite.llx Message-ID: <200404022026.OAA31536@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/IndVarsSimplify: lftr_simple.llx added (r1.1) tripcount_compute.llx added (r1.1) tripcount_infinite.llx added (r1.1) --- Log message: New testcases for the indvars pass --- Diffs of the changes: (+145 -0) Index: llvm/test/Regression/Transforms/IndVarsSimplify/lftr_simple.llx diff -c /dev/null llvm/test/Regression/Transforms/IndVarsSimplify/lftr_simple.llx:1.1 *** /dev/null Fri Apr 2 14:26:14 2004 --- llvm/test/Regression/Transforms/IndVarsSimplify/lftr_simple.llx Fri Apr 2 14:26:04 2004 *************** *** 0 **** --- 1,23 ---- + ; LFTR should eliminate the need for the computation of i*i completely. It + ; is only used to compute the exit value. + ; RUN: llvm-as < %s | opt -indvars -dce | llvm-dis | not grep mul + + %A = external global int + + implementation + + int %quadratic_setlt() { ;; for (i = 7; i*i < 1000; ++i) + entry: + br label %loop + loop: + %i = phi int [ 7, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 1 + store int %i, int* %A + + %i2 = mul int %i, %i + %c = setlt int %i2, 1000 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + Index: llvm/test/Regression/Transforms/IndVarsSimplify/tripcount_compute.llx diff -c /dev/null llvm/test/Regression/Transforms/IndVarsSimplify/tripcount_compute.llx:1.1 *** /dev/null Fri Apr 2 14:26:14 2004 --- llvm/test/Regression/Transforms/IndVarsSimplify/tripcount_compute.llx Fri Apr 2 14:26:04 2004 *************** *** 0 **** --- 1,90 ---- + ; These tests ensure that we can compute the trip count of various forms of + ; loops. If the trip count of the loop is computable, then we will know what + ; the exit value of the loop will be for some value, allowing us to substitute + ; it directly into users outside of the loop, making the loop dead. + ; + ; RUN: llvm-as < %s | opt -indvars -adce -simplifycfg | llvm-dis | not grep br + + int %linear_setne() { ;; for (i = 0; i != 100; ++i) + entry: + br label %loop + loop: + %i = phi int [ 0, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 1 + %c = setne int %i, 100 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + + int %linear_setne_2() { ;; for (i = 0; i != 100; i += 2) + entry: + br label %loop + loop: + %i = phi int [ 0, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 2 + %c = setne int %i, 100 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + + + int %linear_setne_overflow() { ;; for (i = 1024; i != 0; i += 1024) + entry: + br label %loop + loop: + %i = phi int [ 1024, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 1024 + %c = setne int %i, 0 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + + int %linear_setlt() { ;; for (i = 0; i < 100; ++i) + entry: + br label %loop + loop: + %i = phi int [ 0, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 1 + %c = setlt int %i, 100 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + + int %quadratic_setlt() { ;; for (i = 7; i*i < 1000; i+=3) + entry: + br label %loop + loop: + %i = phi int [ 7, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 3 + %i2 = mul int %i, %i + %c = setlt int %i2, 1000 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + + ;; Chained loop test - The exit value of the second loop depends on the exit + ;; value of the first being computed. + int %chained() { + entry: + br label %loop + loop: ;; for (i = 0; i != 100; ++i) + %i = phi int [ 0, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 1 + %c = setne int %i, 100 + br bool %c, label %loop, label %loopexit + loopexit: + br label %loop2 + loop2: ;; for (j = i; j != 200; ++j) + %j = phi int [ %i, %loopexit ], [ %j.next, %loop2 ] + %j.next = add int %j, 1 + %c2 = setne int %j, 200 + br bool %c2, label %loop2, label %loopexit2 + loopexit2: + ret int %j + } + Index: llvm/test/Regression/Transforms/IndVarsSimplify/tripcount_infinite.llx diff -c /dev/null llvm/test/Regression/Transforms/IndVarsSimplify/tripcount_infinite.llx:1.1 *** /dev/null Fri Apr 2 14:26:14 2004 --- llvm/test/Regression/Transforms/IndVarsSimplify/tripcount_infinite.llx Fri Apr 2 14:26:04 2004 *************** *** 0 **** --- 1,32 ---- + ; These tests have an infinite trip count. We obviously shouldn't remove the + ; loops! :) + ; + ; RUN: llvm-as < %s | opt -indvars -adce -simplifycfg | llvm-dis | grep set | wc -l > %t2 + ; RUN: llvm-as < %s | llvm-dis | grep set | wc -l > %t1 + ; RUN: diff %t1 %t2 + + int %infinite_linear() { ;; test for (i = 1; i != 100; i += 2) + entry: + br label %loop + loop: + %i = phi int [ 1, %entry ], [ %i.next, %loop ] + %i.next = add int %i, 2 + %c = setne int %i, 100 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + + int %infinite_quadratic() { ;; test for (i = 1; i*i != 63; ++i) + entry: + br label %loop + loop: + %i = phi int [ 1, %entry ], [ %i.next, %loop ] + %isquare = mul int %i, %i + %i.next = add int %i, 1 + %c = setne int %isquare, 63 + br bool %c, label %loop, label %loopexit + loopexit: + ret int %i + } + From lattner at cs.uiuc.edu Fri Apr 2 14:47:17 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:47:17 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/ScalarEvolution.cpp Message-ID: <200404022026.OAA31625@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: ScalarEvolution.cpp updated: 1.1 -> 1.2 --- Log message: Comment out debugging printouts --- Diffs of the changes: (+5 -1) Index: llvm/lib/Analysis/ScalarEvolution.cpp diff -u llvm/lib/Analysis/ScalarEvolution.cpp:1.1 llvm/lib/Analysis/ScalarEvolution.cpp:1.2 --- llvm/lib/Analysis/ScalarEvolution.cpp:1.1 Fri Apr 2 14:23:17 2004 +++ llvm/lib/Analysis/ScalarEvolution.cpp Fri Apr 2 14:26:46 2004 @@ -1493,7 +1493,7 @@ SCEVHandle IH = SCEVUnknown::get(I); // Get I as a "symbolic" SCEV. SCEVHandle V = evaluateAtIteration(IH); - std::cerr << "Evaluated: " << *this << "\n to: " << *V << "\n"; + //std::cerr << "Evaluated: " << *this << "\n to: " << *V << "\n"; return SER.ExpandCodeFor(V, InsertPt, Ty); } @@ -1916,11 +1916,13 @@ return HowFarToNonZero(getMinusSCEV(LHS, RHS), L); break; default: +#if 0 std::cerr << "ComputeIterationCount "; if (ExitCond->getOperand(0)->getType()->isUnsigned()) std::cerr << "[unsigned] "; std::cerr << *LHS << " " << Instruction::getOpcodeName(Cond) << " " << *RHS << "\n"; +#endif } return UnknownValue; } @@ -2118,8 +2120,10 @@ SCEVConstant *R1 = dyn_cast(Roots.first); SCEVConstant *R2 = dyn_cast(Roots.second); if (R1) { +#if 0 std::cerr << "HFTZ: " << *V << " - sol#1: " << *R1 << " sol#2: " << *R2 << "\n"; +#endif // Pick the smallest positive root value. assert(R1->getType()->isUnsigned()&&"Didn't canonicalize to unsigned?"); if (ConstantBool *CB = From lattner at cs.uiuc.edu Fri Apr 2 14:47:42 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:47:42 2004 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/IndVarsSimplify/exit_value_tests.llx Message-ID: <200404022027.OAA31731@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/IndVarsSimplify: exit_value_tests.llx added (r1.1) --- Log message: new testcase --- Diffs of the changes: (+89 -0) Index: llvm/test/Regression/Transforms/IndVarsSimplify/exit_value_tests.llx diff -c /dev/null llvm/test/Regression/Transforms/IndVarsSimplify/exit_value_tests.llx:1.1 *** /dev/null Fri Apr 2 14:27:57 2004 --- llvm/test/Regression/Transforms/IndVarsSimplify/exit_value_tests.llx Fri Apr 2 14:27:47 2004 *************** *** 0 **** --- 1,89 ---- + ; Test that we can evaluate the exit values of various expression types. Since + ; these loops all have predictable exit values we can replace the use outside + ; of the loop with a closed-form computation, making the loop dead. + ; + ; RUN: llvm-as < %s | opt -indvars -adce -simplifycfg | llvm-dis | not grep br + + int %polynomial_constant() { + br label %Loop + Loop: + %A1 = phi int [0, %0], [%A2, %Loop] + %B1 = phi int [0, %0], [%B2, %Loop] + %A2 = add int %A1, 1 + %B2 = add int %B1, %A1 + + %C = seteq int %A1, 1000 + br bool %C, label %Out, label %Loop + Out: + ret int %B2 + } + + int %NSquare(int %N) { + br label %Loop + Loop: + %X = phi int [0, %0], [%X2, %Loop] + %X2 = add int %X, 1 + %c = seteq int %X, %N + br bool %c, label %Out, label %Loop + Out: + %Y = mul int %X, %X + ret int %Y + } + + int %NSquareOver2(int %N) { + br label %Loop + Loop: + %X = phi int [0, %0], [%X2, %Loop] + %Y = phi int [15, %0], [%Y2, %Loop] ;; include offset of 15 for yuks + + %Y2 = add int %Y, %X + + %X2 = add int %X, 1 + %c = seteq int %X, %N + br bool %c, label %Out, label %Loop + Out: + ret int %Y2 + } + + int %strength_reduced() { + br label %Loop + Loop: + %A1 = phi int [0, %0], [%A2, %Loop] + %B1 = phi int [0, %0], [%B2, %Loop] + %A2 = add int %A1, 1 + %B2 = add int %B1, %A1 + + %C = seteq int %A1, 1000 + br bool %C, label %Out, label %Loop + Out: + ret int %B2 + } + + int %chrec_equals() { + entry: + br label %no_exit + no_exit: + %i0 = phi int [ 0, %entry ], [ %i1, %no_exit ] + %ISq = mul int %i0, %i0 + %i1 = add int %i0, 1 + %tmp.1 = setne int %ISq, 10000 ; while (I*I != 1000) + br bool %tmp.1, label %no_exit, label %loopexit + loopexit: + ret int %i1 + } + + ;; We should recognize B1 as being a recurrence, allowing us to compute the + ;; trip count and eliminate the loop. + short %cast_chrec_test() { + br label %Loop + Loop: + %A1 = phi int [0, %0], [%A2, %Loop] + %B1 = cast int %A1 to short + %A2 = add int %A1, 1 + + %C = seteq short %B1, 1000 + br bool %C, label %Out, label %Loop + Out: + ret short %B1 + } + From lattner at cs.uiuc.edu Fri Apr 2 14:49:28 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 14:49:28 2004 Subject: [llvm-commits] CVS: llvm/include/Support/.cvsignore Message-ID: <200404022034.OAA32424@zion.cs.uiuc.edu> Changes in directory llvm/include/Support: .cvsignore added (r1.1) --- Log message: Ignore configure produced files --- Diffs of the changes: (+5 -0) Index: llvm/include/Support/.cvsignore diff -c /dev/null llvm/include/Support/.cvsignore:1.1 *** /dev/null Fri Apr 2 14:34:40 2004 --- llvm/include/Support/.cvsignore Fri Apr 2 14:34:30 2004 *************** *** 0 **** --- 1,5 ---- + ThreadSupport.h + DataTypes.h + hash_map + hash_set + iterator From lattner at cs.uiuc.edu Fri Apr 2 23:29:05 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:29:05 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/InductionVariable.cpp Message-ID: <200404022056.OAA01432@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: InductionVariable.cpp (r1.35) removed --- Log message: Remove obsolete files --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Fri Apr 2 23:29:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:29:21 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Analysis/InductionVariable.h Message-ID: <200404022056.OAA01439@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Analysis: InductionVariable.h (r1.9) removed --- Log message: Remove obsolete files --- Diffs of the changes: (+0 -0) From lattner at cs.uiuc.edu Fri Apr 2 23:29:36 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:29:36 2004 Subject: [llvm-commits] CVS: llvm/tools/analyze/AnalysisWrappers.cpp Message-ID: <200404022056.OAA01454@zion.cs.uiuc.edu> Changes in directory llvm/tools/analyze: AnalysisWrappers.cpp updated: 1.8 -> 1.9 --- Log message: Remove obsolete analyses --- Diffs of the changes: (+1 -71) Index: llvm/tools/analyze/AnalysisWrappers.cpp diff -u llvm/tools/analyze/AnalysisWrappers.cpp:1.8 llvm/tools/analyze/AnalysisWrappers.cpp:1.9 --- llvm/tools/analyze/AnalysisWrappers.cpp:1.8 Tue Dec 23 03:41:45 2003 +++ llvm/tools/analyze/AnalysisWrappers.cpp Fri Apr 2 14:56:33 2004 @@ -17,14 +17,8 @@ // //===----------------------------------------------------------------------===// -#include "llvm/iPHINode.h" -#include "llvm/Type.h" -#include "llvm/Assembly/Writer.h" +#include "llvm/Pass.h" #include "llvm/Analysis/InstForest.h" -#include "llvm/Analysis/Expressions.h" -#include "llvm/Analysis/InductionVariable.h" -#include "llvm/Analysis/LoopInfo.h" -#include "llvm/Support/InstIterator.h" using namespace llvm; @@ -43,68 +37,4 @@ }; RegisterAnalysis P1("instforest", "InstForest Printer"); - - struct IndVars : public FunctionPass { - Function *F; - LoopInfo *LI; - virtual bool runOnFunction(Function &Func) { - F = &Func; LI = &getAnalysis(); - return false; - } - - void print(std::ostream &OS) const { - for (inst_iterator I = inst_begin(*F), E = inst_end(*F); I != E; ++I) - if (PHINode *PN = dyn_cast(*I)) { - InductionVariable IV(PN, LI); - if (IV.InductionType != InductionVariable::Unknown) - IV.print(OS); - } - } - - void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); - AU.setPreservesAll(); - } - }; - - RegisterAnalysis P6("indvars", "Induction Variable Analysis"); - - - struct Exprs : public FunctionPass { - Function *F; - virtual bool runOnFunction(Function &Func) { F = &Func; return false; } - - void print(std::ostream &OS) const { - OS << "Classified expressions for: " << F->getName() << "\n"; - for (inst_iterator I = inst_begin(*F), E = inst_end(*F); I != E; ++I) { - OS << *I; - - if ((*I)->getType() == Type::VoidTy) continue; - ExprType R = ClassifyExpr(*I); - if (R.Var == *I) continue; // Doesn't tell us anything - - OS << "\t\tExpr ="; - switch (R.ExprTy) { - case ExprType::ScaledLinear: - WriteAsOperand(OS << "(", (Value*)R.Scale) << " ) *"; - // fall through - case ExprType::Linear: - WriteAsOperand(OS << "(", R.Var) << " )"; - if (R.Offset == 0) break; - else OS << " +"; - // fall through - case ExprType::Constant: - if (R.Offset) WriteAsOperand(OS, (Value*)R.Offset); - else OS << " 0"; - break; - } - OS << "\n\n"; - } - } - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.setPreservesAll(); - } - }; - - RegisterAnalysis P7("exprs", "Expression Printer"); } From gaeke at cs.uiuc.edu Fri Apr 2 23:29:53 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 23:29:53 2004 Subject: [llvm-commits] CVS: llvm/autoconf/configure.ac Message-ID: <200404022106.PAA08264@zion.cs.uiuc.edu> Changes in directory llvm/autoconf: configure.ac updated: 1.82 -> 1.83 --- Log message: check for isatty function --- Diffs of the changes: (+1 -1) Index: llvm/autoconf/configure.ac diff -u llvm/autoconf/configure.ac:1.82 llvm/autoconf/configure.ac:1.83 --- llvm/autoconf/configure.ac:1.82 Thu Feb 26 14:22:59 2004 +++ llvm/autoconf/configure.ac Fri Apr 2 15:06:44 2004 @@ -282,7 +282,7 @@ fi AC_HEADER_MMAP_ANONYMOUS AC_TYPE_SIGNAL -AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace) +AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace isatty) AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found])) dnl Determine if the linker supports the -R option. From lattner at cs.uiuc.edu Fri Apr 2 23:32:42 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:32:42 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Analysis/ScalarEvolution.h Message-ID: <200404022046.OAA00516@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Analysis: ScalarEvolution.h updated: 1.1 -> 1.2 --- Log message: cleanup some long-dead code --- Diffs of the changes: (+1 -7) Index: llvm/include/llvm/Analysis/ScalarEvolution.h diff -u llvm/include/llvm/Analysis/ScalarEvolution.h:1.1 llvm/include/llvm/Analysis/ScalarEvolution.h:1.2 --- llvm/include/llvm/Analysis/ScalarEvolution.h:1.1 Fri Apr 2 14:23:00 2004 +++ llvm/include/llvm/Analysis/ScalarEvolution.h Fri Apr 2 14:46:26 2004 @@ -44,14 +44,8 @@ friend class SCEVHandle; void addRef() { ++RefCount; } void dropRef() { - if (--RefCount == 0) { -#if 0 - std::cerr << "DELETING: " << this << ": "; - print(std::cerr); - std::cerr << "\n"; -#endif + if (--RefCount == 0) delete this; - } } SCEV(const SCEV &); // DO NOT IMPLEMENT From gaeke at cs.uiuc.edu Fri Apr 2 23:33:00 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 23:33:00 2004 Subject: [llvm-commits] CVS: llvm/configure Message-ID: <200404022126.PAA20262@zion.cs.uiuc.edu> Changes in directory llvm: configure updated: 1.84 -> 1.85 --- Log message: Regenerated using autoconf-2.57. --- Diffs of the changes: (+2 -1) Index: llvm/configure diff -u llvm/configure:1.84 llvm/configure:1.85 --- llvm/configure:1.84 Thu Feb 26 14:22:57 2004 +++ llvm/configure Fri Apr 2 15:26:02 2004 @@ -21599,7 +21599,8 @@ -for ac_func in getcwd gettimeofday strdup strtoq strtoll backtrace + +for ac_func in getcwd gettimeofday strdup strtoq strtoll backtrace isatty do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 From gaeke at cs.uiuc.edu Fri Apr 2 23:33:16 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 23:33:16 2004 Subject: [llvm-commits] CVS: llvm/lib/Support/SystemUtils.cpp Message-ID: <200404022126.PAA20276@zion.cs.uiuc.edu> Changes in directory llvm/lib/Support: SystemUtils.cpp updated: 1.22 -> 1.23 --- Log message: Add autoconf support for isStandardOutAConsole (). --- Diffs of the changes: (+5 -1) Index: llvm/lib/Support/SystemUtils.cpp diff -u llvm/lib/Support/SystemUtils.cpp:1.22 llvm/lib/Support/SystemUtils.cpp:1.23 --- llvm/lib/Support/SystemUtils.cpp:1.22 Thu Apr 1 23:04:03 2004 +++ llvm/lib/Support/SystemUtils.cpp Fri Apr 2 15:26:04 2004 @@ -18,6 +18,7 @@ #include "Config/fcntl.h" #include "Config/sys/wait.h" #include "Config/unistd.h" +#include "Config/config.h" #include #include #include @@ -47,8 +48,11 @@ /// isStandardOutAConsole - Return true if we can tell that the standard output /// stream goes to a terminal window or console. bool llvm::isStandardOutAConsole() { - // FIXME: if we don't have isatty, just return false. +#if HAVE_ISATTY return isatty(1); +#endif + // If we don't have isatty, just return false. + return false; } From gaeke at cs.uiuc.edu Fri Apr 2 23:33:37 2004 From: gaeke at cs.uiuc.edu (Brian Gaeke) Date: Fri Apr 2 23:33:37 2004 Subject: [llvm-commits] CVS: llvm/include/Config/config.h.in Message-ID: <200404022126.PAA20269@zion.cs.uiuc.edu> Changes in directory llvm/include/Config: config.h.in updated: 1.15 -> 1.16 --- Log message: Regenerated using autoheader-2.57. --- Diffs of the changes: (+3 -0) Index: llvm/include/Config/config.h.in diff -u llvm/include/Config/config.h.in:1.15 llvm/include/Config/config.h.in:1.16 --- llvm/include/Config/config.h.in:1.15 Mon Feb 23 15:30:39 2004 +++ llvm/include/Config/config.h.in Fri Apr 2 15:26:03 2004 @@ -45,6 +45,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H +/* Define to 1 if you have the `isatty' function. */ +#undef HAVE_ISATTY + /* Define to 1 if you have the `elf' library (-lelf). */ #undef HAVE_LIBELF From lattner at cs.uiuc.edu Fri Apr 2 23:34:24 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:34:24 2004 Subject: [llvm-commits] CVS: llvm/tools/analyze/Makefile Message-ID: <200404022032.OAA32241@zion.cs.uiuc.edu> Changes in directory llvm/tools/analyze: Makefile updated: 1.20 -> 1.21 --- Log message: Tweak libraries for scev changes --- Diffs of the changes: (+2 -2) Index: llvm/tools/analyze/Makefile diff -u llvm/tools/analyze/Makefile:1.20 llvm/tools/analyze/Makefile:1.21 --- llvm/tools/analyze/Makefile:1.20 Mon Oct 20 17:27:26 2003 +++ llvm/tools/analyze/Makefile Fri Apr 2 14:32:46 2004 @@ -8,8 +8,8 @@ ##===----------------------------------------------------------------------===## LEVEL = ../.. TOOLNAME = analyze -USEDLIBS = asmparser bcreader scalaropts.a transforms.a analysis ipa \ - datastructure target.a transformutils.a scalaropts.a vmcore support +USEDLIBS = asmparser bcreader analysis ipa datastructure scalaropts.a transforms.a \ + target.a scalaropts.a transformutils.a vmcore support TOOLLINKOPTS = $(PLATFORMLIBDL) include $(LEVEL)/Makefile.common From lattner at cs.uiuc.edu Fri Apr 2 23:34:40 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:34:40 2004 Subject: [llvm-commits] CVS: poolalloc/lib/PoolAllocate/PoolAllocate.cpp Message-ID: <200404022033.OAA32259@zion.cs.uiuc.edu> Changes in directory poolalloc/lib/PoolAllocate: PoolAllocate.cpp updated: 1.66 -> 1.67 --- Log message: Tweak heuristics --- Diffs of the changes: (+8 -1) Index: poolalloc/lib/PoolAllocate/PoolAllocate.cpp diff -u poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.66 poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.67 --- poolalloc/lib/PoolAllocate/PoolAllocate.cpp:1.66 Fri Mar 5 09:09:56 2004 +++ poolalloc/lib/PoolAllocate/PoolAllocate.cpp Fri Apr 2 14:32:56 2004 @@ -565,7 +565,7 @@ case AllNodes: break; case NoNodes: ShouldPoolAlloc = false; break; case SmartCoallesceNodes: -#if 0 +#if 1 if ((*I)->isArray() && !(*I)->isNodeCompletelyFolded()) ShouldPoolAlloc = false; #endif @@ -693,6 +693,13 @@ // Update the PoolDescriptors map PoolDescriptors.insert(std::make_pair(N, AI)); +#if 1 + } else if (N->isArray() && !N->isNodeCompletelyFolded()) { + // We never pool allocate array nodes. + PoolDescriptors[N] = + Constant::getNullValue(PointerType::get(PoolDescType)); + ++NumNonprofit; +#endif } else { // Otherwise the node is not self recursive. If the node is not an // array, we can co-locate it with the pool of a predecessor node if From lattner at cs.uiuc.edu Fri Apr 2 23:36:22 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:36:22 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/LoadValueNumbering.cpp Message-ID: <200404030045.SAA27229@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: LoadValueNumbering.cpp updated: 1.17 -> 1.18 --- Log message: Implement test/Regression/Transforms/GCSE/undefined_load.ll --- Diffs of the changes: (+14 -0) Index: llvm/lib/Analysis/LoadValueNumbering.cpp diff -u llvm/lib/Analysis/LoadValueNumbering.cpp:1.17 llvm/lib/Analysis/LoadValueNumbering.cpp:1.18 --- llvm/lib/Analysis/LoadValueNumbering.cpp:1.17 Mon Mar 15 21:41:35 2004 +++ llvm/lib/Analysis/LoadValueNumbering.cpp Fri Apr 2 18:45:16 2004 @@ -22,6 +22,7 @@ //===----------------------------------------------------------------------===// #include "llvm/Analysis/LoadValueNumbering.h" +#include "llvm/Constant.h" #include "llvm/Function.h" #include "llvm/iMemory.h" #include "llvm/iOther.h" @@ -283,10 +284,14 @@ // std::map > CandidateLoads; std::map > CandidateStores; + std::set Allocations; while (!PointerSources.empty()) { Value *Source = PointerSources.back(); PointerSources.pop_back(); // Get a source pointer... + + if (AllocationInst *AI = dyn_cast(Source)) + Allocations.insert(AI); for (Value::use_iterator UI = Source->use_begin(), UE = Source->use_end(); UI != UE; ++UI) @@ -329,6 +334,15 @@ if (isa(I) && Instrs.count(I)) { RetVals.push_back(I); Instrs.erase(I); + } else if (AllocationInst *AI = dyn_cast(I)) { + // If we run into an allocation of the value being loaded, then the + // contenxt are not initialized. We can return any value, so we will + // return a zero. + if (Allocations.count(AI)) { + LoadInvalidatedInBBBefore = true; + RetVals.push_back(Constant::getNullValue(LI->getType())); + break; + } } if (AA.getModRefInfo(I, LoadPtr, LoadSize) & AliasAnalysis::Mod) { From lattner at cs.uiuc.edu Fri Apr 2 23:36:40 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:36:40 2004 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/GCSE/undefined_load.ll Message-ID: <200404030045.SAA27217@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/GCSE: undefined_load.ll added (r1.1) --- Log message: New testcase --- Diffs of the changes: (+14 -0) Index: llvm/test/Regression/Transforms/GCSE/undefined_load.ll diff -c /dev/null llvm/test/Regression/Transforms/GCSE/undefined_load.ll:1.1 *** /dev/null Fri Apr 2 18:45:06 2004 --- llvm/test/Regression/Transforms/GCSE/undefined_load.ll Fri Apr 2 18:44:56 2004 *************** *** 0 **** --- 1,14 ---- + ; RUN: llvm-as < %s | opt -load-vn -gcse | llvm-dis | not grep load + ; Test that loads of undefined memory are eliminated. + + int %test1() { + %X = malloc int + %Y = load int* %X + ret int %Y + } + int %test2() { + %X = alloca int + %Y = load int* %X + ret int %Y + } + From lattner at cs.uiuc.edu Fri Apr 2 23:36:58 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Fri Apr 2 23:36:58 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/ScalarEvolution.cpp Message-ID: <200404030043.SAA27181@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: ScalarEvolution.cpp updated: 1.2 -> 1.3 --- Log message: Add a break in the default case --- Diffs of the changes: (+1 -0) Index: llvm/lib/Analysis/ScalarEvolution.cpp diff -u llvm/lib/Analysis/ScalarEvolution.cpp:1.2 llvm/lib/Analysis/ScalarEvolution.cpp:1.3 --- llvm/lib/Analysis/ScalarEvolution.cpp:1.2 Fri Apr 2 14:26:46 2004 +++ llvm/lib/Analysis/ScalarEvolution.cpp Fri Apr 2 18:43:03 2004 @@ -1923,6 +1923,7 @@ std::cerr << *LHS << " " << Instruction::getOpcodeName(Cond) << " " << *RHS << "\n"; #endif + break; } return UnknownValue; } From lattner at cs.uiuc.edu Sat Apr 3 19:51:34 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat Apr 3 19:51:34 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Support/GetElementPtrTypeIterator.h Message-ID: <200404032329.RAA07767@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Support: GetElementPtrTypeIterator.h updated: 1.5 -> 1.6 --- Log message: Allow for use of arbitrary iterator types... --- Diffs of the changes: (+26 -19) Index: llvm/include/llvm/Support/GetElementPtrTypeIterator.h diff -u llvm/include/llvm/Support/GetElementPtrTypeIterator.h:1.5 llvm/include/llvm/Support/GetElementPtrTypeIterator.h:1.6 --- llvm/include/llvm/Support/GetElementPtrTypeIterator.h:1.5 Sun Feb 22 00:27:03 2004 +++ llvm/include/llvm/Support/GetElementPtrTypeIterator.h Sat Apr 3 17:29:11 2004 @@ -19,32 +19,33 @@ #include "llvm/DerivedTypes.h" namespace llvm { - class gep_type_iterator + template + class generic_gep_type_iterator : public forward_iterator { typedef forward_iterator super; - User::op_iterator OpIt; + ItTy OpIt; const Type *CurTy; - gep_type_iterator() {} + generic_gep_type_iterator() {} public: - static gep_type_iterator begin(const Type *Ty, User::op_iterator It) { - gep_type_iterator I; + static generic_gep_type_iterator begin(const Type *Ty, ItTy It) { + generic_gep_type_iterator I; I.CurTy = Ty; I.OpIt = It; return I; } - static gep_type_iterator end(User::op_iterator It) { - gep_type_iterator I; + static generic_gep_type_iterator end(ItTy It) { + generic_gep_type_iterator I; I.CurTy = 0; I.OpIt = It; return I; } - bool operator==(const gep_type_iterator& x) const { + bool operator==(const generic_gep_type_iterator& x) const { return OpIt == x.OpIt; } - bool operator!=(const gep_type_iterator& x) const { + bool operator!=(const generic_gep_type_iterator& x) const { return !operator==(x); } @@ -58,7 +59,7 @@ Value *getOperand() const { return *OpIt; } - gep_type_iterator& operator++() { // Preincrement + generic_gep_type_iterator& operator++() { // Preincrement if (const CompositeType *CT = dyn_cast(CurTy)) { CurTy = CT->getTypeAtIndex(getOperand()); } else { @@ -68,14 +69,16 @@ return *this; } - gep_type_iterator operator++(int) { // Postincrement - gep_type_iterator tmp = *this; ++*this; return tmp; + generic_gep_type_iterator operator++(int) { // Postincrement + generic_gep_type_iterator tmp = *this; ++*this; return tmp; } }; + typedef generic_gep_type_iterator<> gep_type_iterator; + inline gep_type_iterator gep_type_begin(User *GEP) { return gep_type_iterator::begin(GEP->getOperand(0)->getType(), - GEP->op_begin()+1); + GEP->op_begin()+1); } inline gep_type_iterator gep_type_end(User *GEP) { return gep_type_iterator::end(GEP->op_end()); @@ -87,13 +90,17 @@ inline gep_type_iterator gep_type_end(User &GEP) { return gep_type_iterator::end(GEP.op_end()); } - inline gep_type_iterator gep_type_begin(const Type *Op0, User::op_iterator I, - User::op_iterator E) { - return gep_type_iterator::begin(Op0, I); + + template + inline generic_gep_type_iterator + gep_type_begin(const Type *Op0, ItTy I, ItTy E) { + return generic_gep_type_iterator::begin(Op0, I); } - inline gep_type_iterator gep_type_end(const Type *Op0, User::op_iterator I, - User::op_iterator E) { - return gep_type_iterator::end(E); + + template + inline generic_gep_type_iterator + gep_type_end(const Type *Op0, ItTy I, ItTy E) { + return generic_gep_type_iterator::end(E); } } // end namespace llvm From lattner at cs.uiuc.edu Sat Apr 3 19:52:03 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sat Apr 3 19:52:03 2004 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Reader/InstructionReader.cpp Reader.cpp ReaderInternals.h Message-ID: <200404032343.RAA08740@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Reader: InstructionReader.cpp updated: 1.68 -> 1.69 Reader.cpp updated: 1.104 -> 1.105 ReaderInternals.h updated: 1.77 -> 1.78 --- Log message: Remove a bunch of cruft that was used to be backwards compatible with the last prerelease format for LLVM bytecode files. Now we only are compatible with LLVM 1.0+. --- Diffs of the changes: (+24 -93) Index: llvm/lib/Bytecode/Reader/InstructionReader.cpp diff -u llvm/lib/Bytecode/Reader/InstructionReader.cpp:1.68 llvm/lib/Bytecode/Reader/InstructionReader.cpp:1.69 --- llvm/lib/Bytecode/Reader/InstructionReader.cpp:1.68 Thu Mar 11 23:51:49 2004 +++ llvm/lib/Bytecode/Reader/InstructionReader.cpp Sat Apr 3 17:43:42 2004 @@ -124,34 +124,7 @@ Result = new VAArgInst(getValue(RI.Type, Args[0]), getType(Args[1])); break; case Instruction::VANext: - if (!hasOldStyleVarargs) { - Result = new VANextInst(getValue(RI.Type, Args[0]), getType(Args[1])); - } else { - // In the old-style varargs scheme, this was the "va_arg" instruction. - // Emit emulation code now. - if (!usesOldStyleVarargs) { - usesOldStyleVarargs = true; - std::cerr << "WARNING: this bytecode file uses obsolete features. " - << "Disassemble and assemble to update it.\n"; - } - - Value *VAListPtr = getValue(RI.Type, Args[0]); - const Type *ArgTy = getType(Args[1]); - - // First, load the valist... - Instruction *CurVAList = new LoadInst(VAListPtr, ""); - BB->getInstList().push_back(CurVAList); - - // Construct the vaarg - Result = new VAArgInst(CurVAList, ArgTy); - - // Now we must advance the pointer and update it in memory. - Instruction *TheVANext = new VANextInst(CurVAList, ArgTy); - BB->getInstList().push_back(TheVANext); - - BB->getInstList().push_back(new StoreInst(TheVANext, VAListPtr)); - } - + Result = new VANextInst(getValue(RI.Type, Args[0]), getType(Args[1])); break; case Instruction::Cast: Result = new CastInst(getValue(RI.Type, Args[0]), getType(Args[1])); @@ -234,21 +207,17 @@ if (It != FTy->param_end()) throw std::string("Invalid call instruction!"); } else { - Args.erase(Args.begin(), Args.begin()+1+hasVarArgCallPadding); + Args.erase(Args.begin(), Args.begin()+1); unsigned FirstVariableOperand; - if (!hasVarArgCallPadding) { - if (Args.size() < FTy->getNumParams()) - throw std::string("Call instruction missing operands!"); - - // Read all of the fixed arguments - for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i) - Params.push_back(getValue(getTypeSlot(FTy->getParamType(i)),Args[i])); - - FirstVariableOperand = FTy->getNumParams(); - } else { - FirstVariableOperand = 0; - } + if (Args.size() < FTy->getNumParams()) + throw std::string("Call instruction missing operands!"); + + // Read all of the fixed arguments + for (unsigned i = 0, e = FTy->getNumParams(); i != e; ++i) + Params.push_back(getValue(getTypeSlot(FTy->getParamType(i)),Args[i])); + + FirstVariableOperand = FTy->getNumParams(); if ((Args.size()-FirstVariableOperand) & 1) // Must be pairs of type/value throw std::string("Invalid call instruction!"); @@ -286,28 +255,16 @@ if (It != FTy->param_end()) throw std::string("Invalid invoke instruction!"); } else { - Args.erase(Args.begin(), Args.begin()+1+hasVarArgCallPadding); - - unsigned FirstVariableArgument; - if (!hasVarArgCallPadding) { - Normal = getBasicBlock(Args[0]); - Except = getBasicBlock(Args[1]); - - FirstVariableArgument = FTy->getNumParams()+2; - for (unsigned i = 2; i != FirstVariableArgument; ++i) - Params.push_back(getValue(getTypeSlot(FTy->getParamType(i-2)), - Args[i])); - - } else { - if (Args.size() < 4) throw std::string("Invalid invoke instruction!"); - if (Args[0] != Type::LabelTyID || Args[2] != Type::LabelTyID) - throw std::string("Invalid invoke instruction!"); - Normal = getBasicBlock(Args[1]); - Except = getBasicBlock(Args[3]); - - FirstVariableArgument = 4; - } + Args.erase(Args.begin(), Args.begin()+1); + Normal = getBasicBlock(Args[0]); + Except = getBasicBlock(Args[1]); + + unsigned FirstVariableArgument = FTy->getNumParams()+2; + for (unsigned i = 2; i != FirstVariableArgument; ++i) + Params.push_back(getValue(getTypeSlot(FTy->getParamType(i-2)), + Args[i])); + if (Args.size()-FirstVariableArgument & 1) // Must be pairs of type/value throw std::string("Invalid invoke instruction!"); Index: llvm/lib/Bytecode/Reader/Reader.cpp diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.104 llvm/lib/Bytecode/Reader/Reader.cpp:1.105 --- llvm/lib/Bytecode/Reader/Reader.cpp:1.104 Sun Mar 28 18:16:01 2004 +++ llvm/lib/Bytecode/Reader/Reader.cpp Sat Apr 3 17:43:42 2004 @@ -353,8 +353,7 @@ GlobalValue::LinkageTypes Linkage = GlobalValue::ExternalLinkage; unsigned LinkageType = read_vbr_uint(Buf, EndBuf); - if ((!hasExtendedLinkageSpecs && LinkageType > 3) || - ( hasExtendedLinkageSpecs && LinkageType > 4)) + if (LinkageType > 4) throw std::string("Invalid linkage type for Function."); switch (LinkageType) { case 0: Linkage = GlobalValue::ExternalLinkage; break; @@ -553,21 +552,12 @@ // Read global variables... unsigned VarType = read_vbr_uint(Buf, End); while (VarType != Type::VoidTyID) { // List is terminated by Void - unsigned SlotNo; + // VarType Fields: bit0 = isConstant, bit1 = hasInitializer, bit2,3,4 = + // Linkage, bit4+ = slot# + unsigned SlotNo = VarType >> 5; + unsigned LinkageID = (VarType >> 2) & 7; GlobalValue::LinkageTypes Linkage; - unsigned LinkageID; - if (hasExtendedLinkageSpecs) { - // VarType Fields: bit0 = isConstant, bit1 = hasInitializer, - // bit2,3,4 = Linkage, bit4+ = slot# - SlotNo = VarType >> 5; - LinkageID = (VarType >> 2) & 7; - } else { - // VarType Fields: bit0 = isConstant, bit1 = hasInitializer, - // bit2,3 = Linkage, bit4+ = slot# - SlotNo = VarType >> 4; - LinkageID = (VarType >> 2) & 3; - } switch (LinkageID) { default: assert(0 && "Unknown linkage type!"); case 0: Linkage = GlobalValue::ExternalLinkage; break; @@ -655,20 +645,10 @@ RevisionNum = Version >> 4; // Default values for the current bytecode version - hasExtendedLinkageSpecs = true; - hasOldStyleVarargs = false; - hasVarArgCallPadding = false; hasInconsistentModuleGlobalInfo = false; hasExplicitPrimitiveZeros = false; switch (RevisionNum) { - case 2: // LLVM pre-1.0 release: will be deleted on the next rev - // Version #2 only supported 4 linkage types. It didn't support weak - // linkage. - hasExtendedLinkageSpecs = false; - hasOldStyleVarargs = true; - hasVarArgCallPadding = true; - // FALL THROUGH case 0: // LLVM 1.0, 1.1 release version // Compared to rev #2, we added support for weak linkage, a more dense // encoding, and better varargs support. @@ -789,7 +769,6 @@ TheModule = new Module(ModuleID); try { - usesOldStyleVarargs = false; ParseModule(Buf, EndBuf); } catch (std::string &Error) { freeState(); // Must destroy handles before deleting module! Index: llvm/lib/Bytecode/Reader/ReaderInternals.h diff -u llvm/lib/Bytecode/Reader/ReaderInternals.h:1.77 llvm/lib/Bytecode/Reader/ReaderInternals.h:1.78 --- llvm/lib/Bytecode/Reader/ReaderInternals.h:1.77 Wed Jan 21 16:55:34 2004 +++ llvm/lib/Bytecode/Reader/ReaderInternals.h Sat Apr 3 17:43:42 2004 @@ -97,11 +97,6 @@ // Information about the module, extracted from the bytecode revision number. unsigned char RevisionNum; // The rev # itself - bool hasExtendedLinkageSpecs; // Supports more than 4 linkage types - bool hasOldStyleVarargs; // Has old version of varargs intrinsics? - bool hasVarArgCallPadding; // Bytecode has extra padding in vararg call - - bool usesOldStyleVarargs; // Does this module USE old style varargs? // Flags to distinguish LLVM 1.0 & 1.1 bytecode formats (revision #0) From lattner at cs.uiuc.edu Sun Apr 4 12:31:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 12:31:01 2004 Subject: [llvm-commits] CVS: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h Message-ID: <200404041730.MAA27331@zion.cs.uiuc.edu> Changes in directory llvm/lib/ExecutionEngine/Interpreter: Interpreter.h updated: 1.61 -> 1.62 --- Log message: Adjust to new gep_type_iterator prototypes. --- Diffs of the changes: (+3 -1) Index: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h diff -u llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.61 llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.62 --- llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.61 Thu Feb 26 01:59:22 2004 +++ llvm/lib/ExecutionEngine/Interpreter/Interpreter.h Sun Apr 4 12:30:06 2004 @@ -25,8 +25,10 @@ namespace llvm { struct FunctionInfo; -class gep_type_iterator; +template class generic_gep_type_iterator; class ConstantExpr; +typedef generic_gep_type_iterator gep_type_iterator; + // AllocaHolder - Object to track all of the blocks of memory allocated by // alloca. When the function returns, this object is popped off the execution From lattner at cs.uiuc.edu Sun Apr 4 14:47:16 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 14:47:16 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Support/GetElementPtrTypeIterator.h Message-ID: <200404041947.OAA00900@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm/Support: GetElementPtrTypeIterator.h updated: 1.6 -> 1.7 --- Log message: Support iteration over constant instructions --- Diffs of the changes: (+5 -5) Index: llvm/include/llvm/Support/GetElementPtrTypeIterator.h diff -u llvm/include/llvm/Support/GetElementPtrTypeIterator.h:1.6 llvm/include/llvm/Support/GetElementPtrTypeIterator.h:1.7 --- llvm/include/llvm/Support/GetElementPtrTypeIterator.h:1.6 Sat Apr 3 17:29:11 2004 +++ llvm/include/llvm/Support/GetElementPtrTypeIterator.h Sun Apr 4 14:46:54 2004 @@ -19,7 +19,7 @@ #include "llvm/DerivedTypes.h" namespace llvm { - template + template class generic_gep_type_iterator : public forward_iterator { typedef forward_iterator super; @@ -76,18 +76,18 @@ typedef generic_gep_type_iterator<> gep_type_iterator; - inline gep_type_iterator gep_type_begin(User *GEP) { + inline gep_type_iterator gep_type_begin(const User *GEP) { return gep_type_iterator::begin(GEP->getOperand(0)->getType(), GEP->op_begin()+1); } - inline gep_type_iterator gep_type_end(User *GEP) { + inline gep_type_iterator gep_type_end(const User *GEP) { return gep_type_iterator::end(GEP->op_end()); } - inline gep_type_iterator gep_type_begin(User &GEP) { + inline gep_type_iterator gep_type_begin(const User &GEP) { return gep_type_iterator::begin(GEP.getOperand(0)->getType(), GEP.op_begin()+1); } - inline gep_type_iterator gep_type_end(User &GEP) { + inline gep_type_iterator gep_type_end(const User &GEP) { return gep_type_iterator::end(GEP.op_end()); } From lattner at cs.uiuc.edu Sun Apr 4 14:48:18 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 14:48:18 2004 Subject: [llvm-commits] CVS: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h Message-ID: <200404041947.OAA00912@zion.cs.uiuc.edu> Changes in directory llvm/lib/ExecutionEngine/Interpreter: Interpreter.h updated: 1.62 -> 1.63 --- Log message: Adjust to new interface --- Diffs of the changes: (+1 -1) Index: llvm/lib/ExecutionEngine/Interpreter/Interpreter.h diff -u llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.62 llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.63 --- llvm/lib/ExecutionEngine/Interpreter/Interpreter.h:1.62 Sun Apr 4 12:30:06 2004 +++ llvm/lib/ExecutionEngine/Interpreter/Interpreter.h Sun Apr 4 14:47:06 2004 @@ -27,7 +27,7 @@ struct FunctionInfo; template class generic_gep_type_iterator; class ConstantExpr; -typedef generic_gep_type_iterator gep_type_iterator; +typedef generic_gep_type_iterator gep_type_iterator; // AllocaHolder - Object to track all of the blocks of memory allocated by From lattner at cs.uiuc.edu Sun Apr 4 15:45:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 15:45:01 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp Message-ID: <200404042044.PAA06837@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/SparcV9: SparcV9PreSelection.cpp updated: 1.30 -> 1.31 --- Log message: In the perhaps not-to-distant future, we might support gep instructions that have non-long indices for sequential types. In order to avoid trying to figure out how the v9 backend works, we'll just hack it in the preselection pass. --- Diffs of the changes: (+20 -5) Index: llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp diff -u llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp:1.30 llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp:1.31 --- llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp:1.30 Fri Apr 2 11:52:29 2004 +++ llvm/lib/Target/SparcV9/SparcV9PreSelection.cpp Sun Apr 4 15:44:05 2004 @@ -24,12 +24,12 @@ #include "llvm/Module.h" #include "llvm/Pass.h" #include "llvm/Support/InstVisitor.h" +#include "llvm/Support/GetElementPtrTypeIterator.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Transforms/Scalar.h" #include - -namespace llvm { +using namespace llvm; namespace { @@ -228,6 +228,23 @@ void PreSelection::visitGetElementPtrInst(GetElementPtrInst &I) { Instruction* curI = &I; + // The Sparc backend doesn't handle array indexes that are not long types, so + // insert a cast from whatever it is to long, if the sequential type index is + // not a long already. + unsigned Idx = 1; + for (gep_type_iterator TI = gep_type_begin(I), E = gep_type_end(I); TI != E; + ++TI, ++Idx) + if (isa(*TI) && + I.getOperand(Idx)->getType() != Type::LongTy) { + Value *Op = I.getOperand(Idx); + if (Op->getType()->isUnsigned()) // Must sign extend! + Op = new CastInst(Op, Op->getType()->getSignedVersion(), "v9", &I); + if (Op->getType() != Type::LongTy) + Op = new CastInst(Op, Type::LongTy, "v9", &I); + I.setOperand(Idx, Op); + } + + // Decompose multidimensional array references if (I.getNumIndices() >= 2) { // DecomposeArrayRef() replaces I and deletes it, if successful, @@ -251,8 +268,6 @@ /// createPreSelectionPass - Public entry point for the PreSelection pass /// -FunctionPass* createPreSelectionPass(const TargetMachine &TM) { +FunctionPass* llvm::createPreSelectionPass(const TargetMachine &TM) { return new PreSelection(TM); } - -} // End llvm namespace From lattner at cs.uiuc.edu Sun Apr 4 18:21:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 18:21:01 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/Constants.h Message-ID: <200404042320.SAA04333@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: Constants.h updated: 1.45 -> 1.46 --- Log message: Add ConstantExpr::get(Sign|Zero)Extend methods --- Diffs of the changes: (+2 -0) Index: llvm/include/llvm/Constants.h diff -u llvm/include/llvm/Constants.h:1.45 llvm/include/llvm/Constants.h:1.46 --- llvm/include/llvm/Constants.h:1.45 Sun Mar 28 20:37:17 2004 +++ llvm/include/llvm/Constants.h Sun Apr 4 18:20:26 2004 @@ -544,6 +544,8 @@ /// Cast constant expr /// static Constant *getCast(Constant *C, const Type *Ty); + static Constant *getSignExtend(Constant *C, const Type *Ty); + static Constant *getZeroExtend(Constant *C, const Type *Ty); /// Select constant expr /// From lattner at cs.uiuc.edu Sun Apr 4 18:21:21 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 18:21:21 2004 Subject: [llvm-commits] CVS: llvm/lib/VMCore/Constants.cpp Message-ID: <200404042320.SAA04340@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: Constants.cpp updated: 1.86 -> 1.87 --- Log message: Add ConstantExpr::get(Sign|Zero)Extend methods --- Diffs of the changes: (+16 -0) Index: llvm/lib/VMCore/Constants.cpp diff -u llvm/lib/VMCore/Constants.cpp:1.86 llvm/lib/VMCore/Constants.cpp:1.87 --- llvm/lib/VMCore/Constants.cpp:1.86 Tue Mar 30 20:56:11 2004 +++ llvm/lib/VMCore/Constants.cpp Sun Apr 4 18:20:30 2004 @@ -1131,6 +1131,22 @@ return ExprConstants.getOrCreate(Ty, Key); } +Constant *ConstantExpr::getSignExtend(Constant *C, const Type *Ty) { + assert(C->getType()->isInteger() && Ty->isInteger() && + C->getType()->getPrimitiveSize() <= Ty->getPrimitiveSize() && + "This is an illegal sign extension!"); + C = ConstantExpr::getCast(C, C->getType()->getSignedVersion()); + return ConstantExpr::getCast(C, Ty); +} + +Constant *ConstantExpr::getZeroExtend(Constant *C, const Type *Ty) { + assert(C->getType()->isInteger() && Ty->isInteger() && + C->getType()->getPrimitiveSize() <= Ty->getPrimitiveSize() && + "This is an illegal zero extension!"); + C = ConstantExpr::getCast(C, C->getType()->getUnsignedVersion()); + return ConstantExpr::getCast(C, Ty); +} + Constant *ConstantExpr::getTy(const Type *ReqTy, unsigned Opcode, Constant *C1, Constant *C2) { if (Opcode == Instruction::Shl || Opcode == Instruction::Shr) From lattner at cs.uiuc.edu Sun Apr 4 19:41:00 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 19:41:00 2004 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200404050041.TAA13473@zion.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.159 -> 1.160 --- Log message: PR305: http://llvm.cs.uiuc.edu/PR305 is now fixed --- Diffs of the changes: (+2 -2) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.159 llvm/docs/ReleaseNotes.html:1.160 --- llvm/docs/ReleaseNotes.html:1.159 Thu Apr 1 14:31:29 2004 +++ llvm/docs/ReleaseNotes.html Sun Apr 4 19:40:55 2004 @@ -108,7 +108,7 @@

      -
    1. +
    2. LLVM tools will happily spew bytecode onto your terminal
    @@ -562,7 +562,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/04/01 20:31:29 $ + Last modified: $Date: 2004/04/05 00:40:55 $ From lattner at cs.uiuc.edu Sun Apr 4 20:26:02 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:26:02 2004 Subject: [llvm-commits] CVS: llvm/include/llvm/DerivedTypes.h Message-ID: <200404050125.UAA20182@zion.cs.uiuc.edu> Changes in directory llvm/include/llvm: DerivedTypes.h updated: 1.55 -> 1.56 --- Log message: Be more restrictive with the index types we allow for sequential types --- Diffs of the changes: (+10 -1) Index: llvm/include/llvm/DerivedTypes.h diff -u llvm/include/llvm/DerivedTypes.h:1.55 llvm/include/llvm/DerivedTypes.h:1.56 --- llvm/include/llvm/DerivedTypes.h:1.55 Mon Feb 16 20:58:36 2004 +++ llvm/include/llvm/DerivedTypes.h Sun Apr 4 20:25:21 2004 @@ -263,7 +263,16 @@ return ContainedTys[0]; } virtual bool indexValid(const Value *V) const { - return V->getType()->isInteger(); + const Type *Ty = V->getType(); + switch (Ty->getPrimitiveID()) { + case Type::IntTyID: + case Type::UIntTyID: + case Type::LongTyID: + case Type::ULongTyID: + return true; + default: + return false; + } } // Methods for support type inquiry through isa, cast, and dyn_cast: From lattner at cs.uiuc.edu Sun Apr 4 20:28:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:28:01 2004 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Reader/ConstantReader.cpp InstructionReader.cpp Reader.cpp ReaderInternals.h Message-ID: <200404050127.UAA20642@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Reader: ConstantReader.cpp updated: 1.75 -> 1.76 InstructionReader.cpp updated: 1.69 -> 1.70 Reader.cpp updated: 1.105 -> 1.106 ReaderInternals.h updated: 1.78 -> 1.79 --- Log message: Implement support for a new LLVM 1.3 bytecode format, which uses uint's to index into structure types and allows arbitrary 32- and 64-bit integer types to index into sequential types. --- Diffs of the changes: (+59 -7) Index: llvm/lib/Bytecode/Reader/ConstantReader.cpp diff -u llvm/lib/Bytecode/Reader/ConstantReader.cpp:1.75 llvm/lib/Bytecode/Reader/ConstantReader.cpp:1.76 --- llvm/lib/Bytecode/Reader/ConstantReader.cpp:1.75 Tue Mar 30 20:53:59 2004 +++ llvm/lib/Bytecode/Reader/ConstantReader.cpp Sun Apr 4 20:27:22 2004 @@ -15,6 +15,7 @@ #include "ReaderInternals.h" #include "llvm/Module.h" #include "llvm/Constants.h" +#include "llvm/Support/GetElementPtrTypeIterator.h" #include using namespace llvm; @@ -164,6 +165,20 @@ return ConstantExpr::getCast(ArgVec[0], getType(TypeID)); } else if (Opcode == Instruction::GetElementPtr) { // GetElementPtr std::vector IdxList(ArgVec.begin()+1, ArgVec.end()); + + if (hasRestrictedGEPTypes) { + const Type *BaseTy = ArgVec[0]->getType(); + generic_gep_type_iterator::iterator> + GTI = gep_type_begin(BaseTy, IdxList.begin(), IdxList.end()), + E = gep_type_end(BaseTy, IdxList.begin(), IdxList.end()); + for (unsigned i = 0; GTI != E; ++GTI, ++i) + if (isa(*GTI)) { + if (IdxList[i]->getType() != Type::UByteTy) + throw std::string("Invalid index for getelementptr!"); + IdxList[i] = ConstantExpr::getCast(IdxList[i], Type::UIntTy); + } + } + return ConstantExpr::getGetElementPtr(ArgVec[0], IdxList); } else if (Opcode == Instruction::Select) { assert(ArgVec.size() == 3); Index: llvm/lib/Bytecode/Reader/InstructionReader.cpp diff -u llvm/lib/Bytecode/Reader/InstructionReader.cpp:1.69 llvm/lib/Bytecode/Reader/InstructionReader.cpp:1.70 --- llvm/lib/Bytecode/Reader/InstructionReader.cpp:1.69 Sat Apr 3 17:43:42 2004 +++ llvm/lib/Bytecode/Reader/InstructionReader.cpp Sun Apr 4 20:27:22 2004 @@ -308,10 +308,35 @@ for (unsigned i = 1, e = Args.size(); i != e; ++i) { const CompositeType *TopTy = dyn_cast_or_null(NextTy); if (!TopTy) throw std::string("Invalid getelementptr instruction!"); - // FIXME: when PR82 is resolved. - unsigned IdxTy = isa(TopTy) ? Type::UByteTyID :Type::LongTyID; - - Idx.push_back(getValue(IdxTy, Args[i])); + + unsigned ValIdx = Args[i]; + unsigned IdxTy; + if (!hasRestrictedGEPTypes) { + // Struct indices are always uints, sequential type indices can be any + // of the 32 or 64-bit integer types. The actual choice of type is + // encoded in the low two bits of the slot number. + if (isa(TopTy)) + IdxTy = Type::UIntTyID; + else { + switch (ValIdx & 3) { + case 0: IdxTy = Type::UIntTyID; break; + case 1: IdxTy = Type::IntTyID; break; + case 2: IdxTy = Type::ULongTyID; break; + case 3: IdxTy = Type::LongTyID; break; + } + ValIdx >>= 2; + } + } else { + IdxTy = isa(TopTy) ? Type::UByteTyID : Type::LongTyID; + } + + Idx.push_back(getValue(IdxTy, ValIdx)); + + // Convert ubyte struct indices into uint struct indices. + if (isa(TopTy) && hasRestrictedGEPTypes) + if (ConstantUInt *C = dyn_cast(Idx.back())) + Idx[Idx.size()-1] = ConstantExpr::getCast(C, Type::UIntTy); + NextTy = GetElementPtrInst::getIndexedType(InstTy, Idx, true); } Index: llvm/lib/Bytecode/Reader/Reader.cpp diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.105 llvm/lib/Bytecode/Reader/Reader.cpp:1.106 --- llvm/lib/Bytecode/Reader/Reader.cpp:1.105 Sat Apr 3 17:43:42 2004 +++ llvm/lib/Bytecode/Reader/Reader.cpp Sun Apr 4 20:27:22 2004 @@ -647,12 +647,10 @@ // Default values for the current bytecode version hasInconsistentModuleGlobalInfo = false; hasExplicitPrimitiveZeros = false; + hasRestrictedGEPTypes = false; switch (RevisionNum) { case 0: // LLVM 1.0, 1.1 release version - // Compared to rev #2, we added support for weak linkage, a more dense - // encoding, and better varargs support. - // Base LLVM 1.0 bytecode format. hasInconsistentModuleGlobalInfo = true; hasExplicitPrimitiveZeros = true; @@ -663,6 +661,13 @@ // Also, it fixed the problem where the size of the ModuleGlobalInfo block // included the size for the alignment at the end, where the rest of the // blocks did not. + + // LLVM 1.2 and before required that GEP indices be ubyte constants for + // structures and longs for sequential types. + hasRestrictedGEPTypes = true; + + // FALL THROUGH + case 2: // LLVM 1.3 release version break; default: Index: llvm/lib/Bytecode/Reader/ReaderInternals.h diff -u llvm/lib/Bytecode/Reader/ReaderInternals.h:1.78 llvm/lib/Bytecode/Reader/ReaderInternals.h:1.79 --- llvm/lib/Bytecode/Reader/ReaderInternals.h:1.78 Sat Apr 3 17:43:42 2004 +++ llvm/lib/Bytecode/Reader/ReaderInternals.h Sun Apr 4 20:27:22 2004 @@ -108,6 +108,13 @@ // int/sbyte/etc. bool hasExplicitPrimitiveZeros; + // Flags to control features specific the LLVM 1.2 and before (revision #1) + + // LLVM 1.2 and earlier required that getelementptr structure indices were + // ubyte constants and that sequential type indices were longs. + bool hasRestrictedGEPTypes; + + typedef std::vector ValueTable; ValueTable Values; ValueTable ModuleValues; From lattner at cs.uiuc.edu Sun Apr 4 20:28:18 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:28:18 2004 Subject: [llvm-commits] CVS: llvm/lib/Bytecode/Writer/InstructionWriter.cpp Writer.cpp Message-ID: <200404050127.UAA20652@zion.cs.uiuc.edu> Changes in directory llvm/lib/Bytecode/Writer: InstructionWriter.cpp updated: 1.40 -> 1.41 Writer.cpp updated: 1.61 -> 1.62 --- Log message: Implement support for a new LLVM 1.3 bytecode format, which uses uint's to index into structure types and allows arbitrary 32- and 64-bit integer types to index into sequential types. --- Diffs of the changes: (+131 -79) Index: llvm/lib/Bytecode/Writer/InstructionWriter.cpp diff -u llvm/lib/Bytecode/Writer/InstructionWriter.cpp:1.40 llvm/lib/Bytecode/Writer/InstructionWriter.cpp:1.41 --- llvm/lib/Bytecode/Writer/InstructionWriter.cpp:1.40 Thu Mar 11 23:52:01 2004 +++ llvm/lib/Bytecode/Writer/InstructionWriter.cpp Sun Apr 4 20:27:26 2004 @@ -16,6 +16,7 @@ #include "llvm/Module.h" #include "llvm/DerivedTypes.h" #include "llvm/Instructions.h" +#include "llvm/Support/GetElementPtrTypeIterator.h" #include "Support/Statistic.h" #include using namespace llvm; @@ -38,20 +39,48 @@ output_vbr(NumArgs + (isa(I) || isa(I) || isa(I)), Out); - for (unsigned i = 0; i < NumArgs; ++i) { - int Slot = Table.getSlot(I->getOperand(i)); + if (!isa(&I)) { + for (unsigned i = 0; i < NumArgs; ++i) { + int Slot = Table.getSlot(I->getOperand(i)); + assert(Slot >= 0 && "No slot number for value!?!?"); + output_vbr((unsigned)Slot, Out); + } + + if (isa(I) || isa(I)) { + int Slot = Table.getSlot(I->getType()); + assert(Slot != -1 && "Cast return type unknown?"); + output_vbr((unsigned)Slot, Out); + } else if (const VANextInst *VAI = dyn_cast(I)) { + int Slot = Table.getSlot(VAI->getArgType()); + assert(Slot != -1 && "VarArg argument type unknown?"); + output_vbr((unsigned)Slot, Out); + } + + } else { + int Slot = Table.getSlot(I->getOperand(0)); assert(Slot >= 0 && "No slot number for value!?!?"); - output_vbr((unsigned)Slot, Out); - } + output_vbr(unsigned(Slot), Out); - if (isa(I) || isa(I)) { - int Slot = Table.getSlot(I->getType()); - assert(Slot != -1 && "Cast return type unknown?"); - output_vbr((unsigned)Slot, Out); - } else if (const VANextInst *VAI = dyn_cast(I)) { - int Slot = Table.getSlot(VAI->getArgType()); - assert(Slot != -1 && "VarArg argument type unknown?"); - output_vbr((unsigned)Slot, Out); + // We need to encode the type of sequential type indices into their slot # + unsigned Idx = 1; + for (gep_type_iterator TI = gep_type_begin(I), E = gep_type_end(I); + Idx != NumArgs; ++TI, ++Idx) { + Slot = Table.getSlot(I->getOperand(Idx)); + assert(Slot >= 0 && "No slot number for value!?!?"); + + if (isa(*TI)) { + unsigned IdxId; + switch (I->getOperand(Idx)->getType()->getPrimitiveID()) { + default: assert(0 && "Unknown index type!"); + case Type::UIntTyID: IdxId = 0; break; + case Type::IntTyID: IdxId = 1; break; + case Type::ULongTyID: IdxId = 2; break; + case Type::LongTyID: IdxId = 3; break; + } + Slot = (Slot << 2) | IdxId; + } + output_vbr(unsigned(Slot), Out); + } } align32(Out); // We must maintain correct alignment! @@ -119,8 +148,9 @@ // operand index is >= 2^12. // static void outputInstructionFormat1(const Instruction *I, unsigned Opcode, - const SlotCalculator &Table, int *Slots, - unsigned Type, std::deque &Out) { + const SlotCalculator &Table, + unsigned *Slots, unsigned Type, + std::deque &Out) { // bits Instruction format: // -------------------------- // 01-00: Opcode type, fixed to 1. @@ -138,8 +168,9 @@ // operand index is >= 2^8. // static void outputInstructionFormat2(const Instruction *I, unsigned Opcode, - const SlotCalculator &Table, int *Slots, - unsigned Type, std::deque &Out) { + const SlotCalculator &Table, + unsigned *Slots, unsigned Type, + std::deque &Out) { // bits Instruction format: // -------------------------- // 01-00: Opcode type, fixed to 2. @@ -160,8 +191,9 @@ // operand index is >= 2^6. // static void outputInstructionFormat3(const Instruction *I, unsigned Opcode, - const SlotCalculator &Table, int *Slots, - unsigned Type, std::deque &Out) { + const SlotCalculator &Table, + unsigned *Slots, unsigned Type, + std::deque &Out) { // bits Instruction format: // -------------------------- // 01-00: Opcode type, fixed to 3. @@ -181,6 +213,7 @@ void BytecodeWriter::outputInstruction(const Instruction &I) { assert(I.getOpcode() < 62 && "Opcode too big???"); unsigned Opcode = I.getOpcode(); + unsigned NumOperands = I.getNumOperands(); // Encode 'volatile load' as 62 and 'volatile store' as 63. if (isa(I) && cast(I).isVolatile()) @@ -188,17 +221,6 @@ if (isa(I) && cast(I).isVolatile()) Opcode = 63; - unsigned NumOperands = I.getNumOperands(); - int MaxOpSlot = 0; - int Slots[3]; Slots[0] = (1 << 12)-1; // Marker to signify 0 operands - - for (unsigned i = 0; i != NumOperands; ++i) { - int slot = Table.getSlot(I.getOperand(i)); - assert(slot != -1 && "Broken bytecode!"); - if (slot > MaxOpSlot) MaxOpSlot = slot; - if (i < 3) Slots[i] = slot; - } - // Figure out which type to encode with the instruction. Typically we want // the type of the first parameter, as opposed to the type of the instruction // (for example, with setcc, we always know it returns bool, but the type of @@ -226,71 +248,101 @@ assert(Slot != -1 && "Type not available!!?!"); Type = (unsigned)Slot; - // Make sure that we take the type number into consideration. We don't want - // to overflow the field size for the instruction format we select. - // - if (Slot > MaxOpSlot) MaxOpSlot = Slot; - - // Handle the special case for cast... - if (isa(I) || isa(I)) { - // Cast has to encode the destination type as the second argument in the - // packet, or else we won't know what type to cast to! - Slots[1] = Table.getSlot(I.getType()); - assert(Slots[1] != -1 && "Cast return type unknown?"); - if (Slots[1] > MaxOpSlot) MaxOpSlot = Slots[1]; - NumOperands++; - } else if (const VANextInst *VANI = dyn_cast(&I)) { - Slots[1] = Table.getSlot(VANI->getArgType()); - assert(Slots[1] != -1 && "va_next return type unknown?"); - if (Slots[1] > MaxOpSlot) MaxOpSlot = Slots[1]; - NumOperands++; - } else if (const CallInst *CI = dyn_cast(&I)){// Handle VarArg calls - const PointerType *Ty = cast(CI->getCalledValue()->getType()); + // Varargs calls and invokes are encoded entirely different from any other + // instructions. + if (const CallInst *CI = dyn_cast(&I)){ + const PointerType *Ty =cast(CI->getCalledValue()->getType()); if (cast(Ty->getElementType())->isVarArg()) { outputInstrVarArgsCall(CI, Opcode, Table, Type, Out); return; } - } else if (const InvokeInst *II = dyn_cast(&I)) {// ... & Invokes - const PointerType *Ty = cast(II->getCalledValue()->getType()); + } else if (const InvokeInst *II = dyn_cast(&I)) { + const PointerType *Ty =cast(II->getCalledValue()->getType()); if (cast(Ty->getElementType())->isVarArg()) { outputInstrVarArgsCall(II, Opcode, Table, Type, Out); return; } } - // Decide which instruction encoding to use. This is determined primarily by - // the number of operands, and secondarily by whether or not the max operand - // will fit into the instruction encoding. More operands == fewer bits per - // operand. - // - switch (NumOperands) { - case 0: - case 1: - if (MaxOpSlot < (1 << 12)-1) { // -1 because we use 4095 to indicate 0 ops - outputInstructionFormat1(&I, Opcode, Table, Slots, Type, Out); - return; + if (NumOperands <= 3) { + // Make sure that we take the type number into consideration. We don't want + // to overflow the field size for the instruction format we select. + // + unsigned MaxOpSlot = Type; + unsigned Slots[3]; Slots[0] = (1 << 12)-1; // Marker to signify 0 operands + + for (unsigned i = 0; i != NumOperands; ++i) { + int slot = Table.getSlot(I.getOperand(i)); + assert(slot != -1 && "Broken bytecode!"); + if (unsigned(slot) > MaxOpSlot) MaxOpSlot = unsigned(slot); + Slots[i] = unsigned(slot); } - break; - case 2: - if (MaxOpSlot < (1 << 8)) { - outputInstructionFormat2(&I, Opcode, Table, Slots, Type, Out); - return; + // Handle the special cases for various instructions... + if (isa(I) || isa(I)) { + // Cast has to encode the destination type as the second argument in the + // packet, or else we won't know what type to cast to! + Slots[1] = Table.getSlot(I.getType()); + assert(Slots[1] != ~0U && "Cast return type unknown?"); + if (Slots[1] > MaxOpSlot) MaxOpSlot = Slots[1]; + NumOperands++; + } else if (const VANextInst *VANI = dyn_cast(&I)) { + Slots[1] = Table.getSlot(VANI->getArgType()); + assert(Slots[1] != ~0U && "va_next return type unknown?"); + if (Slots[1] > MaxOpSlot) MaxOpSlot = Slots[1]; + NumOperands++; + } else if (const GetElementPtrInst *GEP = dyn_cast(&I)) { + // We need to encode the type of sequential type indices into their slot # + unsigned Idx = 1; + for (gep_type_iterator I = gep_type_begin(GEP), E = gep_type_end(GEP); + I != E; ++I, ++Idx) + if (isa(*I)) { + unsigned IdxId; + switch (GEP->getOperand(Idx)->getType()->getPrimitiveID()) { + default: assert(0 && "Unknown index type!"); + case Type::UIntTyID: IdxId = 0; break; + case Type::IntTyID: IdxId = 1; break; + case Type::ULongTyID: IdxId = 2; break; + case Type::LongTyID: IdxId = 3; break; + } + Slots[Idx] = (Slots[Idx] << 2) | IdxId; + if (Slots[Idx] > MaxOpSlot) MaxOpSlot = Slots[Idx]; + } } - break; - case 3: - if (MaxOpSlot < (1 << 6)) { - outputInstructionFormat3(&I, Opcode, Table, Slots, Type, Out); - return; + // Decide which instruction encoding to use. This is determined primarily + // by the number of operands, and secondarily by whether or not the max + // operand will fit into the instruction encoding. More operands == fewer + // bits per operand. + // + switch (NumOperands) { + case 0: + case 1: + if (MaxOpSlot < (1 << 12)-1) { // -1 because we use 4095 to indicate 0 ops + outputInstructionFormat1(&I, Opcode, Table, Slots, Type, Out); + return; + } + break; + + case 2: + if (MaxOpSlot < (1 << 8)) { + outputInstructionFormat2(&I, Opcode, Table, Slots, Type, Out); + return; + } + break; + + case 3: + if (MaxOpSlot < (1 << 6)) { + outputInstructionFormat3(&I, Opcode, Table, Slots, Type, Out); + return; + } + break; + default: + break; } - break; - default: - break; } // If we weren't handled before here, we either have a large number of // operands or a large operand index that we are referring to. outputInstructionFormat0(&I, Opcode, Table, Type, Out); } - Index: llvm/lib/Bytecode/Writer/Writer.cpp diff -u llvm/lib/Bytecode/Writer/Writer.cpp:1.61 llvm/lib/Bytecode/Writer/Writer.cpp:1.62 --- llvm/lib/Bytecode/Writer/Writer.cpp:1.61 Sat Jan 31 19:50:31 2004 +++ llvm/lib/Bytecode/Writer/Writer.cpp Sun Apr 4 20:27:26 2004 @@ -54,9 +54,9 @@ bool hasNoEndianness = M->getEndianness() == Module::AnyEndianness; bool hasNoPointerSize = M->getPointerSize() == Module::AnyPointerSize; - // Output the version identifier... we are currently on bytecode version #1, - // which corresponds to LLVM v1.2. - unsigned Version = (1 << 4) | isBigEndian | (hasLongPointers << 1) | + // Output the version identifier... we are currently on bytecode version #2, + // which corresponds to LLVM v1.3. + unsigned Version = (2 << 4) | isBigEndian | (hasLongPointers << 1) | (hasNoEndianness << 2) | (hasNoPointerSize << 3); output_vbr(Version, Out); align32(Out); From lattner at cs.uiuc.edu Sun Apr 4 20:29:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:29:01 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/BasicAliasAnalysis.cpp Message-ID: <200404050128.UAA20667@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis: BasicAliasAnalysis.cpp updated: 1.35 -> 1.36 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+35 -14) Index: llvm/lib/Analysis/BasicAliasAnalysis.cpp diff -u llvm/lib/Analysis/BasicAliasAnalysis.cpp:1.35 llvm/lib/Analysis/BasicAliasAnalysis.cpp:1.36 --- llvm/lib/Analysis/BasicAliasAnalysis.cpp:1.35 Mon Mar 15 21:41:35 2004 +++ llvm/lib/Analysis/BasicAliasAnalysis.cpp Sun Apr 4 20:28:18 2004 @@ -353,6 +353,19 @@ return MayAlias; } +static bool ValuesEqual(Value *V1, Value *V2) { + if (V1->getType() == V2->getType()) + return V1 == V2; + if (Constant *C1 = dyn_cast(V1)) + if (Constant *C2 = dyn_cast(V2)) { + // Sign extend the constants to long types. + C1 = ConstantExpr::getSignExtend(C1, Type::LongTy); + C2 = ConstantExpr::getSignExtend(C2, Type::LongTy); + return C1 == C2; + } + return false; +} + /// CheckGEPInstructions - Check two GEP instructions with known must-aliasing /// base pointers. This checks to see if the index expressions preclude the /// pointers from aliasing... @@ -376,7 +389,7 @@ unsigned MaxOperands = std::max(NumGEP1Operands, NumGEP2Operands); unsigned UnequalOper = 0; while (UnequalOper != MinOperands && - GEP1Ops[UnequalOper] == GEP2Ops[UnequalOper]) { + ValuesEqual(GEP1Ops[UnequalOper], GEP2Ops[UnequalOper])) { // Advance through the type as we go... ++UnequalOper; if (const CompositeType *CT = dyn_cast(BasePtr1Ty)) @@ -418,7 +431,7 @@ if (SizeMax == ~0U) return MayAlias; // Avoid frivolous work... // Scan for the first operand that is constant and unequal in the - // two getelemenptrs... + // two getelementptrs... unsigned FirstConstantOper = UnequalOper; for (; FirstConstantOper != MinOperands; ++FirstConstantOper) { const Value *G1Oper = GEP1Ops[FirstConstantOper]; @@ -427,13 +440,23 @@ if (G1Oper != G2Oper) // Found non-equal constant indexes... if (Constant *G1OC = dyn_cast(const_cast(G1Oper))) if (Constant *G2OC = dyn_cast(const_cast(G2Oper))) { - // Make sure they are comparable (ie, not constant expressions)... - // and make sure the GEP with the smaller leading constant is GEP1. - Constant *Compare = ConstantExpr::get(Instruction::SetGT, G1OC, G2OC); - if (ConstantBool *CV = dyn_cast(Compare)) { - if (CV->getValue()) // If they are comparable and G2 > G1 - std::swap(GEP1Ops, GEP2Ops); // Make GEP1 < GEP2 - break; + if (G1OC->getType() != G2OC->getType()) { + // Sign extend both operands to long. + G1OC = ConstantExpr::getSignExtend(G1OC, Type::LongTy); + G2OC = ConstantExpr::getSignExtend(G2OC, Type::LongTy); + GEP1Ops[FirstConstantOper] = G1OC; + GEP2Ops[FirstConstantOper] = G2OC; + } + + if (G1OC != G2OC) { + // Make sure they are comparable (ie, not constant expressions)... + // and make sure the GEP with the smaller leading constant is GEP1. + Constant *Compare = ConstantExpr::getSetGT(G1OC, G2OC); + if (ConstantBool *CV = dyn_cast(Compare)) { + if (CV->getValue()) // If they are comparable and G2 > G1 + std::swap(GEP1Ops, GEP2Ops); // Make GEP1 < GEP2 + break; + } } } BasePtr1Ty = cast(BasePtr1Ty)->getTypeAtIndex(G1Oper); @@ -443,7 +466,7 @@ // point, the GEP instructions have run through all of their operands, and we // haven't found evidence that there are any deltas between the GEP's. // However, one GEP may have more operands than the other. If this is the - // case, there may still be hope. This this now. + // case, there may still be hope. Check this now. if (FirstConstantOper == MinOperands) { // Make GEP1Ops be the longer one if there is a longer one. if (GEP1Ops.size() < GEP2Ops.size()) @@ -494,10 +517,8 @@ // initial equal sequence of variables into constant zeros to start with. for (unsigned i = 0; i != FirstConstantOper; ++i) { if (!isa(GEP1Ops[i]) || isa(GEP1Ops[i]) || - !isa(GEP2Ops[i]) || isa(GEP2Ops[i])) { - GEP1Ops[i] = Constant::getNullValue(GEP1Ops[i]->getType()); - GEP2Ops[i] = Constant::getNullValue(GEP2Ops[i]->getType()); - } + !isa(GEP2Ops[i]) || isa(GEP2Ops[i])) + GEP1Ops[i] = GEP2Ops[i] = Constant::getNullValue(Type::UIntTy); } // We know that GEP1Ops[FirstConstantOper] & GEP2Ops[FirstConstantOper] are ok From lattner at cs.uiuc.edu Sun Apr 4 20:29:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:29:19 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/ExprTypeConvert.cpp LevelRaise.cpp TransformInternals.cpp Message-ID: <200404050129.UAA20707@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms: ExprTypeConvert.cpp updated: 1.90 -> 1.91 LevelRaise.cpp updated: 1.95 -> 1.96 TransformInternals.cpp updated: 1.44 -> 1.45 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+25 -123) Index: llvm/lib/Transforms/ExprTypeConvert.cpp diff -u llvm/lib/Transforms/ExprTypeConvert.cpp:1.90 llvm/lib/Transforms/ExprTypeConvert.cpp:1.91 --- llvm/lib/Transforms/ExprTypeConvert.cpp:1.90 Tue Mar 16 13:52:53 2004 +++ llvm/lib/Transforms/ExprTypeConvert.cpp Sun Apr 4 20:28:59 2004 @@ -797,10 +797,13 @@ // stream, so we have to delete it when we're done. // if (DataSize != 1) { - // FIXME, PR82 - TempScale = BinaryOperator::create(Instruction::Mul, Index, - ConstantSInt::get(Type::LongTy, - DataSize)); + Value *CST; + if (Index->getType()->isSigned()) + CST = ConstantSInt::get(Index->getType(), DataSize); + else + CST = ConstantUInt::get(Index->getType(), DataSize); + + TempScale = BinaryOperator::create(Instruction::Mul, Index, CST); Index = TempScale; } @@ -1012,8 +1015,7 @@ if (const CompositeType *CT = dyn_cast(LoadedTy)) { std::vector Indices; - // FIXME, PR82 - Indices.push_back(ConstantSInt::get(Type::LongTy, 0)); + Indices.push_back(Constant::getNullValue(Type::UIntTy)); unsigned Offset = 0; // No offset, get first leaf. LoadedTy = getStructOffsetType(CT, Offset, Indices, TD, false); @@ -1049,8 +1051,7 @@ const StructType *SElTy = cast(ElTy); std::vector Indices; - // FIXME, PR82 - Indices.push_back(Constant::getNullValue(Type::LongTy)); + Indices.push_back(Constant::getNullValue(Type::UIntTy)); unsigned Offset = 0; const Type *Ty = getStructOffsetType(ElTy, Offset, Indices, TD,false); @@ -1079,8 +1080,7 @@ if (isa(ValTy)) { std::vector Indices; - // FIXME: PR82 - Indices.push_back(Constant::getNullValue(Type::LongTy)); + Indices.push_back(Constant::getNullValue(Type::UIntTy)); unsigned Offset = 0; ValTy = getStructOffsetType(ValTy, Offset, Indices, TD, false); @@ -1112,10 +1112,13 @@ if (DataSize != 1) { // Insert a multiply of the old element type is not a unit size... - Index = BinaryOperator::create(Instruction::Mul, Index, - // FIXME: PR82 - ConstantSInt::get(Type::LongTy, DataSize), - "scale", It); + Value *CST; + if (Index->getType()->isSigned()) + CST = ConstantSInt::get(Index->getType(), DataSize); + else + CST = ConstantUInt::get(Index->getType(), DataSize); + + Index = BinaryOperator::create(Instruction::Mul, Index, CST, "scale", It); } // Perform the conversion now... Index: llvm/lib/Transforms/LevelRaise.cpp diff -u llvm/lib/Transforms/LevelRaise.cpp:1.95 llvm/lib/Transforms/LevelRaise.cpp:1.96 --- llvm/lib/Transforms/LevelRaise.cpp:1.95 Sun Feb 8 22:37:31 2004 +++ llvm/lib/Transforms/LevelRaise.cpp Sun Apr 4 20:28:59 2004 @@ -370,9 +370,8 @@ // Build the index vector, full of all zeros std::vector Indices; - Indices.push_back(ConstantSInt::get(Type::LongTy, 0)); // FIXME, PR82 + Indices.push_back(Constant::getNullValue(Type::UIntTy)); while (CurCTy && !isa(CurCTy)) { - const Type *IdxType; if (const StructType *CurSTy = dyn_cast(CurCTy)) { // Check for a zero element struct type... if we have one, bail. if (CurSTy->getNumElements() == 0) break; @@ -381,14 +380,12 @@ // offset zero in the struct. // ElTy = CurSTy->getElementType(0); - IdxType = Type::UByteTy; // FIXME when PR82 is fixed. } else { ElTy = cast(CurCTy)->getElementType(); - IdxType = Type::LongTy; // FIXME when PR82 is fixed. } // Insert a zero to index through this type... - Indices.push_back(Constant::getNullValue(IdxType)); + Indices.push_back(Constant::getNullValue(Type::UIntTy)); // Did we find what we're looking for? if (ElTy->isLosslesslyConvertibleTo(DestPointedTy)) break; Index: llvm/lib/Transforms/TransformInternals.cpp diff -u llvm/lib/Transforms/TransformInternals.cpp:1.44 llvm/lib/Transforms/TransformInternals.cpp:1.45 --- llvm/lib/Transforms/TransformInternals.cpp:1.44 Sun Feb 8 22:37:31 2004 +++ llvm/lib/Transforms/TransformInternals.cpp Sun Apr 4 20:28:59 2004 @@ -35,8 +35,7 @@ (i == SL->MemberOffsets.size()-1 || Offset < SL->MemberOffsets[i+1])); // Make sure to save the current index... - // FIXME for PR82 - Indices.push_back(ConstantUInt::get(Type::UByteTy, i)); + Indices.push_back(ConstantUInt::get(Type::UIntTy, i)); Offset = SL->MemberOffsets[i]; return STy->getContainedType(i); } @@ -75,8 +74,10 @@ NextType = ATy->getElementType(); unsigned ChildSize = TD.getTypeSize(NextType); - // FIXME for PR82 - Indices.push_back(ConstantSInt::get(Type::LongTy, Offset/ChildSize)); + if (ConstantSInt::isValueValidForType(Type::IntTy, Offset/ChildSize)) + Indices.push_back(ConstantSInt::get(Type::IntTy, Offset/ChildSize)); + else + Indices.push_back(ConstantSInt::get(Type::LongTy, Offset/ChildSize)); ThisOffset = (Offset/ChildSize)*ChildSize; } else { Offset = 0; // Return the offset that we were able to achieve @@ -99,105 +100,6 @@ std::vector &Indices, const TargetData &TD, BasicBlock::iterator *BI) { - const CompositeType *CompTy = dyn_cast(Ty); - if (CompTy == 0) return 0; - - // See if the cast is of an integer expression that is either a constant, - // or a value scaled by some amount with a possible offset. - // - ExprType Expr = ClassifyExpr(OffsetVal); - - // Get the offset and scale values if they exists... - // A scale of zero with Expr.Var != 0 means a scale of 1. - // - int64_t Offset = Expr.Offset ? getConstantValue(Expr.Offset) : 0; - int64_t Scale = Expr.Scale ? getConstantValue(Expr.Scale) : 0; - - if (Expr.Var && Scale == 0) Scale = 1; // Scale != 0 if Expr.Var != 0 - - // Loop over the Scale and Offset values, filling in the Indices vector for - // our final getelementptr instruction. - // - const Type *NextTy = CompTy; - do { - if (!isa(NextTy)) - return 0; // Type must not be ready for processing... - CompTy = cast(NextTy); - - if (const StructType *StructTy = dyn_cast(CompTy)) { - // Step into the appropriate element of the structure... - uint64_t ActualOffset = (Offset < 0) ? 0 : (uint64_t)Offset; - NextTy = getStructOffsetStep(StructTy, ActualOffset, Indices, TD); - Offset -= ActualOffset; - } else { - const Type *ElTy = cast(CompTy)->getElementType(); - if (!ElTy->isSized() || (isa(CompTy) && !Indices.empty())) - return 0; // Type is unreasonable... escape! - unsigned ElSize = TD.getTypeSize(ElTy); - if (ElSize == 0) return 0; // Avoid division by zero... - int64_t ElSizeS = ElSize; - - // See if the user is indexing into a different cell of this array... - if (Scale && (Scale >= ElSizeS || -Scale >= ElSizeS)) { - // A scale n*ElSize might occur if we are not stepping through - // array by one. In this case, we will have to insert math to munge - // the index. - // - int64_t ScaleAmt = Scale/ElSizeS; - if (Scale-ScaleAmt*ElSizeS) - return 0; // Didn't scale by a multiple of element size, bail out - Scale = 0; // Scale is consumed - - int64_t Index = Offset/ElSize; // is zero unless Offset > ElSize - Offset -= Index*ElSize; // Consume part of the offset - - if (BI) { // Generate code? - BasicBlock *BB = (*BI)->getParent(); - if (Expr.Var->getType() != Type::LongTy) // FIXME for PR82 - Expr.Var = new CastInst(Expr.Var, Type::LongTy, // FIXME for PR82 - Expr.Var->getName()+"-idxcast", *BI); - - if (ScaleAmt && ScaleAmt != 1) { - // If we have to scale up our index, do so now - // FIXME for PR82 - Value *ScaleAmtVal = ConstantSInt::get(Type::LongTy, ScaleAmt); - Expr.Var = BinaryOperator::create(Instruction::Mul, Expr.Var, - ScaleAmtVal, - Expr.Var->getName()+"-scale",*BI); - } - - if (Index) { // Add an offset to the index - // FIXME for PR82 - Value *IndexAmt = ConstantSInt::get(Type::LongTy, Index); - Expr.Var = BinaryOperator::create(Instruction::Add, Expr.Var, - IndexAmt, - Expr.Var->getName()+"-offset", - *BI); - } - } - - Indices.push_back(Expr.Var); - Expr.Var = 0; - } else if (Offset >= (int64_t)ElSize || -Offset >= (int64_t)ElSize) { - // Calculate the index that we are entering into the array cell with - uint64_t Index = Offset/ElSize; - // FIXME for PR82 - Indices.push_back(ConstantSInt::get(Type::LongTy, Index)); - Offset -= (int64_t)(Index*ElSize); // Consume part of the offset - - } else if (isa(CompTy) || Indices.empty()) { - // Must be indexing a small amount into the first cell of the array - // Just index into element zero of the array here. - // - // FIXME for PR82 - Indices.push_back(ConstantSInt::get(Type::LongTy, 0)); - } else { - return 0; // Hrm. wierd, can't handle this case. Bail - } - NextTy = ElTy; - } - } while (Offset || Scale); // Go until we're done! - - return NextTy; + return 0; } From lattner at cs.uiuc.edu Sun Apr 4 20:29:37 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:29:37 2004 Subject: [llvm-commits] CVS: llvm/lib/Analysis/DataStructure/Local.cpp Message-ID: <200404050128.UAA20674@zion.cs.uiuc.edu> Changes in directory llvm/lib/Analysis/DataStructure: Local.cpp updated: 1.101 -> 1.102 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+2 -1) Index: llvm/lib/Analysis/DataStructure/Local.cpp diff -u llvm/lib/Analysis/DataStructure/Local.cpp:1.101 llvm/lib/Analysis/DataStructure/Local.cpp:1.102 --- llvm/lib/Analysis/DataStructure/Local.cpp:1.101 Fri Mar 12 18:23:25 2004 +++ llvm/lib/Analysis/DataStructure/Local.cpp Sun Apr 4 20:28:23 2004 @@ -350,7 +350,8 @@ #if 0 // Handle the pointer index specially... if (GEP.getNumOperands() > 1 && - GEP.getOperand(1) != ConstantSInt::getNullValue(Type::LongTy)) { + (!isa(GEP.getOperand(1)) || + !cast(GEP.getOperand(1))->isNullValue())) { // If we already know this is an array being accessed, don't do anything... if (!TopTypeRec.isArray) { From lattner at cs.uiuc.edu Sun Apr 4 20:30:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:30:01 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/TargetData.cpp Message-ID: <200404050129.UAA20773@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target: TargetData.cpp updated: 1.43 -> 1.44 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+13 -11) Index: llvm/lib/Target/TargetData.cpp diff -u llvm/lib/Target/TargetData.cpp:1.43 llvm/lib/Target/TargetData.cpp:1.44 --- llvm/lib/Target/TargetData.cpp:1.43 Thu Feb 26 02:02:17 2004 +++ llvm/lib/Target/TargetData.cpp Sun Apr 4 20:29:25 2004 @@ -20,6 +20,7 @@ #include "llvm/Module.h" #include "llvm/DerivedTypes.h" #include "llvm/Constants.h" +#include "llvm/Support/GetElementPtrTypeIterator.h" using namespace llvm; // Handle the Pass registration stuff necessary to use TargetData's. @@ -218,17 +219,11 @@ assert(isa(Ty) && "Illegal argument for getIndexedOffset()"); uint64_t Result = 0; - for (unsigned CurIDX = 0; CurIDX != Idx.size(); ++CurIDX) { - if (Idx[CurIDX]->getType() == Type::LongTy) { - // Update Ty to refer to current element - Ty = cast(Ty)->getElementType(); - - // Get the array index and the size of each array element. - int64_t arrayIdx = cast(Idx[CurIDX])->getValue(); - Result += arrayIdx * (int64_t)getTypeSize(Ty); - } else { - const StructType *STy = cast(Ty); - assert(Idx[CurIDX]->getType() == Type::UByteTy && "Illegal struct idx"); + generic_gep_type_iterator::const_iterator> + TI = gep_type_begin(ptrTy, Idx.begin(), Idx.end()); + for (unsigned CurIDX = 0; CurIDX != Idx.size(); ++CurIDX, ++TI) { + if (const StructType *STy = dyn_cast(*TI)) { + assert(Idx[CurIDX]->getType() == Type::UIntTy && "Illegal struct idx"); unsigned FieldNo = cast(Idx[CurIDX])->getValue(); // Get structure layout information... @@ -240,6 +235,13 @@ // Update Ty to refer to current element Ty = STy->getElementType(FieldNo); + } else { + // Update Ty to refer to current element + Ty = cast(Ty)->getElementType(); + + // Get the array index and the size of each array element. + int64_t arrayIdx = cast(Idx[CurIDX])->getRawValue(); + Result += arrayIdx * (int64_t)getTypeSize(Ty); } } From lattner at cs.uiuc.edu Sun Apr 4 20:30:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:30:19 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp Message-ID: <200404050129.UAA20715@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Instrumentation: ProfilingUtils.cpp updated: 1.1 -> 1.2 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+3 -3) Index: llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp diff -u llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp:1.1 llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp:1.2 --- llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp:1.1 Mon Mar 8 11:06:13 2004 +++ llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp Sun Apr 4 20:29:02 2004 @@ -40,7 +40,7 @@ while (isa(InsertPos)) ++InsertPos; ConstantPointerRef *ArrayCPR = ConstantPointerRef::get(Array); - std::vector GEPIndices(2, Constant::getNullValue(Type::LongTy)); + std::vector GEPIndices(2, Constant::getNullValue(Type::IntTy)); Args[2] = ConstantExpr::getGetElementPtr(ArrayCPR, GEPIndices); unsigned NumElements = @@ -89,8 +89,8 @@ // Create the getelementptr constant expression std::vector Indices(2); - Indices[0] = Constant::getNullValue(Type::LongTy); - Indices[1] = ConstantSInt::get(Type::LongTy, CounterNum); + Indices[0] = Constant::getNullValue(Type::IntTy); + Indices[1] = ConstantSInt::get(Type::IntTy, CounterNum); Constant *ElementPtr = ConstantExpr::getGetElementPtr(CounterArray, Indices); // Load, increment and store the value back. From lattner at cs.uiuc.edu Sun Apr 4 20:30:37 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:30:37 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp LowerInvoke.cpp SCCP.cpp ScalarReplAggregates.cpp Message-ID: <200404050129.UAA20728@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.176 -> 1.177 LowerInvoke.cpp updated: 1.14 -> 1.15 SCCP.cpp updated: 1.92 -> 1.93 ScalarReplAggregates.cpp updated: 1.20 -> 1.21 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+117 -30) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.176 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.177 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.176 Tue Mar 30 13:37:13 2004 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Sun Apr 4 20:29:05 2004 @@ -44,9 +44,10 @@ #include "llvm/Target/TargetData.h" #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Local.h" +#include "llvm/Support/CallSite.h" +#include "llvm/Support/GetElementPtrTypeIterator.h" #include "llvm/Support/InstIterator.h" #include "llvm/Support/InstVisitor.h" -#include "llvm/Support/CallSite.h" #include "Support/Debug.h" #include "Support/Statistic.h" #include @@ -92,6 +93,8 @@ AU.setPreservesCFG(); } + TargetData &getTargetData() const { return *TD; } + // Visitation implementation - Implement instruction combining for different // instruction types. The semantics are as follows: // Return Value: @@ -127,6 +130,7 @@ Instruction *visitCallSite(CallSite CS); bool transformConstExprCastCall(CallSite CS); + public: // InsertNewInstBefore - insert an instruction New before instruction Old // in the program. Add the new instruction to the worklist. // @@ -139,7 +143,6 @@ return New; } - public: // ReplaceInstUsesWith - This method is to be used when an instruction is // found to be dead, replacable with another preexisting expression. Here // we add all uses of I to the worklist, replace all uses of I with the new @@ -2272,6 +2275,20 @@ return 0; } +static Value *InsertSignExtendToPtrTy(Value *V, const Type *DTy, + Instruction *InsertPoint, + InstCombiner *IC) { + unsigned PS = IC->getTargetData().getPointerSize(); + const Type *VTy = V->getType(); + Instruction *Cast; + if (!VTy->isSigned() && VTy->getPrimitiveSize() < PS) + // We must insert a cast to ensure we sign-extend. + V = IC->InsertNewInstBefore(new CastInst(V, VTy->getSignedVersion(), + V->getName()), *InsertPoint); + return IC->InsertNewInstBefore(new CastInst(V, DTy, V->getName()), + *InsertPoint); +} + Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) { // Is it 'getelementptr %P, long 0' or 'getelementptr %P' @@ -2286,6 +2303,37 @@ if (GEP.getNumOperands() == 2 && HasZeroPointerIndex) return ReplaceInstUsesWith(GEP, GEP.getOperand(0)); + // Eliminate unneeded casts for indices. + bool MadeChange = false; + for (unsigned i = 1, e = GEP.getNumOperands(); i != e; ++i) + if (CastInst *CI = dyn_cast(GEP.getOperand(i))) { + Value *Src = CI->getOperand(0); + const Type *SrcTy = Src->getType(); + const Type *DestTy = CI->getType(); + if (Src->getType()->isInteger()) { + if (SrcTy->getPrimitiveSize() == DestTy->getPrimitiveSize()) { + // We can always eliminate a cast from ulong or long to the other. We + // can always eliminate a cast from uint to int or the other on 32-bit + // pointer platforms. + if (DestTy->getPrimitiveSize() >= TD->getPointerSize()) { + MadeChange = true; + GEP.setOperand(i, Src); + } + } else if (SrcTy->getPrimitiveSize() < DestTy->getPrimitiveSize() && + SrcTy->getPrimitiveSize() == 4) { + // We can always eliminate a cast from int to [u]long. We can + // eliminate a cast from uint to [u]long iff the target is a 32-bit + // pointer target. + if (SrcTy->isSigned() || + SrcTy->getPrimitiveSize() >= TD->getPointerSize()) { + MadeChange = true; + GEP.setOperand(i, Src); + } + } + } + } + if (MadeChange) return &GEP; + // Combine Indices - If the source pointer to this getelementptr instruction // is a getelementptr instruction, combine the indices of the two // getelementptr instructions into a single instruction. @@ -2304,14 +2352,17 @@ // Can we combine the two pointer arithmetics offsets? if (SrcGEPOperands.size() == 2 && isa(SrcGEPOperands[1]) && isa(GEP.getOperand(1))) { + Constant *SGC = cast(SrcGEPOperands[1]); + Constant *GC = cast(GEP.getOperand(1)); + if (SGC->getType() != GC->getType()) { + SGC = ConstantExpr::getSignExtend(SGC, Type::LongTy); + GC = ConstantExpr::getSignExtend(GC, Type::LongTy); + } + // Replace: gep (gep %P, long C1), long C2, ... // With: gep %P, long (C1+C2), ... - Value *Sum = ConstantExpr::get(Instruction::Add, - cast(SrcGEPOperands[1]), - cast(GEP.getOperand(1))); - assert(Sum && "Constant folding of longs failed!?"); GEP.setOperand(0, SrcGEPOperands[0]); - GEP.setOperand(1, Sum); + GEP.setOperand(1, ConstantExpr::getAdd(SGC, GC)); if (Instruction *I = dyn_cast(GEP.getOperand(0))) AddUsersToWorkList(*I); // Reduce use count of Src return &GEP; @@ -2327,29 +2378,65 @@ cast(SrcGEPOperands[0])->getNumOperands() == 2) return 0; // Wait until our source is folded to completion. - Value *Sum = BinaryOperator::create(Instruction::Add, SrcGEPOperands[1], - GEP.getOperand(1), - GEP.getOperand(0)->getName()+".sum", - &GEP); + Value *Sum, *SO1 = SrcGEPOperands[1], *GO1 = GEP.getOperand(1); + if (SO1 == Constant::getNullValue(SO1->getType())) { + Sum = GO1; + } else if (GO1 == Constant::getNullValue(GO1->getType())) { + Sum = SO1; + } else { + // If they aren't the same type, convert both to an integer of the + // target's pointer size. + if (SO1->getType() != GO1->getType()) { + if (Constant *SO1C = dyn_cast(SO1)) { + SO1 = ConstantExpr::getCast(SO1C, GO1->getType()); + } else if (Constant *GO1C = dyn_cast(GO1)) { + GO1 = ConstantExpr::getCast(GO1C, SO1->getType()); + } else { + unsigned PS = TD->getPointerSize(); + Instruction *Cast; + if (SO1->getType()->getPrimitiveSize() == PS) { + // Convert GO1 to SO1's type. + GO1 = InsertSignExtendToPtrTy(GO1, SO1->getType(), &GEP, this); + + } else if (GO1->getType()->getPrimitiveSize() == PS) { + // Convert SO1 to GO1's type. + SO1 = InsertSignExtendToPtrTy(SO1, GO1->getType(), &GEP, this); + } else { + const Type *PT = TD->getIntPtrType(); + SO1 = InsertSignExtendToPtrTy(SO1, PT, &GEP, this); + GO1 = InsertSignExtendToPtrTy(GO1, PT, &GEP, this); + } + } + } + Sum = BinaryOperator::create(Instruction::Add, SO1, GO1, + GEP.getOperand(0)->getName()+".sum", &GEP); + } GEP.setOperand(0, SrcGEPOperands[0]); GEP.setOperand(1, Sum); WorkList.push_back(cast(Sum)); return &GEP; - } else if (*GEP.idx_begin() == Constant::getNullValue(Type::LongTy) && + } else if (isa(*GEP.idx_begin()) && + cast(*GEP.idx_begin())->isNullValue() && SrcGEPOperands.size() != 1) { // Otherwise we can do the fold if the first index of the GEP is a zero Indices.insert(Indices.end(), SrcGEPOperands.begin()+1, SrcGEPOperands.end()); Indices.insert(Indices.end(), GEP.idx_begin()+1, GEP.idx_end()); - } else if (SrcGEPOperands.back() == Constant::getNullValue(Type::LongTy)) { - // FIXME: when we allow indices to be non-long values, support this for - // other types! - - // If the src gep ends with a constant array index, merge this get into - // it, even if we have a non-zero array index. - Indices.insert(Indices.end(), SrcGEPOperands.begin()+1, - SrcGEPOperands.end()-1); - Indices.insert(Indices.end(), GEP.idx_begin(), GEP.idx_end()); + } else if (SrcGEPOperands.back() == + Constant::getNullValue(SrcGEPOperands.back()->getType())) { + // We have to check to make sure this really is an ARRAY index we are + // ending up with, not a struct index. + generic_gep_type_iterator::iterator> + GTI = gep_type_begin(SrcGEPOperands[0]->getType(), + SrcGEPOperands.begin()+1, SrcGEPOperands.end()); + std::advance(GTI, SrcGEPOperands.size()-2); + if (isa(*GTI)) { + // If the src gep ends with a constant array index, merge this get into + // it, even if we have a non-zero array index. + Indices.insert(Indices.end(), SrcGEPOperands.begin()+1, + SrcGEPOperands.end()-1); + Indices.insert(Indices.end(), GEP.idx_begin(), GEP.idx_end()); + } } if (!Indices.empty()) @@ -2428,7 +2515,7 @@ // Now that I is pointing to the first non-allocation-inst in the block, // insert our getelementptr instruction... // - std::vector Idx(2, Constant::getNullValue(Type::LongTy)); + std::vector Idx(2, Constant::getNullValue(Type::IntTy)); Value *V = new GetElementPtrInst(New, Idx, New->getName()+".sub", It); // Now make everything use the getelementptr instead of the original @@ -2469,7 +2556,7 @@ /// expression, or null if something is funny. /// static Constant *GetGEPGlobalInitializer(Constant *C, ConstantExpr *CE) { - if (CE->getOperand(1) != Constant::getNullValue(Type::LongTy)) + if (CE->getOperand(1) != Constant::getNullValue(CE->getOperand(1)->getType())) return 0; // Do not allow stepping over the value! // Loop over all of the operands, tracking down which value we are Index: llvm/lib/Transforms/Scalar/LowerInvoke.cpp diff -u llvm/lib/Transforms/Scalar/LowerInvoke.cpp:1.14 llvm/lib/Transforms/Scalar/LowerInvoke.cpp:1.15 --- llvm/lib/Transforms/Scalar/LowerInvoke.cpp:1.14 Wed Mar 31 16:00:30 2004 +++ llvm/lib/Transforms/Scalar/LowerInvoke.cpp Sun Apr 4 20:29:05 2004 @@ -277,14 +277,14 @@ // Store this old value as our 'next' field, and store our alloca as the // current jblist. std::vector Idx; - Idx.push_back(Constant::getNullValue(Type::LongTy)); - Idx.push_back(ConstantUInt::get(Type::UByteTy, 0)); + Idx.push_back(Constant::getNullValue(Type::IntTy)); + Idx.push_back(ConstantUInt::get(Type::UIntTy, 0)); Value *NextFieldPtr = new GetElementPtrInst(JmpBuf, Idx, "NextField", II); new StoreInst(OldEntry, NextFieldPtr, II); new StoreInst(JmpBuf, JBListHead, II); // Call setjmp, passing in the address of the jmpbuffer. - Idx[1] = ConstantUInt::get(Type::UByteTy, 1); + Idx[1] = ConstantUInt::get(Type::UIntTy, 1); Value *JmpBufPtr = new GetElementPtrInst(JmpBuf, Idx, "TheJmpBuf", II); Value *SJRet = new CallInst(SetJmpFn, JmpBufPtr, "sjret", II); @@ -369,14 +369,14 @@ // JBList. std::vector Idx; Idx.push_back(Constant::getNullValue(Type::LongTy)); - Idx.push_back(ConstantUInt::get(Type::UByteTy, 0)); + Idx.push_back(ConstantUInt::get(Type::UIntTy, 0)); Value *NextFieldPtr = new GetElementPtrInst(RecPtr, Idx, "NextField", RI); Value *NextRec = new LoadInst(NextFieldPtr, "NextRecord", RI); new StoreInst(NextRec, JBListHead, RI); // Now that we popped the top of the JBList, get a pointer to the jmpbuf and // longjmp. - Idx[1] = ConstantUInt::get(Type::UByteTy, 1); + Idx[1] = ConstantUInt::get(Type::UIntTy, 1); Idx[0] = new GetElementPtrInst(RecPtr, Idx, "JmpBuf", RI); Idx[1] = ConstantInt::get(Type::IntTy, 1); new CallInst(LongJmpFn, Idx, "", RI); Index: llvm/lib/Transforms/Scalar/SCCP.cpp diff -u llvm/lib/Transforms/Scalar/SCCP.cpp:1.92 llvm/lib/Transforms/Scalar/SCCP.cpp:1.93 --- llvm/lib/Transforms/Scalar/SCCP.cpp:1.92 Tue Mar 16 13:49:59 2004 +++ llvm/lib/Transforms/Scalar/SCCP.cpp Sun Apr 4 20:29:05 2004 @@ -712,7 +712,7 @@ /// null if something is funny. /// static Constant *GetGEPGlobalInitializer(Constant *C, ConstantExpr *CE) { - if (CE->getOperand(1) != Constant::getNullValue(Type::LongTy)) + if (CE->getOperand(1) != Constant::getNullValue(CE->getOperand(1)->getType())) return 0; // Do not allow stepping over the value! // Loop over all of the operands, tracking down which value we are Index: llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp diff -u llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.20 llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.21 --- llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.20 Tue Dec 2 11:43:55 2003 +++ llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp Sun Apr 4 20:29:05 2004 @@ -193,7 +193,7 @@ // std::string OldName = GEPI->getName(); // Steal the old name... std::vector NewArgs; - NewArgs.push_back(Constant::getNullValue(Type::LongTy)); + NewArgs.push_back(Constant::getNullValue(Type::IntTy)); NewArgs.insert(NewArgs.end(), GEPI->op_begin()+3, GEPI->op_end()); GEPI->setName(""); RepValue = From lattner at cs.uiuc.edu Sun Apr 4 20:30:55 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:30:55 2004 Subject: [llvm-commits] CVS: llvm/lib/Target/X86/InstSelectSimple.cpp Message-ID: <200404050129.UAA20784@zion.cs.uiuc.edu> Changes in directory llvm/lib/Target/X86: InstSelectSimple.cpp updated: 1.203 -> 1.204 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+5 -9) Index: llvm/lib/Target/X86/InstSelectSimple.cpp diff -u llvm/lib/Target/X86/InstSelectSimple.cpp:1.203 llvm/lib/Target/X86/InstSelectSimple.cpp:1.204 --- llvm/lib/Target/X86/InstSelectSimple.cpp:1.203 Fri Apr 2 12:11:32 2004 +++ llvm/lib/Target/X86/InstSelectSimple.cpp Sun Apr 4 20:29:31 2004 @@ -2704,12 +2704,13 @@ // idx is the index into the array. Unlike with structure // indices, we may not know its actual value at code-generation // time. - assert(idx->getType() == Type::LongTy && "Bad GEP array index!"); // If idx is a constant, fold it into the offset. unsigned TypeSize = TD.getTypeSize(SqTy->getElementType()); if (ConstantSInt *CSI = dyn_cast(idx)) { Disp += TypeSize*CSI->getValue(); + } else if (ConstantUInt *CUI = dyn_cast(idx)) { + Disp += TypeSize*CUI->getValue(); } else { // If the index reg is already taken, we can't handle this index. if (IndexReg) return; @@ -2833,12 +2834,7 @@ GEPOps.pop_back(); // Consume a GEP operand GEPTypes.pop_back(); - // idx is the index into the array. Unlike with structure - // indices, we may not know its actual value at code-generation - // time. - assert(idx->getType() == Type::LongTy && "Bad GEP array index!"); - - // Most GEP instructions use a [cast (int/uint) to LongTy] as their + // Many GEP instructions use a [cast (int/uint) to LongTy] as their // operand on X86. Handle this case directly now... if (CastInst *CI = dyn_cast(idx)) if (CI->getOperand(0)->getType() == Type::IntTy || @@ -2852,9 +2848,9 @@ unsigned elementSize = TD.getTypeSize(ElTy); // If idxReg is a constant, we don't need to perform the multiply! - if (ConstantSInt *CSI = dyn_cast(idx)) { + if (ConstantInt *CSI = dyn_cast(idx)) { if (!CSI->isNullValue()) { - unsigned Offset = elementSize*CSI->getValue(); + unsigned Offset = elementSize*CSI->getRawValue(); unsigned Reg = makeAnotherReg(Type::UIntTy); BuildMI(*MBB, IP, X86::ADD32ri, 2, TargetReg) .addReg(Reg).addImm(Offset); From lattner at cs.uiuc.edu Sun Apr 4 20:32:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:32:01 2004 Subject: [llvm-commits] CVS: llvm/tools/bugpoint/CodeGeneratorBug.cpp Message-ID: <200404050132.UAA21340@zion.cs.uiuc.edu> Changes in directory llvm/tools/bugpoint: CodeGeneratorBug.cpp updated: 1.40 -> 1.41 --- Log message: Minor change --- Diffs of the changes: (+1 -1) Index: llvm/tools/bugpoint/CodeGeneratorBug.cpp diff -u llvm/tools/bugpoint/CodeGeneratorBug.cpp:1.40 llvm/tools/bugpoint/CodeGeneratorBug.cpp:1.41 --- llvm/tools/bugpoint/CodeGeneratorBug.cpp:1.40 Sun Mar 14 14:50:42 2004 +++ llvm/tools/bugpoint/CodeGeneratorBug.cpp Sun Apr 4 20:31:50 2004 @@ -115,7 +115,7 @@ // 2. Use `GetElementPtr *funcName, 0, 0' to convert the string to an // sbyte* so it matches the signature of the resolver function. - std::vector GEPargs(2, Constant::getNullValue(Type::LongTy)); + std::vector GEPargs(2, Constant::getNullValue(Type::IntTy)); // 3. Replace all uses of `func' with calls to resolver by: // (a) Iterating through the list of uses of this function From lattner at cs.uiuc.edu Sun Apr 4 20:32:19 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:32:19 2004 Subject: [llvm-commits] CVS: llvm/lib/VMCore/ConstantFolding.cpp Type.cpp iMemory.cpp Message-ID: <200404050130.UAA20824@zion.cs.uiuc.edu> Changes in directory llvm/lib/VMCore: ConstantFolding.cpp updated: 1.55 -> 1.56 Type.cpp updated: 1.98 -> 1.99 iMemory.cpp updated: 1.35 -> 1.36 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. --- Diffs of the changes: (+14 -10) Index: llvm/lib/VMCore/ConstantFolding.cpp diff -u llvm/lib/VMCore/ConstantFolding.cpp:1.55 llvm/lib/VMCore/ConstantFolding.cpp:1.56 --- llvm/lib/VMCore/ConstantFolding.cpp:1.55 Thu Mar 11 23:53:32 2004 +++ llvm/lib/VMCore/ConstantFolding.cpp Sun Apr 4 20:30:19 2004 @@ -608,10 +608,10 @@ if (!isa(C1) || !isa(C2)) return -2; // don't know! - // Ok, we have two differing integer indices. Convert them to - // be the same type. Long is always big enough, so we use it. - C1 = ConstantExpr::getCast(C1, Type::LongTy); - C2 = ConstantExpr::getCast(C2, Type::LongTy); + // Ok, we have two differing integer indices. Sign extend them to be the same + // type. Long is always big enough, so we use it. + C1 = ConstantExpr::getSignExtend(C1, Type::LongTy); + C2 = ConstantExpr::getSignExtend(C2, Type::LongTy); if (C1 == C2) return 0; // Are they just differing types? // If they are really different, now that they are the same type, then we Index: llvm/lib/VMCore/Type.cpp diff -u llvm/lib/VMCore/Type.cpp:1.98 llvm/lib/VMCore/Type.cpp:1.99 --- llvm/lib/VMCore/Type.cpp:1.98 Sun Mar 28 18:17:20 2004 +++ llvm/lib/VMCore/Type.cpp Sun Apr 4 20:30:19 2004 @@ -295,8 +295,9 @@ bool StructType::indexValid(const Value *V) const { // Structure indexes require unsigned integer constants. - if (const ConstantUInt *CU = dyn_cast(V)) - return CU->getValue() < ContainedTys.size(); + if (V->getType() == Type::UIntTy) + if (const ConstantUInt *CU = dyn_cast(V)) + return CU->getValue() < ContainedTys.size(); return false; } @@ -304,10 +305,8 @@ // element. For a structure type, this must be a constant value... // const Type *StructType::getTypeAtIndex(const Value *V) const { - assert(isa(V) && "Structure index must be a constant!!"); + assert(indexValid(V) && "Invalid structure index!"); unsigned Idx = cast(V)->getValue(); - assert(Idx < ContainedTys.size() && "Structure index out of range!"); - assert(indexValid(V) && "Invalid structure index!"); // Duplicate check return ContainedTys[Idx]; } Index: llvm/lib/VMCore/iMemory.cpp diff -u llvm/lib/VMCore/iMemory.cpp:1.35 llvm/lib/VMCore/iMemory.cpp:1.36 --- llvm/lib/VMCore/iMemory.cpp:1.35 Thu Mar 11 17:53:51 2004 +++ llvm/lib/VMCore/iMemory.cpp Sun Apr 4 20:30:19 2004 @@ -137,7 +137,12 @@ if (!isa(Ptr)) return 0; // Type isn't a pointer type! // Handle the special case of the empty set index set... - if (Idx.empty()) return cast(Ptr)->getElementType(); + if (Idx.empty()) + if (AllowCompositeLeaf || + cast(Ptr)->getElementType()->isFirstClassType()) + return cast(Ptr)->getElementType(); + else + return 0; unsigned CurIdx = 0; while (const CompositeType *CT = dyn_cast(Ptr)) { From lattner at cs.uiuc.edu Sun Apr 4 20:32:38 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:32:38 2004 Subject: [llvm-commits] CVS: llvm/docs/LangRef.html Message-ID: <200404050130.UAA21329@zion.cs.uiuc.edu> Changes in directory llvm/docs: LangRef.html updated: 1.54 -> 1.55 --- Log message: Update getelementptr instruction description --- Diffs of the changes: (+84 -39) Index: llvm/docs/LangRef.html diff -u llvm/docs/LangRef.html:1.54 llvm/docs/LangRef.html:1.55 --- llvm/docs/LangRef.html:1.54 Fri Mar 12 15:19:06 2004 +++ llvm/docs/LangRef.html Sun Apr 4 20:30:49 2004 @@ -1423,58 +1423,103 @@ %val = load int* %ptr ; yields {int}:val = int 3 - + +
    Syntax:
    -
      <result> = getelementptr <ty>* <ptrval>{, long <aidx>|, ubyte <sidx>}*
    +
    +  <result> = getelementptr <ty>* <ptrval>{, <ty> <idx>}*
    +
    +
    Overview:
    -

    The 'getelementptr' instruction is used to get the address -of a subelement of an aggregate data structure.

    + +

    +The 'getelementptr' instruction is used to get the address of a +subelement of an aggregate data structure.

    +
    Arguments:
    -

    This instruction takes a list of long values and ubyte -constants that indicate what form of addressing to perform. The actual -types of the arguments provided depend on the type of the first pointer -argument. The 'getelementptr' instruction is used to index -down through the type levels of a structure.

    + +

    This instruction takes a list of integer constants that indicate what +elements of the aggregate object to index to. The actual types of the arguments +provided depend on the type of the first pointer argument. The +'getelementptr' instruction is used to index down through the type +levels of a structure. When indexing into a structure, only uint +integer constants are allowed. When indexing into an array or pointer +int and long indexes are allowed of any sign.

    +

    For example, let's consider a C code fragment and how it gets compiled to LLVM:

    -
    struct RT {
    char A;
    int B[10][20];
    char C;
    };
    struct ST {
    int X;
    double Y;
    struct RT Z;
    };

    int *foo(struct ST *s) {
    return &s[1].Z.B[5][13];
    }
    + +
    +  struct RT {
    +    char A;
    +    int B[10][20];
    +    char C;
    +  };
    +  struct ST {
    +    int X;
    +    double Y;
    +    struct RT Z;
    +  };
    +
    +  int *foo(struct ST *s) {
    +    return &s[1].Z.B[5][13];
    +  }
    +
    +

    The LLVM code generated by the GCC frontend is:

    -
    %RT = type { sbyte, [10 x [20 x int]], sbyte }
    %ST = type { int, double, %RT }

    int* "foo"(%ST* %s) {
    %reg = getelementptr %ST* %s, long 1, ubyte 2, ubyte 1, long 5, long 13
    ret int* %reg
    }
    + +
    +  %RT = type { sbyte, [10 x [20 x int]], sbyte }
    +  %ST = type { int, double, %RT }
    +
    +  int* "foo"(%ST* %s) {
    +    %reg = getelementptr %ST* %s, int 1, uint 2, uint 1, int 5, int 13
    + ret int* %reg + } +
    +
    Semantics:
    -

    The index types specified for the 'getelementptr' -instruction depend on the pointer type that is being index into. Pointer and array types -require 'long' values, and structure -types require 'ubyte' constants.

    + +

    The index types specified for the 'getelementptr' instruction depend +on the pointer type that is being index into. Pointer +and array types require uint, int, +ulong, or long values, and structure +types require uint constants.

    +

    In the example above, the first index is indexing into the '%ST*' -type, which is a pointer, yielding a '%ST' = '{ int, -double, %RT }' type, a structure. The second index indexes into -the third element of the structure, yielding a '%RT' = '{ -sbyte, [10 x [20 x int]], sbyte }' type, another structure. The -third index indexes into the second element of the structure, yielding -a '[10 x [20 x int]]' type, an array. The two dimensions of -the array are subscripted into, yielding an 'int' type. The 'getelementptr' -instruction return a pointer to this element, thus yielding a 'int*' -type.

    +type, which is a pointer, yielding a '%ST' = '{ int, double, %RT +}' type, a structure. The second index indexes into the third element of +the structure, yielding a '%RT' = '{ sbyte, [10 x [20 x int]], +sbyte }' type, another structure. The third index indexes into the second +element of the structure, yielding a '[10 x [20 x int]]' type, an +array. The two dimensions of the array are subscripted into, yielding an +'int' type. The 'getelementptr' instruction return a pointer +to this element, thus computing a value of 'int*' type.

    +

    Note that it is perfectly legal to index partially through a structure, returning a pointer to an inner element. Because of this, the LLVM code for the given testcase is equivalent to:

    -
    int* "foo"(%ST* %s) {
    %t1 = getelementptr %ST* %s , long 1 ; yields %ST*:%t1 - %t2 = getelementptr %ST* %t1, long 0, ubyte 2 ; yields %RT*:%t2 - %t3 = getelementptr %RT* %t2, long 0, ubyte 1 ; yields [10 x [20 x int]]*:%t3 - %t4 = getelementptr [10 x [20 x int]]* %t3, long 0, long 5 ; yields [20 x int]*:%t4 - %t5 = getelementptr [20 x int]* %t4, long 0, long 13 ; yields int*:%t5 - ret int* %t5 -} + +
    +  int* "foo"(%ST* %s) {
    +    %t1 = getelementptr %ST* %s, int 1                        ; yields %ST*:%t1
    +    %t2 = getelementptr %ST* %t1, int 0, uint 2               ; yields %RT*:%t2
    +    %t3 = getelementptr %RT* %t2, int 0, uint 1               ; yields [10 x [20 x int]]*:%t3
    +    %t4 = getelementptr [10 x [20 x int]]* %t3, int 0, int 5  ; yields [20 x int]*:%t4
    +    %t5 = getelementptr [20 x int]* %t4, int 0, int 13        ; yields int*:%t5
    +    ret int* %t5
    +  }
     
    Example:
    -
      ; yields [12 x ubyte]*:aptr
    -  %aptr = getelementptr {int, [12 x ubyte]}* %sptr, long 0, ubyte 1
    -
     Note To The Novice:
    -When using indexing into global arrays with the 'getelementptr' -instruction, you must remember that the 
    +
    +    ; yields [12 x ubyte]*:aptr
    +    %aptr = getelementptr {int, [12 x ubyte]}* %sptr, long 0, uint 1
    +
    + +
    @@ -2148,7 +2193,7 @@ Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/03/12 21:19:06 $ + Last modified: $Date: 2004/04/05 01:30:49 $ From lattner at cs.uiuc.edu Sun Apr 4 20:32:56 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:32:56 2004 Subject: [llvm-commits] CVS: llvm/lib/AsmParser/llvmAsmParser.y Message-ID: <200404050130.UAA20800@zion.cs.uiuc.edu> Changes in directory llvm/lib/AsmParser: llvmAsmParser.y updated: 1.161 -> 1.162 --- Log message: Support getelementptr instructions which use uint's to index into structure types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. Auto-upgrade .ll files that use ubytes to index into structures to use uint's. --- Diffs of the changes: (+26 -1) Index: llvm/lib/AsmParser/llvmAsmParser.y diff -u llvm/lib/AsmParser/llvmAsmParser.y:1.161 llvm/lib/AsmParser/llvmAsmParser.y:1.162 --- llvm/lib/AsmParser/llvmAsmParser.y:1.161 Tue Mar 30 21:48:33 2004 +++ llvm/lib/AsmParser/llvmAsmParser.y Sun Apr 4 20:30:04 2004 @@ -19,6 +19,7 @@ #include "llvm/iMemory.h" #include "llvm/iOperators.h" #include "llvm/iPHINode.h" +#include "llvm/Support/GetElementPtrTypeIterator.h" #include "Support/STLExtras.h" #include #include @@ -1235,6 +1236,17 @@ if (!isa($3->getType())) ThrowException("GetElementPtr requires a pointer operand!"); + // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte struct + // indices to uint struct indices for compatibility. + generic_gep_type_iterator::iterator> + GTI = gep_type_begin($3->getType(), $4->begin(), $4->end()), + GTE = gep_type_end($3->getType(), $4->begin(), $4->end()); + for (unsigned i = 0, e = $4->size(); i != e && GTI != GTE; ++i, ++GTI) + if (isa(*GTI)) // Only change struct indices + if (ConstantUInt *CUI = dyn_cast((*$4)[i])) + if (CUI->getType() == Type::UByteTy) + (*$4)[i] = ConstantExpr::getCast(CUI, Type::UIntTy); + const Type *IdxTy = GetElementPtrInst::getIndexedType($3->getType(), *$4, true); if (!IdxTy) @@ -1979,8 +1991,21 @@ | GETELEMENTPTR Types ValueRef IndexList { if (!isa($2->get())) ThrowException("getelementptr insn requires pointer operand!"); + + // LLVM 1.2 and earlier used ubyte struct indices. Convert any ubyte struct + // indices to uint struct indices for compatibility. + generic_gep_type_iterator::iterator> + GTI = gep_type_begin($2->get(), $4->begin(), $4->end()), + GTE = gep_type_end($2->get(), $4->begin(), $4->end()); + for (unsigned i = 0, e = $4->size(); i != e && GTI != GTE; ++i, ++GTI) + if (isa(*GTI)) // Only change struct indices + if (ConstantUInt *CUI = dyn_cast((*$4)[i])) + if (CUI->getType() == Type::UByteTy) + (*$4)[i] = ConstantExpr::getCast(CUI, Type::UIntTy); + if (!GetElementPtrInst::getIndexedType(*$2, *$4, true)) - ThrowException("Can't get element ptr '" + (*$2)->getDescription()+ "'!"); + ThrowException("Invalid getelementptr indices for type '" + + (*$2)->getDescription()+ "'!"); $$ = new GetElementPtrInst(getVal(*$2, $3), *$4); delete $2; delete $4; }; From lattner at cs.uiuc.edu Sun Apr 4 20:34:00 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:34:00 2004 Subject: [llvm-commits] CVS: reopt/lib/LightWtProfiling/TraceToFunction.cpp Message-ID: <200404050132.UAA21351@zion.cs.uiuc.edu> Changes in directory reopt/lib/LightWtProfiling: TraceToFunction.cpp updated: 1.28 -> 1.29 --- Log message: Update to use correct structure index type --- Diffs of the changes: (+1 -1) Index: reopt/lib/LightWtProfiling/TraceToFunction.cpp diff -u reopt/lib/LightWtProfiling/TraceToFunction.cpp:1.28 reopt/lib/LightWtProfiling/TraceToFunction.cpp:1.29 --- reopt/lib/LightWtProfiling/TraceToFunction.cpp:1.28 Wed Mar 31 10:29:51 2004 +++ reopt/lib/LightWtProfiling/TraceToFunction.cpp Sun Apr 4 20:32:11 2004 @@ -471,7 +471,7 @@ BI->getParent ())) { std::vector Index; Index.push_back (Constant::getNullValue (Type::LongTy)); //long 0 - Index.push_back (ConstantUInt::get (Type::UByteTy, Slot));//ubyte Slot + Index.push_back (ConstantUInt::get (Type::UIntTy, Slot));//uint Slot GetElementPtrInst *GEP = new GetElementPtrInst (getFunctionArg (F, 0), Index, "liveOutP" + utostr (BranchNumber[BI]) From lattner at cs.uiuc.edu Sun Apr 4 20:44:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:44:01 2004 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200404050143.UAA21910@zion.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.160 -> 1.161 --- Log message: PR82: http://llvm.cs.uiuc.edu/PR82 is finally fixed! --- Diffs of the changes: (+3 -6) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.160 llvm/docs/ReleaseNotes.html:1.161 --- llvm/docs/ReleaseNotes.html:1.160 Sun Apr 4 19:40:55 2004 +++ llvm/docs/ReleaseNotes.html Sun Apr 4 20:43:08 2004 @@ -98,7 +98,7 @@
      -
    1. +
    2. LLVM cannot handle structures with more than 256 elements
    @@ -126,7 +126,7 @@
      -
    1. +
    2. [vmcore] Code quality problem due to long operand of getelementptr
    @@ -236,9 +236,6 @@
  • Linking in static archive files (.a files) is very slow (there is no symbol table in the archive).
  • -
  • LLVM cannot handle structures with -more than 256 elements.
  • -
  • The gccld program does not link objects/archives in the order specified on the command line.
  • The lower-invoke pass does not mark @@ -562,7 +559,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/04/05 00:40:55 $ + Last modified: $Date: 2004/04/05 01:43:08 $ From lattner at cs.uiuc.edu Sun Apr 4 20:44:20 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 20:44:20 2004 Subject: [llvm-commits] CVS: llvm-www/releases/1.2/docs/ReleaseNotes.html Message-ID: <200404050143.UAA22410@zion.cs.uiuc.edu> Changes in directory llvm-www/releases/1.2/docs: ReleaseNotes.html updated: 1.6 -> 1.7 --- Log message: PR82: http://llvm.cs.uiuc.edu/PR82 is finally fixed! --- Diffs of the changes: (+3 -4) Index: llvm-www/releases/1.2/docs/ReleaseNotes.html diff -u llvm-www/releases/1.2/docs/ReleaseNotes.html:1.6 llvm-www/releases/1.2/docs/ReleaseNotes.html:1.7 --- llvm-www/releases/1.2/docs/ReleaseNotes.html:1.6 Thu Apr 1 14:31:37 2004 +++ llvm-www/releases/1.2/docs/ReleaseNotes.html Sun Apr 4 20:43:27 2004 @@ -338,9 +338,6 @@
  • Linking in static archive files (.a files) is very slow (there is no symbol table in the archive).
  • -
  • LLVM cannot handle structures with -more than 256 elements.
  • -
  • The gccld program does not link objects/archives in the order specified on the command line.
  • The lower-invoke pass does not mark @@ -350,6 +347,8 @@
Bugs in 1.2 fixed in 1.3:
    +
  • LLVM cannot handle structures with more than 256 elements
  • +
  • [loopsimplify] Loop simplify incorrectly updates dominator information
  • [tailduplicate] DemoteRegToStack breaks SSA form
  • @@ -670,7 +669,7 @@ src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /> The LLVM Compiler Infrastructure
    - Last modified: $Date: 2004/04/01 20:31:37 $ + Last modified: $Date: 2004/04/05 01:43:27 $ From lattner at cs.uiuc.edu Sun Apr 4 21:02:01 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 21:02:01 2004 Subject: [llvm-commits] CVS: llvm/test/Regression/Transforms/InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll Message-ID: <200404050201.VAA22767@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Transforms/InstCombine: 2004-04-04-InstCombineReplaceAllUsesWith.ll added (r1.1) --- Log message: New testcase that crashes the instcombine pass. Dominance properties have no meaning if the code is not reachable. --- Diffs of the changes: (+8 -0) Index: llvm/test/Regression/Transforms/InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll diff -c /dev/null llvm/test/Regression/Transforms/InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll:1.1 *** /dev/null Sun Apr 4 21:01:42 2004 --- llvm/test/Regression/Transforms/InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll Sun Apr 4 21:01:32 2004 *************** *** 0 **** --- 1,8 ---- + ; RUN: llvm-as < %s | opt -instcombine -disable-output + + int %test() { + ret int 0 + Loop: + %X = add int %X, 1 + br label %Loop + } From lattner at cs.uiuc.edu Sun Apr 4 21:11:02 2004 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Sun Apr 4 21:11:02 2004 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp Message-ID: <200404050210.VAA24189@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.177 -> 1.178 --- Log message: Fix InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.ll --- Diffs of the changes: (+15 -3) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.177 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.178 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.177 Sun Apr 4 20:29:05 2004 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Sun Apr 4 21:10:19 2004 @@ -151,8 +151,15 @@ // Instruction *ReplaceInstUsesWith(Instruction &I, Value *V) { AddUsersToWorkList(I); // Add all modified instrs to worklist - I.replaceAllUsesWith(V); - return &I; + if (&I != V) { + I.replaceAllUsesWith(V); + return &I; + } else { + // If we are replacing the instruction with itself, this must be in a + // segment of unreachable code, so just clobber the instruction. + I.replaceAllUsesWith(Constant::getNullValue(I.getType())); + return &I; + } } // EraseInstFromFunction - When dealing with an instruction that has side @@ -424,7 +431,12 @@ // Make what used to be the LHS of the root be the user of the root... Value *ExtraOperand = TmpLHSI->getOperand(1); - Root.replaceAllUsesWith(TmpLHSI); // Users now use TmpLHSI + if (&Root != TmpLHSI) + Root.replaceAllUsesWith(TmpLHSI); // Users now use TmpLHSI + else { + Root.replaceAllUsesWith(Constant::getNullValue(TmpLHSI->getType())); + return 0; + } TmpLHSI->setOperand(1, &Root); // TmpLHSI now uses the root BB->getInstList().remove(&Root); // Remove root from the BB BB->getInstList().insert(TmpLHSI, &Root); // Insert root before TmpLHSI