blob: 42c925e9caea5c62a530947340e8311bb16f3cd4 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#
2# Library configuration
3#
4
Lai Jiangshan4370aa42009-03-06 17:21:46 +01005config BINARY_PRINTF
6 def_bool n
7
Linus Torvalds1da177e2005-04-16 15:20:36 -07008menu "Library routines"
9
David Woodhousef5e70d02009-07-13 11:35:12 +010010config RAID6_PQ
11 tristate
12
Akinobu Mitaa5cfc1ec582006-12-08 02:36:25 -080013config BITREVERSE
14 tristate
15
Yalin Wang556d2f02014-11-03 03:01:03 +010016config HAVE_ARCH_BITREVERSE
Christoph Jaeger841c0092015-02-16 16:00:20 -080017 bool
Yalin Wang556d2f02014-11-03 03:01:03 +010018 default n
19 depends on BITREVERSE
20 help
21 This option provides an config for the architecture which have instruction
22 can do bitreverse operation, we use the hardware instruction if the architecture
23 have this capability.
24
Oskar Schirmer8759ef32009-06-11 14:51:15 +010025config RATIONAL
Christoph Jaeger6341e622014-12-20 15:41:11 -050026 bool
Oskar Schirmer8759ef32009-06-11 14:51:15 +010027
David S. Miller29225852012-05-24 13:12:28 -070028config GENERIC_STRNCPY_FROM_USER
29 bool
30
Linus Torvaldsa08c5352012-05-26 11:06:38 -070031config GENERIC_STRNLEN_USER
32 bool
33
Andy Shevchenko4cd57732013-06-04 19:46:26 +030034config GENERIC_NET_UTILS
35 bool
36
Alexander van Heukelum19870de2008-04-25 13:12:53 +020037config GENERIC_FIND_FIRST_BIT
Jan Beulich9ba16082008-10-15 22:01:38 -070038 bool
Alexander van Heukelum19870de2008-04-25 13:12:53 +020039
Michael S. Tsirkinb9236502012-01-30 00:20:48 +020040config NO_GENERIC_PCI_IOPORT_MAP
41 bool
42
Michael S. Tsirkin66eab4d2011-11-24 20:45:20 +020043config GENERIC_PCI_IOMAP
44 bool
45
Michael S. Tsirkin4673ca82011-11-24 14:54:28 +020046config GENERIC_IOMAP
47 bool
Michael S. Tsirkin66eab4d2011-11-24 20:45:20 +020048 select GENERIC_PCI_IOMAP
Michael S. Tsirkin4673ca82011-11-24 14:54:28 +020049
Richard Weinberger087fafd2012-02-07 01:22:46 +010050config GENERIC_IO
Christoph Jaeger6341e622014-12-20 15:41:11 -050051 bool
Richard Weinberger087fafd2012-02-07 01:22:46 +010052 default n
53
Wolfram Sang4ccf4be2011-08-31 20:35:40 +020054config STMP_DEVICE
55 bool
56
Oleg Nesterov22b361d2012-12-17 16:01:39 -080057config PERCPU_RWSEM
Christoph Jaeger6341e622014-12-20 15:41:11 -050058 bool
Oleg Nesterov22b361d2012-12-17 16:01:39 -080059
Linus Torvaldsbc08b442013-09-02 12:12:15 -070060config ARCH_USE_CMPXCHG_LOCKREF
61 bool
62
Linus Torvalds72d93102014-09-13 11:14:53 -070063config ARCH_HAS_FAST_MULTIPLIER
64 bool
65
Linus Torvalds1da177e2005-04-16 15:20:36 -070066config CRC_CCITT
67 tristate "CRC-CCITT functions"
68 help
69 This option is provided for the case where no in-kernel-tree
70 modules require CRC-CCITT functions, but a module built outside
71 the kernel tree does. Such modules that use library CRC-CCITT
72 functions require M here.
73
Evgeniy Polyakov7657ec12005-08-17 15:17:26 +040074config CRC16
75 tristate "CRC16 functions"
76 help
77 This option is provided for the case where no in-kernel-tree
78 modules require CRC16 functions, but a module built outside
79 the kernel tree does. Such modules that use library CRC16
80 functions require M here.
81
Martin K. Petersenf11f5942008-06-25 11:22:42 -040082config CRC_T10DIF
83 tristate "CRC calculation for the T10 Data Integrity Field"
Herbert Xu684115212013-09-07 12:56:26 +100084 select CRYPTO
85 select CRYPTO_CRCT10DIF
Martin K. Petersenf11f5942008-06-25 11:22:42 -040086 help
87 This option is only needed if a module that's not in the
88 kernel tree needs to calculate CRC checks for use with the
89 SCSI data integrity subsystem.
90
Ivo van Doorn3e7cbae2006-06-12 16:17:04 +020091config CRC_ITU_T
92 tristate "CRC ITU-T V.41 functions"
93 help
94 This option is provided for the case where no in-kernel-tree
95 modules require CRC ITU-T V.41 functions, but a module built outside
96 the kernel tree does. Such modules that use library CRC ITU-T V.41
97 functions require M here.
98
Linus Torvalds1da177e2005-04-16 15:20:36 -070099config CRC32
Darrick J. Wong46c58012012-03-23 15:02:25 -0700100 tristate "CRC32/CRC32c functions"
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101 default y
Akinobu Mita906d66d2006-12-08 02:36:25 -0800102 select BITREVERSE
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103 help
104 This option is provided for the case where no in-kernel-tree
Darrick J. Wong46c58012012-03-23 15:02:25 -0700105 modules require CRC32/CRC32c functions, but a module built outside
106 the kernel tree does. Such modules that use library CRC32/CRC32c
107 functions require M here.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700108
Bob Pearson3863ef32012-03-23 15:02:22 -0700109config CRC32_SELFTEST
110 bool "CRC32 perform self test on init"
111 default n
112 depends on CRC32
113 help
114 This option enables the CRC32 library functions to perform a
115 self test on initialization. The self test computes crc32_le
116 and crc32_be over byte strings with random alignment and length
117 and computes the total elapsed time and number of bytes processed.
118
Darrick J. Wong5cde7652012-03-23 15:02:26 -0700119choice
120 prompt "CRC32 implementation"
121 depends on CRC32
122 default CRC32_SLICEBY8
Darrick J. Wong82edb4b2012-03-28 14:42:56 -0700123 help
124 This option allows a kernel builder to override the default choice
125 of CRC32 algorithm. Choose the default ("slice by 8") unless you
126 know that you need one of the others.
Darrick J. Wong5cde7652012-03-23 15:02:26 -0700127
128config CRC32_SLICEBY8
129 bool "Slice by 8 bytes"
130 help
131 Calculate checksum 8 bytes at a time with a clever slicing algorithm.
132 This is the fastest algorithm, but comes with a 8KiB lookup table.
133 Most modern processors have enough cache to hold this table without
134 thrashing the cache.
135
136 This is the default implementation choice. Choose this one unless
137 you have a good reason not to.
138
139config CRC32_SLICEBY4
140 bool "Slice by 4 bytes"
141 help
142 Calculate checksum 4 bytes at a time with a clever slicing algorithm.
143 This is a bit slower than slice by 8, but has a smaller 4KiB lookup
144 table.
145
146 Only choose this option if you know what you are doing.
147
148config CRC32_SARWATE
149 bool "Sarwate's Algorithm (one byte at a time)"
150 help
151 Calculate checksum a byte at a time using Sarwate's algorithm. This
152 is not particularly fast, but has a small 256 byte lookup table.
153
154 Only choose this option if you know what you are doing.
155
156config CRC32_BIT
157 bool "Classic Algorithm (one bit at a time)"
158 help
159 Calculate checksum one bit at a time. This is VERY slow, but has
160 no lookup table. This is provided as a debugging option.
161
162 Only choose this option if you are debugging crc32.
163
164endchoice
165
Jan Nikitenkoad241522007-07-17 04:04:03 -0700166config CRC7
167 tristate "CRC7 functions"
168 help
169 This option is provided for the case where no in-kernel-tree
170 modules require CRC7 functions, but a module built outside
171 the kernel tree does. Such modules that use library CRC7
172 functions require M here.
173
Linus Torvalds1da177e2005-04-16 15:20:36 -0700174config LIBCRC32C
175 tristate "CRC32c (Castagnoli, et al) Cyclic Redundancy-Check"
Herbert Xu93027352008-11-13 22:05:13 +0800176 select CRYPTO
Herbert Xu69c35ef2008-11-07 15:11:47 +0800177 select CRYPTO_CRC32C
Linus Torvalds1da177e2005-04-16 15:20:36 -0700178 help
179 This option is provided for the case where no in-kernel-tree
180 modules require CRC32c functions, but a module built outside the
181 kernel tree does. Such modules that use library CRC32c functions
182 require M here. See Castagnoli93.
183 Module will be libcrc32c.
184
Arend van Spriel71509622011-05-31 11:22:15 +0200185config CRC8
186 tristate "CRC8 function"
187 help
188 This option provides CRC8 function. Drivers may select this
189 when they need to do cyclic redundancy check according CRC8
190 algorithm. Module will be called crc8.
191
Al Viroe65e1fc2006-09-12 03:04:40 -0400192config AUDIT_GENERIC
193 bool
194 depends on AUDIT && !AUDIT_ARCH
195 default y
196
AKASHI Takahiro4b588412014-03-15 14:48:00 +0900197config AUDIT_ARCH_COMPAT_GENERIC
198 bool
199 default n
200
201config AUDIT_COMPAT_GENERIC
202 bool
203 depends on AUDIT_GENERIC && AUDIT_ARCH_COMPAT_GENERIC && COMPAT
204 default y
205
Daniel Borkmanna6a9c0f2013-11-11 12:20:37 +0100206config RANDOM32_SELFTEST
207 bool "PRNG perform self test on init"
208 default n
209 help
210 This option enables the 32 bit PRNG library functions to perform a
211 self test on initialization.
212
Linus Torvalds1da177e2005-04-16 15:20:36 -0700213#
214# compression support is select'ed if needed
215#
Dan Streetman2da572c2015-05-07 13:49:14 -0400216config 842_COMPRESS
217 tristate
218
219config 842_DECOMPRESS
220 tristate
221
Linus Torvalds1da177e2005-04-16 15:20:36 -0700222config ZLIB_INFLATE
223 tristate
224
225config ZLIB_DEFLATE
226 tristate
227
Richard Purdie64c70b12007-07-10 17:22:24 -0700228config LZO_COMPRESS
229 tristate
230
231config LZO_DECOMPRESS
232 tristate
233
Chanho Minc72ac7a2013-07-08 16:01:49 -0700234config LZ4_COMPRESS
235 tristate
236
237config LZ4HC_COMPRESS
238 tristate
239
Kyungsik Leee76e1fd2013-07-08 16:01:46 -0700240config LZ4_DECOMPRESS
241 tristate
242
Lasse Collin24fa0402011-01-12 17:01:22 -0800243source "lib/xz/Kconfig"
244
Linus Torvalds1da177e2005-04-16 15:20:36 -0700245#
H. Peter Anvinc8531ab2009-01-05 13:48:31 -0800246# These all provide a common interface (hence the apparent duplication with
247# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
248#
249config DECOMPRESS_GZIP
H. Peter Anvin7856a16e2009-01-07 00:01:43 -0800250 select ZLIB_INFLATE
H. Peter Anvinc8531ab2009-01-05 13:48:31 -0800251 tristate
252
253config DECOMPRESS_BZIP2
254 tristate
255
256config DECOMPRESS_LZMA
257 tristate
258
Lasse Collin3ebe1242011-01-12 17:01:23 -0800259config DECOMPRESS_XZ
260 select XZ_DEC
261 tristate
262
Albin Tonnerrecacb2462010-01-08 14:42:46 -0800263config DECOMPRESS_LZO
264 select LZO_DECOMPRESS
265 tristate
266
Kyungsik Leee76e1fd2013-07-08 16:01:46 -0700267config DECOMPRESS_LZ4
268 select LZ4_DECOMPRESS
269 tristate
270
H. Peter Anvinc8531ab2009-01-05 13:48:31 -0800271#
Jes Sorensenf14f75b2005-06-21 17:15:02 -0700272# Generic allocator support is selected if needed
273#
274config GENERIC_ALLOCATOR
Christoph Jaeger6341e622014-12-20 15:41:11 -0500275 bool
Jes Sorensenf14f75b2005-06-21 17:15:02 -0700276
277#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700278# reed solomon support is select'ed if needed
279#
280config REED_SOLOMON
281 tristate
282
283config REED_SOLOMON_ENC8
Christoph Jaeger6341e622014-12-20 15:41:11 -0500284 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -0700285
286config REED_SOLOMON_DEC8
Christoph Jaeger6341e622014-12-20 15:41:11 -0500287 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -0700288
289config REED_SOLOMON_ENC16
Christoph Jaeger6341e622014-12-20 15:41:11 -0500290 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -0700291
292config REED_SOLOMON_DEC16
Christoph Jaeger6341e622014-12-20 15:41:11 -0500293 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -0700294
David S. Millerf7704342005-06-24 17:39:03 -0700295#
Ivan Djelic437aa562011-03-11 11:05:32 +0100296# BCH support is selected if needed
297#
298config BCH
299 tristate
300
301config BCH_CONST_PARAMS
Christoph Jaeger6341e622014-12-20 15:41:11 -0500302 bool
Ivan Djelic437aa562011-03-11 11:05:32 +0100303 help
304 Drivers may select this option to force specific constant
305 values for parameters 'm' (Galois field order) and 't'
306 (error correction capability). Those specific values must
307 be set by declaring default values for symbols BCH_CONST_M
308 and BCH_CONST_T.
309 Doing so will enable extra compiler optimizations,
310 improving encoding and decoding performance up to 2x for
311 usual (m,t) values (typically such that m*t < 200).
312 When this option is selected, the BCH library supports
313 only a single (m,t) configuration. This is mainly useful
314 for NAND flash board drivers requiring known, fixed BCH
315 parameters.
316
317config BCH_CONST_M
318 int
319 range 5 15
320 help
321 Constant value for Galois field order 'm'. If 'k' is the
322 number of data bits to protect, 'm' should be chosen such
323 that (k + m*t) <= 2**m - 1.
324 Drivers should declare a default value for this symbol if
325 they select option BCH_CONST_PARAMS.
326
327config BCH_CONST_T
328 int
329 help
330 Constant value for error correction capability in bits 't'.
331 Drivers should declare a default value for this symbol if
332 they select option BCH_CONST_PARAMS.
333
334#
David S. Millerf7704342005-06-24 17:39:03 -0700335# Textsearch support is select'ed if needed
336#
Thomas Graf2de4ff72005-06-23 20:49:30 -0700337config TEXTSEARCH
Christoph Jaeger6341e622014-12-20 15:41:11 -0500338 bool
Linus Torvalds1da177e2005-04-16 15:20:36 -0700339
Thomas Grafdf3fb932005-06-23 20:58:37 -0700340config TEXTSEARCH_KMP
David S. Millerf7704342005-06-24 17:39:03 -0700341 tristate
Thomas Grafdf3fb932005-06-23 20:58:37 -0700342
Pablo Neira Ayuso8082e4e2005-08-25 16:12:22 -0700343config TEXTSEARCH_BM
David S. Miller29cb9f92005-08-25 16:23:11 -0700344 tristate
Pablo Neira Ayuso8082e4e2005-08-25 16:12:22 -0700345
Thomas Graf6408f792005-06-23 20:59:16 -0700346config TEXTSEARCH_FSM
David S. Millerf7704342005-06-24 17:39:03 -0700347 tristate
Thomas Graf6408f792005-06-23 20:59:16 -0700348
Joern Engel5db53f32009-11-20 20:13:39 +0100349config BTREE
Christoph Jaeger6341e622014-12-20 15:41:11 -0500350 bool
Joern Engel5db53f32009-11-20 20:13:39 +0100351
Chris Wilsona88cc102014-03-17 12:21:54 +0000352config INTERVAL_TREE
Christoph Jaeger6341e622014-12-20 15:41:11 -0500353 bool
Chris Wilsona88cc102014-03-17 12:21:54 +0000354 help
355 Simple, embeddable, interval-tree. Can find the start of an
356 overlapping range in log(n) time and then iterate over all
357 overlapping nodes. The algorithm is implemented as an
358 augmented rbtree.
359
360 See:
361
362 Documentation/rbtree.txt
363
364 for more information.
365
David Howells3cb98952013-09-24 10:35:17 +0100366config ASSOCIATIVE_ARRAY
367 bool
368 help
369 Generic associative array. Can be searched and iterated over whilst
370 it is being modified. It is also reasonably quick to search and
371 modify. The algorithms are non-recursive, and the trees are highly
372 capacious.
373
374 See:
375
376 Documentation/assoc_array.txt
377
378 for more information.
379
Al Viro5ea81762007-02-11 15:41:31 +0000380config HAS_IOMEM
Christoph Jaeger6341e622014-12-20 15:41:11 -0500381 bool
Al Viro5ea81762007-02-11 15:41:31 +0000382 depends on !NO_IOMEM
Richard Weinberger087fafd2012-02-07 01:22:46 +0100383 select GENERIC_IO
Al Viro5ea81762007-02-11 15:41:31 +0000384 default y
385
Uwe Kleine-Königce816fa2014-04-07 15:39:19 -0700386config HAS_IOPORT_MAP
Christoph Jaeger6341e622014-12-20 15:41:11 -0500387 bool
Uwe Kleine-Königce816fa2014-04-07 15:39:19 -0700388 depends on HAS_IOMEM && !NO_IOPORT_MAP
Al Viroee36c2b2006-12-13 00:35:00 -0800389 default y
390
Heiko Carstens411f0f32007-05-06 14:49:09 -0700391config HAS_DMA
Christoph Jaeger6341e622014-12-20 15:41:11 -0500392 bool
Heiko Carstens411f0f32007-05-06 14:49:09 -0700393 depends on !NO_DMA
394 default y
395
Geert Uytterhoeven928923c2007-08-22 14:01:36 -0700396config CHECK_SIGNATURE
397 bool
398
Rusty Russellaab46da2008-12-13 21:20:27 +1030399config CPUMASK_OFFSTACK
400 bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
401 help
402 Use dynamic allocation for cpumask_var_t, instead of putting
403 them on the stack. This is a bit more expensive, but avoids
404 stack overflow.
405
Rusty Russell8c384cd2009-01-01 10:12:30 +1030406config DISABLE_OBSOLETE_CPUMASK_FUNCTIONS
407 bool "Disable obsolete cpumask functions" if DEBUG_PER_CPU_MAPS
Kees Cook525c1f92013-01-16 18:54:16 -0800408 depends on BROKEN
Rusty Russell8c384cd2009-01-01 10:12:30 +1030409
Ben Hutchingsc39649c2011-01-19 11:03:25 +0000410config CPU_RMAP
411 bool
412 depends on SMP
413
Tom Herbert75957ba2011-11-28 16:32:35 +0000414config DQL
415 bool
416
George Spelvinb0125082014-08-06 16:09:23 -0700417config GLOB
418 bool
419# This actually supports modular compilation, but the module overhead
420# is ridiculous for the amount of code involved. Until an out-of-tree
421# driver asks for it, we'll just link it directly it into the kernel
422# when required. Since we're ignoring out-of-tree users, there's also
423# no need bother prompting for a manual decision:
424# prompt "glob_match() function"
425 help
426 This option provides a glob_match function for performing
427 simple text pattern matching. It originated in the ATA code
428 to blacklist particular drive models, but other device drivers
429 may need similar functionality.
430
431 All drivers in the Linux kernel tree that require this function
432 should automatically select this option. Say N unless you
433 are compiling an out-of tree driver which tells you that it
434 depends on this.
435
George Spelvin5f9be822014-08-06 16:09:25 -0700436config GLOB_SELFTEST
437 bool "glob self-test on init"
438 default n
439 depends on GLOB
440 help
441 This option enables a simple self-test of the glob_match
442 function on startup. It is primarily useful for people
443 working on the code to ensure they haven't introduced any
444 regressions.
445
446 It only adds a little bit of code and slows kernel boot (or
447 module load) by a small amount, so you're welcome to play with
448 it, but you probably don't need it.
449
Geert Uytterhoevene9cc8bd2009-03-04 14:53:30 +0800450#
451# Netlink attribute parsing support is select'ed if needed
452#
453config NLATTR
454 bool
455
Paul Mackerras09d4e0e2009-06-12 21:10:05 +0000456#
457# Generic 64-bit atomic support is selected if needed
458#
459config GENERIC_ATOMIC64
460 bool
461
Catalin Marinas74634492012-07-30 14:41:09 -0700462config ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
463 def_bool y if GENERIC_ATOMIC64
464
Philipp Reisnerb411b362009-09-25 16:07:19 -0700465config LRU_CACHE
466 tristate
467
Bruno Randolfc5485a72010-11-16 10:58:37 +0900468config AVERAGE
Michael Buescha7a9a242011-03-01 20:03:05 +0100469 bool "Averaging functions"
470 help
471 This option is provided for the case where no in-kernel-tree
472 modules require averaging functions, but a module built outside
473 the kernel tree does. Such modules that use library averaging
474 functions require Y here.
475
476 If unsure, say N.
Bruno Randolfc5485a72010-11-16 10:58:37 +0900477
David Millerc6df4b12012-02-02 00:17:54 +0200478config CLZ_TAB
479 bool
480
Arend van Spriel10f81132011-05-31 11:22:16 +0200481config CORDIC
Michael Wittend89ce932011-07-29 12:59:51 +0000482 tristate "CORDIC algorithm"
Arend van Spriel10f81132011-05-31 11:22:16 +0200483 help
Michael Witten435a95c2011-07-29 13:36:04 +0000484 This option provides an implementation of the CORDIC algorithm;
485 calculations are in fixed point. Module will be called cordic.
Arend van Spriel10f81132011-05-31 11:22:16 +0200486
Aneesh V9c1c21a2012-04-27 17:54:03 +0530487config DDR
488 bool "JEDEC DDR data"
489 help
490 Data from JEDEC specs for DDR SDRAM memories,
491 particularly the AC timing parameters and addressing
492 information. This data is useful for drivers handling
493 DDR SDRAM controllers.
494
Dmitry Kasatkind9c46b12011-08-31 14:05:16 +0300495config MPILIB
Dmitry Kasatkin2e5f0942012-01-17 17:12:06 +0200496 tristate
David Millerc6df4b12012-02-02 00:17:54 +0200497 select CLZ_TAB
Dmitry Kasatkind9c46b12011-08-31 14:05:16 +0300498 help
499 Multiprecision maths library from GnuPG.
500 It is used to implement RSA digital signature verification,
501 which is used by IMA/EVM digital signature extension.
502
Dmitry Kasatkin5e8898e2012-01-17 17:12:03 +0200503config SIGNATURE
Dmitry Kasatkin2e5f0942012-01-17 17:12:06 +0200504 tristate
Dmitry Kasatkin0d1f64f2014-07-11 18:59:45 +0300505 depends on KEYS
506 select CRYPTO
Dmitry Kasatkinbe440ec2012-01-17 17:12:04 +0200507 select CRYPTO_SHA1
Dmitry Kasatkin051dbb92011-10-14 15:25:16 +0300508 select MPILIB
509 help
510 Digital signature verification. Currently only RSA is supported.
511 Implementation is done using GnuPG MPI library
512
David Daneyab253832012-07-05 18:12:38 +0200513#
514# libfdt files, only selected if needed.
515#
516config LIBFDT
517 bool
518
David Howellsa77ad6e2012-09-21 23:30:46 +0100519config OID_REGISTRY
520 tristate
521 help
522 Enable fast lookup object identifier registry.
523
Matthew Garrett0635eb82013-04-15 13:09:45 -0700524config UCS2_STRING
525 tristate
526
Geert Uytterhoevenee89bd62013-06-09 11:46:43 +0200527source "lib/fonts/Kconfig"
528
Laura Abbott308c09f2014-08-08 14:23:25 -0700529#
530# sg chaining option
531#
532
533config ARCH_HAS_SG_CHAIN
534 def_bool n
535
Thomas Graf2de4ff72005-06-23 20:49:30 -0700536endmenu