diff options
author | Bruno Haible <bruno@clisp.org> | 2007-03-31 15:43:28 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2007-03-31 15:43:28 +0000 |
commit | faae53d552ca472817b28e988b62889ac264957c (patch) | |
tree | 6d6969cdff5e43d5458f1c6046185a36c1e31527 | |
parent | 420a9082115cf4ba510eda53ca2770c7666549f1 (diff) | |
download | gperf-faae53d552ca472817b28e988b62889ac264957c.tar.gz |
Regenerated.
-rw-r--r-- | doc/gperf.dvi | bin | 95684 -> 105368 bytes | |||
-rw-r--r-- | doc/gperf.html | 77 | ||||
-rw-r--r-- | doc/gperf.info | 28 | ||||
-rw-r--r-- | doc/gperf.pdf | bin | 226715 -> 225619 bytes | |||
-rw-r--r-- | doc/gperf.ps | 3511 | ||||
-rw-r--r-- | doc/gperf_1.html | 4 | ||||
-rw-r--r-- | doc/gperf_10.html | 57 | ||||
-rw-r--r-- | doc/gperf_2.html | 4 | ||||
-rw-r--r-- | doc/gperf_3.html | 4 | ||||
-rw-r--r-- | doc/gperf_4.html | 8 | ||||
-rw-r--r-- | doc/gperf_5.html | 10 | ||||
-rw-r--r-- | doc/gperf_6.html | 4 | ||||
-rw-r--r-- | doc/gperf_7.html | 4 | ||||
-rw-r--r-- | doc/gperf_8.html | 4 | ||||
-rw-r--r-- | doc/gperf_9.html | 4 | ||||
-rw-r--r-- | doc/gperf_toc.html | 14 |
16 files changed, 2050 insertions, 1683 deletions
diff --git a/doc/gperf.dvi b/doc/gperf.dvi Binary files differindex 0619301..04ba5ff 100644 --- a/doc/gperf.dvi +++ b/doc/gperf.dvi diff --git a/doc/gperf.html b/doc/gperf.html index 40216bc..e48f226 100644 --- a/doc/gperf.html +++ b/doc/gperf.html @@ -1,14 +1,14 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator</TITLE> </HEAD> <BODY> -<H1>User's Guide to <CODE>gperf</CODE> 3.0.2</H1> +<H1>User's Guide to <CODE>gperf</CODE> 3.0.3</H1> <H2>The GNU Perfect Hash Function Generator</H2> -<H2>Edition 3.0.2, 22 January 2006</H2> +<H2>Edition 3.0.3, 31 March 2007</H2> <ADDRESS>Douglas C. Schmidt</ADDRESS> <ADDRESS>Bruno Haible</ADDRESS> <P> @@ -570,7 +570,7 @@ or from <CODE>http://www.cs.wustl.edu/~schmidt/resume.html</CODE>. </P> <P> -A <EM>static search structure</EM> is an Abstract Data Type with certain +A <STRONG>static search structure</STRONG> is an Abstract Data Type with certain fundamental operations, e.g., <EM>initialize</EM>, <EM>insert</EM>, and <EM>retrieve</EM>. Conceptually, all insertions occur before any retrievals. In practice, <CODE>gperf</CODE> generates a <EM>static</EM> array @@ -580,7 +580,7 @@ insertions. It is a useful data structure for representing <EM>static search sets</EM>. Static search sets occur frequently in software system applications. Typical static search sets include compiler reserved words, assembler instruction opcodes, and built-in shell interpreter -commands. Search set members, called <EM>keywords</EM>, are inserted into +commands. Search set members, called <STRONG>keywords</STRONG>, are inserted into the structure only once, usually during program initialization, and are not generally modified at run-time. @@ -654,7 +654,7 @@ efficiently identify their respective reserved keywords. The perfect hash function generator <CODE>gperf</CODE> reads a set of "keywords" from an input file (or from the standard input by default). It attempts to derive a perfect hashing function that -recognizes a member of the <EM>static keyword set</EM> with at most a +recognizes a member of the <STRONG>static keyword set</STRONG> with at most a single probe into the lookup table. If <CODE>gperf</CODE> succeeds in generating such a function it produces a pair of C source code routines that perform hashing and table lookup recognition. All generated C code @@ -1211,7 +1211,7 @@ functions </P> <P> Several options control how the generated C code appears on the standard -output. Two C function are generated. They are called <CODE>hash</CODE> and +output. Two C functions are generated. They are called <CODE>hash</CODE> and <CODE>in_word_set</CODE>, although you may modify their names with a command-line option. Both functions require two arguments, a string, <CODE>char *</CODE> <VAR>str</VAR>, and a length parameter, <CODE>int</CODE> <VAR>len</VAR>. Their default @@ -1224,7 +1224,7 @@ function prototypes are as follows: <DD><A NAME="IDX35"></A> By default, the generated <CODE>hash</CODE> function returns an integer value created by adding <VAR>len</VAR> to several user-specified <VAR>str</VAR> byte -positions indexed into an <EM>associated values</EM> table stored in a +positions indexed into an <STRONG>associated values</STRONG> table stored in a local static array. The associated values table is constructed internally by <CODE>gperf</CODE> and later output as a static local C array called <SAMP>`hash_table'</SAMP>. The relevant selected positions (i.e. indices @@ -1970,34 +1970,7 @@ Foundation, 1989. <H1><A NAME="SEC28" HREF="gperf.html#TOC28">Concept Index</A></H1> <P> -Jump to: -<A HREF="#cindex_%">%</A> -- -<A HREF="#cindex_a">a</A> -- -<A HREF="#cindex_b">b</A> -- -<A HREF="#cindex_c">c</A> -- -<A HREF="#cindex_d">d</A> -- -<A HREF="#cindex_f">f</A> -- -<A HREF="#cindex_h">h</A> -- -<A HREF="#cindex_i">i</A> -- -<A HREF="#cindex_j">j</A> -- -<A HREF="#cindex_k">k</A> -- -<A HREF="#cindex_m">m</A> -- -<A HREF="#cindex_n">n</A> -- -<A HREF="#cindex_s">s</A> -<P> -<H2><A NAME="cindex_%">%</A></H2> +<H2>%</H2> <DIR> <LI><A HREF="gperf.html#IDX8"><SAMP>`%%'</SAMP></A> <LI><A HREF="gperf.html#IDX18"><SAMP>`%7bit'</SAMP></A> @@ -2026,56 +1999,56 @@ Jump to: <LI><A HREF="gperf.html#IDX32"><SAMP>`%{'</SAMP></A> <LI><A HREF="gperf.html#IDX33"><SAMP>`%}'</SAMP></A> </DIR> -<H2><A NAME="cindex_a">a</A></H2> +<H2>a</H2> <DIR> <LI><A HREF="gperf.html#IDX43">Array name</A>, <A HREF="gperf.html#IDX44">Array name</A> </DIR> -<H2><A NAME="cindex_b">b</A></H2> +<H2>b</H2> <DIR> <LI><A HREF="gperf.html#IDX1">Bugs</A> </DIR> -<H2><A NAME="cindex_c">c</A></H2> +<H2>c</H2> <DIR> <LI><A HREF="gperf.html#IDX42">Class name</A> </DIR> -<H2><A NAME="cindex_d">d</A></H2> +<H2>d</H2> <DIR> <LI><A HREF="gperf.html#IDX5">Declaration section</A> <LI><A HREF="gperf.html#IDX39">Delimiters</A> <LI><A HREF="gperf.html#IDX46">Duplicates</A> </DIR> -<H2><A NAME="cindex_f">f</A></H2> +<H2>f</H2> <DIR> <LI><A HREF="gperf.html#IDX4">Format</A> <LI><A HREF="gperf.html#IDX7">Functions section</A> </DIR> -<H2><A NAME="cindex_h">h</A></H2> +<H2>h</H2> <DIR> <LI><A HREF="gperf.html#IDX35">hash</A> <LI><A HREF="gperf.html#IDX34">hash table</A> </DIR> -<H2><A NAME="cindex_i">i</A></H2> +<H2>i</H2> <DIR> <LI><A HREF="gperf.html#IDX36">in_word_set</A> <LI><A HREF="gperf.html#IDX41">Initializers</A> </DIR> -<H2><A NAME="cindex_j">j</A></H2> +<H2>j</H2> <DIR> <LI><A HREF="gperf.html#IDX47">Jump value</A> </DIR> -<H2><A NAME="cindex_k">k</A></H2> +<H2>k</H2> <DIR> <LI><A HREF="gperf.html#IDX6">Keywords section</A> </DIR> -<H2><A NAME="cindex_m">m</A></H2> +<H2>m</H2> <DIR> <LI><A HREF="gperf.html#IDX3">Minimal perfect hash functions</A> </DIR> -<H2><A NAME="cindex_n">n</A></H2> +<H2>n</H2> <DIR> <LI><A HREF="gperf.html#IDX38">NUL</A> </DIR> -<H2><A NAME="cindex_s">s</A></H2> +<H2>s</H2> <DIR> <LI><A HREF="gperf.html#IDX40">Slot name</A> <LI><A HREF="gperf.html#IDX2">Static search structure</A> @@ -2084,8 +2057,8 @@ Jump to: </P> <P><HR><P> -This document was generated on 22 January 2006 using the -<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A> -translator version 1.52.</P> +This document was generated on 31 March 2007 using the +<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A> +translator version 1.51.</P> </BODY> </HTML> diff --git a/doc/gperf.info b/doc/gperf.info index 13a4845..c3e81ae 100644 --- a/doc/gperf.info +++ b/doc/gperf.info @@ -6,7 +6,7 @@ START-INFO-DIR-ENTRY END-INFO-DIR-ENTRY This file documents the features of the GNU Perfect Hash Function -Generator 3.0.2. +Generator 3.0.3. Copyright (C) 1989-2006 Free Software Foundation, Inc. @@ -1019,7 +1019,7 @@ File: gperf.info, Node: Output Format, Next: Binary Strings, Prev: Input Form =================================================== Several options control how the generated C code appears on the standard -output. Two C function are generated. They are called `hash' and +output. Two C functions are generated. They are called `hash' and `in_word_set', although you may modify their names with a command-line option. Both functions require two arguments, a string, `char *' STR, and a length parameter, `int' LEN. Their default function prototypes @@ -1692,17 +1692,17 @@ Node: Keywords43182 Node: Functions45127 Node: Controls for GNU indent45662 Node: Output Format46610 -Node: Binary Strings49401 -Node: Options50549 -Node: Output File51335 -Node: Input Details51727 -Node: Output Language53563 -Node: Output Details54979 -Node: Algorithmic Details62243 -Node: Verbosity67500 -Node: Bugs68211 -Node: Projects69804 -Node: Bibliography70933 -Node: Concept Index72990 +Node: Binary Strings49402 +Node: Options50550 +Node: Output File51336 +Node: Input Details51728 +Node: Output Language53564 +Node: Output Details54980 +Node: Algorithmic Details62244 +Node: Verbosity67501 +Node: Bugs68212 +Node: Projects69805 +Node: Bibliography70934 +Node: Concept Index72991 End Tag Table diff --git a/doc/gperf.pdf b/doc/gperf.pdf Binary files differindex 02991d7..4655e2a 100644 --- a/doc/gperf.pdf +++ b/doc/gperf.pdf diff --git a/doc/gperf.ps b/doc/gperf.ps index 274fb8a..f360905 100644 --- a/doc/gperf.ps +++ b/doc/gperf.ps @@ -1,19 +1,18 @@ %!PS-Adobe-2.0 -%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software -%%Title: ../../cvs/doc/gperf.dvi +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software +%%Title: ./gperf.dvi %%Pages: 32 %%PageOrder: Ascend -%%BoundingBox: 0 0 595 842 +%%BoundingBox: 0 0 596 842 %%DocumentFonts: CMBX12 CMTT12 CMR10 CMSY10 CMSL10 CMTT10 CMTI10 CMBX10 -%%+ CMSS10 CMB10 CMR9 CMBXTI10 +%%+ CMSS10 CMB10 CMR9 CMTT9 CMTI9 CMBXTI10 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D600 -o ../../cvs/doc/gperf.ps -%+ ../../cvs/doc/gperf.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2006.01.22:1238 -%%BeginProcSet: tex.pro 0 0 +%DVIPSCommandLine: dvips -D600 -o gperf.ps ./gperf.dvi +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2007.03.31:1631 +%%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 @@ -32,10 +31,22 @@ df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S -/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy -setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask -restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A @@ -59,7 +70,165 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet -%%BeginProcSet: texps.pro 0 0 +%%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 %! 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 @@ -96,9 +265,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 46 /period put +dup 0 /.notdef put readonly def /FontBBox{-29 -250 1274 754}readonly def +/UniqueID 5000771 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -142,6 +312,270 @@ 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 @@ -162,19 +596,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 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 +dup 0 /.notdef put readonly def /FontBBox{-39 -250 1036 750}readonly def +/UniqueID 5000792 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -201,64 +626,241 @@ C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A 109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 -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 +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 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -289,10 +891,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 97 /a put -dup 108 /l put +dup 0 /.notdef put readonly def /FontBBox{-62 -250 1011 750}readonly def +/UniqueID 5000761 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -363,10 +965,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 40 /parenleft put -dup 41 /parenright put +dup 0 /.notdef put readonly def /FontBBox{-61 -250 999 759}readonly def +/UniqueID 5000803 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -436,19 +1038,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 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 +dup 0 /.notdef put readonly def /FontBBox{-301 -250 1164 946}readonly def +/UniqueID 5000768 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -589,94 +1182,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 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 +dup 0 /.notdef put readonly def /FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1155,20 +1664,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 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 +dup 0 /.notdef put readonly def /FontBBox{-1 -234 524 695}readonly def +/UniqueID 5000833 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1287,68 +1786,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 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 +dup 0 /.notdef put readonly def /FontBBox{-53 -251 1139 750}readonly def +/UniqueID 5000769 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -1377,294 +1818,306 @@ E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 -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 +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 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -1695,53 +2148,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 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 +dup 0 /.notdef put readonly def /FontBBox{-163 -250 1146 969}readonly def +/UniqueID 5000828 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2095,43 +2505,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 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 +dup 0 /.notdef put readonly def /FontBBox{-62 -250 1123 750}readonly def +/UniqueID 5000798 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE @@ -2389,12 +2766,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 13 /circlecopyrt put -dup 15 /bullet put -dup 104 /angbracketleft put -dup 105 /angbracketright put +dup 0 /.notdef put readonly def /FontBBox{-29 -960 1116 775}readonly def +/UniqueID 5000820 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 @@ -2408,26 +2783,18 @@ E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C -515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78 -253AB320C099669BFED2878A6C4038A5BCEB5B4C28040BB8B4AC2C167BB2C999 -ED93E2F4AE3E4B44B7B6B469C36A24080D4BEDB5523D202E920D8898DEBD5EB0 -CAC3C5D5F01A87F7B15BD1C197B344F7D94E965CBFE73E8A65A2AA6A6F93B878 -03E30E60F1390C2FB671C8D36E7D6E516A20079B48CA9BE632F5A8D1250F01EE -6809D6C5B51AE3D1B4C244195E4AB5E68F2AF1D7556B9D03035E08B962A33B44 -426A3B5BEF3BA86E4BFE8C823D42816B59DAE9EBD42C115A1E75B0E6427720BF -773EA85158709B4DF306511D5CC19D7395BEE5940DF97513CC36EDF468B80C01 -476B0B89D1198F039E4A32FECF58E56F6B0A1D27E9E5FE6393AF613D11EE6185 -26EDAB5CD87D6B6C9838DC76423000F9E0D094046832BDDDE6AFB7549561F742 -F0B1AE278DB3355F8867D2CCF8BCC03AB7A7A8F9E51C4B2BD121F9D3B2477803 -1A24BBD88C9C54A8E31B9CF66295B665495BE7ACC72E1A1F05413DFCB56D0749 -49539F8F4706361CCBBEB69D135FF4B63C35408A38382C739EE8AF9F378CF061 -C9754E8C7CEDD29E63D79C8AD5518244E4BFCB827E05F4EFCF03BB47CE67F43E -F29192EC2FA1026ACFAF2CB156124C88D860864BEBE81CBBDD60DB5C7DA2B6A7 -B64E3DA907988FE60AF047DCEDF2D52D2D43E6C01FA7F84B598386FE03765B15 -EE11E9DB0BA83469FC7FC5CECCA2E4D84F87D43811978975C96D9CB66BB87B02 -579D63949B512A59123F039A1DAE2EFB897FFE82E8C6B0A30C570015B77B8318 -9BB684151679A432E2E167F4E27B7E878A46C19969230B9604ADE2E6487203D0 -DF06DF8F5E +515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD +5F3D998D8365AF76D4CF6A06FB66E1CBCFDB3A67D8880377CD677B9705EE853A +D849F88A828E244FA5816B7D081D4D1975A56D771790C21AE05809BEE6613452 +953F26C39CE61F0E134BC35404FE2F0B7D244D9A6F66E4D817D1C65024013AD3 +5F242EDE94633B8E20EA42B07F83BA649F12B784B2AAFA542BC597C6C2C9AE9C +39D60FBA6CD16AADB5DFDABF22F37E244DF3987FBFA55031CFCD46ADF03650CE +D6CDFFD87BF7407FFB63F3FE4C29FE753896101B2CEAB9007B66E29D6A5B85D3 +FF91F888E445677157A5996FC7A3BD19BAF3A3BCF33F0719B992A0F013B1F0A1 +82E42DF6F651071FB407F448DFF37653E2A0569BDD8EABC3280B3582745DB98B +644E5B341F531B0D81ED85F815B993C2B8B34CDDC6AE97606F6B3B1C5427F174 +362FAB82B935087B568E6F526347058C406E878F1CC2DD05C26D35565347C5A5 +7575891BB4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -2458,93 +2825,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 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 +dup 0 /.notdef put readonly def /FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 @@ -3057,50 +3341,68 @@ B771485F39ECDD20D29EA4133DCCDF90C9CA0F1F2385317B2053B1A53FF8F4C4 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont -TeXDict begin 39139632 55387786 1000 600 600 (../../cvs/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 +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 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[{}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 150[35 35 88[45 1[91 -13[{}4 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 +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 2[97 1[54 6[54 39[{ TeXf7b6d320Encoding ReEncodeFont }14 +172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi @@ -3111,15 +3413,15 @@ a4 end %%EndSetup %%Page: 1 1 -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(22)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 +TeXDict begin 1 0 bop 150 1318 a Fu(User's)65 b(Guide)g(to)f +Ft(gperf)f Fu(3.0.3)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)2597 1627 y(Edition)f(3.0.3,)j(31)e(Marc)m(h)g(2007)150 +4958 y Fr(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 Fq(Cop)m(yrigh)m(t)602 -4149 y(c)577 4152 y Fo(\015)30 b Fq(1989-2004)k(F)-8 +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-2007)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 @@ -3143,17 +3445,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 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) +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) -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 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 +(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 (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 @@ -3220,10 +3522,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 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 +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 (COPYING,)150 299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 -b(TION)199 515 y Fq(0.)61 b(This)42 b(License)h(applies)f(to)i(an)m(y)f +b(TION)199 515 y Fs(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 @@ -3310,7 +3612,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 Fq(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 3 4 bop 150 -116 a Fs(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 @@ -3400,7 +3702,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 Fq(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 4 5 bop 150 -116 a Fs(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 @@ -3491,7 +3793,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 Fq(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 5 6 bop 150 -116 a Fs(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 @@ -3501,12 +3803,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)f(guided)g(b)m(y)g(the)h(t)m(w)m +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 (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 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 +(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 (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 @@ -3540,13 +3842,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 Fp(END)45 b(OF)g(TERMS)f(AND)h +3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fr(END)45 b(OF)g(TERMS)f(AND)h (CONDITIONS)p eop end %%Page: 6 8 -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 +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 b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 -503 y Fq(If)38 b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m +503 y Fs(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) @@ -3559,10 +3861,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 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 +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 (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 @@ -3577,24 +3879,24 @@ b(\(C\))i Fm(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 Fq(Also)31 b(add)e(information)i +(MA)h(02111-1307,)e(USA.)275 2930 y Fs(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 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) +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) 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 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) +(`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) 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 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) +(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) 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 @@ -3602,14 +3904,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 Fl(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f +4580 y(names:)390 4720 y Fn(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 Fm(signature)31 -b(of)f(T)m(y)h(Co)s(on)p Fl(,)47 b(1)g(April)g(1989)390 +(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 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 Fq(GNU)31 b(GENERAL)f(PUBLIC)h +TeXDict begin 7 8 bop 150 -116 a Fs(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 @@ -3620,12 +3922,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 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 +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 (function)h(generator)i(utilit)m(y)f(w)m(as)g(written)f(in)g(GNU)h(C)p -Fl(++)330 643 y Fq(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83 +Fn(++)330 643 y Fs(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) @@ -3634,77 +3936,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 Fl(<bug-gnu-gperf@gnu.org>)p Fq(.)225 -1215 y Fo(\017)60 b Fq(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h +(rep)s(orted)h(to)h Fn(<bug-gnu-gperf@gnu.org>)p Fs(.)225 +1215 y Fq(\017)60 b Fs(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 -Fl(gperf)p Fq(.)225 1704 y Fo(\017)60 b Fq(Bruno)26 b(Haible)i +Fn(gperf)p Fs(.)225 1704 y Fq(\017)60 b Fs(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 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 +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 (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 Fm(s)j -Fq(o)s(ccurs)c(in)g Fm(W)p Fq(,)h(using)e(at)j(most)150 +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 1081 y(one)31 b(prob)s(e)e(in)m(to)i(the)g(lo)s(okup)f(table.)275 -1215 y Fl(gperf)22 b Fq(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h +1215 y Fn(gperf)22 b Fs(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 Fl(++)p Fq(,)24 b(GNU)f(Ja)m(v)-5 +(GNU)150 1435 y(C)p Fn(++)p Fs(,)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 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 +(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 (a)m(v)-5 b(ailable)42 b(in)e(the)g(Second)f(USENIX)150 -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 +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 %%Page: 10 12 -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 +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 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 Fl(gperf)19 b Fq(generates)k(a)e Fj(static)27 b Fq(arra)m(y)22 +b Fn(gperf)19 b Fs(generates)k(a)e Fl(static)27 b Fs(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 -Fj(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fq(.)40 b(Static)28 +Fl(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fs(.)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 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 +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 (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 @@ -3713,32 +4015,32 @@ Fq(,)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 Fm(n)h Fq(elemen)m(t)h(sorted)150 +b(example,)k(an)41 b Fo(n)h Fs(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 Fm(n)p Fq(.)42 b(Con)m(v)m(ersely)-8 +(prop)s(ortional)g(to)g(log)i Fo(n)p Fs(.)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 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 +(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 (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 Fo(\017)60 b Fq(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition) +2580 y Fq(\017)60 b Fs(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 -Fj(one)41 b Fq(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30 +Fl(one)41 b Fs(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 Fo(\017)60 b Fq(The)35 b(actual)j(memory)e +(ert)m(y)-8 b(.)225 2824 y Fq(\017)60 b Fs(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 Fj(no)j(lar)-5 b(ger)p Fq(.)42 b(This)29 +b(set,)g(and)f Fl(no)j(lar)-5 b(ger)p Fs(.)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 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 +(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 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 @@ -3746,10 +4048,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 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) +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) 150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44 -b Fl(gperf)39 b Fq(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f +b Fn(gperf)39 b Fs(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 @@ -3758,44 +4060,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 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 +(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 (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 Fl(gperf)e Fq(is)i(curren)m(tly)h +b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(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 Fl(++)p -Fq(,)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 Fn(++)p +Fs(,)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 -Fl(gperf)d Fq(to)i(automatically)i(generate)f(static)g(searc)m(h)f +Fn(gperf)d Fs(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 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 +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 (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 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 +(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 (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 Fl(gperf)p -Fq(.)275 1332 y(By)23 b(default,)i Fl(gperf)d Fq(attempts)i(to)g(pro)s +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 (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 @@ -3804,73 +4106,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 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 +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 (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 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(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(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 Fl(gperf)44 b Fq(assigns)h(v)-5 +2126 y(In)44 b(general,)50 b Fn(gperf)44 b Fs(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 Fl(gperf)f Fq(to)j(\014nd)d(and)h(generate)i(a)f(p)s +(is)g(for)f Fn(gperf)f Fs(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 -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 +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 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 Fl(-t)p Fq(')g(option.)66 +3021 y(particular)f(the)g(`)p Fn(-t)p Fs(')g(option.)66 b(The)38 b(input's)g(app)s(earance)h(is)g(similar)g(to)g(GNU)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 +(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 (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 Fl(-t)p Fq(')f(option)h(is)f(not)h(giv)m(en.)48 +b(,)35 b(if)d(the)h(`)p Fn(-t)p Fs(')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 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 +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 (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 Fl(gperf)f Fq(declarations)j +5230 y(tions)d(and)e(de\014nitions,)h Fn(gperf)f Fs(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 Fl(struct)p -Fq(.)p eop end +(for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fn(struct)p +Fs(.)p eop end %%Page: 12 14 -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 +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 (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 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 +(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 938 y(This)k(\014rst)f(\014eld)h(m)m(ust)h(b)s(e)e(called)j(`)p -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 +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 b(option)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 b(the)d(`)p -Fl(\045define)f(slot-name)p Fq(')f(declaration\))k(describ)s(ed)e(b)s +Fn(\045define)f(slot-name)p Fs(')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 Fl(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i +1328 y Fn(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 @@ -3880,268 +4182,267 @@ 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 Fq(Separating)25 b(the)g Fl(struct)f Fq(declaration)i(from)f(the)g +y Fs(Separating)25 b(the)g Fn(struct)f Fs(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 -Fl(\045\045)p Fq(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h +Fn(\045\045)p Fs(',)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 -Fl(lex)p Fq(.)275 3175 y(If)k(the)i Fl(struct)d Fq(has)i(already)h(b)s +Fn(lex)p Fs(.)275 3175 y(If)k(the)i Fn(struct)d Fs(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 Fl(struct)46 b(month;)390 3525 y(\045\045)390 +390 3421 y Fn(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 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 +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 (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 Fl(\045compare-lengths)p Fq('.)199 +(t,)h(lik)m(e)h(`)p Fn(\045compare-lengths)p Fs('.)199 4667 y(2.)61 b(Declarations)33 b(with)d(an)g(argumen)m(t,)h(lik)m(e)h -(`)p Fl(\045switch=)p Fm(coun)m(t)r Fq('.)199 4806 y(3.)61 +(`)p Fn(\045switch=)p Fo(coun)m(t)r Fs('.)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 Fl(\045define)330 4916 -y(lookup-function-name)25 b Fm(name)5 b Fq('.)275 5088 +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 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 Fl(gperf)d -Fq(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 Fn(gperf)d +Fs(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end %%Page: 13 15 -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 +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 (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 -Fl(")p Fq(,)p Fl(")p Fq(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j +Fn(")p Fs(,)p Fn(")p Fs(.)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 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 +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 (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 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 +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 (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 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) +(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) 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 Fl(KR-C)p Fq(')238 b(Old-st)m(yle)27 +(tly:)630 1979 y(`)p Fn(KR-C)p Fs(')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 Fl(const)p Fq('.)630 2345 y(`)p Fl(C)p Fq(')382 +(king)i(`)p Fn(const)p Fs('.)630 2345 y(`)p Fn(C)p Fs(')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 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 +(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 (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 2710 y(`)p -Fl(ANSI-C)p Fq(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s +Fn(ANSI-C)p Fs(')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 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 +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 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 Fl(name)p -Fq('.)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 Fn(name)p +Fs('.)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 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 +(\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 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 -Fm(slot-name)51 b Fq(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630 +Fo(slot-name)51 b Fs(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 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 +(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 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 -Fl(hash)p Fq('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h +Fn(hash)p Fs('.)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 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 +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 (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 Fl(in_word_set)p -Fq('.)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 Fn(in_word_set)p +Fs('.)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 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 +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 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 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 +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 (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 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 +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 (this)h(range.)630 1230 y(Only)e(an)g(explicit)i(test)f(lik)m(e)h(`)p -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 +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 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)29 b(for)f(binary)g(comparisons)h(\(see)h -Fo(h)p Fq(unde\014ned)p Fo(i)d Fq([Binary)j(Strings],)f(page)g -Fo(h)p Fq(un-)630 1724 y(de\014ned)p Fo(i)p Fq(\).)53 -b(It)35 b(also)g(migh)m(t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er) -e(of)i(string)f(comparisons)h(made)630 1833 y(during)22 -b(the)i(lo)s(okup,)h(since)f(k)m(eyw)m(ords)g(with)g(di\013eren)m(t)g -(lengths)g(are)g(nev)m(er)g(compared)f(via)630 1943 y -Fl(strcmp)p Fq(.)38 b(Ho)m(w)m(ev)m(er,)31 b(using)d(`)p -Fl(\045compare-lengths)p Fq(')c(migh)m(t)29 b(greatly)g(increase)g(the) -g(size)g(of)630 2052 y(the)h(generated)g(C)g(co)s(de)f(if)h(the)g(lo)s -(okup)f(table)i(range)f(is)f(large)i(\(whic)m(h)f(implies)g(that)g(the) -630 2162 y(switc)m(h)g(option)h(`)p Fl(-S)p Fq(')f(or)g(`)p -Fl(\045switch)p Fq(')f(is)h(not)g(enabled\),)h(since)f(the)g(length)h -(table)g(con)m(tains)630 2271 y(as)g(man)m(y)f(elemen)m(ts)i(as)e -(there)h(are)g(en)m(tries)g(in)f(the)h(lo)s(okup)f(table.)150 -2436 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 +1614 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h +(3.3)f([Binary)g(Strings],)g(page)g(18\).)630 1724 y(It)g(also)h(migh)m +(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 +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 +(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 (erform)e(string)h(comparisons.)630 2655 y(The)30 b(default)g(action)i -(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 +(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 (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 Fl(\045enum)p Fq(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 +3313 y(`)p Fn(\045enum)p Fs(')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 Fl(<jjc@ai.mit.edu>)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(<string.h>)p -Fq(,)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 Fn(<jjc@ai.mit.edu>)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(<string.h>)p +Fs(,)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 Fl(\045global-table)p Fq(')630 4299 y(Generate)38 +4189 y(`)p Fn(\045global-table)p Fs(')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 Fl(\045pic)p Fq(')238 b(Optimize)42 b(the)f(generated)h(table)g +y(`)p Fn(\045pic)p Fs(')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 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 +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 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 Fl(int)p -Fq(',)f(not)h(`)p Fl(char)630 5011 y(*)p Fq(',)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 Fn(int)p +Fs(',)f(not)h(`)p Fn(char)630 5011 y(*)p Fs(',)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 Fl(stringpool)630 -5230 y(+)e Fm(o)5 b Fq(',)34 b(where)f Fm(o)38 b Fq(is)33 +(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 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 Fl(\045define)c -(string-pool-name)p Fq(')d(declaration.)p eop end +(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 %%Page: 15 17 -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 +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 (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 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 +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 (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 Fl(\045pic)p Fq(')g(and)g(ev)m(en)h -(when)f(the)h(`)p Fl(\045global-table)p Fq(')c(declaration)38 +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 b(\(or,)h(equiv)-5 b(a-)630 847 y(len)m(tly)d(,)32 b(the)f(option)g(`)p -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 +Fn(-G)p Fs('\))f(is)h(giv)m(en.)150 1074 y(`)p Fn(\045null-strings)p +Fs(')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 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 Fl(\045pic)p Fq('\),)f(at)g(the)f(exp)s(ense)630 +(declaration)h(`)p Fn(\045pic)p Fs('\),)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 +(time.)150 1739 y(`)p Fn(\045define)g(word-array-name)d +Fo(name)5 b Fs(')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 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 +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 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 +(\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 +2177 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 2404 y(`)p Fn(\045define)f(length-table-name)c +Fo(name)5 b Fs(')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 +Fn(lengthtable)p Fs('.)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 +(\014le,)h(ev)m(en)g(when)e(the)h(option)h(`)p Fn(-G)p +Fs(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)36 b(the)630 +2842 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 3069 y(`)p Fn(\045switch=)p Fo(coun)m(t)r +Fs(')630 3179 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 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 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 -3508 y(ho)m(w)33 b(man)m(y)f Fl(switch)f Fq(statemen)m(ts)k(are)e +3508 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 -Fl(switch)630 3617 y Fq(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i +Fn(switch)630 3617 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 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 +(the)g(elemen)m(ts)630 3727 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 3836 y(generate)29 -b(co)s(de)f(for)f(large)h Fl(switch)e Fq(statemen)m(ts.)41 +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 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 +4173 y(`)p Fn(\045omit-struct-type)p Fs(')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 4392 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g(de\014ned)e(elsewhere.)150 -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 +4751 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 +5011 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 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 5230 y(b)m(y)37 b(enclosing)h(the)g (region)g(inside)e(left-justi\014ed)i(surrounding)d(`)p -Fl(\045{)p Fq(',)k(`)p Fl(\045})p Fq(')e(pairs.)61 b(Here)38 +Fn(\045{)p Fs(',)k(`)p Fn(\045})p Fs(')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 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(<assert.h>)390 +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)390 299 y Fn(\045{)390 403 y(#include)46 b(<assert.h>)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 @@ -4149,17 +4450,17 @@ b Fq(16)390 299 y Fl(\045{)390 403 y(#include)46 b(<assert.h>)390 (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(3,)47 b(31,)g(31)390 1337 y(...)150 1632 y Fj(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 +1865 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 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 +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 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 +Fn(#)p Fs(')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 +(`)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 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 @@ -4168,8 +4469,8 @@ 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 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 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 +(kslash)h(escap)s(es)g(lik)m(e)h Fn(\\")e Fs(or)150 2806 +y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)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 2916 y(whitespace.)58 b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g @@ -4177,13 +4478,13 @@ b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g 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 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 +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 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 +4508 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 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) @@ -4191,210 +4492,207 @@ m(ord.)41 b(Fields)29 b(should)e(b)s(e)h(separated)150 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 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 +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 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(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 5230 y(is)g Fl(not)45 b Fs(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 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 +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)150 299 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 +b(unctions)275 490 y Fs(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 -Fl(flex)f Fq(and)150 600 y Fl(bison)p Fq(.)36 b(All)23 +Fn(flex)f Fs(and)150 600 y Fn(bison)p Fs(.)36 b(All)23 b(text)g(in)f(this)f(section,)k(starting)e(at)g(the)f(\014nal)f(`)p -Fl(\045\045)p Fq(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g +Fn(\045\045)p Fs(')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 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 +(section)h(is)g(v)-5 b(alid)30 b(C.)150 1040 y Fj(3.1.4)63 b(Where)41 b(to)g(place)f(directiv)m(es)g(for)i(GNU)g -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 +Fi(indent)p Fj(.)275 1231 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 1341 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 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 Fl(indent)p -Fq(.)36 b(More)24 b(precisely)-8 b(,)150 1560 y(assuming)30 +(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 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 +1688 y Fn(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) +y(\045\045)390 2518 y(functions)150 2644 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 +2772 y Fn(/*)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 +4263 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 4454 y Fs(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 -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 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 -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 +4564 y(C)i(functions)g(are)h(generated.)77 b(They)42 +b(are)h(called)g Fn(hash)f Fs(and)f Fn(in_word_set)p +Fs(,)i(although)g(y)m(ou)f(ma)m(y)150 4673 y(mo)s(dify)30 +b(their)g(names)h(with)f(a)h(command-line)g(option.)42 +b(Both)31 b(functions)f(require)g(t)m(w)m(o)i(argumen)m(ts,)g(a)150 +4783 y(string,)h Fn(char)c(*)i Fo(str)p Fs(,)i(and)e(a)i(length)f +(parameter,)h Fn(int)e Fo(len)p Fs(.)46 b(Their)31 b(default)h +(function)g(protot)m(yp)s(es)h(are)150 4892 y(as)e(follo)m(ws:)3525 +5121 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 5230 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 +5340 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)p eop end %%Page: 18 20 -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 +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)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 +(constructed)g(in)m(ternally)h(b)m(y)390 408 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 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(,)h(as)i(detailed)g(in)f(the)g Fj(Options)37 -b Fq(section)29 b(b)s(elo)m(w)g(\(see)g Fo(h)p Fq(unde\014ned)p -Fo(i)d Fq([Options],)j(page)g Fo(h)p Fq(un-)390 737 y(de\014ned)p -Fo(i)p Fq(\).)3525 941 y(F)-8 b(unction)-3724 b Fe(in)p -253 941 35 5 v 41 w(w)m(ord)p 542 941 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 1050 y Fq(If)k Fm(str)41 b Fq(is)33 +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 +628 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 857 y(F)-8 b(unction)-3724 b Fg(in)p +253 857 35 5 v 41 w(w)m(ord)p 542 857 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 967 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 1160 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 -1269 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 1435 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 1545 -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 -1654 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 1764 +b(if)d(the)390 1076 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 +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 Fn(NULL)p +Fs(.)275 1367 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 1477 +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)150 +1587 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 1696 y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 -1892 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions) +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 -2040 y(`)p Fl(-t)p Fq(')150 2149 y(`)p Fl(--struct-type)p -Fq(')630 2259 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f -Fl(struct)p Fq(.)150 2406 y(`)p Fl(-S)h Fm(total-switc)m(h-statemen)m -(ts)t Fq(')150 2515 y(`)p Fl(--switch=)p Fm(total-switc)m(h-statemen)m -(ts)t Fq(')630 2625 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 2735 y(sparse\))j(static)h(arra)m(y)-8 +1987 y(`)p Fn(-t)p Fs(')150 2097 y(`)p Fn(--struct-type)p +Fs(')630 2207 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f +Fn(struct)p Fs(.)150 2364 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m +(ts)t Fs(')150 2474 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m +(ts)t Fs(')630 2583 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 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 2844 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 2954 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.) -275 3101 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 3210 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 3320 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 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 3179 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 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 -3430 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 -3539 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 3778 y Fp(3.3)68 -b(Use)46 b(of)f(NUL)g(b)l(ytes)275 3965 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 4074 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 Fr(3.3)68 +b(Use)46 b(of)f(NUL)g(b)l(ytes)275 3954 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 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 4184 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 4293 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f -Fm(len)p Fq(.)275 4422 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 -4531 y Fm(str)e Fq(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 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 4283 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f +Fo(len)p Fs(.)275 4417 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 +4526 y Fo(str)e Fs(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 -Fl(gperf)f Fq(will)h(only)150 4641 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 +Fn(gperf)f Fs(will)h(only)150 4636 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 b(the)d(k)m(eyw)m(ords)g(in)g(the)g(input)f(\014le)150 -4751 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 +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 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 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 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 +(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 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 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 +(`)p Fn(-c)p Fs(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47 +b(the)150 5317 y(`)p Fn(\045compare-strncmp)p Fs(')26 b(declaration\))33 b(is)d(ignored.)p eop end %%Page: 19 21 -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 +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 (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 Fl(--help)p Fq(')150 761 +b(ailable)36 b(via)e(the)f(`)p Fn(--help)p Fs(')150 761 y(option.)41 b(Here)31 b(is)f(the)h(complete)h(list)f(of)f(options.)150 -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 +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 (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 Fl(-)p Fq('.)150 1785 y Fp(4.2)68 +(or)g(if)g(it)h(is)g(`)p Fn(-)p Fs('.)150 1785 y Fr(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 Fq(These)29 b(options)i(are)f(also)h(a)m(v)-5 -b(ailable)33 b(as)d(declarations)i(in)d(the)i(input)e(\014le)h(\(see)h -Fo(h)p Fq(unde\014ned)p Fo(i)e Fq([Gp)s(erf)150 2090 -y(Declarations],)k(page)e Fo(h)p Fq(unde\014ned)p Fo(i)p -Fq(\).)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 +(File)275 1981 y Fs(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 (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 -Fl(")p Fq(,)p Fl(")p Fq(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j +Fn(")p Fs(,)p Fn(")p Fs(.)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 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 +(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 (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 Fl(\045\045)p Fq(')d(is)h(considered)g(part)f(of) +(consecutiv)m(e)i(`)p Fn(\045\045)p Fs(')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 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 +(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 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 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 +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 (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 @@ -4405,274 +4703,271 @@ 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 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 +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 (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 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)29 b(options)i(are)f(also) -h(a)m(v)-5 b(ailable)33 b(as)d(declarations)i(in)d(the)i(input)e -(\014le)h(\(see)h Fo(h)p Fq(unde\014ned)p Fo(i)e Fq([Gp)s(erf)150 -5340 y(Declarations],)k(page)e Fo(h)p Fq(unde\014ned)p -Fo(i)p Fq(\).)p eop end +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 +(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 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 +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 (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 Fl(KR-C)p Fq(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f +798 y(`)p Fn(KR-C)p Fs(')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 -Fl(const)p Fq('.)630 1187 y(`)p Fl(C)p Fq(')382 b(Common)23 +Fn(const)p Fs('.)630 1187 y(`)p Fn(C)p Fs(')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 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 +(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 (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 1576 y(`)p -Fl(ANSI-C)p Fq(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s +Fn(ANSI-C)p Fs(')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 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 +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 (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i -(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 +(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 (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i -(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)29 -b(of)g(these)g(options)g(are)g(also)h(a)m(v)-5 b(ailable)31 -b(as)e(declarations)h(in)e(the)h(input)f(\014le)h(\(see)g -Fo(h)p Fq(unde\014ned)p Fo(i)150 3181 y Fq([Gp)s(erf)h(Declarations],)j -(page)e Fo(h)p Fq(unde\014ned)p Fo(i)p Fq(\).)150 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 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 -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 +(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 +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 +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 +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 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 Fm(slot-name)30 b Fq(in)23 b(empt)m(y)h(hash)f(table)h +b(follo)m(wing)i Fo(slot-name)30 b Fs(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 -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) +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) 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 Fl(hash)p Fq('.)40 +b(Default)31 b(name)630 5340 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(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 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 +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 (for)f(the)h(generated)h(lo)s(okup)f(function.)75 b(Default)630 -628 y(name)28 b(is)g(`)p Fl(in_word_set)p Fq('.)37 b(This)27 +628 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(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 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 +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 (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 -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 +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 (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 -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 +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 2235 y(Only)26 b(an)g(explicit)i(test)g(lik)m(e)f(`)p -Fl(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fq(')25 b(guaran)m(tees)j +Fn(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')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 Fl(gperf)e Fq(earlier)j(than)e(2.7;)k(no)m(w)d(the)g +(ersions)g(of)g Fn(gperf)e Fs(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 Fl(-l)p -Fq(')150 2765 y(`)p Fl(--compare-lengths)p Fq(')630 2874 +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 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)29 b(for)f(binary)g(comparisons)h(\(see)h -Fo(h)p Fq(unde\014ned)p Fo(i)d Fq([Binary)j(Strings],)f(page)g -Fo(h)p Fq(un-)630 3093 y(de\014ned)p Fo(i)p Fq(\).)53 -b(It)35 b(also)g(migh)m(t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er) -e(of)i(string)f(comparisons)h(made)630 3203 y(during)22 -b(the)i(lo)s(okup,)h(since)f(k)m(eyw)m(ords)g(with)g(di\013eren)m(t)g -(lengths)g(are)g(nev)m(er)g(compared)f(via)630 3313 y -Fl(strcmp)p Fq(.)39 b(Ho)m(w)m(ev)m(er,)31 b(using)d(`)p -Fl(-l)p Fq(')h(migh)m(t)h(greatly)g(increase)g(the)f(size)g(of)g(the)g -(generated)h(C)630 3422 y(co)s(de)25 b(if)f(the)h(lo)s(okup)f(table)h -(range)g(is)f(large)i(\(whic)m(h)e(implies)h(that)g(the)f(switc)m(h)h -(option)g(`)p Fl(-S)p Fq(')630 3532 y(or)31 b(`)p Fl(\045switch)p -Fq(')e(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)630 3641 y(as)g(there)f(are)h(en)m -(tries)g(in)f(the)h(lo)s(okup)f(table.)150 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 +2984 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h +(3.3)f([Binary)g(Strings],)g(page)g(18\).)630 3093 y(It)g(also)h(migh)m +(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) +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 +(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 (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 Fl(-E)p -Fq(')150 5121 y(`)p Fl(--enum)p Fq(')142 b(De\014ne)31 +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 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 -Fl(<jjc@ai.mit.edu>)p Fq(.)p eop end +Fn(<jjc@ai.mit.edu>)p Fs(.)p eop end %%Page: 22 24 -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 +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 y(Include)30 b(the)h(necessary)h(system)f(include)g(\014le,)g -Fl(<string.h>)p Fq(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 +Fn(<string.h>)p Fs(,)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 -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 +897 y(`)p Fn(-G)p Fs(')150 1007 y(`)p Fn(--global-table)p +Fs(')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 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 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 +150 1386 y(`)p Fn(-P)p Fs(')150 1496 y(`)p Fn(--pic)p +Fs(')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 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)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 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 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 +(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 1934 y(*)p Fs(',)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 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 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 +(expression)f(`)p Fn(stringpool)630 2153 y(+)e Fo(o)5 +b Fs(',)34 b(where)f Fo(o)38 b Fs(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 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 +(through)g(the)630 2263 y(option)e(`)p Fn(--string-pool-name)p +Fs('.)150 2423 y(`)p Fn(-Q)f Fo(string-p)s(o)s(ol-name)5 +b Fs(')150 2533 y(`)p Fn(--string-pool-name=)p Fo(string-p)s(o)s +(ol-name)g Fs(')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 2752 y(`)p Fl(-P)p Fq('.)38 b(The)21 -b(default)g(name)h(is)f(`)p Fl(stringpool)p Fq('.)36 +m(y)f(option)630 2752 y(`)p Fn(-P)p Fs('.)38 b(The)21 +b(default)g(name)h(is)f(`)p Fn(stringpool)p Fs('.)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 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 +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 +2971 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))32 +b(is)f(giv)m(en.)150 3131 y(`)p Fn(--null-strings)p Fs(')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 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 -Fl(-P)p Fq('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630 +Fn(-P)p Fs('\),)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 +150 3730 y(`)p Fn(-W)h Fo(hash-table-arra)m(y-name)5 +b Fs(')150 3839 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m +(y-name)g Fs(')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 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 +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 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 +(\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 +4278 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 +b(is)d(giv)m(en.)150 4413 y(`)p Fn(--length-table-name=)p +Fo(length-table-arra)m(y-name)5 b Fs(')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(Default)43 b(name)g(is)f(`)p Fn(lengthtable)p Fs('.)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 +e(the)h(option)h(`)p Fn(-G)p Fs(')f(\(or,)h(equiv)-5 +b(alen)m(tly)d(,)36 b(the)630 4851 y(`)p Fn(\045global-table)p +Fs(')27 b(declaration\))33 b(is)d(giv)m(en.)150 5011 +y(`)p Fn(-S)g Fo(total-switc)m(h-statemen)m(ts)t Fs(')150 +5121 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t +Fs(')630 5230 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 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 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) +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)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 +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 +518 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 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 +(elemen)m(ts)630 628 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 737 y(generate)29 -b(co)s(de)f(for)f(large)h Fl(switch)e Fq(statemen)m(ts.)41 +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 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 +1000 y(`)p Fn(-T)p Fs(')150 1110 y(`)p Fn(--omit-struct-type)p +Fs(')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 +(de\014ned)e(elsewhere.)150 1483 y(`)p Fn(-p)p Fs(')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 Fl(gperf)p Fq(.)49 b(It)630 +d(previous)g(releases)i(of)f Fn(gperf)p Fs(.)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 +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 2052 y Fs(`)p +Fn(-k)30 b Fo(selected-b)m(yte-p)s(ositions)t Fs(')150 +2162 y(`)p Fn(--key-positions=)p Fo(selected-b)m(yte-p)s(ositions)t +Fs(')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 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 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 +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 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 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 +(hash)630 2710 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 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 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 +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 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 3280 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s @@ -4683,70 +4978,70 @@ 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 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 +(ersion)g(2.8)i(of)e Fn(gperf)p Fs(;)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 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 +(ositions.)150 4113 y(`)p Fn(-D)p Fs(')150 4222 y(`)p +Fn(--duplicates)p Fs(')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 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 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 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 +b(-D)g(option)g Fn(gperf)e Fs(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 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 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 +b Fn(gperf)c Fs(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 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 +Fn(gperf)f Fs(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 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 +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(-m)30 b Fo(iterations)t Fs(')150 408 y(`)p Fn +(--multiple-iterations=)p Fo(iterations)t Fs(')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 +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 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 +f Fo(iterations)40 b Fs(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 +907 y(`)p Fn(-i)f Fo(initial-v)-5 b(alue)5 b Fs(')150 +1016 y(`)p Fn(--initial-asso=)p Fo(initial-v)-5 b(alue)5 +b Fs(')630 1126 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 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 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 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 +(when)630 1455 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 1564 y(option)i(is)f(used.)150 1733 +y(`)p Fn(-j)g Fo(jump-v)-5 b(alue)5 b Fs(')150 1843 y(`)p +Fn(--jump=)p Fo(jump-v)-5 b(alue)5 b Fs(')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 -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) +2062 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 2172 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 2341 y(`)p Fn(-n)p Fs(')150 2451 y(`)p Fn(--no-strlen)p +Fs(')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 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 -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 +2780 y(lo)s(okup)30 b(table.)150 2949 y(`)p Fn(-r)p Fs(')150 +3059 y(`)p Fn(--random)p Fs(')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 3278 y(generates)23 b(solutions)e(faster)h(than)f(using)g @@ -4754,8 +5049,8 @@ b(alues)38 b(table.)66 b(This)38 b(frequen)m(tly)630 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 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 +3666 y(`)p Fn(-s)f Fo(size-m)m(ultiple)5 b Fs(')150 3776 +y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultiple)g Fs(')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 3995 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g @@ -4775,10 +5070,10 @@ 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 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 -Fl(-m)p Fq(')g(is)f(b)s(etter)h(at)g(this)630 4872 y(purp)s(ose.)630 +Fn(-m)p Fs(')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 +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 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 5230 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h @@ -4786,8 +5081,8 @@ b(a)630 5230 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)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 +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)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 @@ -4795,233 +5090,359 @@ m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630 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 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 +(essen)m(tially)h(a)f(heuristic.)150 885 y Fr(4.6)68 +b(Informativ)l(e)47 b(Output)150 1103 y Fs(`)p Fn(-h)p +Fs(')150 1212 y(`)p Fn(--help)p Fs(')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 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 +b(execution.)150 1481 y(`)p Fn(-v)p Fs(')150 1591 y(`)p +Fn(--version)p Fs(')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 Fn(-d)p Fs(')150 +1969 y(`)p Fn(--debug)p Fs(')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 2079 y(error")i(when)g Fl(gperf)f Fq(is)h(executing.) +g(\\standard)630 2079 y(error")i(when)g Fn(gperf)f Fs(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 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 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 -2408 y(program)30 b(when)g(the)g(`)p Fl(-d)p Fq(')g(option)h(is)g +2408 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)h(is)g (enabled.)p eop end %%Page: 26 28 -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 +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 (limitations)h(with)e(the)g(curren)m(t)h(release)g(of)g -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 +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 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 Fl(gperf)31 b Fq(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m +996 y Fn(gperf)31 b Fs(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 Fo(\017)60 b Fq(The)43 b(size)i(of)f(the)g +(megs)g(of)f(RAM.)225 1240 y Fq(\017)60 b Fs(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 -Fj(extr)-5 b(emely)53 b Fq(large)45 b(if)f(the)g(input)330 +Fl(extr)-5 b(emely)53 b Fs(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 Fj(gr)-5 b(e)g(atly)44 b Fq(in\015ates)35 +(co)s(de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(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 -Fl(-S)p Fq(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially) +Fn(-S)p Fs(')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 Fm(-S)46 b Fq(option)40 b(with)g(an)g(appropriate)g(n) +330 1898 y(the)i Fo(-S)46 b Fs(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 Fo(\017)60 b Fq(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i +2142 y Fq(\017)60 b Fs(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 Fq(Chapter)30 b(6:)41 +TeXDict begin 27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)29 b(Still)i(Left)g(to)g(Do)2133 b(27)150 299 -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 +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 (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 Fo(\017)60 b Fq(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m +887 y Fq(\017)60 b Fs(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 Fl(-S)p Fq(')f -Fl(switch)f Fq(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 Fn(-S)p Fs(')f +Fn(switch)f Fs(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 Fl(switch)f Fq(statemen)m(ts,)k +(duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fn(switch)f Fs(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 Fo(\017)60 b Fq(In)38 b(addition)h(to)h(impro)m +(hemes\).)225 1679 y Fq(\017)60 b Fs(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 -Fl(++)f Fq(routines.)p eop end +Fn(++)f Fs(routines.)p eop end %%Page: 28 30 -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 +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 (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 Fq(Information)30 +b(ct)24 b(Hashing)h(F)-7 b(unctions)150 643 y Fs(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 Fj(A)n(uthor's)k(R)-5 +b(Cic)m(helli,)i(Ric)m(hard)e(J.)f Fl(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 Fq(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(23,)h +b(d")38 b Fs(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 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 +(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 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 -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 +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 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 Fj(Pr)-5 b(actic)g(al)26 -b(Perfe)-5 b(ct)25 b(Hashing)150 1619 y Fq(Computer)30 +(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 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 Fj(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 Fl(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 Fq(Comm)m(unications)31 b(of)f(the)h(A)m +1863 y(F)-7 b(unctions)39 b Fs(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 -Fj(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 b(ct)24 +Fl(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 -Fq(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)h(12\(Decem)m(b)s +Fs(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 -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 +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 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 Fj(GPERF:)i(A)g(Perfe)-5 +2486 y([9])f(Sc)m(hmidt,)f(Douglas)h(C.)f Fl(GPERF:)i(A)g(Perfe)-5 b(ct)32 b(Hash)h(F)-7 b(unction)33 b(Gener)-5 b(ator)42 -b Fq(Second)30 b(USENIX)150 2595 y(C)p Fl(++)f Fq(Conference)i(Pro)s +b Fs(Second)30 b(USENIX)150 2595 y(C)p Fn(++)f Fs(Conference)i(Pro)s (ceedings,)g(April)f(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)i(Douglas)e -(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 +(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 (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 Fj(Minimal)i(Perfe)-5 +(and)g(T)-8 b(a)m(ylor,)26 b(M.A.)e Fl(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 Fq(SIGPLAN)30 b(Notices,)j(20,)e +b(Wor)-5 b(d)150 3083 y(Lists)38 b Fs(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 Fj(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 +b(Sprugnoli,)h(R.)e Fl(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 Fq(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)i(20)f(11\(No) +b(Sets)38 b Fs(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 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(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(1989.)p eop end %%Page: 29 31 -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 +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 +773 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 868 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 964 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 1060 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 1155 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 1251 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 +1346 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 1442 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 1538 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 1633 y(`)p Fc(\045define)28 b(length-table-name)p +Fd(')e Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) +h(.)47 b Fd(15)150 1729 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 1824 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 +1920 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 2016 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 2111 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 2207 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 2302 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 2398 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 2494 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 2589 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 2685 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 2780 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 2876 +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 2972 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 +3067 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 3163 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 3430 y Fr(A)150 3561 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 3841 y Fr(B)150 3971 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 4252 y Fr(C)150 +4382 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 +947 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 1204 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 +1417 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 1661 y Fr(H)2025 1783 +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 1874 +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 2118 y Fr(I)2025 +2240 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(18)2025 2331 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 2576 y Fr(J)2025 2697 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 2954 y Fr(K)2025 3076 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 3333 y Fr(M)2025 3455 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 3712 y Fr(N)2025 3833 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 4078 y Fr(S)2025 +4199 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 4291 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 4382 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 %%Page: -1 32 -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) +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) g(LICENSE)31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 -b Fp(1)449 778 y Fq(Pream)m(ble)16 b Fj(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g +b Fr(1)449 778 y Fs(Pream)m(ble)16 b Fl(.)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 Fq(1)449 888 +(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fs(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 Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g +997 y(AND)g(MODIFICA)-8 b(TION)24 b Fl(.)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 Fq(2)449 1107 +g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fs(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 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(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 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 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 +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 2159 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)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 +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 (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)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(.)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(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -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 +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 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)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 +(.)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 2953 y(3.1.3)93 b(Including)29 b(Additional)i(C)f(F)-8 -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(unctions)19 b Fl(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)49 b Fs(17)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(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 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(.)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 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(.)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(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)61 -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 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(that)h(a\013ect)h(In)m(terpretation)f(of)g(the)f(Input)f(File)g -Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fq(19)449 3880 y(4.3)92 +Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fs(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 Fj(.)g(.)h(.)g(.)g(.)43 b Fq(19)449 3990 +(Co)s(de)14 b Fl(.)g(.)h(.)g(.)g(.)43 b Fs(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 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(.) +(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(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)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 +(.)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 (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 Fp(27)150 4991 y(7)135 b(Bibliograph)l(y)38 +(.)f(.)g(.)h(.)f(.)68 b Fr(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 Fp(28)150 5261 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f +b Fr(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 Fp(29)p eop end +f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fr(29)p eop end %%Trailer userdict /end-hook known{end-hook}if diff --git a/doc/gperf_1.html b/doc/gperf_1.html index b0b4d8b..058e788 100644 --- a/doc/gperf_1.html +++ b/doc/gperf_1.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - GNU GENERAL PUBLIC LICENSE</TITLE> </HEAD> diff --git a/doc/gperf_10.html b/doc/gperf_10.html index c90f33f..c019fd2 100644 --- a/doc/gperf_10.html +++ b/doc/gperf_10.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - Concept Index</TITLE> </HEAD> @@ -13,34 +13,7 @@ Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_9.html">previous</A>, <H1><A NAME="SEC28" HREF="gperf_toc.html#TOC28">Concept Index</A></H1> <P> -Jump to: -<A HREF="#cindex_%">%</A> -- -<A HREF="#cindex_a">a</A> -- -<A HREF="#cindex_b">b</A> -- -<A HREF="#cindex_c">c</A> -- -<A HREF="#cindex_d">d</A> -- -<A HREF="#cindex_f">f</A> -- -<A HREF="#cindex_h">h</A> -- -<A HREF="#cindex_i">i</A> -- -<A HREF="#cindex_j">j</A> -- -<A HREF="#cindex_k">k</A> -- -<A HREF="#cindex_m">m</A> -- -<A HREF="#cindex_n">n</A> -- -<A HREF="#cindex_s">s</A> -<P> -<H2><A NAME="cindex_%">%</A></H2> +<H2>%</H2> <DIR> <LI><A HREF="gperf_5.html#IDX8"><SAMP>`%%'</SAMP></A> <LI><A HREF="gperf_5.html#IDX18"><SAMP>`%7bit'</SAMP></A> @@ -69,56 +42,56 @@ Jump to: <LI><A HREF="gperf_5.html#IDX32"><SAMP>`%{'</SAMP></A> <LI><A HREF="gperf_5.html#IDX33"><SAMP>`%}'</SAMP></A> </DIR> -<H2><A NAME="cindex_a">a</A></H2> +<H2>a</H2> <DIR> <LI><A HREF="gperf_6.html#IDX43">Array name</A>, <A HREF="gperf_6.html#IDX44">Array name</A> </DIR> -<H2><A NAME="cindex_b">b</A></H2> +<H2>b</H2> <DIR> <LI><A HREF="gperf_2.html#IDX1">Bugs</A> </DIR> -<H2><A NAME="cindex_c">c</A></H2> +<H2>c</H2> <DIR> <LI><A HREF="gperf_6.html#IDX42">Class name</A> </DIR> -<H2><A NAME="cindex_d">d</A></H2> +<H2>d</H2> <DIR> <LI><A HREF="gperf_5.html#IDX5">Declaration section</A> <LI><A HREF="gperf_6.html#IDX39">Delimiters</A> <LI><A HREF="gperf_6.html#IDX46">Duplicates</A> </DIR> -<H2><A NAME="cindex_f">f</A></H2> +<H2>f</H2> <DIR> <LI><A HREF="gperf_5.html#IDX4">Format</A> <LI><A HREF="gperf_5.html#IDX7">Functions section</A> </DIR> -<H2><A NAME="cindex_h">h</A></H2> +<H2>h</H2> <DIR> <LI><A HREF="gperf_5.html#IDX35">hash</A> <LI><A HREF="gperf_5.html#IDX34">hash table</A> </DIR> -<H2><A NAME="cindex_i">i</A></H2> +<H2>i</H2> <DIR> <LI><A HREF="gperf_5.html#IDX36">in_word_set</A> <LI><A HREF="gperf_6.html#IDX41">Initializers</A> </DIR> -<H2><A NAME="cindex_j">j</A></H2> +<H2>j</H2> <DIR> <LI><A HREF="gperf_6.html#IDX47">Jump value</A> </DIR> -<H2><A NAME="cindex_k">k</A></H2> +<H2>k</H2> <DIR> <LI><A HREF="gperf_5.html#IDX6">Keywords section</A> </DIR> -<H2><A NAME="cindex_m">m</A></H2> +<H2>m</H2> <DIR> <LI><A HREF="gperf_4.html#IDX3">Minimal perfect hash functions</A> </DIR> -<H2><A NAME="cindex_n">n</A></H2> +<H2>n</H2> <DIR> <LI><A HREF="gperf_5.html#IDX38">NUL</A> </DIR> -<H2><A NAME="cindex_s">s</A></H2> +<H2>s</H2> <DIR> <LI><A HREF="gperf_6.html#IDX40">Slot name</A> <LI><A HREF="gperf_4.html#IDX2">Static search structure</A> diff --git a/doc/gperf_2.html b/doc/gperf_2.html index 784abdb..9868475 100644 --- a/doc/gperf_2.html +++ b/doc/gperf_2.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - Contributors to GNU gperf Utility</TITLE> </HEAD> diff --git a/doc/gperf_3.html b/doc/gperf_3.html index b5b8e25..b50e0dc 100644 --- a/doc/gperf_3.html +++ b/doc/gperf_3.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 1 Introduction</TITLE> </HEAD> diff --git a/doc/gperf_4.html b/doc/gperf_4.html index a6d3288..bec2f42 100644 --- a/doc/gperf_4.html +++ b/doc/gperf_4.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 2 Static search structures and GNU gperf</TITLE> </HEAD> @@ -16,7 +16,7 @@ Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_3.html">previous</A>, </P> <P> -A <EM>static search structure</EM> is an Abstract Data Type with certain +A <STRONG>static search structure</STRONG> is an Abstract Data Type with certain fundamental operations, e.g., <EM>initialize</EM>, <EM>insert</EM>, and <EM>retrieve</EM>. Conceptually, all insertions occur before any retrievals. In practice, <CODE>gperf</CODE> generates a <EM>static</EM> array @@ -26,7 +26,7 @@ insertions. It is a useful data structure for representing <EM>static search sets</EM>. Static search sets occur frequently in software system applications. Typical static search sets include compiler reserved words, assembler instruction opcodes, and built-in shell interpreter -commands. Search set members, called <EM>keywords</EM>, are inserted into +commands. Search set members, called <STRONG>keywords</STRONG>, are inserted into the structure only once, usually during program initialization, and are not generally modified at run-time. diff --git a/doc/gperf_5.html b/doc/gperf_5.html index 9d08f68..7cfe024 100644 --- a/doc/gperf_5.html +++ b/doc/gperf_5.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 3 High-Level Description of GNU gperf</TITLE> </HEAD> @@ -16,7 +16,7 @@ Go to the <A HREF="gperf_1.html">first</A>, <A HREF="gperf_4.html">previous</A>, The perfect hash function generator <CODE>gperf</CODE> reads a set of "keywords" from an input file (or from the standard input by default). It attempts to derive a perfect hashing function that -recognizes a member of the <EM>static keyword set</EM> with at most a +recognizes a member of the <STRONG>static keyword set</STRONG> with at most a single probe into the lookup table. If <CODE>gperf</CODE> succeeds in generating such a function it produces a pair of C source code routines that perform hashing and table lookup recognition. All generated C code @@ -573,7 +573,7 @@ functions </P> <P> Several options control how the generated C code appears on the standard -output. Two C function are generated. They are called <CODE>hash</CODE> and +output. Two C functions are generated. They are called <CODE>hash</CODE> and <CODE>in_word_set</CODE>, although you may modify their names with a command-line option. Both functions require two arguments, a string, <CODE>char *</CODE> <VAR>str</VAR>, and a length parameter, <CODE>int</CODE> <VAR>len</VAR>. Their default @@ -586,7 +586,7 @@ function prototypes are as follows: <DD><A NAME="IDX35"></A> By default, the generated <CODE>hash</CODE> function returns an integer value created by adding <VAR>len</VAR> to several user-specified <VAR>str</VAR> byte -positions indexed into an <EM>associated values</EM> table stored in a +positions indexed into an <STRONG>associated values</STRONG> table stored in a local static array. The associated values table is constructed internally by <CODE>gperf</CODE> and later output as a static local C array called <SAMP>`hash_table'</SAMP>. The relevant selected positions (i.e. indices diff --git a/doc/gperf_6.html b/doc/gperf_6.html index 3ab3f6f..b4cc410 100644 --- a/doc/gperf_6.html +++ b/doc/gperf_6.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 4 Invoking gperf</TITLE> </HEAD> diff --git a/doc/gperf_7.html b/doc/gperf_7.html index 42c06dc..38f4de8 100644 --- a/doc/gperf_7.html +++ b/doc/gperf_7.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 5 Known Bugs and Limitations with gperf</TITLE> </HEAD> diff --git a/doc/gperf_8.html b/doc/gperf_8.html index 7001536..7c12f75 100644 --- a/doc/gperf_8.html +++ b/doc/gperf_8.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 6 Things Still Left to Do</TITLE> </HEAD> diff --git a/doc/gperf_9.html b/doc/gperf_9.html index 4d33d08..d031bc1 100644 --- a/doc/gperf_9.html +++ b/doc/gperf_9.html @@ -1,7 +1,7 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - 7 Bibliography</TITLE> </HEAD> diff --git a/doc/gperf_toc.html b/doc/gperf_toc.html index 495b5df..635917d 100644 --- a/doc/gperf_toc.html +++ b/doc/gperf_toc.html @@ -1,14 +1,14 @@ <HTML> <HEAD> -<!-- This HTML file has been created by texi2html 1.52 - from gperf.texi on 22 January 2006 --> +<!-- This HTML file has been created by texi2html 1.51 + from gperf.texi on 31 March 2007 --> <TITLE>Perfect Hash Function Generator - Table of Contents</TITLE> </HEAD> <BODY> -<H1>User's Guide to <CODE>gperf</CODE> 3.0.2</H1> +<H1>User's Guide to <CODE>gperf</CODE> 3.0.3</H1> <H2>The GNU Perfect Hash Function Generator</H2> -<H2>Edition 3.0.2, 22 January 2006</H2> +<H2>Edition 3.0.3, 31 March 2007</H2> <ADDRESS>Douglas C. Schmidt</ADDRESS> <ADDRESS>Bruno Haible</ADDRESS> <P> @@ -54,8 +54,8 @@ <LI><A NAME="TOC28" HREF="gperf_10.html#SEC28">Concept Index</A> </UL> <P><HR><P> -This document was generated on 22 January 2006 using the -<A HREF="http://wwwinfo.cern.ch/dis/texi2html/">texi2html</A> -translator version 1.52.</P> +This document was generated on 31 March 2007 using the +<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A> +translator version 1.51.</P> </BODY> </HTML> |