%!PS-Adobe-2.0 %%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software %%Title: sudoku.dvi %%Pages: 31 %%PageOrder: Ascend %%BoundingBox: 0 0 595 842 %%DocumentFonts: CMR17 CMR12 CMBX12 CMR8 CMTT10 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o sudoku.ps sudoku.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2006.03.13:1327 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def @MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginFont: CMTT10 %!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 36 /dollar 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 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater 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 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 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 95 /underscore put dup 96 /quoteleft 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 /braceleft put dup 124 /bar put dup 125 /braceright put readonly def /FontBBox{-4 -235 731 800}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA 6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F 1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF 8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA 726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B 7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437 ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53 B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7 48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081 B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943 A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141 E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A 814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575 C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D 11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE 087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF 87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C 4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897 ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD 33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04 0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555 A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408 637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04 A2D8AC44DDE818C59D349C7B077EBAFF78C7D0E8958413A47EC28B75A619AC4D 2BBED8D5EF893FC57782A64418133FA027D3F00C333463753AC535A735850690 D15B236BD78CAF3924339339E0EA80D6136555EB2674E4495ACB9323C0CADC5F 554EF8C4F8D29C486577DB286B9B540D80AD76676928DB3AE34EF58099424DED 9D00505C5DFA10AD6FAAEF84588DBAFE29092C52BA512357870EB09884C00C32 69BAC7BE19FDF1CB7686479C89F6BC61132B4B0E8AD3DA0F8AB6DB997D834B36 E12336B3AB239973DC4CEBD2E9659AD7BF3F1AC36E87C3A1D45548A69C2A8BF0 D66EE1C05BCED5B23692F04744FC3B2C69FAD38158DC05C446B2043BC94EB36A 8295A93EAA24436A7D3A3039078151B4487A19FBE21D5D87EB2A8BFA73C36A63 02FEF0B8D795A36ECDCC34F25E0E4FCF1EE89247F613D6C5244DA52DBA137957 93900192B44135926812F1D9257F3A9A096518C872E3EE4316C1787045447341 EA635CCDFCE4FF1BA221F022BB97B78F599C5E10F213E4B0CF6F5A5651B682B4 506F0BCF46200ED58F63BB28CEC235EE2AF962273531996F9E5A3A9C51136BA4 C225C14F537DCF317741571A4B2B816B212A8A16CEA3556014C4E1199B72ED4D 8FBCE2BDF5FBE4D2F57AAE4618DB7376EE51A1E65A057FDF2D27461B211408AA 85C5C041715129FADE448BA3E47D33D1B5037B4943C8EA92C209FD71E4D0C22C AA1AA7931BCC072120728E148A6A6BA8E4D460C7B266D2BE712E0CBD4576E5E0 37BCA458DC5B729FCD18B57BBBA9F79D929D1A9FBCB6D0AA3BE6CA14AEA41D01 027374FFFE1DC4D6A2CF7E506F6CA0D9AEEE731B7DAA59AE0B4EF3FF012D88BB ABC9FAD45F6BDB58EE9B7356DE0FE91F09F6CA6025E3D650001FB8F26210119F E89E5294519CB10798A096B662E9547B5298994603A6AD7A9A18BD28465888C0 CEB25808EC7E2076B58A966AFDC589B286F91065DDDF8015D1E053FD2CFC8D26 A2546D6EC94161B841B38263BECC8753581853D2D8CAC7C213D2E1BD879F7049 87159A9F106D85B1E61124D4D3B7D751B17BFE55451F7BF151E3917F3C2025D6 4A8A900BF5AE9E504CB9978828B315D14CF91A0FC72C67046EEE19E3F3697A2A CAD97AB0D9E94E2F38A483726B49650FDAC3ED719B655F4C807ADE98D0EE7716 4AB8AC570989BC1D35B165F769B7675A5D7A18CFE1FF0F7641F89D282EBD1AAE 2A95173464487B1DD6BFF55FA21AE1DC405890235C747A6C3A2A1337CD3CFB7F E630E19D26C167E5DFBBF9D234C86D929A8896DB30BC7447BE0E31E9E760C4B1 610EF974C6917D7476160FDCC039DC4C19D88ACAC7E14491FCEE8B3FB726014D EC13FFBCD5B6FEB33E36BE433DDDA06BE3548586D5A59DE97370F5D910598370 6E94A179636BB9E41480E5893993F82978870BF9AB8CFB91D03CD003944DD0E9 5782C23726305E32C553C4C2AA46729DA04E2BF5A95C39600CF0D62AEBC74A22 BAF73D70EC4D6AF22FBF32A4B720BE76188D4A73558443587296819E4ADD8E91 1FAF1778F803D868ADD852A6DBC34780C1CE94F3E7770F67535C034D1F9034A8 B42526DAB55022A3DC3C4E1E00B157980D86306356978E0F54E29415F85DFB90 3F53A4FDF2C6758B83AB79FD5BC43D46B4EE6D0E3769D96663FDEC094F52D9D9 494F8719DE7098736335F6B6C6D3EBADB5C5FEA52C7C7F657293BC968A505B3E 6973AA1CF483C9942E6E66BA0E653E27A05BD52150A028968443F625BEA275A9 D2C9B1C7B3D58213DA79F35B5A3FC16F5522C0EEC169FF4A97957DA3655F0F85 020620B44A911EC3DC2DE479120823E93723276E34AD86453665A209179E015E 0D6F1884652235637017AD9EC20F8721B0490A35592FDA145E6C8D5F9E6EE6AE AF1C57D733984E1D14EC7DB1AC6F2E563960A389A6E07F7045DA9C4E7616A8CD 7526BB59F24689986799CB627397E8EB84367A6AED190BA3348A223FA26ECB65 C484B2483DAF3EB7972EEBD7E415D57FD768AA126785F6F9B77C6E08745130C5 CE551824A522ED42AD2D7A7D8C342F69A851124C4686DCC323DE9554D22D2402 A91FA11482ED834FEE73E2AB81CB8150104329B389B7093BF751095044FB5A59 37C1DB3AB6A60AD2CCD88A958E80132D53CB5B661666900D757258C8B877BF57 A0154123574F7E0DD3CD70BC164E178276C5061AB57C2B9B4BC641CED807DB9B D211AB131CA495533C1F1883152CBEFE4C2BF76B1F8288F5325D184BB35D1468 D3417A4DBC15C57E8AAA6E1FD8C3DBBF0959244763AFAAEBBEEA75B978C81559 73965BAB2BABDCDB756F46F1C1F0E5D8BE47BC9615E5EB174725D2B1AE69CA9A 658804372ADCA75EFD9A85AAF6ECF158B44A16D1F726491396ACEEC3604380DC 8003AF974A32D8DFC4F839EE9B3817F1F42F58DC5A4F2A43D2C57341C24B4AAB 53A2551C9468ED0E639061F0EF2096CDAB040830541D06441F013C7CD4FD1069 44F25A0984770E20C945C6CEF8E9B481D19DE2EA61AD17D7CBE3A13E142214E6 790F259D11234A5C60DADE5056F0F87EAB692C7DBE6F1207EA01064407152010 78D6966B04F5C659E5E28921B2B0EE8467B554B52E8AC73D907006683929D0B7 DE34A3D49A840A330572F8AFA181A187466FF9342B2ADE31AB2CE738645271DD 82697E30E21122CAA3E195DDD0A3ACB45EE175D163CE027756BD741E3DFF8644 4BA37F86D5B27D06B394759C2FFDF4656807DF82ECD8C7175BDEE8072A33B320 30A574241B25A6D4DEA5A9EA9AB9BD2B89241F5D18D656AE7E3BC84436939489 E06D03D85AED77465118037F521A80B4B7D1B1426D7E347EF3B5FDE2F6BAF8A9 049D69296DE0BDB7709DD15E5AF402151B7C336FD03CE92F64624A18CB274033 36C9E5F7B91B3A3C99EE5898BFA156B413FBCDD884C77163B99EF031D0E4FD81 A6C555DF62D78074414DD81AB57DEFFFABC9DD43E994E6194254D4D54EBC0699 B019575ECB3776F20C91D87FAB10D07F8B9138A4F644690F1011E304130D735B 74AC9244E612158CEA47E4DA3B57C80F2B19CD5BE0D60BF771AD3AEFCEBE9B38 26AE1E8E75C152174CA878172A6C9F4751A70AFDD0FEDB405C76C4093B03C05E 670FCF744003DB693C7DE3675FDC2181DED883A34DA3C5C906001C25781C7A75 8198AE6A01B897E6FF02B3EF9E8C51AD65D85E1A26887D037271EFA255DCC026 DA960497D65136EE08D2ABE426F11ECABA6F6E4565B677F6236C8C7835AA66A6 10B080E89DCE754B5D4998305D7A15259FBFF42DA7BC53D0C7FEA0E2B33DE66E DD42A969AFE04C892FD426A6D1FA4C157F5BF8EC9709E432CBF30ECB6D386650 35BA80E8C2C1BE94C5AEAE3DB38E132089A4DD46D1AF151DB6778C6F5B53F19C 83963CA3F1E7B5EA92B56E215A38CF09675303EA98F7B134BBF537DE2BA51932 EE8D47AD830405A0EAB2317D6B4BDEF37DD51F7CB2E708A258B5A7961CF6E8B5 D95F24710B0ADE1BFBE346C498B01731EFF99A37FA323390F424815EA796A43E A27EB7654737B090803372D95137FA9998D80ADC6D9537BD72A57E5B94C67367 ABDE6B6665BCBDCD11CF5F14943C746CFC1F6DC2B4CD8F236E18CC521C211FCC C5E6948CBC502C87F1F97B91D71C29C21643AE21DA86C639B1ACBFEF8DD1A869 95148EB5EA55CB2358AE48CCA1B0C53D843DA76B8995C46C2CCBF1659741CC2B 58A5E908D28EE50F63E01CC622DB244D94E2D73D6B626049581E32BA1E1DA34A 0CFE918272316628140551CA8264AD9D2A95721E984FF28DAEBAE3C33BC79C8B 5AC1F3C6301B541931A6EC9C91E9360BC16FFF047FE03FAD5C143678EAEEE7A4 35C4EFE2631B7B51F03597AFA150E7DC1E5EA942B67814F4C196375AE99DD494 3BBD5EE4603EC7E417CC34C265D6F18564D72F30E6B14A8A279019F4566E0D4B 557373432623356BB2D30481166CA3CB5E96384F0737D0F8F4104DDE5A1D80A1 8BB3BBD773D6868C4C445FDE7C5534482EA25CD1FFDEDB1974DD43307BFFCAC2 4A0DC95A25D22248E6D99C9CC35ABCC7BE25BFCF7D0087A5CAC91C8DEF8391FD FE344C4E9B1D6CEDA2D690F8212C282C94B7901175F5D970688C4BAF8A166ECD 85716D5CD0D218A4E2D5DC0B7FF6FEB9516321791B1CED94B5F4F91626964BF3 E1FC0F8017F768A3E1D13E945CE9088CCC21CC968C26B962AE212E6D79745A41 3AF87295E0A81978C2DBF156F4B64AADFDC2698FBE78A0CA5DB50FA90911A1C2 08C5E244C9B94B64DD26108A787F87203EA321B5E818B421048C139D7B107F79 B5CCF71E2595B2DD097028F55F48345A4D2468F513954FEE4B3D4D27EE230E69 29DCF6D8826746EFC6958564009426580DCD3EAF08827EE2A98EBAB47DE45D01 FC72E3869037D6A1B05A55BC55E97E7AEECB6DD6F89F1294AC3B07ED9B14291B 2B0E22583982EDC2296AF8BE7ECBA75B843EC5D4ACB03280430DF55454B306AB C4CA140D13C370EB9996A4E8CA03308D71C2E424A237BE7BCB2FFA5C2CE37A89 4A641B60F08E01BFB95FF1E091FA7B2C26B1FF6AEF8099EFA10B577F0635F5B8 64D9132CE5D7FB5B084E87354F9B6B235A1F49B17A693F3F4A92D12514905428 08CB0DBEDD526FB8F7BB0BFCBC011B85B57BA6C0F991A1471E9BF186862ADA02 9288F9A636C179C77C115F31C3B2F0AA6B88587CA0D93EE4C6A1E20833ADE404 AA59AA62D1FB307024792C20EEDA3BA0F138E55EE0C53DCF4F1D20C089BE1C6D DC6DFB15B7BD3171C8657F79FD7F91435F6981E23E5AA4946293F90CE506C0A2 D458F8EEC1F7EB6CFD04326381FA4986A4269D0029099F51AC6353DDFADDED53 EFA03F25E2098E64B4D015D02D82ADB33C6DACA0B65F78B38A2C2E4DE5AA5ED8 042045C1DA9D4C6FDE16E70490BD471890361EC85174D9919A81D4F4935B3557 256F0CE554F33947BF22B10F458B3822DE0D0941B455EFBFB179DA81287EFB2D DA48F315AF0033855328507C388A3FE1DD7F75604C344882A363BAEED8C8F501 F650F2277E956B0C8C66D23C8CB170123D7C8F8B4012EA1DE7D09F6283276D03 4E0A34AA7DCD1924C5A83B06751765A04DB720E3532536B578744D86D07FBA16 CBD6507220857EA20D622B6D4B789D929F29549F1A083943580BD7EBAE19A093 A25691EA5C1EA9E8467FD6D379BFAA562F6A4CB5886B314BA188F743041D7EA8 B59592A547F93F9DD2C1C34B956C5A00FB67A837AB88D038A62C8F80698E0B9D 6D8AF6259DCB68ED1B212DB0DFB8AEAC05E4785F5B4C70E251B91D6017767629 F20B4983E203D35C9F1BD14C2E4FF698AC2928E4F7F1D3B4D03F1E8FD27FD280 2F5B7748FB3771B398C64AA2C8EC9EC49E4B69EB9BC04397525DD7B4C6AAA743 B51EB2642788E41FB692C2F88ED3EDFDA56628921FDB6CAB9CD4E5676974CBAF A1EAF99F0D478FCAC5CD8A2A3ACBB2E69E5AE0F62A15D8DF71A3F8BDB1B055DC BA91AB23F6D1DD10D8B876B5F483C2DA48A91F939AACA4B2326E181EFB47414E D308D5BDE45E01411CDA75AB766EADC1789801926C722C41B4C8DB6F4C7B24A3 3F94C4A96DB7ABFDB96E1258C74CE678E69D9A6DDFDD9616FC3C1C0329A8B7B8 685CAB3773B6F9AEAC750CC767C683B676DA2B93B8DA6859E57038D3E69325F1 B2BD4788AB01A5CB6A1D3B6F61D90923A6FE3203568751B61AAC0D81D9EE9D64 F883F06A0F2A806EC010F54C19A2E795BA01C8CB2B188A25D2FC742F152F7541 9775E6E49CB06341ED8E5340D68E534152B8BBF43DC152BFE9D349F159C449A9 E2A04537B9285C3E1F89F4B929071609E326F0072A39225B722690848EF811C7 A210310B3077F6FA84187514C2F0A2FFC0F71257A895F81EFE75FC06D220E610 405F272BF3408D0E613293A3B7A76D96E5041C57EBD41911C863EDA68A33A475 11E30B74AC3A0C6BF447DCB00449E257E00CEB91C1EDE9F4BE1F84F76111A2E2 1AB5D3BE08D17925E8606990B010BCF3CD6AB53FDAFE2D7979C74CDBA110DDCB 0C3071811ED4881A0DDB9F72CD8A58F9681DC4610FAAC7379D20CA59DDA6A998 127E4A60CC45763DB08F8E67DEBFD472CDEB3BEBCB7066AAE9F5B00E24D3BB0E DA30CE8C4CFB8A5A4C4D41165DEC367E94B116287ED1212899A1F11336D42E9D 1E6A3355CD2217B40C0F0306D03F9FA4419FBC6AEC6D3FB63CD7AFA0FFFF97E0 EFFDC14648A54C97EAADDFBEAC95A488AF5017F14EA0BAFF55A745D6E1302A3B FBA8EAB798411DEB356810616E922FC625DC3175B00AC7EC3E1AC8B4F815B544 D23D4249A03508584144CBD9C77DB3E7588613E388A551AA20B65F1D4A4D5830 88AE466DAE2AF51914EB69ECC1655D0AAFE2C50EAFC5E84380704C3FD7DC826C 7AD746F1CB4C5587E9AF36AAE6C3FDF7FACE39B41273A320EA8735E956F25F00 26BD65F657A75596AC1C8B15D92F25A92172096A7BF2073E7E1FE823CDFC9D43 9500B37AA0609C79539518FF8B2B5A769671AD07006151CF5B7E0F31C6A943F7 07BE12E7D34E533FB2941C7CF1FFC985778D8586EBC2BB838ED478CAA2BC236D 32A0E00002D0BC5569FB075E8F4F0531D0ACF9EDF126435042C5653571E6DCCF 10A1A9A36302194F043E1294B55846E756CB6C4E9D5CF5E251181B56C682EC00 B25882E634D7B080A388E4A3C77DA4E8671A67875F580A4BBE6ADD6085E16A43 E2C52A952EE27675011AEC7C33789EEAB3D718CD87436E9972946831331641CE 6AFEC8D9EEBA83531AD48742800119A8E972A791AA0F8803794DBB6517132A08 E71D61C24814081E56DF17651E23EB9A5A4F9E323381ABA72338152EF9CD19C1 22EAD0ED5CE0BF403C427EBF8969BD73661ECF83DF655631330ADDDC6133D87D 9E1824659238A1E84187D07A1414FF6ABFBF90309BC5FDCA584090A85FC02119 204DE9AD4D8F92BF42BD0B0254F9EB18F6465E2A7F2319A85B79090D13CA481E E2954B08489AB4CD3BDC8E1FEB5F4F9C91B12616F421D18DEDE45DB14D262595 3FE308C36703EF4EF1661B07D5876D356BFD473496CD921EF2CE89F469AE8655 B94A5BA4A54062956AE9DC82CAAB51910D6F232449929EFE9A4603DBBECEDF48 71A503B550600AA0E713C0734DF1895531F320C34CEC83AECEDD264C630272DD B1492EAE1611F23C3F22CFB2EF188E801C136F16E5B313560F04C5C2E97D7581 A0EAF18DCF312C783F8F97E6AD9A9EFEEA7F660AACDC7B934E49778C3E63BE8E 3D42C6675504A468D0DB5703EC06C5E7D7F1C658D739373B8AB3E1230B436108 F08F5494EFC412BA8C6F2CEC4D378E2BFFE577D771F1BDE1C9AA7177C7907CEB AF8595F693F8A5E9BC778E2E2A76950D4540ADA91D6F6ADDCCBCD4123D9CD52E B5AB867F575E98CF887930BF7683CDC9FE5276432FCB09287EB2AED0683D2363 8C051B9F8C770062A4943307B71F90569A1FE89C314856496D9C3FCB92A2CCDD 1462B5A7A516435BAD59CE2141987284424DC638F20F7122495BDCCD8CD61B6D E9D7ED2A9E24EA8E05D46A8A89ADE0E8A0AD86353435640E669CEF27ACFA3BED B98333A47E7321978A525F55A5A66E477A3D4E5C1A97E1A04D21D2A9682812D3 F212F7024CA667E7CE6AA45FE3AA44BF43C2E77FA78E211C476FD092576926C6 014690B1962AAED11634E295DDAEC81C42F5F74D15226453652DD7AF51347FC6 1BA9BAE153EFDDE150D04A3187CE193FD78D32BD67CA15338AB9E96EA0E74552 9E15B2AD2DAF30D70A8BD98959F7C5B2A5819C0EC74F3E14BBF5FEB98C25280F CE44F1558FADA86009B5B9949BD90F7364E4AF92135948A1D028758F30E57989 0DE6F7FA0300BA5C14D27290CB48A65BB74187055FDCA89E9153D670625647E8 22D3AF1702A14151D00074FB5F5BCDDBD2C5AAB80B1FAD24EFBFB2A3C07DC7CB 5BA1564BD81F8312442F7614EC74C380507378CA11F9165A2B69731E500DE6A3 44EF69FC71D04CABF77A43192FA95CD14EE1035F9D00C93C5231E5529C765F0E 3E2224C5012CDA0B9C4FB3A9052F8B652603A3EBF1E7D8934BAFF0CAF8DD1EDA 9C4828D9E5AF8955FBC6B9CECCCC3800A28E4269F9A89EB9DF0FB571151E21C2 103AAB59AE05FF67D2FED4F354867C8B7704795987BF031DE98F66C99AED8BC3 F04BACEE25B794B57C480E9FC883681FC0234FD207770DB77F80BDDAE051BFD2 C6F7779D08A94645E3BDFEEF9B046534C5CDEC2CB3958753AECD712ABF1D2696 90863C97EF61C59045A1CC08D1B197674848B7E3AC84595428E2E7E1C919FD9A 667A638B41B507FAAE15FA722D19DF1F6E58CF7292104D70E159D45BC94EC488 57AEFC385E95FC595D7B73EE65AB2CF6A56F4AE83D9C5690C1F53DFB783A6F06 F1039A6FB4C1200CB4EA91FC02D269894A53CA9FC784F150FCB4720B80AEB2F6 E45219E0EF8A5E323ADE5A03454C4971299ACDB79484EEECAAAF47D4930A91B6 80B65B3312DAEFA92FF967A8F53C4C88A00070374EB4846778ED0AFC733C7384 640C5CEE53215B56998445E67F14A3002B48445AA90898150CAB0048F54138B5 29DF075911DF49730E96EDA7ADC3C0C72FFCDDA568E71FF50BE85C2DCBFAD0E1 A11ABCEC9AE9D3B0925283E0474B8811818D21D9A9564108B874721CFAA07CD5 EA403A481C9DEC998148BE32CA915BBCFB2BCFF25A149B09CE561D5233F02323 044D3CB85512BED09C2A8430B756DF21777688532B9A9FFCC6E1E908EAB8E55B 584C9DDB9D4E5C94ED92C0E725F9754B51E9A29CB49859A272700E42F8DAECA1 6F6AFD0794DEB26741C298E1EFB50C60B5647B986E593C3EDC58AD45D3447C82 626589B8FBBCED0CCC4E2E279178133B5F6CD7AABA13AE9BA88225D7F9B493CE 0445F85C84D02AB1201CDC9C1E6C7B6E87B58111AF7E8C210A6DC7D26CF7B4E6 1D1BEF9CB8A361418A3799F51056188DC92FD28CDAD75A6DD2779D90D9F2C480 CFDF05E0E49A59D9A107175F37C1815A58F0E683685545DF142BAE51B9255626 2A8FFFAE45AA48D8448832B1F4C8AC7A60B6F35E6F0171EC61807612E241C0B9 58C874CB68FBFDDCCEFA7AA213FE696811EAB704EA7F1C824FB45999B78B2167 75F597B9CC87F35B7F95DD848B3AEEC5557AABC61881D1F392DB310827C9EDB8 E3CE486AFEB163F3297CD5850D89F71C2D638A7A230A45D1BC39225EA7BECBA8 E81212238E58FFD68289A012CCDEDDD46901B5D4AC71F373A01E7A58FDD147FB 6D8108190A40F2E2E174E5DEC51FE9776CC5FCC9912BEAE366071F6985DC704D 62DBCC3FCD5866F1E766663E01EAA8D340487B2711DDBE75C236D39F6C8C4EC5 5139B66CF423DDB6B1CFB7C798CB1CFF5C19696E9781EE59795DB6EEAB4BF314 1553CE584716527EEA9D3C4BBFC6A71AC033A6EE1BB462165EF596EB2784604E E79F0D85BDCED9BF1A4FD780E5B66F09102CD9A1EF9B7F44A91070F103BBC134 834253E14A7B344E4CD0136BD875A3942EA4331E485BF4BD15423EB7D5AC1B23 A6F98CFE280F7ED6E15C231E8B6E2EDEAC4E695627C4A79886CD13CD71910101 BFA35407F366B3CC28EF8B7CBC742A9B68E23FF365993494B3F5D8EA5E316E11 F752E99CACE61654020A39651DB273EC3D667E577C0277C53AC0F5FF10C66799 DE553F2B260DE6BB72BD871BABCBB4E72DBEDCA5CDA4861E159F92223432CE01 50EB5D0C4848492089FF45AB3B8F5DF1B84D45CB869FFBE70C3B8B2266255784 45F31F373EF1AAF10678681A6DA2CA8EB84E4610AC52F7010794D759A4C4BDD4 CBC706360A0F2AB81DC13E1024C303E89B0F31E935872E6C761108155481590B A6857293407A347E386A8657654FAD202B3102D3383783124006B24E314C28E3 EDCB6E710C7F07102C86060AB36A447B24E2736B6F9C18113998D71BEF65C50C F6B4F045CE2564C4FD25665B511E1B5F26E8229B61163BB28A8FE95D2297ECF7 C7D12DBCD33EAE70B0805CD79E0C759CBD995240008A61DBCAEECB217B4C4FA9 D25DBCA9C9091050C091DBBBC228D13E4B50C721293759228B30ED75C1B724D4 23E7F9DE7C1DDEEA66992BBCB9B2F563AFE77C3E610DA93AED87504246F27F18 F5A49398361DBEF0CAFD77E8391ED9AD894FA3DC5571DC2DAE65E8B1A299462E F5BBDBC5D782DBEA842DE7A24B78399F96C0990D2C4BCD85498D3BFC3F4338C4 0A682E755FBFF024E8B725FB483A6426E7EDD69DB20D5B8D34F39E5FD2467783 1BF9D7734DFB46C43AA2FE8CB7811F217F7FD3A7A02753D85BEB3549C7BBF432 A00C8D9565EC7CDE4815CC250FAA96C265170C7426B18519D2B8F99A58115A8B D0AE4331BAC1C7C86DA6CBBD73CB132D7EE6A49B57E8E8323D3194120AA1656D F4AB7044CC67339B839913B8EEA1266A935643050835ADADAD9ABFE445881426 BE0160A349239B77AC046BE628E81D85B69EE3F2CF02ED622C8B94D548E1D447 4146B81BB7336F3B3173B6A92091449A276C13084E9C080EE740C4B6CA8C3159 4A803173FFC39FE062E766DB6AE2EB535082C0E95C0598761BB05D44DB866024 67AEFF155785FEEDB3D9857C86083F0283A021B9E9BD6BBEDEB41A2D4CDC5912 D2ABEAF6319A6FD7B6EC2017E61339983E932A5396CEDE2BCD091FCD61CB8E7D 447351B01F2AAB39960F662EE0B9932F0962E9004DF2F02DCE5988CA1753730B 0B71C4F61E12BE62C87A225C421E2FCA80986BAB9623C7AB8DEE503B468F0409 68658C60FD837E3D80A92DD25A234C728DA63593810F97AF486D805751A69E9B 2BB387F4FDA2BA2305B9057280D703F76CC1EDEE8A689469E4AA11A1549B2803 92EE5B742DE5B82C4B6CF9FB14511C1F6A4715CA304D377F62D5A85F9A4312D3 1884B1D0F631774E11B7381F418C6FBE3CAECAEFB3DAEF139D74BB4CF11DC8BD D0164BE66876FAD3132AFCB234E6552E175C06BFD73CB0E155E02F33E0F97BDB EEAB1094D20236F62C5EF8C3789F18B0B1CA3EDC7EDDA9D887A936EBBF30CF43 28960BF369A3791F3C8575F7261093F2BECC2B012FF19A49C031B0734E6E8474 1BCF0AEB9DED93DA50A3872C134859C228B72826E7B5A87DAC8890597E82B3D9 5B6E79C44DFFDD28A547BCF333909A2C06869054E581ACA10620F4F1D357CA78 FE89A57C35C8764BC55330E8CF8DE2CF7AC168A6544424C002134C8914B01E9F 489802B833F4A796DA2DFCE7D7D86265DF5FBBD0CF9916D5FDC926E1835C340C AC9A1C4394A8E9DB796DB924A63209FC58ED1A64CB826B92C5264422D0843AED 171B9B995285481A764C2D64114A4935A874073D172EC2BAB0F006C84CD14708 6F5AE638ED3C86FA3100569A6D75476C6949F725AD070F8EB01B6314CC27065F 8BD84FEC215CC16C7ADA7A2BD206BE0E6D4B0D70BB48E89980C7AE2B3E4DEE80 6B68296B66829D60397B1BE64C22E0904EF23DB5804CDA44B1EE28860CEB71AE 320750EE80F1D5C91EAD18312EE510D1C96729C07871A8DCC82A8A71AEBB26CB B0C7C37CE3062260BFF93C48CD56DE0077B1FCD780B73190CFEB314B5ABEDF38 306F9D8836266C46D832DCEAE8BE77CA569661D36035ADAE452A7B6757F9EF2E 1CBF9787E4B14C075A083C7B2F09775292FB8511AA26489A044E94847FC8D727 C9DF0544F725D912EDB25C3C9687FA096190DEA954EFFA09DDCA6EA3593AAC8E DA98D2A8994352461A7392B7F4D48DE7268FD57571AB7F1D73C368ED798C2DE7 099B6A2C03BDBF2A9A4B0F211A0FE0DB0A281BE941D52F6AC49C520D4A614315 FAC82E25BC95DF3E024FA906604A51291BD42B2C03F43628CBE07B172036AF77 CAF13E66EA7D507DC666046BBB62E8D01DEED5FABEB7D458C1F6650D7C0D2FD7 B310F278FF7F13697562CDE5112AB7278E3CDE4EE83AF3F8017D6AD947D64146 C279020A20858E0C8E5CAF3FA9FE1821BD65DB5614F9113BA05A6A854BEF0D87 BAAF86BF1A94C5E33E665639E5C62A8EF2053CFB2551593A373D1076559932CD 276F63C8A13A7D8B0CCFD3BE9F942CF74BEABA2ADC931D9FAD4FE66B9CBC4B4C D158C3CDD30DA420A6652C2A6FAF94130F3F71D5BE5CABD44A26C62911D16AF3 DADFC338CC35661B6D70F8B7DD3E9A27DA7AC82044316104838184384B06633A DA855F6EA80A88DB4A1BE64AC44CBA941D620EC6D9B5CCF2146D4D1267005A3E E4E5B30CEF41E28146F8C7FCD220723958AC31BE12360E604B7CE0F1456B1CB9 2C3FB8EAF1388B0A8801867617E472874BB7C9667F7AB8F7BC50732C13CE937A 19BA58E729426EB3743557D41D5FC536F7DC0DBEBE01523C5A5C4CD54A7CC7FC 886898F9910C62B8DF66823E82ACA794B564E9791C0C8F1E8F63544E9C5C8DFC 7CD85710C0CC5810854C50CF9D10AFC22442935FC26B162F12447C386FA9DCDC D6CB27582FFC568D814B5AF1A2493C5DF3DC658ADB6672C72D06118A79C1482E E75335821036D472E3779F804A8627D65F933B7D90A81C12C5A135DBFF6A16B3 FA0DC478C8D780A4BE3FA7FEE77ECDD8BE31223ABB7BBE730DB3345839073F1A 6E1E3A58CC31CA4A77D3C3FB9B83A7C1C68D0EECA0EABEBBFF933529DC05C6CA 99AE437C889256C3B16431A11D0F912DFB140F9B705045A7DE84E625122B082A 7AD198243DDA2E4C48C98052946A20EE58DF09D514E0FE023252349236B39C25 6A7E252679364A507A9CA2CB148DD2420193190BE06E8D1BCC8BED716A4F975E 6576089667153158949E017AB65CE73854F97B213EFE5FE56CC9770B029C0AC1 20A0146C58F522FB9B3F2F060C7B4C5369C7B1B1D48FFBD26A111E691821CE6E 7267BDEE7CFAAF54EC00E9078445E0A5673C8F4A58E1D5B0797BF1E35D8C7A15 D4A3F0F6E7BDB700105579A0546BC3B2AF79E57F7ADD64978812D65256FA9AF8 4BDF6C9A5EAFB23848C8223591959CAAD5D324D2303AAE6AC64D501E38DEA35D 40F8E94DDDDEA9B21D01F4697D4FE18E5F6C70351757A28941A0C397764E6570 B9C5BBAC91FE41894D58F659DAF94FFC43C7BB679BFFB0D3F626F055077028B8 901D9D060DB283E2325CA4FD178BBDF4C6B8E74D16822FEC8176AEF9CFB7F698 C58FD5866B8AE49CCA8D8604998A9A414358143106205D36A5A33D107BAE8E5E 0C728B92A568A937DFEC6A3ECEFF1D3FB58F4DC446897A5D294441A330BB550B BA566BD6EBFB306790F35B9E7A39C9F31DBF3965445171DBF71A742847B68405 A2D04EA781EC124127FC4BE8DE71BB2072E86846AA636B13FEB04CA868500D82 D9AE57BAB1CB1B22613770EC01CC7774EA4C5E9BB4E9C2CA00FF2F916FB14390 E2A4C7201B9A4B4951ADD39EC472EBC40DDB9DF7481985E000519ACC9F1D0CA9 08AC0C56031EE66E824C11261D8EF335C9A2803A284BC3972576FC83B22ED929 FB59DEB5E077C4D6D068189DD4FDA6B8D61B24AC93CFD1432C40621C0194176F 39888A38B93F74F0CA00089124D3BFFF1D8F0C901D1E10B3B58FEEB7C6A69C28 212E5BD0D6A5A2AB720BDC3A53D6AA0DD7212E5F8A63FD26F6D3D40868C6ED65 A70BFC5B69B6A923ABF174B31E14C6DFBDF8C62BF0535C116E49FA05476E9F25 02B3BA6CFFE7FF99C73365CCCFE2ABCB3C34398CD3C490EBB2FE120BAD711515 FD42AAC3950C6427555CFB25BB2183F6514B53C0B3D2A2AD4E67942682D7853F C0E66EDE2E10F8078AB31066FB9D47C27C07A1596560F5DA1904A9FEA0E07C1E B5231CF699A092BCC12CAADB9020F0878217E1FAF92E8AF20E98C98D08407143 8DF32AD7DD16059E287702378C350B44A01868A5D248E3B7727A17982E8AD157 F83F054313801409D0CE232760DA3852D674076F37B807B33BAE5EFC088E7180 A58D437AB697BAAEEF08540D60D6DC39C0AF7694A64A958E5D6CD9DFC96CA8BC 58ABDDAFE3ED46F72BAA89FFA3968572212F49C858C853F2E92E8A7FE935E7B9 4BDEC86D0FFD1BD1ED1AE285062ACCDE0EED94F67B7B08C412F5365DAC051826 096A1AD3937C20265D5473084B1F7A720FFFE193B4AF025BD83E3C23073419E0 765AC59F3E5CA7CBC544C88657E45584497AB0C58FFC189F7158C36BE15BEB04 95656C597DEF95F6FC8C85C4CEA0032C655C92D487DA3E239205014684D867A5 6DCB2227D0AA87D3971D8ACACD480C202AEE921965358B0B9AEF9880C9D633E6 43F1E08BABECDF7044A4B139A35DF7B031B2E53C9BBEC6242CD0EAFEC3229751 C127E98AAC200BBF4A9BEA0B7406B03415D71989D7DEAEC3623522EDC0E4F185 D1158108E769B06E98C1CE99282A694A7A3890678729BA5F12E22EE450331E9C 997580A017078D416B2FD22AA36DB83B695D60A1E5F2C5BB3B95BA0FD61B6364 90129ABB4781A43738D1CA605C27DFE179EF49AFFC92D694ED6708AFB07C28AD 51479093680EF9D2BC0F269BB98A70E839CDF43FE022708AC667239CD844B7C5 0964F325859E9D5F2F27F0F7EB17C6D16D61B201829DF057C82A457B38265A66 F9A4A5BC82B6CCF134E01CE435523F4EB54EA7566980FF3CBD975B4CB7945535 9CEAA4C012ABF5CE038A97688E421A7667B69EA6AEB26F388F9FFAC566E508D1 F6C3929F0FAAEC07E981019A54C28AAE9CA32985B4A7DE836A65519537341E89 493940F934A6C4C038877726812D10A66FBAA083C28DA3CCB346F77DF26C0C3A F0C7B8F6901C7EB1BA383C7F667710E294772FC783254EF1124334E3946D0C74 EE784576EF9ECC111CC00D1C3CED6FD3367E4291F449C037F0E8422B7FFA881B ACBACD70D9462ECEB725FEC1B4E1DAB04B06556FDFA0D715E6BEF8A72ECD6877 682718C668DC21839AD7DF37BF35A3B5E9E4CD3A3346FEC4B5DCCE10340C0F83 5926D8C37CDBC01CEFA0E5CA178A0F902ADEF4DEE248789229B5F999CE63836C 28BDF184BCA29DFE7B669483B465F64BF85F7631DDFDD952FFFB1ED2189C0ABD 2C8E5FFF27767E7803948E3EE9C80394458FEA4B26484C32381442297051D396 AAEFC39A43AA5DA451CF5C614603F1839B9B4B5803EB6B38876E0EA0F0291D70 1BF03B4BDF4EC5BD96FCA3D289F334BB12814E209DEDFE01FB03B6F16BE3A48C 1C85F180B9D940BEF59E5BD3EC4F3E46DE790F0F76604DFD586A262A8B11C39E A7B402E66DCA71F35B7B3CCD54FA4C602D87D7887B915BB48E06692AC6C1F1D2 BA15A8F33B1EDA806B0D38FCD067C61838EFE6C387EB243190312AB09B58F53B 453D2A8481D60FED04E5A9AE214D68CB8E2691C2DC9DEDAA3D77A27BEC74F57E F95466E21971B4DB33C2AC58AB580822F569E1704F281CA77B682956D513A984 654668FD581A323FB6D5D7EDD591CB2AEE9D433E706F75301C8B900E3F741279 287D15DC1FB8CFF8362EE9DF1442D3257F24C64946E54055DB8998F9E7C03686 B23EF3B3313EA62C76B5861A8033A4CEF19EC18341F4D4C624C4F9178CAE24F7 1280210EB705F994581F58E8183572B250CDCCE4BB1A911380F7997BC3223658 EDD705C4992043176BE48D388F338A9A664A0BDACABE2ACBDCCA5446475E17B7 5E74DEF8F242B7A017BD09C9E863658F00FE87BC278551B03219CEBCE898CB4A 202DED23E140DF2AF4A2DE2C06950400834ACDC6788256E21C58F0FEB664EAA6 F91A3BCDDCCC93786C469E74C914A8A161234E63F6268B16323C68FD4C01595B B9FA0205F26BA53F532656396A3689420946991A052DE69CD471B8F104AC5470 0F373022A8CEC054EA8DE62524A0F3154737DA9E78787D1F3D20A9D75EF997E7 968816072B3A6BCA83042FC89EE93EF4582BFB4CFB97645E25E11A639AD99626 51B2155ECC743968028E43C863F60BAA69C1EC0793C932E3CD40872283E49B99 C343C360603BBC0138AC480D151FE6D7EBEB225DED9F99CA31740769EA22A935 83D1F459FBF5069D8EED1E7E4C6F07230BF1804602712ABC81DFC9226F42B859 D8D7CA2E585D3CCC0B417F06E2FE54298BFE966C3CBEB651E9A6F2756501491F D3676D47DB6E939A05E2E82D62BA2E49CB9B5344674F249BF98F3A96C7B0A85F 122E95414950ECF3210729C73178FA3869630B74BABF3B7FE37F063C136B097D 1A8363BB7A54EBB1E81BD10C1DFB5877B3C235E314A376FE650D382569A809E5 0E9539F47BE52ED79E3E0B12AA7993469DA524B9417DCC1A16390BC79087F9B2 10BA8C50426433C43230379CA05C4D878461A64F36495811B7EBE5809181B693 5EADEA347F5C2F4EC69AE0E24C38AD68584296AAA99D8E7E0783773D80477795 AE5709F7CFD2FF6C0B968E710AF39DA30A692B14763940F3CA39472978A71CB1 28369A173C74E080A6916DDA705E9AF4A965AD866EE4E850E0C314F05A45696E EA135A5D7C428FE5FF1DE9DF3E40B5CE1B8A1AB9DCC305279AFAF36324CE0520 3F4B333E43176422F685D819075C3B061AB7DA2DECAA4B1B0AB9AC3EE56D4E3A 5DDA327C074C1799C3D6C657F1AA3C2B4210F1921A3AF08DE7E3D70AFD46627C D216170E6188CCB9074B77E09E599FACB8FC11E67011F564A48F14C7F2877620 BA982293FCB457DA4542C4A78E362EFBC21842C181757A646C5AA5A970BA6E9C C6288AF527373DB34C24D9600A1B89876AFFA98B07E94D7CBE2DC813663AE1A6 6C2B596556AD3A3F92BB3B3B28515A345A370E9140455F4C8388FF9417C3D18D 95E19BC2C9115C9E62607BD5B36C3ABA52C40DE77FC006B52B1C19207063C83B 3952846A435A5B521BB154569BF0D79D455F796A0A19B605D443FBBA7BE3FD0A F471285D86D825366D63125E1B3188F3B483C9209CC139B8355F9489C766BFAD A732FB2C3443C05B99F82E2DA2904AFFED887B8EE0D86FC35A65106A38F43999 DF3BCD03E2EA17E7F19B4D56F442F60B0D5EF72B31EC046CA5B5F384C2BB8A8D A6B14E7EB37E3AF24A219DDEB1FB781E688EBA3F4EAC775643746D380C5E3554 E5B19339766E5E2A85E32F00CA36408E39088A55137EDED66C704EC9C6D3C2ED 5A6B16CED2A42B036907D3BCCF7CD74666B823017857ECFAE6115D4A6984FAA4 AAC7FA2F3F01C4E9B1E3410711B8F1ED7D6C11EB0A2743324A563C2E9382B4C3 A35604C174DDEE065685DD1D288F66BECDD70322F268891A9D0535F53261E6CF 9A078A3E86542D530E23C27AB1A47195BEC1F943340FD132CDFB5ECE7B9AFE10 C5546A35BFA94AA72787A75A482D488D2AFA27D5904DBA831BF1F9EF59E5FE42 88644C6E28F1E243D664FD19781FB42BBEDCAFD3D8DDAF743DABD2456307981A 30190C6A024A20900C64DDD8ACCB149937C93C74C1B5BD44E47C4C13619D75E7 EA7B460E79450E30269A895E285F10D0E12CA8BC11F338A7672C8A367916EED1 61BBC5DCF9527D1F661DE64095C8FCAE8DBEE80EFAF8F6BBC19266EE05214C53 B7D4D66121573D50BA676141462BFFAB3B10142BBD557CDE258B457E8251B95C CBF72CA3E67B3FF3E432BBE8F984FBDF46FC024F56937BCFDFDBA86698803665 F691339252DFA34C83E5EB05FAA6AACEE8B756B84B5ECA619CF0FB2114996FD1 2E5789D83DBD356086FDC479CC21CD0FE72ED3E13C629F71581637F81E011686 6D2E9240C840A48562BDE5006CBFEA358B1C2064CC13606844 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 43 /plus put readonly def /FontBBox{-36 -250 1070 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB 0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB 8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30 4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632 BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B 041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721 3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762B93EC4488CF1 43FF3B2A427C5E1C756D1925B14DD861740DB6988068262559A6A8F0A2794D73 A7F921F51FB8B769F5494E4E5E0E95C2B3B4ABE0355D63F075E0980CBD5545F6 64F7175899BB0B1E29D7C2504CB59384FD67B6FE1D373075B49B8EE3E234ECD5 9C2AA27C689FAD272B5166EBE5A005665C098B726EEAEB2E514ADB52AD598A1C 20FF97137799B132590E7B7D34CA7F3C8A4586AEC91CE06BE88A9DE0BBA37BBA CE09C3DB3CC559C77F76AE0CDD716D5CF63486F4EA989370B2B3134F6C620534 FC3DADB971ABFCC70A23686EAFB75F47D179CFDC77D28492C0855D83988DA5D9 494F92434343250D8E88677B3207166E577599C8ACDD501B71C773DDB4DA8653 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.1: CMR12 1.0 %%CreationDate: 1991 Aug 20 16:38:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 14 /ffi put dup 34 /quotedblright put dup 37 /percent put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright 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 59 /semicolon 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 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 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 90 /Z 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 126 /tilde put readonly def /FontBBox{-34 -251 988 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E 59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F 45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE 96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D 9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB 377D3061A20B1EB98796B8607EECBC699445EAA866C38E03ED7D4F3EDBCA1926 2AF6A41F67AFCFBF3630C943FA111E4CCD988A7363F7C2B75EAF5830B049460E 0D2B337988F150B9182E989E7750C51BA83DF37685483F86D1F47478883F3F6A 4B7F768DA5AA89E8F163029ADD4A9209DE8A4F285766C06EA859639B92CCCDCA F59B1C2BB8D588CA754D1257BFF76B53984DF4937093AAEF79009D32A29A4C16 FB610C7D6713482C48D7F9E8410C0F00AD6E67021056B6035534E79F05D14EF2 4E82E16D7835A9B1C8D87B5599AB5C180F881CDD7788A22F1F46238D0238732E BE5C2403F76AF9679DE5505C1C5E289FBEE7A53BF841F8D782615F1C849DC8DC CE0E9132EAB38937D3216225CE96B8205DEF173450BADC49640B964A0ECB785A A592F67E539F166D4F9CF9A6B7EC96A5B8452458F3794E777EB9F4E9CEB2ADB9 6A452812C8A8EAE641E41C732606DCF90CB8E4A4E15EC0B1D570DA9202029326 47B10F95531759AA33E1DFBDDD7C3A4E95E3DDD782CCB410F19C84AA58C0406A 6ED587D033F89C1C074C04545A6522D5E5A9B5DF8C70F0AD3217F9E06EB6EE0F AE63F652EA8B15ECE9A1BF9C5B8C32FC3C776F0AFBDAF724F515AB580163E62B B664C16ADA4B5A4A3C01D5FD2BCEAB5409CD91A95F67F3220DB27339270CBF39 A8C76E0CADAE37AA13A54834118B7EC9F089541C24C1A89615351D5E0A405C7D 2F3E3F68555B7A3FB5D5B40316A82D5CD562244A8BA7E44AFA209EC7F15DBAFF 23E12DBBC6D289FBFE5735D0B35B73EB4FFA8807FABA176313E971B45CB7CF1F 308069FDEE652C7370FB9AD731E719081460C831DDB30B9F7318CC4C913E802A EC48D780B780E13EFCCC532E511694BFCB327ADDA329BA39B91ED043B59C9BA8 BD5A8F93002638687A2A0B26AD6F82690629D2D5B885D136EAB826C7403CF18F EB0C1268C11841750D206571F0162ABF2B37BA3C1CAB064C6F0DD882779BBEE3 32F4B478D5800C61BF2EAD8F6018400FFE7B2F636F34423E69E46F120BA2F45B B0A0FFF55C10BB00719BFB83BB6B3423A5F9B30D75702F68245DB2880BA7EE6B 2FD3484D1FD4228D06B615DF75BC74B156DC03C204A2ABE5B906852051EB768C 3710C0A92905D1EE525D595C75CED53E81F2332D9B7E86C6C4608264F6C57303 98D67CC63169CFC667AC447EBFC49EFB62C6AE4A32BC78BEA2BEB181C5A607E7 621C29F634D4E10079BF02F25DDDA2679F18450A3EA8B3FB2528ECB1CFFCE72F 467ADA8C89E592C701051BC6B89E4BABE0F982A56921B52A627FACB0EDCE55A7 A6713295C8F71BCA690A3E3EBA15A2DD4CCD2ACEA83059EB465F694004E4F988 CFBE0D85C212136BA334B3AC5084E64DAF82E2ACC1DA8631934D99CE60DC19DE 296CF792862DE8B091E8B2A9A9817DCD78E29CB253FEA323C306A8EFF744F62E C22B0172A05C91EA8034500448429367A9FEC14C17DF25FE0F4459058586FCD9 5C78A0ECA05C088E542D570B4EE3E2B1F4EAA1F2345F9291438871FD2B92108E 51D1A36728D244F6A9401DB6F375F40E17FC5249C7B1372B58A54144B01E878A 2B0180E7AE27E383F47668CF3113ED711BD72C7BC064E46371306721386DE349 D424ED4A3E9A65271887C8824FC906E8985DA4EB9DAE0643081860B9A11D0226 6915D216B07434BB0D54CD854E77AA1B1852235D8F1BB0DE9077B0D28CA560A7 C61A2CE55C2436E6A492AD269900A3282196D0DE13D09E5F59281867664B6C0E 06328FE54F14D2CF030B0ED02E22E2A134284063B195427A50AE1C2BBFF5875A 052205AE2CEB343061AA757344C96C97568976830D15193E4E497E45F21B1EB3 BD08D29B649E1E03B0FC5446B3D48144EED9E513F5BF092096516F3CC102C394 694AEB151A922FBE9722D3AAF31F009F5B9A6CE4D4803225630EBBC2997DCFCA 545A82AC7A6FC16038D1E9EEF18F95BC9453656281AE413FFD31F3C29242A315 3AB410A838C36B086BCB8125DEC0B04A5715BFD343227B52D061D0E930CF0F8E D637187E4C0CC1A09BF8EE36F4299ABCB0D0927ADC026EA62FABE7D8660166FF BB89070B251CAD55262643B09C525184A21254EB64A06F2E7CC6C654ED847C42 7969C9EC327A0AD225551201D6CC89C52E266E243850F60C6481E59B82FE9F2A 57E8EECE685ADB12918C2DD1858C53504913FDE18F006A59080DC0129DF0EC0A 2EF2D348217122E8D754EB1BBDC4219624B0DFD299C37057C218DF31C8C03DDD 9C84E207CB0EA4E241267E56396F2CAB4F502E9A81D1819EDF533FB7BA465B72 875E195146097F82E32067591CED6466027B793D658470094BC5F9C2CECCC834 70467555F70B2334525D051C7CB1D02976D7748272D3DA37F51AC44E6E41CE14 9D0477A811088395CE8C021608C38A94EEC9CAF71BF5049C78BC34DCD58BEEEB 33327C0A2DF239299BB1C829E780CC9D3DB48EA2542AA71DF2309E932397D10A 9F1E8A2E4E1AA375CCD00A0FD0162BCC050D0398841D7F223F26008230DEC6D7 72197F1F8B1EC245FE06F6E0166010AE7B2F318DF63617BB30267FBD047E49BF CC0451CB199CD2648FEDA174CA6B941C5D2AFDB34B9C9CEFC7B4197914EC9108 FCC6ECE52E37BCC92C001A6D4629006F1D5BF4A3034442293AE496DF7803C330 1330DA5B05A273D34BD2501F808153D603ABB4E6D655C210D465F867C6FCF404 D386080C8669D8D21A19170558024A4D6D3782B2D812EAE7F349FD20C17EFEE3 5CD1C2C535383455F9246F04DCF216D969AD9D3036D0C8484F935B0755AE334B 7D5FDB49A61276FFC72B456A435105364B3446F80D1623C4FAA619AFF4B30715 E6789C7DCBA044A8488FA324F713D63109F34C20A07E8B7E70DD153F4139EE49 B9FDE332C732CDB08090941B5BDEE856898ED662ECD5CB38D7FD92574D4742E6 390FFFC9848D702A793A54B8B31588B4B5B29145F4091A085C81FE7FCA3DAC54 89A7AA9ABA026EDD0FB80A533186AFA4D9716986F5532A69A3F720CE6D122F48 10A8CE92725D3A1B3FAAB05D62A766E0F6E7FFC2859A5046B30246D7F581E996 8BA0BBD4BD350A1AD4E5E17C0F8E6F248E4ACA9474839131234770F8BE135CC0 673BE93591D96B7996A1CF640B5BA58346CE3AEB5D56A30E5189485D2E100E01 51AB5D3FFF72B2D875D78E56B7C31EDC550C4A75D053413D4AA6818E169E5FE0 DC39F83C055B5E5785934A2492FD5A0EC8F3A36C773521B335E3F9259AFA232B 2B875C6B4209F1AA307F244B7F049C969DEE1D482A2179A3CA8DC08097E4BE8B D96ED65225FB21BC29D161E8FEC18F5F1C372D027FB2472043CA11857B273695 ECF469695167D82C773B9462B5A5229A143762577D71DB2FDC01C7A89E67FD6E 16F10E9140212900496DD23DCB6C0148B0FBFBE0BF4BA8D0CB0672E1A505AD7D 03F44F4E1E1AE1EF9351FA9CBE78506D31B0670008490739DFFDA3474B7A1F0D F35EA042DDFD92F568CC694500A604F037E2E34A1908F5DE0FA37907C353E66E A30BD741C0FD86E375577DA17773A67C1E08D4FAEB35F0A12DD752648DDF660F 36D9FAE785A06C27E961966AA75EDD9AEB86FE2DE1D2C25755525D2A753DD18C 4252D5459C65F0702EAD90DC0A14299C722AE9BF38F0914D0E2E10906569FFDF E30152DD32FB175048093BAE3082EDEC3E9B70DA6DC6900210F6829FCCBCFD09 3ECE3C2CEB3D4D277D02A9B46961FEC4A346FE4F4CF67B83480E27B5DFD23097 005A7AFFE4EAD0D64E0E1F0073D75A171F972F77064534F9AEB8D017E9B0816D CC46A813C1748B9DDCE282154F36C17E6051033E38CB8A80133F683C398999E8 4F297061357940B4ADF17F8578A89D2D97D1804B3BD076B1B58104206AC8D5EB 872BC4E3F0905359F4CC30CF689BD1A0183EF317205BD2E10D1AFE5C7433583E 18FAA7CE36A695CFAEFC89D3E308F5B929CAFF2902AC0B5CD953A6E233739832 00A2DC2F578575BE0EE442063199A15A35ADF7E84F7FA4656EE122CEC93091F5 F3F9594C9545D765DFC873BD60E76BD3A4770F09298B81B49CE33F7AC2CE7108 BA5FC924B8CB7D84C02DD2C8C47C63E7ACD1EF650715D1355B631959CFF6A79D 575A2A31C846DD44C2937425E01435E830EA1280B167A373F32C1884B972E2B3 62D2FFFF8CBDE1C15D2FA7815D99FA00EF8D61AEB4617981A47E7B648ABB1E2A 3CBA52887C6998CEBE144BB2B860FCD1CD71DD47CBBA68AA81F2BD2A54ECAF09 9C00B276896883A4C6A5CF20D6F7614BD894DDE17C7FEBDC66DC324AB10F2B3D 580682EC43B4AD47B039C0A56531D4FD5880B9B6E36964AA8AF6E380DCCAFB34 D8E7E1BD4F1BADF4B507E82B88562854EAD0FDFBB8C1F7A0466B5523A7472CF8 4306A04CEC6837428944CCDDE968F84047386A2ABA803D6E8CB51B097632255A 349B604AD27B1F4B55CBD6E3EAC22D3080E556227CA217D433B5B6E5AE47D977 EEAEEB3201BEEBDA6C60136372C14D70EA1289F03B49E33B124C32C4D170D0B0 3650AD79C88EA941DF3FC012993557515F266DBEEFF8B22DD06F8AF522DCFE5F 816FA05FD1E510330C5429AB871795E4B107F403A1E9790A8A2FD4B8C1ACE406 45881ED2F2AA11ED1EEE6BBFEDB8C97AD335362844A605F34329741C112AD362 10F1C53E114C98C7D98F4BDE48B3EDB36B533DD3838806555E7CD7A93ABD23E0 4374BAF300A45D403C1E413F4B2121218A19FD22D6EFD78382CBBF843A3B2D5D 37FB48105A7A5AE05C8C50CAAC75A2951B3BC3A480A5DB0A0DF1BFF91D4C32A5 656FA39C945740BC7DFDB016154921E98A0A8E84CF8357CE159BC622ABE0FF2D 4D2007C518F54450736F05B353B0722FE4F47A93808412C7513FEA552F3E11AF FFE45E7D4E34D6C5F7401909179E09B709D28D421391BC3A8C63252988A4BB94 CFCFC0D11433F3F8AF3E6B4F11F6EA3CEF62D0BC69DC9D84B71CC89B631B4BE7 23F5ADF297B66831E51E98B8148171FCC1DD1D8EFED3890273CC2E39F1C20C67 1B354D0EA4FABBE99874CFBC430B24AD370A5FA1D879D6D2BB2758DA7AFE2F43 DC479CCE6FAE358CC1D90F5F3D43186455C714D337C9348009AC2423E2037330 483D42CBC66BEED009B30FE29A2301CABB265E5B4FD77F950DB6E1FE19DDBC0C AA130970D9A3063686867C994D9DB080985C4BD07838917E6407840A3F53E079 0B0F87E83CEB6FC999821F4F081BE49FC8EB73652AF600DFF88F41082E2AB1A1 22928041BC9D203278B98D7DAE54FE1C49E1A954A669302E6C8975B5F7F8EFDF 42374198EE4DB32443FC472E6D184A5D4FCFFD3FAFFD9D221DBDBF0FAECBACA5 94F72A6F3E8418BF835476D1255270A214911B1110129A0DDD602003DDC15393 2CA975799D0FBB07DB62DBBAE506DEC231B147CC238E3E52ACA8E6BAEB17623A AC72E13139F95F77C046DADFE8207BA0C6B5EB22D59D31988F850D8D845B88B0 87694B206D0B61B369837337FE0729C9C5514DE0D09AB50A9D0B4A80C6DFA255 E7743C79C9E54CD3BF3270A3C5427C4345EE57D8F4FCCE152C987213EB71FD5F 7E2AE951FC95D94CB03C37C7E80CE3ACAB663A8C0820220F440D28FFF41CD850 144B90F055AFCFE1EC5BDD64E8F0EA2A43438CC5660F8F282146B2C939E36D0A 8625EB60C55EE1BD0886DD45708D19260EECA293948095FE60CD855E0F1B9717 7BF464CD63E3AD77094C953A7CB6679E67548D4E5F84F445595A296D7E07BFC6 038CB1EA708F4CAFE695D87576583CB843715D669D4E75C8790F2D399EC49C7D 96B993D8196081B58ABA81C2ECB7A249D749E413575DF4796205644E22F82E4B B12C49A69561AFC25FE632EED760FEB6D8F1DDCF4C1594EE180EEEE3A46802C9 80D244914F295219B71C3945B667736D02A73125D770DD25F88D3AA7BD26C8D5 12775AD613C8787D465A6DC9F56D57522280AFC40DE67722E426ECCEB4885840 D9B5DE2DCDAA6AEC137664286EDC61984A354BE14A84D777A311B5371FD69E6D 6DCA23EAC8A9002717F757795F63547B8F95D376EC3086F2AC6AC17B1A1E8634 DF5E779CA6E19B57B4F6A2FB897742B37308434E0EA5DEEB9B254CE476560109 D8B267FFC621D166C94080568A4F2C9C357FA43AB35834E4190EF48D743F833D 6680FDFB8E3791F1ECEA3ADBA8113A7D2F6CF0C3C46D646D1EA2A33186BB49D7 AD587C37C38CFA20D143B0A8C8373A97B56FC821D3719535470BD6C73C1ECA7D 88A9AFB2EB63573D82548549605AFE460BF9C752BBC6F46C0DD808A9DFD11700 2B3C693DCA495933746D66BFE50357A77F38CF0EF1B01567647C22810ED64F8A 29EB47E33792F24B248ABEB75C4C5E9CABAB16D8416D6A9E0966DEA20843DCCF 16CF360F06A61D81246292B67C6647E3F06A2B0ACDABC2ACF53C2B807BDAE79C 40ACF2F51428260BEA168C143E4A3D73F92C60AC7E6210D516797008549D5D08 063C60B48B8D06C348C84B8E1515D52C8ADD979E2CB234D24C2263ACB9107823 2A9ED5AC9934D2F61C446E3E5DEDB3761E177441F9A9A6847C3270A082750CA4 05AC6FDAF8900E3AACCF1B90027D90C5108CC5AC7F4DC89D4B26B38A2852AF1B 6905AD7A345717D81F9766576D1454F3BD4FB3E75D94C1453C61B126D89DD098 7AF840C4D14E04065491C07C592E1F0AA192270FA3215EBD2548947462252E9C ECBF3DC2ACB605659890457C638F9D27C16D4F8B9CA3BEEAA71B38221B7E0A69 E492E848D7F130AC46754C6DD14035C35CC691D14DDE3572650DE6F12FFB96FB 0BA5AEE4EA2D8737EE040805A4C6BBEF515A143F70CC358CD46E3E2FFFAE9DC2 4A919C4E755881F4DE920C967510A7B2D28C82D7D48DEFA4481536DA7BD039D8 D3CFC69F64E38A1A6E0971402A1C71F1DDEF8A3331277662E2C284B9F6943E68 1D408C694F497528AEB3440F2477C425610FAAFED61DA44D4EC5824A8AC4693B CC84E9996C9EFE547F14E968F4C814E28C7F975B52F2E8B933C0F255A471478F 33EE33F7B346B09185315590E912FE72C0BBC3AE95DFC79447C54F2332713C12 24F1E5E12B3E7BBFB985B96B5CCF2FADD93033AAF766CEE292479FC01195AFD0 C7624C62C8893707DC0AFF33A05EFAAA7D0F740E2ABFACA93F287C07BC558AB0 A1672BA9BEE1F25DF3B1C854FEBBD17DE2D9656490E42FFE06947E34CFFADF2F 814890009306F39A2B52662436B25561A15AEA8D0F84370BCEE60904CB3728AE 2806470D66A852936C36933275AF658DB60BD1CDC31281046C9BD281F223628B 25164CD6189747D296E132284A02FF6B673A7CA870BFB4948716B6BA473FD0CE E3B42DA4C744FB597696CD50CFB146E491260A126D94A027A64B6B0C6CAD607B B906D2C24260B5B96B724D32C76E7093267018E0DD096110BB14037886AE9029 1A99D73AA7A0D11BCAE32D673252F784A0C9EEE7C28D3627F46312FEFA779E51 0CAD1B0FC0FB164A7B1CD0812455F0E29D6005504A0F49F007A449D9ABC4F628 4C69C30798C94B9CA3A31B982DDB88C1D5DC9537A7A18174482C218556EE57D1 FA704B67212A8F1279A6C24333689FBD7239297199859870A079A6F13C110BC3 A1BA268F0D62F1E91FF929DF5A05A9B9CDBC17F19C6C7D4093743A41C786A68D D6A9CFE8FF2350F9F94F5D9900BB5E462D29E0BD8EBEF123B3A17A6B8C1AABE9 6078C84C79C1150304FFF50CBD14E7F8B0AB1FF8246B8268CB22CC30C0674965 C28FE149C565E6DA63F7342005DC66DE8FEF1CCF40A5BFE1DE0D791577E3B921 09BC5DCA357B108ED2048AAC790DE75AE3217671790BEA46B31CFDCD517C9132 E73A6089E3A685D7CC8D3DECAEE2B517E101221DA00A9DD9FDF3E6EC1CBF7B21 FD747F2B6283E8EFAFA3835657FD996090CF69A686BF63476F4155DC7F7E5179 81DEF15588A602029B3D9A823BB4382F5CA579ADA4909799907E4F028E3464B9 CDF849D7D0A18782A7EF272E06808891AB16BAE10E262A2BB820D0A105BE6D6F CD54F65FA8B042B9CDB985BF28F05C302408B8D5F161DEF8D201E49C38456644 75F14C9E4A0429710A10A943E8095B4BE3C1259B96C459A31D35D733F89B2BF8 3AB5070FC96AB28566066BDDFDC0E2D89295EEFAD5FB3872115F3DB41AAC7196 2A88AD0034CBD2D23E4EEDEFF5B7AB9F2F5667D02A6CFE7FB05970FCA1EA9E92 751EBBCA57E57C850E5744CE1CC3D2D448E4B617D1C8CD02048F0F4C33017A59 6AEF575A995BD5566886FEB6B9437523E94EEF49B7FB6F4E5DDFE5B49C6F918E CA0251E643A73BB781B50947367022BFAF22852AAE36618C1618344B1F1CC833 7D31A6DA80759CCB91D4799298AEDE6C2D4091896CACFD46F50C703A1884C745 20092A45ED7D3E56CF200171A08B9B16EB19C7DAEEF55DC47050FFAE417B3B14 D72C7BC064C793664A6193BA5C068AB01C4B3A56B5356E481E6C11FE085DFE85 C08DA966A14ADB675A100A1D39938B88E66EC340483A4AE4FBCB6CCFE6374F52 02C1468B1CC01092E73F60D557183E408219F8AA8C3850674DADA5057BAFDBFA 6FCA3B3F0FF07F8967AA3D7801E5926D8A5294AB2626FCF40CD5C9D0EB2C3C66 EAEF173EF308A1A41892A01C54D58505091E21DFFA86DB073FDD874267E31F3E 7906A8A2A81ED2472F102DFAE3DA55B0A5BB34584AB5BC62198C8B31A692A528 31FE4150DE7597AA568D5B51EA9D8B8A5B7BE849240D9A4B7CAF0867062CD272 C7C29680E848C52B10E9DC2EC3BF3BF404B6CD50B63612BC61AB03CE66FA0F2B 7E753E58698AB2D429E8B34932A6DA242BEDAD15860E18052736CFEE5A2027DE 2D8B47438A05EE0E202B5804A180A139398AB89BD6084F3FB90BF3364325E2F9 3BC570C0FADE4F5B4C06F423871F7FC66516AF525128B97D0CB7B586BCD720C6 5B84B045D1827FB174B2BAECCEDBD9860CA50156FEE98EA8EB2AA1466B440E6A 25CC4C1413026929E59917512F1B590369CE216A81262CACF2CA601BAD1DB296 F1CAB00D3B633CEA29BADB838842B4A99394EA420D4C226FDA4120D745775561 9F33AEC5452E1D70C1EF4E9DEE51340C9971DDF224D62B74A05E533A5070FE41 2854D504F5705D60F26706456819BFAB8F144FBD13EC3F7DDE64EEEF8970514B B11D44EC4712F3FFB1CF90131DAE62A36825A1236FB0AE030C03D88C39C4F4B0 6D4069E369C6F4087BF1DA2376E1B3BC6FA12FF3A5FC24FAAA2C67B66046C4A8 BA35A8A9BF6050148A98D13759B60BEF6EE72A7B562782F14CBD86DC9C27C5EE 8EB7B96CD01F84AFF37947D33E3CF3FE175D56F258A18965CAF5F1AC3B865ECA 0CE049039285ABF1D66296F8CE6290C072B5DC49265802BC8048F1C1A6D117F0 A281E091E1F670FB981376510B496A9A685D9024E65DB7325473E84D1F19087B 8C56146B4C8CD9069076AA1136A39AD12759316EC8ED9E783489992154FD7293 20123C1E98F2AD24631EE125617E946549810322329D3796251B31180F5B7023 2F0EF85C8045A65E070B495F9BAA165F1D0D9320CF95F40619FD5E5952B8D9E5 D132FB7B0A9FBC002D37E3EAF26AECE65528737F1639BF193295EC859435E29E 2812E635EADD3DC76035C4A1A288EA4721DCC2D46AED4A346B6DBF278069402D C17A127320FA64A68A17211ECC33CECD3C58EE1E8F12AC6EB4541BB863A26BEE 2C067A269A5921EB9459A40CA9E2A988D771AC90F5D4980613285D92FF75991F 688E6AB74636D7DFD6628CD02C548B91BB515BD68E713B822AA9525D2B80CB35 E9C4AFB4B2A3E27C5B62A5D93A40589E6CD55BFC1E7B6B3024BAA0138AF062AB 12F7FF6D236BA40E9B06788F74918FD527F6B65F7488381E5D8A921403F6AD0B C560EB441DFEA502B06793FF2952EEB2D786BCB373EA1A57598A407AD733BAA9 2AE253700DD8D6DB1DCEC1EB83E067A824133020370BD57E550737219CBFAC52 904BA3DF1077028ED0F0417EAC74B7B2F1E651961BAFC2119D3B6AD83ADD67F5 F20C2843AA0329301BF7F4BA38FB00E8B6906AB7260C9672CC1411E8A3CD7F32 E476B50B9ABBB2EF67FE7595FAFC213DDCF04AAB183C2CBD5A574F672668578D B70B6BDFAF4EAD274BFBDE3F6CC153E7487B388335DCA22FF51260745DDF83B3 42F631F9A98CC8784EE766CE730BED77CE076D9CE343A617C505041756083552 6FDB3B203E4AFB4074F64E267EAEC3064907E99137591E1EF775FC81F0F0DFA2 29416822E2007D532ADEFFC5C8809C734F23D8653DECE4776B17F7F3D85D124F 4AE95E92F0F246E935980E8BB9FBFB814AC621BD2B0A493430C18911E7CCA37C 1E4827F88346A3E368550286477ECBFE6D58209C8AA876196EFB5E2EFC71DFCE 41AD11477BA5B117389D1D4D9A92C591425F5426A4D25549CFDC9C3276D13F77 F22D556CE7C2BAD924F10F3D6EA49CF5243A92DDD4C7EF760F7504FECC08E6C5 C78BFD6CC41B619CD6F51B809B3EF0478D1FF0FCBD959FE59733BEB212A3B14D A8AA0E667FC72117A3D31B55B2C06EDD17E44AF8B9152D716D63BE27037D296C 6A4CBEA63D38EBA7D8C07C488F8EF1DC90B7ACAFE69177AE59562267013A6F48 1B0804EC43A21AF3097E34C837D5C97CBD30CD69011B4B0AFAB3F4E6C3E9534C C98C52711BCB578AFDB111374E84402F78065EA02267E57B925134FA8E2C9D3A B75499106E77FA88FC7A599E494CB157B119D542D5C084AFB7E413A511E71F15 81545C1F89E2119E223104BFE7CBA3C6BDB7623C70978B754FC2C612A9784E3C 30F981C2AF33A19F72CBF9937F7E1F1F0B9F96C226F327B42025FCC1CF273367 EB4578A94CEDFD5B2468781C07A6471E41F1D2021392DE30F4A6115B9FD4D1F8 7D72907E36F7B0D7D47E6D44F1C2D72C46A5FAF69E8D2DF35947B58DF0940A65 2DCF95B9951E639BAEBE86BCC0430C2CFFA6E481B1BEB7CD950FD85639ACFB17 7CC2B0478870C5D7FE40D59CEF22C29AE79F13BD37B7238E0BC438026A18C48D 28D641B10B6B0EB809A389FB9E7170C8F7BED9819BC8D8EC0A43C38E331B7D8B CBA0D7E9A43A1DE94890890F4518846D19386EB2F3DAE032F125FB927D43DFD7 C2E5D4713031AD1EC67CF0363912FCA0B83F5AAEF903C4401ED76AE6E79CD780 12407C3AF9B46F3D75BAC74E3F5493443FB987BF91BF22C814545ED0AB8293BA A6B2995AFAA13E320AD49D4E75F9E05E65040010F991B736ABC876732C6AA435 F052967F5A8C890E34CC2E362507AAD489388BA844CB444C99496B77BB21073D 5A1E7519240D7BB5187394D798E6BF3012E214ACAA7FCA3FE1A51A2CBD198E88 8E78D914D2568528BD06D3BC04E63BEDA28B0AFB6A92C99CF854ABDF734D50B4 89D1E060583762AE7BD5A92C82C668C328A7EE8A094879F30AC73D592BF1D038 D2DD53EECE3DFCFE57C8651C3975961E19CE70FEEFBE0FDA9853E515F3F2822C CB6EC06A6FAF36589C48DF92E89322A1BE850464FE7FC2F96C9BD8A3BF76EA7D B2F9205F17ED16181ECE486566485891CFEB0B98BA063A643FCAB7B088572B28 928BB8F167146732D1A2913E83D6F6E8B2B613E295DD319D27DD1233E1192046 17799E7CD2AEE9A8BFCD82C530C53FBDD4278BB794AF06DC5F810D64724DB9C7 7BDBBED877F06C04FA5813ABCDB12F5C68BF024A596EB6B60F4BEF012781F287 75429219567961E39AE0B2DC8B57AD1C8E54D6C1A5D977A19D8BE66583C59135 07C01733CD8459E2E86C9473D233F132A9BD2F28B2E4231B36424A25DC27E9E1 86455E5EE1BC20896560FD379306C6F4D00BBB605272EE3587E3F4D14500D184 18050C675965BA4A2FE9064AB72387D53C3D36DA331525815A0D883034E91A49 F2F59B9A6B9938FD23528A3C29D09A1BD28300EB9F453CBC805848AA250AFF5B EEA88B3AFF65C0F955B211492DA273BF966E4C5CCA486362C11F2DE64AC29FEC FFAFF663DF4814427ACAF8D17BE9D42B1490C5E63391DC76C15D4528A7AA0BBF AC068024346BB2C8381E2D9A1C1BD7D89ACE5A34261310C43E2027DB4186B204 677525DA571D552C56CB5409D4039935AD72BABAB1BAC53B1570749CDC121F5B 6EAAEA5719A7495BF2CAD94D0914195055612EA070140F8B80F172DCFADDC49D A6F8A6E0DD3FC77E1AE60259B7E572F9FB0FFE5AC0EF775B3527675DC07AA9CE CAC9221710A4F1CDC37A1BCA0899E1FEAAED9FCE5756767DA6CF19EB0F1F65F5 10951472901066A62EB6EE1351A1A8B79282DA34CE460158B3A959DE1435D353 12BD21F786046ABE4025E8927FF03B27CB7F76DBAE7D9C75A5C5F59A6FE62CC4 BBE176E3576F4E54AF0576C5A12E22AA3AB3DFA89F1A8E59144D2DF990AFEFF8 E2BCD87382E74642415EC4D47477623E91F57E4B870D569A68488E0BF6DF9850 E8F483867C7BC3BF70B83E85FC3EF779931083688028B97E3D2FD1AC69281000 3D8B6BF7C21F20AB8134446366C06BC9FE94A14166316B7016532CAEA8C866A3 9683C137CF1075A32EA4464C8F98675AFB706AEE0BB3081BD3B9645CD876A371 6F5D5698D495668492BD7D0E543BC7B69BAEC0B1AF5C19729757E9CBAD48E344 58C96037E8D11DD70EFA2CC1868AE579E4EB0CAB64E733DFE9E74D0B877E1719 5ECAFC3BA385AC74AE8C0F52A517B72A4AA133838CCB37F110F9AD5F8459BC5E 6FC269BC926A05E911A8C584D2DFB768DBC9F2275AEF3D11A7B274A94D812AB5 CD227995FBB4480D5DFFFFBC276958EFF259B22F1E44EDF3AD88FA2BC70D6F38 62DEB28717F53A0783EECEDF52609DDE0858EC2038DF0574EFE7F0470FE0EF70 A316DD054439ACDD41870C1B8A91D2FF4FCE2DD65D7FFAB59AD12BE2D136A363 2519C122EAD0C51B75A32DDAF9EBF174C3772705583542BAABFDEB235F6C86D3 8B4919D9D587868528C387C85C43106EAA640C3822F95F394A8F08CBFD62BC11 99FA1CC34F7410F8958C12D678D1E2449FAC44585C2ECB6162CBB33E0EFD8C08 180A08C8A7C4DA7D02FC94441E884AF33868163C8BF6893E3647D123870199D8 43347AEF16629B03C11C5278DB03C9C11E5416E938C6380707FAAF7593473690 58327F0369DC5BAA3D0CD38CFA1512D7080863209F38FF7B7F2B9A4629BE4984 F680A65D6345CE6E181C38440312FBACE57CDC97C74EB287D8217083A785A21C B98185E3FDD5DF3C42A943ABCACED1C4AFB647273F583358C76BF8FE7E8426CB 77619FA2175A58F9734F0056549D4F22080831ABC85122573033C78CE9E25794 ED8F39F9CFE334D19194FB0BD31E43F45D65C58481768E27E055B8F2B61C2B2C 69538F6890D42294D762F4C0DF347821048419B48D1B4138E1D9E15AB93F6E0B 482139AE2E59695EEFB3E36BFFB75BCA92FA2DD75F13F95F33F0D0AF287AB87A A4F989B3DBA3D4CFB749919C74458AFE2862906ABDB7F86333553DC2A932F727 A1E43B25FF890572B08B60A48299E2A1884C1A2117D8C20274DDF0B8BCD5F053 4E68357A7F95E784182552F569C2284446174BD119093E461871C605B048CEEF E2491DFAF1937E33B45AF11889C29EFE3E455114534B7ACE3F0DA2A7C02ACC61 354A7CB02C6969AA8862CC0E9ABDBF2CA785B2EB583A74C1DB3A6B5B083C7A5F 9CAA97D34C257C1C2EE5F51CC8EA144ADF1809322C74041B58590AF4E3A2546C DD86CC2C913DACC0173E59F3DD07AE5AED410D672C67788039DFF5260096CC47 370309F6B9FE52FB964A03C260029F66F79658B52B6B023FD094D91458C690EC 09E79464E955160CD5E3B5E88C85538F453C3FAE63A842CA4F53883D6E7DC07A BDE5088060F202BEA08D7F099A0FD55DF15BEEE3220CD8B6DDC80FAAA55331B0 1ED9AC9FBF386FB2939394076C6FFE68920EE96F55B1BB3AC812F5B17B3D6C21 B7109E587C5BAEA8A0547266F875BA9C0F8985280D787E245C7FC771BE70A391 0706AA555C2DC5CEFAD382234F57B76862202EF00117782D21E04222D401791D 114DC5D60B49CA3FFAA5D2BF92BCB0A55FCED78DAA5D454B5280B8D82BFADF45 EABBB917A93167B2DA914A5E3503BF3489EECD48555DE9CC24F54557BC27F736 A11229BD03EB82924CC5BB180A599B455612390753B0BD2B959928423AEE08DD 49F438501B238707391532B002C5695BA5975BD1FD3FFF88BEFA84C05BADE6DD 7EE7F0F070978BAA4C60AC86A0495FAA16A253288D19EC0B2D6F55D424F42577 7142DEA2A277745EEBD136EFB89EEFF3EA37FC1DF37320EAFBF3A3D2A8A10100 D33114FC0F08ADACCABE6DA1B326D400AE1F8DBBB9BAF0D2E2FD343315A4E603 7C0DE9377FAB2EC186F298961D33BF2DCF42A862182463D53E1F29812452F57D 474AB27A6B0040BCF110A08DBE6885558D2B4510D2BB41CF8B95C1A84038AF75 C9D7EA1DA8419B53B897342D794EA969D853E2D480D99A4C03C82DE6372620DE C38E68881C799AF447361748D3364FD3DB00E679F9FD6CEB14B358A063A06EBD AE8C3A2EF26A6B22B319E0DF5A0C05725EF6C4D0FBB29123B8F7D7C1452194E1 A6B7F0F50499F77B9F2BFCBE3347DA30D6E48A3DAE77218F1557B56A29590133 80236FA8C97007CF80CDC1C8A89FB8A5613CB53C978EDB86D83E2A9B165F4A60 888F093806421216424BC85895D4456BE5CFA8B1514E51397868941E390C3149 E8C5F324B0C50AEF0C612C5F221326B0301C4E62C1C16F767F1B82A253D09FF6 7212E92FA8D255CF3EB079BF144D3535082E301D87E43FC0DD6100D42D009DEC B8D8AA1EBB0618749813AD5C05B7DA6CCA2434B67060237F8B21435A8A0C6DDD E8415CBFD112027400BE30976E713EE556E5CB23530B0AF924467254A0D9809D 61FA7750C7AB05D920E7CEB89A63191E8D905D8895E2F5AE64DD113246B78C5F 194FE1BD8E013F02BAA1E9B007B82AF9AB7D5856304090015BF8227CB17DFE78 DCA1E64FB873FA6FDAB2A8F80C3A710FC5DA2272126982263B0C4AB0D5D022C7 862530D722C9191213F2E2091BD90B87B210DFBD53804646581CFFDA172063D6 0BAD6605537EADB877D84E5BCF96A27506600A0C2C419C2CCE9A3399460B1078 D93529271AE4CD1EDD1E930F610EA8ED6183D0EE3FDF20603A54D5E639A7FFE0 98E20B2D03E1C1BD671E7D96341D73CBBD11DE3103A5929790048BF912C01527 14728FFAE384EE62DA78A4B5F0DC8133A51E84D66C38547C4B3F7B563FC743F2 470044F46A11820273886F24DA53AF920DF22AB5BC39CF4E847567796ED5BE8D A9E19C8E90E9917C4F3C61D1329692CD906BE590AB65FD1E8B15E56CF5B4D65B EE94BFAC3AC7D1DEC1F988AAEAC9EE172817206B100846B10193F2F90F6179E0 25DC30773F6A88AFC73D59FF231069C132F0F09FFD09DC861D1EA1D120A104CB 46662A72C950C7FFBD9B78811F7A56C9F32F5A7C89C3C39E892D0F5619FAF20F 50F266A23CD096A1DB3F4BC2339B5DAB577A56F4F8228753E9B1EE264A0F72C9 FFFCC6F00CD360232A200FD0D6DAAD4D8C2A3698439F4061DA0E20880C0ABB10 CF920351795D343F69FF21655B9098C7AE2C2E5DE1611BC3BD136D0B99756D3E DF0A5E6075F9F160CDEE7F99A0300F54C68480EFB91DF6144057141E3F31CA3E F5C1789FD6493C169DBFD2D0AE97B95F4764C10E79C033E971C46DA7F84DABAB 08C710ED1C69555E08E1A17C1099425BDFFB986B3F61649E22D5C598877B16BA D95363D12BD576E8A2F85F8AAC7033345825B365DEA941AB765ED927B26E56D8 DBF319C475BCE76EFB81AB474E2E65F363649C17BAF0E8A4BEB5C026F2E0E727 69D52E2D9E1185A5CE21A76A60C7234FB1B189B5D4905274E8C71910FCD19998 A2E14769D9D81990D12DA3AB383BC7CD104AC5F309C8C0453092D5D3D5197A5E F8D024BA7CF103245B158135D8FF210CA1E714C60F4C123DEC5465C1001AF16F 66805137B3A377F525D123DF796206E0BFC22E40DA6C81AC3FDA8D96E0FA634C 444DC858DFD269F941EB24740DEA0A02FF435CDDAFB80336E2BE501B8007064E F8811CF7058DFE6F91EB224048CC0C07334E7AF8CE6BC992DBBC32087EC73D08 F922B94F75FD860BE830527B9D894D896621D7EA1633AD225FE67947F39941F9 B074669C574275D1FE5081D4B35F020B14B93694D07E1A53ACA9F6C5A40C19BD 545DC7870E6FF36DB24B9FD47FC0991F2B8E085EC886BED4CF7CA546C24EB2C1 731A81E82CD0A741CD5D97A9F4C5C4430AED7F6DD037F000AF0E302A6BD934C9 DE3A1DBEB9E97A9D33C7B3FB7BB2F37875F33E587F92C718D030C8640651FDCE 949AE69B132AF03C62681669F2FE6A99D808DBDFB399620BDD6182A11B2868D5 15772C92117185D8389C25CAAC2A0D608B9B130AA5A9339410DB09EAA321E3C9 83844DBB148D54D0470CA443B94C90759D6128A88CE5490978A20C9D32FDBCAE 5FE2CD4FE99F9EE6CC2118677D571F6A27F29C8CC0D1EBD86C96B3AF172CC552 EB6BA7CE13AAFE5672863111FF2609E05DB35B5D96BF3B7694F1194A8B427083 FF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.1: CMBX12 1.0 %%CreationDate: 1991 Aug 20 16:34:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 39 /quoteright 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 55 /seven put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 69 /E put dup 71 /G put dup 72 /H put dup 73 /I put dup 77 /M put dup 80 /P put dup 82 /R 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 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 120 /x put dup 121 /y put readonly def /FontBBox{-53 -251 1139 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF 20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D 68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E 26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 326BC603CD28B9A6E511975D39BF5957AC2D66DAA7EDCF02EEAF3DEE9117DE6F 08E9BE2333C2BB8EB792A11F56C579D6D2BA499BB7AA5B95848672D451653CC5 60EA5E1AB3606372380A5A2B72AE78A2815ABA1487777CCE39B5AB4811EDF454 587D76017EE4001AC929C6B83B85F2BDD3E4B9EC89B7FE5144B968A3D7360F11 43F48FD9AAA21E33E61891FFB7E88DFACED3447A8ECE820C3608C13FF54E5799 DC006CEBFF48FA6BB61A7D1390B3C3CE9E3E745EF703BB395029BE46CBBB37FD E1DA5203783B35F36E0C6B89D594FA87CC2E93B130956B1CCF83A691F1B28AD5 BCB16F099B3F4546B64A092C8C090CD1CDDA3E2A3E6AC856C63294EE2788F503 77C477268902BD98EA81E9E897E01D3AC952F606A2A8EBB8F652749FD2A8C702 D6C46286AE547BD4F2CE836854099D9E1A8F4CF98B15E0B749FA2298AF18D07E 70A57A2B419F41D0FB9B9EF8D8EE5DFDE5F92A98A8AF047E6EC7534B6D621250 9DD94442FE15817AE1B503A324FD8EE5A307CED489E87DB3EFAAC45202D2FEE0 9837D351E2D6C28A92B7BE39FBD0322C34C429EF29E19A74C60E94515156339E AA50B5B0DB2BD755734A271A6BB2B9E2C4FDB1F5A3A63F68BCDEB309A9D6C84F A215CC22AB5EC01EF3DCAB9377C43938AFDC48BB83B3C7066721F90FE5B938D2 48F2E6E21D5A88139E2D39C915CFFD37A5566B386EF66D6CCDD396399287A8D1 73041E8F226C0CF34E0BED60EC933AB27E19B0249F6C8EEB0CBB9FDB63263E06 DD6323BB0A4F1F1AB055EC33C64692862A020034AA16BEAC7625449E801A93F4 A1D7D6D403F03C073367722319728DA9326B7995B4D552A96EC7923FE37CB997 2720502A02D2263EDD55D44D380ED0714BC07B89EF99A70D5C4C1EF0AEE9AE01 31BFFEA7A2A59D3CB6FABF71C1BD76DEEB59F93B02CC3E395383086EE11115DA 168F6BE6C0149B6D006324BDF2A3B26BBA4DC7F542165039970E18983659AE35 30F9C385767BE8D54344D04D9FD5A9FA66B4124ED8E3D0A03BAA64C14A253C3B 7A50D97D8999BB2E05557103D6E5050A88A3166B0EB4A13A8733FBF6283341A8 DD450E480A52962B919DC4E6C5798BDF89CBE2C193037DC8E6A3AA5FCBA32792 203585B02ED1921D1CDF5291E08B407C16D180BE8565E8BC76BE9E23E9B004F9 FFE750652D0AFC1295791FDE5822274BA06F08CD38BE65839943D91B9A2CBEB9 E2300DBF4E4FAB3715A7CB3AC48B28693F917B03353489FB339E5E264A489A9D 2F4AE3A4D114C06286CE02180A76DAAAA2FF77ACF39661DB8A7B8FB69D32D300 E1E7FFB545FF2BD948B3FB0400199BF26329196F96532CB6CB91C91B625D622D EBEBE57674C00F651BC5424882065BBE519545F56C790D996AFB66A7F195C8B9 C73D5A4D3D3E85D7966487F8BEF09F1E476CA71183F1F6760AC609573FCA03A7 EAE23C7E0DE5AEEE122B7C8DE9C3406F388F023395278B8EB3BBF7F066C4D1AA 413E3F2AA3AD74CE1165523CD55E0ACCE156D46CD73385FE14D18C31C3368625 DCBB71A03D216545B932834C8D50EBF67764D6981109D1FE568D23711AE84A63 9527247F9FA38EC760B4E487C8F6C0D8AFD188243240FC1F517F2FAE34CE0B60 8B4D5A4E7368C275DFB35B7E4C63330EB8C6A47D91BD949C0C889405278E3FEF 446D208D0E333B1266ACA29A9C277F16505E75CE48300F706426C1CDAD62CE17 0CAD60A6C7E11FF64D15EC53CEE07822B6B64A18BA688F28A3079FBDA83055BF 81542A25B269614D10833BF271A7E286F31196C9B55BDAF99BB9BAD104444403 CC8658EB9E9D4336CDA007F858915540B99656236B22FD256E01A4C6B7E2EDD9 B20790E851C8BF301FACA6EE447EB37A515C70CCEB75B3B0C14DF4E80CF39C84 B2A8600397D95EB376C2DC38EE778CE7D4FA81FBBAB10DD80BAEDEB73D9C0691 18B68CB820363C81AEDAC45B94C8C7DAE00A5D312DC8F8F5018A956C6D2002C3 7124822070D0F520ED7BF2C37234297A9B52B2DFD07D77DCD7AC9F86B4DBFC02 CB0C018A816889D7C5383DA8B9EFC846439CC141255C12B9DFE875A7024CFDBD 9D1711B1DD6657E0DFEFA209F5DAE08D0D4A103B621AA8BECFB14065EF6DB3B4 8846B63B61326E2F94E49BD64730FC32AE841C3579594872ABD3D74947D092F6 DD9C121F3EC57FB65CF9169353C5BD2386E840691143A54FEB512EABF6AC7A80 5293234FC017ECAE9272D1837730E178935507FA60DB026BE21F2589AE66104F 3BBEA521B0F726C4D2F9F1DB7E9861F54C04891DC067D940921164E44A3F68DC 3317994959714895F8E2B0D7502F59F514DDDCC5F1BD67ED0F4F4B3609D7B9F8 7F1678CF472BEAE8CC5F66635EE169928C1F09657CB9D6522324AAB8B0C5FFF8 7E03BAEB1795674ADF7707B21F171D1327AE61BB3C04FCBA4D19B2D56990ED55 504CB529364E7F4DB2CEE64E5EB82E28276DC6ACA3FE371E2C0BB2A677BEF541 E9E45909B1216922A3FD3F6813ED29E8AE1ED2E109FF507ADCA31168C2DB0467 0DB3EC44FE06DC0B99DD943DE5D047DEECA3EE3AA1D9534549FE6034D07DE576 C4D8CB99AE24899375CB88D533B9275C6106AA32E4764E2C02FACD03E20370A0 2F9C88CC162ACE7D20283BEA88B6EEEB2F5ED2D9EE6A812E3E4763B121D8E7BE CC77542B40A7855DCD6A4CC0ED8C9461623409653D4CC9CA357189292C424C69 B1581BDDFFE586C852869E9AC1CF66B2750A64E7B2344B59E78A2D44C965A414 1E0A39CD8AC1CC854775DD023D2054FE6275EF52B2F5B6076708DDC6B5D25E39 6F7F581648A3AE77F1BE9DE186C681869F8FB6F666DFD406B8646012FF20E226 A70FC6A1ACEB949EF88BAAA28782158FD2792D74433685D5031BF9373521D6B5 E47664A0817C84AB149427748406C6DD408FDF1261B0C3F7E0BD44DCF7DA8C2F 6F2328614E6F584C27D5277496EC7BECB97369D6A1AA903CD9B22515C68F5EA7 9ABED4C6F61E65B64EA89BD0D3E75A9C0A3B850DA4FEC57BE286F2AC05BE94A5 1F53AF290F37AECD47D4414E0C72B26EC7459763D88DA381D2BBE348C8833B45 08DB3A4FD7CCE5DFB4183DC3F67CBDC938BDD2BCF331A74946D16F44B17D520C 82D8941943C66D5AA67614F4F21EC5D00BD67499E08A26C5DC0BAAE3475A4324 4F4911E6BE30347DF52D6A81CB8EB06A37862E8CA3773DDD551599704EDEC441 776063C9AEF0EA1DC5A7861419E0BAB5E6B0D00063FDF1089D9107A723F1C7B7 EFE65856510099F868B5E12AF5DA2CB304F6D358923A98D6C5A78C0100B28F8A 7AF176D04536B8AFE1CECB2B6E312E1253EB921EE01FFB3185B4C4BF3A744602 FE88213FEFCDE5767F7BB3ABCCA106E3D74BC9490F5CC28FFFB77958544F56A1 1F46E9061001AF660D3B2AA6A0B4EE36D5E172AD3F2A00A4B8F66D1233F54945 AF4E412CB64BB414A6489A186965D2060A17E4B905D2508968DF5818CA379948 799252B606C14693805869D44CF44CE55C6B711C41F6F164E9A12F450B0DCD1E C1B5B3904FC688CD36BADC8CE88FA84C1A54DC6AE949A8D0DCF37495F0D436BF 55E74685E06104BC526EEDAFD4EDBC9A8A0623BEC5B09F7992CE6BEB00CADE55 E886E4E117B8DDC65ECE9B2160B8FF375EFD7FBA6DC9EC4B8DA2C589D5852263 CEB7144A1C807017DE828C88190BCE3C6E3A4548EC868665A89A583ED2941FC8 14E18E555F057236F60FD92BA71BB32DB3849ABBF786DF6DCA33C79EED7B6F21 A8E51ADEA3C33CE22B9BECB285166BB7D2C65FD36FA8F530496568A977BD8EBE E66FAB3619C84DB06B2BB63DB29137BD85D8BC9ED101F6FB21FD7137DDF3836D 08F3891FCA8406ED1F0810392F28E155100A9456F70CB7AF910AD5F32EABE8E8 85A4F93FD90D9C31C359B5E43FDE30A2AB467B4A57AD5AD8EEABC269013ED73E 93389E15E05CA5F226023437B1C1704487BED73A6800220DCDB4E0D84A7DF133 EEE8E426CCB41B57337792A09E6680FB6FB3A8EC319B8C7DE6EB496AAB30EA68 33DBA5F12AEEAFAAC89125835BDDA38A85EF328284CFDE0EAD5FD7C8C6E10548 3C8579E906A33A6DF3B82A3B8A88788ABD1F3AD15119BC02444FA2E135ADEC04 83376BB65A9677B4B66011F82386E82F09662E71261EB9453284923497C83E78 AA8CA06584BE4B27F05298372E9774E34567E536400936890EE6D48A5F4FA009 0FF9DA6EFE73B83853F5E7DF11D3487A644EF685D6FCEC08EE1B3968E8706313 C77A5CFFF18DF2DE53DA5A126B6BB464EC1FE1A018C37967CFED66428B7D5416 951D8B9ED3AC38B6AFAB080EACBA23273B46CC164CFD755B5EBBACB03A430D13 24839F803A0F39AA2FAA98C35816046197DBE4CF97D83C519C89095873B0CF2F A66E12206A5AC00432C9BD37252B61180F5BC97AE7FD8C7592DECF0D432FABCA 2CBBAA2717E792909219DC882205BE5F490D1E4820C15F340140D0F24F897CB7 0780B2D93F0E1464F60188924D4C2C25089E136CB038D18C9F509EE5862821F1 940FF3E85CE57391F2BB7F9B77ED8593D8B7E05540EB288D26FC95F288155DCF 794CA95FEB4742CEEF38225B9EBCFCE5931786AE8DC3A568C504ECE36608FE76 526417068EF5FF8A4F27E5401DC1E6855CE85F292E2F6A70495C0BF16DA35E87 42CEC432E2B0BDD6B18945698E6BC64B4E5CE3680C198D4E993FA8DAD435E9C2 4EAA5131E87625186750D21A5F1B55618261E4ED80803DC3B7B2F32D72733B61 AAF97364611DAEDA9604A3F3AA29E1F120BCC6DBA5CE0A641148C26E18A4F43E 2AD3FE85DA9B5991F74897E87CB5052E59C2FE38A4BECC0358ECD6AFF1B7F402 9BA89A791DA99E2A259ACA5C71BEA8F5ABCF928D5642DA6C04FB9553068F4437 D2A622A7353AC73AC5AF20345062E1235CC205B6ADA6A0A3A736F024D777E69A 0B34BA66761AAFA7FE16496607D5A489F0A715D83A3CAD1A9A3BA503524C4C09 A9248D7C4E0C307E465E1C61B3A3183520A713244B5E42C7BB1C20D1DC812F7E C83EF1A5C4AF6FB50C84DF310189541DD1AF2C29935467D8721883778E55F0C0 C09805074261529BA512BAE0B70EB3E4E212D746345BDBE68247C094236B98D5 DDDD932B5DE2FEB91D6CD39AE1972E093B038C3E6E65B3EE7BAC17EE55CE89CB 805F9CD27B7E741C2F01C5939FDB63147A6E994869EF164C033FF32E5C3EA444 9AA184E9B0B178DC4EF94C12CF19FBB9E25E0CDB634F09181BF10BCA370BA8FF 5BA6A8778C97B731970EE10F6CF304FDA8F332C60BD3EBFB95EE34DD1319F46E 2604C047528E15EF196075A2FB2086A09C444DE79CD2FBC892B28AEAF2B120A8 890C452F49B2FF8D05B2831CFAFDADE04A9E7EEB856BC95BD8944CD66DDD2C1E ABD82FF4EC24FAEB458D655CFEA06F669118D88DDCA52E92AD4289431E374638 DD35871B50EAD89B7B947A9D7917D8EA127BED698CDC60DF6A504ED048742CB1 A1F5D59E719FFAB41DFD7D2F87E3FE1C05AB2318628086226930B2E1E56BFAF0 08FE03C8251C97CEA707BF4C18301E2299E0EDA6CFC5E90F964233626E6857B7 FA46686AA849805E66A8FB9A9262B21127E28E6E13817294294ED04086B402BB E899AB71BB2426B9669F473FF0366046D56402D4A045128BC523280ECA8A2851 063320F1CB818A05173ECA923CC59B1B3A4CB37225365943EBCE0E7D10B0C0C9 4E97B48D774A0857FA9D4724904A0AD87EEEA2C9DF53CBDC2B8A03C0DE7C09E8 9990D2655F0971EA654873ED181A437C888D7A44CA78429321A8D9DD484C3862 5366EE3C194982D8A105019DC4982B79D61C56D5F0C0FFB21525F41B9ADAF5FE EEFF0F99D63202D1506C2B39CF3A44777BF463C0ACC6E8A19C937ACCE49A2E2E 8FF4DABF354CAC25C22EED7BA84DF8C38BCF1131DDF717AD10C781E0BDBDE4DD 2172D49AF432288FF88DB8DA757D0AE63B05052EB072C1D46B905F3D491EB87F F04A08E9CDF8966A2DD125E2CCE47CD336525CB91BED22D3CAE48EA185159DAC B939FDC4D0AFFBA05DEA7077E4033416E73F83601F541F214A82B26F9CA57F39 EE0C145B7D262CB5720A2E6E487CFE7BFCEB0BE0B0A503D1DD62751FDABA2983 56C04F03D793407907B9F638AE14F689EF98E67FC346B5B6BE25DA90C0FC22B7 0CD5184C768BA9FF9BA8B5A4DCCA1D32A0AF36C59AC20050167603E681EEE6D7 6C389C35D2DF3B3D2C9E25A2B9B0FAE4549C08AE2893512F011C291F547DA825 82FE53ADA1E6523F2FF72340B95F75C8D1095B9D49DF41D94563CE0F96D9F2B6 95E237B6C4C20D1C87C0F31D3EA4F097FC9784F6EFBB469060D46B652548F0D8 B53C60E559DA180AAE753FC442DA393087817A2D0082E18A5BEBFDAB039CD79E 5048BD1F1A4CDA746B525117BEDA3556FE1EF71B9EA2037AC318C2E3C01AFB04 263F7ECC8AAFD58CDAC960F363047F484FE38F0557AF282C43CBA60786DEC517 CF2A8D8660FEA714D7F9A0CBA524EE39B767016BA64FC26FB2C586311516A624 3CDF5536B56CCFEE3AE89FF0558F0B1EFE620D161B4D128EB5C4EC749B075981 E735B1AEC26C7150C4ACABF25F31BD75C2E9F3E57E873768225F94886863EB4A 1C10328091FF68FACBDF7185014185D139C7941E01425886C68036F8A8959BBE BCD3F142FE02372999EFA1A820438A3891E98A5615922573FFD3AEF9E274BC22 FAB7B1944BD2F78DC6B455E3FA0E11FF1A8C1611B3F8EFD5E58700C8FF2E35EA BC6A581C568316A329B4881040E723E375D61E12B931EA38B3628CDA8C4BE667 C6B3B49FDE32FF41DCF1033C468AA7B43B4EDF00ECCEB193C0DEF58F5BA4BD29 AAE4230D5DA5382667FE91AAF4C5E0890A63BAB8B26DD8D25BD566F906FFC666 720E03BC3E4153C110CB23DC101A8E7C2F2899400DA44AE33C5CCCDD9821E983 AF3C0773CEEA1AFA8D59759EC4B7753B973DC9BAFE16BC7A036DEFD33FDC2E00 498BF315FECC780F816E4880E2A1B81B17BE588C04E8FC42D73612E5D41610C5 239BA73230C0854AD18E4DC37A19C2C396ED7BC5D42FBA78838EDEDEE23D1E27 C99E11C17957E885857ACD6C4C23AD3D1E673996F567CEE6D49B4D721CCA6582 95DD91019DEAEFEABD2083B20BEF44E78307588B8F0D1E4446A744A71E1CCC43 03E595E4E058318A2F42A9F59ED433FAFB59E90AC450E135306E09F32B045497 09D5BAA1AB24C3356F3C0DBF610333F0AD9E123F5C815C8D513FFA904AC3BFD7 C788D974775CA7A093F774D674161BE6BC488E00162671E51AC3C7CE3A66AF57 F5EF589B2745232543B50725C64970A1F1DE5C5239FE03ACD398CEF92D5C9DFE 13F04EFCBD977F993260928B6DCA77FAA254D53D471816186F567F01C76412A8 9BBD3A222274C742F3D0ADBFCA4E8CCD8CAB392CBA83EAE86225A58D112197F6 1B4019235B2DE8C5196597760524029B7C296D194DFC0B3FCA66B4A5D5365B44 565482D8487C08C1C5C748EE314262E6030DB4384FADA328611F4EBFA770F78C 6A9147FD7E47E88DE24023193BC5D6A5B37A8CE036F9D874D6355268AB96166A BF63E926EC7D45860A0A7DEADA310BD8DDF8F213D9DF231A8FF16E25712F2E49 ED96FB52A21453ADE17AC96F8539697667433E8C97DE5B502D971618E3729456 6F860933615926CC198C5F3EACEE9EC704231019ECAA5486EE0AEBC5E8A144C8 73B0DCC95DEAB99652D368DB060121EC8B648C5A052F4D3A5EACAB3CCFAD850C EB2D945C1D40645C857CAE579A58A9E15A65E517E8E62931038DC9938C388907 5A4528057E1A797E8C05DDA0F8A4BCB2F4743368B33A68AA36B5BDCC9B2B388C 1C7CF44F3D714C494FBAA40C47C43725ECB79407B64F3854AD35CF53C4559D56 25C5A28C8E8C06B8B8CEC337E0F40B0D80D19F3EAE7A73A05954DB560C93A233 5943ADCFF60686C730D91AF95F5F9F01BA1BCC5A41FC115CC2325E2BB3AE0705 A43A9CBF22E98833C4565C770BDC6359A4F9EC6E00E6A4B5CD894DA06492E8EC C4C7E9E64DE2514C5E4122BA8CEE2C2B2A4C503390721EC9360D18FB17B05C0E 126FCF7E39CA0EB85F7738976F0D1D297898A31D2E1F1468EFD22015F4969135 4472529DAB43A62DE7AC679F0AF164DBC071886FD989EA01487182E9E58C3AB9 8B2651E4AA2E21B4347289EC7DA20A916B9F683B085F4319F527BE2F307864BC B9D0753B7BCFA704D31B64D30AC9F5DB981CA09F59E9AA4A810BDD85B70175CC 5247DEBD324BDAFD0D4D0C6E1806CE267C528FB25166BC01A109C5985074BECF E3E4E91F2C6EDA1FEBAA88E3D671DE06FB68BAD0E480BD710515AFE2C611B419 04055E35A6DBFC3A6CC9C4A5697D1AB7C546BAFE954FC2372BED6ADB8D9BA61E 3A7B4E4AFC4CF7F0C54DD5585D132E61341144C543B3A94E49E7B0ED6ECB898E 1C648DBC88F51BFC3635B4B2B1D63BD3790FADB92961991FCAE724C8D3333372 AAB1D180E9F7F920650F550CF44D1D02B52384587B4C9F63BF53CD5AE2DCA60C 9CAC68328E8F1D4F017675B09DB3C2D5C56D8DD2EDCBE8F285482D22A5C8E00A 1122D36C7F20B18BD063CA6A727B7877F24F13EF31AF3C06AC68D1616C034193 9D4809E4DB940E2BD40C4E1FC1707958412B9389C5382755AD01324B9FCA83B4 33BE7DEB6B6F30FDC0F747BA6F773DE7C91A39C37197946436FDD382A001ACF0 5EF20AC45E5C9ADC937CC3E44A98C50403307F869C61E47E596E4DF5E98A6114 556BDE069A531DB8E3ADDEA4E4BD20ACECFEBF51937CE9F4E1750B3326443961 E388FEDEE1ECE141ECD0318997B1381FBBDF4D57173CE366BB966CEFADB13FC1 603291DB6DD3273EBF0DD8A4B303FD91F95F226CDD48095CC76AAA2194B81627 D6FCA2E02C076AE1046D5752E9B89305425DB1EE8985E105A16B4ACF4FD76252 BB7D5C9CB9FBA09F7E4C5A73CC2CC6DBDCC5C24F7ADCC87E1CDB822960C6A21C F0F7031AB6B94C96F60A37B049EA68344DF8C488C07562873EA6EC266DE6AD91 13A396F383793B36578E23351CEC3FE7DFEBEB0D5C8D0B52B466C1BBC379C1EE 219C8CF3884AB37A1A8B10713B4F72CB6EA8508E6FDF69034FECC022D4DEB2DF D4F4A1D988533E196496F6177B37083F2A70DC10A59A2C4CF57CFB69DC705552 BFAE18A1F3A26E056AF2A3D3A6EB35E1511BC4881A6B6587B6B8FAB9E07BF467 1D69058820B1EB1F9CEED58F48DA70FA15F8E4E2EE7987A1B781B96AAE36E863 CF79BF40603269330BEF3C96304CC8E9CAAACAE5716A9C529B2B23EF1623510E 08E09ACEE39A2B1C0EB010A62AF333569F55BA2BFD61EC1DFE2F43351FC80300 D6ABA4A7E5CC415572A744832CE8F07DCA61B06D79E5D7F78E39E7935A2EAFC0 5A351C3009361C22BF42D0B142774C14AFAFDF0812CCCE999981DEF6C1789991 13F8187841699EEC9CD8BD5C16F0BEF42AAC30C40E7942A9120E9BB788839952 F922F5DB812371E15752852356177D2E44DF86590BB753D2FF0F955B57E78B6E 75A47685AFBE3AD744C5E4EFEBC7EBF0FCC33ACAD48B918FB81C1B2B1E76981E 648E9EC1BDC2A485806C656F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR17 %!PS-AdobeFont-1.1: CMR17 1.0 %%CreationDate: 1991 Aug 20 16:38:24 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR17) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR17 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 39 /quoteright put dup 67 /C put dup 97 /a put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 107 /k put dup 108 /l put dup 110 /n put dup 111 /o put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put readonly def /FontBBox{-33 -250 945 749}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC 9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A 497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD 3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F 83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B 246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A 7736A960F72AC01F733A11023832CD68FB6288A5977743F781214D8FA9C0C3F7 80001321D4397771F728FD9EE57CFE7D9192B887EC883EB1505068261DC40089 7B7D2820F06515CD74513521F6397FEAB3AD3572D9A8269430E407E357422461 1785FC2782047F4C0339D79B16862D939F3A37F78E4E2174E4FBF132539CB760 207999FF86F6A3EBE48EB0A1CA635450FDEEF79EB16D853F3BF4B41A77EA47F9 681F5618B8703DE456E33A911031712276AED4C2245684375B430383881E3B68 4D17DB42AE3861B95CCF7CB60EECD8B4F62C52BD97345BBEB387F88F1E371174 0E98A1E1B8B720F180CF24BD7E2CEC84719A6F34C65305FBF9BDF908DD8A8D7A C9780E32A20441F28DF7FB99B340BB1FDFB61EE8DDBBA892C2CBC336C85BD020 DE00B980A9F40E5557BF4A60B2A253A3FF5627C3CE392E6B4FBC87853C78A10E D43307507E41D50A998D464CC69A1A0EF77A2A48F58F083550171096355E5831 B4D8B1B32C6FECF92E23DFF03C06B1ACAABFDE0BB0BD9E22654E76BBAD8F5C9D 9346DDB44A9DD71337082C9FB99CD83DDEB11EEC8EBD02CDE99D789244A57E98 F33C5EDC705CEDC059674813998DA878CB810FE55C13C035039AF876A7CCDB94 045BD46F20AF34FAA002C1FEB7A541C84F55C167062C3C327304A9557FA84C0D 111820D06971FAEE845EA53D1704066B5C6F1AC89B32683978B63F4504A50C7D E8B4A4025F32B8A982A37DB7C7E3B307CD41189AC6B5D46E3BCBCA1A33EC93C8 DB6C829B9FE5D464CDF32E7D214C7C46F7C2F6D94E4A2CDB5869270A690F68B7 5637447C98F4FF13734F043A4F17504E554B0D0645190934D5E080594D7D5C5B 148A4409D7AE85ED10A2F0A402176FA6B8CB859118A61EA0243C155B0412BBFD ACCDB64747FDF398496136AB09A886EB9A149FFBC26BDEEB2E65C5599C433593 31E0BD20DB6E48A160F6C249C96FDD75B336DA05717F1CC5A643948C4DBB459E 4007E87AE891ED9E97EBBF7758233A08D412B0828DCF524C67B6DDA18713DB09 70290062D4E65798CB6D4A894A5D78C077230CC87ED14658A14F4B90CF5FD7FB 1A7B0A48DEBFEF1C6356CD0E8DE0350D2A147B7FED1BB694B80B00C1FF484D28 1A1CC5826DFA6641A6A56FCEFFDCE8383F226604426DD2D30E69B568E075C2D5 43A5CFF1F77785FDA15CC7836CE85ABF913B77D671888A664E144152B8567621 D2D6184A540EACC53741C70B1B1DDAFC77BE3B79C8876767C1E6EED7D0E202B2 91C4900601AA9419BE0E71BC9819FC27243BD35753513A640366709FC8E73447 38C2082021DA1C94CB2EEF7F1CC5DD9EED91C85498C378EDE9A614025B9AE044 0EFBD23D7F212358CAD20765FE5D5A7EC7A5415CCDDECB75BD8B8ABD55E2FD17 0ECCDE808E4379B2275C31D2F47A8517DEF916D03F89FC971732F89D421A8C32 BA8F2D488344D0CE47FCCDC0CF1885CBB012309327C6FE0DE055AE3B72C348A0 F3339EB0A7C8529E13E4ED7E86315E4E3D8404E8057DECCDE081FE29CCD5DD74 8464662478AF49E3AF4A3D0746E68F9734DCD214175D0C9C480A125E6B1336B1 5257D8014279DD1D6CE70294A462B605F055F9F3E689ED6D886FCA30EA4C0596 07517C325E2C7E6955F8D2730E7144CE997C8F5AAB99DAFA25DAF71B83B23E27 164EDA87A151302AFE707DB033935C68FB5D47210E078D67B233E1230FA78FF2 43DA3FB6CA11EC5C2DC96F1DC9AD3A4A99CFE512EC701E53061B8C5D45EA30C6 CABBB5CB9101320E47CC30116AD9E30EDA9F911998E51A43023805F298CF59B1 3297343DBE3927D855059E0C453C5DECF1B0E024870ABA0645FBA91252AFE1C9 55900B6BE19C47582AC02DE2071EA83955D4871C2BDE4AD75348EA06E10FF7D7 80E0BB6CC4092D09424E9C6C43151D8B997533958C74E0170157EED110105D3A 0A04D023E6D6DBC2D37B1D50E44C35A01FB9B57D50D1F268728C9CF2004C9C18 610E262217B2C06CDFA01B3EEFB62DE608E5FC5DDDCDE1DC94340982190B7040 358CAC4ABFD3A45490E9C82156251A59AEEB7CC831E49B39464054532BDD836F 938585EAECF9C77AAA8D7D3D8174755BC5A274935033519158B9F4B67209E27D 946852ED2F1DB6C3BB5D01BB1BED7B0D8561ED190297CA9761C6BD1861810563 84D660FE30258B90C0E32BE634EE616D1926544E4D70753B12F1466BA9C863F3 066C90E29556E8B8E8D8EBDA197268D3CB2BCDDF250C61298796582AA29C3B16 C65FC3DB1F2E1BD5BE79314C1C5FA556B93CE9986DE4A7040DC093C178D19438 649A616D6C0055E3EB318F1970AD4A5BE070F5817021CDA6FA9F96C88C2EFBC0 1AE92A46E29E9FE712A3E23973F114A63B2FD3187AB7EC58DCC517594A7068ED 3DEAB02ED8B284257415F77A75D91EA83E9F27737552DED8F9181F9395398673 4C04F13C7CCC5D702CF08553557E76FA16C918F29EAA4642C2462BE44AD37000 A4DDF1686B35AFDE4AEECE487CC3DC496055AD522B6821F1909BC72A49E018CE BC821F76B46E74CAA8C5319FFC6D0953A7BD2D5470281AA819159132FE9E6989 EC0C5D56D4BE41D14BC6D08B5B4CCDF828E7953F8DC83ED880EAA9E2CF78338B 9A26C26475664799D05D640844A3AF06AA5262D5FEBE9C3F70D8444B05543BAF 561F795EEDA3EF54E4788E45CCDA010FA519454E4902D613D0EB7BEB01A38ED1 D8F6B5349439D0AA4B0A4FD5707077EE5739EC20AED25E90E29B0E60B2DA2A0C 772AAB0E01C06A5C2B2150BA12614E842F40AA5CB50548B001F87145EA9B840C 9C953D9F4556DCC5DA3E69C6D6FF05D31A3C9BEE39C7FAA8F816518377B4A899 537D07CAEDA78252AA853906BF2724D3B10DAD26C9C9197670DA3CFD297372AA 6424C6988C24B0C0F4B43D627007C85A8333CBBB90478F2483E34AB0A80E4B79 C6CB422958A126118B36F103CF994A6C69B7D82C8E154ACC082C85A0AB360B86 A838B8FA0DB2F62EED6EC14E1F45B2C4068BCF623F508469F2A36F882E715E6B D4D1DE0D680FD71EFB5B40BB11742CBE1138F5AC4F92E0E8D5FE06FEB591A70A 9F67BE7576B09E36F03404358308F447C8CF8CBC9F5BCD68B3FBD70FAF0A4B1C 14C70975FF0F23F486A62CAA7C762FC30EDDBB4D6F3C999821B1151B8B0ECA04 314A2239AB6451DB6E9BE4926E87738123787885E64594A0122EC4ABB5CDEB5E 864F4C1AA7D5354170504454775568D74D9264DAD64064E946706DAAD1B6B9D5 6DB6D3B5A820742961E330AF3D5CA867EEF6344D8C685A4C5B94608CDF3DB79A EA3FFA64658B83367F76BA4AF305F72F0DF7D185DBD255ACC2C4E553810117B0 DD4C04825435F8B3AC1EADEC45BEEDBF6851AEFE7CCBF3914CBA48D10FB4D78E 92676EC89D87DD1956F3E7DC1843F3F8A1E579852B2B3F596D833DD574B6210B 73CF06D1DBC7F6B3C069956043003365FF25A6C8676833397482036CB3935C10 1AEDF47C5B31CA6AE19CF8C5AB5A7492559D567EFB0246792B1EB26178552102 C921F5EFBEA36E6BE1479338EF093A05E1E6E317AA8A96210E0CEB3A5DC9A752 6847DE923889EB47FCE64AEB4E03C9835892AD8C71AA421A15DA668239C2974A 3251B8904839CD6AA695655D7DEA71D8036559DE7B7958147600134BC0BDEBD9 13E0E6A01E130B94CAA3EAF78FFB0A9CB5C80521CF760393BC3ACEF83B4D5519 92B6CA2C343A11426B2553285D611EA42344E781D2093E50657F0DF92276F5C9 F3D238C00073BA785E287CB5D79173815A3AA699A6F88D516D785CB73DA8584F 3FC1A8DE568A77180F5A97C29E14811801D5FF809CB70B3484104E2BF8C266B6 112A6A24371B097BBF67BC37FAA2A2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39139632 55387786 1000 600 600 (sudoku.dvi) @start /Fa 130[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 1[48 48 48 48 1[48 48 48 48 48 2[48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}87 90.9091 /CMTT10 rf /Fb 212[55 43[{}1 66.4176 /CMR8 rf /Fc 129[49 3[43 51 51 70 51 54 38 38 38 51 54 49 54 81 27 51 30 27 54 49 30 43 54 43 54 49 3[27 1[27 3[100 2[70 54 72 1[66 76 73 89 61 76 50 35 1[77 64 66 75 70 69 73 5[27 27 49 49 49 49 49 49 49 49 49 49 49 27 33 27 2[38 38 27 1[81 2[49 19[81 1[54 12[{}71 99.6264 /CMR12 rf /Fd 134[71 2[71 75 52 53 55 1[75 67 75 112 37 71 1[37 1[67 1[61 1[60 1[65 13[75 5[128 4[105 106 5[102 10[67 2[67 67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fe 135[85 2[90 63 64 66 1[90 81 90 134 45 85 1[45 90 81 49 74 90 72 90 78 13[90 120 1[110 6[60 3[106 1[117 115 122 6[45 2[81 81 81 81 81 81 81 2[45 6[45 26[90 12[{}39 143.462 /CMBX12 rf /Ff 134[62 1[85 62 65 46 46 46 1[65 59 65 98 1[62 1[33 65 1[36 52 65 52 1[59 6[72 4[88 1[65 86 4[107 73 2[42 5[85 1[88 10[59 2[59 59 59 59 3[33 44[{}34 119.552 /CMR12 rf /Fg 137[83 88 61 62 61 2[79 88 1[43 83 1[43 1[79 1[70 88 2[79 29[115 27[43 39[{}16 172.188 /CMR17 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 904 951 a Fg(Creating)52 b(and)g(solving)g (sudoku's)986 1246 y Ff(Ric)m(k)39 b(v)-7 b(an)39 b(der)f(Zw)m(et,)f (Leiden)i(Univ)m(ersit)m(y)716 1396 y(Leiden)g(Institute)e(of)h(Adv)-7 b(anced)39 b(Computer)e(Science)1549 1630 y(Marc)m(h)h(13,)g(2006)324 2070 y Fe(1)161 b(In)l(tro)t(duction)324 2318 y Fd(1.1)135 b(History)568 2503 y Fc(The)24 b(name)f(Sudoku)h(is)g(the)f(Japanese)i (abbreviation)e(of)g(a)g(longer)g(phrase,)568 2623 y("suuji)37 b(w)m(a)g(dokushin)h(ni)e(k)-5 b(agiru")37 b(meaning)g("the)f(digits)h (m)m(ust)h(remain)568 2744 y(single";)j(it)g(is)g(a)f(trademark)i(of)e (puzzle)i(publisher)g(Nik)m(oli)g(Co.)f(Ltd)f(in)568 2864 y(Japan.)568 3026 y(The)33 b(n)m(umerals)h(in)f(Sudoku)h(puzzles)h (are)d(used)i(for)e(con)m(v)m(enience;)k(arith-)568 3146 y(metic)45 b(relationships)g(b)s(et)m(w)m(een)h(n)m(umerals)f(are)f (absolutely)i(irrelev)-5 b(an)m(t.)568 3267 y(An)m(y)46 b(set)f(of)f(distinct)j(sym)m(b)s(ols)f(will)g(do;)f(letters,)h(shap)s (es,)g(or)e(colours)568 3387 y(ma)m(y)31 b(b)s(e)f(used)h(without)g (altering)f(the)h(rules)g(\(P)m(enn)m(y)h(Press')g(Scram)m(blets)568 3508 y(and)e(Knigh)m(t)h(F)-8 b(eatures)31 b(Syndicate's)h(Sudoku)g(W) -8 b(ord)30 b(b)s(oth)g(use)i(letters\).)568 3628 y(Dell)f(Magazines,)i (the)f(puzzle's)i(originator,)d(has)h(b)s(een)h(using)f(n)m(umerals)568 3748 y(for)d(Num)m(b)s(er)i(Place)f(in)g(its)g(magazines)h(since)g (they)g(\014rst)f(published)i(it)d(in)568 3869 y(1979.)i(Numerals)j (are)f(used)g(throughout)g(this)g(article.)568 4031 y(The)d(attraction) f(of)g(the)h(puzzle)h(is)f(that)f(the)h(completion)g(rules)h(are)e (sim-)568 4151 y(ple,)24 b(y)m(et)h(the)f(line)g(of)f(reasoning)h (required)h(to)f(reac)m(h)g(the)g(completion)h(ma)m(y)568 4271 y(b)s(e)g(complex.)h(Sudoku)g(is)f(recommended)i(b)m(y)f(some)f (teac)m(hers)i(as)d(an)h(exer-)568 4392 y(cise)32 b(in)f(logical)h (reasoning.)f(The)h(lev)m(el)h(of)e(di\016cult)m(y)i(of)e(the)g (puzzles)i(can)568 4512 y(b)s(e)j(selected)i(to)d(suit)i(the)f (audience.)i(The)f(puzzles)g(are)f(often)g(a)m(v)-5 b(ailable)568 4633 y(free)42 b(from)h(published)h(sources)g(and)e(also)h(ma)m(y)g(b)s (e)f(custom-generated)568 4753 y(using)33 b(soft)m(w)m(are.[1)q(])1918 5251 y(1)p eop end %%Page: 2 2 TeXDict begin 2 1 bop 324 548 a Fd(1.2)135 b(Gamepla)l(y)2381 1835 y @beginspecial 0 @llx 0 @lly 250 @urx 251 @ury 1250 @rwi @setspecial %%BeginDocument: sudoku.eps %!PS-Adobe-3.0 EPSF-3.0 %%Pages: 1 %%BoundingBox: 0 0 250 251 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%EndComments %%Page: 1 1 save 9 dict begin {/T currentfile/ASCII85Decode filter def[/Indexed/DeviceRGB 209 T 630 string readstring pop]setcolorspace /F T/LZWDecode filter def <> image F closefile T closefile} %%BeginData:; exec !!!!(#7:Y@"q(eH%1X$^&J#Bc&.fEa&J5Th'H.c)(Dmr((`4)*(*FS:+s%jJ+.;1c.'I3]/lS2`NfW2`!5sde(6 pjC3:IRlE7n?0A7n-*B7ncTM77C0H7o2iP<)$%k92\DY<`;ai>#S$>!2>$=m )@9-K?>?bNB?>EYO='T3>?sd/I@:!>U?Y!\X@q9CeC1M!jASGjkD/F-&DfTZ1F)Gl?BQ@a$EGBK3Ci F<7EcGrcdQ]R>jN09<`Pa%DrPadl,PF.Z$T:M:h1Tq7gLQ(a G0UR.RKSX6%CR\laNT:MaPSYW'VUnk,fXJ2YjU8t;jX/i;&Xg5+4\Yla2Xg>.3\ui3?XKo.6[(3BGZ EgjE]!K#TZb!`Y\$N]X[(O&a[^X&b]Yh1o[_'Jj^<++)^V%J$^;.n+aMu!6`Pog8bJMH?a3DiMa2?! =aNM`Fc-=MWbgXS[a3)fMbgjn_g!@pqda?CcdaHFie'lgrg=4p,f@ep2f@8I)f\+s/gt^]AhW!,Ee_ K9AhWWhShqm;JiSrkQio8t\kNV'njQGglkiUpklK7Eulg=*1m.0N5n*BQ7me-8Gp\4IUq=XIVq"XUU qYBjbs8RU+?r/g.((CM%6=E^#A2YG=LdY]L32BS,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A3H>6QqU Y![Udfn2Ohu=1C9T&Gqtpck&X,4l?bI\dO;I/r8foUqj>QKVu@W>M_AiC`kaCKkk-uR:8A&fe`aE0D-#7f!SM=sRn_c6Bo(R5[bBQA$jE]^nFg6a(`3YefBG:X:%$%k"2 jZErCnpMYI*\I]";:GT>@D[G;ibJ:LF3ocfe?P&#\%C\GL_W$f@]2?-4k+= nG5FHZkQk3"i4XP!!$.u?pX9='a_[PLgF:QYk.'c(U)mtrP*qE,8NKtr(d@/0<%hQJ,j*\#tAjg+UC C\LiEokdJ8>;Qk1MH!uM(g0)Wh2/.2DXUEX,UMjOK4YkZDJ>j@1SP:XI*!L$D2AV[?*/hE79N%bPTkd9bk,6D"T5#9LX[)5]gWL+a S8?fir;056!M:%P+-7[:T[3o$"'>3p"U=8K/:Wnpo(*;%_N6+'0<4*X'j/;,9\jBYgL/s\3C!ZJ+LjB@N.s a.?m,\]5R[afTGT7g#Tb^I@onsWK+]=Gg&qC#U(MD,2*SOh%A%p81r,7_nXKj sIISL5O?nI+!44$p:l.7kB2\dI$n3ASXk1:m">0c&9+YsIKFGnI@0Ahh%3j;U8:htPjBOou/^Qe?&f Bl"lhhod$#$p&keS*(:ME_jLuOL^<;L/Jih;FlO1"d'DP%$ku+7#=Vqf_+34U79=4p5orIRO=V=,4gD6^UL(/hQ6 a;ZN`M(RG06*/?aiXFs)nPnEK/I#Fr)3-IG'['*?]5$UJBi;OU`]Bmh];oY-U=l>93DD)D_eN#pGO= %m=.1oOBa56*C<;!JKB$T0Q5<3W]&l+KZd']PD[0TStCohq_G3%Y;1!bc=k9W8b=T`nVn9e)-:Vpqp \eTu"0.\0J6iA.U\!X=tLOJ*Y'J$@;kLDW9"'n^_,io;RSNa-!prj?a# nLmC4KGcr7Ld?GllBL*8n#7]U=N'g&m1`=.)0eD*F5t57P$%S*gMHW)tKePIh^n;9laGY4]dt,NW6" s[M"O'Cja9]R`(4n4We=_69+o!16%(5Li70",(GB5&qnF?[t#VQ=r/3"305!d2=7fX[-(';:4S]EE/ U#]DcANV\.V!sNJ!ISPh&98J_k%>m,0SJAa6lo#U!`NVS#*! 90.\Pr&C2ceukT#EW$f6143d)CUAV_[-j.:imHT!TnK7P8?o'4fL.*KAq7f$_+7!#TZ`-MZ4JVjEmkp-]Dsc^nM A7erkMdujt0t%!!G:/);oT;b@n;kL_iQbh'D3(jq0ku=Gd>+]L.HN)[4;F\:F,e:%eVp[:Y#YJ9VS5 OC694-*Y`!5R&+FX@kX\r:TK.$_*5qRR'@rU)FAH."Hk<68.j4&cjOm&0Vql!G\cUdD@3sT,F^930s Ug<@WPB8LM(u'(/r$c)ic./B335!s3^W#gbC;TT0QoTEmOd@=A^%(R`SA<4+=jn/C('-:nHVrf007Y-JEKU0D'7%59q9T`i#48'@1:' e5q8Y*mTH6.&7EEi#Pd!Y%MZ^s%Y8*&m8RX^Ji%CY4ef_pXV_onk%C\k_\7c7u5Nc2f)V6 ]*;MXrA3aU*.qN#nCk@_`9e:G9N(mW/Q7G.]ENbJf;B8a?Vu(rm'#qi"#+-W^;H<7U((G7-r9"U1Y)65Kfb\9T_[UC6Y(LQ]bg'a)gD%k:!EbY[%jm`8qp%./BN0_l:f(C8 ."=_P,7YmU3gm&qR"'-T]H;)Gfq343`a''g&A9(`n!OV;.cZ#MQ5JO0Y.,nj-R'-T[Ud:F#s#"sdlEDmP`58nQob9Y+Hef/!1]p,7j+hd,k;#>O:MZA=s;)V$:69]:k]?t *t?('!)Y/pOQ[iRM$seq$qmD3b[MdTPmniP&4N]0OT,O(SJSMlcVXN_/R&VR>7fd56=-nI3on6dG+Pac]V:dj+P$6(HJ]..8$$#mP@Ee)<1*U!Z@Oj-+T-gZZ/.SaZdl--Id0FT/;0%I 8_1WFDkRsj?S`,YCJER]e@5S>>2,3X`o#`(lY`0e1&7K7ciM+ImXWN`q-40rJ5U$1N,R#><+Xr?di. M.s"p3_Kp_/2Qo'l-)17XGG-XmJs?s#6n4Ei2h058feYRrPJ(0#*XOhbK.@1F+449JtbJglWd+:o+c H4$;J%aL1G;c>fQ%1j*r0$q%_+cHQ>9GHGl"s?0P64Z**5roRK]ao,`J1a^7_>l7=aJ'4`8CeK+U(- #bhZaHND;`>gcAaO9bS&2DDfc?G";N'm^%4HPF$i>N@5O3n!<=a1+LD+KNf9\>)?Df%^cH2Fd1U%'1 <2UFc;d@$WCJXsL`k=NJHcZN:(0]b+S:E#Zfrdbllf89@%`M\!5K3*"9h$j"n\H1JXd?\:'9EV!oSa i1hT+8j\(Bt/rUtU;i8]hFs'%h!.](pJ5-,1?@j;f$#g>A&mm&.nfWL&$D8LBJ`BYD7o('"gN@A&k##SBUC0u=MX'TE<.Je0%="X&*p?nGK&<.WuY!FSG'TIp;1;QfY+. <@4'Q,Fe2SdGHA#68uLJ9kcN%9TbD=S:AkKs[)<1^Ka,$Xl`(WJh^',*3qTBQP%&ZD>(REbaV?[%L; ,Yf/uZM,TYq/M8HgP>(/)[jcI2P'([.oH]+@Gr_/9@R:T7PrgZ4g5#=-U=/49N$e8I@14pCB%'Bb:+ pDF$T#$1Ci?d;,E]jCL-lYb 7KQ8o/3St7Q,Eue)13l`#QP%i:o7?$"U(70j3sFo*[O1H"J[]_1IaMMV85e[8pm-0.B/ABn7dkoCH% qR-Ze!i#-uXNf]a!K*4iFU;c[XuC0\3idB1mMPA.s!_?aC&0GkcC3sC>R1<5>i2D53V_R)rj4D#NQL 1=Ch)*HIRN',8Fn@A>q1.e.Xj]E+Ner*7S?k7CKga3&r92m]*3n@d"oj=@f!'tSm%u;1`LBG2L7h@c %iIUc/hIfW\eD^Q3?#F::ZlKPTJ/fX!V;Ku"g:Y?SLW%nH;2k6uaJ bT'!!%OhA6Tj=nT7hJ!)\tk !QNN?=W@E]UgkCbdF;A,7If/_(P!+qM^&3Vm#_f,3F %T.q%)">RkRiWKToJVtZ`.P?d\SA977s2JCP#Db-#%+aVhp+Z\DFEGiWi>h$S>.T0.J8CZN7M\mkd$%ZP+ QDgG+.$1-$OBAA[PTO%<8@kWomsM<\fY>>h4c?JDFM@?HI],gID/@n^j@>I19/dh]35/!rW\uH<6J3s(%:k=0mUD*rhFfpS$H/=TbQ iQ>N?'rKJ5%Po5*O:oI.106kDO9W$=GJ-#SmmC=&O;drO[XV3+QOpT0:;sQ-n+J]?@0^C3u.sSPTV* IBGkC!DMRWRYSiWMgR>Ht0875qAJKbu6sOm/569H1`^%ZP!FS0>n(LpXgW.h]6EaOO?uYNg!J03+Lj >A.X662`DJPK>;BR1!?j6X+EUGPZR-]W*W!.^I/;);+*!U*a+c_,55.--X0hV1E&c/:hb0rJ4*rFtC.U%02mu">J4?TPOpl6?N'(1`.WZ"a*,HNW9,Z2$mXj1c`O=$6R qPBa"D!['>KSKEqPac*eN;(i70AkPu5?6tcWU!0eb_I@/Ad]B\'M8LK->e=\\J<'g"o&K1itTE30dRlE/5m]ae^>$!+p.oQcl(e u!!`3.^`ZJ\(-oP!\"Npf9\CjrK7ppN9'(1cl&E\U-s(g&SQTLH_LYc5c3QLtT[,T]lI./pR/KOBp1r+8%TI6cFB(Lr[LQ-U(M1T9OBAI@ :.'D_LDVu1P3A/m4"U0]S;9YrBdl-DSnke?;l1T)oRM%]Xe)jNiCClq\bdfjEZkZlK3e3S0V&?6S!c sj)ANj2V=\/8um@',!10SRZf"iAMrXEE+*ek3nf.lCiG^liZg]'^?7\7,jiI^]L'bSEdS!t.!K_,lN ;?EBE&L#H]!@`,m:`1!&&L6dTS"O=iEXBPn#e">$k.(D-Ej47 ZZ*N=,j1(k@9aO*RSQZ1MX0JWsdtl'jPmGMl9:E,oWYcFfUWq/E\4@"JN+0`&)M8Tuu:W2RIj^8S>S $bOk4d0"NPPf_%W]n)9F@E#kG,<2[hl,;<'?nm(IT@EN]+8Q9XPTX'l',WTnK4lq0^F!2+=`;F,ni_ ,`]iD]k>8pO7mQ4kAE,0<_1-8nIF<0_&Ze%kQI&hJ`!R!s#$R^5@o@Lt@"$s/d@3V>KAW%`kF/>$MF >:nYP7Ag,:%jLM/&WKFb$=:Xois70qbj/3K0W'e;*LgcEGh@/4"W.6d$\FI$"2i=]//oG"dfG+25aW u'?n`=Rfh3D(L:n`t1c#+cE'uVp3$?*)*e?!GW[(nqek9V@#[dWP7Ym`=@*uq/%2qfO8I61V+@"#aH 2n)W!FGY;M/'_U/V7Ch"oKj4lJ`j@!]XZsS4@YaQnt>T3.M#QBO6KK-lBFhPLeeqNQ\Sc1'R`K"e_^ ZOI>:IfhG*X,!6>;TPslkX&A*OqPT:fl3rD$=m+.1:_Fd,?R]LD!C-bfKW[L*$#XJ"U,jUQr0KX`$-J^LNQfHuJ9#pIHci&lcK;?a%$=kAj*MM?$c ffX+4U-c?s"+ai3U.?gP*@ufjIF5>UM+e/i!(u<[.1aKu+R,\"Qjf*ps+GUs#Ki:@d)VfcEp3r)*KG #OJe08d5QX%R6l6=S7IWqklPUu;:6;h",%i'1jCBB!!J+iK7(<4"Ip63c)?7BsfY75%T/^D9#XO,'6 iiMN"UVW;MNkggb_T@NJ,h;.=AFBS&#rd>pJqeej3^`J971;i(;Q7Q#Wj>@pW]W@+Bj8=*S402?M>1^O^kfrc;8fbp`'TGM<)("CUS1mb^aQIsZ*2/DN lGQa`^E4eb%I')h[1e!E,.Y;.KJ4-_9r2`ObYfe<%b7qG/J.; W#^<@RkJm0/1lpsPZCa?*!1G!E#j3b9N\4#[k`iCDN*6!b^8itPC_\mbiKNC0LX\>flR\[lXifh$^C n:`OWXQt[FB4aP=1(-W9XC6+`'L8:cGObMV&[W89Nah)F2fVrV<$F2>[7Xd1cC$E6b/G8KI]PL`&,] uR,m)<9NFiWEC7[m^B618WLZdUd)PX99o76,'OX4CgH9O("Y`'bI.r:[Y<[^fZd_lHnm-sb6%hM\)H?kIq:W.k:8VXT7,G_uV0" pB1,:m9)KZ#0hD>(lF7L1h`\$8kaMcqTXA:&(JR."_[7$AfT@JiHrNjA86p?qY3]$R@JTPj>s1OG7F 9!+6Ku0S7bFr_lt14=Gu;a8c6k*e?id!5'UV^k[Rc"G>?a+KY&O%8`jgJVI8[!/MADAH,V6o?[e`7i aNX&;&G_$6Ih]J,go?o`[8cBE>mV_\GA]+G@tkTM91$Vl4),?ipHn)pe0J2'#^n*ENMD_grDgU`^/C 4`&")>6)/F43Q#LrG]tr:0%XQ79WT@=9O7<37UthfE.L=+IH&?BSK>"!4br0&-)d=ERhjXKa7q"NF( 3:KNAeT=q<7`]cN,W?eF_&d7!BSkjNPLERi1\]o:X6? TLo=h-b95*[o[J7XM%-sN]qQo$]!Eo"_gFmJFdk/ZT*nq[$716bQ,0ih_O%*Bd1'\CQ"LDo81J2iMH rG@=Jpm5#QOi.ghq&hPKIC7JG YMkqc/ahGs>X[J=1F?kc]K$rEj/%I/qLlJMj*Q)Xdi8D7G`Rc#LbNN)d`%H?9Yj57uY"iQoI5QN4A% tO]lJG9]W((T9Z%cI&)rT^i><.-!!OO#.q5XpioUd1L^oKm%cS6@@?qg?hB(ZA&)qaJi> r`mNZ_h,1BAO,dNTM/()^Q3.H*02if5n!@<<)66"D$'A1g5[5"&pQ#sjsJ]=(3A^./c>]4?XeP,:i^ Q:MV=8E>4jOetb3R4Dh)8S"=&&=-1V%Sc$0:QfBEbPNk*BdpTNHo0=G;8AKgon@DJFl]>%Vqmk6>R33*M$O- %k_Fk/M0?[V0;CGm1?a"Yi.D%VY#HG@mF]k(\=sLf4ulEb:>]BHDE]rbZ8/,D874k.Z<.G&_,SC,k. 1Kf3m^eotabNG%HQPAYtaQ?_WEFD(<"PfA4:L3Mi>Jct9>g?]^a$fG4r?j]:DSeM]?XYg(Y#gu_sVm YH=XhU6'<(pjDe8p!$`DtTe=Bf@gd=QmS5_E2^Jqd:#<:o&&4h[:YBF0-\We60oNBgeKUYF=f[be-C ?EV9(R2J2gfRbLer,CrG2cuBQ>jeNF$%l;(7Q]b.6`nqd*8sY`cWe1o"$rTH`i1^O[b]1s>>TtW#XS T#4N$8X-`CX2)TJZlKjX-Ir[^D$p!>lCPQt$2r$_k^rCeIO%_tmN$b=25@-*U"1?j2(lV4Zt,KtmkCcsm6P&V,6 +LfHD#m[$AM[\TQn!)Or43*a7Be%EZK5jLW%QCR8uRK0iOR'B1Q,Yu91EP%6XkSY50Q[0mDPKeKj'Qu-%Vl/8G`0so$!6j7]iTUi9s7%4B,PsU057kq`s!c*@"\ 3noP>)6GNHB?muI`?OEgo.p`CXEr9*i7Y^d!1K/1/e2kpHkV#!>4H>fW1^^L:rV>AgYGQq;' 7r2#H:#>ls/Z!gVlX7)HO$bNa0Pk%/c`YmqHpIQpT&To1]\F>qX:>/DnLC?VQFN_HS;aQs/Gj./HEi #Hj?KopSJ$01B@J&HnWNeDl-?KQTP79Y*[=Z^W_)H8;'5?KLa76YK_J&klK]sI2C?bQcat"que+jrB JSTpX]9s8HGbHI?2h[)[lUWgO.@6JJ^k)hpDI$3dq=Y"3q:1:hP#LMF+bP#qph9hiM`%QLbB7H01WI F!A!jSqoo&H'Z&9eD,>_@!Thd?(98f&s%;`B']bMq5(Uq!4-opY\LB5#oB4X+(.qdGkfM3#QmO""+i gHbnaFONsCD,91aAE7L7!?!!/$lPY%0(A]A4+<=F0t`WcDE;:uX(N'1cF@ALk9\dlLY!!;_I1Ft-Y" >D0!=b(9;R.%7F]e0,4hZb"<;ccg+T:@`#l;^Hq?)>BFnpLnhp5fiTaj4B #HkkYWX?@;umh_\ZroOYJK2L/k&B$bg*E#?24&r,Pu@B:QQM/=7nN':UW&;(4PNMM+"j.dOZ_(+Bpt FP9^hJoIrM7LUQJ-!/J%blS90VM^X4.`?D))HA[OB@[tKH,q*^4J-/ /POJa9f"@JU^@)<#/07$=\UFlnPY+^Re9Fo!:"$2sfC`?]\3iW"Z[\1WbH8Pud!1(C!kW$EhM'1;$% &REO"ML#7!1[^Fc1F\d1@[tGK9dYDGV]N`Z$;!VY%p5b3mA@U">.f,iarXNOch%^#[ruT2'a%DB8(j 9bjqSrBEUsN6neTG[tlT6i'(o.QH^Q5O;&1[!H9;"QB?jB)7h@L7l;^bbMl'H.1G;\T_#6kK*>37P_ 5+VJ3kRhJ`n*p+Dp`0PbiDb;W4:FGeC#E!r)aN;\0TDZVJYRDODAMMm.euJ=qd'QN?:M*Z2n;F!76` h"lc2-omYkL`jL?8:r(V;d<0qTU8\%VJ6<)!!)$+1"d!>2aahAo;u\,a:TA$[fd`e@nsK:s`do6`.g.7#(1/\*pG5;T>*!9ufFq(l&qf!/'S$3E1QA&hMBtF'( DJ]Y&E%O4AJ[ZE-_d>OSihbMl@`,hNSkBOB:,CF"@q,2oe`C(<9gDnJej4`!"1Os;M'[s&G&+/jhPs E!J$Ou6+=FZ't0uB&e&1STXYgG!lFNoI;BZl6`?_>P#G1$7DR@)eG4\)<0!6d"PTO25nGN+]X15eX# U6B^`^X*/h.;VNHg(q;3r.piOA[F"Y#^)%.bu2k>(kr8ge5&bdLRmLL:_7FJJSfV8qK3]B_1&WLbT[ g?`(]J&im?QZqjE>k:S_?1&@b!:b9nXTHa//D-nHm"V%);*@,@Q[!6EY^uT5dH$D0]LRr;"'NpBU-; *6a'Um@I43%,2ATX"83?u!07cp5,$abI.9BAA`25CnY0.V)3ri_X<'lsP$K5MI'`sa7SQKT^kj0+T6P5DCm.+q"s.+/.I\L8%qAJB2:4U3%n"+L3Ic=BI+?i.Hqa\4_?2eEm5 I7oiKY1e*k_)8NUkNH)ZiKhsrC!d&CAd@;H$+9NRX]Pn0b==)#?mM&R[Fc]J5,GAKU+!`s_#iK#Y`r N%A_3D#&S/CmRgUY+"Lr07P33@0mMY0H\A=GK,jNd@$T`KtrL?$/e3Jo!pp@n>Hn-]Zf+'VZk 1FrT-;;3%$1"^iGU!g*^S8rX!,`_G43nerXd)[HF/!!'J@%mn>S^^B")!08j_4V*=(#hNukSO;/gjob&`n0>V6$r8EO&V9BBaF5JDo3 \Q!^Kip5tI'=UIN)S+92NrWk,G<$r[0L_0*bWA/ZZM$!Zs',Cfb=ATThke6>,7-6\5AZrkWYn1Y)4^ _[L(d"Bd30Ec:X,&1nT*eF2p6&C3S$pY4N$/mBU>qlJg\&a\8$Kh7>\aj[U8-+jhOq%I/Pd"-$Amnk T6q%Y#$04_MXXC*R"@#,"UG\2ZV$mb6d k/Wh6:=P5sM=+di[)=Y*!q7$=_Dhr-ipS-iMUC3XUhYB^93R?3-;=!'eB#g-!Z=8r!Pis_eWG8&'<`OW>9#:#VWQI`:.dnVboq(Jq+@)EqIIQ7;O6q1* 35b#a'4Y0UAD]pRaUl0Pd4e67j.aS3B,`-4/Tt=/a$n6llMNTM0_'"FAhUg:Rk&ikI8q:(*M-G2VFl C".`llRb2iZe/J&jO6Xr9FW3T+!G]#ba),M66%MID(cqPR?Yh,Ia(0l.6:O&tWfJ#rnJ+.N?QG,T]U&a$bCUB"VQd.uQjkWIJ!o6uo(qN!f(I92p2T!g@-Y;b]/GFeG6f@#0l$ 0_>;U@iXrgNu.Hl2Fb\oA:Y;q>YI8!$DL@SsS&T:Q=po(V]N+DsVnEU[p[i[/'_LkkgrUHrsJ;rSPB bIimeMs/5Phhr"?]TCr3`kPbG,rr+S%+@2@ui%G)W%fm4T!DjR5O;e5I*s)uu!`16GO=LCZ0*;bA!F T5`/Z9PA/HbC>";!p&jt-]I:BSs>"OKR@OBNN@mBdk#*<[+E)?k%EQ4?O>(e5*2ZLOK/`8Y6toJ$W+;?OLknI^C1[k$rFtQONS'ZcOCH7%8bX`iW9 ~> %%EndData end restore showpage %%Trailer %%EOF %%EndDocument @endspecial 2442 2038 a Fc(Figure)32 b(1:)h(Sample)g(sudoku)324 733 y(The)i(puzzle)g(is)g(most)f(frequen)m(tly)i(a)e(99)f(grid,)h(made) 324 853 y(up)28 b(of)g(33)g(subgrids)h(called)g("regions")f(\(other)h (terms)324 973 y(include)45 b("b)s(o)m(xes",)f("blo)s(c)m(ks",)g(and)g (the)g(lik)m(e)g(when)324 1094 y(referring)22 b(to)g(the)h(standard)g (v)-5 b(ariation;)22 b(ev)m(en)i("quad-)324 1214 y(ran)m(t")33 b(is)i(sometimes)h(used,)f(despite)g(this)f(b)s(eing)h(an)324 1335 y(inaccurate)41 b(term)g(for)f(a)g(99)g(grid\).)g(Some)h(cells)h (al-)324 1455 y(ready)29 b(con)m(tain)g(n)m(umerals,)h(kno)m(wn)g(as)e ("giv)m(ens")i(\(or)324 1575 y(sometimes)h(as)e("clues"\).)g(The)h (goal)e(is)h(to)g(\014ll)g(in)g(the)324 1696 y(empt)m(y)34 b(cells,)h(one)e(n)m(umeral)h(in)f(eac)m(h,)h(so)f(that)g(eac)m(h)324 1816 y(column,)c(ro)m(w,)g(and)g(region)f(con)m(tains)i(the)f(n)m (umerals)324 1936 y(19)35 b(exactly)i(once.)f(Eac)m(h)h(n)m(umeral)f (in)g(the)g(solution)324 2057 y(therefore)29 b(o)s(ccurs)h(only)f(once) h(in)f(eac)m(h)h(of)e(three)i("di-)324 2177 y(rections")39 b(or)g("scop)s(es",)g(hence)h(the)g("single)f(n)m(um-)324 2298 y(b)s(ers")33 b(implied)h(b)m(y)f(the)g(puzzle's)i(name.[1])324 2630 y Fe(2)161 b(Problem)324 2849 y Fc(Not)47 b(ev)m(ery)h(com)m (bination)g(of)f(a)f(b)s(oard,)h(is)h(going)e(to)h(b)s(e)g(succesfull)i (and)e(there)h(is)324 2970 y(no)e(algoritm)g(who)h(can)g(predict)h (whether)g(a)e(generated)h(b)s(oard)f(is)h(v)-5 b(alid)47 b(without)324 3090 y(completely)30 b(solving)f(the)f(puzzle.)i(So)e (there)g(has)h(to)f(b)s(e)g(some)h(other)f(w)m(a)m(y)h(to)f(generate) 324 3211 y(v)-5 b(alid)27 b(puzzles.)h(First,)f(there)h(need)f(to)g(b)s (e)f(a)h(p)s(erfect)g(solv)m(er)h(written)m(to)g(test)f(whether)h(a)324 3331 y(puzzle)34 b(has)f(got)g(only)g(one)g(solution.)h(The)f(second)h (w)m(a)m(y)h(to)d(generate)i(a)e(v)-5 b(alid)33 b(puzzle)324 3451 y(is)44 b(b)m(y)h(creating)g(a)f(completely)h(solv)m(ed)h(v)-5 b(alid)44 b(puzzle)i(and)e(delete)h(a)f(ew)h(sp)s(ots,)g(b)m(y)324 3572 y(c)m(hec)m(king)31 b(if)e(the)g(puzzle)i(still)e(has)h(got)e(1)h (unique)h(solution.)g(W)-8 b(e)29 b(are)g(able)g(to)g(generate)324 3692 y(so)s(duku's)34 b(to)s(o.)1918 5251 y(2)p eop end %%Page: 3 3 TeXDict begin 3 2 bop 324 548 a Fe(3)161 b(Solution)51 b(\014nding)h(theories)324 767 y Fc(There)26 b(are)f(curren)m(tly)h(3)f (solutions)h(kno)m(w)g(\(b)m(y)g(me\))f(ab)s(out)f(solving)i(the)f(so)s (duku)h(some-)324 887 y(ho)m(w.)324 1176 y Fd(3.1)135 b(Marking)45 b(up)324 1361 y Fc(By)28 b(deleting)i(the)e(non-a)m(v)-5 b(ailable)28 b(sp)s(ots)h(at)f(ev)m(ery)i(lo)s(cation,)e(the)g (remaining)h(p)s(ossibil-)324 1481 y(ities)k(will)g(b)s(ecome)g(clear,) g(y)m(ou)g(will)g(notice)g(at)f(certain)h(p)s(oin)m(ts)f(only)h(one)g (option)f(will)324 1602 y(b)s(e)e(left,)h(so)f(this)h(will)g(b)s(e)f (the)h(n)m(um)m(b)s(er)g(to)f(b)s(e)h(\014lled)g(in.)f(As)h(can)f(b)s (e)h(sho)m(w)m(ed)h(b)m(y)f(\014gure)324 1722 y(2.)1109 3513 y @beginspecial 0 @llx 0 @lly 200 @urx 201 @ury 2000 @rwi @setspecial %%BeginDocument: marking_up.eps %!PS-Adobe-3.0 EPSF-3.0 %%Pages: 1 %%BoundingBox: 0 0 200 201 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%EndComments %%Page: 1 1 save 9 dict begin {/T currentfile/ASCII85Decode filter def[/Indexed/DeviceRGB 219 T 660 string readstring pop]setcolorspace /F T/LZWDecode filter def <> image F closefile T closefile} %%BeginData:; exec !!!!("pkP?#7M"L%hK6_%hB6`%hfTi(`*r)(`+/2)]g%E+!;XJ+!)OI+!`*V,U4ce-RU;j-RpPo/M/ \00J5"41GCI80J>490J>7=1GgpL2`N]S3'9/Z2`N`Y3B/r[4$,Sf6U*k$5X.Ft5=.h.6psI:7n?*?7 n-'@7ncQJ91r/Y;,0q`:/F__;,C%f<)Zdt>?=p-=BAO*='/^4>?+[5>[1cF?sR,IARJkOIU>o[@:+I k;IsBJA7TIfBOtjiAnbpkCMR[$D/sK5Ci=<4EGo`8EGp;ID00l?G'/+SG]e:TFaA:VI=$9fI=m$#IZ [;VU-fj&6PQ[n)n\i_]3@"K>"+?kBn1\]UMX#+E*:1K$c,FObXiAf9caiVWE`QQBDcHOGWd`p.bc- t+ef$r-te(N=)e_&L(g=b'5gtLZEgu.)FleU.lf#%I>`W"];io/bain==keGSF\ror;$jPf:cjQPdf lfmU#m-4'/m/HG7oC;8KnE9fBm.U)Ap\=FWp[n@YpAY$eJ2Z=^3$]7K#D>EONMof6[g\$[@So*)67E _07N521Zp#9HO%!I(f\@rL$]i/7Ossq);^dOE-.6Ll_HAUFbi[:JXPsC6N6%e/)@[0t7#=8Ze+dc0M ,'j4>*V"@8YjjOeZ2]]V/j1LXOc`<3u*dnAZF862-R[kh-RBgm'UTIcKSlA>O$BYD8u*i^KW=7/+'Y .G.BIU0K,#o,SS70E`kMt9-9DBAoh+fY&c7dc"HZ/m3[HEU=3Y)6G->NU_3ZDG$@,,f58"PDKfJiVR"'5^.PP_FV;XeNae%ID8!+63%==H,d*b bFEelICY.GGJdU9391]+9Tk4R4@^V>:]M[a"i1D%Q_X+,+b0Sc0P?FPaeC1.,S0q][A^@/$%NR"&<8 &U,#!Y'UgaOARKsdmA45B1!$S$?JV7h^jhsk.TV^]pK,Wh811m3kUb%'9"R0Ho.-B3E25"Ql10bqkB duk48HGJ9W+O.L8semJ#!Y9UP#uD+&fN268-gbMJK!Th14^91\KkK/kj3.++NB6j8eiefI%AD.@P2t&.$3\eV,s/!f+e'r(7\L2;b!l+<18)X?30kKEq)h6GE:>/2.T%I?M9ZH5=Tfj8aX\\UUl g%X:[&b(BG0t>6sL9QASiR2BfZB%'/01i8g&fC0SNG=+Xg..K]S/EeB.gq@$5,ZKRj[FL!5ZRJ-=[f Rra1N3EHF<4'e=fK_CcVJP9s6b/KO'A0Qh_KS,Y&)/a(\a;$+]'/[[F.AS5S5ZEl"jL]@<$5oR)'eu G<%g$rY6>B6$0g$A.@9A"C+LdM#A.QM4RTl_03X/_#a:WMa'?1r.D-/2@O@Ktji^&/E6l8piL*RIXM c"S1[mudJ64\jEAqh0sTQ\I#A6ie]IUD,K,W::E4#qtIAN+LZIu>f-&i<[j'Gb+<4Z5K^fV)Qm>0eS`lF>XG)s.V?Cb_rCkKOlfr+DD3Z?tR&LXn 8Sj3)^,[r3H?+TTe`u4GrKAB^1'Utog$0QG!1To2#`J`h"J@H!cliQXE#tcD@Y%SlPQRR4-oi%+Q:+ i%DiVJIUL8\<8>t,O@`Vmfa1=RUTGeK>gg166">#3kJe]XM5`%u:f,'7!&&R[f]!8Ug"E8g5KX?=`& [j=q.#&A:9rej0>j;`+Y\p4$5mr7N-3,0AGc2>uL_,(?KqS]i_IaphFT(1F"(5bI,]1m'!N)e2bhN"?C+>t `0U!bKslck6m2C:G2B5XR"fH9e!7.MEE%*^XlS07]j'+O*l:\ag61T\JiQ@piG(Je%`)fVq+$3[20O I&RFo*Km<3PT4s*/:ceD'4;F/O@@"H\i],V]?,,h55;5f++b6:*>i^d3^:NY6q_W"B8 Rg.2kDS$!`#"T^*AM?>UX$!9'A7cZgflLcDJS>"6kjRpS=PTZ^]9p=-<7>P?u&]-Rq/h)J4`1!#86D R3YjC8^kW<*sS:-M[E@RinLO:k@aQ90fE7osMGR=m&OcGLGZ#]bB?e&!`G$K2TH@0V$%;T_f)9Mi`n HkL,^@#K",@FX>G35XsS&1ELI,N+fFmDc(D#CBc'HL[>&R7=\qRqS^F'-H)]I-ijO&=+Y p1'#<684hG2 Kb_!TkOfB`$A+E57NA\j9DB?_Y@ud_so%,Yi[+HK4mr7J[L<=7MeP1$OpOW1,_bE*#fLu&7V.r2FYD s)d$XPA'AaI!Yk^T34gACZ%NjkRP9o)MPn!7VkIbe KROp1VXbfGA.9h3bMQC&st-%;$U1SUpP_$[ILkArrSqZJJm3)7qta!2'OH!"R>D)b#GLO9m`ZER21; -%[-VUiVDOG9og=NN=rpEd"+nG\[h!G9M_sCPd'+OltbQ:PJ=Pf>W&]`/TaBL386S)c@&BCRd>CE9O eBRX7nH%%XGRej0Gm_cZ3+I?F4UTlM)2C#odoLpiM0^,SmJ7,'_BaIR#i;T2%*(@+U!*;[:c-D-BnY XBEFbZ(u6d#^hs0q,i4KF_CNNM1qXMI$$%]DWZ%2;g)3L@SK6hfYmIQ%+TAitL%0.TK?S2L$EjT=4T /(pTYchBho%3c+joGgBi#OVScgOYX8-&4d!FA:3X1=H]tVFS>G:^9m\Ci;OQL7F6k""<_!i7c,W4OL DXNk^s=12C2kap<*&Z!&B]iMM[G3&^WM/&3[t,7aT3h%at[6lOlq&_&cY,jJ-"pHb'Es];X4+glmkL ,H*lU&m'gCVI?hgKW:[j$G*R:)W"rF"X.RL%"n6D$8]VBcm9/[[atH,Buh%lnH<['E;pD6"dEPrp>h 6m*k-'ArN,%4^hejY;``$,gMKnpJrOb"$Glo"J`ubn5jQ,!L_k(Fc@W\uOpW[*9blI%**rdk9G$4kN Me$-?\:U1#XM/D0ld,H:hgTT8F+qD.)]g+_(c%rEe.m*l"=",dRu9f"qeX]4p2uVYPm42+re1kpus[ ]NS[bI%"DYS!,%[5D9a"!63Ud%#_48$U'UU([Lkb=&&AM_bMME>![6NA^$Ze30'\X2qAU\V,KnY5LP XF+5%KJBX"S.*i*HV!L(Q)'W/5U4JHkn0^`Z6KH3"B=JmO`S"r`7"!Ped!C>ub_"q^h::>r,R6oZEp 1a$2u"n&b+V/*.cf-'uKEDYl"Q()LHp)ZW>.OKrtc!$Hi@+HFb8JpnX> RLmVZ+X*TELQ3"gB!:*OPa`JI&UaBP9n\p8&cG94l6P(u2=lb#WTr86oH5? Q(&?0k#iW^:964lf/!T8SL$b0*4jqiSnFhsb%Y.AF%l5N$`=_iBki[buX6G(*0J-_h`Xh#aN5QkIg" +Xec&8YM8gA+&Jlf!+BAIp$k4k$!Hg&9BG1sL+GcW!Ue2umOH#Fu="(Qt!H&LkQECUc(BGNkL5,8NQkr%L?ud$H@6 k]*@,3(RNBqFm_(R^OZ9k8k8B6aH!B=i9OPOA]'T%P[5pV_2A0D8VWs5_j,R0T$1HR2$,0N4bTe-sF $J^;0,0qkbY1VPDVZUA1&kNA;+YjZ3>es/"7HQWT!@WY1XqBV5&u&!]M(BoDXC8,2:(d^9%aPBVndu O=G-Q`Gn!;c2P[MTi,"L?*!@Wu%C_EFd>Yi0VU0+n`Rcm^/NMTfB'5E&\Noq`3Mh/#IM>UE(2+R*bn IYKSJeY)&bk!WZo*!:nXighQ3-sPX$0)j=iZK,Y1j\Gi9YmGkPE/%linP6=#E%&(+pU;`*BrHsqIOJ kOu=L./O5OK.*I&`Kj:qGe7C9n:UD3>_7(3eL/52T:o_lfoLD`c'^X?co7D31Meu>[3<1o9;8IF0eJ h@o[jsh&oi_fI=]mVm(6@W#&j2?WJmgiID5X6"AIP@R7.-N36>^i-0n_^<>h*eB^hp3ri_6Sq85 8E'A&YW$:QO-c-5h+tf%O-EQ1"*[2Y11<7q-:Y&Anr#YS)L6\&!<964VnTp)@q#V4qHo6)9fWSf9sW1c6Fm;>_AA Jqss,C8-5\MKh]C\fa:T&2:s?DaNl/j%N:g"K=:EPLq#+ga*2K8)\#tU')7nU93`B_.!V`/l!P=e6$ :>+@3;[-qm%[fHF[n&]f_/7>;G:+=!f=',NhNiH>gZ7O[\"+qqU4@Ajh_4\"ft>iT5N+]EObGS#FM3 #6@&F/l'[Jnia=;5OCD6%g"^*1"%O9>Q2lle`UP2A30WoqE3 &WA-:]HuG1^(MCW5!algpn-4]&C?et:!.G5dE$ObkIUNd$`ftft[MJT[T6!>m&>gR9ObDt(8dF&fe& !6nGS>iV]["A$!,rS!f&M@;+@/(4+pR+GW/;nVZm8RDJTq9Uap"G46Nuji+gr%l.L9Eu!^T(!2g3)* IcN#VC19GJ1RK;H!dNlO0UMdWkUb;\Wnn$k:1-m&J;aOq(/8[-,j[-^2"NUB=s5?/+@)Y$KWl9.)/B _pp%:J=lmnCN;ZMPQD53TkFSe3!2F4"ggHu7DsPYBFnS]PHUcQFANLpO=>+X9#1@ "mdq/!(2RqV+@(ef+XdM%V)GO+HRJ\Y'hm\E#3s.a9S%UI^lA]Y+9^[hp]7`6?oeVpL]f$75'D3GA5 !nm(l0hmjQARY!6F11(rqK]*dh#ZaLuAC]P fC"s=WMOcnslF:s-_Fmn-k[oo;`59D(1)5*B?JNO) B+k!f/C+Wef%T)-4:A-@42.I8d.IA09kp8W/.0aY;d'PVDeTNJXcm/6jB;X$(=MEi^ON11^5(%"?=, tG.(6XEIcQ,XNqAuTqE/e4".AJR,DEV^g7)be?:>&-IG?3IaBpc66jO&(!"0=*5j[5i\'_b7T6(r#[i)e5_%*Bn]tJ3cM[; ;i(_N<"jc!"c[>?j5Z@lZL!\Wncb0"u?kbdF(XRRNcM\Rc5[X\eJ^V4,e"$UG+?@i_$.OAS#X_u#>l 3&7/^h<8#,!j$I/VFJ$.5D^!o7M>>s6Kk3^`2Y9B1`XrINTaL"Lg1fVG?O?).Wea51+TggEGM?.[jpS_U oScB"fAN52i#WQi4n]%H?t?)9Hh%Pffm]cL43#c4,.odVdM.?MXReQR^ G@ZeHc@;(OYiI[C$IE+Q47&RK&TlI.C=lS?Ua[^P9u1i;)N#Z[s%.Bk)?D3>l5Z57 fqpdi/a51Yg]/K$jC0bt&OD38Mk+jaa$ZGDj6b$uInB4/p;Fo_,0>N*]%W7ce.II?41WPI!^4C^n*h NMH6G%E(nMjYEb5?&'>\6*V[?b(HG/9h';99#bP8Y41g/q'>X>;$@3#iY:`s2#m/EXY_7+"J=&Mi*ST9Ceh*)[#AKeQ=R-JLBTS]=;ED"<=`5ak!I(Z=k5H3n9l>9pG!'FRs!&JIXP7ZE !cHEK0Y.jUl6B\QN-XSu2/\AI0`OjM?jH;:n4&5:8aG`G!(mcm=cWCS2*7hBMdY #uDiPMk#l`n?#8&1kAg"i(CI12)OTl%D8*_&M$fO?`dkPc3e$i0=qJkXH$f.b[GZ.-?)L8J]V;!q[? 5O]'sWM-tq\RcY2[8MT[[\d=$V+@6AYlJqSC'#YA3hEf:NPh)"N5nIcM7N$/3Yg%0r?]q3&,\rk:aW .:h.f*ge#/MuCd]8#i!!o$M;51PA-m>)iL*k;e"-4tVT_t4rTdpeQ:ASX;&u<*NRQTh3Y"fU`q];6& L7fk".A3&%CS[$F#Y^SIqsnU'+\Fq$2FbMJ8jl5Jb(::`q6!JUQ";6O,t:;tD$D-$@Z!r63cJgon;FKs-8=]I?J.`I&Cmmhi[VZs3;6_dIN.P"UK1<\]%0X("5$eb5+g>Z!2V\@c1 `,DPBjWf)_en!r("IIP#.cR'=Dd$()`_?2+PWSe+=<>KPOqh_L`i)c+bB391MgGo\NH#/./C$((H39 GAsFWIE/YMWUjSW[koi.q$3H#'7C*J.Z:%eLq`b-$Aq=J_1?hYR8eX-ob/77JTfe3AG2]l""(Uiu%1 cPJ$"c1'*M*6kC1.YfLd_AZQ+HGp?']4.5pJj:oKGYC"'&lclX>e?iPK@T$mCAlUQeq.;Mt.b(AP=rdCdNl dc;NT'4g!>#59A"7\$_(6DC8H9ET>_%ib Kfqstg_9cGLlK6R7EEQq+9?L/I7GO_"Q=_]"lR"V@dZu_q)p)Nd";kGr_U_94XXeTS!ARJ4q%0`-fn aIP>]h0$a;Yl!N`Pidb7L?BilY_FJtM3&lZpRGU6rAZB[2&:eDmY%0-AO(K/so8ssEIARM/:P4D=Aq 3r`XYd+Nj*`5R%6T@Nm:QgUG'ZG:P'&PN?L#fNf`&M$6`UrYD0kLj*(X+];P[?hU'Xjq7P01kee;!D UiXu#(\)BFeT.mrX_YO,R%h''s<(-@B=GCgf;%sp%Yq.iD68M$'gH2agKi4Tm`m;dnD+Ge@-a1kQAJn($);E6Am*uDCbej(a9MY&L4Hk85RM?TpRV?E5in&@ n8_VfKP*GK202^.BHLt,K=n3JHV7L#MidoJ&;mu30t8Oe-mZOc7cJ4G,ZCPfQsXG E#J&:an6'0:t=1eOQ[n9>7^4)W`"61+n5KU]W?d4rjD>>3$YbAjr8GFf9d2"1W2X^+a*j"!jFXA#&k(X9E]q$TscC;0Zk9mE(LE\Q5RTS"^?Um ?)PN;#6A%pal@2QM;g+R%A$UGU@:q/[=j&u7eS.iV@F5*h1pe/Rfacq#Co&>#ctQDKHk#6$hqC58iY Oo7YkA)N;eAna<;Kj),h/C6-;QnbSUENBnpZK0pP*';ui>]NIWtp\YI[(6K7au"1gA/h/"6E5V8gQ1 XP_*7l\nNGFt#'1eMF=!%h$.[sP9R%gCn/io0Q70`2$i=@<3n2mb]@=r@E=U(h%G0oBGn/4EJMfCulke%]>k3F&ELTjnB8tFM[]ErPD;&*)-YU+7G@^8rhKL?P[CR(9DY]^RGoI 6N1#\&Qse/EtDYV=d-Xpo@f%741*9'd!=F('YF0Nf5iXq.))d#nS-6j/pM4>Y8uGGP b+&c (\9&OE1M!Ji]K[kPTnG<8#U2LE/L'gUNpG`)nsp!i&q-M89XNdqTS b?+P+s/BmR!k)JY=]L-q"1h?q(Di">jRW&MAYX+iXdT`]R\L!(+[^@)`0mJb^quo!"2Geo/8W6I29aNTmiN0+jB7 fjs#8UQ?u5[/eq!!)Y\8D$Rdr1;!^9S)t<8dpO[ZqQd!Qc1EjTaAENESRIt,fHD3U9ZC3WKma/*[4- g!fDS%:q!d$lA<>n"lqbZZ'Ls]?T3M#"n5`d,2%g"c7RKM0ep0BCL>7Pq_2hYT#q@)fWH`H5,%1*Ve `(r8gK)+-jH>4"O_RV!,I7,Z`8qR'>+arRJ*XJ\\I0I).P&)drihOQpgf5W6g+>.J/e@a.(fS'MqJe ]?H))D[?]US%rh_;>X$)=!;V.bh74D>S99.=rC_,_PBh^oH;FNoI)Jl-q)q)][oi_cj3L^#n#,cTNM u`59:E@]%f38;Ak;4NLf.#Al\:u5i ZHNP"S13^1)IJ%>_J22/WB3m]D\_0Ei8db9jiY^o^e-&$,BFJ5%0NY4:__E+opO4J=$?>d;CJ=@$W5 '.]_Y:-tEMjq6,J>*%5>%6g5D?0F$0(JImTf8Y6uaVBi/0d$r,]fPFEB'#FJ^#f(&5^h=#5L5+4PNZ o^"BF]S!%Si+;0\I.9WGImI.039"R8?J3TMPb.<5^bJ5/:A3M.I`=22kYl'_%@lO:qZ9Ba-g/!=<7& ;9=I_r\D(S6_N+o5goiJqcu6)ZgUo%][t^MQ@E*^eoBU#&$T@YbNV:56aCu&jZMP\3PRA78s;4"K4SKZ+[-pD2&o \'(Ba2`:BkZN$$tB$2GKm6\Up2/I3I9J=n(e0F%^Nn5d*mR1dXGQjXh*WMrE\KWQ6#R7ROpNt1M6L7 q>AV!kD3BEB:a"B#r!88SL/@'rVL-h(7ApjjOF>0ceN%5:9cjaI?TpX6/ZL=dCE(gDaA(P$QDd-Rtd @l"E65(K\.:5$:baqU0.1D_gc#1;d;EH\`UL^9g\%;6W1$O*RDMpFO1]Ag("_!-ZkFGci:(KcPu_02 /idkHW`!)U]:p]\i$[7FS>0_N&/kR]`HX$iu#g=h>gYg*Lo8A;$>%a\1br;.;o,6/Q'"AhKh_j4"/= &>9O(&8&f^e+agXP;\tWES[m+SZ-0%"]TeJ<2)4;g](eI?qr@4Z"4rHd4gci\(:_L4b>SM"=C'iZK( ."Nf_$;k!i-%=mpWJC#^G;#Ll0i^'PF`6brG:l>k"8eRep.n&X33(F+&44(d\"kXt!0L=Emc&jNs-q 0kg"M27bd3<;nL;Dag"LsCe:7iN;%:Et+c3.Imm%);g2_'O.@69Mb8&+uX#0:%UBS'NBXl*$03]"f[ N71Sh7bZUF#dL".9CG74rWL=?8u+tl/p h.Xt$dse(Vba4lrj;+;]So:3l"OXsi/la:UljdQhE%.:$E)W$*TL6*9QNOZn\O&>(eW).][7>oK=n( E$_#f?P9Tbi9NU+3H@+"65`Y25U.e^a9W]MsBZflkh9?I\!$A1H*e^+ [.:,b[mS0Pi-%r-j:h#]CQ;?T8<.pnm![^fV<`!?s:h;$_MH3_gJ4\i^8`_Wu"6N;=c;!Dl$(B5Vp+ IX#LcH"W^pB5Qh'^J*7)gBJ+f88-8iEJnPpPBO6F,#QoT8KBO).BV's/5QL ib!9eldk[oD0!!DEXMs)dCkk9N,*g,\^PN^S_Bhjn+rg)b#P\H/1!([.722[!9B*K2]L(Id-k+HG`@ F;f]51TGn%\@D.TEZ73l:>Frn7ICjVWqQ$l9Jb^7\kbE&gbn:lE6`D(7p@B@-RBd#!bk7?E2D5V/$" $$BDBKM;nY^A8>MIl5$sH+<)Z!V!G1[laU@,\0UBP^$HNK'*oj\?Gbsp`.f+@JqN1m4Ji=JO,Yi%QJ ONe&eWPP*LI;X^o1ZbDFL9ZA1UbBbk=,fhE6l04e`u@`?f>TcE@iJR5h&IiX7,N3L4MRrCdhIbsJrdYp>t#rE2&4Yq@8XU*e-6l%I<@08RLMaR*jR]f0V#9QoF@9?n 9,.k,e)9EOLgPe[R%9.2g0Leq'(I(:%I@$RsIm('d##3ciC@"d=f=&Jo#(g2N3`?5/UP@d.AT`*+dm h3e*6sD,Ic.5W`/=/&#"X#i0&6RlKP!QmF9j!k$^leoDr_MUQ3k!2_(ki-YFBp>'33G6dkj;Y=*Jug m"\;:K'KF%CE\:J3#/FW#q`,SBg4g/F0'IkJfP1R6hZJbo"1rEqlqqCHk1hj@(f&g=!+u@P#lpV\A+ 5Saa`1MRBe:X90p(s\\rSkZPc=.e./,B54qNds!V!)X!]UVhQm'X\Ki2UZ=+Ce]RW>ln;hGob#%20M =AsC`(T^6S9r!*"JGS:IO_$CGLY:cJQ=CkfGkNKZc5)RDlcOCM6F1MMpO?lKUf=f?/iL'U5#fZ+0R8 HeDBF[mC*fOk>K9\O7ZVr1s9QqZk2@g+hmL0 VsYCS)=pHSk4Wk>bGBKe,PW^bkMKdF"Z:GGFY"lLs7J2@EhA Hk+k!uOmT'*\f2C]k"MK%\5$c(9a,(k>/ZJZZZn,K"Va7YZG(oN4s6T)#OjYnm.%K\Gf:#Wr+="Fs( =d;]$es*2F@:+k)XRCD[.OisZHi.t3:Js\=u0^OJ6@"g!a#!&R(fTcS9"+i!s#QlrkgO_^/#.Q30oE [r=_a:eb&dI*(PT)).)4]o.0qFc;QJ>4>IK0M>;?klP,QL&$+L*h^&MfAtVG`T>EBkcg4Z$^Ve8u;. \3rpL%-/U5DZg^R#a$G@+bMD//eBm2P_N#Q0:a%VWf&m%@oCAlE'bBA9kTQLJ7,$`-uVS,Z_8,$,=M GM#n[u:p`i%t+_%"fMC!mYbof:P!d@8dVuVFgetPfjE\_E'PVuUeg8+iXSP)VF.s,n<6VS]>=,;cGZ 3s^G<[8)@$/Prt75gU3V&%e6CQL@hS9/j]ilQ(U1_[^pd%"S)6J$11Y \V(QI0;^n(c1ku]9/EPVYb?kj-jWN\r1#2+kh's82!o/UV,'[&1,;FGB,TTX]G)eP0Yah5V"DP K=uC'aGSL7reSV$d:_sj0lcnkV%:4lpS=$P*^3=Rsq1Vl1K;8b_K:(;fb]IsWqD%f!p_,p[H:A$a\3Kc\I&OBAanPiL'1 _D,T';X^j>h.@9Js+5+3MR";`04,/[5K=hA.cbAQ6Hq7232ER/P)6OfiDCRBiqU\9l&KAqbfOYG(mV G=X3EKA.bVSVeHcFHC>/q(/;q;"nqVl6jo`n^b?+ii>=lbf%&MgLEj+\F_Q`A/qoUkpj(@,YfcKW21%iND`-M#i3:.h[HYR]`L\@]!Ta`.i,q(o2i=TS;B0 +(Ht8c>/c&N.2$]L,dC3iTM[]A5*ZX4FtDG"Ye/3RN!tnAdm^eTuF&F41(6(11FL#Oi@/&C_Jnp[ t^QQ&KK/<7bKgl.\/J6D&VKW4hkY#U9C=Qg.)/79T6E3D&6`L+Z(b939iIaVP,8?Rq&,>/T](1-R>E Udj9l'L4L=MTSC"):D0.4C1*1D!jRNb*B2pG(PM$+hdTFc?f?0kVTWOEdV'qM(2NsZ4cQHf/+mDm#O0,,QdI*M;kBj7.?OrN;km 0aW?+i+`Y@H9u!GAf1Zm+VNq'IEc`!(.VBGU2gMj6Pu^>L6-#)nAZk]l]N1gn5P:-ABTd$D']BWmki )b$:tP21bcGG7cI\1a["2Z?p%YVLBR+"+;/Q]![JG]NM!0rUAI"[I:quVB SZ6dm4fmp<"1^/sS&O`=!JsR&?a<7c$JoR0:ddCsCR*uQ(Qna=rW\Y-Q-kfu:=puREkYRbB8SsUi2W UD%boC\oKFU$SOXq)2>eMEbh4bHXU^_nu.KD3aPW2/5+[?())dn=6U=.=!!!L`9U_H7SR!=\8][Uo\ -s$c7NceJR""`F;$3Qr!+U3"NAEH..Yc6Q4ULYL$Vcb1hOpE[kdmsH?@QdO(;D&0qBbo/<_N9n#"9L 9i'>REJ;V;[dWA?dO!`@"c_t6q;&L&E-0GTE-q@_m="`+[%C*B!H2^MrhS!71iPSAm(O,LaqUGN^A+ g)Tr!0X97$DT^dO?l:U-N\iM)hJiu5uT&XE"c>G9prIr&fO216ptko0GquhS"O=MW_#aj>%\mLJ9J< Rd(G6X.R6f=!^Ik.!CQ5bV?%ek1a*5h6XhYP!6lD^PT[]?!L O1Sj:X77_n(XG@(LbS7E^P.]LXV:!.@hTd1)uP7)kn.'*;tlJ,l=5NSD:7Kr4+]RG^?MTIU;BgckgP HYoo3b]oorD)>C2=()9#"_,PFJFK"DR6BRlA?N>qf7\E=^p=Ws`*+][#"tSNR)6g='\?sP,llL@LXc Z`LbMLX$$d2gA.VIf0H^e&Fp'dfg-sqi%31u[OaWoK#m([iAdZao8PP0kRDCX*L`jGEJhn+f`4G"U-m#( :JrO5'O(cCa:J;'`OTn.T&_7,YWS8G4`g7tVQ1P\4I1=;=:jj(D`SR>ZGL+8_4P8KM+IqZNoWfTMW> U@%"!pY.'lHOYGXNj(FGmPMQdu[b-(rYS`nR&*)gU1Eb$uGc#u7%"N6MR5KL)it%`LKGqd(=Y.%*qc ;+;J[(hpXS!!694(BWK=$[ppFpQk:)!oQ"7C" @7hU#U"F@60PuiU4aY<+TrX6l.lH7F?Y9'\dFQ(h&E-^/tpk-$_mhf1ST"EK@%OQ;C1d"j2T?tLu<:6;R4p%nmhn%u_&:B=%Rm'[n'$?T7d1aVI ?O>:g1PG8-7*'a[^18l6R>LgRXU>`#EF^VgLtELFFD$l@\bCdC;#)ZS8*M@]\449C'@n_C7'W1.Xq: sW6?HLp4j?)l9V1o(:a?<-FFeTGn%p#0DAGMLAg)=5i6!A)Bf0YTro!rark,7'eKXAa'/URF=Kb+2Flj!kPu0kGU4TR!b&ONA;Cem;B'&K(-t%p An"3gfGajC(at+r`lK^iRLmk#M+qMNnD;4eD\-A%\O25j@#p>!J6'bSDl#o(SPCJ.WiFfU1M0&(2M9PlhCfP.K^f^]a0GL0p3=9a O4f+q8\@2!Gl>l/1f`c!M\QRJ5Hc7(bL;(#%/DQJQ&o[@pk)9uS.gqCa#UCr<+=[T3KGWQG!),j+Dh=6+XIefeK$KH*KGmeQ&VbUo6(/I<&1F9s&OA/`a:bdfZ5Wdo#0 :'+gD#QPt`UDXmU"@Fh/2T.cti@;JBh[50EF\5gUJMn/moSuYU)^/)m#&Is=1;mo-@3@H1 6*qR21]q^&rG>[okl13aG,XCs(a1UdZMlaJJc\4R.Z-hMJV"]3F;_lI"L-PbK)hcCU+M5ag*Z$;`$0 9K36j;))ZYNl`8gsBJhI[CY)EjQ9%ndcCp8F"'F<^OnpVNcKEskm'-Jhue3%P!FU6I%Q-F^_69s9uR $KJ>gS\X#5aDKp-jd,q'WGiX@dmHpH>')J*s/_]?qh[QL4\E6"s=riT`W0u4TI>PG%?=iCqQ(;Y0u; u'!*pVkPl5>Jul60V\)tXN.A%3Ki=\D):[h9Z=Z*aCEYA5]5N!FL)N9pXRf7u=,hu1_e-X$5sO_r%B Ko3_QclM+=N:kO WntP;@:<[u1mH4U1 %5)dYk8o-CLrKKp>J]Je>G.h.Y-:J+>7IQR260uXt@5lGEJT5#.9&&AARi+rr?V/$j>&-.@ff!B/CS 0_Q1C\FtD!0.7Aa(lff"a7(d(8)4(3[D/gC*9qg2W\Zrn-%>0C#K0udZ7q58BkU`,S`Gup"EJYX4YO*SR?)E4.3Q^)hTR<]U0H2"^m =/gH]Xa8TeHM>1%2p$?S[sC!2HT/cd\(>t.TZm/\HFMRU\&3[(a*Dm"IM]VEGJSVBWI5TKJ%+ZlpQ. +Je4TKK9(gkg=;uhD++ar7JJC.7e]S3m'nM`)rDbmJ(c#b8HEFR;=-c(&8Jd%^:2niU?Pl8cVuDuA9 icL&B\5b-7jK3"~> %%EndData end restore showpage %%Trailer %%EOF %%EndDocument @endspecial 324 3825 a(Figure)g(2:)g(Candidates)h(for)e(eac)m(h)i (empt)m(y)h(cell)f(ha)m(v)m(e)g(b)s(een)g(en)m(tered.)g(Some)g(cells)g (ha)m(v)m(e)324 3945 y(only)46 b(one)f(candidate)h(once)g(ob)m(vious)h (in)m(v)-5 b(alids)47 b(ha)m(v)m(e)f(b)s(een)g(excluded.)i(Also,)e (some)324 4065 y(mark)g(with)g(dots)g(instead)h(of)e(n)m(um)m(b)s(ers,) i(simply)g(using)g(the)f(p)s(osition)g(of)f(the)h(dot)324 4186 y(within)33 b(the)g(cell)h(to)e(distinguish)i(them.[1)q(])1918 5251 y(3)p eop end %%Page: 4 4 TeXDict begin 4 3 bop 324 548 a Fd(3.2)135 b(Scanning)324 733 y Fc(Scanning)33 b(will)f(b)s(e)h(a)f(easy)h(solution)f(to)s(o)g (to)g(b)s(e)g(used)h(b)m(y)g(h)m(umans,)h(computers)f(ho)m(w-)324 853 y(ev)m(er)c(need)f(sligh)m(t)g(more)g(co)s(de)f(to)g(accomplish)i (the)f(same)g(result.)h(With)f(scanning)g(y)m(ou)324 973 y(can)33 b("force")f(certain)h(n)m(um)m(b)s(ers)i(in)m(to)d(their)h (sp)s(ot.)g(See)h(\014gure)e(3)h(for)f(a)g(example.)1109 2784 y @beginspecial 0 @llx 0 @lly 200 @urx 201 @ury 2000 @rwi @setspecial %%BeginDocument: scanning.eps %!PS-Adobe-3.0 EPSF-3.0 %%Pages: 1 %%BoundingBox: 0 0 200 201 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%EndComments %%Page: 1 1 save 9 dict begin {/T currentfile/ASCII85Decode filter def[/Indexed/DeviceRGB 248 T 747 string readstring pop]setcolorspace /F T/LZWDecode filter def <> image F closefile T closefile} %%BeginData:; exec !!!!*#71eG$l&aB)[6NZ%hTKh'c@f*)]9S2(`>[&g8>?,U4Q\,Ut2i-nHl"-R^ >p/M\b&0eG.4/MT";-Rpf'0f1[C1c%3Q2`a&_4?,;Y4Zl%k2aRX<"9V!n!aGd0Act:`5$%^a5oq.7. kOIQ2IZ[gBaYAu!!.6W(4.GYC+Ci#5=%P!8O5U+6pj@277p$@7RfpA84Q3B8P)NE7ncQT:/F\d84ZQ Q;,gIn<`N@*>#nm5>?Fs0:K1J&>[^fEl3e '_#R]o.'(-DJiuB-C 2)=IHHgMPr(B`ZCi'#lFo6`=noT#)It3*%ItE9(KSbGCNK&^LM2R:SNg#H_Ocl)cKp%U^QC*u,S!oY 2R?3VmSXlIFU7IXER@g4JXHo-WS=?75NjYFQTq\-RUnafcVPgGsWiN.tW2Zi!Z)t:5Xg>:BW2Qu1YH tUB[(?`5BU:`lQi9nbhM/rorSDl0.[.me$2EpA+FVqYC'`p%eFXr;QVE4 s3Z],SggoKL0*D\7@K<%ui7r8pO>!PA.]kI9!&m.aj/R%];4eb$K-UCB^N5K#,3;agV-&T3=1)Cq-$Nqq9MK.7qo<&Mf #llhd]k4`ZYLmZ7>S`H!Vr;L%jX3ToCLh],W2lY BinO)+2s-5oQj7dhiIj&o^jQq+Oaq4%B-eJ0<\uCh<;uHF$,hR)/\tjlY7)&lh7N]@bC(,9qV&CUbQ H5JM=JB6F!%B*]lm.E,7-Z*J!!0q^F;&>UekDb?Yl[Cg"WSH0_D%BkM3kH`,TK0bOf8kc-Hnl77"NQ X'V\H0>8Nt:$tb+.!!,G+7hO/o%7>r.W)=g['Li'naGJRq+u3%,(IeZmA-ngJ1Pc$%#^LV5U/B,j*m 7I@,qhfQ"HO9*P$HFf8\gi9Jt6d1VMNNo+2@OjGS_ZENd(;SJ]:_1^2P&=*Ze bHGTJ1\=Es]!n%J.\#<7#1MZ0fooD,7,7HOEEM4bQJs#K"N%N[jYG^SAWoBVtl\-SA<;$7hG?sO:oZ2rMg!`hluE=h4W6,eokK7k4 \.7,/RPPRiZaXqh?Lb(g>MRFNK*#\r&9G,u%",%p.H\pC4%RKsH+L%r'"'A_o;V;ZZRr1b$9M Rc6m?8henQ7j8rpLiQTfb1MJ9+]c16Y+VKPCth\&FcCo!OSPS,WT <_Z4"*C-$;Mm@Gkfku^eEA<58o7>f!#kn<6D )`,4;S(70rO[GNOh,3ON@Dh-)hB0$O(gu;&^ a9.YXVE#0;oE?:-)fnWm*.50W][1e;$?LMIgSbOb+%#UIcAiub/c!MWGa+UZ]D?%@M$.,5j"aE].tOGB$pbE+Hc-@qgl)K=-jO+GLdJY4=p0U65o>NeH9mBjLd%U`"sN^ /;[)dNG\<'guu-1%.iZD1M?!%;GFDQ*aX^sF/10Y@UoR_?S4^]Xtk81CfX"LE**fFYTkD'M0Z[#GbA KGfFo>(/)$`(F-n1#s]Ji"3oH*up@s:]R:&o)iE;K3U/;-GcEtb9RNl"Y]oe8%*]h=mnJ6I.a+e+IU QDmltI?r]Q$%D][UK4V*AgUGME77R1S5hGOP:JE7[R,0KFDXC!K_N3J#2XA044Kp]q>%3GYi!DJX*" Mif;ZQmg>!PC)q#*As._H9;6i;alc^lB"R%q5ghNNr0oN7`IRA*i$-,5-2uf@qZbLqsKB6ls5!)^%P (;!oRKHtg-e&8D1fC+9;;#Su`%/`:EA'>On0b_bW?K^_#6K('lb;<'SH0m#4l^u#3%*468R"P#InA) UZEWpk!B3Hl+E)dkoXE"EEkpLTL3GT;?hci]:%,dSMCbYX9aFqc:6"Q-!4H]=3<4[Cb5C#d-AM/eOp !GH<_r9p4uhJ:F4pm2WpbFnI`IF5V;Ep4Rr7YhWgd`+8."ehT%,=d2K#Im)*K@"?5A_iZ^e`n:Y$]j FA3'0I"]to4o&!0F>3roG')^%s,h\#@7!PTYBJUSY0I6'W^0a8HpfGXekIQ+d]VUQkINY#To!X@h"+ N)PW!Ust8K#GL=id_OAVO*H:)Fa*n9)COr9L33Cq]Opt;N!XR0o0,^+Z$k*O>4)q]U+g!!d%fDncaC 0@%`P@+42Nj=X_o3T#>.I'%NK*6@FClp-^+^bd&P;aDOWonqf,V=Nr`M='$Rf7"kLo&!pf"oWoB6L4 ,d:EUU$Ooa6!f9"BkXk!+bIIadU.+4q`TMTLddoYDI-/+U5hlMO'2rsrT=658sgr;#=bqZ7V#i+hn" @e?B!7EBdOO6D`oMOS&bO_&d+M(B^P8g$Fc!6A-@aQE`l[NLWp!X3iLafbokirVcaY=P%@Dj(A+ncn6#ocQlSH%q(PqRNa5_]qe=;*Bk$\:)A8kocZ<"j"D$ ui<$O/2lo '*8Qo\53)I6q@GG`uZts*c^Ec5f*q_<46L6"0`9E&/,:E'"="M+VE4^&(Dcl.0'>K*YI]]Z0*1h<:> P)atBd6iYq`H&H'BRs,0ph`4mIY*?iiRP],Wq$QT("!:141R7-VRKmt?\6QWO&\I>.>`eNd,;BV,V< \ak%i,"tfI3@Mhp_";g&n<*TnKa95"4.T%96@h`%N?QN#XLp"dWco9JdLAH)K:]Y&$$qL,9\et+``V eZ=Y5QbS,Ma(Cto309lABR3KaT`Sn*)^jZZAHj7['MJYZr?oAAmS-!,L+OADgdY*pKg*&3./@&h9+p o=jC^;/f"$p$Gn2)7Z)HdSu]TdV?.05,E%0Mo+E2[(GV)7L&`>r!G;'6 F#*,&o\p.`9-5sq0#cbY!3@Ld5Rr%Ep`SOk#@K\Jl%:+Z/LN/N2=HAQP@Yfa*$Bd;#,,Q4iB3j_gqM j='Bacr:[T@AZj)&"$NRC4cn@C'$l&b)%%sC!_1aS$VBJZ60bQ]3o<9@qBW-JA!^O"Gcb?q]Jkbj4+ A#`U5s>rjU'*4s+Ghcm?oXAOecGi257_KPKul4$q`hm:/E-j>5S+odn-@koMFW""Cdf\mK063)*s'^ r0-V5U)Adu76D-4@@H\Zg&-u5ps0($B1]9_#:]UU)/&43/1W'3U.,7bF+\=4*@"*p)BFD"kQ/QBY@" &>'4P(bb3X_oQDgsg/*BM]24!FkL'YXh12T@SG"*8]0AChpM5r]M>ojM;;YBqbY%Ns7--__&HiY+Oc)(:Zg.+9&2YVSQ6%\h8O.Ls>Oe2k1)%ob C4_mN&e[7n]kFYbicoi5-@DT+.@MGLWq..qI$7*Qfp`WC27da/ccU*3IP&QAfJ/5m9X<>eMfGkgrn= VXq8!YQ="1a)mK^pTe!+qmft+<-SXa]5H$J?oqdt)e/Lu@R)aM!#,RE;.VXcATgrSJ1 k9<1LaBS$6YoHTJei3,ROP(&0UHLA#3O51d8>48gAOn[Z+toO_CBiBf;=Y"*tHPA-5OU5/;ON2QR-+ D?fg_2VTj0GU< RcgJogN&__Y\/==NJXnQUjheV-CeK-ZjQ2PfI%ZUN:WdF3BI>pLde52".9':C8b!9EfJ'ATK^n<]-d \DaIP6?Qq@)2m^V/PdqZG+pnYWIMtL7)=N!($fu^CNHjFp:3/.CJ8$iBOY^\#(I14i^ci)VkCOuF>aI0fWIt@=C'm4>! bhgjV#,[/)Z,TT=MX>.)#JZCD^>Gl*Ip*TC`!0!H%n:(s*,sB15$ZU2?I=:*M>4o0)pjR4,:ZhL^Bn ^63nOhSD)n%"?7QH\._d-`ZS^"!8s:f!Oh"Y!kJ&Q+HjKh63mr!2Q]5&#$F0:_?Bp!_F7U$+AT3Ok+ i/g-6,"o2s"isCjm%jU]OJ7N`CI\R&cCh@KKsq5[d`LH&V1d_16'[R:6:7+Ar`D!X4-8.@=&"-[HK" EXFh9S!!muF'/Pq&.*l1(2nVVN'!++96lCFk?jgDQ)]KV53uP=#*O5JY)aR".],.bW0s_f>IUP>XRj 57$26l3,#XPl)4$U#T*#g<\Z9(:Y4$X_cZkgHh[JO19!ON,?!!Ct_[2VpYTV]$m6+?s")Bbfb+g)BM !Z9Z8Z(SRkm(I\`;lQK9WV(]a(!n,b6`Sa(-@u]*\rV[aF/`5>P&MM+XDrJfc_oJ1KE:VTe7#/^^S_ ,R=oo5GkrZR;5C5Gq+T'uo)Cnn"qms?>,M<"u%%X>DgSSbONEaAGG\'40Fs).qeN;-G]CU2KQ)d!]O W221@B$h@-,)\b3WZZ'JP/EMY8>$n33&N2?6k,`&YH+#d+hK/fc+:!=ml))Q"YchA3qH*s$lm!E 4cd%9Ua_+Mk,gq;K58hk%,)*alPo%H-:])8YP._BK/[+bBpVQ3Z??.a2nVlm^0ZYQhmmQ+>;aggeJ? EZjk]&Gid`O*s;\$l#]Pchr'_m'qr3U'A!=#FIL33d;cUXUcO<^cE"O2;p=Lg)^*,?B`0W!IOr78/` Ui!$Ph?pnbhII(`tN#@K_:@FP@/Q^eaTc(s&75W/jbs1MQ*dhO7MSNDN&W&HZ*q;khJUc1Qo@Y;r'U/k2^aY;&)8`3U"[P6 Y5W$IFrMob)+M=UYS/Ar5Hjc=:cq%0r*(Gh\=p_b4U0](pkggM7KF;%P+J(@pKZ2jI^QBFu9\kcVH2 YD#ajJedK?oKF94?kno-1atiB9rG*!\#Vn^>8dVAW%E;W(o+]f8*p+Zaa>^0LWIdsXBi.Gf'j&".dT mCk]o+o2-lhS14=@Hr<]Qs:6f)CHMRZB^qF+oA7pV8mY'W_^@)+TA=J53q,Jn$*E:#XM,R^E)kE+n; 7.$c&V05:uFKYR08co)CZ`UP]8J47_mQo7'-u+Z9UU9Cg3]"(,!t!BLJc>Ohe]#N%-KgQ2o;8b(_mm 0k6Y7K<,>Hsbj-p`Fr'TfNk'Vtbaop]$TTItS_K7M?rCpn*38^Rb-cU->6"qL=k,T7?ZfWYHV&qObP !hhE%XA-u\,)IK!3hl[l.(^%OVq;8g^TqW=)C\Ji3V>eS_d!]iO`0Y>AF])QjFJB"pCMQE3c7QPP[qWY\5Qg/E6uhX@k2c3AKFcff?A\LkEf: =R>@CUG@K8u6>p[8?kqV=!JVDN>&LpK6UsDI9."D_eKEti'U[9MkON(u@WX>*`l]W>LC6Dc66I901Fc( _&;Nf-8?i[Jo:]`s,!+W8:'7siM5i*rgqVq&k,k*^7:bQYkT[:og8p,uaN,Ir;A#1OglEMZtQNj2?9%il+7&=JbCqge^C2b-UamQaA)d<)P2T^:qBYu)VQ:d&"\Ng -BQCLGY`Gp8kDCu;#[i*;-AD"T:npHj9%B"To0M_-8mj:kf]alAm-(rj_`Y>-h3.sRS !!='l"l]pu)fX_LKnpl]TmR`/6^Vm'@'DQ/gbp.)TPP<^N&Y5c%3:%3_7Q#a]@gB4DC!W3PS(LT$4/ UKN7=H-20)P'aeNfKoaEP6E5W'8&g_P20ufAUbaSZsA&]9I3!R\N=ZS=""O]RK\HkfaC!Km/ah3f=F :B0&I3o>XO>msD78qT#AL0rAP,U3.JYC=KmY7P_=knkmN#8%LKZm4si!-@YDRU'e,MD&KitW,G6[j^bca[dE ud*bYS>u-54Zb648`e84Ue5i?Y1"Q-l[\$.(ReL%$6(KUt)c$'<,9OZcSN!dYIZY`4C))@+bACSPq9tae#%3V^9+s"7bk B!'ifOL:U,'C>_f95q6e`A5[t52_+*^AI&8Yl@^i&2lJ$T9%O@Q8Q&s/"P=Y3@aG5b]4uC=\j!EqIb g0&H9MLo#RZ2lDHs5sDSS6:)F/*\g0+k*jkX:1WeSD^)B:ekfGXjDH?@X\5>__e7VO3sD\8)*!C0`t !T=rN7tNEU`:X*;6Y=/A-@%q5_2Y?.*0isu9n3Mp![QD0bXqYp,75"8)]5l[?BRuC-BbO4Q$Us2"L2 _ZGdD04\O52pCk!bJ\I8-e51j+_+E?BSa3rJ=="+q+RV\cGD>or"Jhh%ZeDP"/?t)uY$X8I`EA,_g+ Wp'L9!YhYb8B"@V-1N&!g(/5\^roUI./dY+Ij**dlcgkl7[kdSdV;`5\P.`#=&8Qd2E!_B0@3+`@+P "RR]IJn9b39hNlIhe0aG(n1=]L^a;7>S8#>0C)b4_cQ8^g7efa''9 l45KQ2$--&mg5^35IT77#(2p:1oi,i@m3XBshO$Q!8NC$D2_U[?!MoI[eSGm3I=bn_DPaXYCY3,T-m KGlFZ*CI@GVR!+16,(=j'\K:m;%:Nesf>Wh.!^Lu^@A^rib==GXJ4p3!!%'*@,i,"Qk18V1X!YqBUE bBJU"9=p-U:c7n3hl=%F?46#>i_J@\]uF&lmM(;c"9\5\Z70flOKD_I:.Dch8!V/FM1/(;XN5J,slI NAsT>^us9'Z9Tj(%f6GQjaR"?^X'ad4e;IQ_n0>9=coElAC%=ja&7/,()7"BX6!2ol\D;JtoF:& *=C^)9s!*JNBq%>AAJNJ]i4J7''fH(3P;?3(>]\>!B^l5SXX?UD?)k_9Ri),8u1G"?C\fd&cPO#hWP (gCbJClIU0G#X3"0re`RXfO"WZeMdLX?]\lNW<'A&0l]n*/uHo3TB8=nlS3[Tpq^#L6,\pl6?GcKfYT[$.L<6Tqr!]*s1qH"T T#9o@q&GS2`OD08d@C&0-F\>C`E;]'H3)!C=?^/qF(T_&L5p-lfL=f,FEm!XK,7"4KTJ;2r/SLraN: fae5Vc91/W^rte%$S_q1%0sg3&X$^paE`OKLHBPl't`ucS63VV<^Ge:).S.OEhfm+hF6,3%/V6+`%a \b]ti$^3uZ6s$\C^\Qp_UV$hGqjbVBK/VPYn$0FV$_/&DTq]K.k<]UWj^)65f.I>Y'Y`.>'NJ:' /^nn7W]Z+_"!#lDMFfuL89Ak,_F)oJVKh8K]l0cm"EG:K?0"&UPMX!`.uE-LWGQkJFEO?*/I-RO3%) uK'\$/7#]4"K*@Vq89BYZ7#8o,+b0P'8Bd1;W*P"6O@];980D5jKT&LHPK5F/7rq^_(fHA2;9DF-"W XA]@,]7D7tQ,e8mJ::<2rPU;?H>7b!`."A?/>`U^5lqb,hX9m&s$#/qP(I8t<<3:cEt'W_.B4b<2j, Ll0>SZcgRib&C,WoXN'1Z:]ME"R$iKPd8JCVM-E?a6X3AOg^a,EJVcZM-7FtXE9K@C^F?`19>)FXCn ktosmb1$,`]tr5tpjA1n&?0oR[k&3%XG@)qj%7g(V/Eji\cAB(lF_uqX1kan!]S]2R+$hNIL1t439) )t!cM-KV^I,Pm#aGFGJYT._[9[pT-hE-8&#@K/LTV0,Ach !'V?s%r0?j5Hk.,=J]/7h(<O>]<6n8A:L)tARd)W'oENqTJe2u-a;f ^CMT&JtcP)qq]]0:=07_Da#*9/8m4f'E;*9r%LS-$s/%HRK?%L'+!dH*nLi+I'iY<1Y'h$H+UuK]O= 9.7gLqjIMi^qNGN4XG))sD-hMDi)6D2-tdLKGr*\k11]_UOtn9rr>)UEDe*/1gj.J:K:A*?>j3QbNe$t>A5V)o^%AJLi$Gq)/d#`tN)Co#1#q0K*i#4lVFN0#J`[ (Q'UiR1tD$Jg'6a\/d5a$nm!nS9PcaA.rPl4(16Ijf&Ch."W29>+M\Ih6RCF% pL'T>4o0&^`V<2ZJ+]O874"Mn5.l!]NVO9aP[BYjg//sW!(0]>@kA"Qqc?V^KZu="RC-O+H-_Ck$3n f>b0#BXijt[ja`OHJaa!$mE]&4$%URQ>ohtrmU2:^N*f%gefh0mr3S_IFeg0Fm;h) "M$\9?^,hhRSBh@Or;BR'iEFl![ThG)s8*TQ!IG2@r7#@6NLR>bG]lJ@N^?6/+`Q0$k>lWuI0?FB9/ c08Qrm,%^3h];)j*U[84pKrpLhbE6>`V*Y%jklp#hKA_Ph %%EndData end restore showpage %%Trailer %%EOF %%EndDocument @endspecial 324 3095 a(Figure)d(3:)g(The)h(33)f(region)h(in)f(the)h (top-left)f(corner.)h(The)g(solv)m(er)h(can)e(eliminate)i(all)e(of)324 3216 y(the)h(empt)m(y)i(cells)f(in)g(the)f(top-righ)m(t)g(corner)h (whic)m(h)g(cannot)g(con)m(tain)f(a)g(5.)g(This)i(lea)m(v)m(es)324 3336 y(only)h(one)g(p)s(ossible)h(cell)f(\(highligh)m(ted)h(in)e (green\).[1)q(])1918 5251 y(4)p eop end %%Page: 5 5 TeXDict begin 5 4 bop 324 548 a Fd(3.3)135 b(Analysis)324 733 y Fc(Analysis)27 b(will)g(b)s(e)f(ev)m(en)i(more)e(complex.)i(It)e (can)g(consist)i(man)m(y)f(metho)s(ds)f(to)g(logically)324 853 y(gain)35 b(a)g(solution.)h(There)g(is)g(one)f(p)s(oin)m(ted)h(out) f(\(and)h(implemen)m(ted\).)h(Let's)f(pretend)324 973 y(w)m(e)d(ha)m(v)m(e)h(a)f(ro)m(w)g(in)f(whic)m(h)i(are)f(3)f(sp)s (ot's)i(still)f(to)f(b)s(e)h(\014lled.)470 1094 y(Options)d(to)f(sp)s (ot)h(A:)g(1,)f(2)h(,3)f(Options)h(to)f(sp)s(ot)h(B:)g(2,)f(3)g (Options)h(to)g(sp)s(ot)f(C:)h(2,)g(3)470 1214 y(B)j(and)f(C)h (together)g(will)g(use)g(n)m(um)m(b)s(er)h(2)f(and)f(3,)g(so)h(A)g(has) g(to)f(b)s(e)g(1.)h(It's)g(just)g(an)324 1335 y(other)f("simple)i (solution",)f(but)g(implemen)m(ting)i(it)d(it's)h(a)g(bit)f(hard.)1501 2295 y @beginspecial 0 @llx 0 @lly 106 @urx 99 @ury 1060 @rwi @setspecial %%BeginDocument: cplusplus.eps %!PS-Adobe-3.0 EPSF-3.0 %%Pages: 1 %%BoundingBox: 0 0 106 99 %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%EndComments %%Page: 1 1 save 2 dict begin {/DeviceRGB setcolorspace /T currentfile/ASCII85Decode filter def /F T/DCTDecode filter def <> image F closefile T closefile} %%BeginData:; exec s4IA0!"_al8O`[\!<<*#!!*'"s4[N@!!ic5#6k>;#6tJ?#m^kH'FbHY$Odmc'+Yct)BU"@)B9_>,VC Ge+tOrY*%3`p/2/e81c-:%3B]>W4>&EH1B6)/6NIK"#n.1M(_$ok1*IV\1,:U?1,:U?1,:U?1,:U?1 ,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,AmF!"fJ:@fU6G!?qLF&HMtG!WU(<)uos?!WrH (zz!!!!'"U>)2":,&._uMY+!!30'!X&W/"U"l/z!HCu[j?7Z$1t4@J20nMW(:t@&oA7kbS9,MZ_(42SgB+q\ R%/S'XoR4e+K$\H_VtJBYR7M6*0'J\,8goC!6;'8C*j#&FMQWq"Uf4384EFGKIra>[/c&b.GP+5%"m nR*oJhO=SIYG0&o?C:_[)dWWKV+'L9m1=)!K$"+DtMmLp'@_'7T=npu"-?K!fb*F93fl<4:9&mRp>= T&FOA@V";7c_m#/hT<2:aJ,@&?Ktb.4k\/D?YT\tPtkCRVRsN>fo0Mj@ME:LdM,PI*`<^\ W:;1*T;tJY]41&-`/D.a80i^Alc@T!18:(H$3tTdYN&q1^>^1bK(?d'UUNm=6S#G&6S[X_pSBa6G3d 4/0[q;Q@D#'8D=p!h13d[(g>5jO;OkKqoq`Tj9(([V/ak7Q(U+IV@')Yp+/--u_%&2o3UFc(M^5j3q3S0LXStQ%q/#QM/-t?nG!Z2m ll@8)a7\qZIM38Pb1To.r13q5'[5k=C)"sFL`X>@`j*`iID^1>dG5On`nfu_tUuG(-QJdnS4U:RTHB `=0+Rb^H;;'1R)mA>+ps9FV_]NG0J.:Ol,'b>f Km>976a>31=-F;)%!($*IEDfHZoIreJ0:>HPTAU/FTETQd[SY1cU)f"!)-+nB-6dH:fO6K]2SYGB&C+m `aTPT$eAWQ.T2:?48@]KE9rr>tEm\3:l@isQQmf*9Aoc=\(#iW<_RL'ofap4(qq[lMF;>3EGNeiiWIZ*12JRMCg8G:^r$=RaJ^=8GD7%Q6;K[$=\`B3A(:P)q[bB5ugQ?ac!>W4Bi O74__TGt8aBm'`V)s@73Jl*Vb;1>ObgJMIAT1B;cL?(p32i39NkoJQsjdC^[c1I4ar);f>)6Yu<[>(m']ObV$MJ5Mm_EG p,68]49bOk1.Ofm<5-&G[S3JqT=LZ!5(rr@u\J)SeKc5Pqgl1DA^\j`-Urer45Y&UKu[=P=Hil%&XCC,Y=(O_pfSH;6@T0N-+q2APD$qBVN(_r/qcT$@Oe OAWks@,@[Pfa>g4&6hjD#WE`jFPXE^_8AB&1Iq])S>9YM!s*h2[5Qf2lJ?$lN.O. >%@*qd@$B?J!+.L1otdVCqM*)`q!K#0"/u(#HY:d/G):.Dm,ASIUF'*5-`Ylb`(L@[o1m-PKP.aBoc J!lX/;j@(Ue\UNSdV>:?DS 'SS#VpBhBZcl+lo(U/?6%I/;Dli-EKFB)I2$lNVcVf85*MU`i[BWf)U`^k'k8Ha4WX_cK>8'?^]Mdd ?_n+E=2HO@?o_r8gcm]-hm@*ueH[Osph@K#)0PgR2ekaGn>8Ze0Dj`!VNN.?>39#s%02WN9CCAhlSo BYclbrlpr@n@8sOdn,AkMEG8:1q,#7pmPEAEO&mF'#O`E0NEFP?hCc9DDT25lUi:#N\1XVRpERl\5FRtGi#QTjmT#rf#2K/Y'5(u"_l9[mL4 0s'=tgWIiqhuES9Ye75BBV8MM`-J.ZT#dG)i.]DfZ]+?,kBcHdm-Vc4SQcPfJ"K(utc,,1=`eagF-8 edrq6o]9DFfD'g&esPYos,%)NNUaP?!#5$OKT5'"rVbnG[ &*_/2A\Cpcq#dDq4j+u9b.-m[jG2/6/H`fS3F`h %%EndData end restore showpage %%Trailer %%EOF %%EndDocument @endspecial 324 2833 a Fe(4)161 b(Implemen)l(tation)324 3052 y Fc(The)37 b(solv)m(er)h(and)e(create)h(program)g(are)f(b)s(oth)g (written)h(in)g(C)2621 3035 y Fb(++)2731 3052 y Fc(.)g(It)f(uses)i(a)e (2d)g(arra)m(y)324 3172 y(to)44 b(imp)s(emen)m(t)j(the)e(sudoku)h(b)s (oard)f(and)g(a)g(3d)f(arra)m(y)i(to)e(implemen)m(t)j(the)e(curren)m(t) 324 3293 y(a)m(v)-5 b(ailable)33 b(c)m(hoices)h(at)e(the)h(b)s(oard.) 1918 5251 y(5)p eop end %%Page: 6 6 TeXDict begin 6 5 bop 324 548 a Fe(5)161 b(Creating)52 b(so)t(duku's)324 767 y Fc(There)34 b(are)e(3)g(main)h(w)m(a)m(ys)i(to) d(create)h(sudoku's)443 970 y(1.)49 b(Randomizing)32 b(stupid,)h(just)f(push)h(for)e(example)i(17)f(random)g(n)m(um)m(b)s (ers)h(inside)568 1091 y(the)g(sudoku)h(and)e(hop)s(e)h(none)g(of)f (them)h(will)h(in)m(terference.)443 1294 y(2.)49 b(Randoming)44 b(smart,)i(push)g(for)e(example)i(17)e(random)h(n)m(um)m(b)s(ers)i (inside)f(the)568 1415 y(sudoku)33 b(and)g(b)s(e)g(sure)g(none)g(of)g (them)g(will)g(b)s(e)g(a)f(violation)h(of)f(the)h(structure.)443 1618 y(3.)49 b("Cleaning")22 b(\014rst)g(generate)g(a)g(complete)h (sudoku.)g(Then)g(get)f(y)m(our)g(wip)s(ercleaner)568 1738 y(and)31 b(delete)i(some)f(n)m(um)m(b)s(ers.)i(This)e(solution)g (is)g(a)f(bit)h(di\016cult)h(and)e(will)h(use)h(a)568 1859 y(lot)e(of)g(math)g(to)g(generate)i(a)e(full)g(puzzle)i(and)f(y)m (ou)g(are)f(not)h(sure)g(if)f(the)h(puzzle)568 1979 y(has)h(got)f(only) h(one)g(solution.)324 2312 y Fe(6)161 b(Exp)t(erimen)l(ts)324 2560 y Fd(6.1)135 b(Solv)l(er)324 2745 y Fc(First)23 b(w)m(e)i(will)f(test)g(the)g(solv)m(er.)i(The)e(w)m(ebsite)i(of)d(G.)g (Ro)m(yle[2)q(])g(has)h(got)f(plen)m(t)m(y)j(solv)m(eble)324 2865 y(17)k(sudoku's.)i(A)f(few)g(of)f(them)i(are)e(placed)i(at)e(App)s (endix)i(C.)f(There)h(is)f(a)f(small)h(shell)324 2985 y(script)23 b(written)g(\(App)s(endix)g(B\))g(to)e(test)i(the)g (result.)g(By)f(trying)h(to)f(solv)m(e)h(1000)f(puzzles,)324 3106 y(the)28 b(program)g(managed)g(to)g(complete)h(547,)e(the)i(other) f(puzzles)i(requires)f(some)g(more)324 3226 y(logic)j(implemen)m(ted)k (to)c(solv)m(e)i(them.)324 3515 y Fd(6.2)135 b(Generator)324 3700 y Fc(The)23 b(generator)f(will)g(generate)h(of)e(puzzle)i(of)f (class)h(2)f(\(Random)f(and)h(not)g(v)m(ery)i(stupid\),)324 3820 y(the)37 b(solv)m(er)i(will)e(try)h(to)e(\014x)i(this)g(puzzle.)g (No)f(c)m(hec)m(ks)j(for)c(unique)j(solutions)f(will)f(b)s(e)324 3941 y(made.)27 b(T)-8 b(able)28 b(b)s(elo)m(w)g(will)g(p)s(oin)m(t)f (out)f(the)i(results)g(b)m(y)g(running)g(the)f(test)h(10000)d(times.) 374 4261 y(P)m(ercen)m(t)34 b(sudoku)g(\014lled)f(initially)p 1676 4298 4 121 v 101 w(Solutions)g(found)g(1st)g(round)p 2879 4298 V 100 w(Solutions)g(found)f(2nd)h(round)p 324 4301 3793 4 v 374 4385 a(10\045)p 1676 4421 4 121 v 1174 w(0)p 2879 4421 V 1155 w(0)374 4506 y(20\045)p 1676 4542 V 1174 w(0)p 2879 4542 V 1155 w(0)374 4626 y(30\045)p 1676 4662 V 1174 w(160)p 2879 4662 V 1057 w(0)374 4746 y(40\045)p 1676 4782 V 1174 w(0)p 2879 4782 V 1155 w(0)374 4867 y(50\045)p 1676 4903 V 1174 w(0)p 2879 4903 V 1155 w(0)1918 5251 y(6)p eop end %%Page: 7 7 TeXDict begin 7 6 bop 324 548 a Fe(7)161 b(Conclusion)324 767 y Fc(The)38 b(solv)m(er)h(ain't)f(go)s(o)s(d)f(enough)h(y)m(et,)h (he)f(should)g(\014x)h(ev)m(ery)g(puzzle)g(and)f(not)g(50\045,)324 887 y(need)26 b(to)f(program)f(some)i(aditional)f(logic.)g(The)h (creator)f(isn't)h(v)m(ery)g(go)s(o)s(d)e(either,)i(only)324 1008 y(30\045)39 b(will)g(generate)h(some)g(solv)m(eble)h(puzzles,)g (It)e(prop)s(erly)h(ha)m(v)m(e)g(something)g(to)f(do)324 1128 y(with)32 b(the)f(v)m(ery)i(bad)e(random)h(generator,)f(the)h (random)f(seed)i(if)e(\014lled)h(with)g(the)g(unix)324 1249 y(time)41 b(in)h(whic)m(h)g(in)f(100)f(o)s(ccured)i(pro)s(cess)g (will)g(b)s(e)f(the)g(same.)h(The)g(creator)f(needs)324 1369 y(metho)s(d)33 b(3)g(to)f(b)s(e)h(implemen)m(ted)j(to)c(v)-5 b(alidate)33 b(this)h(assumption)g(or)e(a)h(rewrite)h(of)e(the)324 1489 y(co)s(de.)324 1822 y Fe(References)324 2041 y Fc([1])49 b(Wikip)s(edia)33 b(F)-8 b(oundation)32 b(Inc,)i(h)m(ttp://en.wikip)s (edia.org/wiki/Sudoku)324 2245 y([2])49 b(G.)21 b(Ro)m(yle,)h(Minim)m (um)i(Sudoku)f(h)m(ttp://www.csse.u)m(w)m (a.edu.au/~gordon/sudokumin.php)1918 5251 y(7)p eop end %%Page: 8 8 TeXDict begin 8 7 bop 324 548 a Fe(App)t(endix)52 b(A:)i(sudoku.cpp)324 767 y Fc(The)33 b(follo)m(wing)g(C)1006 750 y Fb(++)1149 767 y Fc(has)g(b)s(een)g(used)h(to)e(solv)m(e)i(the)f(puzzles)324 1101 y Fa(/*)47 b(file:)f(sudoku.c)372 1214 y(*)h(author:)f(rick)g(van) h(der)g(Zwet)g(0433373,)e(2006)372 1327 y(*)i(University)e(Leiden,)h (LIACS)372 1439 y(*/)324 1665 y(#include)f()324 1778 y(#include)g()324 1891 y(#include)g()324 2004 y(#include)g()324 2117 y(#include)g()324 2343 y(#define)h(MAX_XYZ)f(9)324 2456 y(#define)h(EMPTY_SPOT)f('_')324 2794 y(#define)h(bold)g("[1m")324 2907 y(#define)g(normal)g("[0m")324 3133 y(#define)g(DEBUGPLACE)f(stderr)324 3246 y(const)h(char)h(esc)g(=) g(27;)572 b(/*)47 b(escape)f(character)g(*/)324 3585 y(int)h(debug\(const)d(int)j(level)g(=)g(0\))324 3698 y({)324 3811 y(#if)g(DEBUG)515 3923 y(if)g(\(level)f(<=)h(DEBUG\))515 4036 y({)706 4149 y(return\(1\);)515 4262 y(})515 4375 y(else)515 4488 y({)706 4601 y(return\(0\);)515 4714 y(})324 4827 y(#else)515 4940 y(return\(0\);)1918 5251 y Fc(8)p eop end %%Page: 9 9 TeXDict begin 9 8 bop 324 548 a Fa(#endif)324 661 y(})324 887 y(class)46 b(Sudoku)g({)515 1000 y(public:)706 1112 y(Sudoku\(\);)706 1225 y(void)g(printNice\(const)e(int)j(boldRow)f(=)h (-1,)g(const)f(int)h(boldCol)f(=)h(-1,)g(const)g(char)f(emptcolSpace)f (=)i(EMPTY_SPOT\);)706 1338 y(void)f(printRaw\(\);)706 1451 y(void)g(printPossible\(\);)706 1564 y(void)g (printPossibleAtNumber\(con)o(st)c(int)k(row,)h(const)f(int)h(col\);) 706 1677 y(void)f(reset\(\);)706 1790 y(int)h(randomNumbers\(const)42 b(double)k(chance\);)706 1903 y(int)h(fromFile\(FILE)d(*handle\);)706 2016 y(int)j(insert\(const)d(int)j(row,)f(const)h(int)g(col,)f(const)h (int)g(number\);)706 2129 y(int)g(solutionFinder\(\);)515 2242 y(private:)706 2355 y(int)g(_sudoku[MAX_XYZ][MAX_X)o(YZ];)706 2467 y(bool)f(_possible[MAX_XYZ][MAX_XY)o(Z][M)o(AX_)o(XYZ])o(;)706 2580 y(int)h(_numbersFilled;)706 2693 y(void)f (_updatePossibleList\(const)41 b(int)47 b(row,)g(const)f(int)h(col,)g (const)f(int)h(number\);)706 2806 y(bool)f(_solution1\(int)e(&row,)i (int)h(&col,)g(int)g(&number\);)706 2919 y(bool)f(_solution2\(int)e (&row,)i(int)h(&col,)g(int)g(&number\);)706 3032 y(bool)f (_solution3a\(int)e(&row,)i(int)h(&col,)f(int)h(&number\);)706 3145 y(bool)f(_solution3b\(int)e(&row,)i(int)h(&col,)f(int)h (&number\);)324 3258 y(};)324 3484 y(Sudoku::Sudoku\(\))324 3597 y({)515 3709 y(reset\(\);)324 3822 y(})324 4161 y(void)f(Sudoku::printRaw\(\))324 4274 y({)515 4387 y(int)h(row,col;) 515 4500 y(for)g(\(row)f(=)i(0;)f(row)g(<)g(MAX_XYZ)f(;)h(row++\))515 4613 y({)706 4726 y(for)g(\(col)f(=)i(0;)f(col)g(<)g(MAX_XYZ;)f (col++\))706 4839 y({)897 4951 y(printf\("\045i)f(",)i (_sudoku[row][col]\);)1918 5251 y Fc(9)p eop end %%Page: 10 10 TeXDict begin 10 9 bop 706 548 a Fa(})706 661 y(printf\("\\n"\);)515 774 y(})324 887 y(})324 1000 y(void)46 b(Sudoku::printNice\(const)c (int)47 b(boldRow,)e(const)i(int)g(boldCol,)1422 1112 y(const)f(char)g(emptcolSpace\))324 1225 y({)467 1338 y(int)h(row,col;)467 1451 y(int)g(tmpRow;)467 1564 y(const)f(int)h (maxRow)f(=)i(\(MAX_XYZ)d(+)j(\(MAX_XYZ)d(/)j(3\)\))f(*)g(2)h(+)f(1;) 467 1677 y(for\(tmpRow)e(=)i(0;)h(tmpRow)e(<)h(maxRow;)f(tmpRow++\))467 1790 y({)658 1903 y(if)h(\(\(tmpRow\0458\))e(==)i(0\))g({)h (printf\("+"\);)c(}else)i({printf\("-"\);})467 2016 y(})467 2129 y(printf\("\\n"\);)467 2242 y(for)h(\(row)g(=)g(0;)g(row)g(<)h (MAX_XYZ)d(;)j(row++\))467 2355 y({)658 2467 y(printf\("|)d("\);)658 2580 y(for)i(\(col)f(=)i(0;)f(col)g(<)g(MAX_XYZ;)f(col++\))658 2693 y({)897 2806 y(if)h(\()g(_sudoku[row][col])c(==)k(0\))897 2919 y({)1087 3032 y(printf\("\045c)e(",emptcolSpace\);)897 3145 y(})897 3258 y(else)897 3371 y({)1087 3484 y(if)j(\(row)e(==)h (boldRow)f(&&)h(col)g(==)g(boldCol\))1087 3597 y({)1326 3709 y(printf\("\045c\045s\045i\045c\045s)c(",esc,)j(bold,)g (_sudoku[row][col],)2328 3822 y(esc,)h(normal\);)1087 3935 y(})1087 4048 y(else)1087 4161 y({)1278 4274 y(printf\("\045i)e (",)i(_sudoku[row][col]\);)1087 4387 y(})897 4500 y(})897 4613 y(if)g(\()g(\(\(col)g(-)g(2\))g(\045)h(3\))f(==)g(0)g(\))897 4726 y({)1087 4839 y(printf\("|)f("\);)897 4951 y(})1894 5251 y Fc(10)p eop end %%Page: 11 11 TeXDict begin 11 10 bop 706 548 a Fa(})658 661 y(printf\("\\n"\);)658 774 y(if)47 b(\()h(\(\(row)e(-)h(2\))h(\045)f(3\))g(==)g(0)h(\))658 887 y({)897 1000 y(for\(tmpRow)d(=)i(0;)g(tmpRow)f(<)i(maxRow;)d (tmpRow++\))897 1112 y({)1087 1225 y(if)j(\(\(tmpRow\0458\))c(==)j(0\)) 1087 1338 y({)1278 1451 y(printf\("+"\);)1087 1564 y(})1087 1677 y(else)1087 1790 y({)1278 1903 y(printf\("-"\);)1087 2016 y(})897 2129 y(})897 2242 y(printf\("\\n"\);)658 2355 y(})515 2467 y(})706 2580 y(printf\("\\n\\n"\);)324 2693 y(})324 2919 y(void)f(Sudoku::printPossibleAtNum)o(ber)o(\(con)o (st)c(int)k(row,)h(const)f(int)h(col\))324 3032 y({)515 3145 y(if)g(\(debug\(3\)\))515 3258 y({)706 3371 y(int)g(tmpPossible;) 706 3484 y(fprintf\(DEBUGPLACE,)42 b("Possible)j(at)j([\045i,\045i]:)d (",)i(row,)g(col\);)706 3597 y(for)g(\(tmpPossible)d(=)j(0;)h (tmpPossible)c(<)k(MAX_XYZ;)d(tmpPossible++\))706 3709 y({)897 3822 y(if)i(\(_possible[row][col][tm)o(pPos)o(sib)o(le])41 b(==)48 b(true\))897 3935 y({)1087 4048 y(fprintf\(DEBUGPLACE,"\045i)42 b(",)47 b(tmpPossible)e(+)i(1\);)897 4161 y(})706 4274 y(})706 4387 y(fprintf\(DEBUGPLACE,)42 b("\\n"\);)515 4500 y(})324 4613 y(})324 4839 y(void)k(Sudoku::printPossible\(\))324 4951 y({)1894 5251 y Fc(11)p eop end %%Page: 12 12 TeXDict begin 12 11 bop 467 548 a Fa(int)47 b(row,col;)467 661 y(if)g(\(debug\(3\)\))467 774 y({)706 887 y(for)g(\(row)f(=)i(0;)f (row)g(<)g(MAX_XYZ)f(;)h(row++\))706 1000 y({)897 1112 y(for)f(\(col)h(=)h(0;)f(col)g(<)g(MAX_XYZ;)f(col++\))897 1225 y({)1087 1338 y(if\(_sudoku[row][col])d(==)k(0\))1087 1451 y({)1278 1564 y(printPossibleAtNumber\(row)o(,col)o(\);)1087 1677 y(})897 1790 y(})706 1903 y(})515 2016 y(})324 2129 y(})324 2467 y(void)f(Sudoku::_updatePossibleLis)o(t\(c)o(onst)41 b(int)47 b(row,)g(const)f(int)h(col,)g(const)f(int)h(number\))324 2580 y({)515 2693 y(int)g(tmpRow;)515 2806 y(int)g(tmpCol;)515 2919 y(int)g(blockRow;)515 3032 y(int)g(blockCol;)515 3145 y(int)g(c;)515 3484 y(/*)g(Row)g(and)g(Col)g(and)g(Number)f(own)g (*/)515 3597 y(for)h(\(c)g(=)g(0;)g(c)h(<)f(MAX_XYZ;)f(c++\))515 3709 y({)706 3822 y(_possible[row][col][c])41 b(=)48 b(false;)706 3935 y(_possible[row][c][numbe)o(r)42 b(-)47 b(1])g(=)h(false;)706 4048 y(_possible[c][col][numbe)o(r)42 b(-)47 b(1])g(=)h(false;)515 4161 y(})515 4387 y(/*)f(Block)f(*/)515 4500 y(tmpRow)g(=)h(row)g(-)h(\(row)e(\045)i(\(MAX_XYZ)d(/)j(3\)\);)515 4613 y(tmpCol)e(=)h(col)g(-)h(\(col)e(\045)i(\(MAX_XYZ)d(/)j(3\)\);)515 4726 y(for)f(\(blockRow)e(=)i(tmpRow;)f(blockRow)g(<)h(\(tmpRow)f(+)h (3\);)g(blockRow++\))515 4839 y({)706 4951 y(for)g(\(blockCol)e(=)i (tmpCol;)f(blockCol)g(<)h(\(tmpCol)f(+)h(3\);)g(blockCol++\))1894 5251 y Fc(12)p eop end %%Page: 13 13 TeXDict begin 13 12 bop 706 548 a Fa({)897 661 y (_possible[blockRow][bl)o(ockC)o(ol][)o(num)o(ber)41 b(-)48 b(1])f(=)g(false;)706 774 y(})515 887 y(})324 1000 y(})324 1225 y(int)g(Sudoku::insert\(const)42 b(int)47 b(row,)f(const)h(int)g(col,)f(const)h(int)g(number\))324 1338 y({)515 1451 y(if)g(\(debug\(1\)\))e({)i(fprintf\(DEBUGPLACE,)c ("Will)j(insert)g(\045i)h(at)h([\045i,\045i]:)d(\045i\\n",)1278 1564 y(number,)h(row,)h(col,)f(_possible[row][col][number)41 b(-)47 b(1]\);)g(})515 1790 y(if)g(\(_possible[row][col][num)o(ber)41 b(-)48 b(1])f(==)g(true\))515 1903 y({)706 2016 y (_updatePossibleList\(row)o(,)42 b(col,)k(number\);)706 2129 y(_sudoku[row][col])d(=)k(number;)706 2242 y(_numbersFilled++;)706 2355 y(return\(0\);)515 2467 y(})515 2580 y(else)515 2693 y({)706 2806 y(return\(1\);)515 2919 y(})324 3032 y(})324 3258 y(int)g(Sudoku::randomNumbers\(c)o(onst)41 b(double)46 b(chance\))324 3371 y({)467 3484 y(if)h(\(debug\(1\)\))e({) j(fprintf\(DEBUGPLACE,)42 b("Running)k(createsudoku\\n"\);)d(})467 3597 y(int)k(row;)467 3709 y(int)g(col;)467 3822 y(int)g(c;)467 3935 y(int)g(randomnumber;)467 4048 y(int)g(numberdone[MAX_XYZ];)467 4161 y(int)g(numbertried;)467 4387 y(srand\()f(\(unsigned\)time\()e (NULL)i(\))i(\);)467 4613 y(for)f(\(row)g(=)g(0;)g(row)g(<)h(MAX_XYZ;)d (row++\))467 4726 y({)658 4839 y(for)i(\(col)f(=)i(0;)f(col)g(<)g (MAX_XYZ;)f(col++\))658 4951 y({)1894 5251 y Fc(13)p eop end %%Page: 14 14 TeXDict begin 14 13 bop 849 548 a Fa(if)47 b(\(rand\(\))f(<)h (\(RAND_MAX)e(*)j(\(chance)e(/)h(100\)\)\))849 661 y({)1040 774 y(numbertried)d(=)k(0;)1040 887 y(for)f(\(c)g(=)g(0;)g(c)h(<)f (MAX_XYZ;)f(c++)h(\))g({)h(numberdone[c])c(=)j(0;)g(})1040 1000 y(do)1040 1112 y({)1231 1225 y(if)g(\(numbertried)d(==)j(9\))1231 1338 y({)1422 1451 y(return\(1\);)1231 1564 y(})1231 1677 y(else)1231 1790 y({)1422 1903 y(numbertried++;)1231 2016 y(})1135 2129 y(do)1135 2242 y({)1278 2355 y(randomnumber)e(=)i(1) h(+)f(\(int\))f(\()i(\(double\)MAX_XYZ)c(*)j(\(random\(\))e(/)j (\(RAND_MAX)d(+)i(1.0\)\)\);)1135 2467 y(})h(while)e (\(numberdone[randomnumber)41 b(-)48 b(1])f(==)g(1\);)1135 2580 y(numberdone[randomnumber)42 b(-)47 b(1])g(=)h(1;)1135 2693 y(if)f(\(debug\(2\)\))e({)j(fprintf\(DEBUGPLACE,)42 b("Random)k(check)g(number)h(\045i)g(at)g([\045i,\045i]\\n",)1517 2806 y(randomnumber,)d(row,col\);)h(})1040 2919 y(})i(while)g(\()g (insert\(row,)e(col,)h(randomnumber\))e(==)k(1\);)897 3032 y(})897 3145 y(else)897 3258 y({)1087 3371 y(_sudoku[row][col])43 b(=)48 b(0;)897 3484 y(})706 3597 y(})515 3709 y(})515 3822 y(return\(0\);)324 3935 y(})324 4161 y(void)e(Sudoku::reset\(\)) 324 4274 y({)515 4387 y(//temp)g(counters)515 4500 y(int)h(row;)515 4613 y(int)g(col;)515 4726 y(int)g(z;)515 4951 y(_numbersFilled)d(=)j (0;)1894 5251 y Fc(14)p eop end %%Page: 15 15 TeXDict begin 15 14 bop 515 548 a Fa(for)47 b(\(row)f(=)i(0;)f(row)g(<) g(MAX_XYZ;)f(row++\))515 661 y({)706 774 y(for)h(\(col)f(=)i(0;)f(col)g (<)g(MAX_XYZ;)f(col++\))706 887 y({)897 1000 y(_sudoku[row][col])d(=)k (0;)897 1112 y(for)f(\(z)i(=)f(0;)g(z)h(<)f(MAX_XYZ;)f(z++\))897 1225 y({)1087 1338 y(_possible[row][col][z])c(=)48 b(true;)897 1451 y(})706 1564 y(})515 1677 y(})324 1790 y(})324 2016 y(int)f(Sudoku::fromFile\(FILE)42 b(*handle\))324 2129 y({)706 2242 y(int)47 b(row;)706 2355 y(int)g(col;)706 2467 y(int)g(tmpInt;)706 2580 y(for)g(\(row)f(=)i(0;)f(row)g(<)g (MAX_XYZ;)f(row++\))706 2693 y({)897 2806 y(for)g(\(col)h(=)h(0;)f(col) g(<)g(MAX_XYZ;)f(col++\))897 2919 y({)1087 3032 y(fscanf\(handle,)e ("\0451i",)i(&tmpInt\);)1087 3145 y(if)i(\(tmpInt)d(!=)j(0\))1087 3258 y({)1278 3371 y(insert\(row,)d(col,)i(tmpInt\);)1087 3484 y(})897 3597 y(})706 3709 y(})706 3822 y(fclose\(handle\);)706 3935 y(return\(0\);)324 4048 y(})324 4274 y(/*)g(Use)g(Basic)f (technique)g(of)h(finding)e(places)i(with)f(just)h(one)g(number)f(left) g(to)i(place)e(*/)324 4387 y(bool)g(Sudoku::_solution1\(int)c(&row,)k (int)h(&col,)g(int)g(&number\))324 4500 y({)515 4613 y(#define)f(NOTHING_FOUND)e(0)515 4726 y(#define)i(ONE_FOUND)f(1)515 4839 y(#define)h(MORE_THEN_ONE_FOUND)c(2)515 4951 y(int)47 b(tmpRow;)1894 5251 y Fc(15)p eop end %%Page: 16 16 TeXDict begin 16 15 bop 515 548 a Fa(int)47 b(tmpCol;)515 661 y(int)g(tmpPossible;)515 774 y(int)g(tmpNumber;)515 887 y(int)g(searchState;)515 1112 y(for)g(\(tmpRow)e(=)j(0;)f(tmpRow)f (<)i(MAX_XYZ;)d(tmpRow++\))515 1225 y({)706 1338 y(for)i(\(tmpCol)e(=)j (0;)f(tmpCol)f(<)h(MAX_XYZ;)f(tmpCol++\))706 1451 y({)897 1564 y(if)h(\(_sudoku[tmpRow][tmpCol)o(])42 b(==)47 b(0\))897 1677 y({)1087 1790 y(tmpNumber)f(=)h(0;)1087 1903 y(searchState)e(=)j (NOTHING_FOUND;)1087 2016 y(for)f(\(tmpPossible)e(=)i(0;)g(tmpPossible) e(<)j(MAX_XYZ;)d(tmpPossible++\))1087 2129 y({)1278 2242 y(if)j(\(_possible[tmpRow][tmp)o(Col])o([tmp)o(Pos)o(sibl)o(e])42 b(==)47 b(true)f(&&)1469 2355 y(searchState)f(==)i(ONE_FOUND\))1278 2467 y({)1469 2580 y(searchState)e(=)i(MORE_THEN_ONE_FOUND;)1469 2693 y(break;)1278 2806 y(})1278 2919 y(else)g(if)g (\(_possible[tmpRow][tmpCol)o(][t)o(mpPo)o(ssib)o(le])41 b(==)47 b(true)g(&&)1708 3032 y(searchState)e(==)i(NOTHING_FOUND\))1278 3145 y({)1469 3258 y(tmpNumber)e(=)j(tmpPossible)d(+)i(1;)1469 3371 y(searchState)e(=)i(ONE_FOUND;)1278 3484 y(})1087 3597 y(})1087 3709 y(if)h(\(searchState)c(==)j(ONE_FOUND\))1087 3822 y({)1278 3935 y(row)g(=)h(tmpRow;)1278 4048 y(col)f(=)h(tmpCol;) 1278 4161 y(number)e(=)i(tmpNumber;)1278 4274 y(return\(true\);)1087 4387 y(})897 4500 y(})706 4613 y(})515 4726 y(})515 4951 y(return\(false\);)1894 5251 y Fc(16)p eop end %%Page: 17 17 TeXDict begin 17 16 bop 324 548 a Fa(})324 774 y(/*)47 b(Check)f(if)i(number)e(can)h(onlcol)f(be)h(placed)f(somewhere,)f(if)i (not)g(able)g(to)g(place)f(anywhere)g(else)g(*/)324 887 y(/*)h(FIXME:)f(Should)g(be)h(more)g(modular,)e(to)j(reduce)e(line)g (length)g(and)h(readabilitcol)e(*/)324 1000 y(/*)i(FIXME:)f(find)h (nice)f(solution)g(for)h(goto's)f(*/)324 1112 y(bool)g (Sudoku::_solution2\(int)c(&row,)k(int)h(&col,)g(int)g(&number\))324 1225 y({)515 1338 y(int)g(tmpRow;)515 1451 y(int)g(tmpCol;)515 1564 y(int)g(tmpPossible;)515 1677 y(int)g(tmpNumber;)515 1903 y(int)g(blockRow;)515 2016 y(int)g(blockTmpRow;)515 2129 y(int)g(blockCol;)515 2242 y(int)g(blockTmpCol;)515 2355 y(bool)f(result;)515 2580 y(for)h(\(tmpRow)e(=)j(0;)f(tmpRow)f(<)i (MAX_XYZ;)d(tmpRow++\))515 2693 y({)706 2806 y(for)i(\(tmpCol)e(=)j(0;) f(tmpCol)f(<)h(MAX_XYZ;)f(tmpCol++\))706 2919 y({)897 3032 y(if)h(\(_sudoku[tmpRow][tmpCol)o(])42 b(==)47 b(0\))897 3145 y({)1087 3258 y(for)g(\(tmpPossible)e(=)i(0;)g(tmpPossible)e(<)j (MAX_XYZ;)d(tmpPossible++\))1087 3371 y({)1278 3484 y(if)j (\(_possible[tmpRow][tmp)o(Col])o([tmp)o(Pos)o(sibl)o(e])42 b(==)47 b(true\))1278 3597 y({)1422 3709 y(if)g(\(debug\(3\)\))1422 3822 y({)1612 3935 y(fprintf\(DEBUGPLACE,)1994 4048 y("DEBUG)f(SOL)h (2:)g(Checking)f([\045i,\045i],)f(number:)h(\045i...\\n",)1994 4161 y(tmpRow,tmpCol,\(tmpPossibl)o(e)c(+1\)\);)1422 4274 y(})1469 4387 y(/*)47 b(checkRow)f(*/)1469 4500 y(result)g(=)i(true;)1469 4613 y(for)f(\(tmpNumber)e(=)j(0;)f (tmpNumber)e(<)i(MAX_XYZ;)f(tmpNumber++\))1469 4726 y({)1660 4839 y(if)h(\(_possible[tmpNumber][tmp)o(Col])o([tmp)o(Pos)o(sibl)o(e]) 42 b(==)47 b(true)f(&&)1851 4951 y(tmpRow)g(!=)h(tmpNumber\))1894 5251 y Fc(17)p eop end %%Page: 18 18 TeXDict begin 18 17 bop 1660 548 a Fa({)1851 661 y(if)47 b(\(debug\(3\)\))1851 774 y({)2042 887 y(fprintf\(DEBUGPLACE,)2424 1000 y("DEBUG)f(SOL)h(2:)g(..failed)e(at)j(Rowcheck)d(bcol)i ([\045i,\045i]\\n",)2424 1112 y(tmpNumber,tmpCol\);)1851 1225 y(})1851 1338 y(result)f(=)i(false;)1851 1451 y(break;)1660 1564 y(})1469 1677 y(})1469 1790 y(if)f(\(result)f(==)h(true\))1469 1903 y({)1660 2016 y(if)g(\(debug\(3\)\))e({)j (fprintf\(DEBUGPLACE,"DEB)o(UG)42 b(SOL)47 b(2:)g(..succesfull)d(at)j (Rowcheck\\n"\);)e(})1660 2129 y(goto)i(solutionFound;)1469 2242 y(})1469 2467 y(/*)g(checkCol)f(*/)1469 2580 y(result)g(=)i(true;) 1469 2693 y(for)f(\(tmpNumber)e(=)j(0;)f(tmpNumber)e(<)i(MAX_XYZ;)f (tmpNumber++\))1469 2806 y({)1660 2919 y(if)h (\(_possible[tmpRow][tmpNum)o(ber])o([tmp)o(Pos)o(sibl)o(e])42 b(==)47 b(true)f(&&)1851 3032 y(tmpCol)g(!=)h(tmpNumber\))1660 3145 y({)1851 3258 y(if)g(\(debug\(3\)\))1851 3371 y({)2042 3484 y(fprintf\()2424 3597 y(DEBUGPLACE,)2424 3709 y("DEBUG)f(SOL)h(2:) g(..failed)e(at)j(Cowcheck)d(bcol)i([\045i,\045i]\\n",)2424 3822 y(tmpRow,tmpNumber\);)1851 3935 y(})1851 4048 y(result)f(=)i (false;)1851 4161 y(break;)1660 4274 y(})1469 4387 y(})1469 4500 y(if)f(\(result)f(==)h(true\))1469 4613 y({)1660 4726 y(if)g(\(debug\(3\)\))e({)j(fprintf\(DEBUGPLACE,"DEB)o(UG)42 b(SOL)47 b(2:)g(..succesfull)d(at)j(Cowcheck\\n"\);)e(})1660 4839 y(goto)i(solutionFound;)1469 4951 y(})1894 5251 y Fc(18)p eop end %%Page: 19 19 TeXDict begin 19 18 bop 1469 661 a Fa(/*)47 b(checkBlock)e(*/)1469 774 y(result)h(=)i(true;)1469 887 y(blockTmpRow)d(=)i(tmpRow)f(-)i (\(tmpRow)e(\045)h(\(MAX_XYZ)f(/)h(3\)\);)1469 1000 y(blockTmpCol)e(=)i (tmpCol)f(-)i(\(tmpCol)e(\045)h(\(MAX_XYZ)f(/)h(3\)\);)1469 1112 y(for)g(\(blockRow)e(=)j(blockTmpRow;)c(blockRow)i(<)h (\(blockTmpRow)e(+)i(3\);)g(blockRow++\))1469 1225 y({)1660 1338 y(for)g(\(blockCol)e(=)j(blockTmpCol;)c(blockCol)i(<)h (\(blockTmpCol)e(+)i(3\);)g(blockCol++\))1660 1451 y({)1803 1564 y(if)g(\(debug\(4\)\))1803 1677 y({)1994 1790 y (fprintf\(DEBUGPLACE,"DEBUG)41 b(SOL)47 b(2:)g(..checking)e ([\045i,\045i]\\n",blockRow,block)o(Col\))o(;)1803 1903 y(})1803 2016 y(if\(_possible[blockRow][bl)o(ockC)o(ol][)o(tmp)o(Poss)o (ible)o(])d(==)47 b(true)g(&&)1946 2129 y(\(not)g(\(tmpRow)f(==)h (blockRow)f(&&)h(tmpCol)f(==)h(blockCol\)\))e(\))1803 2242 y({)2042 2355 y(if)i(\(debug\(4\)\))e({)j (fprintf\(DEBUGPLACE,"DEB)o(UG)41 b(SOL)47 b(2:)h(...will)d(cause)i (failure\\n"\);)d(})2042 2467 y(result)i(=)h(false;)2042 2580 y(goto)g(blockCheckFailed;)1803 2693 y(})1803 2806 y(else)1803 2919 y({)1851 3032 y(if)g(\(debug\(4\)\))e({)j (fprintf\(DEBUGPLACE,"DEB)o(UG)42 b(SOL)k(2:)i(...will)d(be)j(no)f (harm\\n"\);)e(})1803 3145 y(})1660 3258 y(})1469 3371 y(})324 3484 y(blockCheckFailed:)1469 3597 y(if)i(\(result)f(==)h (true\))1469 3709 y({)1660 3822 y(if)g(\(debug\(3\)\))e({)j (fprintf\(DEBUGPLACE,"DEB)o(UG)42 b(SOL)47 b(2:)g(..succesfull)d(at)j (Blockcheck\\n"\);)d(})1660 3935 y(goto)j(solutionFound;)1469 4048 y(})1278 4161 y(})1087 4274 y(})897 4387 y(})706 4500 y(})515 4613 y(})515 4839 y(return\(false\);)1894 5251 y Fc(19)p eop end %%Page: 20 20 TeXDict begin 20 19 bop 324 548 a Fa(solutionFound:)515 661 y(row)47 b(=)g(tmpRow;)515 774 y(col)g(=)g(tmpCol;)515 887 y(number)f(=)h(tmpPossible)e(+)i(1;)515 1000 y(return\(true\);)324 1112 y(})324 1338 y(/*)g(available)e(striper,)h(row)h(based)f(*/)324 1451 y(/*)h(FIXME:)f(Should)g(be)h(more)g(modular,)e(to)j(reduce)e (line)g(length)g(and)h(readabilitcol)e(*/)324 1564 y(bool)h (Sudoku::_solution3a\(int)c(&row,)k(int)h(&col,)f(int)h(&number\))324 1677 y({)515 1790 y(int)g(tmpRow;)515 1903 y(int)g(tmpCol;)515 2016 y(int)g(tmpPossible;)515 2129 y(int)g(tmpPossible2;)515 2242 y(int)g(tmpColNumber;)515 2355 y(int)g(tmpNumber[MAX_XYZ];)515 2467 y(int)g(tmpAllNumbers;)515 2580 y(int)g(tmpAllNumbersFound;)515 2806 y(bool)f(result;)515 3032 y(for)h(\(tmpRow)e(=)j(0;)f(tmpRow)f(<)i (MAX_XYZ;)d(tmpRow++\))515 3145 y({)706 3258 y(for)i(\(tmpCol)e(=)j(0;) f(tmpCol)f(<)h(MAX_XYZ;)f(tmpCol++\))706 3371 y({)897 3484 y(if)h(\(_sudoku[tmpRow][tmpCol)o(])42 b(==)47 b(0\))897 3597 y({)897 3709 y(if)g(\(debug\(3\)\))e({)i(fprintf\(DEBUGPLACE,"SOL) 42 b(3a)47 b(DEBUG)f(Checking)g([\045i,\045i]...\\n",tmpRow,tm)o(pCol)o (\);)41 b(})1087 3822 y(/*)48 b(Set)f(all)f(numbers)g(*/)1087 3935 y(tmpAllNumbers)f(=)i(0;)1087 4048 y(for)g(\(tmpPossible)e(=)i(0;) g(tmpPossible)e(<)j(MAX_XYZ;)d(tmpPossible++\))1087 4161 y({)1278 4274 y(if)j(\(_possible[tmpRow][tmp)o(Col])o([tmp)o(Pos)o (sibl)o(e])42 b(==)47 b(true\))1278 4387 y({)1469 4500 y(tmpNumber[tmpPossible])42 b(=)47 b(1;)1469 4613 y(tmpAllNumbers++;) 1278 4726 y(})1278 4839 y(else)1278 4951 y({)1894 5251 y Fc(20)p eop end %%Page: 21 21 TeXDict begin 21 20 bop 1469 548 a Fa(tmpNumber[tmpPossible])42 b(=)47 b(0;)1278 661 y(})1087 774 y(})1087 887 y(if)h(\(debug\(3\)\))d ({)i(fprintf\(DEBUGPLACE,"SOL)41 b(3a)48 b(DEBUG)e(\045i\\n",)g (tmpAllNumbers\);)e(})1087 1000 y(if)k(\(tmpAllNumbers)43 b(!=)48 b(0\))1087 1112 y({)1278 1225 y(for)f(\(tmpColNumber)d(=)k(0;)f (tmpColNumber)d(<)k(MAX_XYZ;)d(tmpColNumber++\))1278 1338 y({)1469 1451 y(if)i(\(_sudoku[tmpRow][tmpColNum)o(ber)o(])42 b(==)47 b(0)h(&&)f(tmpColNumber)d(!=)j(tmpCol\))1469 1564 y({)1660 1677 y(result)f(=)i(true;)1660 1790 y(for)f (\(tmpPossible2)d(=)k(0;)f(tmpPossible2)d(<)k(MAX_XYZ;)d (tmpPossible2++\))1660 1903 y({)1851 2016 y(if)i(\()h (_possible[tmpRow][tmpCo)o(lNum)o(ber)o(][tm)o(pPos)o(sib)o(le2])41 b(==)47 b(true)g(&&)2137 2129 y(_possible[tmpRow][tmpCol][)o(tmp)o (Poss)o(ible)o(2])41 b(==)48 b(false\))1851 2242 y({)2042 2355 y(if)f(\(debug\(3\)\))2042 2467 y({)2233 2580 y (fprintf\(DEBUGPLACE,"SOL)41 b(3a)47 b(DEBUG)g([\045i,\045i])f(failed)g (at)h(\045i\\n",)2615 2693 y(tmpRow,)e(tmpColNumber,tmpPossible2+)o (1\);)2042 2806 y(})2042 2919 y(result)h(=)h(false;)2042 3032 y(break;)1851 3145 y(})1660 3258 y(})1660 3371 y(if)g(\(result)f (==)h(true\))1660 3484 y({)1851 3597 y(if)g(\(debug\(3\)\))1851 3709 y({)2042 3822 y(fprintf\(DEBUGPLACE,"SOL)41 b(3a)48 b(DEBUG)e([\045i,\045i])g(will)g(increase\\n",)2424 3935 y(tmpRow,)g(tmpColNumber\);)1851 4048 y(})1851 4161 y(for)h (\(tmpPossible2)d(=)k(0;)f(tmpPossible2)d(<)k(MAX_XYZ;)d (tmpPossible2++\))1851 4274 y({)2042 4387 y(if)i (\(_possible[tmpRow][tmpCol)o(Num)o(ber])o([tmp)o(Pos)o(sibl)o(e2])41 b(==)47 b(true\))2042 4500 y({)2233 4613 y(if)g(\(debug\(3\)\))e({)i (fprintf\(DEBUGPLACE,)2615 4726 y("SOL)f(3a)h(DEBUG)g([\045i,\045i])f (will)g(increase)g(possible)f(\045i)j(to)f(\045i\\n",)2615 4839 y(tmpRow,)e(tmpColNumber,)g(tmpPossible2)f(+)k(1,)f (tmpNumber[tmpPossible2])41 b(+)48 b(1\);)2233 4951 y(})1894 5251 y Fc(21)p eop end %%Page: 22 22 TeXDict begin 22 21 bop 2233 661 a Fa(if)47 b (\(tmpNumber[tmpPossible2])41 b(==)47 b(tmpAllNumbers\))2233 774 y({)2424 887 y(goto)f(colCheckFailed;)2233 1000 y(})2233 1112 y(else)2233 1225 y({)2424 1338 y(tmpNumber[tmpPossible2])o(++;) 2233 1451 y(})2042 1564 y(})1851 1677 y(})1660 1790 y(})1469 1903 y(})1278 2016 y(})1278 2242 y(/*)i(calculate)d(if)i(result)f (found)g(*/)1278 2355 y(tmpAllNumbersFound)d(=)48 b(1;)1278 2467 y(for)f(\(tmpPossible)e(=)i(0;)g(tmpPossible)e(<)i(MAX_XYZ;)f (tmpPossible++\))1278 2580 y({)1469 2693 y(if)h (\(tmpNumber[tmpPossible])42 b(==)47 b(tmpAllNumbers\))1469 2806 y({)1660 2919 y(tmpAllNumbersFound++;)1660 3032 y(if)g(\(debug\(3\)\))1660 3145 y({)1851 3258 y(fprintf\(DEBUGPLACE,) 2233 3371 y("SOL)f(3b)i(DEBUG)e(\045i)h(reduced)f(tmpAllNumbers)e(to)j (\045i\\n",)2233 3484 y(tmpPossible)e(+)i(1,)g(tmpAllNumbers\);)1660 3597 y(})1469 3709 y(})1278 3822 y(})1278 4048 y(if)h (\(tmpAllNumbersFound)42 b(==)47 b(tmpAllNumbers\))1278 4161 y({)1469 4274 y(for)g(\(tmpPossible)e(=)i(0;)g(tmpPossible)e(<)i (MAX_XYZ;)f(tmpPossible++\))1469 4387 y({)1660 4500 y(if)h (\(tmpNumber[tmpPossible])42 b(==)47 b(1\))1660 4613 y({)1851 4726 y(row)g(=)g(tmpRow;)1851 4839 y(col)g(=)g(tmpCol;)1851 4951 y(number)f(=)i(tmpPossible)c(+)k(1;)1894 5251 y Fc(22)p eop end %%Page: 23 23 TeXDict begin 23 22 bop 1851 548 a Fa(return\(true\);)1660 661 y(})1469 774 y(})1278 887 y(})1087 1000 y(})897 1112 y(})47 b(//end)f(if)324 1225 y(colCheckFailed:)706 1338 y(if)h(\(debug\(3\)\))e({)i(fprintf\(DEBUGPLACE,"SOL)42 b(3c)47 b(DEBUG)f(no)h(failed)f(solution)g(found\\n"\);)f(})706 1451 y(})515 1564 y(})515 1677 y(return\(false\);)324 1790 y(})324 2016 y(/*)i(available)e(striper,)h(col)h(based,)f(note)g (row)h(number)f(will)h(change)f(;-\))h(*/)324 2129 y(/*)g(FIXME:)f (Should)g(be)h(more)g(modular,)e(to)j(reduce)e(line)g(length)g(and)h (readabilitcol)e(*/)324 2242 y(bool)h(Sudoku::_solution3b\(int)c(&row,) k(int)h(&col,)f(int)h(&number\))324 2355 y({)515 2467 y(int)g(tmpRow;)515 2580 y(int)g(tmpCol;)515 2693 y(int)g(tmpPossible;) 515 2806 y(int)g(tmpPossible2;)515 2919 y(int)g(tmpRowNumber;)515 3032 y(int)g(tmpNumber[MAX_XYZ];)515 3145 y(int)g(tmpAllNumbers;)515 3258 y(int)g(tmpAllNumbersFound;)515 3484 y(bool)f(result;)515 3709 y(for)h(\(tmpRow)e(=)j(0;)f(tmpRow)f(<)i(MAX_XYZ;)d(tmpRow++\))515 3822 y({)706 3935 y(for)i(\(tmpCol)e(=)j(0;)f(tmpCol)f(<)h(MAX_XYZ;)f (tmpCol++\))706 4048 y({)897 4161 y(if)h(\(_sudoku[tmpRow][tmpCol)o(]) 42 b(==)47 b(0\))897 4274 y({)897 4387 y(if)g(\(debug\(3\)\))e({)i (fprintf\(DEBUGPLACE,"SOL)42 b(3b)47 b(DEBUG)f(Checking)g ([\045i,\045i]...\\n",tmpRow,tm)o(pCol)o(\);)41 b(})1087 4500 y(/*)48 b(Set)f(all)f(numbers)g(*/)1087 4613 y(tmpAllNumbers)f(=)i (0;)1087 4726 y(for)g(\(tmpPossible)e(=)i(0;)g(tmpPossible)e(<)j (MAX_XYZ;)d(tmpPossible++\))1087 4839 y({)1278 4951 y(if)j (\(_possible[tmpRow][tmp)o(Col])o([tmp)o(Pos)o(sibl)o(e])42 b(==)47 b(true\))1894 5251 y Fc(23)p eop end %%Page: 24 24 TeXDict begin 24 23 bop 1278 548 a Fa({)1469 661 y (tmpNumber[tmpPossible])42 b(=)47 b(1;)1469 774 y(tmpAllNumbers++;)1278 887 y(})1278 1000 y(else)1278 1112 y({)1469 1225 y (tmpNumber[tmpPossible])42 b(=)47 b(0;)1278 1338 y(})1087 1451 y(})1087 1564 y(if)h(\(debug\(3\)\))d({)i (fprintf\(DEBUGPLACE,"SOL)41 b(3b)48 b(DEBUG)e(\045i\\n",)g (tmpAllNumbers\);)e(})1087 1677 y(if)k(\(tmpAllNumbers)43 b(!=)48 b(0\))1087 1790 y({)1278 1903 y(for)f(\(tmpRowNumber)d(=)k(0;)f (tmpRowNumber)d(<)k(MAX_XYZ;)d(tmpRowNumber++\))1278 2016 y({)1469 2129 y(if)i(\(_sudoku[tmpRowNumber][tmp)o(Col)o(])42 b(==)47 b(0)h(&&)f(tmpRowNumber)d(!=)j(tmpRow\))1469 2242 y({)1660 2355 y(result)f(=)i(true;)1660 2467 y(for)f (\(tmpPossible2)d(=)k(0;)f(tmpPossible2)d(<)k(MAX_XYZ;)d (tmpPossible2++\))1660 2580 y({)1851 2693 y(if)i(\()h (_possible[tmpRowNumber])o([tmp)o(Col)o(][tm)o(pPos)o(sib)o(le2])41 b(==)47 b(true)g(&&)2137 2806 y(_possible[tmpRow][tmpCol][)o(tmp)o (Poss)o(ible)o(2])41 b(==)48 b(false\))1851 2919 y({)2042 3032 y(if)f(\(debug\(3\)\))2042 3145 y({)2233 3258 y (fprintf\(DEBUGPLACE,)2615 3371 y("SOL)f(3b)h(DEBUG)g([\045i,\045i])f (failed)g(at)h(\045i\\n",)2615 3484 y(tmpRowNumber,)d (tmpCol,tmpPossible2+1\);)2042 3597 y(})2042 3709 y(result)i(=)h (false;)2042 3822 y(break;)1851 3935 y(})1660 4048 y(})1660 4161 y(if)g(\(result)f(==)h(true\))1660 4274 y({)1851 4387 y(if)g(\(debug\(3\)\))e({)j(fprintf\(DEBUGPLACE,)2233 4500 y("SOL)e(3b)i(DEBUG)e([\045i,\045i])g(will)g(increase\\n",)2233 4613 y(tmpRowNumber,)e(tmpCol\);)1851 4726 y(})1851 4839 y(for)j(\(tmpPossible2)d(=)k(0;)f(tmpPossible2)d(<)k(MAX_XYZ;)d (tmpPossible2++\))1851 4951 y({)1894 5251 y Fc(24)p eop end %%Page: 25 25 TeXDict begin 25 24 bop 2042 548 a Fa(if)47 b (\(_possible[tmpRowNumber][)o(tmp)o(Col])o([tmp)o(Pos)o(sibl)o(e2])41 b(==)47 b(true\))2042 661 y({)2233 774 y(if)g(\(debug\(3\)\))2233 887 y({)2424 1000 y(fprintf\(DEBUGPLACE,)2806 1112 y("SOL)f(3b)h(DEBUG) g([\045i,\045i])f(will)g(increase)g(possible)f(\045i)i(to)h(\045i\\n",) 2806 1225 y(tmpRowNumber,)c(tmpCol,)i(tmpPossible2)e(+)j(1,)2806 1338 y(tmpNumber[tmpPossible2])41 b(+)47 b(1\);)2233 1451 y(})2233 1677 y(if)g(\(tmpNumber[tmpPossible2])41 b(==)47 b(tmpAllNumbers\))2233 1790 y({)2424 1903 y(goto)f (rowCheckFailed;)2233 2016 y(})2233 2129 y(else)2233 2242 y({)2424 2355 y(tmpNumber[tmpPossible2])o(++;)2233 2467 y(})2042 2580 y(})1851 2693 y(})1660 2806 y(})1469 2919 y(})1278 3032 y(})1278 3258 y(/*)i(calculate)d(if)i(result)f (found)g(*/)1278 3371 y(tmpAllNumbersFound)d(=)48 b(1;)1278 3484 y(for)f(\(tmpPossible)e(=)i(0;)g(tmpPossible)e(<)i(MAX_XYZ;)f (tmpPossible++\))1278 3597 y({)1469 3709 y(if)h (\(tmpNumber[tmpPossible])42 b(==)47 b(tmpAllNumbers\))1469 3822 y({)1660 3935 y(tmpAllNumbersFound++;)1660 4048 y(if)g(\(debug\(3\)\))1660 4161 y({)1851 4274 y(fprintf\(DEBUGPLACE,) 2042 4387 y("SOL)g(3b)g(DEBUG)f(\045i)h(reduced)f(tmpAllNumbers)e(to)j (\045i\\n",)2042 4500 y(tmpPossible)e(+)i(1,)g(tmpAllNumbers\);)1660 4613 y(})1469 4726 y(})1278 4839 y(})1894 5251 y Fc(25)p eop end %%Page: 26 26 TeXDict begin 26 25 bop 1278 548 a Fa(if)48 b(\(tmpAllNumbersFound)42 b(==)47 b(tmpAllNumbers\))1278 661 y({)1469 774 y(for)g(\(tmpPossible)e (=)i(0;)g(tmpPossible)e(<)i(MAX_XYZ;)f(tmpPossible++\))1469 887 y({)1660 1000 y(if)h(\(tmpNumber[tmpPossible])42 b(==)47 b(1\))1660 1112 y({)1851 1225 y(row)g(=)g(tmpRow;)1851 1338 y(col)g(=)g(tmpCol;)1851 1451 y(number)f(=)i(tmpPossible)c(+)k(1;) 1851 1564 y(return\(true\);)1660 1677 y(})1469 1790 y(})1278 1903 y(})1087 2016 y(})897 2129 y(})f(//end)f(if)324 2242 y(rowCheckFailed:)897 2355 y(if)h(\(debug\(3\)\))e({)i (fprintf\(DEBUGPLACE,"SOL)42 b(3b)47 b(DEBUG)f(no)h(failed)f(solution)g (found\\n"\);)f(})706 2467 y(})515 2580 y(})515 2693 y(return\(false\);)324 2806 y(})324 2919 y(int)i (Sudoku::solutionFinder\()o(\))324 3032 y({)515 3145 y(#define)f(NO_SOLUTION)e(0)515 3258 y(#define)i(SOLUTION_1)f(1)515 3371 y(#define)h(SOLUTION_2)f(2)515 3484 y(#define)h(SOLUTION_3a)e(3) 515 3597 y(#define)i(SOLUTION_3b)e(4)515 3709 y(#define)i(SOLUTION_3c)e (5)515 3822 y(int)j(row;)515 3935 y(int)g(col;)515 4048 y(int)g(number;)515 4274 y(bool)f(gameAnalcolzed;)515 4387 y(int)h(returnCode;)515 4500 y(int)g(solutionNumber;)515 4726 y(gameAnalcolzed)d(=)j(false;)515 4951 y(while\()f(gameAnalcolzed) e(==)j(false)f(\))1894 5251 y Fc(26)p eop end %%Page: 27 27 TeXDict begin 27 26 bop 515 548 a Fa({)706 661 y(solutionNumber)44 b(=)j(NO_SOLUTION;)706 774 y(if)g(\(_numbersFilled)c(==)48 b(MAX_XYZ)d(*)j(MAX_XYZ\))706 887 y({)897 1000 y(gameAnalcolzed)43 b(=)48 b(true;)897 1112 y(returnCode)d(=)i(0;)706 1225 y(})706 1338 y(else)706 1451 y({)897 1564 y(if)g(\(_solution1\(row,)c (col,)k(number\))e(==)j(true\))897 1677 y({)1087 1790 y(solutionNumber)c(=)k(SOLUTION_1;)897 1903 y(})897 2016 y(else)e(if\(_solution2\(row,)d(col,)k(number\))e(==)j(true\))897 2129 y({)1087 2242 y(solutionNumber)c(=)k(SOLUTION_2;)897 2355 y(})897 2467 y(else)e(if\(_solution3a\(row,)d(col,)j(number\))g (==)h(true\))897 2580 y({)1087 2693 y(solutionNumber)d(=)k (SOLUTION_3a;)897 2806 y(})897 2919 y(else)e(if\(_solution3b\(row,)d (col,)j(number\))g(==)h(true\))897 3032 y({)1087 3145 y(solutionNumber)d(=)k(SOLUTION_3b;)897 3258 y(})897 3371 y(else)897 3484 y({)1087 3597 y(gameAnalcolzed)c(=)k(true;)1087 3709 y(returnCode)d(=)j(1;)897 3822 y(})706 3935 y(})706 4161 y(if)f(\(solutionNumber)c(!=)48 b(NO_SOLUTION\))706 4274 y({)897 4387 y(insert\(row,)c(col,)j(number\);)897 4500 y(printf\("Filled)c(in)48 b(\045i)f(at)g([\045i,\045i])f(found)g (with)h(finder)f(\045i\\n",)g(number,)g(row,)g(col,)h (solutionNumber\);)897 4613 y(printf\("Total)d(Numbers)h(filled)i (\045i\\n",)f(_numbersFilled\);)897 4726 y(printNice\(row,)d(col\);)897 4839 y(getchar\(\);)706 4951 y(})1894 5251 y Fc(27)p eop end %%Page: 28 28 TeXDict begin 28 27 bop 515 661 a Fa(})515 774 y(return\(returnCode\);) 324 887 y(})324 1112 y(int)47 b(main\(int)e(argc,)i(char)f(*argv[]\)) 324 1225 y({)515 1338 y(Sudoku)g(puzzel;)515 1451 y(int)h(timesFailed;) 515 1564 y(int)g(returnCode;)515 1790 y(returnCode)e(=)i(0;)515 2016 y(if)g(\(argc)f(==)h(3)h(&&)f(strcmp\(argv[1],)d("-f"\))i(==)h (0\))515 2129 y({)706 2242 y(if)g(\(strcmp\(argv[2],)c("-"\))k(==)g (0\))706 2355 y({)897 2467 y(if)g(\(debug\(1\)\))e({)i (fprintf\(DEBUGPLACE,)c("Reading)i(from)i('stdin'\\n"\);)d(})897 2580 y(puzzel.fromFile\(stdin\))o(;)706 2693 y(})706 2806 y(else)706 2919 y({)897 3032 y(if)j(\(debug\(1\)\))e({)i (fprintf\(DEBUGPLACE,)c("Reading)i(from)i(\045s\\n",argv[2]\);)c(})897 3145 y(puzzel.fromFile\(fopen\()o(argv)o([2],)e("r"\)\);)706 3258 y(})706 3371 y(printf\("I)k(have)i(read)f(this)h(puzzle\\n"\);)706 3484 y(puzzel.printNice\(\);)706 3597 y(returnCode)e(=)i (puzzel.solutionFinder\(\);)706 3709 y(if)g(\(returnCode)e(==)i(0\))706 3822 y({)897 3935 y(printf\("I)e(Guess)h(this)h(will)f(be)i(the)e (final)h(solution\\n"\);)897 4048 y(puzzel.printNice\(\);)706 4161 y(})706 4274 y(else)706 4387 y({)897 4500 y(printf\("Finding)c (Solution)j(failed,)f(error)i(code:)f(\045i\\n",)g(returnCode\);)897 4613 y(printf\("Failed)d(at)48 b(puzzle\\n"\);)897 4726 y(puzzel.printNice\(\);)897 4839 y(puzzel.printPossible\(\))o(;)706 4951 y(})1894 5251 y Fc(28)p eop end %%Page: 29 29 TeXDict begin 29 28 bop 515 548 a Fa(})515 661 y(else)46 b(if)i(\(argc)e(==)h(3)h(&&)f(strcmp\(argv[1],)c("-c"\))k(==)g(0\))515 774 y({)706 887 y(fprintf\(DEBUGPLACE,"Ple)o(ase)41 b(wait)47 b(will)f(generating)f(puzzle"\);)706 1000 y(timesFailed)f(=)k(0;)706 1112 y(while)e(\(puzzel.randomNumbers\(st)o(rtod)o(\(ar)o(gv[2)o(],)c (NULL\)\))k(==)h(1)g(\))706 1225 y({)897 1338 y(timesFailed++;)897 1451 y(if)g(\(debug\(1\)\))897 1564 y({)1087 1677 y (fprintf\(DEBUGPLACE,)c("Failed)j(to)h(created)f(the)h(puzzel)f(at)h (the)g(\045i)g(round\\n",)e(timesFailed\);)897 1790 y(})897 1903 y(else)897 2016 y({)1087 2129 y(fprintf\(DEBUGPLACE,"."\);)897 2242 y(})897 2355 y(puzzel.reset\(\);)706 2467 y(})706 2580 y(fprintf\(DEBUGPLACE,)d("\\nResult,)j(\(NOTE\(!\):)g(puzzle)h (might)h(not)g(be)g(solveble\)\\n"\);)706 2693 y(puzzel.printRaw\(\);) 515 2806 y(})515 2919 y(else)515 3032 y({)706 3145 y(printf\("Usage)d (\045s)j(-f)g(\\n",argv[0]\);)706 3258 y(printf\("NOTE)d(1:)j (No)g(error)g(checking)e(done,)i(valid)f(input)g(puzzel)g(will)h(be)g ("\);)706 3371 y(printf\("generated)c(the)k(-c)g(flags\\n"\);)706 3484 y(printf\("NOTE)d(2:)j(if)g()e(=)j(-,)f(stdin)f(will)h (be)g(used)g(as)g(input"\);)706 3597 y(printf\("Usage)d(\045s)j(-c)g ()f(To)j(create)e(a)h(new)g(puzzle\\n",argv[0]\);)706 3709 y(printf\("NOTE)d(1:)j(Above)g(60\045\045)f(it)h(will)g(be)g(a)h (bit)f(hard)f(to)h(create)f("\);)706 3822 y(printf\("a)f(puzzle\\n"\);) 706 3935 y(printf\("NOTE)f(2:)j(Puzzle)f(generated)g(will)g(not)h (always)f(be)h(solveble\\n"\);)706 4048 y(returnCode)e(=)i(128;)515 4161 y(})515 4274 y(return\(returnCode\);)324 4387 y(})1894 5251 y Fc(29)p eop end %%Page: 30 30 TeXDict begin 30 29 bop 324 548 a Fe(App)t(endix)52 b(B:)i(sudoku.cpp) 324 767 y Fc(Sample)33 b(of)f(17-clue)h(puzzles)h(found)f(at)f(Minim)m (um)j(Sudoku[2)q(].)d(Input)i(Ro)m(w)e(based.)324 988 y Fa(000000010400000000020000)o(000)o(0000)o(504)o(0700)o(8000)o(300)o (0010)o(9000)o(030)o(0400)o(2000)o(501)o(0000)o(0000)o(806)o(000)324 1101 y(000000010400000000020000)o(000)o(0000)o(506)o(0400)o(8000)o(300) o(0010)o(9000)o(030)o(0400)o(2000)o(501)o(0000)o(0000)o(807)o(000)324 1214 y(000000012000035000000600)o(070)o(7000)o(003)o(0000)o(0400)o(800) o(1000)o(0000)o(000)o(0120)o(0000)o(800)o(0004)o(0050)o(000)o(600)324 1327 y(000000012003600000000007)o(000)o(4100)o(200)o(0000)o(0500)o(300) o(7000)o(0060)o(028)o(0000)o(0400)o(003)o(0050)o(0000)o(000)o(000)324 1439 y(000000012008030000000000)o(040)o(1205)o(000)o(0000)o(0004)o(700) o(0600)o(0000)o(050)o(7000)o(3000)o(006)o(2000)o(0000)o(100)o(000)324 1552 y(000000012040050000000009)o(000)o(0706)o(004)o(0000)o(0100)o(000) o(0000)o(0005)o(000)o(0087)o(5006)o(010)o(0030)o(0200)o(000)o(000)324 1665 y(000000012050400000000000)o(030)o(7006)o(004)o(0000)o(1000)o(000) o(0000)o(8000)o(092)o(0000)o(8000)o(005)o(1070)o(0000)o(003)o(000)324 1778 y(000000012300000060000040)o(000)o(9000)o(005)o(0000)o(0001)o(070) o(0200)o(0000)o(000)o(0350)o(4000)o(014)o(0080)o(0060)o(000)o(000)324 1891 y(000000012400090000000000)o(050)o(0702)o(000)o(0060)o(0000)o(400) o(0001)o(0800)o(001)o(8000)o(0000)o(000)o(3070)o(0502)o(000)o(000)324 2004 y(000000012500008000000700)o(000)o(6001)o(200)o(0070)o(0000)o(450) o(0000)o(3000)o(003)o(0000)o(8000)o(005)o(0070)o(0020)o(000)o(000)324 2117 y(000000012700060000000000)o(050)o(0802)o(000)o(0060)o(0000)o(400) o(0001)o(0900)o(001)o(9000)o(0000)o(000)o(3080)o(0502)o(000)o(000)324 2230 y(000000012800040000000000)o(060)o(0902)o(000)o(0070)o(0000)o(400) o(0005)o(0100)o(001)o(5000)o(0000)o(000)o(3090)o(0602)o(000)o(000)324 2343 y(000000013000500070000802)o(000)o(0004)o(009)o(0010)o(7000)o(000) o(0000)o(0020)o(089)o(0000)o(0500)o(400)o(0060)o(0000)o(010)o(000)324 2456 y(000000013000700060000508)o(000)o(0004)o(008)o(0010)o(6000)o(000) o(0000)o(0020)o(074)o(0000)o(0500)o(200)o(0040)o(0000)o(010)o(000)324 2569 y(000000013000700060000509)o(000)o(0004)o(009)o(0010)o(6000)o(000) o(0000)o(0020)o(074)o(0000)o(0500)o(800)o(0040)o(0000)o(010)o(000)324 2681 y(000000013000800070000502)o(000)o(0004)o(009)o(0010)o(7000)o(000) o(0000)o(0020)o(089)o(0000)o(0500)o(400)o(0060)o(0000)o(010)o(000)324 2794 y(000000013020500000000000)o(000)o(1030)o(000)o(7000)o(0802)o(000) o(0040)o(0000)o(000)o(0340)o(5006)o(700)o(0020)o(0000)o(010)o(000)324 2907 y(000000013040000080200060)o(000)o(6090)o(004)o(0000)o(0800)o(000) o(0003)o(0000)o(003)o(0100)o(5000)o(000)o(4070)o(6000)o(000)o(000)324 3020 y(000000013040000080200060)o(000)o(9060)o(004)o(0000)o(0800)o(000) o(0003)o(0000)o(003)o(0100)o(5000)o(000)o(4070)o(6000)o(000)o(000)324 3133 y(000000013040000090200070)o(000)o(6070)o(004)o(0000)o(0300)o(000) o(0009)o(0000)o(003)o(0100)o(5000)o(000)o(6080)o(7000)o(000)o(000)324 3246 y(...)1894 5251 y Fc(30)p eop end %%Page: 31 31 TeXDict begin 31 30 bop 324 548 a Fe(App)t(endix)52 b(C:)h(sudoku.cpp) 324 767 y Fc(The)33 b(follo)m(wing)g(Shell)h(co)s(de)f(has)g(b)s(een)g (used)h(to)e(generate)h(the)g(test)g(results)324 988 y Fa(#!/bin/sh)324 1101 y(#)47 b(file:)g(testcase.sh)324 1214 y(#)g(author:)f(Rick)h(van)g(der)g(Zwet,)f(0433373)324 1327 y(#)h(University)e(Leiden,)h(LIACS)324 1439 y(timesPlayed=0)324 1552 y(timesWon=0)324 1665 y(timesLost=0)324 1778 y(if)h([)g("x$1")g (==)g("x")g(];)g(then)515 1891 y(totalNumber=100)324 2004 y(else)515 2117 y(totalNumber=$1)324 2230 y(fi)324 2456 y(for)g(puzzle)f(in)h(`cat)g(puzzles17`)324 2569 y(do)515 2681 y(let)g("timesPlayed+=1")515 2794 y(echo)f("${puzzle}")f (|)j(./sudoku)d(-f)i(-)h(>/dev/null)515 2907 y(if)f([)g("x$?")g(==)g ("x0")g(];)g(then)706 3020 y(let)g("timesWon+=1")515 3133 y(else)706 3246 y(let)g("timesLost+=1")515 3359 y(fi)515 3472 y(echo)f("Played:)g(${timesPlayed}")515 3585 y(echo)g("won)142 b(:)48 b(${timesWon}")515 3698 y(echo)e("lost)94 b(:)48 b(${timesLost}")515 3811 y(if)f([)g ("x${timesPlayed}")c(==)48 b("x${totalNumber}")43 b(];)k(then)706 3923 y(break)515 4036 y(fi)324 4149 y(done)1894 5251 y Fc(31)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF