From 96ed9c50a1c205a25d5586248cf2b71711e745b8 Mon Sep 17 00:00:00 2001 From: Brendan Kehoe Date: Sun, 22 Jan 2006 12:00:57 +0000 Subject: * gperf-3.0.2 released. * doc/gperf.{dvi,ps,pdf}: Regenerated by manually invoking tex instead of trying to use texi2dvi, whose run of etex ends up actually always running pdfetex, thus always recreating gperf.pdf. --- ChangeLog | 10 +- doc/gperf.dvi | Bin 104364 -> 95588 bytes doc/gperf.pdf | Bin 226716 -> 202008 bytes doc/gperf.ps | 3683 +++++++++++++++++++++++++-------------------------------- 4 files changed, 1643 insertions(+), 2050 deletions(-) diff --git a/ChangeLog b/ChangeLog index d85c1cc..3c66afe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,12 @@ -2006-01-13 Brendan Kehoe +2006-01-22 Brendan Kehoe + + * gperf-3.0.2 released. - * Created gperf-3.0.2.tar.gz release. + * doc/gperf.{dvi,ps,pdf}: Regenerated by manually invoking tex + instead of trying to use texi2dvi, whose run of etex ends up + actually always running pdfetex, thus always recreating gperf.pdf. + +2006-01-13 Brendan Kehoe * NEWS: Add note about #line directive fix. * doc/gperf.1: Regenerate with Makefile.devel. diff --git a/doc/gperf.dvi b/doc/gperf.dvi index f7a1afa..b725c1b 100644 Binary files a/doc/gperf.dvi and b/doc/gperf.dvi differ diff --git a/doc/gperf.pdf b/doc/gperf.pdf index 24f1327..f39db3c 100644 Binary files a/doc/gperf.pdf and b/doc/gperf.pdf differ diff --git a/doc/gperf.ps b/doc/gperf.ps index 26f83a1..d12c417 100644 --- a/doc/gperf.ps +++ b/doc/gperf.ps @@ -1,17 +1,18 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software -%%Title: ./gperf.dvi +%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software +%%Title: ../../doc/gperf.dvi %%Pages: 32 %%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 +%%BoundingBox: 0 0 595 842 %%DocumentFonts: CMBX12 CMTT12 CMR10 CMSY10 CMSL10 CMTT10 CMTI10 CMBX10 -%%+ CMSS10 CMB10 CMR9 CMTT9 CMTI9 CMBXTI10 +%%+ CMSS10 CMB10 CMR9 CMBXTI10 +%%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D600 -o gperf.ps ./gperf.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2003.06.12:1833 -%%BeginProcSet: texc.pro +%DVIPSCommandLine: dvips -D600 -o ../../doc/gperf.ps ../../doc/gperf.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2006.01.22:1148 +%%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 @@ -30,22 +31,10 @@ df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +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 @@ -69,165 +58,7 @@ 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: f7b6d320.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 -% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 -% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 -% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 -% -/TeXf7b6d320Encoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand -/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen -/period /slash /zero /one /two /three /four /five /six /seven /eight -/nine /colon /semicolon /exclamdown /equal /questiondown /question /at -/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X -/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 09fbbfac.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 -/TeX09fbbfacEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi -/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown -/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla -/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam -/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft -/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one -/two /three /four /five /six /seven /eight /nine /colon /semicolon /less -/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N -/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright -/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l -/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright -/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi -/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown -/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: bbad153f.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 -% -/TeXbbad153fEncoding [ -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /circlemultiply -/circledivide /circledot /circlecopyrt /openbullet /bullet -/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal -/greaterequal /precedesequal /followsequal /similar /approxequal -/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows -/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast -/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup -/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional -/prime /infinity /element /owner /triangle /triangleinv /negationslash -/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur -/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K -/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection -/unionmulti /logicaland /logicalor /turnstileleft /turnstileright -/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright -/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv -/backslash /wreathproduct /radical /coproduct /nabla /integral -/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section -/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/minus /periodcentered /multiply /asteriskmath /divide /diamondmath -/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef -/circlemultiply /circledivide /circledot /circlecopyrt /openbullet -/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset -/lessequal /greaterequal /precedesequal /followsequal /similar -/approxequal /propersubset /propersuperset /lessmuch /greatermuch -/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: 74afc74c.enc -% Thomas Esser, Dec 2002. public domain -% -% Encoding for: -% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 -% -/TeX74afc74cEncoding [ -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega -/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve -/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash -/suppress /exclam /quotedblright /numbersign /sterling /percent -/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma -/hyphen /period /slash /zero /one /two /three /four /five /six /seven -/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question -/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W -/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent -/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u -/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space -/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef -/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute -/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE -/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef -] def - -%%EndProcSet -%%BeginProcSet: texps.pro +%%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 @@ -264,10 +95,9 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 46 /period put readonly def /FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -311,270 +141,6 @@ CFA8717DE230CB6182F2250885B8E90AC42A66484A7B527061B223A6D1CC72D4 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont -%%BeginFont: CMTI9 -%!PS-AdobeFont-1.1: CMTI9 1.0 -%%CreationDate: 1991 Aug 18 21:08:07 -% 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 (CMTI9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /CMTI9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-35 -250 1148 750}readonly def -/UniqueID 5000827 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE -3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B -532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 -B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B -986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE -D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 -9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496 -4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D -DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A -F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458 -8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6 -03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9 -211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3 -E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B -D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1 -6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9 -0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC -1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2 -298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D -C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574 -433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6 -1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6 -1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16 -E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F -9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104 -BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971 -40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988 -49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1 -4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C -4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7 -35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46: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 (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 -016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 -9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F -D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 -469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 -2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E -2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 -650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 -F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A -D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E -F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 -4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A -438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD -BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B -A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 -AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 -D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB -CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A -082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 -9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 -4BA1EBFAFDBEC531EA13DFBD6700E53818CE04D23886B8AE75DCC36BCD3189B1 -0D55FAE27D0D126E82AEF31D7B5DF27E58C30BB0867D6D7AC1DA9EFB8A2DF095 -B5B934A68EE122DA0A83B36C952431586B957990206194E89339048AA6EE4C53 -703763505ED57C494DD907D0EEA04F6B1D4C8F3BA778F4E7AA832AAB4D75F024 -61E91C6D25FD6823CB24FC863AA50B9B6CBA06BE11814BE6DF2ECBC59614A061 -67311E64620BA968BAC5A4AFBB51194E1EC2A8A6460E85C23C146388B0A16BAD -B9405D3A50CBF9F2060A32C8F37340EE51E6E7208F705B41AE2C78707EDC4C1C -AC4BA95875F0634C6D5BE1C5DD4BA35086F660154CB1D3E176518D634B551319 -E8F8C5EE80251323C86C9DAD0FF8F360F4A2930AD3266999811333EA73405FA9 -55B447DC8EB07A0C64CF2404BE8C6C7E6D263E799B1156E68AF1361ECAD79F9A -182A71A49040A9960826E74B88307F4C0061046C0F9DBFD25A642E9FA82A691D -FBF60D03D2BB92FC09D4C814CFC0DAC28690CBEE9D9E73FA943FF9C68285C683 -C4E1AA05DD669D24AA5EABA214FFA994E61669821F0FDE4AA2BBA18FF4A11397 -515996FE402DD98FE032C6171DA1E40D4F870BA08FCB5D093525EB366E825445 -E58CD3E6FB72291DF9288707B8C2D1F96D0895CB316B74585745CD1F636936DE -9572C75BD823D3869E264E452B1F2554C20DA7A0A38F3E80646D1727C836FEF5 -85C22382271615B6F994C34A5DAB5031F1FD58DACE3EEA8DEC66B6E683B68925 -DBB3820FD525D0C07F82528B06E34A5AF65F3BB11DAD02ABB66C8A0670545071 -97EE01859BCB8179731230D9A8BC52A47656A84BBC7D1AC118D497F14937A1E4 -C5A2F171412185D365B7D476C872132CF8E49F87C8EEAE6EA4AA5979EED7831C -061384E91AD71AE04E80917B07F85F12B4B88D46BADDB6D9B56C4BD028FBEF25 -432A07B83E81A23B3025DC6D2AAC38F40F5091CA6275E22388093E9C46B97774 -0B091D60F2F85CE5B38A64B4EAD179C5EFB72A6DCB31BF080E62EDA70BC27FF6 -70F1E6B7AA9B60BF19F52116D919FECE991946C8890766CA834C9EF887EE05B3 -7870F0905663F66B483BA94829EF58BB076166A40809474ABB9EAD15FD21DAAE -DFD13192EBF5CE5F13441BF33910DBE1F03F24F692D229623974FC0545609E1D -04774A010546D9DD7DC565BA9118C9162C4EBDE79684398D055BE9817D5323E2 -62F47521C9E9B45123A1A9519258FB0DDB1068D7F92F38FC65F38D3479E00B70 -4193F003F92F1C80CA0B4607DC1A60C1D342E9298969B23BA9247936279F8D98 -D953AD865D937F7B9FF3424B4263290802A53C3F1ACB5BE00F4DB01D8ECCA322 -BC02E1A1E025CF85C960D6DD73D4C53474544B17EF73DBADAB9FDAAA93B627D8 -7263110ABA54DF1D3C1F83724DA049DB977F630706988FE0192FB53F3FD9417B -C24BC1B3CC184DAF52B07F2B4461190E0BB06EC6B4AA0A9417C66AA20DD96F5A -8C7DB7BF022830873F5DF031C9CA661B1ADB1EE2F7B08DA3B3DF127D52CB0B88 -E01E4593AEBE23FF5177B1EED76EDCF84C6272C677D6B221A35B420D93252183 -6B6536F0477E7540636C30B02BBB7E4C33CED1C4EB6462FE2FF03FA3451F952A -E1BE1ADCC347E3B4BF0F551CFAED1D123F30493E4DD71883B8FFC6BB4A855D02 -5C10248ACFC1AD3600D7A504D043BA4026BF29357D11489F6E2534111552D79D -C1892AE149061E5D86C01D82C52427B4486F88AF9733EEDC2A27C59053189136 -14BA6AAD04DA9C35B8377E339BB1678C533A8800AAD7736C4F2C99C979F1FC11 -65F2605F4D77A0F524E259C75F7B5C319229BF4E006F106D2E53057537E646E2 -3E04FF414E52AD68BE9480B3FBEF472C446BBD928758558F299AADE32E3A947B -DAE1A1563E506753D5DCC8692D9315729404956DB585209C512C1843F11B1B68 -9662B6F7FE8C288C0D4E514979D3BF3FEFAFB4694D8969DC6D238D4310141BDD -48812F4E2EC6FF9B30A19E7DF6176643E8BFB9E5FB5FF44269696A120E4629AD -AC47AFC0E43C9048552F47096F6030C87AE08B6969882EAE4A63C8EED064943C -2DED79E266545B8807739CFDAD5AFCBEC84CD577DB0956B7D3E573FD4D150683 -C03F339502B0B7FF14B05F8063BFF72272AE941313A2A87833B266B29CB4768D -A5561D5E0D385CA96B0D42390F7F8C8D0938557CD4AC52571E340F7E9DC7BD6C -063CE5B9F584D60790CACFDDCBF46408DD37B8D2D77F4FAE3F3579BD601A6508 -F62883BBE55CC900D4FEC66C95D04CC0FCB7F9D5FD0AFF3CD8A8041FC2A7DCF7 -923720EA109E2447287D4DA7B390DDEADA6001948FC5D7516BC41D9F9045BD6D -44AC9FC7953A1B19C48F938DC7DEFCBB895F29609438B0735BEE9FE2350EC3A5 -D07572A3DEE070F22139209F577E0F2635A2F081ACDD60F1DB00E8547E0F2043 -A372C73063C50FC37662588138538BF02670D88E98CC6BA37A7854754896E36D -9660D1B57E8561F7646763B47DDABE791A22795EA0052A5D5A1215575DB845F6 -72812840395A3FD09FB64C49E1FB301F894B81641D5F4E118E51376133FFB60C -C0D7E53AD245747100747C1CF79E43074FF660FD9CFDEBD27C314B33909993AD -C6F74320515DC8662C18D130B573866A425A71208BBDAC74B9856435F0BC8743 -8B7B0A961EC6A50BD7C28A37D1B498E201C669DF18DFF254B46E1F826ACBEFA9 -63F784B55FDEB25C47344D51C229576ACAE0B5668854BFD2F3C4317B9B8DB678 -D7070B27D4F58AE5285EAE9112CB06B91B3B7EDD674A7C1CDBDFE0E908918DDA -070AD7F1AC630485BD63CC060AB809D959D8351EC0D0B16C5928B04A96FC5F43 -E16AB4A92FFB345217429544BAD0290BB0301B39A461CB1112D666BCE90BF37D -46314951443D48B66F87C300F59553745A5218DAE7FF319EC6A3E54A08E2BD78 -87DEF58A90F21E2EE89337287C672F039B99C21288A3893118B11BE6192B359A -743E7F2AF63D9595C6F0BF8E925A4611F5C9EE53216EAA6EF28F76CA97D8C608 -668D4F2B9F4758443899761858C7FED1DEC31C7063D52A54BBC52408AF7599E7 -B00A06EEDEF1C6B89CD64D83878CA3509365ABCB953BE258703304FD475B5423 -6AC41B9A01FFC163D00CB39A714CD4C4EE44BD3B72B836FC6FCDC5B4807BE0EB -105F308F6F0BE0026ADFD15C7FDE8125F26FF0464F77BAA01417940EB4921F84 -642BFFEFEB1B260D6D5DBF4FE8E4B27B735538C00E1A1E113C3DAD716BC5FB2D -4CBFA14D80494869D98F2FCD284A6FB0C21EAB1E9C39B2AD13ADB3F1ED11462B -6AF1D508F725D720F13E05F9DD829B6A4E85F2875FEABE6E08AE8AAC5E3E3CF8 -20252F986C06659C956A91DE1A55F4562F69083693A506EAE83D9D3BDF3EBAA4 -929190CC32FFD3110C91C45B8EA7244EB90AB715F25651276AC763DE439FC1E1 -D329C8858131F5B9AD33EBB54DE30BB896605EB41F6D1A82AFA2F67BBC0CBFAE -65F2CC7BD43480E72FC9A320A8DB76F4C5BCB1AAFF01FE05F2473D109B72B367 -91E8304E2D56516A2A0D36E9FFB237696EC8159D8A8132E8FFCCC52788A34C94 -DA762D34516E07D639C7E2C92BF9855745E603F30E756197F77AEBED83C52A85 -02D6922B39AD6F223D0EDC2B9355212D32770AB4E2E5D42D10CF3ED77A321A19 -5BE4566EFD21DDAF65C9CF4961033D298E0A4CB01885C53E92104E816E261DAF -00A6CE7C501CB2282BCA60C641B298C8A5553F9CFCE711C6B677EF94039BA4A6 -8A29B04C69D6B0C586A3DCF1D323B611E87741353101D201B1A51C58C5653808 -A88DFF583970916F252F79BC09989A7526C6C004205396A6AEB5D5F893AD2BD5 -21A7C70CDC4441826B31DDD7CDF72AC95954258EF01EA58BEE077E7496541955 -98901F9DF5C3D9871C2D73D5BD55081FBF2903AB2D666B062EB59271D5DE2979 -B6B7D9E6F98CC2BD25E93B963F8069FA557DD229EB689579194DD23552D44B76 -CDBB0393E7495139C765A901796B27B4E1BDA58879E335DC1094419537150FA5 -9F3C8B24BBD04CFF6EDEFA0EF0675831D473D08C563607F8B8FDC779A888CA90 -59B91CA9455F49B75D01AE83E29B525DFAA3EE8AB6921C98A08C9863EAD03FA9 -A06CCE0D2E4F5AE3B58E874962521BB632F40AC0253EFCA8080F388AE87930BA -2E6F251053FE3FACC9B8F5EE35C7E11C527BE04A313B15056DB5A2BA9179D38D -65567D7BFB41E864C5A628D92FA9CE07DCBD3F61FE5716DB80B0C4BCA5547E0E -5FD095421ECEE9F3AB0BAC5282D6848B592334CA0553776944FF72F033697BFB -E341F5F006FFE5E1C3794289CC7E5BEE9049F11DC4F4FF6CADF6D2FBDD87A66D -33916034A78D3F8B13E30DB2D5876405C8C4E533003DECC6839988E716B54CDA -8220EFCF0BD284F26CFD5CFAC1A680420DEA1C9D925BAFDC063414D6E9B3C67C -EA61C4348DEBDD601C47517288D2869E815FE104291BD26B4CB623FB24525981 -3401580E6E6C84914AB9CD91B3B541F9AF742119DDE659146A4BBD4A3F532DDE -EDC29E58F4C2AD9B78F1B6B4C7DBE74288E9900EFE276A22E74B82D20F231789 -79D72B1AAE398B8981D33E6EB27AA29530E169EA294A1A76AE941F7BD33F1333 -59EE7F2448E0A2DE3CEAA02DA052B941718DB7288CBDFB0EBECAB5473F3A1E6C -6E2B3A823E92F9BEAB5E704CC717B170FBAA1F6021478D676EBA2DD8C1FDFCF1 -EFCB0502845A1CA22C344A9C309B450E7C6D1970F12E5F21C1016C64373EC731 -3E5D4EF7C86285ABFBF6CC8A7372E0A2269E44F8DAB78863B26B1C13F38684A1 -746BDEAB3C4707D0E1D519357925041A9A34D39ED75056CFB3F80B428FC318BC -8D61F7B0B560CEB296163FFA87579C15978A6F85DF244597A2D69D1C952A9062 -76B045F6DA725A0C50EE54087F2659E783F7C184C5F5A6429A7B5FE905C100D3 -DB6106A1F5946314CBBE013462A62B9F4F2B053B14B6228D8903604E7058D1A6 -22BF06E2148918CFF2CB8B7A5023D59457A3E4D719E4E21234D29A2B62BF58EF -DF5719C6976AEBF9FE7BFA627466E421EFD90E7EBCFDC0ED82AE79DB249BACC8 -24194544826B53932F0D6C16B97D322D2F546E00E63E27B3C44FC2C1CD2865C9 -BC3DAB3EE336724A1A345970B38E806B56C9E810C4FF6DD701FD61581F9A8467 -EFE2A2C0A57DA04CE84281E8F2EA799428C46D9F08BB07AF3E4E293EB87A675B -C74F461086C1DE798DADCC23739195DF2479E6DCEE0E582AD55E8C496BBC47E5 -403003F83C523D37DEBE106EB00CBD0E9E84BBD73CC823ED2F3AA3BA824E2C53 -B2B1FC67C4FCE94A1CA568ABA7AB4950782644A47D3C040FBBA833EC0D00DE03 -392EDE905C67DABCF6F0BA9771A953A29D3A02EBE2447D3AAF484BC461FC4EA5 -A3EB4985F5FEA614785F962CABA273B5952F73B4048EF771A78126D022471276 -C4C3C9DD5C8B2A7C89D4C4804357131E30F5734C93205D8C98D1152B7C2F3D5D -8E1DFF1731595F17AB58A761A56BD1A336C4EC203BDC7732FD99DEF3CCA1C2C9 -0DBE11653610D192D0AA776A6AA0B493E5C2ADBD3D03598398251898FC879533 -154162AE4A5BC9690F00F8976C3FA4C506325DB5E744642DDBE32FDBA38058BF -492C8FFF777D58F0D5C46C224C56FBC86908C8E0F7759ADE27D8BC5FD2752924 -12EDEEFA51707577B91C86613D4A69FFB236E615D74F49455E31F2C5FC9F003C -DB70FA20D5CAF86CBC7F0F0413FDD4CEDD99741BD89DDD66778DE46DD98D6AE3 -EF40473E16AC2A6DBC60F475132FC96348ED87E28DCB1074FC52D0EE81BDCE62 -40869C9CB2B91B111B445B445A17782E194EE36F4BC5412788BF69D06801BB3B -224066F35E04CEE0B3B81894724C084A813683B405124171861802DF38D44151 -F2A7FAA59DFDA16A881B920B20F3A5FDCB95330F0D57475738B0108ED4C476A0 -40803FCDBCC23B284286A483D3AC86E98F77245F25E649AC4B6F8CC9E06D6F6F -E29E993CE6F34D76C6C8E7615350D47EF57823100F1E8101CEA89BFB0FCBF05E -FFBBBCFFF87F6A0D20E56B9BEB0D4807C856A82FDAEBDF6E756A82C7D480F128 -3BCA96BC773D8899A9166EB6982B5566F262D0D4442D752D25DA750E9F7B2E26 -8451CB3CB6978C022BFE32F4FC829F52CF7E856A2FD27E5C29E69290BF7CECD5 -953F8CFDEDEA316F5BB0BBFE532E688793A86D21B17753B5585042EA0398800C -3840803202FC945E4BF72C8CAC140FE6412187142484B7EEFA080419A1BBAEBF -C77BC72CAC7E668B3217B1B9775E585BDDB10F4ED705A92FFEBF6C4DFB6F8C84 -8383D9DAE4CE854304F0E84D777B0EEB9AB5DFD573AA2556A1B0721D2C31858A -B6F3432BC2706920 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -%%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.1: CMR9 1.0 %%CreationDate: 1991 Aug 20 16:39:59 @@ -595,10 +161,19 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 40 /parenleft put +dup 41 /parenright put +dup 73 /I put +dup 100 /d put +dup 101 /e put +dup 105 /i put +dup 110 /n put +dup 111 /o put +dup 115 /s put +dup 116 /t put +dup 120 /x put readonly def /FontBBox{-39 -250 1036 750}readonly def -/UniqueID 5000792 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -625,241 +200,64 @@ C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A 109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 -C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7A66D8E9C810 -49CCC0D35AE00D3669EC7D8ED957EEB2105BDCF7408E0B04A325495D38BCE845 -E96329244411EAAC14D3ABDD2BECAD7D391ADFFE3F7565B14FD29737EAAED3C0 -7F3981DDBE07D4AC09F6C1A32369BB88852CCE980C1E950E27EF3CF8A840B393 -9792FC1A510BCB4A2976BB640EE4510EA2BA3C7B5FE02F5F0F845B6B00F617FD -EB4655CED34B0097F22329071DE7738CA994BD0F983C5C4599AB9161F3776023 -9AB724F231D9C38A76FC8F6A2DD4E6C9FD2B8061CDC814442CC69E94D437AC78 -B2DB204A99A3240E1123E0568F6EDFE11586FD1056FD547B7CC477CDBA05F4E8 -267F1174136F0A6F1DDF36774E8C58C3819ACBD9082D6F8D32787199B991C539 -66ED8AE31E98A78F906B67ED87FC30D3E9FC8786D38A1DA49EC9D1075CFD4B23 -CF86014DD39A0875E64A40A1EAA6BB9B2D5BBE9F5DA15A93FA14027AD2CDEE21 -F3CD937930BB35F12FDBCC15AAA27B26FD9A3965CD3DC6EC8981BE0B1D1B54A8 -EAD03882DB414C55E69F022DCD972D2509CF438F5A8A3D005D6C4840FA11C09A -D80E4E7A2A9D5D35C9F90E74B6879428B3DBD6A9F65988921495F5932718BADF -6A1D0BCA5C28D95C77DB91FED97E631BE91F12FA8B822F17C19A40432BB51FB1 -32456106CA12387835F299D2C835A6015DA041BB8EFC89A05B9E14B431EA49F9 -663EE20B464A0D899E959809FD8CB94DF654FD60CE3DBF43B68513B73D370DC4 -A1D6EDDA5A97E4FA33F076A46798F08BBC9A8B881FC98A6FC75D6DC35F11B006 -1CAF7B4C1EB3D842AFFD7543E0684C08B9066580AA87DA60063917085B15574F -89A66AE6142B501DDA88AFB6CA54715FE9C322FCA314B24A1EFAB4540D29D4BB -5D9DEB2AF0D3EDAF249C7CF44E9AADB07378AA79856A8547723981F63B34616A -A2CE9FE46E701270235FA81568A236A614278FDD2178DCED2E89C67F73B17241 -EE3963A20FEFD28D57A5EDBE9038EBD14F2B4522FD33E87FA15346E5650AA523 -90B3C06C1F5C58C3A724E492E37D39B2247264DA02E5429062798387AE75D344 -B2A49017D786F5CD038F47BADED863CA9B0AF8DA68D7633997432A8289FBADDA -5C0CB9DE70AD5C358A34D05719104C5320810984B09B6DF65D8D55F515704E6A -85DB3EB4D3E1174450D67D5B9BA65575697EBDE700EA6A7ED78BF125B86C2EB7 -4F8A3FF408A4330A1F7DD21BD4D991A864F75E203F53A1BC423F071BFCBBD398 -B6F473789C02DEFC495FCB176636A5FF6C1097F2B262FA55283560FDA41BD09B -1BF15AF3D55CA3B8EBE99822F2B0602CAA02DD7CD9C06FEC22020088B328DB5A -72C1B42A7EB70B9D3CD7186AF316B9C769CCE07C7EAE3CE6C0C297031C21DF01 -50934FF9983295554BA5250B84F48E8A53C12874628AF7CE155C400045F836B3 -9A9FD9C6DE9A85556AFAA011619597D023B229B24DF27DC30C280C2DCA6BFBCD -DDBD73738D049A34EEC427B15463A22C989AEEEB870BA80D2A161EB19EF3B07D -47381CB799907C723BCEBBC23591FE23EDC4B5526AA62AB69915A29E204EAA4E -5CC6F50ACBA322C147BCDAB2037942FAC0BF085ACD727037939DA6D679A67BA7 -3C6F125FB7E95C37BD9E69F12936506E2591B7570D0D06C5EE1226966DBE3281 -D72D682E570029A49A5B566F2A34F3C4D1B74A845D7C4ECDD5FF077326FFD7D5 -2D67EBF1FB9B8219B6FDDBFD93D204B5054B8DC0B59264F944F6C434D73958FF -942CC33C4EA712E73547F15EDFB1D4F7E9F48330ED24D61CBFE4F1435345EB52 -2654BFC97CDCB80219941377C9F08E37DF676CBF8F1FEAB31B93CFC356A854E7 -2D44997DE52B3B61140EA94FF249DA41AFBAE054248BCF618B171B28885EEFC9 -183C4BBCAD4F7D2A230CE4490DB184D4E123309718E5353970D4AC9FBF38549B -2211875F79D431340D5CB6A0B9CEED0EA26179121D155BA81B5FDF99C5E8D177 -3B0B10814B81E4FA26B9B5875FBE7E2623B17AB3C04419DD250F0DC422CA6F8E -1677E46BEA2596BB7D52917E49A8B175C5A45B53DFE99CA1A1787BBC65E9B335 -6BFFCEA2D8CA21E457AF27A83B192BA9011143B82E7ED7754C85677024104E9E -961D89ACAF6EF14E51A027EA3E4BEDE07899542ED05AEBB63C93A73707B33E29 -39F159F1E4C042BBE672C661E8CFFB9E2D99A21DD37C67DE76ECAFB1D86A25A3 -A35A5644653C5571B5B7AF8317A12C65C9D0701197BD6981DA6491AE466730A4 -317FCED66FAF5B548D00B28D8FC9FA581206582A43BC8AC1C25A6AE28DB6F993 -2C4EA8372A77DADB48E84F2BF0B13212782210593DA8843CE20F480189A6B1FE -F25628DFB0E80EF6246278A977779771ED41C18D149AD5B9029A350BA27B2DE0 -B4BBD5846279AA5A7EF490E93D7A29A638C6D8300E4DC86BF13EB1B86861879A -3B040982E4B1E3644BC982B7F6F3EB5E0E68E4ABEC782B0A5D4A118344510C5B -5C713028D1055D3FE8F4021F34D6633100642360E78818624DADACE86C8959D8 -FD3D17A6C3C68BC57D4DBF3C2C1DDB48E485477F8642FAB9CE972642CBFA1E55 -E8A49F277958C2C5BCF94927BD4BD1BDE65CB7881DD58A19DCD4520AB550170F -75F2DB0F762D0E299B5E9ECD77D2DAD70A3D669FA0A35258501111F87004D8F0 -1176446116A6947D9A9EDDBDBC8970E467C0C297FF782FBC792D67F6670F04D7 -E144383D0FA67DAAA72320881BBD99AA2D5FE15FC39875C76CB51358942D5972 -255788796AD094FEDB21A62649C2776D06DDE5845BE618BA586039114287BABD -2497E94EEC93B5BE6CF26EAD350C3054BE1BCAE4C7BC8BA00D790987A4B22427 -5113579591E22C858E9BC334D521C79687E727C500A49D64A04D184202A8CE6E -2B3E061D9782A105E70E41299F921DED673BAC72D68E7571DEFB6BBC74F85A1A -459F0E3E25D6D7537A03599DAD46C0D5E2A16FDA46A6AF0FE03BD8C83B6A98B3 -859D90557D1E57EEEDD7F294367EAB4A974F4B335919D82FCB10CFA5198C53B3 -F2A1E716E911039BCE3518A2313586D7AFF353A7922B93177A09161161E9D762 -A7821D0BC443C593D9E2E1DFF06A886FB5AD8138488C7697BA30582D762163BE -6C7B8DA2E878BECB58C6AEF6E7A79B3086ADDCD8A788C6B7500D8B0388C5644E -A671BC9DD7E42F0CFABC401CDBA0118747E575E990A12DEF28458DF96784D22A -3953A07E8BD0B635F2D9FB6146B68042639154044C4E904C64E9D5B724963566 -FA3B60FD276E3D7EB2F59659CC36C45A1E8B66FA47AB87A3A0F0DED9A1E807A3 -BDA72D96D45E4D6040E1E6D4445B0B6D8ECDEEFA947DFDF7CA1F366E662CA7FB -AD8A48B1A25733D5DA1BFD5716A4C6A1CECAF845563D29C49462C18A4272152A -135A7345C554D43ADCE45CF5F4CE4EE177FBA9140CE90435E332B19047A066B8 -3760C148FD48FE375D44577CDA59D232DFA57A258CCB4BBBAE50BFFA27050804 -B70B2C0D66056D468C70F9116969501CCE52C064CE41A23E295C141FD21472E5 -CE1A175353A04922126CEDD02B726E9880F012A2210F703C2D99AED3FDA32470 -A2CD735DFB9EFDD5BFD261676C56930815FFC44C106D87E68BF83B373C25C8DA -C58BE6F13EAD93E4670F7A710019DB68AE250E3E86AF9743E9F3F426C93A160C -7753B901F2E4865BEDA045C302CEF439138702DDA7B9EB6D29292D2490BEF110 -9FAEDE14011BE77647D67B2FD62AD29925B2108EB90095CE8972497D6E308144 -14AE95D21FE28DA652E891A4424A9815E2AD0D45B0AB9A3BD7FCE59499EF239E -769A99A01EC56884717CB544F3FD82CFBFE20E7D8E24FA60C7DCCA9F83DB8859 -9D110F2EDC2207AE6C991456DD7D07575144DA2E1B4D84943CE2EB32748E3D2E -9BA1D3D4B9D42C0AD31D623C15B5A5541425D4E35941DD0FE91239922A57DA70 -FCE714D44CE73BD7D3EE55D6F67DFCF6D118F6DEB09427B64481A45DDFD96AB8 -9E7B290DDBD974AAE4168BC92976A3883E866B4304F02C1DC2BE9BA04DA2A961 -BB08924737FCAB324692C884493A6C6B268B9DBAF97553F6FF0FB3E2FDE53E25 -3CEC75F31975F086F44D0021E96A8925BA2AACDD20D934500578C22F79E373A8 -11FEA8B4E2A058FC807C4E3E5A12A12E82A5B052443448DE3F7570EEBEABAFFF -8686C2893706D6147BA676BD8CDAB292D4A337837325185A50C6B3F6BAAACC1E -07D7D1BF91905D97D8DC8A6863C0D82E117ECCD3AC0372CE50F94506CAC86252 -2FD9344C6B884681C6D7EF29B7AC644D1138D215B05323F48ACF617A6F6D4330 -1EB5FD493F8C97F1A1CC587C5F0C878EE0CB8CA5C4CCCB8FDEE298AD78AD44A3 -6F3D2FF5D74E552B0F9C7C3CBCABEDEFADD33AD7001B32A01F27166EC902D2CD -3516A21A2E68293F366EBE62E3497922A8CBD719CB713072347FA539483AAAFD -0361287956057976D74A1BF9CB1508455DF701E8234CBD321C5C62970AADB965 -632CA077601F5D9B28BDDED00CA92F42A04776CED187489A87D1D20C10DE8A2B -8758039FD6A76EFA51DAD0523BC90AE299000B8476DFDE7CE733956441EB532A -3B386F0643EBAF6344E05F0830489B6B9494B5CF37A614AA7BC0F2F69972B23B -FC7636B0AFEF9A2ECB537501D133D57C7AC74F223A12EFFAD2B1EF109090CA2A -822378FA460CFA4F4E390F9750D60378FF2E521341FD75DC106D74A248F03F5B -5D60D3030564858474A088A6DBF1C96A98A0D3BC065518CEB57E042E79A6A0E1 -E069C4A28E7436AAF169F6A0BF0A94CFDCE7AC1BC3DBA674ED652F8D2FD8649C -1BA555BCF0412D748202C12AAFD91FF70BF207AC9BA95ADE26AA443B1B6EC6E6 -BAAF8F2E17ACC5E97B0D772CC68F1D2775DE4E27B16695EA3D70746C3D8329D2 -CB874028A2F951FED9D01415615D489CA4F5892BD072A67E7405C1CDBA3DE9CF -22BEC8272BB3B2971DBC17640C2B7A2C4539857A57362BD678F2F2079FB32181 -F51B4D6228F9D53967054B7C79499D72B871FD6491DF30A95692F0592FC8892F -1FDA2B08F53FA14019E9650F9B64E7CAE6EDF147FD661369B2C4F154E9FCDDC8 -DF328201A0A73AEA0A705C305E3E687611E23869CA944CA1B40CDBEAB8C9EDC9 -57B24D254169D03869CEE2D43CD2D4E7B403706E051C6A942E38315B2E8FFFEB -CD925B5808D918662E6817DBA96E114CA34FBF6E8232AB907AA4A6A77128F60B -A179EE8A411C3210D6C96C6051A03914F5BA48D199CD95D262A80A7D78110084 -CE48FAE4FF53352B053B93A237DF43F5505D2DDDE99B2145D4D808F7DE5A27ED -B7E9B71BE7643199D2F1ECDC6C54C93A669B822EEC7452E17302C06B604FEB42 -13C0345656D0CE2DC41F70D74565D3319C2B16D5184CF56201A39642D45B8ED5 -D46B8FAC9E873EC294B61E986CF5546A5163492758270B62E2E7ADECC784F4DE -0CFAB393E485E747AED400CF70CE33DBEBA26F19EF8AC8AE9230E5CFCE9AC67C -9D0B935CA103CC51152ACD8DFC60B97FE6C6F271459494443114E8324033C12F -2158852A7298557814DF1CF48D849FA682AC77FC50D42A6F4B079CA5A4B4161C -8054BA4B4F7FF46968CF3DDB53D47CB38DE649674DEF4C701A8316D354E6D782 -4D500184D5FAD3395D36F178A086096779F01A481951C98870A03BA9FE981574 -F2A2B7050DA9060BEAB05C79983249EE111B09D462930ED2AC789F74DC3D6685 -E930F00AEFC1B0C473810F8BD708D4502E1E666F4C4EDFA0DF9FCC226E369BBE -AC3F23AAEBC703447410FF4308979FAD9A1FE1313AA7B2D0AE56A35E8FAEE85F -A213342B1E98A4F60AD5B13274A4FBD38B00EE3FAAF0D4A0C5883DB5F9D7A707 -6F9DB82B74578FBD7C3330FAD6E000CC7037AAB326F0BEB5EDFBB7C9CC70C293 -073178C1F9E3B3D67B6643B2A6B7F2675FFB82E40D5DEC782B972DF6532CAB48 -7405E306CDFA37FB41647ECBCB48AA86BEAB6E896951E507B31E0B142241793A -F0D4A635FDDDAD032E575ABC3067A8F70EE180D3AC9ED4DAFFE9572C2E928184 -40B603C2A8020F6B6E43D947DEE073A9AC5DF24433B6670D197E8B1B03C89F0B -88DBBB87957B146C85A53161DDE7F7C78C452836A83A27B942C7EB5F1F07300A -B012763D821E8EF79C35B3C7D2B9AB06447F9B13D3A5379EF44C7461EF7A104D -93864FC316AFB4327BDB9B29067AD156B82CB20762E7C1CC3050FCBB6F68356D -6B549F1AB7FDBBEF324CBE679203C6EF1C846930CF4CB6BBA96573D72197F72D -69D2AEE92F80B69791A8C83815F549513ED88E20D276446EC42E852146F04A16 -BF3C72FB7ABA60CFA1A4B92DEBDA41B788C849223491B06662B7A6FBD847EB8D -2E468B11ADC958B00526758B9A523990D87D0F980FBA34136CC9092673C1A01B -F6E6FE3A58A4004F6049DE0EF539F0A94BC924F48123B65B18B04D7A1810C501 -E815E95ACCB74A1CF1F643B190DAC7AB10188E7453D446FD754B58658BC7FF9C -7F7C244E5D01FDA9780B9B335063BCA1063F5C89B118999AB277C59C91B2E74A -0AD9239CECD909064E857761FCAD1E6B5C841A992734B2FC5F0EC7E572FD4BFD -C95E79DB9AAA1A3371A215AC0C55291ED037CFBEC4176612C84A5B92B4755035 -640BC951F2025C717C220F28E47AD7A77B3B93CC066E87C2D76B4B1825CB78D0 -C136A9487EF6F2C0D71AC600545D69A15ECD94B447222A17814BF07492BB9849 -AF415B2C20BCC9CD5AA2E1732416F0CBC810945999CCEDC83798AE4761D0C662 -8CD0E935FB5AB2C72D5AE22F9659872514D36210CF3CFCAAFCDBE1B289FEA6FE -E2550C9730B5986D06DDD04E71C6025DB6CAA676A8C3D1A83B144803E18FD387 -E114A18EF2A0787189BBF5DBB4C2F47F84AA174B665BE180F6CE50D9AD45ADC8 -ED3D7DDD9D336BBC90CA936F1CD1F6BAB75D501B2482A3D5A97FDC784C4A78EF -59B657D4AFB421A6354941D870F794EE047BCB789D94AA465ACD0D37DF8EDF3C -A2129895138266D17276DAED2882AF4E73DB65EBB40D8DF96C5E55A0D892B48A -60B6F6E509F6A86A3A895CA9574C4D53BB7AA0C695BBD3A39F0FF2A9E1AF55BE -1980D6D70AEEA0C241712FD028F48FEADA42AEA6967E614E69B73E5AE7BD739D -78090D4DDD52C238FE5875514CF66BBCD969F0049BD5C35C507C6C1175A82727 -19AD6C0C0A93692238C445D73D2597DB595B6E2E868E8A66646002FBA7812EEF -1953987B87CF18A1B9795ABE0395E521FBC7911B9E4FB2207DAB1D454DBAE1A2 -CB9E3022837D26560C4EDBEA1801D5B27E1D41D33C4966FE8070EB37577ACED1 -F6D21F7AF729887262781F64B6359F78D59EBEC209E236BD25C02266B5D1A8FA -EA312733B0AEF25FEAC98FBDF295DB8233BF983B74158D95DD4287F1E2613793 -259409271EF6831BC0921196190CA5042113CB62443168D34B5DC1EC48CDA92B -8BC333BDA34DDCAD3220437E41BB684BECAD7A188F275430478D006AA476B9F5 -ACA215E1CAADDFF97FE84A37E9A8920F3C35B90AF3A7A260C200DECA8931EB87 -E804028C991C3AAD291B2B5EA2C607B7261206B2978768E649E5F05E951BC121 -39F45AD98DEB4A0903950BEE15E1F39B1DAB307D0906B139B85C89A138C30BC9 -D02A8F912FB5A73F6685E13D2062162F6789F861E5018C041D81A66502947F39 -BEED14D2812F07C339B9B46899CBC9C5A76C1133A252F0026886F72133E4D293 -49C2E9AFDE7446BB7A8A9C560177C9CA6769D59A6BE4BF88B7AA61C98AF3DC6F -1DDA9CA4D29ABD72473DC1EAE6753B51F3DDF447A9B7063AFB78186CF670F19D -896731872320FF3A8027A17016D3CC050591EFF22A531F04C95F916C83397A08 -C38419612488D809245CB96B0E76B5A70FEDFCEF1C468FAA1B2BFEB93DCFD621 -E6425CA324B4C51220358A85C883562E1418C8103C7DA57C8E9590D928A98881 -22CC9458E6F84997DBEBA7EF3D679D12A4AF8F87D8895B59F05191F30860D672 -F0F0FBBE2F4A6407B996A5E502D3A9A7434326F4E3DBA6337B06D9CF52FC90C5 -08F80B5377ACC6A6F59366236C1BB1159CD8B9383AB41D1142F7873CE1F165EC -132E6178385B3B0FE3ABD7BF7F2A07FE78428E54A900AB65B251E65703B4D210 -08A9D44445C7E1C53577F797F9CD716CF16711E973B5D1D013F00476BC06E10E -EF9BCB9B4B66F589037F5CFDFE35DB6FC281268F258C2096F330E885044B220F -58B01CA33EE4BD88927B7664C1A33C712B58459AA6773E7A970630F2C31287C2 -FF3C08070B13F5E322B99CCBEB66A7A7823D0A4B1932A35AC492F432DA5CB49A -1AD508A098463A32372E771A83DC6C5AD1756B108FB0B7FC757DB7B85894718E -A812EA84412B0216CBC20609B361F29E986E2183B47B111946433CFD7119C15A -2D26374F286C365F90C8C16E1A9B4F4A3D6B8E96577F14AC55A3A521533483BA -DECA4C09FF50430938EA6034426C6DDEE847507F61D37A07A5A03499B1DE7434 -876F7C1F79B0F5F147EFDB27B9D4A81ADB6DFEDB310E26C66D35EBCB289CC737 -DDB161A6DED02194FEA213AAE3030DA2109BACDA8F6547618DA935940AA83984 -69AD53028F628C59473D857F514FEFE0D56FF8C26F8A2BCE3F739BFFFB6D4036 -F30E2802B58CB1254B7955E26661EC9D41759F590E10EE04470163A0AC208995 -4BC63E753EFA7E27486D5296244BBC357AF2D5F1FE476FC2FEA428C956C9EC97 -7386DEB211C49FE7AF57191EDD5F4CD536FCC02F61FB5395703EEF53003CAA08 -75154D2BCACECD3E904C50B8C651C59D2C0BC6BE1C366B8228D4D81D9B476924 -9C82D0AA057D91F8B2F0103E66AB447A7485F1F72ABB2DE2271900A9AFBA7133 -72211C4F3D71918D0E2E4148ADC07632B700CEA221C8FFBAE159B9D6ECA16A66 -BB276C844C69BE41018FDB2201D7831D91791ACAEA364827FA3CDAFA2C53CEFC -EA47D10297CDA9C0990ADEE984627CE96B04EF2AF157A098651D431D147E65D6 -8DAB5AB6717748F68128E20D8C5AC697949381B0955B15FD34C4878C23AC2E7D -0309575CA8109DEC52D6834146966ECA8CE04E7614FCF38190F6960D87038AC7 -7721849793C3B7D1FCE5C6D361FC0B1D14F84FBD6806ACDCCCE4E0EC332BFBC7 -265BD96656959B5CB17BD3B8885DA2FF13A3B72046BF6B99BC2CEEAEB85FEFC2 -5412C5CA88C48D0A646E259F8F897E205CDDB001B9CCB948B450E4B83456A75B -9753A4CE15191EF6213FA9408C8F0B986575F7D5440EBDB4F9093F70ADBB515E -F78A292BD54A0A9184D49C2695D720503EE8B4BF07A31B15922F7D8A1C220076 -C494DB683E3090F0A51BB614614B4847CADB2DFB6710D84D0C2437E39A2D1AEC -88DA93E0C0D89269E8C5AB9975F0A335BDE7033CC0D4F76C65CBA07B4F78B720 -FF13A5F3B7BA996C742D347BE05E42333B8C9B84ABAE24D2BD983D53FFEE85F5 -E7D1A77454F119DF49A69332C497C776B57ABC050E170DCE1D3ECAC9E09F0643 -92AB34FBFB28F9D26DBE95C5A0B9ACAE61B0AEB79A3B9624176564034908651E -3F6BE627529238717CE6F0B435E064512C7B9D78B29CE86BE4F5ABD809A43383 -CF0B5DF21540D37D1BB8FCF32C7B2C4173D3C8B3DE45E8E4B7A405A529653D48 -62F5DE1829BD3832C606954E2BE01B3AF7157832244B2E7757A03D74B4E3A05A -2CC87A9B13F37B72ECB6B4717665580EC4032DA405C2E7D8FE0B5468AAD66379 -2FD5ACB16A3F36261B11FD7D4E8D4D2A820FB73045A9CE8595C5305AE24A7098 -78A75959F32879CE5846BC1C2192AED9A935454E552B432B48B5C3A9FFCA2D5D -BE4A360BCF2B99ABC8477C697D802D0335A8692111E4724FC51B19C31704837D -A8D1BC8808D08D9F2EBFD7D706DF325D2AA8ED94F6773BAE63A836D88E87F3CD -680DCF2BC7DF8C7E06389D6C986BDBBD06229041414D7267D9AC9E8EFF2710BF -65CDCC222EE6735413368584117A274004EA0B415BE5D92EC61A267A3455D65C -6CDCF80FC2E64397FF395E7002FB3B0813F98F3ADB1557E46F644E0C7E0FDB70 -533122C1838D195BDBBA28BD7868FBE02DB437CD22B72401C79FCA2259714348 -DAF6B321BE3308190B4BE630821419673F101B539BD788B1755146554EFDE136 -52430998CB5835960772DA8470CDD894AE8810A2AB7D0EDA22C374E95EDC671C -1BB5BCB69D7C4EA065F784DB46208C66D92C2C6037D0573E63F1B66B754A4D3E -A7C0CBEBC1A7086756CAC6736B9296BDED874E61D7357ACCB4421E5A617F59A8 -9BAB85064CBB175596A223122D7C858597009D1D3C02749C88AB2694AE37250D -91E5B9CB0AB0ECE7A0F9006E63E230668221C3E704C44F8D67C9D7F677A4B41B -032E931BA43D59AFC289A08AAE721F15BD0DAF38D062F39CCE2AEADBB6358A37 -A21F3E26CBEBF6CBA354A4AF264C338B1F99A05C95B3B93F6F0F137DEE72691E -6D81140161E2FDE25BDFB5B9E729ED71575944279ECAE16ADC257C7CC812D1BE -1BE58ED6A842FF6BA11ACE3FA83F17B8E3363C859553F33847CA40E6301FE515 -489FB5650FF995E22054EC5DE4AC290A18393D9F791E70D15D81C1AA9950803E -15253C573E219B3FE27406A5E8A1FC87D3E1B14B7A4FA9A79EAD46D6280E91A5 -64190847F355AF837293C6BC979C65F8F6B4E846545D10D3A1F8B1536B +C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7F5458CFC59B +079E0D4D871D2A7D81326B7416856475D76205EAEEC9F3D52327C5B62994CE55 +1B930DFFBC741F40F64C00013B59589381551142DA0571D7219B034FE96E2029 +3F5A62E3CD07308E303E616DDF322799FDAC2B6B306679295314E08E76644438 +6E4BA84059F7CA54E1993211BAD90DD3A51CA589139A75717A5FC3B497DBA3B8 +F3629E43414B3522E80742E32BCA188C22779D748C7AA6B46B64B3F85604D799 +5C6C5A44FDB20FD4F5637E62AD65F244E8AD62A9B1091B558174854DB42B8BA3 +2BB48247AB1F8F9C7735AC08F7F3D4946C4C92815745A64A0B2C9E9836A4691B +C5D3833C22EFE5FC9F3261789CAC68B83C8350C3CA3326FB17DE179CF7707358 +07E7B48A010E6A558CFDEB454B91A07BF032E852D09C9491DC4A4DD47AF86968 +2D402A79B6770156D4AE6461DB26261E41B72C03F0BE35E5B7094615BE5BD8CA +13D011FD4A241E1BF7F08B4E1ED6367974130E95428CE40E0FFB940521A834D7 +13BE1B34B80E1AADC8EB7357B84BDA70506FF89867FC4DD9F829EAEB43DCF7D4 +F9D81ADE02EDB4FF128C7B6822533E2386D6110E0A8AD99D02F129D6D3B7BCCC +8E0B4F6BD1357ED5727EA27A4751AA271616C29E2092E2E9AC33C864750941B6 +9D9D0EBC991F38832D3A9884CAA06BDF5A3EFE212187F01ABD22D90861DA504F +8E03D4A75E6A84FED5AD1260FD1B5504A5EB660B40EBBC1711B625FAB2E43596 +74F2DC1C7E1622F5A9643782E90AD9E03CE154486E3F3202701274B67BD4A823 +4206A10BEC6659C6CCFE63B2FA0C581CA42DD7E73023BB4692E9BC4E82125E45 +F4530E0BA7E2AEB69F758C93681029D1C4F2D385593C21E9780BB439BCCB924D +6AB1675FFE5B6BD734201EB119E6C66AE2B9781493E99A3545438FA9A395EFEC +D83120B7700CEF5CE34C18F215D28E4936DF84FF7C8E6C1752588762F1626B67 +178C501070D7DB2EBAC316AC27F5F802CD796BDD927409E3899D361170D4FAD1 +DE63682751881ACBEDBDEA073C0AF5C0509573E9A8AC0A0A71EA52FD5666D09A +36990458CF0F9E8D8ECAA96809EF41F6374BD7E8959D5656ADD23943DF12F496 +D4703DAE21C31E787C9CF791E666D35A6F542AF6E5B8124B886474FCF1062873 +3F707ECD55F184AAA4A41D3EF08320C5825B912FCD1E07A21BB8661524D71C4B +8E924E047E93B02D13604E630464788A1FAE903EFC8B58B832B5E808EC305998 +C792B109B2D200D507C88BB28DF966AF9ED6F6C82776BCBD9AB0636DE09A2F20 +90B3645AFFF2A1CFE1BE1778B637391469F82543C6AF4A970084E2D60ADFDD9E +04036DB57FF14118D7669394B808FAA3ABA10BBD19BCB532D73407CDE6E16C2A +6E4801698B00C90073C7A00988D9483D52D13816113602789DB0B2201FDBC5E9 +B13A83919E062BCF886008149354F5024465F346EC345F8D549E791030ED3E38 +7B34FE9E76C665DE93A2D03210F940D88BC0772934F148EC86CFFBF58E3BC3E3 +D4668E55E0B2AA88BB1563B7D18B7AAC911EE728544878CD6B19F37B643F36E5 +2929E164D285978F3666881C560ED0E1ECF74CBEC725D469C43B73EB8DB62DB7 +7E1DF2E43361C94B763F4DC7885C0BC1937B7E359585913F9F9331862583D9E0 +4FABDD346E68DEF044712D26F8E71D8F0E3F1AACC74D024CF2D206624FBA8B40 +F8319FE8727248169A48A0045CFB89CCD988F88A2C9DB8C2AED12AAE8FD27F12 +7BC63BD88681D3C1C7977A474176C30376B6B8B9C6F3B73E349D202622CB821D +457597241FEFEA76CCB5E76A107E29C5E92221253ACF242BE65DBAA4C762637E +2F2EBA40E01CB70A22BD0190C2C114194159A032E57C39C424565BB11D463C66 +9D30AD565CACC1439F95AF8996F22F5812B5E59ED8BD562CA03D383CF6AE1B97 +26F8DFFB8DE8DC9F12FBF06D3D4DCAD71439DC1A6A1D5E1C99577BCA37CFB4B7 +399BB847AB19787779A7EB9DADC092A5CE6031E7453366C12AB1E542D4781CB0 +23FE39F7464954A4BBB423EA3E23D0435C3EF99F575A786BF43CD7588C0C7247 +962F148D7389B38D5A3020CDE884FDA3C47BFF161061001BA9A1B2AE6706E80C +3AD68000BBE4835FD86AC30286CB3CFBE4856F1E25D8C0F4082A6F076B459D70 +2570C078E8E0F6F08EE108C7AED1ABA955EECBD57EC76FCA0F34C106CFA4E60A +109951865AF71B44B92B9D8A46DFE9C4F516B4EA0F2EC69B5FAB85D834DF374D +504126B9829FE2CFD3A09DF6BC078BCFD29119FF6A2403A9CB1843D9FA8126F9 +B3AD679D37B43AE2C56E8A5895A8C71684C870015A9C609728C5A43C9D8E8B41 +FE37B0DF82FC4425E9867FEC1AB3177E0BCDDA39FB0B1352AFF87F9631E13D54 +113766388AB6D20A516D5BEBF9A8F1707F5152EBF5069F37BDC82A4EF856E6CC +9AE69A3DD107B85C896651AC9AA6DF71D91176197C473F2187DF09534DD3C7AF +A7A5BB5D2F89E2E52860537DF81FE8F026CD8D878D365F98DFB7F18B51B59503 +A2C1C0ED445F62A77D9A81428E938B83B0DB94E381E088FF7CF1B8A10E1FA040 +7F3BE64BF61F6366F1430F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -890,10 +288,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 97 /a put +dup 108 /l put readonly def /FontBBox{-62 -250 1011 750}readonly def -/UniqueID 5000761 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -964,10 +362,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 40 /parenleft put +dup 41 /parenright put readonly def /FontBBox{-61 -250 999 759}readonly def -/UniqueID 5000803 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1037,10 +435,19 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 97 /a put +dup 100 /d put +dup 101 /e put +dup 104 /h put +dup 105 /i put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 119 /w put readonly def /FontBBox{-301 -250 1164 946}readonly def -/UniqueID 5000768 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1181,10 +588,94 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +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 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 89 /Y put +dup 90 /Z put +dup 92 /backslash 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 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 125 /braceright put +dup 126 /asciitilde put readonly def /FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1663,10 +1154,20 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 105 /i put +dup 110 /n put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put readonly def /FontBBox{-1 -234 524 695}readonly def -/UniqueID 5000833 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1785,10 +1286,68 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 11 /ff put +dup 12 /fi put +dup 39 /quoteright put +dup 44 /comma put +dup 45 /hyphen put +dup 46 /period put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 87 /W put +dup 89 /Y put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put readonly def /FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1817,306 +1376,294 @@ E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -30F2AD56EA22D77BA06F2F0A466830FEF19E343311E3EBB8A5CC4A176B791D9E -F82BD32F64C39C814379E8BCAC05C1FC19B2D49B4016C4E4625FBDF0F842CC15 -7A3B3FACF36C12CF87558FD4207335BA87796761C06535B3659123487E2B573E -8130BBB39A337725D90C83C4F96EA64AC8CA7588BA6958C08919B5B14EE68AC2 -4192D6EEB13E174589C35CBE00A961DBBDCF4597DF2F4821DB73BC21517F293B -8290D6FCE00579F118219F9E831B9BBDDF930053685B80BA9D9CC81E44A9F73E -8B4F751EDF6480A9BB5C0ED669DA82BCBE1DDBA44F26EA4482FDBC0A4ACCD749 -88E48FB46C1186FA557711B0264667A2D278B5C98E0F95951A95F541AD3979D2 -D4A6839DE475D9EB07E9C6B572B6C8655D8E0F15B2F130C72573F8522DF30857 -DD8FE25841B87C42BC7ACCBF96BC56C4A93F0F0E2AB990B9A16DC59544A359C0 -1053EB807CEDD81FAE05ECEB21A6CD0D68EC99FC69EA97B121FA189CB72AB522 -2BC463D5274A5260E208A66E6D5AE14ECCA328E3F888A6883368107249E8BFE9 -511D504A50488CAE2988BD34C694CA490EA0A0B71B565995BA19AFDC9C332C9C -4C0437B5AEFE5043AFA8796B64BB80572E9A658F47A46ADBA0A53C3F5263E80F -C0FD55067247A8BBD7A24D7FE0681F82678186957467B3AE7DD69A1B7071BA30 -A019C8A623D870511231C9BD91DF0444C126A3CFB3772E0973BF41FEF1DD96D4 -837AC41F35F1435F7DF971FF2571AFE0D8FFDE1DF2F1B25C7B366F94665DAB2C -719BDF3EECB6CEFE02F8CE16B2AB553A755FA500E15216313B0BF06385C25528 -7CFB7D9EC4A83016FB8075941261F7A0FBA01E6AAA5DEF1EDCA0037756E4FF0D -909A6321D1F0EA32A70AEA089647DF89121A373148F9982A926AFA4880AFD2B5 -C5E946BCF0CBC661DF6DE06A60E0680CBC9A6A856F119E57C9DE7B708B57C111 -4348040C914BCC3C88A986FBE2C7C77B7F2C1B039CD2518CC7218F0E68B52565 -47ED4BB997539E35A01E310306095E89A34E36629F57C6021AAD085BF5FD2BD2 -7CB4B9433139FCA7FEF5CE54BCE312B1ABCCADD14B8849B8FBC5EF6408A2743B -CCD12BDCAA46859992DF6570EAE001A7C547EB8B56E7ECD9129DC0FDA0FE8D1C -F25DF1565627FE33B9E8267F22B716A7441177964983F013093444BC07250E53 -6FDF5AE45FA0F43A48A5EB0A5AB25EAEC58D49B9049A26C94A024FBA51BD54BB -E5107C9BF98543D2E659FCAC3F3C77BE77FE7BF9A9E4920A890F05B68B136257 -31C2A63231DA1A2F37EAFB8E429EABBCDF443D9740054D17E6C4C2A1DEB40E22 -612BC6773C291F60394CE50709FBAAA2BB433008D096B820157E5A90BE248C32 -DA05C2D63F8F7B8F855B2FC5A6780D10238E43246ACEF6494EB2D782351C322B -422547CCF149F6438711B03001EEC2E2AFF843731E7C8B9A11248529485F861B -5B438F4CAEC933B798141DDF608BF7BACA7D47D81D9A686F31AE208851867ED1 -E46981D3F4DBDEF5ACB0AA591DE4731F85F3B35BDEC868F54264E28B4C703CE4 -68F96D02CD9C66BA640F60CA9EDB4B3E853F9EB5ED8A9CFCFC95D904E9FF1E03 -20168B675206C15D6D99633BC15420271E1D0A16CA0DF900A2439C5275656893 -713B773D96EFD7B2A723E09A1D4CFD3151B93FD04919B0A9A5E56E1A7DB05819 -C972B98D565961710D9F0CF85A2753EEF25100D22ABACC983A9A6C11D0793C77 -7C51208DE9DC478BD0F191FAE21DEEF2B47085604D2C239460EF1940F5B6B240 -AD022B4BAB72D407671AC5D4A163A2B00CCB2F297F52A7DF633A79996BBB15D1 -F480CA95A00861A0F5CCB947824B77D8EC1BA9261B99EB2C3A8D6EB39CDE6F5D -98AC095E31508B7260ACCC3F771C9424B0FEEB69B020B1C72B406C682E4E9B5A -AE70BE2D455B0DDB83BA412AEB478CFF3749E9E4CA79202B282969FA7435FFA9 -CC67C4C42123DB9B65991F5D858AB4A67B53ED2D83CD4EB3E5BBFC14D402DF36 -8F85B77A90E5543608D6B0B5D496BC9EF2D5011A6EF57C962604438BB6B7C5A7 -AAA59BAAC719D12A7CEF3ECC264DCECB29E45DC291FCFB83E6BEC0AF11801421 -9CD3744C24067F824C77FFBDE35435E16ADD36308270066FF494886A13DC05B0 -F325E8A2C55B9A36963732519286FE3A00E5D59C05551CC7E38C97594C94E83C -0A3F5D807E01BFB4BF37135BABF865225AFEB23E47D75834BDC22642678AD6FF -3BC38BB3F33F0AE2EA9BE668B7D8A705EACF48059D2108255922C34661E867DA -3747A99C7C765C0F88D0D6C7AF84750D04FA29AD801B34DCB798F181C7C34980 -478A8103A64394BEEFE49D2EA73E037EB2B09880E24E603FF6188DF37C43A306 -9006B33C0711C336BDD587326A3BB5C5D29D09FD9724D4073D595EF5AABFC06E -DCB16F8E9FE165E2A603231EF503C8BC3F2535722FF1FDBB1BFA160225FB865D -AA73E5B51DE27D61F26BF735C9BE6AE8EAED4356B9556FF31006719CCF5AA58A -91A2CF7E71369E335DBBA261C186A92C3C219A4B899DB1078B06B96EA4D0C444 -48B2B64E8F939007E6ABA7821B925E9A3A5A04BE33B36C546205A4B86BAFD4DA -86B635E6BBE0E09782D6BA5173906F8759FEB28DD5E00043BB62EAE4DB96DFFC -3FA20BC81686D43AC82FC4A1E418B24E8308D40D87489108D2641E6948269B10 -BCF9619D4069A027B7E09EC4D05F202E64C3C1327588168A4011DE869D1E6780 -DA5C10FB83B424BC6CDE0652FE542BD081ABC30C8D294A04D410D997FFBA02A0 -E150BC3CC8413E381B256E926D2956607D05EB1282791736233DFDE7BFEB98AF -18FA9EC712326F30A4BD0BCF3BE3D73C751FFACBE58431B44A53E5922EDE7A1B -03F8E2C3F71A70DA5579A6C79FE22DD3CBD9FDD0F26E75C7912C3912B1B19DF7 -93FEA62A929736E723E7C525CB01FEF37A5008B665B9932FA2D26E1047872090 -535A8962B423C0D3A7C6AF41503572C06DFC0637C600B12D8B23F93C9777DEBF -6FCBFFE8430A709E93626D5A7394102963669F3AD718A505E9B9A556FEA6962C -CE41D69F5E017AFE2A41EA8974D6778AFFAD895CAD7C292FDBCDDE4504E152FA -D0E315AA4E31EEBF9B6572138061DB77175F1DC0AFDA5837372A5EA42426D697 -84C9F986A34D05A68341C308E7875D4D1806ACB149C00AB86463AEF0934E9441 -606A0650DBCC8D794E33C368DA42F1BD337193DB17D279F06C1A375483847744 -E6C2782018F687F634777134A8E68859AE3A61888BC146BE26E9EAC8083E9D7F -EC591DF2847C1CE6B466DB5A05ABF048235E0B1D7906C2960FAFCBF704358BD4 -F4856525DAB9C58FA5348F6E85580ED76F440715E25D872F6C0363612DEAF591 -6A8BC8AC44378B6549659B73B0BAD49A1BF4FA04DAF375F7311B9788946ED020 -8B246212B3668DABC759166459885F04C3A59D68B80EDA109BDB2D1523B18D94 -B5E2044ADD046A1CDE38673997823E79CA7414F126372549CE9F9CD47B5DBDCA -DD897524B18033AF0CB04E21BAF952E7D9BA5DE9F3DE041D444C08F845AABDB4 -2D4A42DA4F29874DD9B2ECE6A7812AD01ACCC5C245DEEAF47B9D33F3E8B05C68 -A51E21B1F2A5746601CC69200F7C1CBDEF08036B0D392AC93A9D339A8B311728 -B2E37C7A7F098252E892ED698AA3E679AAC7FB4F8BD6A052B30B1AC12BB9AC96 -B6AA796C79C28155E70ABB018ECE7170D018B1AEBFB3E3E1F915C5176153E882 -784AF399AF15439A3E52F7751A33B0C840C32B711A736E4614807E7E386857E1 -87D227E2A3BBED127DB2CF6A84A3496BE2C2D2A40357FBF5B72028D708726260 -ECD5418264C0009ECC80472B0E28218C13EE65B533774D601A86108242A14F8A -2B3B011F032EC9618DBAE721497035A60DE12887C57FBEA197B36AD94E03C948 -CC229AB85C200D785496F4B38C36EA8560F83783C6633F15D4668FC4362D7FBA -A61A4E14C5B60DABF087C389AAFA41053B98736DF675D1CE2D1369B56EA8EE8F -12044122E522FE9A489D6251E26E38B28D445E5827A20CF3C5AEC07A4BF40302 -3A1D9106EA76088D30EB921EB90D9B3FBBA18ED6FF6923B903A32BDAC5128387 -258220918EE014C4A2379C060205BC7D45722B6A21D820E6CFE458C5303F0796 -36EC7309F711990C1BC0EA0C0FC511B8561BFA74CD0F5AC9BA153EDAD2531581 -F3325C59FD9C73CAB132882EE147D830292220837AEC13C864B44CB79BC943B9 -A58BCE34CAB70922B38959001F9A1851427A174576FE9BA944D2BD56ADE4B0FA -80E311C321DF356A88A9A401F3F6F1957F73A10726F8473AFA9C28C81A7CF382 -9FC8336812DE5ED38D2366BC58301669F5CFA7AE99F7912E06A4343383B5F4E9 -706F519C6D65FCBB66F5A1BD0C36D523A42F9E28B7C3B4BFBA9918A66C12CABC -786EC9BC73F82F141FBD837E8F9D9E1C4E083E6E00E57786E13128747183F5DA -A049C73396DB206D2CB2DFD593C37FCFC563F3479CAFDF1F57B012DB596793A8 -73BC08607620077991F13B7BD66DD573A86F605CBE308EDB0E23A9175CF03359 -0E3946E1FADEACC1141D71A0C9F9E0C093EABE2F55C3422C259B2646D6A20300 -03A9380B54C533346C14AA7564414983409DD9E76E1D6BA04A18CDE5E4DF79BD -03BF5EB4ACF4B60081F8ECBD049A402E4935B7390F0C33EAD610CC84F155B1AB -69D9DF881AAAF17997029B34E0E9453B952C43F6B6744D9ED373F79CFC2D5250 -C3CE02C5E490600966AA9CD8D6787D6F0493D9A16DE94C34DEEEE2E634D5AAF2 -3E8080B9F347D0D40D112906A3DF0B4223A4348F58736462CEEB76EE1D678C28 -ADAF46AE0ED2D4F3D5599398E6E3DF792475FCFA4A751E398D4DB71CAFB39C59 -0A38C2952483D00454EFBADB2725CC71DB513FC1C067840C6CCBE1A5416E6836 -09557C0435084E9F5E0A316185251A7948E67706140496F730B3CEB37A0B96A4 -39B9D62E2A1BC32516D26DC3C45D00E7553B8F8F3ACB2F03B60381B60F2DAA2A -3D512897CB5A4FD0A59C45E32AD6503A99D5A75CFA90D4E786ED9102170530A7 -781F75429AE774418F78E0D6629AE9E6148D99F71115AEDAFC6C9FCC590B956C -562F4A1337344A5E0D7ACA076BAA008E389A9D281A3C9738F49394F3E23A6BA8 -BC62D7B0566D2C24A367E7D3C1AEBEF5014D8050BF1950865071E2E1403CB972 -3BE007D6F7CA30F04E57834AA19E1E967C6E770881CE27EA48B171E651E75DA7 -628B68BCA031EA13AA31E08ADFC33CAC7D1A270599B5F5CC00702D510F4DADF9 -F89D57F1366BC7D85313FA73C89228C75E50AC2397986C33646F61F2548302D8 -6337F84E957D01013431576CD9C6C5D2F082CD971CFF2EFD7872F35FAB90BD14 -EE4CC0B1A749EEBF09A34F860CA3C86B6B70BE35F2618EBC832A68016C9CD282 -CE74117531E8FAD950C8C7E1504D83E90A5A95E50994959620A6AA5A489F3854 -117323F2DDEB30B54C0390A13BC026575296E6FE94FB4508C2776FCF7B77DB22 -BB753A440A3670463EE87DD0427A4B3D2E2FAC95B99DB90DA35A6C2B585E6F40 -41E2094A07B40B29F16A9662C7FD3575A8E9BB5DD5D2C23BCC45FD8B75F5BC28 -9BE8457BA91D06174D9F7C116816851F86A50500DBAA7383019C9C5A52DD7714 -9AAD3B92385F884BC057977EAE8DE2329888B245330B9FDE301CA4F09C06465F -677A7DE41712E376694BC097360D2F635CED53145AF9569605B959092FD976F1 -6B0147DD63F13EC750B93DD35E5C6A9DB94D4375EBA0C642B73879566D7A6537 -AFD9A31635724B8FB58AB20762432F428EA1E4DEC18461DE313663CDC969426C -35EDCA2658924918E721E9AFE04EEA210AA7D0FB3A2DCB38F224BEE6F0639373 -D4D69396E90C076E0B812171CE37B1BE7BE7818E1A910AF8609AF49EB2650673 -6C25FB6E3E86868E833FAFDACD2A97765E395D6F1E252CA311A16A1509B3E84A -ABF4AA15DA4158D971E0D4DF3FAB415B03092A98F7C07B5FBC45499644BEFADD -2EAA13C18685F4E4EF3D3D43C92AB9B42D2870C339ABC6CBA3C27ABA38C5D135 -DEF3B16CA1E75A3B9573D7067DD390CAB3F9DA7C2E67833325DC57D39B1DCD44 -8DFF73C0E89281077F529884A9A256B78DF1F8E0871A5EC1FFE2A5DE7BFCB468 -9D6C5E48620EA68CA19C5D18901C3032ABC42B8B3A301F8DD314512CF904F479 -EDFF66D5904D0068E43933C6C46FDD05B2B984496E8E53BC6A96AD60C6CC21DC -BE657CB2AE8839DEE243E7946A368665FC6EB84262B41815C1908B78C0589C8D -D34759D4EA392F2B94AC20259BE1298500550B6C74547FDA814DC31722DEF159 -650C13BDCA71E908182BAD4FF83443668EDAD752CE0C4E244300F1A897D9DF45 -8DB4FB909C1036B8FA7AA98626732F69F024E0D96E7F40B19AA55E339C15DA8E -D7053F237207D0639C2877254C59814E884E08E667EA3FA9EACE080454761E73 -F70ACBE3700699F6802088D73E73C485EAE9E64B58BC4D6A8E881DBA71E00191 -F3AA92053588E73C9084746CE792C0AF8CE34B24825AC8976AC3BD12460520BD -EDCF4F2A8DB299E94992967FCF870128AA9A2E7747A42299CBED9D3E8817A6DF -4CB839643999FB2B8C3CDA64C1B25CB64CAD99361B8EDDFC68FC83EDC5CA82EE -0BDF48E4D33BC139CC43DCD04B2B2642ACACCB99E7A44724D6C804BBCC0CB2B5 -381AE4D122E243BC29D3A8F1681D5EB106A4DA37F650BB761CA7FC7BF5B47B62 -F2C8E2347F0ADEE421B64B5ADB4BE6D80F1C582BCD18B92A79C2ED805EF83D9D -C9ED83166117B9552A061433BA10F87C39AE2ACC945C1BC8BF24762F9F2C7D83 -7A367489D75E0F6AC4F59F8C867E36F488FDE8DE50660156F26FD013BA3C90A5 -76EC94F0FE765090E78C13CE984BCB2C5245F44E9149400DC6AAAAB3E320680D -1C934A07436D45E591722FF154BD143ED9F074CC8D244530D1BCDBF77A708DF5 -A42907A3EBBF807D03AEC70B39F47B55F91870C5978E21658520E8BD3A2CF6D9 -030A32493F390BE775B4B6B6122F774286BC20D7C6A5C9EAA6B197B7F7C0E9F8 -A4A4BFDFE26BADE0C342DCBC9FCDADB64B565A50FBC8583D3A6E55993CB3DAF7 -3AAB1E30B48DC16472BFE4D7960659526B3CBDB3EB4DE3EAA8D84438B38CBC70 -2898F3B043E97C5BA639E38C5DE3C94946AF6CA31BE291A4333A6C1B7AE6924E -123FEC09B9624040126C54157B4A255CBD2314518E3A40709449851B79B82CCB -A2E6811922CF7EC6F6A9C1D2EC2F23E8F1E2F85B6F886139459554FF0609E2DD -419BAAAAB1EDB9BBBDB1A6387F40260C6D3A72EC49D9706585996317BCD845F3 -09F0CD17B82EBD7EFE1150C45437689A276C5F31B537A70FE42C1F35B4879280 -A06841FDFFD2056300331E5BDC2DCF285883247A5ED6376FEBF879CC3A8228BE -2AB9ED6EB579CB54FDE0116A68889D37B0DE18F3EFC83B0ECE49CC63BFE00BBF -7E1088318F4D429CCC6212B6D6C43EB151D35FB8D4898DDF7C07465D45237817 -FB7185D719298F94D9E547ACD938095CB2BDB9247EBD57DD2E86D04744E760AE -25BFC68141C64C7D23C5A9BF99791B71B9A2FDF3C0884F4AFE3CED51DDF04FB3 -EC9D8DCB4944A7791E40BF0FEBE2E1D80BA85569F4239EC337C013592FFEA905 -10E429746B2106108FDBF48C407C82D66D5D87886520F1538A9CFCCD7083F6A6 -D1F86588814E0707291AD77BBFC281C7B65A0CF008864BEDA5F11718C43ED544 -C767142BE54C640E2040BEC5D7367E8FF22FA9D839BC807001BF73528ECB7FA3 -3CB2207F127206FED87645803D9BAC5E8ECA8E8BC452586F8EC22168DEE55BF8 -E7CB5AEC4085B3E25C46138E3E8A98552752ABD6B4F8544E80067B5970565681 -A0F39BBEF5E3DFD3B79C052C6436586A9683FDA79DEC1491ED109517E3881FCD -FED3B5010F685C24DBE34E0CB63372E16907D843A794F445D5579517A64CB508 -B01B2C2DE005E05B4D01E46357F5A405B441DD492DBF7A959933932518F26DDC -62AC159B40C6B8E840146676138308A8D67683278C19FAFC7ABD1B9EF85DD21B -40AE84A583BBF306AE3AC4BDE1985CF1E8EB58F037F2BED81C8CAEAE51FBD20F -9251DDF379A40883A1C82CB8FAE99A3E18C471CF9A7C4BF127ED1B417842057F -7647123712ADF67936F19A01FC648D69E2817422FE5890D13ACA1B7A22CE84AC -FAD664800CF12AABFD3A891075C60B8602091298B42A5DE5C8BAFBCAD0B04762 -2F7D22A591AD4FDCE0B3B70C10AEA586511955989F55FC26961E6D1E2CA8CBD0 -278CECD6F7719B835F12E8AE27C7EA54BD83F367F5C20614FEAAB3BCF416B273 -4EA6F437442CCE904A40144981A55CA8EF59453CA378EB5161CFC1994A742BB7 -5E1CA866BA9EB123C3D4BBB76713A9A6B93611A233CAAA321E426D98E481C29F -589E51833C6278451EBF621B7F981B96164BCBE69C47B2D5D7EC4141E62F61FA -EF6669278B430A9AEEA910F8FEFD454178D63C9BEC694A79CFC94E413947986E -E03A7A290A4FA3515539F8C14A5DEABE164D28BF5500AE9A6DD84AC56F87B024 -CF83FC1299F514A6A879E5B7FB45CD52F6390F888B5CBA28BA3A14CED46C1062 -8BC5E05BD9A1117720211165EDA80F48267E8D1E5775E09772041B5F052DE32C -8FFBEB70CD8DBF01E9CBA4DAFD2AF4E44EF05E8DF2EDFC1B920FB83BCB147526 -1CEBF3B3D75AF9BDCDFF081CED6541D9DC32246E24945D724DC1F6F8C1113FCE -29999903098B4F84DEC6C4F882DCC5BE44F6A9A077A84CCD2A6A2E0D290A571A -16A61CEBF9D64CCA429D7D6604B3EE3FBE01A3C1BE841F4AFAF63DBC7E26A67B -8C8C6549D6FEB8E45CF8904341B7C279B9B8E4E683B7076BF925998A123A1440 -2A8071214BC24699040624EEC902F55BA0BE2B2C99962A765AFC51D29575351E -8BD44A480E95112DA49F8BD405967FC8C12352F766498A847560582CEF4DE75D -BA4F8C1F4B42D1BC32D6CDAC8B596DC7C5A8BDAF7B74412EF2DAC7721A9F6352 -83AA212C6522B0F4F25D51FE4B2FB032ECA88CAC112C115FC19C5765C1115CB0 -9262BA4C55F760AAF4A11F12EAA146470A4DB6C79CE56E80098738A6D9F892E6 -0A91B30F1801A86D537B7B5D061029E62F08E93EEBC0B56BC1BBAEDBD78F0614 -FD4825A43276D223BD493CF558FDC6207B36A39648E68E6B17251767892A542C -B39DEC514D12CB8CF895DDABB829256AA29C5AF02B96348959944D6C97BE5BAA -5F3620B514A6BD5A310476D9D3BF80F361CD531A7972FE0CAFF59FEA45D517DC -0E46FDE22860CE37F8A9C13EBA2C093A40DD4F86EE760AA43A500194EA5AAA9D -D0549F2D3071CEBAD7EB9D2112CC910586DC022342D0B8858AAFEAAD82C6DC36 -F2D6F78A8F1B0C360239C586ED511BB5301C074B27F94651521976CCE9E1CA83 -3903752BC8195047DFA846259325A9629E5630B3200D16A259789E184BC91FC0 -F2ACBB673A7F0420EB58A04DD4EDD1E8070E442A59C383D9E7689820319242E1 -1B92456B6AC03C89B8EFF42E7E7870D48F1A733F95CE3E604F65630EE016AE88 -3D39859EE3B869B53D8DBE0A9093EF247D53A7B7EC5D35334681F357056EDCC4 -62BE002A49367F2CA351942363493891220B00713C38D31CD9A974D2F08F3F22 -410D4BD87B79E20D6AC667832EA25E410DC594EA91B0BFF912BF6268DC7F4625 -2337E04D29D90F1A8EB0AD7FD00B9C3D242A73072DAF4844A53EE698C367AC52 -B8274F9B95A48FC52988F9D5F3243507C1BF3863385FEDA1BC97CEDA7B9B6521 -D9BCF64CA2B88CC697601F1B5898DF5D07BF064012207B5EF5C349637FF0618F -B97FE94990E42CA0D75CE9670E8C467B49ED55A329B95A14D79012E46746EE42 -AE646F3B99CD57E7996737D502D1064BEBF1F1AA1DD726162E32EF1B48AF03C1 -17D6C86B4D1457ADA3759EDDBA0E78EEF0324976CF8D31D0DC68C4DC69DF5888 -BA6C6E7B37218596825F013ADA779158999F8C8FEF9B828C3074E412CDBC4F55 -8B3B18ECBCBAA9DCC0A2FF8ABC86D2D84EC138986A37D4767FC1DA395A775220 -8D27042583CD3A6885A07E2D8CD14603A53B1A21B27C331AE63957A559A66D69 -CA94CD5BCAB722ED44DA9412FAF5F6F112CD6F5D8B50FE80025787D9E324822E -541D485498271A1F082F0D35F3D9492839298DE8B922CCDCD2D3ED1574A0DA23 -0FCA83FB62BA4617639929A43234876B7E50D658AE61B0FD15F6F4B789252BA6 -47CA59784F1C6E225AE4CBAB87C871CD72BF1CB830A39956FEC9FFA4908028A3 -2069B43A35672917070C98F4AD43A62DE79301A035205237C1E0E9F8CBB9BC7A -F57013EBF816EF9DDCC0C9DA49508195925FBEC09A4A7964672E7524BB503DDF -FC734B8BA116B1BE25BAF5290A8819DD2AB2FA94BFA0D9463B2FCEFE2F9CC2C3 -362B2A738070B39ECD6AB0FD299E6B64BFE25054904BBCE3015D70532836A6B0 -ECDE5F04DF46AE1399A2F4B506EA029C0F0BCBF366C1928DE388A8DEC79C4E21 -31845F4A75F706C0BD4BB929A2600BAFA08BCD6734A73C59DA145A66797A2404 -7626CCD5E8B287B1F6D5629E3B3BFF320F91403BCA38FC73BBA882D94B30284F -694A2DF5BC3C7762842DA0D072C4EAA4EA2EAF4F29B4EB59E473789552FD9A29 -637029E849322884CDB3F50EE84F33BDA5CF8D940445A6E8605AAD0A46C5406A -04C4FDD7133997266921F3EE980161841337090D127DF03F34AF77B9BF60010A -129C9760B71E55F8A1C09C55A01A154969EA3A7641C8F73EC48003DA57758E6C -F81FA2808A49BC10AC66818EC2321AA8CB39A49E44F891BA9A06153FD4649095 -ECA8ACD3E692977B94105AFE083FC090E610E3DC57AEB7C5944FDCA7756BFB7D -34877C72D38ED5015000220D81686D3287AB89BBA64B007DC25CB4A6D6A75862 -28D3FEA9E6B95D54B2ED1AB3568111C84CBBEFD45CC0DE8E86A2CAC84AC066F9 -B619BEB0BC881BF51D2E3E63B9AC95010FEE166D815B3D4A9832A7891E56C2F7 -34F459081D07B2FF7DD537A724B9B29D37725D94CDF7FB8C0CF83409F29D7DC1 -7345E7B5A66C2D41FB242E2F37E7FB1433298EBF6283914C908AC2BA6F124608 -7D67B247A38EAEE3FA5C80AB78E9E234F0FDFF082F3CF3CEFD4A638022F3675A -BDEBF1FB7E1182CBDDB02BE26F81935268E9F7FB5B445ECC31DDAC5D7615D3F0 -F7A67FDA2DC741C2B0BEA47086C9F3384FB5B6B5DB4407DF6C0B639025EB7DE7 -9EB85A13AF12B8D1F85932FFC87C70052CA0E2D0A916333232F0C570A048E318 -C2E59CD67E649E451EDB62DD4D5763B22581D43DF50DA72D6374B96F06D4B5FB -A2BF3EF609F8C9A74E37E65C38E398B1768AD59F5DC67C91E9C4DF618C201F71 -E1302D238E99D3C511EE52F9FAE664F984AF22CEF9F3ADF13D36FB1218C6D384 -296E7AFDFC0BB6ACFA0AF5B3572328192E82797681A10DE036501EF80BA166CB -244D312D042F32F12D8A849AEEBC1E4B6026851E1C2B9F4081BCCF5445B6660B -8E66A47214D3E39C68DE0FA26B6D5656716967A9A3646B6E2916647985199AC3 -9727B581E8B1B313D36F5A237030965A4129743DAEE19509A557118212026937 -45646A77F6E2CD6E2EEE0832F056DE348FE0888AD47ED0FF91E6B7E43958B440 -8217FF563C28AF954F2669EF3CC630C4F4BF782F3EBE4BE174A2D14C5EB57CC9 -9776628BB77A213D36D96696E6BA5FEAB8455F36BDAE26EA2B5F341A309A8166 -095A826D8E788CB44B7688F4CD2D86278D130B9250CA25F25B60BC1E5E6A4449 -F718DC6F4316EC61E863C2D69810ECC143B134929B21BFD5CD718EA28658661F -1823E20BB65653CE5678B8A44E66A6D75DE1EA612D492F52CB1DB757CD8504C0 -04899BC85E53BE683FF8BE68EB1458CB45E71339BE3C569C01675E13627E8E1B -498D6EFB5EABDCAAB2B6A4298FBBE7C4F33887B1B17E9243E386B4F51257C584 -6800EB53B7D324A6B06E3ADFCFA315C1DD509730DA5CB68CD4DAFCFF51F401DB -9E8CE303B3707D635AAC3BB630F8CDF2AE8F9868DBA9CEEF483F2BF9FD2582A2 -4902F90A1C5B92E30F507E2B34E760D2E2D6C500B2CA6FC6F8A1F70C69641295 -0C4AE3E39F585AC52727C62480C7F8538C7E5793809D4DAA2375ADC2B523C5FD -6C0A20CAF26FC974CBFAA310F7094B4EA5DB158C17C1D116DE562D42CCA8AE85 -553F65D6EE166EB08A30F1D86AAA7FCD86F37FE98B1FD86D42DCBA22D5AE708E -D3D2D120C0A30820752AAB84018FC498F67A493019E0BB9301B04B403A370B02 -4D1061B0451D3B5A6E4C8AE111E07A6C5802255F0C716FC7BEA55EDBEE20AEBA -6FD7250847E18AAAF41E0B7008C01C7721A7AD6F739AE1A79D1105D3DFEC7711 -A5CF05D7BFC28AA27FFD1EDFEFB706CAF476463B3776424B1F7F8E0A9C9E71AF -A7C08C94636D74BFFE5CEA7AAF219DBE41DFFC3188983B9263A8AE1ED2B07F99 -5482A6C02577535863D2E9632EA2729ADBD4D5B6F26E300EB093E20CC341AEF4 -134AB90BEB7E6EE96BE51B2B369F57F26E05260626504CC5D124137EC8EFFE68 -4EB3BDD8E5612B35B4AB36D1C5D351D4EB505289DB20F3CF5DE9ADA6E248CA0F -ED03ED6DAE1F87D72F2A12E709DDE5DD5BE463C6D37293E7757D310887AEF858 -C77B640E0AED544F8AAABC3DB13A53E1733935BDAE204F4D5DA0B78A5E1F095D -0142F8A7B733E2810B35078BAD71CB81C38FA4AA55FD5ADFB75DCB8028074C0B -9908387ACED66DB0E276A3DF185C9767DE2EF1416C06A18473F364EA8EA95379 -504522446EFA99061121BB82284A19A86A25BF9EE137EFBC6860A3A0E742793D -3354890CE8E27287D376E0741FD56F9E1D267FB1BF4529EA7C741C07CBA7CB10 -E579C1FF0C6C79998E878C1D77005D3CAD64BB44D2A569B6263C047FA4C5E6FD -A8F5DE9C7789813726B4B4CDFF1BB42E3D170639C25DCB87A51394B4BF980C18 -CBE6FBE545B60E648C9CC123C76CF0747DF0608DB71A896203D46746511FE16E -6A9992318489A53521D0C39E13B161CE7CF1CDC0B4F496298C87CB2236BE32BA -37D7A7BBF573AD8A58111F53990F8D894AF5DF8D3DA1CBAE0D5FCC1D3DE945A2 -D1B66BF07B6D07CADB63646479E790B667C063FDAB3FAEBBAE91352357AAA4EA -71AF012052ECBE5012A889A8E87CFFDFE91B144948EA0692F389B40880F52072 -6EBBD95DD71439F0B20E6539AB27F19FDDC2EE9C2FBF2F343E4B3BBB55326878 -EF4551B426DCEDFA238AD4D9F217EF242C801466F7CC109F44189719ABE37170 -DC219172DC422EB3ACD828F381437D1E521B2CC5C208C4E1806671912B198DC4 -2B6BD090C443420EDB377A04E95AE613DBF39608CB0EB1FCD9FFC310AC33B46A -101C44AFBB5AD7E393CDBF13C02894EB1999E25390EF0834FFD74395ADC9DE47 -55C2962AE9B64B227777A76CE7223E56F70AAB580474EC1480A80F4488F1EDD4 -E88E48F963563D00E650C8FAD93F0B322467863982DA3FC340C0665EAB586975 -70604B7D14C85A3F9D4A9E35CC1B064C93B63B52E73F18EAAA30CEA0F5BA0588 -934BB8402DA346C060C2CD5D1F9CF86F531C519BE17CAAAC99E70122E5D7FD42 -9D18B92C82894112786DB1C19EF81411EF852B9F6C2957705A18 +30F0D05285D6CCEF1C6CFF8FFE81F0E5C4D224E4DC6102F6A1BD5C2B6D3C8869 +667B2B2879127AF21B390B902894D3513791F49EC4CEC8DDD653648B5EF4C262 +8232A1B80899EB578E098AED393A9FF39A19CFF30F61026A552FB61F4403F6A8 +5D92496F5C099FE4CDA386EA76573213702F9BB8A7B039ECD80223396BCCC8F1 +98713A48A89D951C13DDDE965E5034E27B0679CE30D50309E9410A3BAC7C4927 +D3CD5D40DAADD9FE246BF6237A7DD9EAE3C381935D1F472F8B6ABF161FE53961 +64FC3A5AB258E3897AE1A00F45628125AE5C2698517BD38B18F1166774B376D3 +0546998F1C6A8DA01FCB2E1C8D173E1A2A5134AE4283C62993BE45AEFB04FBDC +5BC8286538485B6F0082E9157CDB615A4353A565557B6EE8F219D5B31F61CC2A +10A43AB189DE20834586005EE6C2430AB287AB0D4463E2B5F5617A16C8E0D922 +8A0DDAF4F77E01AD9746D510ECC7811A20CF6C98F9C7A8B8C50A94E973BA8EF2 +75A52B678B8E5E059C70CC6336A9680915C5A386DDB2DC69B719C13238905182 +D24B2AFD8B006583DDD6BFE44EFF261AABB13004EDB5DFB63E8E5BFA4A982360 +CA92D65BF31D2B5FDE6C651FC361B8F7BB18946DEB087814E4CE3E9B94A84D2C +681DAD2939F661AE0FC27211E0049E3AB1DC3C7638A217E2ED5E76A0BB223BB0 +F32738B078472899C502FC6B5468990FDA78BF8B4C9A14CAAB6D62FCD2B70515 +E96578939BBFC1C18699060B6763F52FF10CB98C1F25783ECD92FC90DB893CBB +25CA4621564EF80CC7156DEFFD3C83D94BB237D4314D5457FC6A618A8752427D +146FCEAFE8E8A1C2A08347E406DCECC9C69D2BC5CFBFF1DE9512FA3352139E6B +51A13610A4EA061D5EC51B112880CE87D938AB70BBAF5EB0FFB2AE497241D52C +0908CED690784DE26C2C10C4693ABA644D4DE34DC7FD54A952909FE988C909FF +4721707AB8DBE2FECD0B987AA73C207EF1B77A563B5577BAC80FC1473F4B1DBF +8CB6CF99DC770B386C67D783F3877948A8EF667272BFABBFCAF6C94656E9B850 +7B8726FBF4E3C1F3515FB15957B6BF1EB381863D56B421F64A5022401DE00CA8 +2A928D931C9D457ECB9FCCAF57EAD983AE071F568CD039274901D52A3A9B1D05 +12885BF6CA557AC65A3769F4B90C3C9ED7E0CC0CC8802CEF9E13170531FD2B1C +D2A6304B880869696792C1D8A50FB4B95EF9E628581E26394C4309D51DA04835 +6623BB3716E64E0A2B9D46FD9AAE7E47480935A091CFC6824FCD8EF9AD6F83B9 +F2195B624C2940D7A380E9691A3B20D2310EB59E41DC22FBAA23E9A0B695B2FC +238AC8B56090C3494CCF91994D580ADB71E7213CB316287001B8A2878F2F3C1B +6759467DEF855BB899F6365C85195B6813040D461536DA814D59501C10F64DEE +6F51AB8CE95094CC72AD3E1F5EC3D561816AF6A8B11BA9199933B76F76DCDD8A +C1899ED67A2E650476C32A66808F9416EF5317B4F86975776F9F2C34466D886A +5BEAD62B5023413D24B80131165D455322B2BC8661EDD22CB7BDD50FC18C80A0 +946DD22EA7E76555597756FE6A172AAA2841071D41FF0B0CE92A64B79EE24EC5 +A2A639F7AE08D8B9A8A7514A0C780580AD847D597CA66CA95B54EF64532C21EA +1670A8660F986CF209F7AF70049B7FAC4CC0AD7D21C47E755A8C735CED420F8F +FA9E98C6A0E501E54370C2C7CC45D1578C20EF812E968B6BFD9196B92054612B +1EEE75CBBEC588F2ED8A4EEE0D378E1695116A2EF5618FADB7E1DA9B4E4A18FF +D11471F644171EB4EAD0820703430053CFF4EE3AD78813B7C289121988240CB2 +F48230338E5B7DD63641A9937820AD9441671BA15E94780A8E1E21B067D4A0B4 +E25C9285C47FAA78082E5B3234217EC9099597214D764E9906CE29C4EFC7090D +9BB0E8911AC5109EF272FF2D0F091CA05C97F87121F685A0F9D39486B5F76301 +A73E86D2F8A581696A0DE01E39DE172FA19F3FC26A8DC97E04B45A4A231BC282 +21C03D6ED9134748D2F09AE1E7A16BE288458338D951775B3EC5082DAAFFCCC3 +246F4E15DFF480B7232E2948CD3C5F730C508081C204649568405178BC901AFE +A59F3DAF0E5980FF5A4E586E03F7C46C9998048375ED9F3B8AA38206F149FCA8 +CF5EB7605906EF69F7D5F4D41F59F537ABC877A271088EC1D4CC3C7C33760EDB +314EF716DDE483C47AF31353210F0606FF48D8F3A2620B189C5A8ED71D56F7A5 +023356741A236065F59E4CAAC584A5C230C803590C4A7394AB372E95637BCA78 +634EF8229A4C77F1A875059810C5BDA94B9F01BCAFCD8F26D02AB64830A40A0A +43757AAF9E6A4220CE7F478928C37DFE4B90CE863F3FA844FEF96524BD46D254 +3E30FB670EE76690A35D23F5A5BF59FB4ACDAFD1673EC0464797A903187D0D6B +1C181D73036B93B76B9AA0E62064A05B414E6FF2C16FA9FC17CCFED02D84381F +1A9FEA5C5728637804B7F67E606DB3FAE4C43DA1FA18CF08744C926F631E26D6 +7446A1E183F83E4F25A1DE899F9BA59821E6E73355F873B9DEC876AC6C7DEF45 +7AC3F1892E4647C5442434056C1868AA6202C58EDBBEDFF39236AE76D8F0AC2F +AED3039AD6885353414BBE496936E2B07EDC8583073464A9CC3469FE08E79946 +A2253404518CFA39A9FBC58010DD369DDF6584553EBD3B1E14F17B79BED0372A +2CADF9494BED1EF953288F97180C207155849B6D1D9BA2931D170BF9C30B4B07 +CB62BC4FB3E98424F9B278DB66114A0C5F76C4D9FE789C42A796D5669687AC4E +C75B7E224C69DA6507AABED8F87B7D7F80E456D81AFD08D49F6F0A5169CE30FF +D27D2197D922C9BCA2103D0460B92DFE05BAC7AFAC00BD486C0B1DB5379C1FAE +0BD3610A1DD8F3D90EA88D22C90B29EFA2F15F297DA1C4ADA3F085BC07F838B8 +9398992BE46EC49DAD78DB55A7D30ECA9699624C76657C0559EF59FFD6478AE9 +585567E6C0739A17790256DE272FD4B96C999D43E77C46430BDE8FEBBA71A76E +A49B0516063CBD4CBFDEA2DB98012DC4FC065D858F16356BC79D3DA14C665291 +ABB11A66D6F7C21FA8E981E67A285CED046F516010A910C18B7D678F984E359F +0F586D1FE0E045F4167BB76F0CD9E129EFA10FC3411DB8B4B8D3D308B563F53E +54D5F884FFA8BAA6643253622C35C99ED194238FDACBFDF77D01333827EE92E9 +2EB65A94B93080933C0CE64FAA1D5CD2BAD24147849986B02DBD6F43F9C7F96B +E9AA76A45BE891F45C1AA29188B7367D0FE265D1E32FCAB6F0AE8E7E9E2FD7E5 +821642DC80537E6A103934A6107560735615686E65064A8E16C9C049C28EFFD5 +FDDFDB20DFD9DF7BD07FA7E06AF451F54A44A2473E33BE7F6BAE6B0BB8F2835E +A5E169189C632A96FBA71686C12A98DD976B3AEE883FCFAF2E7E6BA82FDD3095 +1EAD1F9D3DF7B2694BAAAAB702DD7F1A7D0589E8B5D6449F34B6917281FA3802 +A3D998684B91DDCC78A1751D369006553F68B145C4FDD26591C66834DDD271FB +25F9212870BA0D10259C982D22CC04FEA69288CC2E0870329A5C55A0DC567C49 +395AFA2A374D32215BB130AA1571F2C57B77A67F3334427823569FC268C210D1 +8B56D6F3DD6B483447692E59D08C9A8473BA2A65584FE364EC6C632D6C4EF109 +D1D9E6A84DA4E1FA0475777F21325A8B7C7A4A9EFDB5721B41A7F9FFDB2C86FB +E70A5F483D78371EB600F6EBDE27D9E95EBB4A45E8F224B3CEC16C525E86E02D +58DADC2EE818F32173726A9A34F5CEDF1C3B4E0D61A6DD7BBBA19BB8547C04A4 +A80BBF117319FEB51EB3E2577E3D2CAFCA7E3B041FD5ACE28631CE39BF72207E +30C0D79C490A8C45A95895EC461AAF8CD43686DBC0B1D368C6B7BA1911E6316C +778F6AC3423EF417BAFCBDE368C86284D265A406FFAB35DDBD4FD4328B504260 +4A8B096888215D49CAE6399DA38542D221579377B92F274F807440E9328F27CE +F0E97C0F88B80BA6EEA749A3D70FFC871DB7A2F45A2351349132C4B2FD9CAA49 +E4BE537834908A23BAF0F1AC0EC31D85F11EE7358D1EF998CD94F4E7A90D0B04 +F9B9B16E5D1C62109E92F204E8D49A5B183CAE51F02CB29361FB3A1EFE0439B5 +5E362837296C122FF37A08E626D34AEB2375896A9E69BCB12C64C2B969380DF8 +4387386CCDAF7412BA6FA4218477212D7E3300D73C775AFD9B85D0DCAAEEE2F5 +50458CC08AA1EF8E1C165852BE15EB560197BBE7F17FDD72785A14219EC0DC99 +2B48F163FFCAC0928ACC0C7A58AF3EA525A94D937BD6327B80F00C358AA515A5 +9D7B7B179BA367D9174C41D17CD6EE9EF423981DEE95F27057C446F4D96D74BB +5903D7A68B20556E178F9273FF2FD424BAEBA22E0771AC1340D6B47744D5296F +F01677472B3996D658C200384500556FBC0130258ADCD273098F6D624D1C244C +7300C7E5180D3A6DF34D0305E30AB0BC0B0DF2E84EA00FFB50BF8D22D9E916D0 +06A4A83222A1E509F8208838F99BEAC24C915757C8C13343BFCDEB27C83F03F1 +1835C9A2701CD47EC8AD7281293B1DEBB7C79C8AB575E69F8390991F97401C28 +E01DFDF5F0343FCC5E2B370589FB2896942E796E2B5ECB339CFECE60B6AF794B +A17C7FC24F42B7AFFE9FD8EDFA580B613E00A125FD55CFBA9BA56F68BAD581D1 +47BC7A2F7EAE4DBB04ECA8BEB6FB6922ECFA0685A3B8B667C8C80D8094124E6B +4F126E60A56878B8C6E46261330AAAD66C13FF94C0BBA40EC670C2FDDE179636 +5EBAA95EED3C597191B35EC29F228E22E266903A59242E89D6EA9327ACF07602 +58FAFB707D0C5AFD6625A49D514A9E3F811BAD80CDF210F69C45B35DFA918EFA +43BEFF62EE8D58A5B8EFB486A4B57401AABB3578289BE8804C10CBD55DBC51FF +72900B2318BB3A97E08D8EEE4DEAF03A2CEF667BDB6CAD59D1FD1274F42B55EA +075E2EA3B3324F23D3F8DDDF905C872C13154F49C1184D3E8B88F1A589BEE0EE +8213325A35BFE718011C93B4F96E47776B96C1F36040F304B503BED36794E2F2 +009FAEDB3EE212590CEC189A7E55EA8C28BC72C96BF822AC7C4E1B197C897992 +EC87737263EC1167A9BD966FA18CF6F1B3268D5C23F11236150EDE4BEF78C825 +24760C8F2F0029405D6E1351CAE05B3CDC8EDE6FEC60FA3242EF3BCA1370F722 +C6184A8E1AE4DD3C99D2E10151786EDB3005D8EB86237C95D9451F8BD7C0EB61 +260CF7F1FDE38CC87739D43139A5FC03F704C42E47E1D7D9C17AA3436FA33060 +AE4F2368E1624DE32339361D68CFC68A3CE224C91054D2A3765B42EC2F0FB75A +4954854FF0CD755881A3348EECAD8DEACD7E662241C276A41AAA03EF875D8F29 +3294AB0CCBC6DC09355174943702F9411B1B4785770AF9A666C0A6228A4D708A +137D2C0FE6CA7D5BF853C504CE85C471D81BBAE73AF72E16045921F580AA4826 +84A2D61DCD11A149FD631360CD4954AD902B5CE385AD72E63508B6BA6EDE4D30 +661FC6E77CCF2D852894C509AEB93A9D135AD74509697EE3DBC9AEA0B1522975 +548B4A390581343E12686FDB39F1E26A4D894E98408E0171B11252C3EB03004B +98A695FC743B94DBAE28B1396C984D2235D3431F73C42D6F5E9F0FA1EC953113 +65168137774E652B5793C1DBB0C79D2E8C9FBCAB8922AC0B40475F7F19F44FC7 +D8558EADAC39D802932C12AAF5E03C36B9F4AB2C8EF4DBC207C612448F122014 +FAD87E63F1CA6CEC17FF8D99BB7038B80C20C77112DEE28F0025995DC62AABB0 +C47C4020DB7D0946ADDA0E011D7141B5E000DCF1B4DA00F447351D2C8138626F +8AA3664BA653A9AF9846A43FC76AC9A1EAE2560EDDC4B83E95C121CDB76C0BB3 +346AF6D7EAE8C9DBF6843BDAD8AB42FFD060F7F5C47571FFC95E6BE1804909B7 +2AABC5EBBEE592709E1A2D55051837B82006BF5A037080FA395B166749062E9D +47ACF1BB5C1EA652284B5B48E703B52B6FD85401C281CA6E6F75E3A162B6A023 +39F2A5331DBDDCEB19D9D7588818034BAE3E216E1E30AC813E8D15B0794E964C +CCB6ED09F3BE76F56797B63F3D5A7C03F66F320BA2B5F1664BD6B76C8F0FF7A5 +40AD7737DEB1AEEC9ECB873A0F7266863E743A6DBE0A38A10315854F6DBEF4BB +33AF4A9A39A4BB920DEAD5AE3C1D96B7714002FAB977B5450DFEB7AE4639D414 +79F88C0AB9D2FCA19854C513233C1824B48D65088FDA64F504298A025B2B6FC2 +7D2780968543E0B50F0ED6147D29ECF2CBB557F0331066B15BE35A94A94488A2 +21A66FCB70508D822AF1E092210B3CC54F21149CD2A534062EA2AC08954AAAE8 +09AF3500C055B15B2477D23223C1D6DB2A20AE78BCE0811F4B123EF976C0A79F +854E4AC7C5A2249FE4201342AF4B6EEBCEA08D01B605916B0A65F0817EE1AF76 +ED6130C839137976DB45570E5EC1E8B18B42961F40229EC822E079605AD17483 +6141028AA6A70B5CA81C8625AB73597F855ABD2EFFB65959FAED8CBDA920CCB5 +9D12A328E216B07512A53C7F1DDFEBFDA42877744D20B0BF890C6ACE8BC3C435 +D276C31BA87AABC50A46D1101920812525887F866EA5C17E82387841EC42650C +106DEA09C3D58C1D0BB9CFF3C1A776A591B0E7F791CECA268B953ECD617B8853 +32A89324F7D7C96BB52406A0F4E40B6B9124E774C1955A358075CD0C7C56912F +4070BEDFDE8B8D59DC1B26AB80A3A891D4D1536D524DEE42CA2B54C17D54E57C +23D9E642928ACB0547D592FB7B2A465038A20D585D2B40CA90883F46B50C3268 +835678A37A3AF06ACBB0EA15B1F58CB9F32EEC7DAD0F6D45EDF2DAC394054654 +31C213DAB180F099E9E84578FA202BD689CCFEC72D31A86FCAD751A025CD2A71 +F437A3153D5A52E112780282902259941FCA4AA4BC9C519E3344A643A11B8A6C +0859544CF205380EE8D7731CB3408824152306E292A01C6598FB5952E4F12E03 +7A59257625EC23C38E8C8755BC85E55BD48F6E982B60D57A552E35858AC382BB +D90353A3EA5963D08400473906798D56AEB9BB0C81A86E688A8F1B77EA854BFE +E2CA0E3A72D48A7367AD19F83C4445BD6A449FD7B36560DA9E4F0F0DA54983E5 +5560E40059CAFCDE80B9DD2559F555BC39687E243BDCBA427A4B3D2E31095038 +795C41F6AE47AE2A3AA6F0127F97E538B210B444916FC67F76445C113DAFD0D4 +525AA5382A5D1958276BD523C9BB96320ACFC8B4FE733B35CEB41CC11AA066A6 +6908CDF57794C18119702BD993CAACBB7D9E6149F17964E96A0750D784786DD4 +867AD2EA8B0CD39186BC7639868DCDBA9263126F0F565C108D9B3CB2484451F1 +9ACF24A2727DECF228ECC9A2E10CD99B0525415FF5F4188C67BDDF6B3A82F6AF +5B2911AE04AB64F7853B54962812173D8CD41DD41D0776AA25CB48E989689684 +0AAC760219EFD126DA135D2A453161397B7ADCA897656EFD09ED29616E9EEBB8 +39AAA4D66E6B406574F7FC3734443235086AEF9C8AA96B1E3E7C9A3E28485E7C +0026FDCAD2AFBF4F8ED4BA6F9862D6A4F1F9AEFD3FFD4BCEAC5E8421432257AA +E854E6464410C5A8B7E1C32B524D2B59186BD90B8CE0A75456ACAEAAFF95DF26 +41ED32B12E2815C83F3C7F17E1414A4CB204963CAA6A4BAC5AD3C5782358ED71 +6033C289134C84A0FF2AFFBA949863ED5BB8D886AC9309F43620578FD828D2E2 +A1318DD20102208FAF57863C05DC85E5C33577DED67A5F70F4F46799F52A8B14 +83E6E51C27D93C807ECEE29850131F2ECBC4F2533EFC8460CC1FA35A610201CF +62ED6D564DFDBCD19E1F8BE7B38BD30286997581A124D5897B08E5E4517FD0AD +DF14758077D26762641E1CE5C1AB8E202E91174074D3DFAEBF1A41D78A8C5329 +627A37C6EB6902FF585565D7E8850A60494A86A98CAED7BF7350C14907E065EA +AE8ED9EF06EFEAB84E0AAC9E7C20FEC88D19092C52EF368B41A170145AE2BA5F +703470171DECCBCE4766BEC9FB055167177E72260F512F5B888E6F0E0EF876C2 +66AB6FB71C408A39DDE17651FFE7EC7DDE65E3AEA041CCA12D52EF695B2616DD +AE43FDCD3932D075556D53B6AA3AAFAE7AC38EBC6AC338BF2376E227BE840A5B +2CA9F73B1C49916C93E58EFDF0B346BFBD218062C140E5C2B76A412661D7742F +732205A47DE085341A1A7F38ABD660CD24086CB548D1000B017A77268CF61098 +CC7FA46BEFBB95C25766B8CC9A1A94D296C1FF74255C4558624E56E52555A2FE +49D6B49D3FB5F414464E7DC285BC5D9EC9F922F2B706141878C7FEAB26C4374D +6EA351E6558192A6B72E2519777C27C93DE66E637CD4956B795AF45B811A1A22 +4C150F3EE21DEF0F174710D04A95BE893D1E579649C04C07FE0068C3D889AEB1 +011BB0A48FB90F005BB543CA5893D1E63E7BBDF9E99F4916065B6653F9386857 +318E0AC2D713C149B6DFB5A64DA05B41148E26C7D341407E6DCBC30EE4A92428 +0654CB2E255901EE9D5BD67357086996C75D0215F2E64885F9611193C0173CCE +792BB823146D3B63CEEF2F8715A7DDD69ABB00CEB4043D66A2250B1CA165A61F +18804E397D54DD0E63A91A65C30F0653F6F1632151360BF030AB7638F65A17A9 +6A80B363BF5AF695620EB2244C805C674E0516835ADA3F01E1616B871C389606 +1EF6260C298D90191FBEEB184C4682BB86280B96791B9B6868536EB88BBC8AB7 +A01B1981FC010EA9089CAE1AC63FB7CAAC04AFAFAF27DE55CA86B06D024DC06D +FEF38710DA39B88E102F48C7CE4F81F36E85A0C6053542F765965D09E6D529F3 +BCE013785CB5F245F306D69570977D51AE4FF32D00ED855332FC74538A1F9E1D +26AA89C22CA7F7B9977CC273453AA807EFC1A31D313A4708F77F774746C2A6DD +04D5ABE95985B52CACF634983390E13FA60517CDD09B811D8455025FD8A7C6B5 +7AF678246CABC6E648B23BF73CF4C2A9D5E18B87BD5F32BCA4E69494F0C55796 +E7C126968E4729B4234EF735DE0194E28732758D7E816E3D12C241A17D19A3F6 +8639011EC17D6E3A45ECA3E8DC975E12661336692D4524C0C9556845CFB7589B +E4992FE805C03E3DE1D81628810B19CEC2A692A487B3453EADE640788711FA7A +87B11C36723879D3B2971B5DD6C6524CA5DC49192837635C22256AF60B8DA4C7 +C69DE48C4C897F9A8F22F8B6B310E7382D5CA82426A1E943ACE8B539F4FE77D3 +68696AD07521B018CCF9C5D1C07B5DCC16784D3130295D35AE46BE7B47681624 +7AE8B7C4131B9CAC5F5193B04124B7DE261E3D360C1347024C061AD63934BC92 +744B468D17DE9DD44E3BA975F7956B7BEF0AE5B58DADEE576C102F6DADC2415A +D14F5290D61CB30761C250E4628C10391DB7DB977A53263D4AF5A96BB06FF240 +EABA625BC68D28A8459101A2BAF0C79D69DFF79116D039D6275720FDA9C445DD +FE2A3F9FE667490B4570D13679E36B3AED8C8FEFA3B9324DA8D27F88EC275BCC +EB5E5B0FE84D033717651BF40C073438C49D410892E608CFD7032DC8D28A6AEA +F854C4026326F67127C6335834A09A734F0418D0C1DD190DC656E04B8F58D0C9 +16F0FD15DC2614CC769A01C635AD00CBA37BA198089C3E6CFD677FDF9571FE08 +50746CA3DA5E8BA7E8444A0E8BABCA3630031F365D56DA5D57861594074E7F7C +2B38909917B32B866E9E61F09143FED52C6764A1EB3F6FE72A17953F495E914C +AAFCB853DD4A6C71731C3387637EB6E6A0332AAF846986284AA119A5A30C2CA9 +07096ABEB9C042B6AA9FCA512B0D87B90AC4EF8B30C884EB6C7C56E67E333C81 +BA112525504476738192381248A908F0C25E57942EB72A684E051D94119CE36B +1B683A94BEDC34910821BBF9A94E92D09CB9EE7582CED4783E0CF31BADE2413E +4B6D79918EEF2AFB2781E2B3E9EFDD4F0E159861682573F1FBE52957F61DEEDF +1EEDEE1B8577B8AFF085930A65E1B3F9CA089D92BE2F035A74D184E2806BCFC1 +7E41C4DCAE62A2550B57B527B513E3BFC0480C3ED389557E6C59D87C2767299B +C4AAE0DA7E2C75E16924324578A89F5FA14F19EF4924140B4306A371133333EF +0AE6D38BAD7E0D31A8047828E0834FCE6E721391F265C62FE6BEA454AB5A9E59 +02598D59C690216CC52C12EEDBFFF618048EEA67B867B459080A07184F6B8E7F +F102C364913A11F9C05024A79F5C907DBD494CE8F85113050C62E71C51C8B62F +8510EBE508BA685AD04F5ABF69CBCE3A94EE6A70CF29CFC4B07D163C42A07BEA +24B4C77CAC9D0102C4AA29986BF76AAC5039E9F15D9F515E77227B1300E5F5E7 +F760D28D959ED550D9372A31BCBDE3732B28312DFBC7DC643A9FBB3130E8D903 +C14D17FEA00600C42C30D01B562FF3C85EF4550E28234038B9E1D197F26C6822 +A0A9F4E80A66E7391BE1D14D8611066A7A57B42D7068FA12E5751F599BFDE140 +037848930E6E05E2CFD162A3C10BE1148BB690525ED3E2711C0DBB0C2D6F2B67 +DE0441F6683160B575714495F5FEA175C2B896C740FC36CDDE8234F53284896F +22CDB78A258218D059B004502A6FCF6B98C1454E81EC1AD9E3B9121449832694 +49A19D20ACE379E110C5504CE5A713810B962ED7F4BB660CD9BBA2528806D829 +9C0EA1DC8D76D53BD179A62C8FE361EEE3A8D63D0CD05CB44513B8D724D81F8B +51D789BB83FFB30BEC37A12FE473798A514622B13269718C24FD5A136A561E51 +FD88C412495440E748D764F82D2C88AC30D01C098226754AF49FA640FAB2F349 +F6E60D04698BFC22FBAC18773A340274B0275EFD930F114E8999C74D72926E64 +07C7003DC37B3D9271528291B697D14DEA9A8E21E4FB5A70EA4DE92E6703752C +60EEA1C17FE96074FAF9B47B2170272B94EEA06549D2F8C64C77AE0A54938D83 +F8A6CA045B85D30327715BBF9BB2C16F47F9568C6B03A09E982CC1BE9893B8EC +EDADBC27BA817893FA7EF798CA707FE70877A9602A71ED725E83EAF41A817FEB +AC08BF1DCC8325A065533A7A6DFEBBA22DDFBA4424DBF6CA6228E7AAC0914813 +21B921C6AA429E7D8C27A887C6345E43D63AACC1110CA0A6DA044533EB98D6DD +CD06923BB8E1ADD2488433CF49468DD4FCFCAAD8154C19405E59DF8259878145 +6E7808C8E8C52C6656D44137D25BCFBBFE3C6603054A3A758E72F8131F3A9041 +F7B1929C2C7D65935BCFC181CEA69C6A8B220BD61CABD0013F3825D1E4D31350 +D35374BDB999362B71A74AC48E3E78FDED95104C7718B8D7DD377888ED682099 +AD8D56B3E035DE39551E2FDA1742899DD1A696316057519BD860990662E83C48 +13461E3FE4D47D616F6C2E195C20B480CB5F9A0F47202D54A319F27C95347948 +1E59872DDA86B7959BE9AAEAEF04BC4F4567E6DAD2713388843A2285C1E419AB +E592C0EC22E7B1C7256872F34F3A3A0D414CE96240778729052C94E7D82D4419 +445D1B69283F42E55EBF8B0569E9BAD401371FF2ABDA43EE38C48D2A0BDB39FD +BD2BD5002FE5270F65D0E5BC2C15D26278DD8A76C3E844A7A1B6B9B1B32ED852 +BA29E9E4B770ADAD6C4B597FD0797F257CA4E0883A7D8DA07FEFD02899DE325B +48A92233D5ADEECEF36564E6D094F9F729C9200CBC92B08FC4DB1304AFB65724 +53A873938791D1386729710F8CE45CCD4C8475C7761765E6661562EAF157B0FE +E82A6FF5CA01BB1723ADFCA0F43FD3F0A26679359BD07FD255693213B611547D +BE5FA4487C64EC46469F08491D6811841639E254B9A5CBD300F6C68263F1A4AE +76C742D34B1B17C2220263612966DC713F9E40AED5716736F4AAD4B532D3F95B +F801F2D828BE0AD27ED6258F6A849440FD22991A9500E94C3A3A4C8986EC1A5B +0DAA7ED546AC026368AB4F1700FED36A2E9AFFBBAB7E43248F53AB2960498363 +8BB266C99FB765A06FD0E24D271460BC45CCF8786336C7BECE2270DD6F2A0174 +55724F095107D7FF537283583E8A4D8BA08ECE55D1874D78C5C1BA594336641E +86D28B6C79D21146CC767A4D8D5FDF29A8DAEA0C82AAAE26215B71F3064014CD +30F10F5E2E319325161809B62F663976BF1233ED1566C0811B1755A536CEB690 +E0D295CE88498AE37992A879074A6E75120A2BA49FE72C261F157DA56AB895BC +1B98133DF63E51514847261FCDE36FB1C1DAAEEC0EB0A65B1133CDBECC62C344 +51C14D4947491D3B4E6DCE4565B61B6D5F1CBAB56012EA5D6AF946631A1ABE64 +EDE858FE388BC0ABB8944FF3A7CB3FD2B9C72F72EB8FB7D23A3CEFAB7FB05C3C +7B456685671CCA1876E06E5E8A0A9294CB344E505E16237042D923D100204ECC +155D619B50645940B92B790BB7633B5C766257CF00E5527E2B055A84A3B2A173 +06CA596DFE482E81FD7DDE8B45E6CA79B9D5FCC713D0A0D2AFD77CD61B8EC424 +02FA201CC8D5816FFA5B8AB2E460DD3D744E3FCE65479ABE34FDD2F6553FABBA +B81259F488E81545FA1507EE4E26A4B66D44777596998D023939F2CDE82B4A2D +DE9BB15E57BD8AF8FB3526ECAD74A51D5B4B93170B9CD72433FEF961C9FA176A +7F777C642D9C9B3355BDD316A35AE131242C26363F5B5C9EF849C60CFB807569 +CCFF76451AF150297BE7C6F6015780B85AF29C2535696A964AB91D0CBAD8A81F +73F2E2E152DB661402E7FAFCDA18B26917E52EBB6F7BFE4776F48CD7D43B49AB +BB812B8DE5DF14070CCFB8DBB3FEAF830FBB8B78C205331E17F135DF7AB31165 +9844523606D0EA962E59ACEEBA267BBEA5245BAC046C5971EFAEEA5DB64098C8 +0AA8D1F83A13B72F998C746A45A990BDFD93AF5A1E6AB1EA41647F67D6963461 +D9264BBB478C1456777E74C632386D018292D145B3477887CD83ED1D5C0A1F28 +D8292292428F6A2B48028ADB71F370C2A1102EBC1EB6530D8E3B058D05693335 +7FED4FCB9ED98EAC76F5CA82939A285718738D2ECCF914C8B5410C8985FC4778 +1F192ACE143FC9FC4B04FCB2CEF1D92DDC3F22C4FB9BAE6803DB4246A135F151 +7B6DEE4FBD0A75276638212B81AE0DFB685801F2DACB2E695C0E84CE6D71E6A4 +92418DABDCCFA7E8D491CB0BCA4747CABF8EB57CEADF2860DD31D3C555BA94F7 +1F796D1BC78F87FFE65312EAB0F23BEAE5AB2F87287D80B6EE6A9B2205352824 +B444F0027815F2927475934F68EC8335E3DCCBBB1E89E7C8C205 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -2147,10 +1694,53 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 34 /quotedblright put +dup 39 /quoteright put +dup 45 /hyphen put +dup 46 /period put +dup 58 /colon put +dup 65 /A put +dup 67 /C put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H 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 92 /quotedblleft 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 +dup 122 /z put readonly def /FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2504,10 +2094,43 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 12 /fi put +dup 39 /quoteright put +dup 45 /hyphen put +dup 46 /period put +dup 49 /one put +dup 67 /C put +dup 70 /F put +dup 74 /J put +dup 83 /S put +dup 84 /T put +dup 87 /W put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 106 /j put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 121 /y put +dup 122 /z put readonly def /FontBBox{-62 -250 1123 750}readonly def -/UniqueID 5000798 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2765,10 +2388,10 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 13 /circlecopyrt put +dup 15 /bullet put readonly def /FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 @@ -2824,10 +2447,93 @@ end readonly def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for -dup 0 /.notdef put +dup 11 /ff put +dup 12 /fi put +dup 13 /fl put +dup 14 /ffi put +dup 34 /quotedblright put +dup 35 /numbersign put +dup 36 /dollar put +dup 38 /ampersand put +dup 39 /quoteright put +dup 40 /parenleft put +dup 41 /parenright put +dup 42 /asterisk 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 61 /equal put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 69 /E put +dup 70 /F put +dup 71 /G put +dup 72 /H put +dup 73 /I put +dup 74 /J put +dup 75 /K put +dup 76 /L put +dup 77 /M put +dup 78 /N put +dup 79 /O put +dup 80 /P put +dup 81 /Q put +dup 82 /R put +dup 83 /S put +dup 84 /T put +dup 85 /U put +dup 86 /V put +dup 87 /W put +dup 88 /X put +dup 89 /Y put +dup 91 /bracketleft put +dup 92 /quotedblleft put +dup 93 /bracketright 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 124 /emdash put readonly def /FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -3340,85 +3046,69 @@ B771485F39ECDD20D29EA4133DCCDF90C9CA0F1F2385317B2053B1A53FF8F4C4 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont -TeXDict begin 39158280 55380996 1000 600 600 (./gperf.dvi) -@start /Fa 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 -119.552 /CMBXTI10 rf /Fb 209[24 46[{ TeX74afc74cEncoding ReEncodeFont } -1 74.7198 /CMTI9 rf /Fc 130[39 1[39 39 39 39 39 1[39 -39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 -39 1[39 39[39 9[39 7[39 37[{ TeX09fbbfacEncoding ReEncodeFont }29 -74.7198 /CMTT9 rf /Fd 133[34 41 1[55 41 43 30 30 30 1[43 -38 43 64 21 2[21 43 38 23 34 43 34 43 38 21 10[58 1[43 -4[58 70 48 60 39 28 2[50 1[59 55 54 58 7[38 38 38 1[38 -38 38 38 38 38 3[21 4[21 39[{ TeXf7b6d320Encoding ReEncodeFont }47 -74.7198 /CMR9 rf /Fe 147[25 10[44 97[{ - TeXf7b6d320Encoding ReEncodeFont }2 90.9091 /CMB10 rf -/Ff 214[35 35 40[{ TeXf7b6d320Encoding ReEncodeFont }2 -90.9091 /CMSS10 rf /Fg 136[83 2[45 45 47 2[57 64 4[32 -64 2[53 64 2[56 97[{ TeXf7b6d320Encoding ReEncodeFont }11 -99.6264 /CMBX10 rf /Fh 138[52 52 52 4[52 4[52 1[52 1[52 -52 100[{ TeX09fbbfacEncoding ReEncodeFont }8 99.6264 -/CMTT10 rf /Fi 138[56 56 56 56 3[56 4[56 3[56 56 56 99[{ - TeX09fbbfacEncoding ReEncodeFont }9 109.091 /CMTT12 -rf /Fj 134[65 1[89 65 68 48 48 50 1[68 61 68 102 34 2[34 -68 61 37 56 68 55 1[60 9[127 1[94 6[96 2[96 1[46 1[96 -77 81 94 89 1[93 12[61 61 61 61 2[34 41 45[{ - TeXf7b6d320Encoding ReEncodeFont }37 109.091 /CMBX12 -rf /Fk 141[62 1[62 8[62 62 62 101[{ TeX09fbbfacEncoding ReEncodeFont }5 -119.552 /CMTT12 rf /Fl 133[37 44 42 1[42 49 30 37 38 -1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 4[47 -4[91 1[68 65 51 66 1[62 70 68 82 57 3[68 70 59 62 1[65 -1[68 6[28 11[28 33 5[28 4[47 34[{ TeX74afc74cEncoding ReEncodeFont }45 -90.9091 /CMTI10 rf /Fm 141[74 1[74 8[74 74 74 101[{ - TeX09fbbfacEncoding ReEncodeFont }5 143.462 /CMTT12 -rf /Fn 129[48 48 1[48 48 48 48 48 48 48 48 48 48 1[48 +TeXDict begin 39139632 55387786 1000 600 600 (../../doc/gperf.dvi) +@start /Fa 209[43 46[{}1 119.552 /CMBXTI10 rf /Fb 135[41 +3[30 30 3[38 43 4[21 3[34 43 26[28 31[30 30 40[{}11 74.7198 +/CMR9 rf /Fc 147[25 10[44 97[{}2 90.9091 /CMB10 rf /Fd +214[35 35 40[{}2 90.9091 /CMSS10 rf /Fe 136[83 2[45 45 +47 2[57 64 4[32 64 2[53 64 2[56 97[{}11 99.6264 /CMBX10 +rf /Ff 138[52 52 52 4[52 4[52 1[52 1[52 52 100[{}8 99.6264 +/CMTT10 rf /Fg 138[56 56 56 56 3[56 4[56 3[56 56 56 99[{}9 +109.091 /CMTT12 rf /Fh 134[65 1[89 65 68 48 48 50 1[68 +61 68 102 34 2[34 68 61 37 56 68 55 1[60 9[127 1[94 6[96 +2[96 1[46 1[96 77 81 94 89 1[93 12[61 61 61 61 2[34 41 +45[{}37 109.091 /CMBX12 rf /Fi 141[62 1[62 8[62 62 62 +101[{}5 119.552 /CMTT12 rf /Fj 133[37 44 42 1[42 49 30 +37 38 1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 +4[47 4[91 1[68 65 51 66 1[62 70 68 82 57 3[68 70 59 62 +1[65 1[68 6[28 11[28 33 5[28 4[47 34[{}45 90.9091 /CMTI10 +rf /Fk 141[74 1[74 8[74 74 74 101[{}5 143.462 /CMTT12 +rf /Fl 129[48 48 1[48 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 2[48 1[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 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 34[{ TeX09fbbfacEncoding ReEncodeFont }86 90.9091 -/CMTT10 rf /Fo 133[40 48 1[66 48 51 35 36 36 1[51 45 -51 76 25 48 28 25 51 45 28 40 51 40 51 45 9[93 2[66 51 -8[47 3[59 2[66 17[45 2[25 30 5[25 26[51 12[{ - TeXf7b6d320Encoding ReEncodeFont }35 90.9091 /CMSL10 -rf /Fp 134[85 85 117 85 90 63 64 66 1[90 81 90 134 45 -85 1[45 90 81 49 74 90 72 90 78 11[124 112 90 120 1[110 -1[126 1[97 126 1[60 126 127 1[106 124 117 115 122 9[81 -81 81 81 81 81 81 3[54 45[{ TeXf7b6d320Encoding ReEncodeFont }47 -143.462 /CMBX12 rf /Fq 240[45 1[91 13[{ - TeXbbad153fEncoding ReEncodeFont }2 90.9091 /CMSY10 -rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 -71 1[37 75 67 41 61 75 60 75 65 7[102 1[139 1[103 94 -75 100 1[92 101 105 128 81 105 69 50 105 106 85 88 103 -97 96 102 7[67 67 67 67 67 67 67 67 67 67 1[37 45 37 -6[112 24[75 78 11[{ TeXf7b6d320Encoding ReEncodeFont }61 -119.552 /CMBX12 rf /Fs 131[91 1[40 48 48 66 48 51 35 -36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 -45 25 2[25 45 25 1[68 68 93 68 68 66 51 67 71 62 71 68 -83 57 71 47 33 68 71 59 62 69 66 64 68 3[71 1[25 25 45 -45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 -71 1[45 76 45 19[76 51 51 53 11[{ TeXf7b6d320Encoding ReEncodeFont }85 -90.9091 /CMR10 rf /Ft 141[89 1[89 8[89 89 89 101[{ - TeX09fbbfacEncoding ReEncodeFont }5 172.154 /CMTT12 -rf /Fu 138[108 75 76 79 2[97 5[54 3[88 108 14[149 13[152 -19[97 1[97 97 1[54 6[54 39[{ TeXf7b6d320Encoding ReEncodeFont }15 -172.154 /CMBX12 rf end +48 48 48 34[{}86 90.9091 /CMTT10 rf /Fm 133[40 48 1[66 +48 51 35 36 36 1[51 45 51 76 25 48 28 25 51 45 28 40 +51 40 51 45 9[93 2[66 51 8[47 3[59 2[66 17[45 2[25 30 +5[25 26[51 12[{}35 90.9091 /CMSL10 rf /Fn 134[85 85 117 +85 90 63 64 66 1[90 81 90 134 45 85 1[45 90 81 49 74 +90 72 90 78 11[124 112 90 120 1[110 1[126 1[97 126 1[60 +126 127 1[106 124 117 115 122 9[81 81 81 81 81 81 81 +3[54 45[{}47 143.462 /CMBX12 rf /Fo 240[45 1[91 13[{}2 +90.9091 /CMSY10 rf /Fp 134[71 71 97 71 75 52 53 55 1[75 +67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 7[102 1[139 +1[103 94 75 100 1[92 101 105 128 81 105 1[50 105 106 +85 88 103 97 96 102 7[67 67 67 67 67 67 67 67 67 67 1[37 +45 37 31[75 78 11[{}59 119.552 /CMBX12 rf /Fq 131[91 +1[40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 +25 51 45 28 40 51 40 51 45 25 2[25 45 25 1[68 68 93 68 +68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 +66 64 68 3[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 +25 30 25 1[45 35 35 25 71 1[45 76 45 19[76 51 51 53 11[{}85 +90.9091 /CMR10 rf /Fr 141[89 1[89 8[89 89 89 101[{}5 +172.154 /CMTT12 rf /Fs 138[108 75 76 79 2[97 5[54 3[88 +108 14[149 13[152 19[97 97 1[97 1[54 6[54 39[{}15 172.154 +/CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin -%%PaperSize: A4 +%%BeginPaperSize: a4 +a4 +%%EndPaperSize end %%EndSetup %%Page: 1 1 -TeXDict begin 1 0 bop 150 1318 a Fu(User's)65 b(Guide)g(to)f -Ft(gperf)f Fu(3.0.1)p 150 1423 3600 34 v 2005 1519 a -Fs(The)30 b(GNU)h(P)m(erfect)h(Hash)e(F)-8 b(unction)31 -b(Generator)2662 1627 y(Edition)f(3.0.1,)j(12)e(June)e(2003)150 -4958 y Fr(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p +TeXDict begin 1 0 bop 150 1318 a Fs(User's)65 b(Guide)g(to)f +Fr(gperf)f Fs(3.0.2)p 150 1423 3600 34 v 2005 1519 a +Fq(The)30 b(GNU)h(P)m(erfect)h(Hash)e(F)-8 b(unction)31 +b(Generator)2530 1627 y(Edition)g(3.0.2,)h(13)f(Jan)m(uary)f(2006)150 +4958 y Fp(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p 150 5141 3600 17 v eop end %%Page: 2 2 -TeXDict begin 2 1 bop 150 4152 a Fs(Cop)m(yrigh)m(t)602 -4149 y(c)577 4152 y Fq(\015)30 b Fs(1989-2003)k(F)-8 +TeXDict begin 2 1 bop 150 4152 a Fq(Cop)m(yrigh)m(t)602 +4149 y(c)577 4152 y Fo(\015)30 b Fq(1989-2004)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 4286 y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d (distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m @@ -3442,17 +3132,17 @@ h(in)g(a)h(translation)g(appro)m(v)m(ed)f(b)m(y)h(the)f(author)150 5322 y(instead)c(of)f(in)g(the)h(original)g(English.)p eop end %%Page: 1 3 -TeXDict begin 1 2 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h -(LICENSE)2052 b(1)150 299 y Fp(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 -564 y Fs(V)-8 b(ersion)31 b(2,)g(June)f(1991)390 720 -y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fq(\015)g Fs(1989,)j(1991)f(F) +TeXDict begin 1 2 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(1)150 299 y Fn(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 +564 y Fq(V)-8 b(ersion)31 b(2,)g(June)f(1991)390 720 +y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fo(\015)g Fq(1989,)j(1991)f(F) -8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.,)390 824 y(59)g(T)-8 b(emple)31 b(Place,)h(Suite)e(330,)i(Boston,)g(MA)e (02111-1307,)35 b(USA.)390 1032 y(Ev)m(ery)m(one)c(is)g(p)s(ermitted)f (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1135 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f -(is)f(not)h(allo)m(w)m(ed.)150 1462 y Fr(Pream)l(ble)275 -1683 y Fs(The)39 b(licenses)j(for)e(most)h(soft)m(w)m(are)g(are)g +(is)f(not)h(allo)m(w)m(ed.)150 1462 y Fp(Pream)l(ble)275 +1683 y Fq(The)39 b(licenses)j(for)e(most)h(soft)m(w)m(are)g(are)g (designed)f(to)h(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d(freedom)g(to)h (share)g(and)150 1793 y(c)m(hange)g(it.)71 b(By)40 b(con)m(trast,)k (the)c(GNU)h(General)g(Public)f(License)h(is)f(in)m(tended)g(to)g @@ -3519,10 +3209,10 @@ b(m)m(ust)g(b)s(e)e(licensed)i(for)f(ev)m(ery)m(one's)i(free)f(use)f (and)g(conditions)h(for)f(cop)m(ying,)i(distribution)d(and)h(mo)s (di\014cation)h(follo)m(w.)p eop end %%Page: 2 4 -TeXDict begin 2 3 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h -(LICENSE)2052 b(2)150 166 y Fr(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g +TeXDict begin 2 3 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(2)150 166 y Fp(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g (COPYING,)150 299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 -b(TION)199 515 y Fs(0.)61 b(This)42 b(License)h(applies)f(to)i(an)m(y)f +b(TION)199 515 y Fq(0.)61 b(This)42 b(License)h(applies)f(to)i(an)m(y)f (program)f(or)g(other)h(w)m(ork)g(whic)m(h)f(con)m(tains)i(a)f(notice)g (placed)330 625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m (ying)i(it)f(ma)m(y)g(b)s(e)f(distributed)g(under)f(the)h(terms)h(of)g @@ -3609,7 +3299,7 @@ b(to)h(those)f(sections)h(when)f(y)m(ou)g(distribute)g(them)g(as)g (the)g(terms)g(of)h(this)f(License,)h(whose)f(p)s(ermissions)p eop end %%Page: 3 5 -TeXDict begin 3 4 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 3 4 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(3)330 299 y(for)22 b(other)h(licensees)g(extend)g(to)g (the)f(en)m(tire)h(whole,)i(and)c(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m (ery)i(part)g(regardless)330 408 y(of)31 b(who)e(wrote)i(it.)330 @@ -3699,7 +3389,7 @@ b(ativ)m(e)330 5230 y(w)m(orks.)38 b(These)23 b(actions)h(are)g (distributing)f(the)h(Program)g(\(or)h(an)m(y)f(w)m(ork)g(based)g(on)f (the)i(Program\),)h(y)m(ou)p eop end %%Page: 4 6 -TeXDict begin 4 5 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 4 5 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(4)330 299 y(indicate)33 b(y)m(our)g(acceptance)h(of)f (this)f(License)h(to)h(do)e(so,)h(and)f(all)h(its)g(terms)f(and)g (conditions)h(for)330 408 y(cop)m(ying,)f(distributing)d(or)i(mo)s @@ -3790,7 +3480,7 @@ b(the)i(Program)f(do)s(es)g(not)g(sp)s(ecify)g(a)330 m(y)i(the)g(F)-8 b(ree)330 5340 y(Soft)m(w)m(are)31 b(F)-8 b(oundation.)p eop end %%Page: 5 7 -TeXDict begin 5 6 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 5 6 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(5)154 299 y(10.)61 b(If)29 b(y)m(ou)g(wish)g(to)h (incorp)s(orate)g(parts)f(of)g(the)g(Program)h(in)m(to)g(other)g(free)f (programs)g(whose)g(distri-)330 408 y(bution)f(conditions)h(are)h @@ -3800,12 +3490,12 @@ y(whic)m(h)24 b(is)g(cop)m(yrigh)m(ted)h(b)m(y)f(the)g(F)-8 b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oundation,)26 b(write)e(to)h(the)f (F)-8 b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 y(dation;)29 b(w)m(e)f(sometimes)h(mak)m(e)f(exceptions)h(for)e(this.) -40 b(Our)26 b(decision)i(will)g(b)s(e)e(guided)i(b)m(y)f(the)h(t)m(w)m +40 b(Our)26 b(decision)i(will)g(b)s(e)f(guided)g(b)m(y)g(the)h(t)m(w)m (o)330 737 y(goals)c(of)f(preserving)f(the)g(free)h(status)g(of)f(all)i (deriv)-5 b(ativ)m(es)24 b(of)e(our)g(free)h(soft)m(w)m(are)h(and)e(of) h(promoting)330 847 y(the)31 b(sharing)f(and)f(reuse)h(of)h(soft)m(w)m -(are)h(generally)-8 b(.)330 995 y Fr(NO)45 b(W)-15 b(ARRANTY)154 -1187 y Fs(11.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g +(are)h(generally)-8 b(.)330 995 y Fp(NO)45 b(W)-15 b(ARRANTY)154 +1187 y Fq(11.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g (FREE)g(OF)h(CHAR)m(GE,)h(THERE)e(IS)g(NO)330 1297 y(W)-10 b(ARRANTY)26 b(F)m(OR)f(THE)g(PR)m(OGRAM,)h(TO)e(THE)h(EXTENT)f (PERMITTED)h(BY)g(APPLI-)330 1406 y(CABLE)i(LA)-10 b(W.)27 @@ -3839,13 +3529,13 @@ b(OR)g(A)h(F)-10 b(AILURE)40 b(OF)g(THE)330 3185 y(PR)m(OGRAM)f(TO)f (OPERA)-8 b(TE)38 b(WITH)h(ANY)g(OTHER)f(PR)m(OGRAMS\),)h(EVEN)g(IF)f (SUCH)330 3294 y(HOLDER)33 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)34 b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)330 -3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fr(END)45 b(OF)g(TERMS)f(AND)h +3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fp(END)45 b(OF)g(TERMS)f(AND)h (CONDITIONS)p eop end %%Page: 6 8 -TeXDict begin 6 7 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h -(LICENSE)2052 b(6)150 299 y Fr(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 +TeXDict begin 6 7 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h +(LICENSE)2052 b(6)150 299 y Fp(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 -503 y Fs(If)38 b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m +503 y Fq(If)38 b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m (ou)i(w)m(an)m(t)g(it)f(to)h(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible) d(use)h(to)150 612 y(the)i(public,)i(the)f(b)s(est)e(w)m(a)m(y)i(to)g (ac)m(hiev)m(e)h(this)e(is)g(to)h(mak)m(e)g(it)g(free)f(soft)m(w)m(are) @@ -3858,10 +3548,10 @@ b(o)29 b(do)h(so,)g(attac)m(h)h(the)f(follo)m(wing)h(notices)f(to)h (t)m(y;)j(and)d(eac)m(h)i(\014le)150 1087 y(should)29 b(ha)m(v)m(e)j(at)f(least)h(the)e(\\cop)m(yrigh)m(t")j(line)e(and)e(a)i (p)s(oin)m(ter)g(to)g(where)f(the)g(full)g(notice)i(is)e(found.)390 -1227 y Fo(one)h(line)f(to)h(giv)m(e)h(the)f(program's)f(name)h(and)e -(an)i(idea)g(of)f(what)g(it)h(do)s(es.)390 1331 y Fn(Copyright)45 -b(\(C\))i Fo(y)m(ear)103 b(name)30 b(of)h(author)390 -1539 y Fn(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h +1227 y Fm(one)h(line)f(to)h(giv)m(e)h(the)f(program's)f(name)h(and)e +(an)i(idea)g(of)f(what)g(it)h(do)s(es.)390 1331 y Fl(Copyright)45 +b(\(C\))i Fm(y)m(ear)103 b(name)30 b(of)h(author)390 +1539 y Fl(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h (redistribute)e(it)i(and/or)390 1642 y(modify)f(it)h(under)g(the)g (terms)f(of)h(the)g(GNU)g(General)f(Public)g(License)390 1746 y(as)h(published)e(by)j(the)f(Free)f(Software)g(Foundation;)e @@ -3876,24 +3566,24 @@ b(\(C\))i Fo(y)m(ear)103 b(name)30 b(of)h(author)390 (General)f(Public)g(License)390 2680 y(along)g(with)h(this)g(program;)e (if)i(not,)g(write)f(to)i(the)e(Free)h(Software)390 2784 y(Foundation,)e(Inc.,)h(59)h(Temple)f(Place,)g(Suite)h(330,)f(Boston,)g -(MA)h(02111-1307,)e(USA.)275 2930 y Fs(Also)31 b(add)e(information)i +(MA)h(02111-1307,)e(USA.)275 2930 y Fq(Also)31 b(add)e(information)i (on)f(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)j(and)d (pap)s(er)f(mail.)275 3076 y(If)f(the)g(program)h(is)f(in)m(teractiv)m (e,)k(mak)m(e)e(it)f(output)f(a)h(short)f(notice)i(lik)m(e)g(this)e (when)g(it)h(starts)g(in)f(an)150 3185 y(in)m(teractiv)m(e)33 -b(mo)s(de:)390 3325 y Fn(Gnomovision)45 b(version)h(69,)g(Copyright)g -(\(C\))h Fo(y)m(ear)103 b(name)30 b(of)g(author)390 3429 -y Fn(Gnomovision)45 b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for) +b(mo)s(de:)390 3325 y Fl(Gnomovision)45 b(version)h(69,)g(Copyright)g +(\(C\))h Fm(y)m(ear)103 b(name)30 b(of)g(author)390 3429 +y Fl(Gnomovision)45 b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for) i(details)390 3533 y(type)g(`show)f(w'.)95 b(This)46 b(is)h(free)g(software,)e(and)i(you)g(are)g(welcome)390 3637 y(to)g(redistribute)e(it)i(under)f(certain)g(conditions;)f(type)h -(`show)h(c')390 3740 y(for)g(details.)275 3886 y Fs(The)27 -b(h)m(yp)s(othetical)i(commands)f(`)p Fn(show)h(w)p Fs(')f(and)f(`)p -Fn(show)j(c)p Fs(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of) +(`show)h(c')390 3740 y(for)g(details.)275 3886 y Fq(The)27 +b(h)m(yp)s(othetical)i(commands)f(`)p Fl(show)h(w)p Fq(')f(and)f(`)p +Fl(show)j(c)p Fq(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of) 150 3996 y(the)38 b(General)h(Public)e(License.)64 b(Of)37 b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m(y)g(b)s(e)f(called)i -(something)150 4106 y(other)25 b(than)f(`)p Fn(show)29 -b(w)p Fs(')c(and)f(`)p Fn(show)29 b(c)p Fs(';)e(they)d(could)h(ev)m(en) +(something)150 4106 y(other)25 b(than)f(`)p Fl(show)29 +b(w)p Fq(')c(and)f(`)p Fl(show)29 b(c)p Fq(';)e(they)d(could)h(ev)m(en) g(b)s(e)f(mouse-clic)m(ks)i(or)f(men)m(u)f(items|whatev)m(er)150 4215 y(suits)30 b(y)m(our)g(program.)275 4361 y(Y)-8 b(ou)28 b(should)f(also)i(get)g(y)m(our)f(emplo)m(y)m(er)h(\(if)f(y)m @@ -3901,14 +3591,14 @@ b(ou)28 b(should)f(also)i(get)g(y)m(our)f(emplo)m(y)m(er)h(\(if)f(y)m (if)e(an)m(y)-8 b(,)150 4471 y(to)34 b(sign)g(a)f(\\cop)m(yrigh)m(t)j (disclaimer")e(for)g(the)f(program,)h(if)g(necessary)-8 b(.)51 b(Here)34 b(is)f(a)h(sample;)h(alter)g(the)150 -4580 y(names:)390 4720 y Fn(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f +4580 y(names:)390 4720 y Fl(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f (all)i(copyright)390 4824 y(interest)f(in)h(the)g(program)e (`Gnomovision')390 4928 y(\(which)h(makes)g(passes)h(at)g(compilers\))e -(written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fo(signature)31 -b(of)f(T)m(y)h(Co)s(on)p Fn(,)47 b(1)g(April)g(1989)390 +(written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fm(signature)31 +b(of)f(T)m(y)h(Co)s(on)p Fl(,)47 b(1)g(April)g(1989)390 5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop end %%Page: 7 9 -TeXDict begin 7 8 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 7 8 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(7)275 299 y(This)20 b(General)h(Public)g(License)g(do)s (es)g(not)g(p)s(ermit)f(incorp)s(orating)h(y)m(our)g(program)f(in)m(to) i(proprietary)150 408 y(programs.)38 b(If)22 b(y)m(our)h(program)f(is)h @@ -3919,12 +3609,12 @@ b(.)59 b(If)35 b(this)i(is)f(what)g(y)m(ou)h(w)m(an)m(t)g(to)g(do,)h (use)e(the)150 628 y(GNU)31 b(Library)f(General)h(Public)f(License)h (instead)f(of)h(this)f(License.)p eop end %%Page: 8 10 -TeXDict begin 8 9 bop 150 -116 a Fs(Con)m(tributors)30 -b(to)h(GNU)g Fn(gperf)e Fs(Utilit)m(y)2140 b(8)150 299 -y Fp(Con)l(tributors)50 b(to)j(GNU)h Fm(gperf)f Fp(Utilit)l(y)225 -533 y Fq(\017)60 b Fs(The)45 b(GNU)h Fn(gperf)d Fs(p)s(erfect)j(hash)e +TeXDict begin 8 9 bop 150 -116 a Fq(Con)m(tributors)30 +b(to)h(GNU)g Fl(gperf)e Fq(Utilit)m(y)2140 b(8)150 299 +y Fn(Con)l(tributors)50 b(to)j(GNU)h Fk(gperf)f Fn(Utilit)l(y)225 +533 y Fo(\017)60 b Fq(The)45 b(GNU)h Fl(gperf)d Fq(p)s(erfect)j(hash)e (function)h(generator)i(utilit)m(y)f(w)m(as)g(written)f(in)g(GNU)h(C)p -Fn(++)330 643 y Fs(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83 +Fl(++)330 643 y Fq(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83 b(The)44 b(general)i(idea)f(for)f(the)h(p)s(erfect)g(hash)e(function)i (generator)330 752 y(w)m(as)34 b(inspired)e(b)m(y)h(Keith)g(Bostic's)j (algorithm)e(written)f(in)g(C,)g(and)g(distributed)f(to)i(net.sources) @@ -3933,77 +3623,77 @@ b(The)44 b(general)i(idea)f(for)f(the)h(p)s(erfect)g(hash)e(function)i 971 y(implemen)m(tation)d(of)e(Keith's)g(basic)h(idea,)h(created)f(at)g (the)f(Univ)m(ersit)m(y)h(of)g(California,)h(Irvine.)330 1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)h(should)f(b)s(e)f -(rep)s(orted)h(to)h Fn()p Fs(.)225 -1215 y Fq(\017)60 b Fs(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h +(rep)s(orted)h(to)h Fl()p Fq(.)225 +1215 y Fo(\017)60 b Fq(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h (Mic)m(hael)h(Tiemann)e(and)g(Doug)h(Lea,)g(for)f(pro)m(viding)g(a)h (useful)330 1325 y(compiler,)d(and)f(for)g(giving)h(me)g(a)g(forum)e (to)i(exhibit)g(m)m(y)f(creation.)330 1460 y(In)22 b(addition,)i(Adam)f (de)f(Bo)s(or)h(and)f(Nels)i(Olson)e(pro)m(vided)g(man)m(y)h(tips)f (and)g(insigh)m(ts)h(that)g(greatly)330 1569 y(help)s(ed)29 b(impro)m(v)m(e)j(the)e(qualit)m(y)i(and)e(functionalit)m(y)h(of)g -Fn(gperf)p Fs(.)225 1704 y Fq(\017)60 b Fs(Bruno)26 b(Haible)i +Fl(gperf)p Fq(.)225 1704 y Fo(\017)60 b Fq(Bruno)26 b(Haible)i (enhanced)f(and)f(optimized)i(the)f(searc)m(h)h(algorithm.)41 b(He)27 b(also)h(rewrote)g(the)f(input)330 1813 y(routines)j(and)g(the) h(output)f(routines)g(for)g(b)s(etter)g(reliabilit)m(y)-8 b(,)33 b(and)d(added)g(a)h(testsuite.)p eop end %%Page: 9 11 -TeXDict begin 9 10 bop 150 -116 a Fs(Chapter)30 b(1:)41 -b(In)m(tro)s(duction)2592 b(9)150 299 y Fp(1)80 b(In)l(tro)t(duction) -275 533 y Fn(gperf)31 b Fs(is)j(a)f(p)s(erfect)h(hash)e(function)h -(generator)i(written)e(in)g(C)p Fn(++)p Fs(.)49 b(It)33 -b(transforms)g(an)g Fo(n)f Fs(elemen)m(t)150 643 y(user-sp)s(eci\014ed) -k(k)m(eyw)m(ord)i(set)g Fo(W)49 b Fs(in)m(to)39 b(a)e(p)s(erfect)h -(hash)e(function)h Fo(F)p Fs(.)h Fo(F)44 b Fs(uniquely)37 -b(maps)g(k)m(eyw)m(ords)150 752 y(in)e Fo(W)47 b Fs(on)m(to)36 -b(the)f(range)g(0..)p Fo(k)p Fs(,)j(where)c Fo(k)40 b -Fn(>)p Fs(=)35 b Fo(n-1)p Fs(.)54 b(If)35 b Fo(k)40 b -Fs(=)35 b Fo(n-1)42 b Fs(then)35 b Fo(F)42 b Fs(is)35 -b(a)g Fl(minimal)46 b Fs(p)s(erfect)35 b(hash)150 862 -y(function.)68 b Fn(gperf)39 b Fs(generates)i(a)f(0..)p -Fo(k)46 b Fs(elemen)m(t)41 b(static)g(lo)s(okup)f(table)g(and)f(a)i +TeXDict begin 9 10 bop 150 -116 a Fq(Chapter)30 b(1:)41 +b(In)m(tro)s(duction)2592 b(9)150 299 y Fn(1)80 b(In)l(tro)t(duction) +275 533 y Fl(gperf)31 b Fq(is)j(a)f(p)s(erfect)h(hash)e(function)h +(generator)i(written)e(in)g(C)p Fl(++)p Fq(.)49 b(It)33 +b(transforms)g(an)g Fm(n)f Fq(elemen)m(t)150 643 y(user-sp)s(eci\014ed) +k(k)m(eyw)m(ord)i(set)g Fm(W)49 b Fq(in)m(to)39 b(a)e(p)s(erfect)h +(hash)e(function)h Fm(F)p Fq(.)h Fm(F)44 b Fq(uniquely)37 +b(maps)g(k)m(eyw)m(ords)150 752 y(in)e Fm(W)47 b Fq(on)m(to)36 +b(the)f(range)g(0..)p Fm(k)p Fq(,)j(where)c Fm(k)40 b +Fl(>)p Fq(=)35 b Fm(n-1)p Fq(.)54 b(If)35 b Fm(k)40 b +Fq(=)35 b Fm(n-1)42 b Fq(then)35 b Fm(F)42 b Fq(is)35 +b(a)g Fj(minimal)46 b Fq(p)s(erfect)35 b(hash)150 862 +y(function.)68 b Fl(gperf)39 b Fq(generates)i(a)f(0..)p +Fm(k)46 b Fq(elemen)m(t)41 b(static)g(lo)s(okup)f(table)g(and)f(a)i (pair)e(of)h(C)f(functions.)150 971 y(These)34 b(functions)g(determine) -h(whether)e(a)i(giv)m(en)g(c)m(haracter)h(string)f Fo(s)j -Fs(o)s(ccurs)c(in)g Fo(W)p Fs(,)h(using)e(at)j(most)150 +h(whether)e(a)i(giv)m(en)g(c)m(haracter)h(string)f Fm(s)j +Fq(o)s(ccurs)c(in)g Fm(W)p Fq(,)h(using)e(at)j(most)150 1081 y(one)31 b(prob)s(e)e(in)m(to)i(the)g(lo)s(okup)f(table.)275 -1215 y Fn(gperf)22 b Fs(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h +1215 y Fl(gperf)22 b Fq(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h (k)m(eyw)m(ord)g(recognizer)i(for)d(lexical)j(analyzers)e(in)g(sev)m (eral)150 1325 y(pro)s(duction)30 b(and)g(researc)m(h)h(compilers)g (and)g(language)h(pro)s(cessing)e(to)s(ols,)i(including)e(GNU)i(C,)e -(GNU)150 1435 y(C)p Fn(++)p Fs(,)24 b(GNU)f(Ja)m(v)-5 +(GNU)150 1435 y(C)p Fl(++)p Fq(,)24 b(GNU)f(Ja)m(v)-5 b(a,)26 b(GNU)d(P)m(ascal,)j(GNU)e(Mo)s(dula)f(3,)i(and)d(GNU)h(inden)m -(t.)38 b(Complete)24 b(C)p Fn(++)e Fs(source)h(co)s(de)150 -1544 y(for)42 b Fn(gperf)f Fs(is)h(a)m(v)-5 b(ailable)44 -b(from)e Fn(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p -Fs(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fn(gperf)p -Fs('s)d(design)i(and)f(implemen)m(tation)j(in)d(greater)i(detail)g(is)f +(t.)38 b(Complete)24 b(C)p Fl(++)e Fq(source)h(co)s(de)150 +1544 y(for)42 b Fl(gperf)f Fq(is)h(a)m(v)-5 b(ailable)44 +b(from)e Fl(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p +Fq(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fl(gperf)p +Fq('s)d(design)i(and)f(implemen)m(tation)j(in)d(greater)i(detail)g(is)f (a)m(v)-5 b(ailable)42 b(in)e(the)g(Second)f(USENIX)150 -1763 y(C)p Fn(++)29 b Fs(Conference)g(pro)s(ceedings)h(or)g(from)f -Fn(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p -Fs(.)p eop end +1763 y(C)p Fl(++)29 b Fq(Conference)g(pro)s(ceedings)h(or)g(from)f +Fl(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p +Fq(.)p eop end %%Page: 10 12 -TeXDict begin 10 11 bop 150 -116 a Fs(Chapter)30 b(2:)41 -b(Static)32 b(searc)m(h)f(structures)e(and)h(GNU)h Fn(gperf)1425 -b Fs(10)150 299 y Fp(2)80 b(Static)53 b(searc)l(h)g(structures)e(and)j -(GNU)f Fm(gperf)275 533 y Fs(A)24 b Fo(static)i(searc)m(h)f(structure)k -Fs(is)c(an)f(Abstract)h(Data)i(T)m(yp)s(e)c(with)i(certain)g(fundamen)m -(tal)f(op)s(erations,)150 643 y(e.g.,)32 b Fl(initialize)p -Fs(,)g Fl(insert)p Fs(,)f(and)f Fl(r)-5 b(etrieve)p Fs(.)42 +TeXDict begin 10 11 bop 150 -116 a Fq(Chapter)30 b(2:)41 +b(Static)32 b(searc)m(h)f(structures)e(and)h(GNU)h Fl(gperf)1425 +b Fq(10)150 299 y Fn(2)80 b(Static)53 b(searc)l(h)g(structures)e(and)j +(GNU)f Fk(gperf)275 533 y Fq(A)24 b Fm(static)i(searc)m(h)f(structure)k +Fq(is)c(an)f(Abstract)h(Data)i(T)m(yp)s(e)c(with)i(certain)g(fundamen)m +(tal)f(op)s(erations,)150 643 y(e.g.,)32 b Fj(initialize)p +Fq(,)g Fj(insert)p Fq(,)f(and)f Fj(r)-5 b(etrieve)p Fq(.)42 b(Conceptually)-8 b(,)32 b(all)g(insertions)f(o)s(ccur)f(b)s(efore)h (an)m(y)g(retriev)-5 b(als.)150 752 y(In)20 b(practice,)25 -b Fn(gperf)19 b Fs(generates)k(a)e Fl(static)27 b Fs(arra)m(y)22 +b Fl(gperf)19 b Fq(generates)k(a)e Fj(static)27 b Fq(arra)m(y)22 b(con)m(taining)g(searc)m(h)g(set)f(k)m(eyw)m(ords)h(and)e(an)m(y)h (asso)s(ciated)150 862 y(attributes)37 b(sp)s(eci\014ed)f(b)m(y)h(the)f (user.)59 b(Th)m(us,)37 b(there)g(is)g(essen)m(tially)h(no)f (execution-time)i(cost)e(for)g(the)150 971 y(insertions.)j(It)27 b(is)g(a)g(useful)g(data)g(structure)g(for)g(represen)m(ting)g -Fl(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fs(.)40 b(Static)28 +Fj(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fq(.)40 b(Static)28 b(searc)m(h)g(sets)150 1081 y(o)s(ccur)c(frequen)m(tly)h(in)f(soft)m(w) m(are)i(system)e(applications.)40 b(T)m(ypical)25 b(static)h(searc)m(h) f(sets)g(include)f(compiler)150 1191 y(reserv)m(ed)42 b(w)m(ords,)j(assem)m(bler)e(instruction)f(op)s(co)s(des,)j(and)c (built-in)h(shell)h(in)m(terpreter)f(commands.)150 1300 -y(Searc)m(h)g(set)g(mem)m(b)s(ers,)h(called)g Fo(k)m(eyw)m(ords)p -Fs(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k +y(Searc)m(h)g(set)g(mem)m(b)s(ers,)h(called)g Fm(k)m(eyw)m(ords)p +Fq(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k (usually)150 1410 y(during)29 b(program)h(initialization,)k(and)c(are)g (not)h(generally)h(mo)s(di\014ed)d(at)i(run-time.)275 1544 y(Numerous)c(static)i(searc)m(h)g(structure)e(implemen)m(tations)i @@ -4012,32 +3702,32 @@ Fs(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k b(hash)g(tables.)83 b(Di\013eren)m(t)45 b(approac)m(hes)g(o\013er)f (trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)g(and)f (searc)m(h)g(time)g(e\016ciency)-8 b(.)77 b(F)-8 b(or)42 -b(example,)k(an)41 b Fo(n)h Fs(elemen)m(t)h(sorted)150 +b(example,)k(an)41 b Fm(n)h Fq(elemen)m(t)h(sorted)150 1873 y(arra)m(y)d(is)g(space)h(e\016cien)m(t,)i(though)d(the)g(a)m(v)m (erage-case)k(time)c(complexit)m(y)i(for)e(retriev)-5 b(al)41 b(op)s(erations)150 1983 y(using)31 b(binary)f(searc)m(h)i(is)f -(prop)s(ortional)g(to)g(log)i Fo(n)p Fs(.)42 b(Con)m(v)m(ersely)-8 +(prop)s(ortional)g(to)g(log)i Fm(n)p Fq(.)42 b(Con)m(v)m(ersely)-8 b(,)33 b(hash)d(table)i(implemen)m(tations)h(often)150 2092 y(lo)s(cate)27 b(a)f(table)g(en)m(try)g(in)f(constan)m(t)i(time,)g (but)e(t)m(ypically)i(imp)s(ose)e(additional)i(memory)e(o)m(v)m(erhead) i(and)150 2202 y(exhibit)k(p)s(o)s(or)e(w)m(orst)i(case)g(p)s -(erformance.)275 2336 y Fl(Minimal)26 b(p)-5 b(erfe)g(ct)28 -b(hash)f(functions)32 b Fs(pro)m(vide)24 b(an)f(optimal)i(solution)f +(erformance.)275 2336 y Fj(Minimal)26 b(p)-5 b(erfe)g(ct)28 +b(hash)f(functions)32 b Fq(pro)m(vide)24 b(an)f(optimal)i(solution)f (for)f(a)h(particular)g(class)h(of)e(static)150 2446 y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)f(p)s(erfect)g(hash)g (function)g(is)h(de\014ned)e(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225 -2580 y Fq(\017)60 b Fs(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition) +2580 y Fo(\017)60 b Fq(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition) h(in)e(a)h(static)h(searc)m(h)f(set)g(using)f(at)h(most)g -Fl(one)41 b Fs(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30 +Fj(one)41 b Fq(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30 b(table.)41 b(This)30 b(represen)m(ts)g(the)h(\\p)s(erfect")g(prop)s -(ert)m(y)-8 b(.)225 2824 y Fq(\017)60 b Fs(The)35 b(actual)j(memory)e +(ert)m(y)-8 b(.)225 2824 y Fo(\017)60 b Fq(The)35 b(actual)j(memory)e (allo)s(cated)i(to)e(store)h(the)f(k)m(eyw)m(ords)h(is)f(precisely)g (large)h(enough)f(for)g(the)330 2934 y(k)m(eyw)m(ord)31 -b(set,)g(and)f Fl(no)j(lar)-5 b(ger)p Fs(.)42 b(This)29 +b(set,)g(and)f Fj(no)j(lar)-5 b(ger)p Fq(.)42 b(This)29 b(is)i(the)f(\\minimal")i(prop)s(ert)m(y)-8 b(.)275 3093 y(F)g(or)38 b(most)g(applications)h(it)f(is)g(far)f(easier)i(to)f -(generate)h Fl(p)-5 b(erfe)g(ct)47 b Fs(hash)37 b(functions)g(than)h -Fl(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fs(hash)36 +(generate)h Fj(p)-5 b(erfe)g(ct)47 b Fq(hash)37 b(functions)g(than)h +Fj(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fq(hash)36 b(functions.)60 b(Moreo)m(v)m(er,)41 b(non-minimal)c(p)s(erfect)g(hash) f(functions)g(frequen)m(tly)i(execute)150 3313 y(faster)44 b(than)g(minimal)g(ones)g(in)f(practice.)83 b(This)43 @@ -4045,10 +3735,10 @@ b(phenomena)g(o)s(ccurs)g(since)h(searc)m(hing)h(a)f(sparse)150 3422 y(k)m(eyw)m(ord)34 b(table)g(increases)g(the)g(probabilit)m(y)f (of)h(lo)s(cating)h(a)e(\\n)m(ull")i(en)m(try)-8 b(,)35 b(thereb)m(y)e(reducing)g(string)150 3532 y(comparisons.)56 -b Fn(gperf)p Fs('s)34 b(default)h(b)s(eha)m(vior)g(generates)i -Fl(ne)-5 b(ar-minimal)47 b Fs(p)s(erfect)35 b(hash)f(functions)h(for) +b Fl(gperf)p Fq('s)34 b(default)h(b)s(eha)m(vior)g(generates)i +Fj(ne)-5 b(ar-minimal)47 b Fq(p)s(erfect)35 b(hash)f(functions)h(for) 150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44 -b Fn(gperf)39 b Fs(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f +b Fl(gperf)39 b Fq(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f (user)g(con)m(trol)i(o)m(v)m(er)g(the)150 3751 y(degree)31 b(of)g(minimalit)m(y)g(and)f(p)s(erfection.)275 3885 y(Static)37 b(searc)m(h)f(sets)g(often)g(exhibit)g(relativ)m(e)i @@ -4057,44 +3747,44 @@ b(example,)i(Ada's)e(63)h(re-)150 3995 y(serv)m(ed)31 b(w)m(ords)f(ha)m(v)m(e)i(remained)e(constan)m(t)i(for)f(nearly)g(a)g (decade.)42 b(It)31 b(is)g(therefore)g(frequen)m(tly)g(w)m(orth-)150 4105 y(while)22 b(to)h(exp)s(end)e(concerted)i(e\013ort)g(building)e -(an)h(optimal)i(searc)m(h)e(structure)g Fl(onc)-5 b(e)p -Fs(,)25 b(if)d(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)f -(use)e(m)m(ultiple)i(times.)39 b Fn(gperf)22 b Fs(remo)m(v)m(es)i(the)f +(an)h(optimal)i(searc)m(h)e(structure)g Fj(onc)-5 b(e)p +Fq(,)25 b(if)d(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)f +(use)e(m)m(ultiple)i(times.)39 b Fl(gperf)22 b Fq(remo)m(v)m(es)i(the)f (drudgery)f(asso)s(ciated)j(with)d(constructing)150 4324 y(time-)38 b(and)f(space-e\016cien)m(t)j(searc)m(h)d(structures)g(b)m (y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)g(and)f (practical)150 4433 y(to)s(ol)29 b(for)f(serious)g(programming)g(pro)5 -b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(is)i(curren)m(tly)h +b(jects.)40 b(Output)27 b(from)h Fl(gperf)e Fq(is)i(curren)m(tly)h (used)e(in)h(sev)m(eral)h(pro-)150 4543 y(duction)d(and)e(researc)m(h)j -(compilers,)g(including)e(GNU)h(C,)g(GNU)g(C)p Fn(++)p -Fs(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)j(and)150 +(compilers,)g(including)e(GNU)h(C,)g(GNU)g(C)p Fl(++)p +Fq(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)j(and)150 4653 y(GNU)38 b(Mo)s(dula)f(3.)63 b(The)36 b(latter)j(t)m(w)m(o)g (compilers)f(are)f(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)h(GNU)f (distribu-)150 4762 y(tion.)51 b(Eac)m(h)34 b(compiler)g(utilizes)h -Fn(gperf)d Fs(to)i(automatically)i(generate)f(static)g(searc)m(h)f +Fl(gperf)d Fq(to)i(automatically)i(generate)f(static)g(searc)m(h)f (structures)f(that)150 4872 y(e\016cien)m(tly)f(iden)m(tify)f(their)f (resp)s(ectiv)m(e)i(reserv)m(ed)e(k)m(eyw)m(ords.)p eop end %%Page: 11 13 -TeXDict begin 11 12 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(11)150 299 y Fp(3)80 b(High-Lev)l(el)52 b(Description)f(of)j(GNU)g -Fm(gperf)275 539 y Fs(The)29 b(p)s(erfect)h(hash)g(function)g -(generator)h Fn(gperf)e Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i +TeXDict begin 11 12 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(11)150 299 y Fn(3)80 b(High-Lev)l(el)52 b(Description)f(of)j(GNU)g +Fk(gperf)275 539 y Fq(The)29 b(p)s(erfect)h(hash)g(function)g +(generator)h Fl(gperf)e Fq(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i (from)d(an)i(input)e(\014le)150 648 y(\(or)34 b(from)g(the)g(standard)f (input)g(b)m(y)h(default\).)52 b(It)34 b(attempts)h(to)f(deriv)m(e)h(a) f(p)s(erfect)g(hashing)f(function)150 758 y(that)k(recognizes)i(a)e -(mem)m(b)s(er)f(of)h(the)g Fo(static)h(k)m(eyw)m(ord)f(set)j -Fs(with)c(at)i(most)f(a)g(single)g(prob)s(e)f(in)m(to)i(the)150 -867 y(lo)s(okup)26 b(table.)41 b(If)26 b Fn(gperf)f Fs(succeeds)i(in)g +(mem)m(b)s(er)f(of)h(the)g Fm(static)h(k)m(eyw)m(ord)f(set)j +Fq(with)c(at)i(most)f(a)g(single)g(prob)s(e)f(in)m(to)i(the)150 +867 y(lo)s(okup)26 b(table.)41 b(If)26 b Fl(gperf)f Fq(succeeds)i(in)g (generating)h(suc)m(h)e(a)h(function)f(it)i(pro)s(duces)d(a)i(pair)g (of)f(C)h(source)150 977 y(co)s(de)39 b(routines)g(that)h(p)s(erform)d (hashing)i(and)f(table)i(lo)s(okup)e(recognition.)69 b(All)39 b(generated)h(C)f(co)s(de)150 1086 y(is)f(directed)g(to)g(the) g(standard)f(output.)62 b(Command-line)38 b(options)g(describ)s(ed)e(b) s(elo)m(w)i(allo)m(w)h(y)m(ou)f(to)150 1196 y(mo)s(dify)30 -b(the)g(input)g(and)f(output)h(format)h(to)g Fn(gperf)p -Fs(.)275 1332 y(By)23 b(default,)i Fn(gperf)d Fs(attempts)i(to)g(pro)s +b(the)g(input)g(and)f(output)h(format)h(to)g Fl(gperf)p +Fq(.)275 1332 y(By)23 b(default,)i Fl(gperf)d Fq(attempts)i(to)g(pro)s (duce)e(time-e\016cien)m(t)k(co)s(de,)f(with)e(less)h(emphasis)e(on)h (e\016cien)m(t)150 1442 y(space)31 b(utilization.)43 b(Ho)m(w)m(ev)m(er,)33 b(sev)m(eral)e(options)g(exist)g(that)g(p)s @@ -4103,73 +3793,73 @@ y(storage)i(space)f(and)g(vice)g(v)m(ersa.)46 b(In)31 b(particular,)h(expanding)f(the)h(generated)h(table)g(size)f(pro)s (duces)f(a)150 1661 y(sparse)26 b(searc)m(h)g(structure,)h(generally)g (yielding)f(faster)h(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 -b(,)28 b(y)m(ou)f(can)f(direct)g Fn(gperf)150 1771 y -Fs(to)21 b(utilize)h(a)f(C)f Fn(switch)f Fs(statemen)m(t)k(sc)m(heme)e +b(,)28 b(y)m(ou)f(can)f(direct)g Fl(gperf)150 1771 y +Fq(to)21 b(utilize)h(a)f(C)f Fl(switch)f Fq(statemen)m(t)k(sc)m(heme)e (that)g(minimizes)g(data)g(space)g(storage)h(size.)39 -b(F)-8 b(urthermore,)150 1880 y(using)40 b(a)g(C)g Fn(switch)e -Fs(ma)m(y)i(actually)i(sp)s(eed)d(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 +b(F)-8 b(urthermore,)150 1880 y(using)40 b(a)g(C)g Fl(switch)e +Fq(ma)m(y)i(actually)i(sp)s(eed)d(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 b(al)41 b(time)g(somewhat.)70 b(Actual)150 1990 y(results)30 b(dep)s(end)f(on)h(y)m(our)g(C)g(compiler,)i(of)e(course.)275 -2126 y(In)44 b(general,)50 b Fn(gperf)44 b Fs(assigns)h(v)-5 +2126 y(In)44 b(general,)50 b Fl(gperf)44 b Fq(assigns)h(v)-5 b(alues)46 b(to)g(the)f(b)m(ytes)h(it)g(is)f(using)g(for)g(hashing)f (un)m(til)i(some)f(set)150 2236 y(of)d(v)-5 b(alues)43 b(giv)m(es)g(eac)m(h)h(k)m(eyw)m(ord)e(a)h(unique)e(v)-5 b(alue.)77 b(A)42 b(helpful)f(heuristic)i(is)f(that)h(the)f(larger)h (the)150 2345 y(hash)36 b(v)-5 b(alue)37 b(range,)i(the)e(easier)h(it)f -(is)g(for)f Fn(gperf)f Fs(to)j(\014nd)d(and)h(generate)i(a)f(p)s +(is)g(for)f Fl(gperf)f Fq(to)j(\014nd)d(and)h(generate)i(a)f(p)s (erfect)g(hash)f(function.)150 2455 y(Exp)s(erimen)m(tation)31 b(is)f(the)h(k)m(ey)g(to)g(getting)h(the)f(most)g(from)e -Fn(gperf)p Fs(.)150 2717 y Fr(3.1)68 b(Input)44 b(F)-11 -b(ormat)46 b(to)f Fk(gperf)275 2911 y Fs(Y)-8 b(ou)38 +Fl(gperf)p Fq(.)150 2717 y Fp(3.1)68 b(Input)44 b(F)-11 +b(ormat)46 b(to)f Fi(gperf)275 2911 y Fq(Y)-8 b(ou)38 b(can)g(con)m(trol)i(the)e(input)f(\014le)h(format)g(b)m(y)g(v)-5 b(arying)38 b(certain)g(command-line)h(argumen)m(ts,)h(in)150 -3021 y(particular)f(the)g(`)p Fn(-t)p Fs(')g(option.)66 +3021 y(particular)f(the)g(`)p Fl(-t)p Fq(')g(option.)66 b(The)38 b(input's)g(app)s(earance)h(is)g(similar)g(to)g(GNU)h -(utilities)g Fn(flex)e Fs(and)150 3131 y Fn(bison)29 -b Fs(\(or)i(UNIX)f(utilities)i Fn(lex)e Fs(and)f Fn(yacc)p -Fs(\).)40 b(Here's)31 b(an)g(outline)g(of)f(the)h(general)g(format:)390 -3261 y Fn(declarations)390 3365 y(\045\045)390 3469 y(keywords)390 -3572 y(\045\045)390 3676 y(functions)275 3806 y Fl(Unlike)41 -b Fn(flex)35 b Fs(or)g Fn(bison)p Fs(,)h(the)g(declarations)g(section)h +(utilities)g Fl(flex)e Fq(and)150 3131 y Fl(bison)29 +b Fq(\(or)i(UNIX)f(utilities)i Fl(lex)e Fq(and)f Fl(yacc)p +Fq(\).)40 b(Here's)31 b(an)g(outline)g(of)f(the)h(general)g(format:)390 +3261 y Fl(declarations)390 3365 y(\045\045)390 3469 y(keywords)390 +3572 y(\045\045)390 3676 y(functions)275 3806 y Fj(Unlike)41 +b Fl(flex)35 b Fq(or)g Fl(bison)p Fq(,)h(the)g(declarations)g(section)h (and)e(the)h(functions)f(section)i(are)f(optional.)150 3915 y(The)30 b(follo)m(wing)i(sections)f(describ)s(e)f(the)g(input)g (format)h(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)g(p)s(ossible)g (to)h(omit)g(the)g(declaration)h(section)f(en)m(tirely)-8 -b(,)35 b(if)d(the)h(`)p Fn(-t)p Fs(')f(option)h(is)f(not)h(giv)m(en.)48 +b(,)35 b(if)d(the)h(`)p Fl(-t)p Fq(')f(option)h(is)f(not)h(giv)m(en.)48 b(In)150 4161 y(this)30 b(case)i(the)e(input)g(\014le)g(b)s(egins)g (directly)h(with)f(the)h(\014rst)e(k)m(eyw)m(ord)i(line,)g(e.g.:)390 -4292 y Fn(january)390 4395 y(february)390 4499 y(march)390 -4603 y(april)390 4707 y(...)150 4926 y Fj(3.1.1)63 b(Declarations)275 -5121 y Fs(The)33 b(k)m(eyw)m(ord)i(input)f(\014le)g(optionally)i(con)m +4292 y Fl(january)390 4395 y(february)390 4499 y(march)390 +4603 y(april)390 4707 y(...)150 4926 y Fh(3.1.1)63 b(Declarations)275 +5121 y Fq(The)33 b(k)m(eyw)m(ord)i(input)f(\014le)g(optionally)i(con)m (tains)g(a)f(section)g(for)f(including)g(arbitrary)h(C)f(declara-)150 -5230 y(tions)d(and)e(de\014nitions,)h Fn(gperf)f Fs(declarations)j +5230 y(tions)d(and)e(de\014nitions,)h Fl(gperf)f Fq(declarations)j (that)f(act)g(lik)m(e)h(command-line)f(options,)g(as)f(w)m(ell)i(as)e -(for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fn(struct)p -Fs(.)p eop end +(for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fl(struct)p +Fq(.)p eop end %%Page: 12 14 -TeXDict begin 12 13 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(12)150 299 y Fj(3.1.1.1)63 b(User-supplied)43 b -Fi(struct)275 500 y Fs(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)h(\(or,) -i(equiv)-5 b(alen)m(tly)d(,)28 b(the)d(`)p Fn(\045struct-type)p -Fs(')d(declaration\))k Fl(is)32 b Fs(enabled,)26 b(y)m(ou)f -Fl(must)150 609 y Fs(pro)m(vide)37 b(a)f(C)h Fn(struct)d -Fs(as)j(the)g(last)g(comp)s(onen)m(t)g(in)f(the)h(declaration)h +TeXDict begin 12 13 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(12)150 299 y Fh(3.1.1.1)63 b(User-supplied)43 b +Fg(struct)275 500 y Fq(If)24 b(the)h(`)p Fl(-t)p Fq(')f(option)h(\(or,) +i(equiv)-5 b(alen)m(tly)d(,)28 b(the)d(`)p Fl(\045struct-type)p +Fq(')d(declaration\))k Fj(is)32 b Fq(enabled,)26 b(y)m(ou)f +Fj(must)150 609 y Fq(pro)m(vide)37 b(a)f(C)h Fl(struct)d +Fq(as)j(the)g(last)g(comp)s(onen)m(t)g(in)f(the)h(declaration)h (section)f(from)f(the)h(input)f(\014le.)150 719 y(The)26 b(\014rst)f(\014eld)h(in)g(this)g(struct)g(m)m(ust)g(b)s(e)g(of)g(t)m -(yp)s(e)g Fn(char)j(*)d Fs(or)g Fn(const)j(char)h(*)25 -b Fs(if)h(the)h(`)p Fn(-P)p Fs(')f(option)g(is)h(not)150 -829 y(giv)m(en,)k(or)g(of)f(t)m(yp)s(e)g Fn(int)g Fs(if)g(the)g(option) -h(`)p Fn(-P)p Fs(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)32 -b(the)f(`)p Fn(\045pic)p Fs(')e(declaration\))j(is)f(enabled.)150 +(yp)s(e)g Fl(char)j(*)d Fq(or)g Fl(const)j(char)h(*)25 +b Fq(if)h(the)h(`)p Fl(-P)p Fq(')f(option)g(is)h(not)150 +829 y(giv)m(en,)k(or)g(of)f(t)m(yp)s(e)g Fl(int)g Fq(if)g(the)g(option) +h(`)p Fl(-P)p Fq(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)32 +b(the)f(`)p Fl(\045pic)p Fq(')e(declaration\))j(is)f(enabled.)150 938 y(This)k(\014rst)f(\014eld)h(m)m(ust)h(b)s(e)e(called)j(`)p -Fn(name)p Fs(',)f(although)g(it)g(is)g(p)s(ossible)f(to)h(mo)s(dify)e -(its)i(name)g(with)f(the)150 1048 y(`)p Fn(-K)p Fs(')30 +Fl(name)p Fq(',)f(although)g(it)g(is)g(p)s(ossible)f(to)h(mo)s(dify)e +(its)i(name)g(with)f(the)150 1048 y(`)p Fl(-K)p Fq(')30 b(option)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 b(the)d(`)p -Fn(\045define)f(slot-name)p Fs(')f(declaration\))k(describ)s(ed)e(b)s +Fl(\045define)f(slot-name)p Fq(')f(declaration\))k(describ)s(ed)e(b)s (elo)m(w.)275 1191 y(Here)g(is)h(a)g(simple)f(example,)h(using)f(mon)m (ths)g(of)h(the)f(y)m(ear)i(and)d(their)i(attributes)g(as)f(input:)390 -1328 y Fn(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i +1328 y Fl(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i (days;)g(int)g(leap_days;)e(};)390 1432 y(\045\045)390 1535 y(january,)141 b(1,)47 b(31,)g(31)390 1639 y(february,)93 b(2,)47 b(28,)g(29)390 1743 y(march,)237 b(3,)47 b(31,)g(31)390 @@ -4179,131 +3869,131 @@ b(5,)47 b(31,)g(31)390 2054 y(june,)285 b(6,)47 b(30,)g(30)390 b(8,)47 b(31,)g(31)390 2366 y(september,)e(9,)i(30,)g(30)390 2469 y(october,)93 b(10,)47 b(31,)g(31)390 2573 y(november,)e(11,)i (30,)g(30)390 2677 y(december,)e(12,)i(31,)g(31)275 2813 -y Fs(Separating)25 b(the)g Fn(struct)f Fs(declaration)i(from)f(the)g +y Fq(Separating)25 b(the)g Fl(struct)f Fq(declaration)i(from)f(the)g (list)h(of)f(k)m(eyw)m(ords)h(and)e(other)h(\014elds)g(are)g(a)h(pair)f (of)150 2922 y(consecutiv)m(e)33 b(p)s(ercen)m(t)f(signs,)f(`)p -Fn(\045\045)p Fs(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h +Fl(\045\045)p Fq(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h (\014rst)e(column,)i(as)f(in)g(the)h(UNIX)150 3032 y(utilit)m(y)g -Fn(lex)p Fs(.)275 3175 y(If)k(the)i Fn(struct)d Fs(has)i(already)h(b)s +Fl(lex)p Fq(.)275 3175 y(If)k(the)i Fl(struct)d Fq(has)i(already)h(b)s (een)f(declared)h(in)f(an)g(include)g(\014le,)i(it)f(can)g(b)s(e)e(men) m(tioned)i(in)f(an)150 3284 y(abbreviated)31 b(form,)f(lik)m(e)i(this:) -390 3421 y Fn(struct)46 b(month;)390 3525 y(\045\045)390 +390 3421 y Fl(struct)46 b(month;)390 3525 y(\045\045)390 3629 y(january,)141 b(1,)47 b(31,)g(31)390 3733 y(...)150 -3966 y Fj(3.1.1.2)63 b(Gp)s(erf)43 b(Declarations)275 -4167 y Fs(The)31 b(declaration)j(section)g(can)e(con)m(tain)i -Fn(gperf)c Fs(declarations.)48 b(They)32 b(in\015uence)g(the)g(w)m(a)m -(y)h Fn(gperf)150 4276 y Fs(w)m(orks,)43 b(lik)m(e)f(command)f(line)g +3966 y Fh(3.1.1.2)63 b(Gp)s(erf)43 b(Declarations)275 +4167 y Fq(The)31 b(declaration)j(section)g(can)e(con)m(tain)i +Fl(gperf)c Fq(declarations.)48 b(They)32 b(in\015uence)g(the)g(w)m(a)m +(y)h Fl(gperf)150 4276 y Fq(w)m(orks,)43 b(lik)m(e)f(command)f(line)g (options)g(do.)72 b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)i (is)f(equiv)-5 b(alen)m(t)42 b(to)g(a)150 4386 y(command)30 b(line)h(option.)41 b(There)30 b(are)h(three)f(forms)g(of)h (declarations:)199 4529 y(1.)61 b(Declarations)33 b(without)d(argumen)m -(t,)h(lik)m(e)h(`)p Fn(\045compare-lengths)p Fs('.)199 +(t,)h(lik)m(e)h(`)p Fl(\045compare-lengths)p Fq('.)199 4667 y(2.)61 b(Declarations)33 b(with)d(an)g(argumen)m(t,)h(lik)m(e)h -(`)p Fn(\045switch=)p Fo(coun)m(t)r Fs('.)199 4806 y(3.)61 +(`)p Fl(\045switch=)p Fm(coun)m(t)r Fq('.)199 4806 y(3.)61 b(Declarations)114 b(of)e(names)g(of)g(en)m(tities)i(in)d(the)h(output) -g(\014le,)132 b(lik)m(e)114 b(`)p Fn(\045define)330 4916 -y(lookup-function-name)25 b Fo(name)5 b Fs('.)275 5088 +g(\014le,)132 b(lik)m(e)114 b(`)p Fl(\045define)330 4916 +y(lookup-function-name)25 b Fm(name)5 b Fq('.)275 5088 y(When)35 b(a)h(declaration)h(is)f(giv)m(en)g(b)s(oth)f(in)h(the)f (input)g(\014le)h(and)f(as)h(a)g(command)f(line)h(option,)i(the)150 5197 y(command-line)31 b(option's)g(v)-5 b(alue)31 b(prev)-5 -b(ails.)275 5340 y(The)29 b(follo)m(wing)j Fn(gperf)d -Fs(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end +b(ails.)275 5340 y(The)29 b(follo)m(wing)j Fl(gperf)d +Fq(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end %%Page: 13 15 -TeXDict begin 13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(13)150 299 y(`)p Fn(\045delimiters=)p Fo(delimiter-list)r -Fs(')630 408 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g +TeXDict begin 13 14 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(13)150 299 y(`)p Fl(\045delimiters=)p Fm(delimiter-list)r +Fq(')630 408 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g (con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 518 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h -Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j +Fl(")p Fq(,)p Fl(")p Fq(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j (if)d(y)m(ou)h(w)m(an)m(t)630 628 y(to)c(use)f(k)m(eyw)m(ords)h(that)g (ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150 -774 y(`)p Fn(\045struct-type)p Fs(')630 883 y(Allo)m(ws)i(y)m(ou)e(to)i -(include)e(a)h Fn(struct)d Fs(t)m(yp)s(e)j(declaration)h(for)e +774 y(`)p Fl(\045struct-type)p Fq(')630 883 y(Allo)m(ws)i(y)m(ou)e(to)i +(include)e(a)h Fl(struct)d Fq(t)m(yp)s(e)j(declaration)h(for)e (generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 993 -y(for)f(an)g(example.)150 1139 y(`)p Fn(\045ignore-case)p -Fs(')630 1249 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g +y(for)f(an)g(example.)150 1139 y(`)p Fl(\045ignore-case)p +Fq(')630 1249 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 b(The)44 b(string)630 1358 y(comparison)28 b(will)h(use)f(a)h(case)g (insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29 b(that)g(lo)s(cale)630 1468 y(dep)s(enden)m(t)g(case)j(mappings)d(are)i -(ignored.)150 1614 y(`)p Fn(\045language=)p Fo(language-name)5 -b Fs(')630 1724 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de) +(ignored.)150 1614 y(`)p Fl(\045language=)p Fm(language-name)5 +b Fq(')630 1724 y(Instructs)33 b Fl(gperf)f Fq(to)i(generate)h(co)s(de) f(in)f(the)h(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-) 630 1833 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m -(tly:)630 1979 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)27 +(tly:)630 1979 y(`)p Fl(KR-C)p Fq(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m (yle)i(C)e(com-)1110 2089 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but) e(ANSI)f(C)h(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 2198 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m -(king)i(`)p Fn(const)p Fs('.)630 2345 y(`)p Fn(C)p Fs(')382 +(king)i(`)p Fl(const)p Fq('.)630 2345 y(`)p Fl(C)p Fq(')382 b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i (ANSI)g(C)f(compilers,)k(and)1110 2454 y(also)k(b)m(y)e(old-st)m(yle)i -(C)f(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fn(#define)f(const)f -Fs(to)1110 2564 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m +(C)f(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fl(#define)f(const)f +Fq(to)1110 2564 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 2710 y(`)p -Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s +Fl(ANSI-C)p Fq(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s (o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 2819 -y(C)p Fn(++)29 b Fs(compilers.)630 2966 y(`)p Fn(C++)p -Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)29 b(language)j(is)f(understo)s -(o)s(d)d(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 3112 y(The)g(default)g -(is)h(C.)150 3258 y(`)p Fn(\045define)e(slot-name)e Fo(name)5 -b Fs(')630 3367 y(This)65 b(declaration)j(is)e(only)g(useful)f(when)g -(option)h(`)p Fn(-t)p Fs(')g(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)77 -b(the)630 3477 y(`)p Fn(\045struct-type)p Fs(')27 b(declaration\))32 +y(C)p Fl(++)29 b Fq(compilers.)630 2966 y(`)p Fl(C++)p +Fq(')286 b(C)p Fl(++)p Fq(.)40 b(This)29 b(language)j(is)f(understo)s +(o)s(d)d(b)m(y)i(C)p Fl(++)g Fq(compilers.)630 3112 y(The)g(default)g +(is)h(C.)150 3258 y(`)p Fl(\045define)e(slot-name)e Fm(name)5 +b Fq(')630 3367 y(This)65 b(declaration)j(is)e(only)g(useful)f(when)g +(option)h(`)p Fl(-t)p Fq(')g(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)77 +b(the)630 3477 y(`)p Fl(\045struct-type)p Fq(')27 b(declaration\))32 b(has)e(b)s(een)g(giv)m(en.)41 b(By)31 b(default,)f(the)g(program)g (assumes)630 3587 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m -(ti\014er)f(for)g(the)g(k)m(eyw)m(ord)h(is)f(`)p Fn(name)p -Fs('.)94 b(This)47 b(option)630 3696 y(allo)m(ws)f(an)e(arbitrary)g(c)m +(ti\014er)f(for)g(the)g(k)m(eyw)m(ord)h(is)f(`)p Fl(name)p +Fq('.)94 b(This)47 b(option)630 3696 y(allo)m(ws)f(an)e(arbitrary)g(c)m (hoice)i(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s(onen)m(t,)k (although)d(it)g(still)630 3806 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g -(\014rst)e(\014eld)h(in)g(y)m(our)h(supplied)e Fn(struct)p -Fs(.)150 3952 y(`)p Fn(\045define)g(initializer-suffix)c -Fo(initializers)t Fs(')630 4061 y(This)65 b(declaration)j(is)e(only)g -(useful)f(when)g(option)h(`)p Fn(-t)p Fs(')g(\(or,)76 -b(equiv)-5 b(alen)m(tly)d(,)77 b(the)630 4171 y(`)p Fn(\045struct-type) -p Fs(')33 b(declaration\))38 b(has)d(b)s(een)g(giv)m(en.)58 +(\014rst)e(\014eld)h(in)g(y)m(our)h(supplied)e Fl(struct)p +Fq(.)150 3952 y(`)p Fl(\045define)g(initializer-suffix)c +Fm(initializers)t Fq(')630 4061 y(This)65 b(declaration)j(is)e(only)g +(useful)f(when)g(option)h(`)p Fl(-t)p Fq(')g(\(or,)76 +b(equiv)-5 b(alen)m(tly)d(,)77 b(the)630 4171 y(`)p Fl(\045struct-type) +p Fq(')33 b(declaration\))38 b(has)d(b)s(een)g(giv)m(en.)58 b(It)36 b(p)s(ermits)f(to)i(sp)s(ecify)e(initializers)630 4281 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)i -Fo(slot-name)51 b Fs(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630 +Fm(slot-name)51 b Fq(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630 4390 y(The)d(list)g(of)h(initializers)g(should)e(start)i(with)f(a)g (comma.)77 b(By)42 b(default,)k(the)c(emitted)630 4500 y(co)s(de)31 b(will)f(zero-initialize)k(structure)c(mem)m(b)s(ers)g -(follo)m(wing)i Fo(slot-name)p Fs(.)150 4646 y(`)p Fn(\045define)d -(hash-function-name)c Fo(name)5 b Fs(')630 4755 y(Allo)m(ws)31 +(follo)m(wing)i Fm(slot-name)p Fq(.)150 4646 y(`)p Fl(\045define)d +(hash-function-name)c Fm(name)5 b Fq(')630 4755 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify)g(the)g(name)g(for)f(the)h(generated)h(hash) e(function.)40 b(Default)31 b(name)630 4865 y(is)f(`)p -Fn(hash)p Fs('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h +Fl(hash)p Fq('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h (t)m(w)m(o)g(hash)f(tables)h(in)f(the)h(same)g(\014le.)150 -5011 y(`)p Fn(\045define)e(lookup-function-name)24 b -Fo(name)5 b Fs(')630 5121 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e +5011 y(`)p Fl(\045define)e(lookup-function-name)24 b +Fm(name)5 b Fq(')630 5121 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e (the)i(name)f(for)f(the)h(generated)h(lo)s(okup)f(function.)75 -b(Default)630 5230 y(name)28 b(is)g(`)p Fn(in_word_set)p -Fs('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f +b(Default)630 5230 y(name)28 b(is)g(`)p Fl(in_word_set)p +Fq('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f (hash)f(functions)630 5340 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g (application.)p eop end %%Page: 14 16 -TeXDict begin 14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(14)150 299 y(`)p Fn(\045define)29 b(class-name)e -Fo(name)5 b Fs(')630 408 y(This)66 b(option)i(is)f(only)h(useful)e -(when)h(option)g(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 -b(equiv)-5 b(alen)m(tly)d(,)79 b(the)630 518 y(`)p Fn(\045language=C++) -p Fs(')43 b(declaration\))k(has)f(b)s(een)f(giv)m(en.)88 +TeXDict begin 14 15 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(14)150 299 y(`)p Fl(\045define)29 b(class-name)e +Fm(name)5 b Fq(')630 408 y(This)66 b(option)i(is)f(only)h(useful)e +(when)h(option)g(`)p Fl(-L)30 b(C++)p Fq(')67 b(\(or,)77 +b(equiv)-5 b(alen)m(tly)d(,)79 b(the)630 518 y(`)p Fl(\045language=C++) +p Fq(')43 b(declaration\))k(has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s(ecify)g(the)630 -628 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)41 -b(Default)32 b(name)e(is)h Fn(Perfect_Hash)p Fs(.)150 -792 y(`)p Fn(\0457bit)p Fs(')190 b(This)36 b(option)i(sp)s(eci\014es)f +628 y(name)30 b(of)h(generated)g(C)p Fl(++)f Fq(class.)41 +b(Default)32 b(name)e(is)h Fl(Perfect_Hash)p Fq(.)150 +792 y(`)p Fl(\0457bit)p Fq(')190 b(This)36 b(option)i(sp)s(eci\014es)f (that)g(all)h(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m (ts)f(to)h(the)630 902 y(generated)e(hash)e(function)g(and)h(the)g (generated)g(lo)s(okup)g(function)f(will)h(solely)h(consist)630 1011 y(of)d(7-bit)h(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g (range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 -1121 y(functions)f Fn(isalnum)f Fs(and)i Fn(isgraph)e -Fs(do)i Fl(not)41 b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f +1121 y(functions)f Fl(isalnum)f Fq(and)i Fl(isgraph)e +Fq(do)i Fj(not)41 b Fq(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f (this)h(range.)630 1230 y(Only)e(an)g(explicit)i(test)f(lik)m(e)h(`)p -Fn(c)e(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fs(')f(guaran)m(tees)j(this.\)) -150 1395 y(`)p Fn(\045compare-lengths)p Fs(')630 1504 +Fl(c)e(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fq(')f(guaran)m(tees)j(this.\)) +150 1395 y(`)p Fl(\045compare-lengths)p Fq(')630 1504 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (string)e(comparison.)70 b(This)39 b(option)h(is)630 1614 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h @@ -4311,376 +4001,386 @@ y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g (comparisons)g(made)g(during)f(the)630 1833 y(lo)s(okup,)i(since)g(k)m (eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h -(compared)f(via)h Fn(strcmp)p Fs(.)630 1943 y(Ho)m(w)m(ev)m(er,)d -(using)d(`)p Fn(\045compare-lengths)p Fs(')c(migh)m(t)29 +(compared)f(via)h Fl(strcmp)p Fq(.)630 1943 y(Ho)m(w)m(ev)m(er,)d +(using)d(`)p Fl(\045compare-lengths)p Fq(')c(migh)m(t)29 b(greatly)h(increase)f(the)g(size)g(of)g(the)f(gen-)630 2052 y(erated)j(C)f(co)s(de)h(if)f(the)h(lo)s(okup)f(table)i(range)e (is)h(large)g(\(whic)m(h)g(implies)g(that)g(the)f(switc)m(h)630 -2162 y(option)24 b(`)p Fn(-S)p Fs(')g(or)g(`)p Fn(\045switch)p -Fs(')f(is)h(not)g(enabled\),)i(since)e(the)g(length)h(table)f(con)m +2162 y(option)24 b(`)p Fl(-S)p Fq(')g(or)g(`)p Fl(\045switch)p +Fq(')f(is)h(not)g(enabled\),)i(since)e(the)g(length)h(table)f(con)m (tains)i(as)e(man)m(y)630 2271 y(elemen)m(ts)32 b(as)e(there)h(are)g (en)m(tries)g(in)f(the)g(lo)s(okup)g(table.)150 2436 -y(`)p Fn(\045compare-strncmp)p Fs(')630 2545 y(Generates)22 -b(C)f(co)s(de)g(that)h(uses)e(the)i Fn(strncmp)d Fs(function)h(to)i(p)s +y(`)p Fl(\045compare-strncmp)p Fq(')630 2545 y(Generates)22 +b(C)f(co)s(de)g(that)h(uses)e(the)i Fl(strncmp)d Fq(function)h(to)i(p)s (erform)e(string)h(comparisons.)630 2655 y(The)30 b(default)g(action)i -(is)f(to)g(use)f Fn(strcmp)p Fs(.)150 2819 y(`)p Fn -(\045readonly-tables)p Fs(')630 2929 y(Mak)m(es)41 b(the)f(con)m(ten)m +(is)f(to)g(use)f Fl(strcmp)p Fq(.)150 2819 y(`)p Fl +(\045readonly-tables)p Fq(')630 2929 y(Mak)m(es)41 b(the)f(con)m(ten)m (ts)h(of)f(all)h(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,) h(\\readonly".)630 3039 y(Man)m(y)31 b(compilers)g(can)g(generate)h (more)e(e\016cien)m(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h (tables)630 3148 y(in)f(readonly)h(memory)-8 b(.)150 -3313 y(`)p Fn(\045enum)p Fs(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 +3313 y(`)p Fl(\045enum)p Fq(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to)f(the)g(lo)s(okup)f (function)g(rather)g(than)630 3422 y(with)37 b(#de\014nes.)60 b(This)36 b(also)i(means)g(that)f(di\013eren)m(t)h(lo)s(okup)f (functions)g(can)g(reside)g(in)630 3532 y(the)31 b(same)f(\014le.)41 -b(Thanks)29 b(to)j(James)e(Clark)g Fn()p -Fs(.)150 3696 y(`)p Fn(\045includes)p Fs(')630 3806 y(Include)g(the)h -(necessary)h(system)f(include)g(\014le,)g Fn()p -Fs(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 3915 y(co)s(de.)39 +b(Thanks)29 b(to)j(James)e(Clark)g Fl()p +Fq(.)150 3696 y(`)p Fl(\045includes)p Fq(')630 3806 y(Include)g(the)h +(necessary)h(system)f(include)g(\014le,)g Fl()p +Fq(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 3915 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e(user)f(m)m(ust)h (include)g(this)f(header)h(\014le)g(himself)630 4025 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 -4189 y(`)p Fn(\045global-table)p Fs(')630 4299 y(Generate)38 +4189 y(`)p Fl(\045global-table)p Fq(')630 4299 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m(ords)g(as)g(a)g(static)h (global)g(v)-5 b(ariable,)39 b(rather)d(than)630 4408 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s(okup)f(function)g(\(whic)m (h)g(is)h(the)f(default)h(b)s(eha)m(vior\).)150 4573 -y(`)p Fn(\045pic)p Fs(')238 b(Optimize)42 b(the)f(generated)h(table)g +y(`)p Fl(\045pic)p Fq(')238 b(Optimize)42 b(the)f(generated)h(table)g (for)f(inclusion)g(in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 4682 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g (a)h(shared)e(library)h(con)m(taining)i(the)e(generated)630 -4792 y(co)s(de.)j(If)21 b(the)h(`)p Fn(\045struct-type)p -Fs(')d(declaration)24 b(\(or,)g(equiv)-5 b(alen)m(tly)d(,)26 -b(the)c(option)g(`)p Fn(-t)p Fs('\))g(is)g(also)630 4902 +4792 y(co)s(de.)j(If)21 b(the)h(`)p Fl(\045struct-type)p +Fq(')d(declaration)24 b(\(or,)g(equiv)-5 b(alen)m(tly)d(,)26 +b(the)c(option)g(`)p Fl(-t)p Fq('\))g(is)g(also)630 4902 y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e -(struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p -Fs(',)f(not)h(`)p Fn(char)630 5011 y(*)p Fs(',)h(b)s(ecause)f(it)i +(struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fl(int)p +Fq(',)f(not)h(`)p Fl(char)630 5011 y(*)p Fq(',)h(b)s(ecause)f(it)i (will)e(con)m(tain)i(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h (instead)f(of)h(actual)h(strings.)630 5121 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f -(can)g(use)f(the)h(expression)f(`)p Fn(stringpool)630 -5230 y(+)e Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)33 +(can)g(use)f(the)h(expression)f(`)p Fl(stringpool)630 +5230 y(+)e Fm(o)5 b Fq(',)34 b(where)f Fm(o)38 b Fq(is)33 b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s -(e)g(c)m(hanged)g(through)g(the)630 5340 y(`)p Fn(\045define)c -(string-pool-name)p Fs(')d(declaration.)p eop end +(e)g(c)m(hanged)g(through)g(the)630 5340 y(`)p Fl(\045define)c +(string-pool-name)p Fq(')d(declaration.)p eop end %%Page: 15 17 -TeXDict begin 15 16 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(15)150 299 y(`)p Fn(\045define)29 b(string-pool-name)d -Fo(name)5 b Fs(')630 408 y(Allo)m(ws)42 b(y)m(ou)f(to)h(sp)s(ecify)f +TeXDict begin 15 16 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(15)150 299 y(`)p Fl(\045define)29 b(string-pool-name)d +Fm(name)5 b Fq(')630 408 y(Allo)m(ws)42 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(of)g(the)g(generated)h(string)f(p)s(o)s(ol)g(created)h(b) -m(y)f(the)630 518 y(declaration)48 b(`)p Fn(\045pic)p -Fs(')e(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)53 b(the)47 -b(option)f(`)p Fn(-P)p Fs('\).)90 b(The)46 b(default)g(name)h(is)630 -628 y(`)p Fn(stringpool)p Fs('.)38 b(This)29 b(declaration)i(p)s +m(y)f(the)630 518 y(declaration)48 b(`)p Fl(\045pic)p +Fq(')e(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)53 b(the)47 +b(option)f(`)p Fl(-P)p Fq('\).)90 b(The)46 b(default)g(name)h(is)630 +628 y(`)p Fl(stringpool)p Fq('.)38 b(This)29 b(declaration)i(p)s (ermits)e(the)h(use)g(of)g(t)m(w)m(o)h(hash)e(tables)h(in)g(the)g(same) -630 737 y(\014le,)39 b(with)d(`)p Fn(\045pic)p Fs(')g(and)g(ev)m(en)h -(when)f(the)h(`)p Fn(\045global-table)p Fs(')c(declaration)38 +630 737 y(\014le,)39 b(with)d(`)p Fl(\045pic)p Fq(')g(and)g(ev)m(en)h +(when)f(the)h(`)p Fl(\045global-table)p Fq(')c(declaration)38 b(\(or,)h(equiv)-5 b(a-)630 847 y(len)m(tly)d(,)32 b(the)f(option)g(`)p -Fn(-G)p Fs('\))f(is)h(giv)m(en.)150 1002 y(`)p Fn(\045null-strings)p -Fs(')630 1112 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i +Fl(-G)p Fq('\))f(is)h(giv)m(en.)150 1074 y(`)p Fl(\045null-strings)p +Fq(')630 1183 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i (strings)e(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 -1221 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f -(a)h(shared)f(library)g(con)m(taining)630 1331 y(the)29 +1293 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f +(a)h(shared)f(library)g(con)m(taining)630 1402 y(the)29 b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m)m(uc)m(h)g(as)f(the)h -(declaration)h(`)p Fn(\045pic)p Fs('\),)f(at)g(the)f(exp)s(ense)630 -1441 y(of)j(one)f(more)h(test-and-branc)m(h)g(instruction)f(at)h(run)e -(time.)150 1596 y(`)p Fn(\045define)g(word-array-name)d -Fo(name)5 b Fs(')630 1706 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f +(declaration)h(`)p Fl(\045pic)p Fq('\),)f(at)g(the)f(exp)s(ense)630 +1512 y(of)j(one)f(more)h(test-and-branc)m(h)g(instruction)f(at)h(run)e +(time.)150 1739 y(`)p Fl(\045define)g(word-array-name)d +Fm(name)5 b Fq(')630 1848 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e -(hash)630 1815 y(table.)106 b(Default)53 b(name)e(is)h(`)p -Fn(wordlist)p Fs('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g -(of)g(t)m(w)m(o)630 1925 y(hash)37 b(tables)h(in)g(the)g(same)g -(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fn(-G)p -Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 -2034 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 -b(is)d(giv)m(en.)150 2190 y(`)p Fn(\045switch=)p Fo(coun)m(t)r -Fs(')630 2299 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e -(a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 -2409 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 +(hash)630 1958 y(table.)106 b(Default)53 b(name)e(is)h(`)p +Fl(wordlist)p Fq('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g +(of)g(t)m(w)m(o)630 2068 y(hash)37 b(tables)h(in)g(the)g(same)g +(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fl(-G)p +Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 +2177 y(`)p Fl(\045global-table)p Fq(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 2404 y(`)p Fl(\045define)f(length-table-name)c +Fm(name)5 b Fq(')630 2514 y(Allo)m(ws)36 b(y)m(ou)e(to)i(sp)s(ecify)e +(the)h(name)f(for)g(the)h(generated)h(arra)m(y)f(con)m(taining)h(the)f +(length)630 2623 y(table.)77 b(Default)43 b(name)g(is)f(`)p +Fl(lengthtable)p Fq('.)74 b(This)41 b(option)i(p)s(ermits)e(the)h(use)g +(of)h(t)m(w)m(o)630 2733 y(length)33 b(tables)h(in)f(the)g(same)g +(\014le,)h(ev)m(en)g(when)e(the)h(option)h(`)p Fl(-G)p +Fq(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)36 b(the)630 +2842 y(`)p Fl(\045global-table)p Fq(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 3069 y(`)p Fl(\045switch=)p Fm(coun)m(t)r +Fq(')630 3179 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e +(a)h Fl(switch)e Fq(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 +3289 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) -630 2518 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 +630 3398 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 -2628 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e +3508 y(ho)m(w)33 b(man)m(y)f Fl(switch)f Fq(statemen)m(ts)k(are)e (generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f -Fn(switch)630 2738 y Fs(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i +Fl(switch)630 3617 y Fq(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i (a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h -(the)g(elemen)m(ts)630 2847 y(in)38 b(eac)m(h)h Fn(switch)p -Fs(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e -(compilers)i(cannot)g(correctly)630 2957 y(generate)29 -b(co)s(de)f(for)f(large)h Fn(switch)e Fs(statemen)m(ts.)41 +(the)g(elemen)m(ts)630 3727 y(in)38 b(eac)m(h)h Fl(switch)p +Fq(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e +(compilers)i(cannot)g(correctly)630 3836 y(generate)29 +b(co)s(de)f(for)f(large)h Fl(switch)e Fq(statemen)m(ts.)41 b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 -3066 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 -3222 y(`)p Fn(\045omit-struct-type)p Fs(')630 3331 y(Prev)m(en)m(ts)f +3946 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 +4173 y(`)p Fl(\045omit-struct-type)p Fq(')630 4282 y(Prev)m(en)m(ts)f (the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)h(to)g(the)f -(output)f(\014le.)40 b(Use)28 b(this)f(option)630 3441 +(output)f(\014le.)40 b(Use)28 b(this)f(option)630 4392 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g(de\014ned)e(elsewhere.)150 -3659 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 -3850 y Fs(Using)26 b(a)g(syn)m(tax)h(similar)f(to)h(GNU)f(utilities)i -Fn(flex)d Fs(and)g Fn(bison)p Fs(,)h(it)g(is)g(p)s(ossible)g(to)g -(directly)h(include)150 3959 y(C)i(source)h(text)g(and)f(commen)m(ts)h +4751 y Fh(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 +5011 y Fq(Using)26 b(a)g(syn)m(tax)h(similar)f(to)h(GNU)f(utilities)i +Fl(flex)d Fq(and)g Fl(bison)p Fq(,)h(it)g(is)g(p)s(ossible)g(to)g +(directly)h(include)150 5121 y(C)i(source)h(text)g(and)f(commen)m(ts)h (v)m(erbatim)g(in)m(to)h(the)e(generated)i(output)e(\014le.)40 -b(This)29 b(is)g(accomplished)150 4069 y(b)m(y)37 b(enclosing)h(the)g +b(This)29 b(is)g(accomplished)150 5230 y(b)m(y)37 b(enclosing)h(the)g (region)g(inside)e(left-justi\014ed)i(surrounding)d(`)p -Fn(\045{)p Fs(',)k(`)p Fn(\045})p Fs(')e(pairs.)61 b(Here)38 -b(is)f(an)g(input)150 4178 y(fragmen)m(t)31 b(based)f(on)g(the)h -(previous)f(example)h(that)g(illustrates)g(this)g(feature:)390 -4305 y Fn(\045{)390 4409 y(#include)46 b()390 -4513 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h -(into)g(the)h(output.)f(*/)390 4616 y(int)h(return_month_days)c -(\(struct)j(month)g(*months,)g(int)h(is_leap_year\);)390 -4720 y(\045})390 4824 y(struct)f(month)g({)i(char)f(*name;)f(int)h -(number;)e(int)i(days;)g(int)g(leap_days;)e(};)390 4928 -y(\045\045)390 5032 y(january,)141 b(1,)47 b(31,)g(31)390 -5135 y(february,)93 b(2,)47 b(28,)g(29)390 5239 y(march,)237 -b(3,)47 b(31,)g(31)390 5343 y(...)p eop end +Fl(\045{)p Fq(',)k(`)p Fl(\045})p Fq(')e(pairs.)61 b(Here)38 +b(is)f(an)g(input)150 5340 y(fragmen)m(t)31 b(based)f(on)g(the)h +(previous)f(example)h(that)g(illustrates)g(this)g(feature:)p +eop end %%Page: 16 18 -TeXDict begin 16 17 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(16)150 299 y Fj(3.1.2)63 b(F)-10 b(ormat)41 b(for)h(Keyw)m(ord)e -(En)m(tries)275 495 y Fs(The)33 b(second)i(input)e(\014le)i(format)g -(section)g(con)m(tains)h(lines)e(of)h(k)m(eyw)m(ords)g(and)e(an)m(y)i -(asso)s(ciated)h(at-)150 605 y(tributes)i(y)m(ou)h(migh)m(t)g(supply)-8 -b(.)64 b(A)39 b(line)f(b)s(eginning)g(with)g(`)p Fn(#)p -Fs(')h(in)f(the)h(\014rst)f(column)g(is)g(considered)h(a)150 -714 y(commen)m(t.)53 b(Ev)m(erything)34 b(follo)m(wing)h(the)g(`)p -Fn(#)p Fs(')f(is)g(ignored,)h(up)e(to)i(and)e(including)h(the)g(follo)m -(wing)h(new-)150 824 y(line.)57 b(A)36 b(line)h(b)s(eginning)e(with)g -(`)p Fn(\045)p Fs(')h(in)g(the)g(\014rst)f(column)g(is)h(an)g(option)g -(declaration)i(and)d(m)m(ust)h(not)150 934 y(o)s(ccur)30 -b(within)g(the)h(k)m(eyw)m(ords)f(section.)275 1072 y(The)36 +TeXDict begin 16 17 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(16)390 299 y Fl(\045{)390 403 y(#include)46 b()390 +506 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h +(into)g(the)h(output.)f(*/)390 610 y(int)h(return_month_days)c +(\(struct)j(month)g(*months,)g(int)h(is_leap_year\);)390 +714 y(\045})390 818 y(struct)f(month)g({)i(char)f(*name;)f(int)h +(number;)e(int)i(days;)g(int)g(leap_days;)e(};)390 922 +y(\045\045)390 1025 y(january,)141 b(1,)47 b(31,)g(31)390 +1129 y(february,)93 b(2,)47 b(28,)g(29)390 1233 y(march,)237 +b(3,)47 b(31,)g(31)390 1337 y(...)150 1632 y Fh(3.1.2)63 +b(F)-10 b(ormat)41 b(for)h(Keyw)m(ord)e(En)m(tries)275 +1865 y Fq(The)33 b(second)i(input)e(\014le)i(format)g(section)g(con)m +(tains)h(lines)e(of)h(k)m(eyw)m(ords)g(and)e(an)m(y)i(asso)s(ciated)h +(at-)150 1974 y(tributes)i(y)m(ou)h(migh)m(t)g(supply)-8 +b(.)64 b(A)39 b(line)f(b)s(eginning)g(with)g(`)p Fl(#)p +Fq(')h(in)f(the)h(\014rst)f(column)g(is)g(considered)h(a)150 +2084 y(commen)m(t.)53 b(Ev)m(erything)34 b(follo)m(wing)h(the)g(`)p +Fl(#)p Fq(')f(is)g(ignored,)h(up)e(to)i(and)e(including)h(the)g(follo)m +(wing)h(new-)150 2193 y(line.)57 b(A)36 b(line)h(b)s(eginning)e(with)g +(`)p Fl(\045)p Fq(')h(in)g(the)g(\014rst)f(column)g(is)h(an)g(option)g +(declaration)i(and)d(m)m(ust)h(not)150 2303 y(o)s(ccur)30 +b(within)g(the)h(k)m(eyw)m(ords)f(section.)275 2477 y(The)36 b(\014rst)g(\014eld)g(of)h(eac)m(h)g(non-commen)m(t)h(line)f(is)g(alw)m (a)m(ys)h(the)f(k)m(eyw)m(ord)g(itself.)60 b(It)37 b(can)g(b)s(e)f(giv) -m(en)150 1181 y(in)f(t)m(w)m(o)h(w)m(a)m(ys:)51 b(as)35 +m(en)150 2587 y(in)f(t)m(w)m(o)h(w)m(a)m(ys:)51 b(as)35 b(a)g(simple)g(name,)i(i.e.,)g(without)e(surrounding)e(string)i -(quotation)h(marks,)g(or)f(as)h(a)150 1291 y(string)i(enclosed)g(in)f +(quotation)h(marks,)g(or)f(as)h(a)150 2696 y(string)i(enclosed)g(in)f (double-quotes,)j(in)d(C)h(syn)m(tax,)i(p)s(ossibly)d(with)g(bac)m -(kslash)h(escap)s(es)g(lik)m(e)h Fn(\\")e Fs(or)150 1401 -y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)37 b(In)24 b(either)h(case,)i +(kslash)h(escap)s(es)g(lik)m(e)h Fl(\\")e Fq(or)150 2806 +y Fl(\\234)23 b Fq(or)i Fl(\\xa8)p Fq(.)37 b(In)24 b(either)h(case,)i (it)e(m)m(ust)f(start)h(righ)m(t)g(at)g(the)g(b)s(eginning)e(of)i(the)g -(line,)h(without)e(leading)150 1510 y(whitespace.)58 +(line,)h(without)e(leading)150 2916 y(whitespace.)58 b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g -(extend)g(up)f(to,)j(but)d(not)h(include,)i(the)150 1620 +(extend)g(up)f(to,)j(but)d(not)h(include,)i(the)150 3025 y(\014rst)g(blank,)i(comma,)i(or)c(newline.)65 b(Here)39 b(is)f(a)h(simple)g(example)g(tak)m(en)g(from)f(a)h(partial)h(list)f -(of)f(C)150 1729 y(reserv)m(ed)31 b(w)m(ords:)390 1862 -y Fn(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g -(c.gperf)f(file)390 1966 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g -(C)g(reserved)f(words.)390 2069 y(unsigned)390 2173 y(sizeof)390 -2277 y(switch)390 2381 y(signed)390 2484 y(if)390 2588 -y(default)390 2692 y(for)390 2796 y(while)390 2900 y(return)275 -3031 y Fs(Note)38 b(that)f(unlik)m(e)g Fn(flex)f Fs(or)h -Fn(bison)e Fs(the)j(\014rst)e(`)p Fn(\045\045)p Fs(')g(mark)m(er)i(ma)m -(y)f(b)s(e)f(elided)h(if)g(the)g(declaration)150 3140 -y(section)32 b(is)e(empt)m(y)-8 b(.)275 3279 y(Additional)29 +(of)f(C)150 3135 y(reserv)m(ed)31 b(w)m(ords:)390 3303 +y Fl(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g +(c.gperf)f(file)390 3407 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g +(C)g(reserved)f(words.)390 3511 y(unsigned)390 3615 y(sizeof)390 +3718 y(switch)390 3822 y(signed)390 3926 y(if)390 4030 +y(default)390 4133 y(for)390 4237 y(while)390 4341 y(return)275 +4508 y Fq(Note)38 b(that)f(unlik)m(e)g Fl(flex)f Fq(or)h +Fl(bison)e Fq(the)j(\014rst)e(`)p Fl(\045\045)p Fq(')g(mark)m(er)i(ma)m +(y)f(b)s(e)f(elided)h(if)g(the)g(declaration)150 4618 +y(section)32 b(is)e(empt)m(y)-8 b(.)275 4792 y(Additional)29 b(\014elds)f(ma)m(y)h(optionally)h(follo)m(w)g(the)f(leading)g(k)m(eyw) m(ord.)41 b(Fields)29 b(should)e(b)s(e)h(separated)150 -3388 y(b)m(y)g(commas,)i(and)d(terminate)j(at)f(the)f(end)g(of)g(line.) +4902 y(b)m(y)g(commas,)i(and)d(terminate)j(at)f(the)f(end)g(of)g(line.) 41 b(What)29 b(these)f(\014elds)g(mean)g(is)h(en)m(tirely)g(up)e(to)i -(y)m(ou;)150 3498 y(they)k(are)h(used)e(to)i(initialize)h(the)f(elemen) -m(ts)g(of)f(the)h(user-de\014ned)d Fn(struct)h Fs(pro)m(vided)g(b)m(y)h -(y)m(ou)h(in)f(the)150 3607 y(declaration)40 b(section.)67 -b(If)39 b(the)g(`)p Fn(-t)p Fs(')f(option)h(\(or,)j(equiv)-5 -b(alen)m(tly)d(,)43 b(the)c(`)p Fn(\045struct-type)p -Fs(')d(declaration\))150 3717 y(is)g Fl(not)45 b Fs(enabled)36 +(y)m(ou;)150 5011 y(they)k(are)h(used)e(to)i(initialize)h(the)f(elemen) +m(ts)g(of)f(the)h(user-de\014ned)d Fl(struct)h Fq(pro)m(vided)g(b)m(y)h +(y)m(ou)h(in)f(the)150 5121 y(declaration)40 b(section.)67 +b(If)39 b(the)g(`)p Fl(-t)p Fq(')f(option)h(\(or,)j(equiv)-5 +b(alen)m(tly)d(,)43 b(the)c(`)p Fl(\045struct-type)p +Fq(')d(declaration\))150 5230 y(is)g Fj(not)45 b Fq(enabled)36 b(these)g(\014elds)g(are)g(simply)f(ignored.)58 b(All)36 b(previous)g(examples)g(except)h(the)f(last)h(one)150 -3826 y(con)m(tain)32 b(k)m(eyw)m(ord)f(attributes.)150 -4058 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 -b(unctions)275 4254 y Fs(The)30 b(optional)i(third)e(section)i(also)g +5340 y(con)m(tain)32 b(k)m(eyw)m(ord)f(attributes.)p +eop end +%%Page: 17 19 +TeXDict begin 17 18 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(17)150 299 y Fh(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 +b(unctions)275 490 y Fq(The)30 b(optional)i(third)e(section)i(also)g (corresp)s(onds)d(closely)j(with)f(con)m(v)m(en)m(tions)i(found)c(in)i -Fn(flex)f Fs(and)150 4364 y Fn(bison)p Fs(.)36 b(All)23 +Fl(flex)f Fq(and)150 600 y Fl(bison)p Fq(.)36 b(All)23 b(text)g(in)f(this)f(section,)k(starting)e(at)g(the)f(\014nal)f(`)p -Fn(\045\045)p Fs(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g -(input)150 4474 y(\014le,)31 b(is)g(included)g(v)m(erbatim)g(in)m(to)h +Fl(\045\045)p Fq(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g +(input)150 710 y(\014le,)31 b(is)g(included)g(v)m(erbatim)g(in)m(to)h (the)f(generated)h(output)f(\014le.)42 b(Naturally)-8 b(,)33 b(it)e(is)g(y)m(our)g(resp)s(onsibilit)m(y)150 -4583 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)g(in)g(this)f -(section)h(is)g(v)-5 b(alid)30 b(C.)150 4815 y Fj(3.1.4)63 +819 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)g(in)g(this)f +(section)h(is)g(v)-5 b(alid)30 b(C.)150 1040 y Fh(3.1.4)63 b(Where)41 b(to)g(place)f(directiv)m(es)g(for)i(GNU)g -Fi(indent)p Fj(.)275 5011 y Fs(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m -(v)m(ok)m(e)h(GNU)f Fn(indent)e Fs(on)h(a)g Fn(gperf)f -Fs(input)h(\014le,)h(y)m(ou)f(will)h(see)g(that)g(GNU)g -Fn(indent)150 5121 y Fs(do)s(esn't)33 b(understand)e(the)i(`)p -Fn(\045\045)p Fs(',)h(`)p Fn(\045{)p Fs(')e(and)h(`)p -Fn(\045})p Fs(')g(directiv)m(es)h(that)f(con)m(trol)i -Fn(gperf)p Fs('s)c(in)m(terpretation)k(of)150 5230 y(the)23 +Fg(indent)p Fh(.)275 1231 y Fq(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m +(v)m(ok)m(e)h(GNU)f Fl(indent)e Fq(on)h(a)g Fl(gperf)f +Fq(input)h(\014le,)h(y)m(ou)f(will)h(see)g(that)g(GNU)g +Fl(indent)150 1341 y Fq(do)s(esn't)33 b(understand)e(the)i(`)p +Fl(\045\045)p Fq(',)h(`)p Fl(\045{)p Fq(')e(and)h(`)p +Fl(\045})p Fq(')g(directiv)m(es)h(that)f(con)m(trol)i +Fl(gperf)p Fq('s)c(in)m(terpretation)k(of)150 1451 y(the)23 b(input)f(\014le.)38 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g -(insert)f(some)g(directiv)m(es)h(for)f(GNU)h Fn(indent)p -Fs(.)36 b(More)24 b(precisely)-8 b(,)150 5340 y(assuming)30 -b(the)h(most)f(general)i(input)d(\014le)i(structure)p -eop end -%%Page: 17 19 -TeXDict begin 17 18 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(17)390 299 y Fn(declarations)44 b(part)j(1)390 403 -y(\045{)390 506 y(verbatim)f(code)390 610 y(\045})390 -714 y(declarations)e(part)j(2)390 818 y(\045\045)390 -922 y(keywords)390 1025 y(\045\045)390 1129 y(functions)150 -1263 y Fs(y)m(ou)31 b(w)m(ould)f(insert)g(`)p Fn(*INDENT-OFF*)p -Fs(')e(and)h(`)p Fn(*INDENT-ON*)p Fs(')f(commen)m(ts)k(as)e(follo)m -(ws:)390 1397 y Fn(/*)47 b(*INDENT-OFF*)e(*/)390 1501 -y(declarations)f(part)j(1)390 1605 y(\045{)390 1709 y(/*)g(*INDENT-ON*) -e(*/)390 1812 y(verbatim)h(code)390 1916 y(/*)h(*INDENT-OFF*)e(*/)390 -2020 y(\045})390 2124 y(declarations)f(part)j(2)390 2227 -y(\045\045)390 2331 y(keywords)390 2435 y(\045\045)390 -2539 y(/*)g(*INDENT-ON*)e(*/)390 2643 y(functions)150 -2906 y Fr(3.2)68 b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f -(Co)t(de)g(with)g Fk(gperf)275 3105 y Fs(Sev)m(eral)28 +(insert)f(some)g(directiv)m(es)h(for)f(GNU)h Fl(indent)p +Fq(.)36 b(More)24 b(precisely)-8 b(,)150 1560 y(assuming)30 +b(the)h(most)f(general)i(input)d(\014le)i(structure)390 +1688 y Fl(declarations)44 b(part)j(1)390 1791 y(\045{)390 +1895 y(verbatim)f(code)390 1999 y(\045})390 2103 y(declarations)e(part) +j(2)390 2207 y(\045\045)390 2310 y(keywords)390 2414 +y(\045\045)390 2518 y(functions)150 2644 y Fq(y)m(ou)31 +b(w)m(ould)f(insert)g(`)p Fl(*INDENT-OFF*)p Fq(')e(and)h(`)p +Fl(*INDENT-ON*)p Fq(')f(commen)m(ts)k(as)e(follo)m(ws:)390 +2772 y Fl(/*)47 b(*INDENT-OFF*)e(*/)390 2875 y(declarations)f(part)j(1) +390 2979 y(\045{)390 3083 y(/*)g(*INDENT-ON*)e(*/)390 +3187 y(verbatim)h(code)390 3291 y(/*)h(*INDENT-OFF*)e(*/)390 +3394 y(\045})390 3498 y(declarations)f(part)j(2)390 3602 +y(\045\045)390 3706 y(keywords)390 3809 y(\045\045)390 +3913 y(/*)g(*INDENT-ON*)e(*/)390 4017 y(functions)150 +4263 y Fp(3.2)68 b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f +(Co)t(de)g(with)g Fi(gperf)275 4454 y Fq(Sev)m(eral)28 b(options)g(con)m(trol)h(ho)m(w)e(the)h(generated)h(C)e(co)s(de)h(app)s (ears)e(on)i(the)g(standard)e(output.)40 b(Tw)m(o)150 -3215 y(C)22 b(function)g(are)g(generated.)39 b(They)22 -b(are)h(called)g Fn(hash)e Fs(and)h Fn(in_word_set)p -Fs(,)f(although)h(y)m(ou)h(ma)m(y)g(mo)s(dify)150 3324 +4564 y(C)22 b(function)g(are)g(generated.)39 b(They)22 +b(are)h(called)g Fl(hash)e Fq(and)h Fl(in_word_set)p +Fq(,)f(although)h(y)m(ou)h(ma)m(y)g(mo)s(dify)150 4673 y(their)32 b(names)g(with)g(a)g(command-line)h(option.)46 b(Both)33 b(functions)f(require)g(t)m(w)m(o)h(argumen)m(ts,)g(a)g -(string,)150 3434 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)h -(parameter,)j Fn(int)42 b Fo(len)p Fs(.)79 b(Their)43 +(string,)150 4783 y Fl(char)c(*)43 b Fm(str)p Fq(,)j(and)d(a)g(length)h +(parameter,)j Fl(int)42 b Fm(len)p Fq(.)79 b(Their)43 b(default)g(function)g(protot)m(yp)s(es)g(are)h(as)150 -3543 y(follo)m(ws:)3525 3796 y(F)-8 b(unction)-3724 b -Fh(unsigned)41 b(int)e Fg(hash)44 b Ff(\()p Fn(const)30 -b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p -Ff(\))390 3905 y Fs(By)35 b(default,)h(the)e(generated)i -Fn(hash)d Fs(function)h(returns)f(an)i(in)m(teger)h(v)-5 -b(alue)34 b(created)i(b)m(y)e(adding)390 4015 y Fo(len)28 -b Fs(to)g(sev)m(eral)h(user-sp)s(eci\014ed)d Fo(str)34 -b Fs(b)m(yte)28 b(p)s(ositions)g(indexed)f(in)m(to)h(an)f -Fo(asso)s(ciated)i(v)-5 b(alues)32 b Fs(table)390 4124 -y(stored)c(in)g(a)g(lo)s(cal)i(static)f(arra)m(y)-8 b(.)41 -b(The)28 b(asso)s(ciated)h(v)-5 b(alues)29 b(table)g(is)f(constructed)g -(in)m(ternally)h(b)m(y)390 4234 y Fn(gperf)34 b Fs(and)g(later)i -(output)e(as)i(a)f(static)i(lo)s(cal)f(C)e(arra)m(y)i(called)g(`)p -Fn(hash_table)p Fs('.)52 b(The)35 b(relev)-5 b(an)m(t)390 -4344 y(selected)28 b(p)s(ositions)f(\(i.e.)41 b(indices)27 -b(in)m(to)h Fo(str)7 b Fs(\))26 b(are)h(sp)s(eci\014ed)f(via)i(the)f(`) -p Fn(-k)p Fs(')g(option)g(when)f(running)390 4453 y Fn(gperf)p -Fs(,)j(as)i(detailed)g(in)f(the)h Fl(Options)39 b Fs(section)31 -b(b)s(elo)m(w)g(\(see)g(Chapter)f(4)h([Options],)f(page)h(19\).)3525 -4705 y(F)-8 b(unction)-3724 b Fg(in)p 253 4705 35 5 v -41 w(w)m(ord)p 542 4705 V 41 w(set)44 b Ff(\()p Fn(const)30 -b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p -Ff(\))390 4815 y Fs(If)k Fo(str)41 b Fs(is)33 b(in)h(the)g(k)m(eyw)m -(ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)f(to)g(that)h(k)m(eyw)m(ord.) -51 b(More)35 b(exactly)-8 b(,)37 b(if)d(the)390 4924 -y(option)d(`)p Fn(-t)p Fs(')g(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 -b(the)e(`)p Fn(\045struct-type)p Fs(')d(declaration\))k(w)m(as)f(giv)m -(en,)h(it)f(returns)f(a)390 5034 y(p)s(oin)m(ter)g(to)h(the)g(matc)m -(hing)h(k)m(eyw)m(ord's)e(structure.)41 b(Otherwise)30 -b(it)h(returns)e Fn(NULL)p Fs(.)275 5230 y(If)39 b(the)i(option)f(`)p -Fn(-c)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)45 b(the)c(`)p -Fn(\045compare-strncmp)p Fs(')36 b(declaration\))42 b(is)e(not)g(used,) -150 5340 y Fo(str)k Fs(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)h -(string)f(of)h(exactly)h(length)e Fo(len)p Fs(.)62 b(If)37 -b(`)p Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 -b(the)p eop end +4892 y(follo)m(ws:)3525 5121 y(F)-8 b(unction)-3724 b +Ff(unsigned)41 b(int)e Fe(hash)44 b Fd(\()p Fl(const)30 +b(char)f(*)h Fm(str)p Fl(,)g(unsigned)e(int)h Fm(len)p +Fd(\))390 5230 y Fq(By)35 b(default,)h(the)e(generated)i +Fl(hash)d Fq(function)h(returns)f(an)i(in)m(teger)h(v)-5 +b(alue)34 b(created)i(b)m(y)e(adding)390 5340 y Fm(len)28 +b Fq(to)g(sev)m(eral)h(user-sp)s(eci\014ed)d Fm(str)34 +b Fq(b)m(yte)28 b(p)s(ositions)g(indexed)f(in)m(to)h(an)f +Fm(asso)s(ciated)i(v)-5 b(alues)32 b Fq(table)p eop end %%Page: 18 20 -TeXDict begin 18 19 bop 150 -116 a Fs(Chapter)30 b(3:)41 -b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 -b Fs(18)150 299 y(`)p Fn(\045compare-strncmp)p Fs(')22 -b(declaration\))28 b(is)e(used,)g Fo(str)32 b Fs(m)m(ust)26 -b(simply)g(b)s(e)f(an)h(arra)m(y)g(of)g Fo(len)g Fs(b)m(ytes)h(and)e -(do)s(es)150 408 y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 -543 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions)e -(is)g(a\013ected)i(b)m(y)f(the)f(follo)m(wing)i(options:)150 -702 y(`)p Fn(-t)p Fs(')150 812 y(`)p Fn(--struct-type)p -Fs(')630 922 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f -Fn(struct)p Fs(.)150 1081 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m -(ts)t Fs(')150 1191 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m -(ts)t Fs(')630 1300 y(Generate)22 b(1)f(or)g(more)g(C)f -Fn(switch)f Fs(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)j(\(and) -c(p)s(oten)m(tially)630 1410 y(sparse\))j(static)h(arra)m(y)-8 +TeXDict begin 18 19 bop 150 -116 a Fq(Chapter)30 b(3:)41 +b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 +b Fq(18)390 299 y(stored)28 b(in)g(a)g(lo)s(cal)i(static)f(arra)m(y)-8 +b(.)41 b(The)28 b(asso)s(ciated)h(v)-5 b(alues)29 b(table)g(is)f +(constructed)g(in)m(ternally)h(b)m(y)390 408 y Fl(gperf)34 +b Fq(and)g(later)i(output)e(as)i(a)f(static)i(lo)s(cal)f(C)e(arra)m(y)i +(called)g(`)p Fl(hash_table)p Fq('.)52 b(The)35 b(relev)-5 +b(an)m(t)390 518 y(selected)28 b(p)s(ositions)f(\(i.e.)41 +b(indices)27 b(in)m(to)h Fm(str)7 b Fq(\))26 b(are)h(sp)s(eci\014ed)f +(via)i(the)f(`)p Fl(-k)p Fq(')g(option)g(when)f(running)390 +628 y Fl(gperf)p Fq(,)j(as)i(detailed)g(in)f(the)h Fj(Options)39 +b Fq(section)31 b(b)s(elo)m(w)g(\(see)g(Chapter)f(4)h([Options],)f +(page)h(19\).)3525 857 y(F)-8 b(unction)-3724 b Fe(in)p +253 857 35 5 v 41 w(w)m(ord)p 542 857 V 41 w(set)44 b +Fd(\()p Fl(const)30 b(char)f(*)h Fm(str)p Fl(,)g(unsigned)e(int)h +Fm(len)p Fd(\))390 967 y Fq(If)k Fm(str)41 b Fq(is)33 +b(in)h(the)g(k)m(eyw)m(ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)f(to)g +(that)h(k)m(eyw)m(ord.)51 b(More)35 b(exactly)-8 b(,)37 +b(if)d(the)390 1076 y(option)d(`)p Fl(-t)p Fq(')g(\(or,)g(equiv)-5 +b(alen)m(tly)d(,)33 b(the)e(`)p Fl(\045struct-type)p +Fq(')d(declaration\))k(w)m(as)f(giv)m(en,)h(it)f(returns)f(a)390 +1186 y(p)s(oin)m(ter)g(to)h(the)g(matc)m(hing)h(k)m(eyw)m(ord's)e +(structure.)41 b(Otherwise)30 b(it)h(returns)e Fl(NULL)p +Fq(.)275 1367 y(If)39 b(the)i(option)f(`)p Fl(-c)p Fq(')g(\(or,)j +(equiv)-5 b(alen)m(tly)d(,)45 b(the)c(`)p Fl(\045compare-strncmp)p +Fq(')36 b(declaration\))42 b(is)e(not)g(used,)150 1477 +y Fm(str)k Fq(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)h(string)f(of)h +(exactly)h(length)e Fm(len)p Fq(.)62 b(If)37 b(`)p Fl(-c)p +Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)150 +1587 y(`)p Fl(\045compare-strncmp)p Fq(')22 b(declaration\))28 +b(is)e(used,)g Fm(str)32 b Fq(m)m(ust)26 b(simply)g(b)s(e)f(an)h(arra)m +(y)g(of)g Fm(len)g Fq(b)m(ytes)h(and)e(do)s(es)150 1696 +y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 +1830 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions) +e(is)g(a\013ected)i(b)m(y)f(the)f(follo)m(wing)i(options:)150 +1987 y(`)p Fl(-t)p Fq(')150 2097 y(`)p Fl(--struct-type)p +Fq(')630 2207 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f +Fl(struct)p Fq(.)150 2364 y(`)p Fl(-S)h Fm(total-switc)m(h-statemen)m +(ts)t Fq(')150 2474 y(`)p Fl(--switch=)p Fm(total-switc)m(h-statemen)m +(ts)t Fq(')630 2583 y(Generate)22 b(1)f(or)g(more)g(C)f +Fl(switch)f Fq(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)j(\(and) +c(p)s(oten)m(tially)630 2693 y(sparse\))j(static)h(arra)m(y)-8 b(.)40 b(Although)23 b(the)g(exact)h(time)g(and)e(space)i(sa)m(vings)g -(of)f(this)g(approac)m(h)630 1519 y(v)-5 b(ary)32 b(according)g(to)h(y) +(of)f(this)g(approac)m(h)630 2802 y(v)-5 b(ary)32 b(according)g(to)h(y) m(our)e(C)g(compiler's)i(degree)f(of)g(optimization,)i(this)d(metho)s -(d)h(often)630 1629 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.) -275 1788 y(If)c(the)h(`)p Fn(-t)p Fs(')g(and)f(`)p Fn(-S)p -Fs(')g(options)i(\(or,)f(equiv)-5 b(alen)m(tly)d(,)31 -b(the)d(`)p Fn(\045struct-type)p Fs(')d(and)i(`)p Fn(\045switch)p -Fs(')g(declara-)150 1898 y(tions\))f(are)f(omitted,)i(the)e(default)g -(action)h(is)f(to)h(generate)g(a)g Fn(char)j(*)24 b Fs(arra)m(y)i(con)m -(taining)g(the)f(k)m(eyw)m(ords,)150 2007 y(together)32 +(d)h(often)630 2912 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.) +275 3070 y(If)c(the)h(`)p Fl(-t)p Fq(')g(and)f(`)p Fl(-S)p +Fq(')g(options)i(\(or,)f(equiv)-5 b(alen)m(tly)d(,)31 +b(the)d(`)p Fl(\045struct-type)p Fq(')d(and)i(`)p Fl(\045switch)p +Fq(')g(declara-)150 3179 y(tions\))f(are)f(omitted,)i(the)e(default)g +(action)h(is)f(to)h(generate)g(a)g Fl(char)j(*)24 b Fq(arra)m(y)i(con)m +(taining)g(the)f(k)m(eyw)m(ords,)150 3289 y(together)32 b(with)e(additional)i(empt)m(y)f(strings)f(used)g(for)g(padding)g(the)g (arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)h(with)150 -2117 y(the)g(v)-5 b(arious)32 b(input)e(and)g(output)h(options,)h(and)f +3398 y(the)g(v)-5 b(arious)32 b(input)e(and)g(output)h(options,)h(and)f (timing)g(the)h(resulting)f(C)g(co)s(de,)h(y)m(ou)f(can)h(determine)150 -2227 y(the)f(b)s(est)f(option)g(c)m(hoices)i(for)f(di\013eren)m(t)f(k)m -(eyw)m(ord)h(set)g(c)m(haracteristics.)150 2484 y Fr(3.3)68 -b(Use)46 b(of)f(NUL)g(b)l(ytes)275 2677 y Fs(By)30 b(default,)h(the)f -(co)s(de)g(generated)i(b)m(y)e Fn(gperf)e Fs(op)s(erates)j(on)f(zero)h -(terminated)g(strings,)f(the)g(usual)150 2786 y(represen)m(tation)41 +3508 y(the)f(b)s(est)f(option)g(c)m(hoices)i(for)f(di\013eren)m(t)f(k)m +(eyw)m(ord)h(set)g(c)m(haracteristics.)150 3763 y Fp(3.3)68 +b(Use)46 b(of)f(NUL)g(b)l(ytes)275 3954 y Fq(By)30 b(default,)h(the)f +(co)s(de)g(generated)i(b)m(y)e Fl(gperf)e Fq(op)s(erates)j(on)f(zero)h +(terminated)g(strings,)f(the)g(usual)150 4064 y(represen)m(tation)41 b(of)e(strings)h(in)f(C.)h(This)e(means)i(that)g(the)g(k)m(eyw)m(ords)g -(in)f(the)h(input)f(\014le)g(m)m(ust)h(not)150 2896 y(con)m(tain)d(NUL) -f(b)m(ytes,)i(and)e(the)g Fo(str)42 b Fs(argumen)m(t)36 -b(passed)g(to)g Fn(hash)f Fs(or)h Fn(in_word_set)d Fs(m)m(ust)j(b)s(e)f -(NUL)150 3005 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f -Fo(len)p Fs(.)275 3140 y(If)k(option)i(`)p Fn(-c)p Fs(')f(\(or,)i -(equiv)-5 b(alen)m(tly)d(,)40 b(the)c(`)p Fn(\045compare-strncmp)p -Fs(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 -3249 y Fo(str)e Fs(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to)h(b)s(e)e +(in)f(the)h(input)f(\014le)g(m)m(ust)h(not)150 4173 y(con)m(tain)d(NUL) +f(b)m(ytes,)i(and)e(the)g Fm(str)42 b Fq(argumen)m(t)36 +b(passed)g(to)g Fl(hash)f Fq(or)h Fl(in_word_set)d Fq(m)m(ust)j(b)s(e)f +(NUL)150 4283 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f +Fm(len)p Fq(.)275 4417 y(If)k(option)i(`)p Fl(-c)p Fq(')f(\(or,)i +(equiv)-5 b(alen)m(tly)d(,)40 b(the)c(`)p Fl(\045compare-strncmp)p +Fq(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 +4526 y Fm(str)e Fq(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to)h(b)s(e)e (NUL)h(terminated.)41 b(The)27 b(co)s(de)h(generated)h(b)m(y)f -Fn(gperf)f Fs(will)h(only)150 3359 y(access)h(the)f(\014rst)g -Fo(len)p Fs(,)g(not)h Fo(len)p Fn(+)p Fo(1)p Fs(,)f(b)m(ytes)h -(starting)g(at)f Fo(str)p Fs(.)40 b(Ho)m(w)m(ev)m(er,)31 +Fl(gperf)f Fq(will)h(only)150 4636 y(access)h(the)f(\014rst)g +Fm(len)p Fq(,)g(not)h Fm(len)p Fl(+)p Fm(1)p Fq(,)f(b)m(ytes)h +(starting)g(at)f Fm(str)p Fq(.)40 b(Ho)m(w)m(ev)m(er,)31 b(the)d(k)m(eyw)m(ords)g(in)g(the)g(input)f(\014le)150 -3469 y(still)k(m)m(ust)g(not)f(con)m(tain)i(NUL)e(b)m(ytes.)275 -3603 y(If)35 b(option)i(`)p Fn(-l)p Fs(')f(\(or,)i(equiv)-5 -b(alen)m(tly)d(,)40 b(the)c(`)p Fn(\045compare-lengths)p -Fs(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 -3713 y(hash)c(table)i(p)s(erforms)d(binary)h(comparison.)47 +4745 y(still)k(m)m(ust)g(not)f(con)m(tain)i(NUL)e(b)m(ytes.)275 +4879 y(If)35 b(option)i(`)p Fl(-l)p Fq(')f(\(or,)i(equiv)-5 +b(alen)m(tly)d(,)40 b(the)c(`)p Fl(\045compare-lengths)p +Fq(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 +4988 y(hash)c(table)i(p)s(erforms)d(binary)h(comparison.)47 b(The)33 b(k)m(eyw)m(ords)g(in)f(the)h(input)f(\014le)g(ma)m(y)i(con)m -(tain)g(NUL)150 3822 y(b)m(ytes,)46 b(written)41 b(in)h(string)g(syn)m -(tax)g(as)g Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)i(and)d(the)h(co)s(de)g -(generated)h(b)m(y)f Fn(gperf)f Fs(will)150 3932 y(treat)i(NUL)e(lik)m +(tain)g(NUL)150 5098 y(b)m(ytes,)46 b(written)41 b(in)h(string)g(syn)m +(tax)g(as)g Fl(\\000)f Fq(or)h Fl(\\x00)p Fq(,)i(and)d(the)h(co)s(de)g +(generated)h(b)m(y)f Fl(gperf)f Fq(will)150 5208 y(treat)i(NUL)e(lik)m (e)i(an)m(y)f(other)g(b)m(yte.)75 b(Also,)45 b(in)c(this)g(case)i(the)f -(`)p Fn(-c)p Fs(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47 -b(the)150 4042 y(`)p Fn(\045compare-strncmp)p Fs(')26 +(`)p Fl(-c)p Fq(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47 +b(the)150 5317 y(`)p Fl(\045compare-strncmp)p Fq(')26 b(declaration\))33 b(is)d(ignored.)p eop end %%Page: 19 21 -TeXDict begin 19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(19)150 299 y -Fp(4)80 b(In)l(v)l(oking)52 b Fm(gperf)275 542 y Fs(There)35 -b(are)i Fl(many)46 b Fs(options)36 b(to)i Fn(gperf)p -Fs(.)57 b(They)36 b(w)m(ere)h(added)e(to)j(mak)m(e)f(the)g(program)f +TeXDict begin 19 20 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(19)150 299 y +Fn(4)80 b(In)l(v)l(oking)52 b Fk(gperf)275 542 y Fq(There)35 +b(are)i Fj(many)46 b Fq(options)36 b(to)i Fl(gperf)p +Fq(.)57 b(They)36 b(w)m(ere)h(added)e(to)j(mak)m(e)f(the)g(program)f (more)g(con-)150 651 y(v)m(enien)m(t)f(for)e(use)g(with)g(real)h (applications.)50 b(\\On-line")34 b(help)f(is)g(readily)h(a)m(v)-5 -b(ailable)36 b(via)e(the)f(`)p Fn(--help)p Fs(')150 761 +b(ailable)36 b(via)e(the)f(`)p Fl(--help)p Fq(')150 761 y(option.)41 b(Here)31 b(is)f(the)h(complete)h(list)f(of)f(options.)150 -1025 y Fr(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g -(Output)g(File)150 1247 y Fs(`)p Fn(--output-file=)p -Fo(\014le)5 b Fs(')630 1357 y(Allo)m(ws)31 b(y)m(ou)g(to)g(sp)s(ecify)f +1025 y Fp(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g +(Output)g(File)150 1247 y Fq(`)p Fl(--output-file=)p +Fm(\014le)5 b Fq(')630 1357 y(Allo)m(ws)31 b(y)m(ou)g(to)g(sp)s(ecify)f (the)h(name)f(of)h(the)f(\014le)h(to)g(whic)m(h)f(the)h(output)f(is)g (written)g(to.)275 1521 y(The)f(results)i(are)f(written)h(to)g (standard)e(output)h(if)h(no)f(output)g(\014le)g(is)h(sp)s(eci\014ed)f -(or)g(if)g(it)h(is)g(`)p Fn(-)p Fs('.)150 1785 y Fr(4.2)68 +(or)g(if)g(it)h(is)g(`)p Fl(-)p Fq('.)150 1785 y Fp(4.2)68 b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g -(File)275 1981 y Fs(These)d(options)h(are)g(also)g(a)m(v)-5 +(File)275 1981 y Fq(These)d(options)h(are)g(also)g(a)m(v)-5 b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le)g(\(see)i (Section)f(3.1.1.2)150 2090 y([Gp)s(erf)30 b(Declarations],)j(page)e -(12\).)150 2254 y(`)p Fn(-e)f Fo(k)m(eyw)m(ord-delimiter-list)r -Fs(')150 2364 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list) -r Fs(')630 2473 y(Allo)m(ws)g(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g +(12\).)150 2254 y(`)p Fl(-e)f Fm(k)m(eyw)m(ord-delimiter-list)r +Fq(')150 2364 y(`)p Fl(--delimiters=)p Fm(k)m(eyw)m(ord-delimiter-list) +r Fq(')630 2473 y(Allo)m(ws)g(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g (con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 2583 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h -Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j +Fl(")p Fq(,)p Fl(")p Fq(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j (if)d(y)m(ou)h(w)m(an)m(t)630 2692 y(to)f(use)e(k)m(eyw)m(ords)h(that)h (ha)m(v)m(e)g(em)m(b)s(edded)e(commas)h(or)g(newlines.)48 b(One)33 b(useful)f(tric)m(k)i(is)630 2802 y(to)d(use)f(-e'T)-8 b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)g(the)f(literal)i(tab)f(c)m -(haracter.)150 2964 y(`)p Fn(-t)p Fs(')150 3074 y(`)p -Fn(--struct-type)p Fs(')630 3183 y(Allo)m(ws)h(y)m(ou)g(to)g(include)f -(a)g Fn(struct)f Fs(t)m(yp)s(e)h(declaration)i(for)e(generated)h(co)s +(haracter.)150 2964 y(`)p Fl(-t)p Fq(')150 3074 y(`)p +Fl(--struct-type)p Fq(')630 3183 y(Allo)m(ws)h(y)m(ou)g(to)g(include)f +(a)g Fl(struct)f Fq(t)m(yp)s(e)h(declaration)i(for)e(generated)h(co)s (de.)44 b(An)m(y)31 b(text)630 3293 y(b)s(efore)43 b(a)i(pair)e(of)h -(consecutiv)m(e)i(`)p Fn(\045\045)p Fs(')d(is)h(considered)g(part)f(of) +(consecutiv)m(e)i(`)p Fl(\045\045)p Fq(')d(is)h(considered)g(part)f(of) h(the)g(t)m(yp)s(e)g(declaration.)630 3403 y(Keyw)m(ords)39 b(and)g(additional)h(\014elds)f(ma)m(y)i(follo)m(w)f(this,)i(one)e (group)f(of)h(\014elds)f(p)s(er)f(line.)630 3512 y(A)31 b(set)g(of)g(examples)g(for)f(generating)i(p)s(erfect)e(hash)g(tables)i -(and)e(functions)g(for)g(Ada,)h(C,)630 3622 y(C)p Fn(++)p -Fs(,)24 b(P)m(ascal,)j(Mo)s(dula)c(2,)j(Mo)s(dula)d(3)h(and)f(Ja)m(v)-5 +(and)e(functions)g(for)g(Ada,)h(C,)630 3622 y(C)p Fl(++)p +Fq(,)24 b(P)m(ascal,)j(Mo)s(dula)c(2,)j(Mo)s(dula)d(3)h(and)f(Ja)m(v)-5 b(aScript)24 b(reserv)m(ed)f(w)m(ords)g(are)h(distributed)630 -3731 y(with)30 b(this)g(release.)150 3894 y(`)p Fn(--ignore-case)p -Fs(')630 4003 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g +3731 y(with)30 b(this)g(release.)150 3894 y(`)p Fl(--ignore-case)p +Fq(')630 4003 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 b(The)44 b(string)630 4113 y(comparison)28 b(will)h(use)f(a)h(case)g (insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29 @@ -4691,117 +4391,117 @@ m(w)m(are)g(case)f(mapping)f(should)f(b)s(e)h(used.)52 b(\(F)-8 b(or)630 4442 y(example,)31 b(in)e(a)g(T)-8 b(urkish)29 b(lo)s(cale,)i(the)f(upp)s(er)d(case)k(equiv)-5 b(alen)m(t)30 b(of)g(the)g(lo)m(w)m(ercase)h(ASCI)s(I)630 -4551 y(letter)42 b(`)p Fn(i)p Fs(')g(is)f(the)g(non-ASCI)s(I)e(c)m -(haracter)k(`)p Fn(capital)29 b(i)h(with)f(dot)g(above)p -Fs('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)d(is)g(b)s +4551 y(letter)42 b(`)p Fl(i)p Fq(')g(is)f(the)g(non-ASCI)s(I)e(c)m +(haracter)k(`)p Fl(capital)29 b(i)h(with)f(dot)g(above)p +Fq('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)d(is)g(b)s (etter)h(to)f(apply)g(an)g(upp)s(ercase)f(or)h(lo)m(w)m(ercase)i(con)m (v)m(ersion)g(on)e(the)g(string)630 4770 y(b)s(efore)30 -b(passing)g(it)h(to)g(the)g Fn(gperf)e Fs(generated)i(function.)150 -5035 y Fr(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for) -f(the)g(Output)f(Co)t(de)275 5230 y Fs(These)e(options)h(are)g(also)g +b(passing)g(it)h(to)g(the)g Fl(gperf)e Fq(generated)i(function.)150 +5035 y Fp(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for) +f(the)g(Output)f(Co)t(de)275 5230 y Fq(These)e(options)h(are)g(also)g (a)m(v)-5 b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le) g(\(see)i(Section)f(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)j (page)e(12\).)p eop end %%Page: 20 22 -TeXDict begin 20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(20)150 299 y(`)p -Fn(-L)30 b Fo(generated-language-name)5 b Fs(')150 408 -y(`)p Fn(--language=)p Fo(generated-language-name)g Fs(')630 -518 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f(in)f(the)h +TeXDict begin 20 21 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(20)150 299 y(`)p +Fl(-L)30 b Fm(generated-language-name)5 b Fq(')150 408 +y(`)p Fl(--language=)p Fm(generated-language-name)g Fq(')630 +518 y(Instructs)33 b Fl(gperf)f Fq(to)i(generate)h(co)s(de)f(in)f(the)h (language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-)630 628 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m(tly:)630 -798 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f +798 y(`)p Fl(KR-C)p Fq(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f (language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m(yle)i(C)e(com-) 1110 907 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but)e(ANSI)f(C)h (compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 1017 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)i(`)p -Fn(const)p Fs('.)630 1187 y(`)p Fn(C)p Fs(')382 b(Common)23 +Fl(const)p Fq('.)630 1187 y(`)p Fl(C)p Fq(')382 b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i(ANSI)g(C)f (compilers,)k(and)1110 1296 y(also)k(b)m(y)e(old-st)m(yle)i(C)f -(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fn(#define)f(const)f -Fs(to)1110 1406 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m +(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fl(#define)f(const)f +Fq(to)1110 1406 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 1576 y(`)p -Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s +Fl(ANSI-C)p Fq(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s (o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 1685 -y(C)p Fn(++)29 b Fs(compilers.)630 1855 y(`)p Fn(C++)p -Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)29 b(language)j(is)f(understo)s -(o)s(d)d(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 2025 y(The)g(default)g -(is)h(C.)150 2195 y(`)p Fn(-a)p Fs(')334 b(This)33 b(option)h(is)f +y(C)p Fl(++)29 b Fq(compilers.)630 1855 y(`)p Fl(C++)p +Fq(')286 b(C)p Fl(++)p Fq(.)40 b(This)29 b(language)j(is)f(understo)s +(o)s(d)d(b)m(y)i(C)p Fl(++)g Fq(compilers.)630 2025 y(The)g(default)g +(is)h(C.)150 2195 y(`)p Fl(-a)p Fq(')334 b(This)33 b(option)h(is)f (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i -(of)f Fn(gperf)p Fs(.)49 b(It)630 2305 y(do)s(es)30 b(not)h(do)f(an)m -(ything.)150 2475 y(`)p Fn(-g)p Fs(')334 b(This)33 b(option)h(is)f +(of)f Fl(gperf)p Fq(.)49 b(It)630 2305 y(do)s(es)30 b(not)h(do)f(an)m +(ything.)150 2475 y(`)p Fl(-g)p Fq(')334 b(This)33 b(option)h(is)f (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i -(of)f Fn(gperf)p Fs(.)49 b(It)630 2584 y(do)s(es)30 b(not)h(do)f(an)m -(ything.)150 2868 y Fr(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g -(Details)i(in)e(the)g(Output)f(Co)t(de)275 3071 y Fs(Most)21 +(of)f Fl(gperf)p Fq(.)49 b(It)630 2584 y(do)s(es)30 b(not)h(do)f(an)m +(ything.)150 2868 y Fp(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g +(Details)i(in)e(the)g(Output)f(Co)t(de)275 3071 y Fq(Most)21 b(of)g(these)g(options)g(are)g(also)h(a)m(v)-5 b(ailable)23 b(as)e(declarations)h(in)f(the)g(input)e(\014le)i(\(see)h(Section)f (3.1.1.2)150 3181 y([Gp)s(erf)30 b(Declarations],)j(page)e(12\).)150 -3356 y(`)p Fn(-K)f Fo(slot-name)5 b Fs(')150 3466 y(`)p -Fn(--slot-name=)p Fo(slot-name)g Fs(')630 3575 y(This)21 -b(option)h(is)g(only)f(useful)g(when)g(option)h(`)p Fn(-t)p -Fs(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 b(the)c(`)p -Fn(\045struct-type)p Fs(')630 3685 y(declaration\))41 +3356 y(`)p Fl(-K)f Fm(slot-name)5 b Fq(')150 3466 y(`)p +Fl(--slot-name=)p Fm(slot-name)g Fq(')630 3575 y(This)21 +b(option)h(is)g(only)f(useful)g(when)g(option)h(`)p Fl(-t)p +Fq(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 b(the)c(`)p +Fl(\045struct-type)p Fq(')630 3685 y(declaration\))41 b(has)e(b)s(een)f(giv)m(en.)67 b(By)39 b(default,)j(the)d(program)g (assumes)f(the)h(structure)630 3795 y(comp)s(onen)m(t)28 b(iden)m(ti\014er)h(for)f(the)g(k)m(eyw)m(ord)g(is)h(`)p -Fn(name)p Fs('.)39 b(This)27 b(option)i(allo)m(ws)g(an)f(arbitrary)630 +Fl(name)p Fq('.)39 b(This)27 b(option)i(allo)m(ws)g(an)f(arbitrary)630 3904 y(c)m(hoice)33 b(of)f(iden)m(ti\014er)g(for)f(this)h(comp)s(onen)m (t,)g(although)g(it)g(still)g(m)m(ust)g(o)s(ccur)f(as)h(the)g(\014rst) -630 4014 y(\014eld)e(in)g(y)m(our)g(supplied)f Fn(struct)p -Fs(.)150 4184 y(`)p Fn(-F)h Fo(initializers)t Fs(')150 -4293 y(`)p Fn(--initializer-suffix=)p Fo(initializers)t -Fs(')630 4403 y(This)21 b(option)h(is)g(only)f(useful)g(when)g(option)h -(`)p Fn(-t)p Fs(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 -b(the)c(`)p Fn(\045struct-type)p Fs(')630 4512 y(declaration\))34 +630 4014 y(\014eld)e(in)g(y)m(our)g(supplied)f Fl(struct)p +Fq(.)150 4184 y(`)p Fl(-F)h Fm(initializers)t Fq(')150 +4293 y(`)p Fl(--initializer-suffix=)p Fm(initializers)t +Fq(')630 4403 y(This)21 b(option)h(is)g(only)f(useful)g(when)g(option)h +(`)p Fl(-t)p Fq(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 +b(the)c(`)p Fl(\045struct-type)p Fq(')630 4512 y(declaration\))34 b(has)f(b)s(een)e(giv)m(en.)49 b(It)32 b(p)s(ermits)g(to)h(sp)s(ecify)f (initializers)i(for)f(the)f(structure)630 4622 y(mem)m(b)s(ers)23 -b(follo)m(wing)i Fo(slot-name)30 b Fs(in)23 b(empt)m(y)h(hash)f(table)h +b(follo)m(wing)i Fm(slot-name)30 b Fq(in)23 b(empt)m(y)h(hash)f(table)h (en)m(tries.)39 b(The)23 b(list)h(of)g(initializers)630 4732 y(should)37 b(start)i(with)g(a)f(comma.)66 b(By)39 b(default,)i(the)e(emitted)g(co)s(de)g(will)f(zero-initialize)630 4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)j -Fo(slot-name)p Fs(.)150 5011 y(`)p Fn(-H)e Fo(hash-function-name)5 -b Fs(')150 5121 y(`)p Fn(--hash-function-name=)p Fo(hash-fu)o -(nction-name)g Fs(')630 5230 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify) +Fm(slot-name)p Fq(.)150 5011 y(`)p Fl(-H)e Fm(hash-function-name)5 +b Fq(')150 5121 y(`)p Fl(--hash-function-name=)p Fm(hash-fu)o +(nction-name)g Fq(')630 5230 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify) g(the)g(name)g(for)f(the)h(generated)h(hash)e(function.)40 -b(Default)31 b(name)630 5340 y(is)f(`)p Fn(hash)p Fs('.)40 +b(Default)31 b(name)630 5340 y(is)f(`)p Fl(hash)p Fq('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h(t)m(w)m(o)g(hash)f (tables)h(in)f(the)h(same)g(\014le.)p eop end %%Page: 21 23 -TeXDict begin 21 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(21)150 299 y(`)p -Fn(-N)30 b Fo(lo)s(okup-function-name)5 b Fs(')150 408 -y(`)p Fn(--lookup-function-name=)p Fo(lo)s(okup-fu)o(nction-name)g -Fs(')630 518 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e(the)i(name)f +TeXDict begin 21 22 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(21)150 299 y(`)p +Fl(-N)30 b Fm(lo)s(okup-function-name)5 b Fq(')150 408 +y(`)p Fl(--lookup-function-name=)p Fm(lo)s(okup-fu)o(nction-name)g +Fq(')630 518 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e(the)i(name)f (for)f(the)h(generated)h(lo)s(okup)f(function.)75 b(Default)630 -628 y(name)28 b(is)g(`)p Fn(in_word_set)p Fs('.)37 b(This)27 +628 y(name)28 b(is)g(`)p Fl(in_word_set)p Fq('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g(application.)150 -938 y(`)p Fn(-Z)f Fo(class-name)5 b Fs(')150 1048 y(`)p -Fn(--class-name=)p Fo(class-name)g Fs(')630 1157 y(This)66 -b(option)i(is)f(only)h(useful)e(when)h(option)g(`)p Fn(-L)30 -b(C++)p Fs(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)79 -b(the)630 1267 y(`)p Fn(\045language=C++)p Fs(')43 b(declaration\))k +938 y(`)p Fl(-Z)f Fm(class-name)5 b Fq(')150 1048 y(`)p +Fl(--class-name=)p Fm(class-name)g Fq(')630 1157 y(This)66 +b(option)i(is)f(only)h(useful)e(when)h(option)g(`)p Fl(-L)30 +b(C++)p Fq(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)79 +b(the)630 1267 y(`)p Fl(\045language=C++)p Fq(')43 b(declaration\))k (has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s (ecify)g(the)630 1377 y(name)30 b(of)h(generated)g(C)p -Fn(++)f Fs(class.)41 b(Default)32 b(name)e(is)h Fn(Perfect_Hash)p -Fs(.)150 1577 y(`)p Fn(-7)p Fs(')150 1687 y(`)p Fn(--seven-bit)p -Fs(')630 1797 y(This)36 b(option)i(sp)s(eci\014es)f(that)g(all)h +Fl(++)f Fq(class.)41 b(Default)32 b(name)e(is)h Fl(Perfect_Hash)p +Fq(.)150 1577 y(`)p Fl(-7)p Fq(')150 1687 y(`)p Fl(--seven-bit)p +Fq(')630 1797 y(This)36 b(option)i(sp)s(eci\014es)f(that)g(all)h (strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m(ts)f(to)h(the) 630 1906 y(generated)e(hash)e(function)g(and)h(the)g(generated)g(lo)s (okup)g(function)f(will)h(solely)h(consist)630 2016 y(of)d(7-bit)h (ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g(range)h(0..127\).) 51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)f -Fn(isalnum)f Fs(and)i Fn(isgraph)e Fs(do)i Fl(not)41 -b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f(this)h(range.)630 +Fl(isalnum)f Fq(and)i Fl(isgraph)e Fq(do)i Fj(not)41 +b Fq(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f(this)h(range.)630 2235 y(Only)26 b(an)g(explicit)i(test)g(lik)m(e)f(`)p -Fn(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')25 b(guaran)m(tees)j +Fl(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fq(')25 b(guaran)m(tees)j (this.\))40 b(This)26 b(w)m(as)h(the)630 2345 y(default)g(in)g(v)m -(ersions)g(of)g Fn(gperf)e Fs(earlier)j(than)e(2.7;)k(no)m(w)d(the)g +(ersions)g(of)g Fl(gperf)e Fq(earlier)j(than)e(2.7;)k(no)m(w)d(the)g (default)g(is)f(to)i(supp)s(ort)d(8-bit)630 2454 y(and)30 -b(m)m(ultib)m(yte)h(c)m(haracters.)150 2655 y(`)p Fn(-l)p -Fs(')150 2765 y(`)p Fn(--compare-lengths)p Fs(')630 2874 +b(m)m(ultib)m(yte)h(c)m(haracters.)150 2655 y(`)p Fl(-l)p +Fq(')150 2765 y(`)p Fl(--compare-lengths)p Fq(')630 2874 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (string)e(comparison.)70 b(This)39 b(option)h(is)630 2984 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h @@ -4809,615 +4509,502 @@ y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g (comparisons)g(made)g(during)f(the)630 3203 y(lo)s(okup,)i(since)g(k)m (eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h -(compared)f(via)h Fn(strcmp)p Fs(.)630 3313 y(Ho)m(w)m(ev)m(er,)j -(using)c(`)p Fn(-l)p Fs(')g(migh)m(t)h(greatly)h(increase)g(the)f(size) +(compared)f(via)h Fl(strcmp)p Fq(.)630 3313 y(Ho)m(w)m(ev)m(er,)j +(using)c(`)p Fl(-l)p Fq(')g(migh)m(t)h(greatly)h(increase)g(the)f(size) g(of)g(the)f(generated)i(C)e(co)s(de)h(if)630 3422 y(the)k(lo)s(okup)g (table)g(range)h(is)f(large)h(\(whic)m(h)f(implies)g(that)g(the)g -(switc)m(h)h(option)f(`)p Fn(-S)p Fs(')g(or)630 3532 -y(`)p Fn(\045switch)p Fs(')29 b(is)i(not)g(enabled\),)h(since)f(the)g +(switc)m(h)h(option)f(`)p Fl(-S)p Fq(')g(or)630 3532 +y(`)p Fl(\045switch)p Fq(')29 b(is)i(not)g(enabled\),)h(since)f(the)g (length)g(table)h(con)m(tains)g(as)f(man)m(y)g(elemen)m(ts)h(as)630 3641 y(there)f(are)f(en)m(tries)i(in)e(the)g(lo)s(okup)g(table.)150 -3842 y(`)p Fn(-c)p Fs(')150 3952 y(`)p Fn(--compare-strncmp)p -Fs(')630 4061 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i -Fn(strncmp)d Fs(function)h(to)i(p)s(erform)e(string)h(comparisons.)630 -4171 y(The)30 b(default)g(action)i(is)f(to)g(use)f Fn(strcmp)p -Fs(.)150 4372 y(`)p Fn(-C)p Fs(')150 4482 y(`)p Fn(--readonly-tables)p -Fs(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)h +3842 y(`)p Fl(-c)p Fq(')150 3952 y(`)p Fl(--compare-strncmp)p +Fq(')630 4061 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i +Fl(strncmp)d Fq(function)h(to)i(p)s(erform)e(string)h(comparisons.)630 +4171 y(The)30 b(default)g(action)i(is)f(to)g(use)f Fl(strcmp)p +Fq(.)150 4372 y(`)p Fl(-C)p Fq(')150 4482 y(`)p Fl(--readonly-tables)p +Fq(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)h (generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,)h(\\readonly".) 630 4701 y(Man)m(y)31 b(compilers)g(can)g(generate)h(more)e(e\016cien)m (t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h(tables)630 -4810 y(in)f(readonly)h(memory)-8 b(.)150 5011 y(`)p Fn(-E)p -Fs(')150 5121 y(`)p Fn(--enum)p Fs(')142 b(De\014ne)31 +4810 y(in)f(readonly)h(memory)-8 b(.)150 5011 y(`)p Fl(-E)p +Fq(')150 5121 y(`)p Fl(--enum)p Fq(')142 b(De\014ne)31 b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to) f(the)g(lo)s(okup)f(function)g(rather)g(than)630 5230 y(with)37 b(#de\014nes.)60 b(This)36 b(also)i(means)g(that)f (di\013eren)m(t)h(lo)s(okup)f(functions)g(can)g(reside)g(in)630 5340 y(the)31 b(same)f(\014le.)41 b(Thanks)29 b(to)j(James)e(Clark)g -Fn()p Fs(.)p eop end +Fl()p Fq(.)p eop end %%Page: 22 24 -TeXDict begin 22 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(22)150 299 y(`)p -Fn(-I)p Fs(')150 408 y(`)p Fn(--includes)p Fs(')630 518 +TeXDict begin 22 23 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(22)150 299 y(`)p +Fl(-I)p Fq(')150 408 y(`)p Fl(--includes)p Fq(')630 518 y(Include)30 b(the)h(necessary)h(system)f(include)g(\014le,)g -Fn()p Fs(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 +Fl()p Fq(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 628 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e (user)f(m)m(ust)h(include)g(this)f(header)h(\014le)g(himself)630 737 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 -883 y(`)p Fn(-G)p Fs(')150 993 y(`)p Fn(--global-table)p -Fs(')630 1103 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m +897 y(`)p Fl(-G)p Fq(')150 1007 y(`)p Fl(--global-table)p +Fq(')630 1117 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m (ords)g(as)g(a)g(static)h(global)g(v)-5 b(ariable,)39 -b(rather)d(than)630 1212 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s +b(rather)d(than)630 1226 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s (okup)f(function)g(\(whic)m(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).) -150 1358 y(`)p Fn(-P)p Fs(')150 1468 y(`)p Fn(--pic)p -Fs(')190 b(Optimize)42 b(the)f(generated)h(table)g(for)f(inclusion)g +150 1386 y(`)p Fl(-P)p Fq(')150 1496 y(`)p Fl(--pic)p +Fq(')190 b(Optimize)42 b(the)f(generated)h(table)g(for)f(inclusion)g (in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 -1577 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g(a)h(shared)e -(library)h(con)m(taining)i(the)e(generated)630 1687 y(co)s(de.)j(If)21 -b(the)h(option)h(`)p Fn(-t)p Fs(')e(\(or,)k(equiv)-5 -b(alen)m(tly)d(,)25 b(the)d(`)p Fn(\045struct-type)p -Fs(')d(declaration\))24 b(is)e(also)630 1797 y(giv)m(en,)32 +1606 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g(a)h(shared)e +(library)h(con)m(taining)i(the)e(generated)630 1715 y(co)s(de.)j(If)21 +b(the)h(option)h(`)p Fl(-t)p Fq(')e(\(or,)k(equiv)-5 +b(alen)m(tly)d(,)25 b(the)d(`)p Fl(\045struct-type)p +Fq(')d(declaration\))24 b(is)e(also)630 1825 y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e(struct)i(m)m -(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p Fs(',)f(not)h(`)p -Fn(char)630 1906 y(*)p Fs(',)h(b)s(ecause)f(it)i(will)e(con)m(tain)i +(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fl(int)p Fq(',)f(not)h(`)p +Fl(char)630 1934 y(*)p Fq(',)h(b)s(ecause)f(it)i(will)e(con)m(tain)i (o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h(instead)f(of)h -(actual)h(strings.)630 2016 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f +(actual)h(strings.)630 2044 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f (an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f(can)g(use)f(the)h -(expression)f(`)p Fn(stringpool)630 2125 y(+)e Fo(o)5 -b Fs(',)34 b(where)f Fo(o)38 b Fs(is)33 b(the)g(o\013set.)50 +(expression)f(`)p Fl(stringpool)630 2153 y(+)e Fm(o)5 +b Fq(',)34 b(where)f Fm(o)38 b Fq(is)33 b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s(e)g(c)m(hanged)g -(through)g(the)630 2235 y(option)e(`)p Fn(--string-pool-name)p -Fs('.)150 2381 y(`)p Fn(-Q)f Fo(string-p)s(o)s(ol-name)5 -b Fs(')150 2491 y(`)p Fn(--string-pool-name=)p Fo(string-p)s(o)s -(ol-name)g Fs(')630 2600 y(Allo)m(ws)32 b(y)m(ou)g(to)g(sp)s(ecify)f +(through)g(the)630 2263 y(option)e(`)p Fl(--string-pool-name)p +Fq('.)150 2423 y(`)p Fl(-Q)f Fm(string-p)s(o)s(ol-name)5 +b Fq(')150 2533 y(`)p Fl(--string-pool-name=)p Fm(string-p)s(o)s +(ol-name)g Fq(')630 2642 y(Allo)m(ws)32 b(y)m(ou)g(to)g(sp)s(ecify)f (the)g(name)h(of)f(the)h(generated)g(string)f(p)s(o)s(ol)g(created)h(b) -m(y)f(option)630 2710 y(`)p Fn(-P)p Fs('.)38 b(The)21 -b(default)g(name)h(is)f(`)p Fn(stringpool)p Fs('.)36 +m(y)f(option)630 2752 y(`)p Fl(-P)p Fq('.)38 b(The)21 +b(default)g(name)h(is)f(`)p Fl(stringpool)p Fq('.)36 b(This)20 b(option)i(p)s(ermits)f(the)g(use)g(of)h(t)m(w)m(o)h(hash)630 -2819 y(tables)i(in)e(the)h(same)g(\014le,)i(with)d(`)p -Fn(-P)p Fs(')h(and)f(ev)m(en)h(when)f(the)h(option)g(`)p -Fn(-G)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 -2929 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))32 -b(is)f(giv)m(en.)150 3075 y(`)p Fn(--null-strings)p Fs(')630 -3185 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i(strings)e +2862 y(tables)i(in)e(the)h(same)g(\014le,)i(with)d(`)p +Fl(-P)p Fq(')h(and)f(ev)m(en)h(when)f(the)h(option)g(`)p +Fl(-G)p Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 +2971 y(the)31 b(`)p Fl(\045global-table)p Fq(')c(declaration\))32 +b(is)f(giv)m(en.)150 3131 y(`)p Fl(--null-strings)p Fq(')630 +3241 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i(strings)e (for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 -3294 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f -(a)h(shared)f(library)g(con)m(taining)630 3404 y(the)j(generated)g(co)s +3351 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f +(a)h(shared)f(library)g(con)m(taining)630 3460 y(the)j(generated)g(co)s (de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)g(`)p -Fn(-P)p Fs('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630 -3513 y(more)31 b(test-and-branc)m(h)f(instruction)h(at)g(run)e(time.) -150 3660 y(`)p Fn(-W)h Fo(hash-table-arra)m(y-name)5 -b Fs(')150 3769 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m -(y-name)g Fs(')630 3879 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f +Fl(-P)p Fq('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630 +3570 y(more)31 b(test-and-branc)m(h)f(instruction)h(at)g(run)e(time.) +150 3730 y(`)p Fl(-W)h Fm(hash-table-arra)m(y-name)5 +b Fq(')150 3839 y(`)p Fl(--word-array-name=)p Fm(hash-table-arra)m +(y-name)g Fq(')630 3949 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e -(hash)630 3988 y(table.)106 b(Default)53 b(name)e(is)h(`)p -Fn(wordlist)p Fs('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g -(of)g(t)m(w)m(o)630 4098 y(hash)37 b(tables)h(in)g(the)g(same)g -(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fn(-G)p -Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 -4208 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 -b(is)d(giv)m(en.)150 4354 y(`)p Fn(-S)g Fo(total-switc)m(h-statemen)m -(ts)t Fs(')150 4463 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m -(ts)t Fs(')630 4573 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h -(use)e(a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 -4682 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 -b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) -630 4792 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 -b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 -4902 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e -(generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f -Fn(switch)630 5011 y Fs(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i -(a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h -(the)g(elemen)m(ts)630 5121 y(in)38 b(eac)m(h)h Fn(switch)p -Fs(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e -(compilers)i(cannot)g(correctly)630 5230 y(generate)29 -b(co)s(de)f(for)f(large)h Fn(switch)e Fs(statemen)m(ts.)41 -b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 -5340 y(Keith)k(Bostic's)h(original)f(C)f(program.)p eop -end +(hash)630 4059 y(table.)106 b(Default)53 b(name)e(is)h(`)p +Fl(wordlist)p Fq('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g +(of)g(t)m(w)m(o)630 4168 y(hash)37 b(tables)h(in)g(the)g(same)g +(\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fl(-G)p +Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 +4278 y(`)p Fl(\045global-table)p Fq(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 4413 y(`)p Fl(--length-table-name=)p +Fm(length-table-arra)m(y-name)5 b Fq(')630 4522 y(Allo)m(ws)36 +b(y)m(ou)e(to)i(sp)s(ecify)e(the)h(name)f(for)g(the)h(generated)h(arra) +m(y)f(con)m(taining)h(the)f(length)630 4632 y(table.)77 +b(Default)43 b(name)g(is)f(`)p Fl(lengthtable)p Fq('.)74 +b(This)41 b(option)i(p)s(ermits)e(the)h(use)g(of)h(t)m(w)m(o)630 +4741 y(length)33 b(tables)h(in)f(the)g(same)g(\014le,)h(ev)m(en)g(when) +e(the)h(option)h(`)p Fl(-G)p Fq(')f(\(or,)h(equiv)-5 +b(alen)m(tly)d(,)36 b(the)630 4851 y(`)p Fl(\045global-table)p +Fq(')27 b(declaration\))33 b(is)d(giv)m(en.)150 5011 +y(`)p Fl(-S)g Fm(total-switc)m(h-statemen)m(ts)t Fq(')150 +5121 y(`)p Fl(--switch=)p Fm(total-switc)m(h-statemen)m(ts)t +Fq(')630 5230 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e +(a)h Fl(switch)e Fq(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 +5340 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 +b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space)p +eop end %%Page: 23 25 -TeXDict begin 23 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(23)150 299 y(`)p -Fn(-T)p Fs(')150 408 y(`)p Fn(--omit-struct-type)p Fs(')630 -518 y(Prev)m(en)m(ts)29 b(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g -(declaration)h(to)g(the)f(output)f(\014le.)40 b(Use)28 -b(this)f(option)630 628 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g -(de\014ned)e(elsewhere.)150 795 y(`)p Fn(-p)p Fs(')334 +TeXDict begin 23 24 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(23)630 299 y(requiremen)m(ts) +43 b(for)h(some)f(input)g(\014les.)80 b(The)43 b(argumen)m(t)h(to)g +(this)f(option)h(determines)630 408 y(ho)m(w)33 b(man)m(y)f +Fl(switch)f Fq(statemen)m(ts)k(are)e(generated.)49 b(A)32 +b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f Fl(switch)630 +518 y Fq(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i(a)d(v)-5 +b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h(the)g +(elemen)m(ts)630 628 y(in)38 b(eac)m(h)h Fl(switch)p +Fq(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e +(compilers)i(cannot)g(correctly)630 737 y(generate)29 +b(co)s(de)f(for)f(large)h Fl(switch)e Fq(statemen)m(ts.)41 +b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 +847 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 +1000 y(`)p Fl(-T)p Fq(')150 1110 y(`)p Fl(--omit-struct-type)p +Fq(')630 1219 y(Prev)m(en)m(ts)f(the)e(transfer)h(of)f(the)h(t)m(yp)s +(e)g(declaration)h(to)g(the)f(output)f(\014le.)40 b(Use)28 +b(this)f(option)630 1329 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g +(de\014ned)e(elsewhere.)150 1483 y(`)p Fl(-p)p Fq(')334 b(This)33 b(option)h(is)f(supp)s(orted)f(for)h(compatibilit)m(y)j(with) -d(previous)g(releases)i(of)f Fn(gperf)p Fs(.)49 b(It)630 -905 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 1182 y -Fr(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f(Algorithms)h(emplo)l -(y)l(ed)g(b)l(y)f Fk(gperf)150 1412 y Fs(`)p Fn(-k)30 -b Fo(selected-b)m(yte-p)s(ositions)t Fs(')150 1521 y(`)p -Fn(--key-positions=)p Fo(selected-b)m(yte-p)s(ositions)t -Fs(')630 1631 y(Allo)m(ws)e(selection)h(of)e(the)g(b)m(yte)h(p)s +d(previous)g(releases)i(of)f Fl(gperf)p Fq(.)49 b(It)630 +1592 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 1841 +y Fp(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f(Algorithms)h +(emplo)l(y)l(ed)g(b)l(y)f Fi(gperf)150 2052 y Fq(`)p +Fl(-k)30 b Fm(selected-b)m(yte-p)s(ositions)t Fq(')150 +2162 y(`)p Fl(--key-positions=)p Fm(selected-b)m(yte-p)s(ositions)t +Fq(')630 2271 y(Allo)m(ws)e(selection)h(of)e(the)g(b)m(yte)h(p)s (ositions)f(used)f(in)h(the)g(k)m(eyw)m(ords')h(hash)e(function.)39 -b(The)630 1740 y(allo)m(w)m(able)24 b(c)m(hoices)g(range)e(b)s(et)m(w)m +b(The)630 2381 y(allo)m(w)m(able)24 b(c)m(hoices)g(range)e(b)s(et)m(w)m (een)h(1-255,)j(inclusiv)m(e.)38 b(The)22 b(p)s(ositions)f(are)i -(separated)f(b)m(y)630 1850 y(commas,)27 b(e.g.,)i(`)p -Fn(-k)h(9,4,13,14)p Fs(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,) -i(`)p Fn(-k)i(2-7)p Fs(';)d(and)e(p)s(ositions)630 1960 +(separated)f(b)m(y)630 2491 y(commas,)27 b(e.g.,)i(`)p +Fl(-k)h(9,4,13,14)p Fq(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,) +i(`)p Fl(-k)i(2-7)p Fq(';)d(and)e(p)s(ositions)630 2600 y(ma)m(y)c(o)s(ccur)f(in)h(an)m(y)g(order.)37 b(F)-8 b(urthermore,)22 b(the)f(wildcard)f('*')h(causes)g(the)g(generated)h -(hash)630 2069 y(function)37 b(to)h(consider)g Fe(all)g -Fs(b)m(yte)g(p)s(ositions)f(in)g(eac)m(h)i(k)m(eyw)m(ord,)h(whereas)d -('$')h(instructs)630 2179 y(the)31 b(hash)g(function)f(to)i(use)f(the)g +(hash)630 2710 y(function)37 b(to)h(consider)g Fc(all)g +Fq(b)m(yte)g(p)s(ositions)f(in)g(eac)m(h)i(k)m(eyw)m(ord,)h(whereas)d +('$')h(instructs)630 2819 y(the)31 b(hash)g(function)f(to)i(use)f(the)g (\\\014nal)h(b)m(yte")g(of)f(a)h(k)m(eyw)m(ord)f(\(this)g(is)h(the)f -(only)g(w)m(a)m(y)h(to)630 2288 y(use)e(a)h(b)m(yte)g(p)s(osition)f -(greater)i(than)e(255,)i(inciden)m(tally\).)630 2427 -y(F)-8 b(or)37 b(instance,)h(the)e(option)h(`)p Fn(-k)30 -b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)f(that)630 -2536 y(considers)g(p)s(ositions)g(1,2,4,6,7,8,9,10,)42 +(only)g(w)m(a)m(y)h(to)630 2929 y(use)e(a)h(b)m(yte)g(p)s(osition)f +(greater)i(than)e(255,)i(inciden)m(tally\).)630 3060 +y(F)-8 b(or)37 b(instance,)h(the)e(option)h(`)p Fl(-k)30 +b(1,2,4,6-10,'$')p Fq(')i(generates)38 b(a)e(hash)g(function)f(that)630 +3170 y(considers)g(p)s(ositions)g(1,2,4,6,7,8,9,10,)42 b(plus)34 b(the)i(last)g(b)m(yte)f(in)g(eac)m(h)h(k)m(eyw)m(ord)g -(\(whic)m(h)630 2646 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s +(\(whic)m(h)630 3280 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s (osition)g(for)f(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)67 -b(Keyw)m(ords)38 b(with)630 2756 y(length)30 b(less)g(than)f(the)g +b(Keyw)m(ords)38 b(with)630 3389 y(length)30 b(less)g(than)f(the)g (indicated)h(b)m(yte)h(p)s(ositions)e(w)m(ork)g(prop)s(erly)-8 -b(,)30 b(since)f(selected)i(b)m(yte)630 2865 y(p)s(ositions)k +b(,)30 b(since)f(selected)i(b)m(yte)630 3499 y(p)s(ositions)k (exceeding)h(the)g(k)m(eyw)m(ord)f(length)g(are)h(simply)e(not)i -(referenced)f(in)f(the)i(hash)630 2975 y(function.)630 -3113 y(This)28 b(option)i(is)f(not)g(normally)g(needed)g(since)g(v)m -(ersion)g(2.8)i(of)e Fn(gperf)p Fs(;)f(the)h(default)g(b)m(yte)630 -3223 y(p)s(ositions)36 b(are)g(computed)f(dep)s(ending)f(on)i(the)f(k)m +(referenced)f(in)f(the)i(hash)630 3608 y(function.)630 +3740 y(This)28 b(option)i(is)f(not)g(normally)g(needed)g(since)g(v)m +(ersion)g(2.8)i(of)e Fl(gperf)p Fq(;)f(the)h(default)g(b)m(yte)630 +3849 y(p)s(ositions)36 b(are)g(computed)f(dep)s(ending)f(on)i(the)f(k)m (eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630 -3332 y(minimizes)31 b(the)f(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s -(ositions.)150 3500 y(`)p Fn(-D)p Fs(')150 3609 y(`)p -Fn(--duplicates)p Fs(')630 3719 y(Handle)h(k)m(eyw)m(ords)h(whose)f +3959 y(minimizes)31 b(the)f(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s +(ositions.)150 4113 y(`)p Fl(-D)p Fq(')150 4222 y(`)p +Fl(--duplicates)p Fq(')630 4332 y(Handle)h(k)m(eyw)m(ords)h(whose)f (selected)i(b)m(yte)e(sets)h(hash)e(to)i(duplicate)g(v)-5 -b(alues.)46 b(Duplicate)630 3829 y(hash)33 b(v)-5 b(alues)34 +b(alues.)46 b(Duplicate)630 4441 y(hash)33 b(v)-5 b(alues)34 b(can)h(o)s(ccur)e(if)h(a)g(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g -(same)g(names,)h(but)e(p)s(ossesses)630 3938 y(di\013eren)m(t)f +(same)g(names,)h(but)e(p)s(ossesses)630 4551 y(di\013eren)m(t)f (attributes,)g(or)f(if)h(the)f(selected)i(b)m(yte)f(p)s(ositions)f(are) -h(not)f(w)m(ell)h(c)m(hosen.)44 b(With)630 4048 y(the)36 -b(-D)g(option)g Fn(gperf)e Fs(treats)j(all)f(these)h(k)m(eyw)m(ords)e +h(not)f(w)m(ell)h(c)m(hosen.)44 b(With)630 4660 y(the)36 +b(-D)g(option)g Fl(gperf)e Fq(treats)j(all)f(these)h(k)m(eyw)m(ords)e (as)h(part)g(of)g(an)f(equiv)-5 b(alence)37 b(class)630 -4157 y(and)31 b(generates)i(a)f(p)s(erfect)g(hash)f(function)g(with)h -(m)m(ultiple)g(comparisons)g(for)f(duplicate)630 4267 +4770 y(and)31 b(generates)i(a)f(p)s(erfect)g(hash)f(function)g(with)h +(m)m(ultiple)g(comparisons)g(for)f(duplicate)630 4880 y(k)m(eyw)m(ords.)38 b(It)21 b(is)f(up)g(to)h(y)m(ou)g(to)h(completely) g(disam)m(biguate)g(the)f(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630 -4377 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 -b Fn(gperf)c Fs(helps)h(y)m(ou)g(out)h(b)m(y)f(organizing)i(the)e -(output.)630 4515 y(Using)32 b(this)g(option)g(usually)g(means)g(that)g +4989 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 +b Fl(gperf)c Fq(helps)h(y)m(ou)g(out)h(b)m(y)f(organizing)i(the)e +(output.)630 5121 y(Using)32 b(this)g(option)g(usually)g(means)g(that)g (the)g(generated)h(hash)e(function)h(is)g(no)f(longer)630 -4625 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)g(p)s(ermits)f -Fn(gperf)f Fs(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 -4734 y(otherwise)e(could)f(not)h(handle.)150 4902 y(`)p -Fn(-m)f Fo(iterations)t Fs(')150 5011 y(`)p Fn(--multiple-iterations=)p -Fo(iterations)t Fs(')630 5121 y(P)m(erform)24 b(m)m(ultiple)h(c)m -(hoices)h(of)e(the)h(`)p Fn(-i)p Fs(')f(and)g(`)p Fn(-j)p -Fs(')g(v)-5 b(alues,)26 b(and)d(c)m(ho)s(ose)j(the)e(b)s(est)g -(results.)630 5230 y(This)34 b(increases)i(the)f(running)e(time)i(b)m -(y)g(a)g(factor)h(of)f Fo(iterations)40 b Fs(but)34 b(do)s(es)g(a)i(go) -s(o)s(d)e(job)630 5340 y(minimizing)d(the)f(generated)i(table)f(size.)p -eop end +5230 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)g(p)s(ermits)f +Fl(gperf)f Fq(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 +5340 y(otherwise)e(could)f(not)h(handle.)p eop end %%Page: 24 26 -TeXDict begin 24 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(24)150 299 y(`)p -Fn(-i)30 b Fo(initial-v)-5 b(alue)5 b Fs(')150 408 y(`)p -Fn(--initial-asso=)p Fo(initial-v)-5 b(alue)5 b Fs(')630 -518 y(Pro)m(vides)29 b(an)f(initial)h Fo(v)-5 b(alue)34 -b Fs(for)28 b(the)g(asso)s(ciate)i(v)-5 b(alues)29 b(arra)m(y)-8 -b(.)41 b(Default)29 b(is)f(0.)41 b(Increasing)630 628 -y(the)30 b(initial)h(v)-5 b(alue)31 b(helps)e(in\015ate)h(the)g +TeXDict begin 24 25 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(24)150 299 y(`)p +Fl(-m)30 b Fm(iterations)t Fq(')150 408 y(`)p Fl +(--multiple-iterations=)p Fm(iterations)t Fq(')630 518 +y(P)m(erform)24 b(m)m(ultiple)h(c)m(hoices)h(of)e(the)h(`)p +Fl(-i)p Fq(')f(and)g(`)p Fl(-j)p Fq(')g(v)-5 b(alues,)26 +b(and)d(c)m(ho)s(ose)j(the)e(b)s(est)g(results.)630 628 +y(This)34 b(increases)i(the)f(running)e(time)i(b)m(y)g(a)g(factor)h(of) +f Fm(iterations)40 b Fq(but)34 b(do)s(es)g(a)i(go)s(o)s(d)e(job)630 +737 y(minimizing)d(the)f(generated)i(table)f(size.)150 +907 y(`)p Fl(-i)f Fm(initial-v)-5 b(alue)5 b Fq(')150 +1016 y(`)p Fl(--initial-asso=)p Fm(initial-v)-5 b(alue)5 +b Fq(')630 1126 y(Pro)m(vides)29 b(an)f(initial)h Fm(v)-5 +b(alue)34 b Fq(for)28 b(the)g(asso)s(ciate)i(v)-5 b(alues)29 +b(arra)m(y)-8 b(.)41 b(Default)29 b(is)f(0.)41 b(Increasing)630 +1235 y(the)30 b(initial)h(v)-5 b(alue)31 b(helps)e(in\015ate)h(the)g (\014nal)g(table)h(size,)g(p)s(ossibly)e(leading)i(to)f(more)g(time)630 -737 y(e\016cien)m(t)f(k)m(eyw)m(ord)e(lo)s(okups.)39 +1345 y(e\016cien)m(t)f(k)m(eyw)m(ord)e(lo)s(okups.)39 b(Note)29 b(that)e(this)g(option)h(is)f(not)g(particularly)h(useful)e -(when)630 847 y(`)p Fn(-S)p Fs(')i(\(or,)i(equiv)-5 b(alen)m(tly)d(,)31 -b(`)p Fn(\045switch)p Fs('\))c(is)i(used.)39 b(Also,)30 -b(`)p Fn(-i)p Fs(')e(is)g(o)m(v)m(erridden)h(when)e(the)i(`)p -Fn(-r)p Fs(')630 956 y(option)i(is)f(used.)150 1150 y(`)p -Fn(-j)g Fo(jump-v)-5 b(alue)5 b Fs(')150 1260 y(`)p Fn(--jump=)p -Fo(jump-v)-5 b(alue)5 b Fs(')630 1369 y(A\013ects)41 +(when)630 1455 y(`)p Fl(-S)p Fq(')i(\(or,)i(equiv)-5 +b(alen)m(tly)d(,)31 b(`)p Fl(\045switch)p Fq('\))c(is)i(used.)39 +b(Also,)30 b(`)p Fl(-i)p Fq(')e(is)g(o)m(v)m(erridden)h(when)e(the)i(`) +p Fl(-r)p Fq(')630 1564 y(option)i(is)f(used.)150 1733 +y(`)p Fl(-j)g Fm(jump-v)-5 b(alue)5 b Fq(')150 1843 y(`)p +Fl(--jump=)p Fm(jump-v)-5 b(alue)5 b Fq(')630 1953 y(A\013ects)41 b(the)f(\\jump)f(v)-5 b(alue",)44 b(i.e.,)g(ho)m(w)c(far)g(to)g(adv)-5 b(ance)41 b(the)f(asso)s(ciated)i(b)m(yte)e(v)-5 b(alue)630 -1479 y(up)s(on)29 b(collisions.)43 b Fo(Jump-v)-5 b(alue)35 -b Fs(is)30 b(rounded)f(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s(er,)f(the)i -(default)g(is)f(5.)630 1588 y(If)g(the)g Fo(jump-v)-5 -b(alue)35 b Fs(is)c(0)f Fn(gperf)f Fs(jumps)g(b)m(y)h(random)g(amoun)m -(ts.)150 1782 y(`)p Fn(-n)p Fs(')150 1892 y(`)p Fn(--no-strlen)p -Fs(')630 2001 y(Instructs)c(the)i(generator)g(not)f(to)h(include)f(the) +2062 y(up)s(on)29 b(collisions.)43 b Fm(Jump-v)-5 b(alue)35 +b Fq(is)30 b(rounded)f(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s(er,)f(the)i +(default)g(is)f(5.)630 2172 y(If)g(the)g Fm(jump-v)-5 +b(alue)35 b Fq(is)c(0)f Fl(gperf)f Fq(jumps)g(b)m(y)h(random)g(amoun)m +(ts.)150 2341 y(`)p Fl(-n)p Fq(')150 2451 y(`)p Fl(--no-strlen)p +Fq(')630 2560 y(Instructs)c(the)i(generator)g(not)f(to)h(include)f(the) h(length)f(of)g(a)h(k)m(eyw)m(ord)g(when)e(computing)630 -2111 y(its)41 b(hash)f(v)-5 b(alue.)72 b(This)40 b(ma)m(y)h(sa)m(v)m(e) +2670 y(its)41 b(hash)f(v)-5 b(alue.)72 b(This)40 b(ma)m(y)h(sa)m(v)m(e) h(a)f(few)f(assem)m(bly)h(instructions)g(in)f(the)h(generated)630 -2221 y(lo)s(okup)30 b(table.)150 2414 y(`)p Fn(-r)p Fs(')150 -2524 y(`)p Fn(--random)p Fs(')630 2633 y(Utilizes)40 +2780 y(lo)s(okup)30 b(table.)150 2949 y(`)p Fl(-r)p Fq(')150 +3059 y(`)p Fl(--random)p Fq(')630 3168 y(Utilizes)40 b(randomness)e(to)h(initialize)h(the)f(asso)s(ciated)h(v)-5 b(alues)38 b(table.)66 b(This)38 b(frequen)m(tly)630 -2743 y(generates)23 b(solutions)e(faster)h(than)f(using)g +3278 y(generates)23 b(solutions)e(faster)h(than)f(using)g (deterministic)h(initialization)i(\(whic)m(h)d(starts)h(all)630 -2853 y(asso)s(ciated)28 b(v)-5 b(alues)28 b(at)f(0\).)40 +3387 y(asso)s(ciated)28 b(v)-5 b(alues)28 b(at)f(0\).)40 b(F)-8 b(urthermore,)28 b(using)f(the)g(randomization)g(option)h -(generally)630 2962 y(increases)j(the)g(size)g(of)f(the)h(table.)150 -3156 y(`)p Fn(-s)f Fo(size-m)m(ultiple)5 b Fs(')150 3266 -y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultiple)g Fs(')630 -3375 y(A\013ects)40 b(the)e(size)h(of)g(the)f(generated)i(hash)d +(generally)630 3497 y(increases)j(the)g(size)g(of)f(the)h(table.)150 +3666 y(`)p Fl(-s)f Fm(size-m)m(ultiple)5 b Fq(')150 3776 +y(`)p Fl(--size-multiple=)p Fm(size-m)m(ultiple)g Fq(')630 +3885 y(A\013ects)40 b(the)e(size)h(of)g(the)f(generated)i(hash)d (table.)66 b(The)38 b(n)m(umeric)g(argumen)m(t)h(for)f(this)630 -3485 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g +3995 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g (or)f(smaller")i(the)e(maxim)m(um)g(asso)s(ciated)630 -3594 y(v)-5 b(alue)38 b(range)g(should)e(b)s(e,)j(in)e(relationship)h +4105 y(v)-5 b(alue)38 b(range)g(should)e(b)s(e,)j(in)e(relationship)h (to)g(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62 -b(It)38 b(can)g(b)s(e)630 3704 y(written)g(as)h(an)f(in)m(teger,)43 +b(It)38 b(can)g(b)s(e)630 4214 y(written)g(as)h(an)f(in)m(teger,)43 b(a)38 b(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er)d(or)i(a)f(fraction.) -66 b(F)-8 b(or)39 b(example,)j(a)630 3814 y(v)-5 b(alue)40 +66 b(F)-8 b(or)39 b(example,)j(a)630 4324 y(v)-5 b(alue)40 b(of)f(3)h(means)f(\\allo)m(w)i(the)f(maxim)m(um)f(asso)s(ciated)h(v)-5 -b(alue)40 b(to)g(b)s(e)f(ab)s(out)g(3)g(times)630 3923 +b(alue)40 b(to)g(b)s(e)f(ab)s(out)g(3)g(times)630 4433 y(larger)33 b(than)g(the)g(n)m(um)m(b)s(er)e(of)i(input)f(k)m(eyw)m (ords".)49 b(Con)m(v)m(ersely)-8 b(,)35 b(a)e(v)-5 b(alue)33 -b(of)g(1/3)h(means)630 4033 y(\\allo)m(w)43 b(the)e(maxim)m(um)f(asso)s +b(of)g(1/3)h(means)630 4543 y(\\allo)m(w)43 b(the)e(maxim)m(um)f(asso)s (ciated)j(v)-5 b(alue)41 b(to)h(b)s(e)e(ab)s(out)g(3)h(times)h(smaller) -f(than)g(the)630 4142 y(n)m(um)m(b)s(er)33 b(of)i(input)f(k)m(eyw)m +f(than)g(the)630 4653 y(n)m(um)m(b)s(er)33 b(of)i(input)f(k)m(eyw)m (ords".)55 b(V)-8 b(alues)35 b(smaller)h(than)e(1)h(are)g(useful)f(for) -h(limiting)h(the)630 4252 y(o)m(v)m(erall)31 b(size)e(of)g(the)f +h(limiting)h(the)630 4762 y(o)m(v)m(erall)31 b(size)e(of)g(the)f (generated)i(hash)e(table,)i(though)e(the)g(option)h(`)p -Fn(-m)p Fs(')g(is)f(b)s(etter)h(at)g(this)630 4361 y(purp)s(ose.)630 -4513 y(If)44 b(`generate)h(switc)m(h')g(option)g(`)p -Fn(-S)p Fs(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)49 b(`)p -Fn(\045switch)p Fs('\))43 b(is)h Fl(not)54 b Fs(enabled,)630 -4623 y(the)45 b(maxim)m(um)h(asso)s(ciated)g(v)-5 b(alue)46 +Fl(-m)p Fq(')g(is)f(b)s(etter)h(at)g(this)630 4872 y(purp)s(ose.)630 +5011 y(If)44 b(`generate)h(switc)m(h')g(option)g(`)p +Fl(-S)p Fq(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)49 b(`)p +Fl(\045switch)p Fq('\))43 b(is)h Fj(not)54 b Fq(enabled,)630 +5121 y(the)45 b(maxim)m(um)h(asso)s(ciated)g(v)-5 b(alue)46 b(in\015uences)f(the)g(static)i(arra)m(y)f(table)g(size,)k(and)45 -b(a)630 4732 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h +b(a)630 5230 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h (required)e(for)h(an)f(unsuccessful)g(searc)m(h,)j(at)f(the)630 -4842 y(exp)s(ense)j(of)g(extra)i(table)f(space.)630 4994 -y(The)k(default)g(v)-5 b(alue)36 b(is)f(1,)i(th)m(us)e(the)h(default)f -(maxim)m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630 -5103 y(same)h(size)g(as)f(the)h(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m(ords)h +5340 y(exp)s(ense)j(of)g(extra)i(table)f(space.)p eop +end +%%Page: 25 27 +TeXDict begin 25 26 bop 150 -116 a Fq(Chapter)30 b(4:)41 +b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(25)630 299 y(The)35 +b(default)g(v)-5 b(alue)36 b(is)f(1,)i(th)m(us)e(the)h(default)f(maxim) +m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630 +408 y(same)h(size)g(as)f(the)h(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m(ords)h (\(for)g(e\016ciency)-8 b(,)38 b(the)d(maxim)m(um)g(asso)s(ciated)630 -5213 y(v)-5 b(alue)36 b(is)g(alw)m(a)m(ys)h(rounded)d(up)g(to)i(a)g(p)s +518 y(v)-5 b(alue)36 b(is)g(alw)m(a)m(ys)h(rounded)d(up)g(to)i(a)g(p)s (o)m(w)m(er)g(of)f(2\).)57 b(The)35 b(actual)i(table)g(size)f(ma)m(y)g -(v)-5 b(ary)630 5322 y(somewhat,)31 b(since)g(this)f(tec)m(hnique)h(is) -g(essen)m(tially)h(a)f(heuristic.)p eop end -%%Page: 25 27 -TeXDict begin 25 26 bop 150 -116 a Fs(Chapter)30 b(4:)41 -b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(25)150 299 y -Fr(4.6)68 b(Informativ)l(e)47 b(Output)150 516 y Fs(`)p -Fn(-h)p Fs(')150 626 y(`)p Fn(--help)p Fs(')142 b(Prin)m(ts)24 +(v)-5 b(ary)630 628 y(somewhat,)31 b(since)g(this)f(tec)m(hnique)h(is)g +(essen)m(tially)h(a)f(heuristic.)150 885 y Fp(4.6)68 +b(Informativ)l(e)47 b(Output)150 1103 y Fq(`)p Fl(-h)p +Fq(')150 1212 y(`)p Fl(--help)p Fq(')142 b(Prin)m(ts)24 b(a)g(short)f(summary)g(on)h(the)g(meaning)g(of)g(eac)m(h)h(program)e -(option.)39 b(Ab)s(orts)23 b(further)630 736 y(program)30 -b(execution.)150 895 y(`)p Fn(-v)p Fs(')150 1005 y(`)p -Fn(--version)p Fs(')630 1114 y(Prin)m(ts)g(out)h(the)f(curren)m(t)h(v)m -(ersion)f(n)m(um)m(b)s(er.)150 1274 y(`)p Fn(-d)p Fs(')150 -1383 y(`)p Fn(--debug)p Fs(')94 b(Enables)28 b(the)h(debugging)f +(option.)39 b(Ab)s(orts)23 b(further)630 1322 y(program)30 +b(execution.)150 1481 y(`)p Fl(-v)p Fq(')150 1591 y(`)p +Fl(--version)p Fq(')630 1700 y(Prin)m(ts)g(out)h(the)f(curren)m(t)h(v)m +(ersion)f(n)m(um)m(b)s(er.)150 1860 y(`)p Fl(-d)p Fq(')150 +1969 y(`)p Fl(--debug)p Fq(')94 b(Enables)28 b(the)h(debugging)f (option.)40 b(This)28 b(pro)s(duces)f(v)m(erb)s(ose)i(diagnostics)g(to) -g(\\standard)630 1493 y(error")i(when)g Fn(gperf)f Fs(is)h(executing.) +g(\\standard)630 2079 y(error")i(when)g Fl(gperf)f Fq(is)h(executing.) 45 b(It)32 b(is)f(useful)g(b)s(oth)g(for)g(main)m(taining)i(the)e -(program)630 1602 y(and)f(for)h(determining)g(whether)f(a)h(giv)m(en)h +(program)630 2188 y(and)f(for)h(determining)g(whether)f(a)h(giv)m(en)h (set)f(of)g(options)g(is)g(actually)i(sp)s(eeding)d(up)g(the)630 -1712 y(searc)m(h)41 b(for)e(a)h(solution.)70 b(Some)40 +2298 y(searc)m(h)41 b(for)e(a)h(solution.)70 b(Some)40 b(useful)f(information)h(is)g(dump)s(ed)e(at)i(the)g(end)g(of)g(the)630 -1822 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)h(is)g +2408 y(program)30 b(when)g(the)g(`)p Fl(-d)p Fq(')g(option)h(is)g (enabled.)p eop end %%Page: 26 28 -TeXDict begin 26 27 bop 150 -116 a Fs(Chapter)30 b(5:)41 -b(Kno)m(wn)30 b(Bugs)g(and)g(Limitations)h(with)f Fn(gperf)1397 -b Fs(26)150 299 y Fp(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)f -(with)f Fm(gperf)275 533 y Fs(The)29 b(follo)m(wing)j(are)f(some)g +TeXDict begin 26 27 bop 150 -116 a Fq(Chapter)30 b(5:)41 +b(Kno)m(wn)30 b(Bugs)g(and)g(Limitations)h(with)f Fl(gperf)1397 +b Fq(26)150 299 y Fn(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)f +(with)f Fk(gperf)275 533 y Fq(The)29 b(follo)m(wing)j(are)f(some)g (limitations)h(with)e(the)g(curren)m(t)h(release)g(of)g -Fn(gperf)p Fs(:)225 667 y Fq(\017)60 b Fs(The)31 b Fn(gperf)g -Fs(utilit)m(y)i(is)f(tuned)f(to)h(execute)h(quic)m(kly)-8 +Fl(gperf)p Fq(:)225 667 y Fo(\017)60 b Fq(The)31 b Fl(gperf)g +Fq(utilit)m(y)i(is)f(tuned)f(to)h(execute)h(quic)m(kly)-8 b(,)34 b(and)d(w)m(orks)h(quic)m(kly)g(for)g(small)g(to)h(medium)330 777 y(size)i(data)g(sets)g(\(around)f(1000)i(k)m(eyw)m(ords\).)54 b(It)34 b(is)h(extremely)h(useful)d(for)h(main)m(taining)i(p)s(erfect) 330 887 y(hash)k(functions)h(for)f(compiler)i(k)m(eyw)m(ord)f(sets.)72 b(Sev)m(eral)42 b(recen)m(t)g(enhancemen)m(ts)g(no)m(w)e(enable)330 -996 y Fn(gperf)31 b Fs(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m +996 y Fl(gperf)31 b Fq(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m (h)h(larger)g(k)m(eyw)m(ord)g(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m (ords\).)48 b(When)330 1106 y(pro)s(cessing)30 b(large)i(k)m(eyw)m(ord) e(sets)h(it)g(helps)f(greatly)i(to)f(ha)m(v)m(e)g(o)m(v)m(er)h(8)f -(megs)g(of)f(RAM.)225 1240 y Fq(\017)60 b Fs(The)43 b(size)i(of)f(the)g +(megs)g(of)f(RAM.)225 1240 y Fo(\017)60 b Fq(The)43 b(size)i(of)f(the)g (generate)h(static)h(k)m(eyw)m(ord)e(arra)m(y)g(can)g(get)h -Fl(extr)-5 b(emely)53 b Fs(large)45 b(if)f(the)g(input)330 +Fj(extr)-5 b(emely)53 b Fq(large)45 b(if)f(the)g(input)330 1350 y(k)m(eyw)m(ord)d(\014le)f(is)g(large)i(or)e(if)g(the)h(k)m(eyw)m (ords)f(are)h(quite)g(similar.)70 b(This)40 b(tends)g(to)h(slo)m(w)f (do)m(wn)330 1460 y(the)35 b(compilation)h(of)f(the)f(generated)i(C)e -(co)s(de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(in\015ates)35 +(co)s(de,)i(and)e Fj(gr)-5 b(e)g(atly)44 b Fq(in\015ates)35 b(the)g(ob)5 b(ject)35 b(co)s(de)g(size.)54 b(If)330 1569 y(this)40 b(situation)h(o)s(ccurs,)h(consider)e(using)f(the)h(`)p -Fn(-S)p Fs(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially) +Fl(-S)p Fq(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially) 330 1679 y(increasing)h(k)m(eyw)m(ord)g(recognition)h(time)f(a)g (negligible)i(amoun)m(t.)80 b(Since)44 b(man)m(y)f(C)h(compilers)330 1788 y(cannot)37 b(correctly)i(generate)f(co)s(de)f(for)g(large)h (switc)m(h)f(statemen)m(ts)i(it)e(is)g(imp)s(ortan)m(t)g(to)h(qualify) -330 1898 y(the)i Fo(-S)46 b Fs(option)40 b(with)g(an)g(appropriate)g(n) +330 1898 y(the)i Fm(-S)46 b Fq(option)40 b(with)g(an)g(appropriate)g(n) m(umerical)h(argumen)m(t)f(that)h(con)m(trols)h(the)e(n)m(um)m(b)s(er)f (of)330 2007 y(switc)m(h)31 b(statemen)m(ts)h(generated.)225 -2142 y Fq(\017)60 b Fs(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +2142 y Fo(\017)60 b Fq(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i (selected)h(b)m(yte)f(p)s(ositions)f(has)g(an)h(arbitrary)f(limit)h(of) g(255.)57 b(This)330 2252 y(restriction)29 b(should)e(b)s(e)g(remo)m(v) m(ed,)j(and)d(if)h(an)m(y)m(one)h(considers)f(this)g(a)g(problem)f (write)i(me)f(and)f(let)330 2361 y(me)j(kno)m(w)h(so)f(I)h(can)f(remo)m (v)m(e)i(the)f(constrain)m(t.)p eop end %%Page: 27 29 -TeXDict begin 27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 +TeXDict begin 27 28 bop 150 -116 a Fq(Chapter)30 b(6:)41 b(Things)29 b(Still)i(Left)g(to)g(Do)2133 b(27)150 299 -y Fp(6)80 b(Things)53 b(Still)g(Left)g(to)g(Do)275 533 -y Fs(It)24 b(should)f(b)s(e)h(\\relativ)m(ely")k(easy)d(to)g(replace)g +y Fn(6)80 b(Things)53 b(Still)g(Left)g(to)g(Do)275 533 +y Fq(It)24 b(should)f(b)s(e)h(\\relativ)m(ely")k(easy)d(to)g(replace)g (the)g(curren)m(t)f(p)s(erfect)g(hash)g(function)g(algorithm)h(with)150 643 y(a)35 b(more)f(exhaustiv)m(e)h(approac)m(h;)i(the)d(p)s(erfect)h (hash)e(mo)s(dule)h(is)g(essen)m(tial)i(indep)s(enden)m(t)d(from)h (other)150 752 y(program)c(mo)s(dules.)40 b(Additional)31 b(w)m(orth)m(while)g(impro)m(v)m(emen)m(ts)h(include:)225 -887 y Fq(\017)60 b Fs(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m +887 y Fo(\017)60 b Fq(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m (es)i(mo)s(difying)d(the)h(program)f(to)i(generate)g(\\minimal")g(p)s (er-)330 996 y(fect)42 b(hash)f(functions)f(\(under)h(certain)h (circumstances,)j(the)c(curren)m(t)g(v)m(ersion)h(can)f(b)s(e)g(rather) 330 1106 y(extra)m(v)-5 b(agan)m(t)39 b(in)d(the)h(generated)g(table)g (size\).)60 b(This)36 b(is)g(mostly)h(of)g(theoretical)h(in)m(terest,)i (since)330 1215 y(a)f(sparse)f(table)h(often)g(pro)s(duces)e(faster)i -(lo)s(okups,)h(and)e(use)g(of)h(the)g(`)p Fn(-S)p Fs(')f -Fn(switch)f Fs(option)i(can)330 1325 y(minimize)g(the)g(data)g(size,)j +(lo)s(okups,)h(and)e(use)g(of)h(the)g(`)p Fl(-S)p Fq(')f +Fl(switch)f Fq(option)i(can)330 1325 y(minimize)g(the)g(data)g(size,)j (at)d(the)g(exp)s(ense)f(of)h(sligh)m(tly)h(longer)f(lo)s(okups)f (\(note)i(that)f(the)g(gcc)330 1435 y(compiler)e(generally)g(pro)s -(duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fn(switch)f Fs(statemen)m(ts,)k +(duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fl(switch)f Fq(statemen)m(ts,)k (reducing)d(the)g(need)g(for)330 1544 y(more)31 b(complex)g(sc)m -(hemes\).)225 1679 y Fq(\017)60 b Fs(In)38 b(addition)h(to)h(impro)m +(hemes\).)225 1679 y Fo(\017)60 b Fq(In)38 b(addition)h(to)h(impro)m (ving)f(the)h(algorithm,)i(it)d(w)m(ould)g(also)h(b)s(e)f(useful)f(to)h (generate)i(an)e(Ada)330 1788 y(pac)m(k)-5 b(age)32 b(as)f(the)g(co)s (de)f(output,)g(in)g(addition)h(to)g(the)g(curren)m(t)f(C)g(and)g(C)p -Fn(++)f Fs(routines.)p eop end +Fl(++)f Fq(routines.)p eop end %%Page: 28 30 -TeXDict begin 28 29 bop 150 -116 a Fs(Chapter)30 b(7:)41 -b(Bibliograph)m(y)2536 b(28)150 299 y Fp(7)80 b(Bibliograph)l(y)275 -533 y Fs([1])22 b(Chang,)h(C.C.:)36 b Fl(A)24 b(Scheme)h(for)g +TeXDict begin 28 29 bop 150 -116 a Fq(Chapter)30 b(7:)41 +b(Bibliograph)m(y)2536 b(28)150 299 y Fn(7)80 b(Bibliograph)l(y)275 +533 y Fq([1])22 b(Chang,)h(C.C.:)36 b Fj(A)24 b(Scheme)h(for)g (Constructing)h(Or)-5 b(der)g(e)g(d)26 b(Minimal)f(Perfe)-5 -b(ct)24 b(Hashing)h(F)-7 b(unctions)150 643 y Fs(Information)30 +b(ct)24 b(Hashing)h(F)-7 b(unctions)150 643 y Fq(Information)30 b(Sciences)h(39\(1986\),)j(187-195.)275 777 y([2])26 -b(Cic)m(helli,)i(Ric)m(hard)e(J.)f Fl(A)n(uthor's)k(R)-5 +b(Cic)m(helli,)i(Ric)m(hard)e(J.)f Fj(A)n(uthor's)k(R)-5 b(esp)g(onse)30 b(to)f(\\On)f(Cichel)5 b(li's)28 b(Minimal)h(Perfe)-5 b(ct)28 b(Hash)g(F)-7 b(unc-)150 887 y(tions)33 b(Metho)-5 -b(d")38 b Fs(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(23,)h +b(d")38 b Fq(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(23,)h (12\(Decem)m(b)s(er)g(1980\),)h(729.)275 1021 y([3])f(Cic)m(helli,)i -(Ric)m(hard)d(J.)h Fl(Minimal)i(Perfe)-5 b(ct)33 b(Hash)i(F)-7 -b(unctions)34 b(Made)g(Simple)39 b Fs(Comm)m(unications)150 +(Ric)m(hard)d(J.)h Fj(Minimal)i(Perfe)-5 b(ct)33 b(Hash)i(F)-7 +b(unctions)34 b(Made)g(Simple)39 b Fq(Comm)m(unications)150 1131 y(of)31 b(the)f(A)m(CM,)h(23,)h(1\(Jan)m(uary)f(1980\),)h(17-19.) 275 1265 y([4])22 b(Co)s(ok,)h(C.)e(R.)g(and)f(Oldeho)s(eft,)j(R.R.)f -Fl(A)h(L)-5 b(etter)25 b(Oriente)-5 b(d)25 b(Minimal)f(Perfe)-5 -b(ct)24 b(Hashing)g(F)-7 b(unction)150 1375 y Fs(SIGPLAN)30 +Fj(A)h(L)-5 b(etter)25 b(Oriente)-5 b(d)25 b(Minimal)f(Perfe)-5 +b(ct)24 b(Hashing)g(F)-7 b(unction)150 1375 y Fq(SIGPLAN)30 b(Notices,)i(17,)g(9\(Septem)m(b)s(er)f(1982\),)h(18-27.)275 1509 y([5])22 b(Cormac)m(k,)j(G.)d(V.)g(and)g(Horsp)s(o)s(ol,)h(R.)f -(N.)g(S.)g(and)f(Kaiserw)m(erth,)j(M.)f Fl(Pr)-5 b(actic)g(al)26 -b(Perfe)-5 b(ct)25 b(Hashing)150 1619 y Fs(Computer)30 +(N.)g(S.)g(and)f(Kaiserw)m(erth,)j(M.)f Fj(Pr)-5 b(actic)g(al)26 +b(Perfe)-5 b(ct)25 b(Hashing)150 1619 y Fq(Computer)30 b(Journal,)g(28,)h(1\(Jan)m(uary)g(1985\),)i(54-58.)275 -1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fl(R)-5 b(e)g(cipr)g(o)g(c)g(al) +1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fj(R)-5 b(e)g(cipr)g(o)g(c)g(al) 34 b(Hashing:)41 b(A)30 b(Metho)-5 b(d)31 b(for)g(Gener)-5 b(ating)32 b(Minimal)e(Perfe)-5 b(ct)31 b(Hashing)150 -1863 y(F)-7 b(unctions)39 b Fs(Comm)m(unications)31 b(of)f(the)h(A)m +1863 y(F)-7 b(unctions)39 b Fq(Comm)m(unications)31 b(of)f(the)h(A)m (CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)g(829-833.)275 1998 y([7])22 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)h(G.)g -Fl(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 b(ct)24 +Fj(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 b(ct)24 b(Hash)h(F)-7 b(unctions)25 b(Metho)-5 b(d)150 2107 y -Fs(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)h(12\(Decem)m(b)s +Fq(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)h(12\(Decem)m(b)s (er)g(1980\),)h(728-729.)275 2242 y([8])25 b(Sager,)h(Thomas)e(J.)h -Fl(A)h(Polynomial)j(Time)f(Gener)-5 b(ator)29 b(for)f(Minimal)f(Perfe) --5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fs(Comm)m(unications)31 +Fj(A)h(Polynomial)j(Time)f(Gener)-5 b(ator)29 b(for)f(Minimal)f(Perfe) +-5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fq(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)275 -2486 y([9])f(Sc)m(hmidt,)f(Douglas)h(C.)f Fl(GPERF:)i(A)g(Perfe)-5 +2486 y([9])f(Sc)m(hmidt,)f(Douglas)h(C.)f Fj(GPERF:)i(A)g(Perfe)-5 b(ct)32 b(Hash)h(F)-7 b(unction)33 b(Gener)-5 b(ator)42 -b Fs(Second)30 b(USENIX)150 2595 y(C)p Fn(++)f Fs(Conference)i(Pro)s +b Fq(Second)30 b(USENIX)150 2595 y(C)p Fl(++)f Fq(Conference)i(Pro)s (ceedings,)g(April)f(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)i(Douglas)e -(C.)f Fl(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 -b(unction)43 b(Gener)-5 b(ator)53 b Fs(C)p Fn(++)40 b -Fs(Rep)s(ort,)150 2839 y(SIGS)29 b(10)j(10)f(\(No)m(v)m(em)m(b)s +(C.)f Fj(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 +b(unction)43 b(Gener)-5 b(ator)53 b Fq(C)p Fl(++)40 b +Fq(Rep)s(ort,)150 2839 y(SIGS)29 b(10)j(10)f(\(No)m(v)m(em)m(b)s (er/Decem)m(b)s(er)i(1998\).)275 2974 y([11])24 b(Seb)s(esta,)h(R.W.)e -(and)g(T)-8 b(a)m(ylor,)26 b(M.A.)e Fl(Minimal)i(Perfe)-5 +(and)g(T)-8 b(a)m(ylor,)26 b(M.A.)e Fj(Minimal)i(Perfe)-5 b(ct)26 b(Hash)g(F)-7 b(unctions)27 b(for)g(R)-5 b(eserve)g(d)27 -b(Wor)-5 b(d)150 3083 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)j(20,)e +b(Wor)-5 b(d)150 3083 y(Lists)38 b Fq(SIGPLAN)30 b(Notices,)j(20,)e (12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 3218 y([12])43 -b(Sprugnoli,)h(R.)e Fl(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 +b(Sprugnoli,)h(R.)e Fj(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 b(unctions:)64 b(A)43 b(Single)g(Pr)-5 b(ob)g(e)44 b(R)-5 b(etrieving)44 b(Metho)-5 b(d)44 b(for)150 3328 y(Static)33 -b(Sets)38 b Fs(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)i(20)f(11\(No) +b(Sets)38 b Fq(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)i(20)f(11\(No) m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3462 y([13])27 -b(Stallman,)h(Ric)m(hard)e(M.)h Fl(Using)h(and)i(Porting)f(GNU)g(CC)39 -b Fs(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)28 -b(1988.)275 3597 y([14])j(Stroustrup,)e(Bjarne)i Fl(The)h(C)p -Fn(++)g Fl(Pr)-5 b(o)g(gr)g(amming)36 b(L)-5 b(anguage.)40 -b Fs(Addison-W)-8 b(esley)g(,)33 b(1986.)275 3731 y([15])e(Tiemann,)f -(Mic)m(hael)j(D.)e Fl(User's)h(Guide)h(to)g(GNU)f(C)p -Fn(++)e Fs(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 +b(Stallman,)h(Ric)m(hard)e(M.)h Fj(Using)h(and)i(Porting)f(GNU)g(CC)39 +b Fq(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)28 +b(1988.)275 3597 y([14])j(Stroustrup,)e(Bjarne)i Fj(The)h(C)p +Fl(++)g Fj(Pr)-5 b(o)g(gr)g(amming)36 b(L)-5 b(anguage.)40 +b Fq(Addison-W)-8 b(esley)g(,)33 b(1986.)275 3731 y([15])e(Tiemann,)f +(Mic)m(hael)j(D.)e Fj(User's)h(Guide)h(to)g(GNU)f(C)p +Fl(++)e Fq(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(1989.)p eop end %%Page: 29 31 -TeXDict begin 29 30 bop 150 -116 a Fs(Concept)31 b(Index)2927 -b(29)150 299 y Fp(Concept)52 b(Index)150 642 y Fr(\045)150 -777 y Fd(`)p Fc(\045\045)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 -b Fd(12)150 874 y(`)p Fc(\045{)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 -b Fd(15)150 972 y(`)p Fc(\045})p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 -b Fd(15)150 1069 y(`)p Fc(\0457bit)p Fd(')8 b Fb(.)14 -b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)33 b Fd(14)150 1167 y(`)p Fc(\045compare-lengths)p -Fd(')10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 -b Fd(14)150 1264 y(`)p Fc(\045compare-strncmp)p Fd(')10 -b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 -1361 y(`)p Fc(\045define)28 b(class-name)p Fd(')14 b -Fb(.)g(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(14)150 1459 y(`)p -Fc(\045define)28 b(hash-function-name)p Fd(')c Fb(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fd(13)150 1556 y(`)p Fc(\045define)28 b(initializer-suffix)p -Fd(')c Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -46 b Fd(13)150 1654 y(`)p Fc(\045define)28 b(lookup-function-name)p -Fd(')18 b Fb(.)e(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fd(13)150 1751 y(`)p Fc(\045define)28 b(slot-name)p -Fd(')15 b Fb(.)g(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fd(13)150 -1849 y(`)p Fc(\045define)28 b(string-pool-name)p Fd(')f -Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)49 b Fd(15)150 1946 y(`)p Fc(\045define)28 b(word-array-name)p -Fd(')7 b Fb(.)15 b(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)32 b Fd(15)150 2044 y(`)p Fc(\045delimiters)p -Fd(')17 b Fb(.)f(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 -b Fd(13)150 2141 y(`)p Fc(\045enum)p Fd(')8 b Fb(.)14 -b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)33 b Fd(14)150 2239 y(`)p Fc(\045global-table)p -Fd(')14 b Fb(.)i(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fd(14)150 2336 y(`)p Fc(\045ignore-case)p Fd(')16 b -Fb(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 -b Fd(13)150 2434 y(`)p Fc(\045includes)p Fd(')23 b Fb(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 -b Fd(14)150 2531 y(`)p Fc(\045language)p Fd(')23 b Fb(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 -b Fd(13)150 2629 y(`)p Fc(\045null-strings)p Fd(')14 -b Fb(.)i(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b -Fd(15)150 2726 y(`)p Fc(\045omit-struct-type)p Fd(')9 -b Fb(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fd(15)150 2824 -y(`)p Fc(\045pic)p Fd(')9 b Fb(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b -Fd(14)150 2921 y(`)p Fc(\045readonly-tables)p Fd(')10 -b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 -3019 y(`)p Fc(\045struct-type)p Fd(')16 b Fb(.)g(.)c(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)41 b Fd(13)150 3116 y(`)p Fc(\045switch)p -Fd(')25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)49 b Fd(15)150 3394 y Fr(A)150 3528 y Fd(Arra)n(y)25 -b(name)19 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)44 b Fd(22)150 3819 y Fr(B)150 3953 y Fd(Bugs)9 -b Fb(.)k(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)35 b Fd(8)150 4243 y Fr(C)150 -4378 y Fd(Class)27 b(name)10 b Fb(.)j(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(21)2025 642 y Fr(D)2025 -764 y Fd(Declaration)27 b(section)d Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)49 b Fd(11)2025 855 y(Delimiters)9 b Fb(.)k(.)g(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(19)2025 -946 y(Duplicates)23 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)49 b Fd(23)2025 1203 y Fr(F)2025 -1325 y Fd(F)-6 b(ormat)23 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fd(11)2025 -1416 y(F)-6 b(unctions)25 b(section)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)44 b Fd(11)2025 1660 y Fr(H)2025 1781 -y Fc(hash)13 b Fb(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fd(17)2025 1873 -y(hash)25 b(table)9 b Fb(.)k(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)34 b Fd(17)2025 2117 y Fr(I)2025 -2238 y Fc(in_word_set)23 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)46 b Fd(17)2025 2330 y(Initializers)25 -b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -49 b Fd(20)2025 2573 y Fr(J)2025 2695 y Fd(Jump)25 b(v)l(alue)6 -b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -32 b Fd(24)2025 2952 y Fr(K)2025 3073 y Fd(Keyw)n(ords)25 -b(section)16 b Fb(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 -b Fd(11)2025 3330 y Fr(M)2025 3452 y Fd(Minimal)27 b(p)r(erfect)f(hash) -g(functions)c Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)48 b Fd(10)2025 3708 y Fr(N)2025 3830 y Fd(NUL)9 -b Fb(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(18)2025 4074 y Fr(S)2025 -4195 y Fd(Slot)26 b(name)13 b Fb(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fd(20)2025 4287 y(Static)26 -b(searc)n(h)g(structure)20 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fd(10)2025 4378 y Fc(switch)22 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(18,)27 b(22)p -eop end +TeXDict begin 29 30 bop 150 -116 a Fq(Concept)31 b(Index)2927 +b(29)150 299 y Fn(Concept)52 b(Index)275 658 y Fb(\(Index)24 +b(is)i(nonexisten)n(t\))p eop end %%Page: -1 32 -TeXDict begin -1 31 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fr(GNU)45 b(GENERAL)g(PUBLIC) +TeXDict begin -1 31 bop 3725 -116 a Fq(i)150 299 y Fn(T)-13 +b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fp(GNU)45 b(GENERAL)g(PUBLIC) g(LICENSE)31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 -b Fr(1)449 778 y Fs(Pream)m(ble)16 b Fl(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g +b Fp(1)449 778 y Fq(Pream)m(ble)16 b Fj(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fs(1)449 888 +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fq(1)449 888 y(TERMS)29 b(AND)j(CONDITIONS)d(F)m(OR)h(COPYING,)h(DISTRIBUTION)631 -997 y(AND)g(MODIFICA)-8 b(TION)24 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g +997 y(AND)g(MODIFICA)-8 b(TION)24 b Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fs(2)449 1107 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fq(2)449 1107 y(Ho)m(w)31 b(to)g(Apply)f(These)g(T)-8 b(erms)30 b(to)h(Y)-8 -b(our)31 b(New)f(Programs)16 b Fl(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)46 b Fs(6)150 1349 y Fr(Con)l(tributors)g(to)f(GNU)g -Fk(gperf)e Fr(Utilit)l(y)16 b Fa(.)21 b(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)f(.)g(.)h(.)60 b Fr(8)150 1619 y(1)135 b(In)l(tro)t(duction)15 +b(our)31 b(New)f(Programs)16 b Fj(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)46 b Fq(6)150 1349 y Fp(Con)l(tributors)g(to)f(GNU)g +Fi(gperf)e Fp(Utilit)l(y)16 b Fa(.)21 b(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h +(.)f(.)g(.)h(.)60 b Fp(8)150 1619 y(1)135 b(In)l(tro)t(duction)15 b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)60 -b Fr(9)150 1889 y(2)135 b(Static)45 b(searc)l(h)h(structures)f(and)f -(GNU)h Fk(gperf)15 b Fa(.)i(.)j(.)f(.)60 b Fr(10)150 +b Fp(9)150 1889 y(2)135 b(Static)45 b(searc)l(h)h(structures)f(and)f +(GNU)h Fi(gperf)15 b Fa(.)i(.)j(.)f(.)60 b Fp(10)150 2159 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)g -Fk(gperf)21 b Fa(.)c(.)i(.)h(.)f(.)h(.)65 b Fr(11)449 -2296 y Fs(3.1)92 b(Input)29 b(F)-8 b(ormat)32 b(to)f -Fn(gperf)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +Fi(gperf)21 b Fa(.)c(.)i(.)h(.)f(.)h(.)65 b Fp(11)449 +2296 y Fq(3.1)92 b(Input)29 b(F)-8 b(ormat)32 b(to)f +Fl(gperf)23 b Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)54 b Fs(11)748 2405 y(3.1.1)93 b(Declarations)9 -b Fl(.)17 b(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +g(.)g(.)54 b Fq(11)748 2405 y(3.1.1)93 b(Declarations)9 +b Fj(.)17 b(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)39 b Fs(11)1047 2515 y(3.1.1.1)93 b(User-supplied)30 -b Fn(struct)10 b Fl(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)39 b Fs(12)1047 2624 y(3.1.1.2)93 -b(Gp)s(erf)30 b(Declarations)18 b Fl(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fs(12)1047 -2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)f Fl(.)15 +g(.)39 b Fq(11)1047 2515 y(3.1.1.1)93 b(User-supplied)30 +b Fl(struct)10 b Fj(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)39 b Fq(12)1047 2624 y(3.1.1.2)93 +b(Gp)s(erf)30 b(Declarations)18 b Fj(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) +g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fq(12)1047 +2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)f Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)59 b Fs(15)748 2844 y(3.1.2)93 b(F)-8 b(ormat)31 -b(for)f(Keyw)m(ord)g(En)m(tries)17 b Fl(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fs(16)748 +(.)g(.)g(.)59 b Fq(15)748 2844 y(3.1.2)93 b(F)-8 b(ormat)31 +b(for)f(Keyw)m(ord)g(En)m(tries)17 b Fj(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fq(16)748 2953 y(3.1.3)93 b(Including)29 b(Additional)i(C)f(F)-8 -b(unctions)19 b Fl(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)49 b Fs(16)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)h -(directiv)m(es)f(for)g(GNU)g Fn(indent)p Fs(.)17 b Fl(.)c(.)i(.)g(.)g -(.)g(.)46 b Fs(16)449 3172 y(3.2)92 b(Output)29 b(F)-8 -b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)g Fn(gperf)23 -b Fl(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 b Fs(17)449 -3282 y(3.3)92 b(Use)31 b(of)f(NUL)h(b)m(ytes)22 b Fl(.)16 +b(unctions)19 b Fj(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)49 b Fq(17)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)h +(directiv)m(es)f(for)g(GNU)g Fl(indent)p Fq(.)17 b Fj(.)c(.)i(.)g(.)g +(.)g(.)46 b Fq(17)449 3172 y(3.2)92 b(Output)29 b(F)-8 +b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)g Fl(gperf)23 +b Fj(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 b Fq(17)449 +3282 y(3.3)92 b(Use)31 b(of)f(NUL)h(b)m(ytes)22 b Fj(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.) -f(.)g(.)51 b Fs(18)150 3524 y Fr(4)135 b(In)l(v)l(oking)45 -b Fk(gperf)16 b Fa(.)i(.)h(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h +f(.)g(.)51 b Fq(18)150 3524 y Fp(4)135 b(In)l(v)l(oking)45 +b Fi(gperf)16 b Fa(.)i(.)h(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)61 -b Fr(19)449 3661 y Fs(4.1)92 b(Sp)s(ecifying)30 b(the)g(Lo)s(cation)i -(of)e(the)h(Output)e(File)19 b Fl(.)e(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)49 b Fs(19)449 3771 y(4.2)92 b(Options)30 +b Fp(19)449 3661 y Fq(4.1)92 b(Sp)s(ecifying)30 b(the)g(Lo)s(cation)i +(of)e(the)h(Output)e(File)19 b Fj(.)e(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)49 b Fq(19)449 3771 y(4.2)92 b(Options)30 b(that)h(a\013ect)h(In)m(terpretation)f(of)g(the)f(Input)f(File)g -Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fs(19)449 3880 y(4.3)92 +Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fq(19)449 3880 y(4.3)92 b(Options)30 b(to)h(sp)s(ecify)f(the)h(Language)g(for)f(the)h(Output)e -(Co)s(de)14 b Fl(.)g(.)h(.)g(.)g(.)43 b Fs(19)449 3990 +(Co)s(de)14 b Fj(.)g(.)h(.)g(.)g(.)43 b Fq(19)449 3990 y(4.4)92 b(Options)30 b(for)g(\014ne)g(tuning)g(Details)i(in)e(the)h -(Output)e(Co)s(de)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)53 -b Fs(20)449 4100 y(4.5)92 b(Options)30 b(for)g(c)m(hanging)h(the)g -(Algorithms)g(emplo)m(y)m(ed)g(b)m(y)g Fn(gperf)21 b -Fl(.)14 b(.)50 b Fs(23)449 4209 y(4.6)92 b(Informativ)m(e)31 -b(Output)c Fl(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) +(Output)e(Co)s(de)23 b Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)53 +b Fq(20)449 4100 y(4.5)92 b(Options)30 b(for)g(c)m(hanging)h(the)g +(Algorithms)g(emplo)m(y)m(ed)g(b)m(y)g Fl(gperf)21 b +Fj(.)14 b(.)50 b Fq(23)449 4209 y(4.6)92 b(Informativ)m(e)31 +b(Output)c Fj(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)58 b Fs(25)150 4452 y Fr(5)135 b(Kno)l(wn)45 -b(Bugs)f(and)h(Limitations)i(with)e Fk(gperf)32 b Fa(.)19 -b(.)g(.)79 b Fr(26)150 4721 y(6)135 b(Things)44 b(Still)i(Left)g(to)f +(.)g(.)g(.)g(.)g(.)58 b Fq(25)150 4452 y Fp(5)135 b(Kno)l(wn)45 +b(Bugs)f(and)h(Limitations)i(with)e Fi(gperf)32 b Fa(.)19 +b(.)g(.)79 b Fp(26)150 4721 y(6)135 b(Things)44 b(Still)i(Left)g(to)f (Do)23 b Fa(.)d(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h -(.)f(.)g(.)h(.)f(.)68 b Fr(27)150 4991 y(7)135 b(Bibliograph)l(y)38 +(.)f(.)g(.)h(.)f(.)68 b Fp(27)150 4991 y(7)135 b(Bibliograph)l(y)38 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)82 -b Fr(28)150 5261 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f +b Fp(28)150 5261 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fr(29)p eop end +f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fp(29)p eop end %%Trailer userdict /end-hook known{end-hook}if -- cgit v1.2.1