|
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #include "plbase64.h" |
|
7 #include "plstr.h" |
|
8 #include "nspr.h" |
|
9 |
|
10 #include <stdio.h> |
|
11 |
|
12 static unsigned char *base = (unsigned char *)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
|
13 |
|
14 /* PL_Base64Encode, single characters */ |
|
15 PRBool test_001(void) |
|
16 { |
|
17 PRUint32 a, b; |
|
18 unsigned char plain[ 4 ]; |
|
19 unsigned char cypher[ 5 ]; |
|
20 char result[ 8 ]; |
|
21 char *rv; |
|
22 |
|
23 printf("Test 001 (PL_Base64Encode, single characters) ..."); fflush(stdout); |
|
24 |
|
25 plain[1] = plain[2] = plain[3] = (unsigned char)0; |
|
26 cypher[2] = cypher[3] = (unsigned char)'='; |
|
27 cypher[4] = (unsigned char)0; |
|
28 |
|
29 for( a = 0; a < 64; a++ ) |
|
30 { |
|
31 cypher[0] = base[a]; |
|
32 |
|
33 for( b = 0; b < 4; b++ ) |
|
34 { |
|
35 plain[0] = (unsigned char)(a * 4 + b); |
|
36 cypher[1] = base[(b * 16)]; |
|
37 |
|
38 rv = PL_Base64Encode((char *)plain, 1, result); |
|
39 if( rv != result ) |
|
40 { |
|
41 printf("FAIL\n\t(%d, %d): return value\n", a, b); |
|
42 return PR_FALSE; |
|
43 } |
|
44 |
|
45 if( 0 != PL_strncmp((char *)cypher, result, 4) ) |
|
46 { |
|
47 printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.4s.\"\n", |
|
48 a, b, cypher, result); |
|
49 return PR_FALSE; |
|
50 } |
|
51 } |
|
52 } |
|
53 |
|
54 printf("PASS\n"); |
|
55 return PR_TRUE; |
|
56 } |
|
57 |
|
58 /* PL_Base64Encode, double characters */ |
|
59 PRBool test_002(void) |
|
60 { |
|
61 PRUint32 a, b, c, d; |
|
62 unsigned char plain[ 4 ]; |
|
63 unsigned char cypher[ 5 ]; |
|
64 char result[ 8 ]; |
|
65 char *rv; |
|
66 |
|
67 printf("Test 002 (PL_Base64Encode, double characters) ..."); fflush(stdout); |
|
68 |
|
69 plain[2] = plain[3] = (unsigned char)0; |
|
70 cypher[3] = (unsigned char)'='; |
|
71 cypher[4] = (unsigned char)0; |
|
72 |
|
73 for( a = 0; a < 64; a++ ) |
|
74 { |
|
75 cypher[0] = base[a]; |
|
76 for( b = 0; b < 4; b++ ) |
|
77 { |
|
78 plain[0] = (a*4) + b; |
|
79 for( c = 0; c < 16; c++ ) |
|
80 { |
|
81 cypher[1] = base[b*16 + c]; |
|
82 for( d = 0; d < 16; d++ ) |
|
83 { |
|
84 plain[1] = c*16 + d; |
|
85 cypher[2] = base[d*4]; |
|
86 |
|
87 rv = PL_Base64Encode((char *)plain, 2, result); |
|
88 if( rv != result ) |
|
89 { |
|
90 printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); |
|
91 return PR_FALSE; |
|
92 } |
|
93 |
|
94 if( 0 != PL_strncmp((char *)cypher, result, 4) ) |
|
95 { |
|
96 printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", |
|
97 a, b, c, d, cypher, result); |
|
98 return PR_FALSE; |
|
99 } |
|
100 } |
|
101 } |
|
102 } |
|
103 } |
|
104 |
|
105 printf("PASS\n"); |
|
106 return PR_TRUE; |
|
107 } |
|
108 |
|
109 /* PL_Base64Encode, triple characters */ |
|
110 PRBool test_003(void) |
|
111 { |
|
112 PRUint32 a, b, c, d, e, f; |
|
113 unsigned char plain[ 4 ]; |
|
114 unsigned char cypher[ 5 ]; |
|
115 char result[ 8 ]; |
|
116 char *rv; |
|
117 |
|
118 printf("Test 003 (PL_Base64Encode, triple characters) ..."); fflush(stdout); |
|
119 |
|
120 cypher[4] = (unsigned char)0; |
|
121 |
|
122 for( a = 0; a < 64; a++ ) |
|
123 { |
|
124 cypher[0] = base[a]; |
|
125 for( b = 0; b < 4; b++ ) |
|
126 { |
|
127 plain[0] = (a*4) + b; |
|
128 for( c = 0; c < 16; c++ ) |
|
129 { |
|
130 cypher[1] = base[b*16 + c]; |
|
131 for( d = 0; d < 16; d++ ) |
|
132 { |
|
133 plain[1] = c*16 + d; |
|
134 for( e = 0; e < 4; e++ ) |
|
135 { |
|
136 cypher[2] = base[d*4 + e]; |
|
137 for( f = 0; f < 64; f++ ) |
|
138 { |
|
139 plain[2] = e * 64 + f; |
|
140 cypher[3] = base[f]; |
|
141 |
|
142 rv = PL_Base64Encode((char *)plain, 3, result); |
|
143 if( rv != result ) |
|
144 { |
|
145 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f); |
|
146 return PR_FALSE; |
|
147 } |
|
148 |
|
149 if( 0 != PL_strncmp((char *)cypher, result, 4) ) |
|
150 { |
|
151 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", |
|
152 a, b, c, d, e, f, cypher, result); |
|
153 return PR_FALSE; |
|
154 } |
|
155 } |
|
156 } |
|
157 } |
|
158 } |
|
159 } |
|
160 } |
|
161 |
|
162 printf("PASS\n"); |
|
163 return PR_TRUE; |
|
164 } |
|
165 |
|
166 static struct |
|
167 { |
|
168 const char *plaintext; |
|
169 const char *cyphertext; |
|
170 } array[] = |
|
171 { |
|
172 /* Cyphertexts generated with uuenview 0.5.13 */ |
|
173 { " ", "IA==" }, |
|
174 { ".", "Lg==" }, |
|
175 { "/", "Lw==" }, |
|
176 { "C", "Qw==" }, |
|
177 { "H", "SA==" }, |
|
178 { "S", "Uw==" }, |
|
179 { "^", "Xg==" }, |
|
180 { "a", "YQ==" }, |
|
181 { "o", "bw==" }, |
|
182 { "t", "dA==" }, |
|
183 |
|
184 { "AB", "QUI=" }, |
|
185 { "AH", "QUg=" }, |
|
186 { "AQ", "QVE=" }, |
|
187 { "BD", "QkQ=" }, |
|
188 { "CR", "Q1I=" }, |
|
189 { "CS", "Q1M=" }, |
|
190 { "DB", "REI=" }, |
|
191 { "DC", "REM=" }, |
|
192 { "EK", "RUs=" }, |
|
193 { "ET", "RVQ=" }, |
|
194 { "IM", "SU0=" }, |
|
195 { "JR", "SlI=" }, |
|
196 { "LO", "TE8=" }, |
|
197 { "LW", "TFc=" }, |
|
198 { "ML", "TUw=" }, |
|
199 { "SB", "U0I=" }, |
|
200 { "TO", "VE8=" }, |
|
201 { "VS", "VlM=" }, |
|
202 { "WP", "V1A=" }, |
|
203 /* legitimate two-letter words */ |
|
204 { "ad", "YWQ=" }, |
|
205 { "ah", "YWg=" }, |
|
206 { "am", "YW0=" }, |
|
207 { "an", "YW4=" }, |
|
208 { "as", "YXM=" }, |
|
209 { "at", "YXQ=" }, |
|
210 { "ax", "YXg=" }, |
|
211 { "be", "YmU=" }, |
|
212 { "by", "Ynk=" }, |
|
213 { "do", "ZG8=" }, |
|
214 { "go", "Z28=" }, |
|
215 { "he", "aGU=" }, |
|
216 { "hi", "aGk=" }, |
|
217 { "if", "aWY=" }, |
|
218 { "in", "aW4=" }, |
|
219 { "is", "aXM=" }, |
|
220 { "it", "aXQ=" }, |
|
221 { "me", "bWU=" }, |
|
222 { "my", "bXk=" }, |
|
223 { "no", "bm8=" }, |
|
224 { "of", "b2Y=" }, |
|
225 { "on", "b24=" }, |
|
226 { "or", "b3I=" }, |
|
227 { "ox", "b3g=" }, |
|
228 { "so", "c28=" }, |
|
229 { "to", "dG8=" }, |
|
230 { "up", "dXA=" }, |
|
231 { "us", "dXM=" }, |
|
232 { "we", "d2U=" }, |
|
233 /* all three-letter entries in /usr/dict/words */ |
|
234 { "1st", "MXN0" }, |
|
235 { "2nd", "Mm5k" }, |
|
236 { "3rd", "M3Jk" }, |
|
237 { "4th", "NHRo" }, |
|
238 { "5th", "NXRo" }, |
|
239 { "6th", "NnRo" }, |
|
240 { "7th", "N3Ro" }, |
|
241 { "8th", "OHRo" }, |
|
242 { "9th", "OXRo" }, |
|
243 { "AAA", "QUFB" }, |
|
244 { "AAU", "QUFV" }, |
|
245 { "ABA", "QUJB" }, |
|
246 { "abc", "YWJj" }, |
|
247 { "Abe", "QWJl" }, |
|
248 { "Abo", "QWJv" }, |
|
249 { "ace", "YWNl" }, |
|
250 { "ACM", "QUNN" }, |
|
251 { "ACS", "QUNT" }, |
|
252 { "act", "YWN0" }, |
|
253 { "Ada", "QWRh" }, |
|
254 { "add", "YWRk" }, |
|
255 { "ado", "YWRv" }, |
|
256 { "aft", "YWZ0" }, |
|
257 { "age", "YWdl" }, |
|
258 { "ago", "YWdv" }, |
|
259 { "aid", "YWlk" }, |
|
260 { "ail", "YWls" }, |
|
261 { "aim", "YWlt" }, |
|
262 { "air", "YWly" }, |
|
263 { "ala", "YWxh" }, |
|
264 { "alb", "YWxi" }, |
|
265 { "ale", "YWxl" }, |
|
266 { "Ali", "QWxp" }, |
|
267 { "all", "YWxs" }, |
|
268 { "alp", "YWxw" }, |
|
269 { "A&M", "QSZN" }, |
|
270 { "AMA", "QU1B" }, |
|
271 { "ami", "YW1p" }, |
|
272 { "amp", "YW1w" }, |
|
273 { "Amy", "QW15" }, |
|
274 { "amy", "YW15" }, |
|
275 { "ana", "YW5h" }, |
|
276 { "and", "YW5k" }, |
|
277 { "ani", "YW5p" }, |
|
278 { "Ann", "QW5u" }, |
|
279 { "ant", "YW50" }, |
|
280 { "any", "YW55" }, |
|
281 { "A&P", "QSZQ" }, |
|
282 { "ape", "YXBl" }, |
|
283 { "Apr", "QXBy" }, |
|
284 { "APS", "QVBT" }, |
|
285 { "apt", "YXB0" }, |
|
286 { "arc", "YXJj" }, |
|
287 { "are", "YXJl" }, |
|
288 { "ark", "YXJr" }, |
|
289 { "arm", "YXJt" }, |
|
290 { "art", "YXJ0" }, |
|
291 { "a's", "YSdz" }, |
|
292 { "ash", "YXNo" }, |
|
293 { "ask", "YXNr" }, |
|
294 { "ass", "YXNz" }, |
|
295 { "ate", "YXRl" }, |
|
296 { "Aug", "QXVn" }, |
|
297 { "auk", "YXVr" }, |
|
298 { "Ave", "QXZl" }, |
|
299 { "awe", "YXdl" }, |
|
300 { "awl", "YXds" }, |
|
301 { "awn", "YXdu" }, |
|
302 { "axe", "YXhl" }, |
|
303 { "aye", "YXll" }, |
|
304 { "bad", "YmFk" }, |
|
305 { "bag", "YmFn" }, |
|
306 { "bah", "YmFo" }, |
|
307 { "bam", "YmFt" }, |
|
308 { "ban", "YmFu" }, |
|
309 { "bar", "YmFy" }, |
|
310 { "bat", "YmF0" }, |
|
311 { "bay", "YmF5" }, |
|
312 { "bed", "YmVk" }, |
|
313 { "bee", "YmVl" }, |
|
314 { "beg", "YmVn" }, |
|
315 { "bel", "YmVs" }, |
|
316 { "Ben", "QmVu" }, |
|
317 { "bet", "YmV0" }, |
|
318 { "bey", "YmV5" }, |
|
319 { "bib", "Ymli" }, |
|
320 { "bid", "Ymlk" }, |
|
321 { "big", "Ymln" }, |
|
322 { "bin", "Ymlu" }, |
|
323 { "bit", "Yml0" }, |
|
324 { "biz", "Yml6" }, |
|
325 { "BMW", "Qk1X" }, |
|
326 { "boa", "Ym9h" }, |
|
327 { "bob", "Ym9i" }, |
|
328 { "bog", "Ym9n" }, |
|
329 { "bon", "Ym9u" }, |
|
330 { "boo", "Ym9v" }, |
|
331 { "bop", "Ym9w" }, |
|
332 { "bow", "Ym93" }, |
|
333 { "box", "Ym94" }, |
|
334 { "boy", "Ym95" }, |
|
335 { "b's", "Yidz" }, |
|
336 { "BTL", "QlRM" }, |
|
337 { "BTU", "QlRV" }, |
|
338 { "bub", "YnVi" }, |
|
339 { "bud", "YnVk" }, |
|
340 { "bug", "YnVn" }, |
|
341 { "bum", "YnVt" }, |
|
342 { "bun", "YnVu" }, |
|
343 { "bus", "YnVz" }, |
|
344 { "but", "YnV0" }, |
|
345 { "buy", "YnV5" }, |
|
346 { "bye", "Ynll" }, |
|
347 { "cab", "Y2Fi" }, |
|
348 { "Cal", "Q2Fs" }, |
|
349 { "cam", "Y2Ft" }, |
|
350 { "can", "Y2Fu" }, |
|
351 { "cap", "Y2Fw" }, |
|
352 { "car", "Y2Fy" }, |
|
353 { "cat", "Y2F0" }, |
|
354 { "caw", "Y2F3" }, |
|
355 { "CBS", "Q0JT" }, |
|
356 { "CDC", "Q0RD" }, |
|
357 { "CEQ", "Q0VR" }, |
|
358 { "chi", "Y2hp" }, |
|
359 { "CIA", "Q0lB" }, |
|
360 { "cit", "Y2l0" }, |
|
361 { "cod", "Y29k" }, |
|
362 { "cog", "Y29n" }, |
|
363 { "col", "Y29s" }, |
|
364 { "con", "Y29u" }, |
|
365 { "coo", "Y29v" }, |
|
366 { "cop", "Y29w" }, |
|
367 { "cos", "Y29z" }, |
|
368 { "cot", "Y290" }, |
|
369 { "cow", "Y293" }, |
|
370 { "cox", "Y294" }, |
|
371 { "coy", "Y295" }, |
|
372 { "CPA", "Q1BB" }, |
|
373 { "cpu", "Y3B1" }, |
|
374 { "CRT", "Q1JU" }, |
|
375 { "cry", "Y3J5" }, |
|
376 { "c's", "Yydz" }, |
|
377 { "cub", "Y3Vi" }, |
|
378 { "cud", "Y3Vk" }, |
|
379 { "cue", "Y3Vl" }, |
|
380 { "cup", "Y3Vw" }, |
|
381 { "cur", "Y3Vy" }, |
|
382 { "cut", "Y3V0" }, |
|
383 { "dab", "ZGFi" }, |
|
384 { "dad", "ZGFk" }, |
|
385 { "dam", "ZGFt" }, |
|
386 { "Dan", "RGFu" }, |
|
387 { "Dar", "RGFy" }, |
|
388 { "day", "ZGF5" }, |
|
389 { "Dec", "RGVj" }, |
|
390 { "Dee", "RGVl" }, |
|
391 { "Del", "RGVs" }, |
|
392 { "den", "ZGVu" }, |
|
393 { "Des", "RGVz" }, |
|
394 { "dew", "ZGV3" }, |
|
395 { "dey", "ZGV5" }, |
|
396 { "did", "ZGlk" }, |
|
397 { "die", "ZGll" }, |
|
398 { "dig", "ZGln" }, |
|
399 { "dim", "ZGlt" }, |
|
400 { "din", "ZGlu" }, |
|
401 { "dip", "ZGlw" }, |
|
402 { "Dis", "RGlz" }, |
|
403 { "DNA", "RE5B" }, |
|
404 { "DOD", "RE9E" }, |
|
405 { "doe", "ZG9l" }, |
|
406 { "dog", "ZG9n" }, |
|
407 { "don", "ZG9u" }, |
|
408 { "dot", "ZG90" }, |
|
409 { "Dow", "RG93" }, |
|
410 { "dry", "ZHJ5" }, |
|
411 { "d's", "ZCdz" }, |
|
412 { "dub", "ZHVi" }, |
|
413 { "dud", "ZHVk" }, |
|
414 { "due", "ZHVl" }, |
|
415 { "dug", "ZHVn" }, |
|
416 { "dun", "ZHVu" }, |
|
417 { "dye", "ZHll" }, |
|
418 { "ear", "ZWFy" }, |
|
419 { "eat", "ZWF0" }, |
|
420 { "ebb", "ZWJi" }, |
|
421 { "EDT", "RURU" }, |
|
422 { "eel", "ZWVs" }, |
|
423 { "eft", "ZWZ0" }, |
|
424 { "e.g", "ZS5n" }, |
|
425 { "egg", "ZWdn" }, |
|
426 { "ego", "ZWdv" }, |
|
427 { "eke", "ZWtl" }, |
|
428 { "Eli", "RWxp" }, |
|
429 { "elk", "ZWxr" }, |
|
430 { "ell", "ZWxs" }, |
|
431 { "elm", "ZWxt" }, |
|
432 { "Ely", "RWx5" }, |
|
433 { "end", "ZW5k" }, |
|
434 { "Eng", "RW5n" }, |
|
435 { "EPA", "RVBB" }, |
|
436 { "era", "ZXJh" }, |
|
437 { "ere", "ZXJl" }, |
|
438 { "erg", "ZXJn" }, |
|
439 { "err", "ZXJy" }, |
|
440 { "e's", "ZSdz" }, |
|
441 { "EST", "RVNU" }, |
|
442 { "eta", "ZXRh" }, |
|
443 { "etc", "ZXRj" }, |
|
444 { "Eva", "RXZh" }, |
|
445 { "eve", "ZXZl" }, |
|
446 { "ewe", "ZXdl" }, |
|
447 { "eye", "ZXll" }, |
|
448 { "FAA", "RkFB" }, |
|
449 { "fad", "ZmFk" }, |
|
450 { "fag", "ZmFn" }, |
|
451 { "fan", "ZmFu" }, |
|
452 { "far", "ZmFy" }, |
|
453 { "fat", "ZmF0" }, |
|
454 { "fay", "ZmF5" }, |
|
455 { "FBI", "RkJJ" }, |
|
456 { "FCC", "RkND" }, |
|
457 { "FDA", "RkRB" }, |
|
458 { "Feb", "RmVi" }, |
|
459 { "fed", "ZmVk" }, |
|
460 { "fee", "ZmVl" }, |
|
461 { "few", "ZmV3" }, |
|
462 { "fib", "Zmli" }, |
|
463 { "fig", "Zmln" }, |
|
464 { "fin", "Zmlu" }, |
|
465 { "fir", "Zmly" }, |
|
466 { "fit", "Zml0" }, |
|
467 { "fix", "Zml4" }, |
|
468 { "Flo", "Rmxv" }, |
|
469 { "flu", "Zmx1" }, |
|
470 { "fly", "Zmx5" }, |
|
471 { "FMC", "Rk1D" }, |
|
472 { "fob", "Zm9i" }, |
|
473 { "foe", "Zm9l" }, |
|
474 { "fog", "Zm9n" }, |
|
475 { "fop", "Zm9w" }, |
|
476 { "for", "Zm9y" }, |
|
477 { "fox", "Zm94" }, |
|
478 { "FPC", "RlBD" }, |
|
479 { "fro", "ZnJv" }, |
|
480 { "fry", "ZnJ5" }, |
|
481 { "f's", "Zidz" }, |
|
482 { "FTC", "RlRD" }, |
|
483 { "fum", "ZnVt" }, |
|
484 { "fun", "ZnVu" }, |
|
485 { "fur", "ZnVy" }, |
|
486 { "gab", "Z2Fi" }, |
|
487 { "gad", "Z2Fk" }, |
|
488 { "gag", "Z2Fn" }, |
|
489 { "gal", "Z2Fs" }, |
|
490 { "gam", "Z2Ft" }, |
|
491 { "GAO", "R0FP" }, |
|
492 { "gap", "Z2Fw" }, |
|
493 { "gar", "Z2Fy" }, |
|
494 { "gas", "Z2Fz" }, |
|
495 { "gay", "Z2F5" }, |
|
496 { "gee", "Z2Vl" }, |
|
497 { "gel", "Z2Vs" }, |
|
498 { "gem", "Z2Vt" }, |
|
499 { "get", "Z2V0" }, |
|
500 { "gig", "Z2ln" }, |
|
501 { "Gil", "R2ls" }, |
|
502 { "gin", "Z2lu" }, |
|
503 { "GMT", "R01U" }, |
|
504 { "GNP", "R05Q" }, |
|
505 { "gnu", "Z251" }, |
|
506 { "Goa", "R29h" }, |
|
507 { "gob", "Z29i" }, |
|
508 { "god", "Z29k" }, |
|
509 { "gog", "Z29n" }, |
|
510 { "GOP", "R09Q" }, |
|
511 { "got", "Z290" }, |
|
512 { "GPO", "R1BP" }, |
|
513 { "g's", "Zydz" }, |
|
514 { "GSA", "R1NB" }, |
|
515 { "gum", "Z3Vt" }, |
|
516 { "gun", "Z3Vu" }, |
|
517 { "Gus", "R3Vz" }, |
|
518 { "gut", "Z3V0" }, |
|
519 { "guy", "Z3V5" }, |
|
520 { "gym", "Z3lt" }, |
|
521 { "gyp", "Z3lw" }, |
|
522 { "had", "aGFk" }, |
|
523 { "Hal", "SGFs" }, |
|
524 { "ham", "aGFt" }, |
|
525 { "Han", "SGFu" }, |
|
526 { "hap", "aGFw" }, |
|
527 { "hat", "aGF0" }, |
|
528 { "haw", "aGF3" }, |
|
529 { "hay", "aGF5" }, |
|
530 { "hem", "aGVt" }, |
|
531 { "hen", "aGVu" }, |
|
532 { "her", "aGVy" }, |
|
533 { "hew", "aGV3" }, |
|
534 { "hex", "aGV4" }, |
|
535 { "hey", "aGV5" }, |
|
536 { "hid", "aGlk" }, |
|
537 { "him", "aGlt" }, |
|
538 { "hip", "aGlw" }, |
|
539 { "his", "aGlz" }, |
|
540 { "hit", "aGl0" }, |
|
541 { "hob", "aG9i" }, |
|
542 { "hoc", "aG9j" }, |
|
543 { "hoe", "aG9l" }, |
|
544 { "hog", "aG9n" }, |
|
545 { "hoi", "aG9p" }, |
|
546 { "Hom", "SG9t" }, |
|
547 { "hop", "aG9w" }, |
|
548 { "hot", "aG90" }, |
|
549 { "how", "aG93" }, |
|
550 { "hoy", "aG95" }, |
|
551 { "h's", "aCdz" }, |
|
552 { "hub", "aHVi" }, |
|
553 { "hue", "aHVl" }, |
|
554 { "hug", "aHVn" }, |
|
555 { "huh", "aHVo" }, |
|
556 { "hum", "aHVt" }, |
|
557 { "Hun", "SHVu" }, |
|
558 { "hut", "aHV0" }, |
|
559 { "Ian", "SWFu" }, |
|
560 { "IBM", "SUJN" }, |
|
561 { "Ibn", "SWJu" }, |
|
562 { "ICC", "SUND" }, |
|
563 { "ice", "aWNl" }, |
|
564 { "icy", "aWN5" }, |
|
565 { "I'd", "SSdk" }, |
|
566 { "Ida", "SWRh" }, |
|
567 { "i.e", "aS5l" }, |
|
568 { "iii", "aWlp" }, |
|
569 { "Ike", "SWtl" }, |
|
570 { "ill", "aWxs" }, |
|
571 { "I'm", "SSdt" }, |
|
572 { "imp", "aW1w" }, |
|
573 { "Inc", "SW5j" }, |
|
574 { "ink", "aW5r" }, |
|
575 { "inn", "aW5u" }, |
|
576 { "ion", "aW9u" }, |
|
577 { "Ira", "SXJh" }, |
|
578 { "ire", "aXJl" }, |
|
579 { "irk", "aXJr" }, |
|
580 { "IRS", "SVJT" }, |
|
581 { "i's", "aSdz" }, |
|
582 { "Ito", "SXRv" }, |
|
583 { "ITT", "SVRU" }, |
|
584 { "ivy", "aXZ5" }, |
|
585 { "jab", "amFi" }, |
|
586 { "jag", "amFn" }, |
|
587 { "jam", "amFt" }, |
|
588 { "Jan", "SmFu" }, |
|
589 { "jar", "amFy" }, |
|
590 { "jaw", "amF3" }, |
|
591 { "jay", "amF5" }, |
|
592 { "Jed", "SmVk" }, |
|
593 { "jet", "amV0" }, |
|
594 { "Jew", "SmV3" }, |
|
595 { "jig", "amln" }, |
|
596 { "Jim", "Smlt" }, |
|
597 { "job", "am9i" }, |
|
598 { "Joe", "Sm9l" }, |
|
599 { "jog", "am9n" }, |
|
600 { "Jon", "Sm9u" }, |
|
601 { "jot", "am90" }, |
|
602 { "joy", "am95" }, |
|
603 { "j's", "aidz" }, |
|
604 { "jug", "anVn" }, |
|
605 { "jut", "anV0" }, |
|
606 { "Kay", "S2F5" }, |
|
607 { "keg", "a2Vn" }, |
|
608 { "ken", "a2Vu" }, |
|
609 { "key", "a2V5" }, |
|
610 { "kid", "a2lk" }, |
|
611 { "Kim", "S2lt" }, |
|
612 { "kin", "a2lu" }, |
|
613 { "kit", "a2l0" }, |
|
614 { "k's", "aydz" }, |
|
615 { "lab", "bGFi" }, |
|
616 { "lac", "bGFj" }, |
|
617 { "lad", "bGFk" }, |
|
618 { "lag", "bGFn" }, |
|
619 { "lam", "bGFt" }, |
|
620 { "Lao", "TGFv" }, |
|
621 { "lap", "bGFw" }, |
|
622 { "law", "bGF3" }, |
|
623 { "lax", "bGF4" }, |
|
624 { "lay", "bGF5" }, |
|
625 { "lea", "bGVh" }, |
|
626 { "led", "bGVk" }, |
|
627 { "lee", "bGVl" }, |
|
628 { "leg", "bGVn" }, |
|
629 { "Len", "TGVu" }, |
|
630 { "Leo", "TGVv" }, |
|
631 { "let", "bGV0" }, |
|
632 { "Lev", "TGV2" }, |
|
633 { "Lew", "TGV3" }, |
|
634 { "lew", "bGV3" }, |
|
635 { "lid", "bGlk" }, |
|
636 { "lie", "bGll" }, |
|
637 { "lim", "bGlt" }, |
|
638 { "Lin", "TGlu" }, |
|
639 { "lip", "bGlw" }, |
|
640 { "lit", "bGl0" }, |
|
641 { "Liz", "TGl6" }, |
|
642 { "lob", "bG9i" }, |
|
643 { "log", "bG9n" }, |
|
644 { "lop", "bG9w" }, |
|
645 { "Los", "TG9z" }, |
|
646 { "lot", "bG90" }, |
|
647 { "Lou", "TG91" }, |
|
648 { "low", "bG93" }, |
|
649 { "loy", "bG95" }, |
|
650 { "l's", "bCdz" }, |
|
651 { "LSI", "TFNJ" }, |
|
652 { "Ltd", "THRk" }, |
|
653 { "LTV", "TFRW" }, |
|
654 { "lug", "bHVn" }, |
|
655 { "lux", "bHV4" }, |
|
656 { "lye", "bHll" }, |
|
657 { "Mac", "TWFj" }, |
|
658 { "mad", "bWFk" }, |
|
659 { "Mae", "TWFl" }, |
|
660 { "man", "bWFu" }, |
|
661 { "Mao", "TWFv" }, |
|
662 { "map", "bWFw" }, |
|
663 { "mar", "bWFy" }, |
|
664 { "mat", "bWF0" }, |
|
665 { "maw", "bWF3" }, |
|
666 { "Max", "TWF4" }, |
|
667 { "max", "bWF4" }, |
|
668 { "may", "bWF5" }, |
|
669 { "MBA", "TUJB" }, |
|
670 { "Meg", "TWVn" }, |
|
671 { "Mel", "TWVs" }, |
|
672 { "men", "bWVu" }, |
|
673 { "met", "bWV0" }, |
|
674 { "mew", "bWV3" }, |
|
675 { "mid", "bWlk" }, |
|
676 { "mig", "bWln" }, |
|
677 { "min", "bWlu" }, |
|
678 { "MIT", "TUlU" }, |
|
679 { "mix", "bWl4" }, |
|
680 { "mob", "bW9i" }, |
|
681 { "Moe", "TW9l" }, |
|
682 { "moo", "bW9v" }, |
|
683 { "mop", "bW9w" }, |
|
684 { "mot", "bW90" }, |
|
685 { "mow", "bW93" }, |
|
686 { "MPH", "TVBI" }, |
|
687 { "Mrs", "TXJz" }, |
|
688 { "m's", "bSdz" }, |
|
689 { "mud", "bXVk" }, |
|
690 { "mug", "bXVn" }, |
|
691 { "mum", "bXVt" }, |
|
692 { "nab", "bmFi" }, |
|
693 { "nag", "bmFn" }, |
|
694 { "Nan", "TmFu" }, |
|
695 { "nap", "bmFw" }, |
|
696 { "Nat", "TmF0" }, |
|
697 { "nay", "bmF5" }, |
|
698 { "NBC", "TkJD" }, |
|
699 { "NBS", "TkJT" }, |
|
700 { "NCO", "TkNP" }, |
|
701 { "NCR", "TkNS" }, |
|
702 { "Ned", "TmVk" }, |
|
703 { "nee", "bmVl" }, |
|
704 { "net", "bmV0" }, |
|
705 { "new", "bmV3" }, |
|
706 { "nib", "bmli" }, |
|
707 { "NIH", "TklI" }, |
|
708 { "nil", "bmls" }, |
|
709 { "nip", "bmlw" }, |
|
710 { "nit", "bml0" }, |
|
711 { "NNE", "Tk5F" }, |
|
712 { "NNW", "Tk5X" }, |
|
713 { "nob", "bm9i" }, |
|
714 { "nod", "bm9k" }, |
|
715 { "non", "bm9u" }, |
|
716 { "nor", "bm9y" }, |
|
717 { "not", "bm90" }, |
|
718 { "Nov", "Tm92" }, |
|
719 { "now", "bm93" }, |
|
720 { "NRC", "TlJD" }, |
|
721 { "n's", "bidz" }, |
|
722 { "NSF", "TlNG" }, |
|
723 { "nun", "bnVu" }, |
|
724 { "nut", "bnV0" }, |
|
725 { "NYC", "TllD" }, |
|
726 { "NYU", "TllV" }, |
|
727 { "oaf", "b2Fm" }, |
|
728 { "oak", "b2Fr" }, |
|
729 { "oar", "b2Fy" }, |
|
730 { "oat", "b2F0" }, |
|
731 { "Oct", "T2N0" }, |
|
732 { "odd", "b2Rk" }, |
|
733 { "ode", "b2Rl" }, |
|
734 { "off", "b2Zm" }, |
|
735 { "oft", "b2Z0" }, |
|
736 { "ohm", "b2ht" }, |
|
737 { "oil", "b2ls" }, |
|
738 { "old", "b2xk" }, |
|
739 { "one", "b25l" }, |
|
740 { "opt", "b3B0" }, |
|
741 { "orb", "b3Ji" }, |
|
742 { "ore", "b3Jl" }, |
|
743 { "Orr", "T3Jy" }, |
|
744 { "o's", "bydz" }, |
|
745 { "Ott", "T3R0" }, |
|
746 { "our", "b3Vy" }, |
|
747 { "out", "b3V0" }, |
|
748 { "ova", "b3Zh" }, |
|
749 { "owe", "b3dl" }, |
|
750 { "owl", "b3ds" }, |
|
751 { "own", "b3du" }, |
|
752 { "pad", "cGFk" }, |
|
753 { "pal", "cGFs" }, |
|
754 { "Pam", "UGFt" }, |
|
755 { "pan", "cGFu" }, |
|
756 { "pap", "cGFw" }, |
|
757 { "par", "cGFy" }, |
|
758 { "pat", "cGF0" }, |
|
759 { "paw", "cGF3" }, |
|
760 { "pax", "cGF4" }, |
|
761 { "pay", "cGF5" }, |
|
762 { "Paz", "UGF6" }, |
|
763 { "PBS", "UEJT" }, |
|
764 { "PDP", "UERQ" }, |
|
765 { "pea", "cGVh" }, |
|
766 { "pee", "cGVl" }, |
|
767 { "peg", "cGVn" }, |
|
768 { "pen", "cGVu" }, |
|
769 { "pep", "cGVw" }, |
|
770 { "per", "cGVy" }, |
|
771 { "pet", "cGV0" }, |
|
772 { "pew", "cGV3" }, |
|
773 { "PhD", "UGhE" }, |
|
774 { "phi", "cGhp" }, |
|
775 { "pie", "cGll" }, |
|
776 { "pig", "cGln" }, |
|
777 { "pin", "cGlu" }, |
|
778 { "pip", "cGlw" }, |
|
779 { "pit", "cGl0" }, |
|
780 { "ply", "cGx5" }, |
|
781 { "pod", "cG9k" }, |
|
782 { "Poe", "UG9l" }, |
|
783 { "poi", "cG9p" }, |
|
784 { "pol", "cG9s" }, |
|
785 { "pop", "cG9w" }, |
|
786 { "pot", "cG90" }, |
|
787 { "pow", "cG93" }, |
|
788 { "ppm", "cHBt" }, |
|
789 { "pro", "cHJv" }, |
|
790 { "pry", "cHJ5" }, |
|
791 { "p's", "cCdz" }, |
|
792 { "psi", "cHNp" }, |
|
793 { "PTA", "UFRB" }, |
|
794 { "pub", "cHVi" }, |
|
795 { "PUC", "UFVD" }, |
|
796 { "pug", "cHVn" }, |
|
797 { "pun", "cHVu" }, |
|
798 { "pup", "cHVw" }, |
|
799 { "pus", "cHVz" }, |
|
800 { "put", "cHV0" }, |
|
801 { "PVC", "UFZD" }, |
|
802 { "QED", "UUVE" }, |
|
803 { "q's", "cSdz" }, |
|
804 { "qua", "cXVh" }, |
|
805 { "quo", "cXVv" }, |
|
806 { "Rae", "UmFl" }, |
|
807 { "rag", "cmFn" }, |
|
808 { "raj", "cmFq" }, |
|
809 { "ram", "cmFt" }, |
|
810 { "ran", "cmFu" }, |
|
811 { "rap", "cmFw" }, |
|
812 { "rat", "cmF0" }, |
|
813 { "raw", "cmF3" }, |
|
814 { "ray", "cmF5" }, |
|
815 { "RCA", "UkNB" }, |
|
816 { "R&D", "UiZE" }, |
|
817 { "reb", "cmVi" }, |
|
818 { "red", "cmVk" }, |
|
819 { "rep", "cmVw" }, |
|
820 { "ret", "cmV0" }, |
|
821 { "rev", "cmV2" }, |
|
822 { "Rex", "UmV4" }, |
|
823 { "rho", "cmhv" }, |
|
824 { "rib", "cmli" }, |
|
825 { "rid", "cmlk" }, |
|
826 { "rig", "cmln" }, |
|
827 { "rim", "cmlt" }, |
|
828 { "Rio", "Umlv" }, |
|
829 { "rip", "cmlw" }, |
|
830 { "RNA", "Uk5B" }, |
|
831 { "rob", "cm9i" }, |
|
832 { "rod", "cm9k" }, |
|
833 { "roe", "cm9l" }, |
|
834 { "Ron", "Um9u" }, |
|
835 { "rot", "cm90" }, |
|
836 { "row", "cm93" }, |
|
837 { "Roy", "Um95" }, |
|
838 { "RPM", "UlBN" }, |
|
839 { "r's", "cidz" }, |
|
840 { "rub", "cnVi" }, |
|
841 { "rue", "cnVl" }, |
|
842 { "rug", "cnVn" }, |
|
843 { "rum", "cnVt" }, |
|
844 { "run", "cnVu" }, |
|
845 { "rut", "cnV0" }, |
|
846 { "rye", "cnll" }, |
|
847 { "sac", "c2Fj" }, |
|
848 { "sad", "c2Fk" }, |
|
849 { "sag", "c2Fn" }, |
|
850 { "Sal", "U2Fs" }, |
|
851 { "Sam", "U2Ft" }, |
|
852 { "San", "U2Fu" }, |
|
853 { "Sao", "U2Fv" }, |
|
854 { "sap", "c2Fw" }, |
|
855 { "sat", "c2F0" }, |
|
856 { "saw", "c2F3" }, |
|
857 { "sax", "c2F4" }, |
|
858 { "say", "c2F5" }, |
|
859 { "Sci", "U2Np" }, |
|
860 { "SCM", "U0NN" }, |
|
861 { "sea", "c2Vh" }, |
|
862 { "sec", "c2Vj" }, |
|
863 { "see", "c2Vl" }, |
|
864 { "sen", "c2Vu" }, |
|
865 { "seq", "c2Vx" }, |
|
866 { "set", "c2V0" }, |
|
867 { "sew", "c2V3" }, |
|
868 { "sex", "c2V4" }, |
|
869 { "she", "c2hl" }, |
|
870 { "Shu", "U2h1" }, |
|
871 { "shy", "c2h5" }, |
|
872 { "sib", "c2li" }, |
|
873 { "sic", "c2lj" }, |
|
874 { "sin", "c2lu" }, |
|
875 { "sip", "c2lw" }, |
|
876 { "sir", "c2ly" }, |
|
877 { "sis", "c2lz" }, |
|
878 { "sit", "c2l0" }, |
|
879 { "six", "c2l4" }, |
|
880 { "ski", "c2tp" }, |
|
881 { "sky", "c2t5" }, |
|
882 { "sly", "c2x5" }, |
|
883 { "sob", "c29i" }, |
|
884 { "Soc", "U29j" }, |
|
885 { "sod", "c29k" }, |
|
886 { "Sol", "U29s" }, |
|
887 { "son", "c29u" }, |
|
888 { "sop", "c29w" }, |
|
889 { "sou", "c291" }, |
|
890 { "sow", "c293" }, |
|
891 { "soy", "c295" }, |
|
892 { "spa", "c3Bh" }, |
|
893 { "spy", "c3B5" }, |
|
894 { "Sri", "U3Jp" }, |
|
895 { "s's", "cydz" }, |
|
896 { "SSE", "U1NF" }, |
|
897 { "SST", "U1NU" }, |
|
898 { "SSW", "U1NX" }, |
|
899 { "Stu", "U3R1" }, |
|
900 { "sub", "c3Vi" }, |
|
901 { "sud", "c3Vk" }, |
|
902 { "sue", "c3Vl" }, |
|
903 { "sum", "c3Vt" }, |
|
904 { "sun", "c3Vu" }, |
|
905 { "sup", "c3Vw" }, |
|
906 { "Sus", "U3Vz" }, |
|
907 { "tab", "dGFi" }, |
|
908 { "tad", "dGFk" }, |
|
909 { "tag", "dGFn" }, |
|
910 { "tam", "dGFt" }, |
|
911 { "tan", "dGFu" }, |
|
912 { "tao", "dGFv" }, |
|
913 { "tap", "dGFw" }, |
|
914 { "tar", "dGFy" }, |
|
915 { "tat", "dGF0" }, |
|
916 { "tau", "dGF1" }, |
|
917 { "tax", "dGF4" }, |
|
918 { "tea", "dGVh" }, |
|
919 { "Ted", "VGVk" }, |
|
920 { "ted", "dGVk" }, |
|
921 { "tee", "dGVl" }, |
|
922 { "Tel", "VGVs" }, |
|
923 { "ten", "dGVu" }, |
|
924 { "the", "dGhl" }, |
|
925 { "thy", "dGh5" }, |
|
926 { "tic", "dGlj" }, |
|
927 { "tid", "dGlk" }, |
|
928 { "tie", "dGll" }, |
|
929 { "til", "dGls" }, |
|
930 { "Tim", "VGlt" }, |
|
931 { "tin", "dGlu" }, |
|
932 { "tip", "dGlw" }, |
|
933 { "tit", "dGl0" }, |
|
934 { "TNT", "VE5U" }, |
|
935 { "toe", "dG9l" }, |
|
936 { "tog", "dG9n" }, |
|
937 { "Tom", "VG9t" }, |
|
938 { "ton", "dG9u" }, |
|
939 { "too", "dG9v" }, |
|
940 { "top", "dG9w" }, |
|
941 { "tor", "dG9y" }, |
|
942 { "tot", "dG90" }, |
|
943 { "tow", "dG93" }, |
|
944 { "toy", "dG95" }, |
|
945 { "TRW", "VFJX" }, |
|
946 { "try", "dHJ5" }, |
|
947 { "t's", "dCdz" }, |
|
948 { "TTL", "VFRM" }, |
|
949 { "TTY", "VFRZ" }, |
|
950 { "tub", "dHVi" }, |
|
951 { "tug", "dHVn" }, |
|
952 { "tum", "dHVt" }, |
|
953 { "tun", "dHVu" }, |
|
954 { "TVA", "VFZB" }, |
|
955 { "TWA", "VFdB" }, |
|
956 { "two", "dHdv" }, |
|
957 { "TWX", "VFdY" }, |
|
958 { "ugh", "dWdo" }, |
|
959 { "UHF", "VUhG" }, |
|
960 { "Uri", "VXJp" }, |
|
961 { "urn", "dXJu" }, |
|
962 { "U.S", "VS5T" }, |
|
963 { "u's", "dSdz" }, |
|
964 { "USA", "VVNB" }, |
|
965 { "USC", "VVND" }, |
|
966 { "use", "dXNl" }, |
|
967 { "USN", "VVNO" }, |
|
968 { "van", "dmFu" }, |
|
969 { "vat", "dmF0" }, |
|
970 { "vee", "dmVl" }, |
|
971 { "vet", "dmV0" }, |
|
972 { "vex", "dmV4" }, |
|
973 { "VHF", "VkhG" }, |
|
974 { "via", "dmlh" }, |
|
975 { "vie", "dmll" }, |
|
976 { "vii", "dmlp" }, |
|
977 { "vis", "dmlz" }, |
|
978 { "viz", "dml6" }, |
|
979 { "von", "dm9u" }, |
|
980 { "vow", "dm93" }, |
|
981 { "v's", "didz" }, |
|
982 { "WAC", "V0FD" }, |
|
983 { "wad", "d2Fk" }, |
|
984 { "wag", "d2Fn" }, |
|
985 { "wah", "d2Fo" }, |
|
986 { "wan", "d2Fu" }, |
|
987 { "war", "d2Fy" }, |
|
988 { "was", "d2Fz" }, |
|
989 { "wax", "d2F4" }, |
|
990 { "way", "d2F5" }, |
|
991 { "web", "d2Vi" }, |
|
992 { "wed", "d2Vk" }, |
|
993 { "wee", "d2Vl" }, |
|
994 { "Wei", "V2Vp" }, |
|
995 { "wet", "d2V0" }, |
|
996 { "who", "d2hv" }, |
|
997 { "why", "d2h5" }, |
|
998 { "wig", "d2ln" }, |
|
999 { "win", "d2lu" }, |
|
1000 { "wit", "d2l0" }, |
|
1001 { "woe", "d29l" }, |
|
1002 { "wok", "d29r" }, |
|
1003 { "won", "d29u" }, |
|
1004 { "woo", "d29v" }, |
|
1005 { "wop", "d29w" }, |
|
1006 { "wow", "d293" }, |
|
1007 { "wry", "d3J5" }, |
|
1008 { "w's", "dydz" }, |
|
1009 { "x's", "eCdz" }, |
|
1010 { "yah", "eWFo" }, |
|
1011 { "yak", "eWFr" }, |
|
1012 { "yam", "eWFt" }, |
|
1013 { "yap", "eWFw" }, |
|
1014 { "yaw", "eWF3" }, |
|
1015 { "yea", "eWVh" }, |
|
1016 { "yen", "eWVu" }, |
|
1017 { "yet", "eWV0" }, |
|
1018 { "yin", "eWlu" }, |
|
1019 { "yip", "eWlw" }, |
|
1020 { "yon", "eW9u" }, |
|
1021 { "you", "eW91" }, |
|
1022 { "yow", "eW93" }, |
|
1023 { "y's", "eSdz" }, |
|
1024 { "yuh", "eXVo" }, |
|
1025 { "zag", "emFn" }, |
|
1026 { "Zan", "WmFu" }, |
|
1027 { "zap", "emFw" }, |
|
1028 { "Zen", "WmVu" }, |
|
1029 { "zig", "emln" }, |
|
1030 { "zip", "emlw" }, |
|
1031 { "Zoe", "Wm9l" }, |
|
1032 { "zoo", "em9v" }, |
|
1033 { "z's", "eidz" }, |
|
1034 /* the false rumors file */ |
|
1035 { "\"So when I die, the first thing I will see in heaven is a score list?\"", |
|
1036 "IlNvIHdoZW4gSSBkaWUsIHRoZSBmaXJzdCB0aGluZyBJIHdpbGwgc2VlIGluIGhlYXZlbiBpcyBhIHNjb3JlIGxpc3Q/Ig==" }, |
|
1037 { "1st Law of Hacking: leaving is much more difficult than entering.", |
|
1038 "MXN0IExhdyBvZiBIYWNraW5nOiBsZWF2aW5nIGlzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdGhhbiBlbnRlcmluZy4=" }, |
|
1039 { "2nd Law of Hacking: first in, first out.", |
|
1040 "Mm5kIExhdyBvZiBIYWNraW5nOiBmaXJzdCBpbiwgZmlyc3Qgb3V0Lg==" }, |
|
1041 { "3rd Law of Hacking: the last blow counts most.", |
|
1042 "M3JkIExhdyBvZiBIYWNraW5nOiB0aGUgbGFzdCBibG93IGNvdW50cyBtb3N0Lg==" }, |
|
1043 { "4th Law of Hacking: you will find the exit at the entrance.", |
|
1044 "NHRoIExhdyBvZiBIYWNraW5nOiB5b3Ugd2lsbCBmaW5kIHRoZSBleGl0IGF0IHRoZSBlbnRyYW5jZS4=" }, |
|
1045 { "A chameleon imitating a mail daemon often delivers scrolls of fire.", |
|
1046 "QSBjaGFtZWxlb24gaW1pdGF0aW5nIGEgbWFpbCBkYWVtb24gb2Z0ZW4gZGVsaXZlcnMgc2Nyb2xscyBvZiBmaXJlLg==" }, |
|
1047 { "A cockatrice corpse is guaranteed to be untainted!", |
|
1048 "QSBjb2NrYXRyaWNlIGNvcnBzZSBpcyBndWFyYW50ZWVkIHRvIGJlIHVudGFpbnRlZCE=" }, |
|
1049 { "A dead cockatrice is just a dead lizard.", |
|
1050 "QSBkZWFkIGNvY2thdHJpY2UgaXMganVzdCBhIGRlYWQgbGl6YXJkLg==" }, |
|
1051 { "A dragon is just a snake that ate a scroll of fire.", |
|
1052 "QSBkcmFnb24gaXMganVzdCBhIHNuYWtlIHRoYXQgYXRlIGEgc2Nyb2xsIG9mIGZpcmUu" }, |
|
1053 { "A fading corridor enlightens your insight.", |
|
1054 "QSBmYWRpbmcgY29ycmlkb3IgZW5saWdodGVucyB5b3VyIGluc2lnaHQu" }, |
|
1055 { "A glowing potion is too hot to drink.", |
|
1056 "QSBnbG93aW5nIHBvdGlvbiBpcyB0b28gaG90IHRvIGRyaW5rLg==" }, |
|
1057 { "A good amulet may protect you against guards.", |
|
1058 "QSBnb29kIGFtdWxldCBtYXkgcHJvdGVjdCB5b3UgYWdhaW5zdCBndWFyZHMu" }, |
|
1059 { "A lizard corpse is a good thing to turn undead.", |
|
1060 "QSBsaXphcmQgY29ycHNlIGlzIGEgZ29vZCB0aGluZyB0byB0dXJuIHVuZGVhZC4=" }, |
|
1061 { "A long worm can be defined recursively. So how should you attack it?", |
|
1062 "QSBsb25nIHdvcm0gY2FuIGJlIGRlZmluZWQgcmVjdXJzaXZlbHkuIFNvIGhvdyBzaG91bGQgeW91IGF0dGFjayBpdD8=" }, |
|
1063 { "A monstrous mind is a toy forever.", |
|
1064 "QSBtb25zdHJvdXMgbWluZCBpcyBhIHRveSBmb3JldmVyLg==" }, |
|
1065 { "A nymph will be very pleased if you call her by her real name: Lorelei.", |
|
1066 "QSBueW1waCB3aWxsIGJlIHZlcnkgcGxlYXNlZCBpZiB5b3UgY2FsbCBoZXIgYnkgaGVyIHJlYWwgbmFtZTogTG9yZWxlaS4=" }, |
|
1067 { "A ring of dungeon master control is a great find.", |
|
1068 "QSByaW5nIG9mIGR1bmdlb24gbWFzdGVyIGNvbnRyb2wgaXMgYSBncmVhdCBmaW5kLg==" }, |
|
1069 { "A ring of extra ring finger is useless if not enchanted.", |
|
1070 "QSByaW5nIG9mIGV4dHJhIHJpbmcgZmluZ2VyIGlzIHVzZWxlc3MgaWYgbm90IGVuY2hhbnRlZC4=" }, |
|
1071 { "A rope may form a trail in a maze.", |
|
1072 "QSByb3BlIG1heSBmb3JtIGEgdHJhaWwgaW4gYSBtYXplLg==" }, |
|
1073 { "A staff may recharge if you drop it for awhile.", |
|
1074 "QSBzdGFmZiBtYXkgcmVjaGFyZ2UgaWYgeW91IGRyb3AgaXQgZm9yIGF3aGlsZS4=" }, |
|
1075 { "A visit to the Zoo is very educational; you meet interesting animals.", |
|
1076 "QSB2aXNpdCB0byB0aGUgWm9vIGlzIHZlcnkgZWR1Y2F0aW9uYWw7IHlvdSBtZWV0IGludGVyZXN0aW5nIGFuaW1hbHMu" }, |
|
1077 { "A wand of deaf is a more dangerous weapon than a wand of sheep.", |
|
1078 "QSB3YW5kIG9mIGRlYWYgaXMgYSBtb3JlIGRhbmdlcm91cyB3ZWFwb24gdGhhbiBhIHdhbmQgb2Ygc2hlZXAu" }, |
|
1079 { "A wand of vibration might bring the whole cave crashing about your ears.", |
|
1080 "QSB3YW5kIG9mIHZpYnJhdGlvbiBtaWdodCBicmluZyB0aGUgd2hvbGUgY2F2ZSBjcmFzaGluZyBhYm91dCB5b3VyIGVhcnMu" }, |
|
1081 { "A winner never quits. A quitter never wins.", |
|
1082 "QSB3aW5uZXIgbmV2ZXIgcXVpdHMuIEEgcXVpdHRlciBuZXZlciB3aW5zLg==" }, |
|
1083 { "A wish? Okay, make me a fortune cookie!", |
|
1084 "QSB3aXNoPyBPa2F5LCBtYWtlIG1lIGEgZm9ydHVuZSBjb29raWUh" }, |
|
1085 { "Afraid of mimics? Try to wear a ring of true seeing.", |
|
1086 "QWZyYWlkIG9mIG1pbWljcz8gVHJ5IHRvIHdlYXIgYSByaW5nIG9mIHRydWUgc2VlaW5nLg==" }, |
|
1087 { "All monsters are created evil, but some are more evil than others.", |
|
1088 "QWxsIG1vbnN0ZXJzIGFyZSBjcmVhdGVkIGV2aWwsIGJ1dCBzb21lIGFyZSBtb3JlIGV2aWwgdGhhbiBvdGhlcnMu" }, |
|
1089 { "Always attack a floating eye from behind!", |
|
1090 "QWx3YXlzIGF0dGFjayBhIGZsb2F0aW5nIGV5ZSBmcm9tIGJlaGluZCE=" }, |
|
1091 { "An elven cloak is always the height of fashion.", |
|
1092 "QW4gZWx2ZW4gY2xvYWsgaXMgYWx3YXlzIHRoZSBoZWlnaHQgb2YgZmFzaGlvbi4=" }, |
|
1093 { "Any small object that is accidentally dropped will hide under a larger object.", |
|
1094 "QW55IHNtYWxsIG9iamVjdCB0aGF0IGlzIGFjY2lkZW50YWxseSBkcm9wcGVkIHdpbGwgaGlkZSB1bmRlciBhIGxhcmdlciBvYmplY3Qu" }, |
|
1095 { "Balrogs do not appear above level 20.", |
|
1096 "QmFscm9ncyBkbyBub3QgYXBwZWFyIGFib3ZlIGxldmVsIDIwLg==" }, |
|
1097 { "Banana peels work especially well against Keystone Kops.", |
|
1098 "QmFuYW5hIHBlZWxzIHdvcmsgZXNwZWNpYWxseSB3ZWxsIGFnYWluc3QgS2V5c3RvbmUgS29wcy4=" }, |
|
1099 { "Be careful when eating bananas. Monsters might slip on the peels.", |
|
1100 "QmUgY2FyZWZ1bCB3aGVuIGVhdGluZyBiYW5hbmFzLiBNb25zdGVycyBtaWdodCBzbGlwIG9uIHRoZSBwZWVscy4=" }, |
|
1101 { "Better leave the dungeon; otherwise you might get hurt badly.", |
|
1102 "QmV0dGVyIGxlYXZlIHRoZSBkdW5nZW9uOyBvdGhlcndpc2UgeW91IG1pZ2h0IGdldCBodXJ0IGJhZGx5Lg==" }, |
|
1103 { "Beware of the potion of nitroglycerin -- it's not for the weak of heart.", |
|
1104 "QmV3YXJlIG9mIHRoZSBwb3Rpb24gb2Ygbml0cm9nbHljZXJpbiAtLSBpdCdzIG5vdCBmb3IgdGhlIHdlYWsgb2YgaGVhcnQu" }, |
|
1105 { "Beware: there's always a chance that your wand explodes as you try to zap it!", |
|
1106 "QmV3YXJlOiB0aGVyZSdzIGFsd2F5cyBhIGNoYW5jZSB0aGF0IHlvdXIgd2FuZCBleHBsb2RlcyBhcyB5b3UgdHJ5IHRvIHphcCBpdCE=" }, |
|
1107 { "Beyond the 23rd level lies a happy retirement in a room of your own.", |
|
1108 "QmV5b25kIHRoZSAyM3JkIGxldmVsIGxpZXMgYSBoYXBweSByZXRpcmVtZW50IGluIGEgcm9vbSBvZiB5b3VyIG93bi4=" }, |
|
1109 { "Changing your suit without dropping your sword? You must be kidding!", |
|
1110 "Q2hhbmdpbmcgeW91ciBzdWl0IHdpdGhvdXQgZHJvcHBpbmcgeW91ciBzd29yZD8gWW91IG11c3QgYmUga2lkZGluZyE=" }, |
|
1111 { "Cockatrices might turn themselves to stone faced with a mirror.", |
|
1112 "Q29ja2F0cmljZXMgbWlnaHQgdHVybiB0aGVtc2VsdmVzIHRvIHN0b25lIGZhY2VkIHdpdGggYSBtaXJyb3Iu" }, |
|
1113 { "Consumption of home-made food is strictly forbidden in this dungeon.", |
|
1114 "Q29uc3VtcHRpb24gb2YgaG9tZS1tYWRlIGZvb2QgaXMgc3RyaWN0bHkgZm9yYmlkZGVuIGluIHRoaXMgZHVuZ2Vvbi4=" }, |
|
1115 { "Dark room? Your chance to develop your photographs!", |
|
1116 "RGFyayByb29tPyBZb3VyIGNoYW5jZSB0byBkZXZlbG9wIHlvdXIgcGhvdG9ncmFwaHMh" }, |
|
1117 { "Dark rooms are not *completely* dark: just wait and let your eyes adjust...", |
|
1118 "RGFyayByb29tcyBhcmUgbm90ICpjb21wbGV0ZWx5KiBkYXJrOiBqdXN0IHdhaXQgYW5kIGxldCB5b3VyIGV5ZXMgYWRqdXN0Li4u" }, |
|
1119 { "David London sez, \"Hey guys, *WIELD* a lizard corpse against a cockatrice!\"", |
|
1120 "RGF2aWQgTG9uZG9uIHNleiwgIkhleSBndXlzLCAqV0lFTEQqIGEgbGl6YXJkIGNvcnBzZSBhZ2FpbnN0IGEgY29ja2F0cmljZSEi" }, |
|
1121 { "Death is just life's way of telling you you've been fired.", |
|
1122 "RGVhdGggaXMganVzdCBsaWZlJ3Mgd2F5IG9mIHRlbGxpbmcgeW91IHlvdSd2ZSBiZWVuIGZpcmVkLg==" }, |
|
1123 { "Demi-gods don't need any help from the gods.", |
|
1124 "RGVtaS1nb2RzIGRvbid0IG5lZWQgYW55IGhlbHAgZnJvbSB0aGUgZ29kcy4=" }, |
|
1125 { "Demons *HATE* Priests and Priestesses.", |
|
1126 "RGVtb25zICpIQVRFKiBQcmllc3RzIGFuZCBQcmllc3Rlc3Nlcy4=" }, |
|
1127 { "Didn't you forget to pay?", |
|
1128 "RGlkbid0IHlvdSBmb3JnZXQgdG8gcGF5Pw==" }, |
|
1129 { "Didn't your mother tell you not to eat food off the floor?", |
|
1130 "RGlkbid0IHlvdXIgbW90aGVyIHRlbGwgeW91IG5vdCB0byBlYXQgZm9vZCBvZmYgdGhlIGZsb29yPw==" }, |
|
1131 { "Direct a direct hit on your direct opponent, directing in the right direction.", |
|
1132 "RGlyZWN0IGEgZGlyZWN0IGhpdCBvbiB5b3VyIGRpcmVjdCBvcHBvbmVudCwgZGlyZWN0aW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24u" }, |
|
1133 { "Do you want to make more money? Sure, we all do! Join the Fort Ludios guard!", |
|
1134 "RG8geW91IHdhbnQgdG8gbWFrZSBtb3JlIG1vbmV5PyBTdXJlLCB3ZSBhbGwgZG8hIEpvaW4gdGhlIEZvcnQgTHVkaW9zIGd1YXJkIQ==" }, |
|
1135 { "Don't eat too much: you might start hiccoughing!", |
|
1136 "RG9uJ3QgZWF0IHRvbyBtdWNoOiB5b3UgbWlnaHQgc3RhcnQgaGljY291Z2hpbmch" }, |
|
1137 { "Don't play hack at your work; your boss might hit you!", |
|
1138 "RG9uJ3QgcGxheSBoYWNrIGF0IHlvdXIgd29yazsgeW91ciBib3NzIG1pZ2h0IGhpdCB5b3Uh" }, |
|
1139 { "Don't tell a soul you found a secret door, otherwise it isn't a secret anymore.", |
|
1140 "RG9uJ3QgdGVsbCBhIHNvdWwgeW91IGZvdW5kIGEgc2VjcmV0IGRvb3IsIG90aGVyd2lzZSBpdCBpc24ndCBhIHNlY3JldCBhbnltb3JlLg==" }, |
|
1141 { "Drinking potions of booze may land you in jail if you are under 21.", |
|
1142 "RHJpbmtpbmcgcG90aW9ucyBvZiBib296ZSBtYXkgbGFuZCB5b3UgaW4gamFpbCBpZiB5b3UgYXJlIHVuZGVyIDIxLg==" }, |
|
1143 { "Drop your vanity and get rid of your jewels! Pickpockets about!", |
|
1144 "RHJvcCB5b3VyIHZhbml0eSBhbmQgZ2V0IHJpZCBvZiB5b3VyIGpld2VscyEgUGlja3BvY2tldHMgYWJvdXQh" }, |
|
1145 { "Eat 10 cloves of garlic and keep all humans at a two-square distance.", |
|
1146 "RWF0IDEwIGNsb3ZlcyBvZiBnYXJsaWMgYW5kIGtlZXAgYWxsIGh1bWFucyBhdCBhIHR3by1zcXVhcmUgZGlzdGFuY2Uu" }, |
|
1147 { "Eels hide under mud. Use a unicorn to clear the water and make them visible.", |
|
1148 "RWVscyBoaWRlIHVuZGVyIG11ZC4gVXNlIGEgdW5pY29ybiB0byBjbGVhciB0aGUgd2F0ZXIgYW5kIG1ha2UgdGhlbSB2aXNpYmxlLg==" }, |
|
1149 { "Engrave your wishes with a wand of wishing.", |
|
1150 "RW5ncmF2ZSB5b3VyIHdpc2hlcyB3aXRoIGEgd2FuZCBvZiB3aXNoaW5nLg==" }, |
|
1151 { "Eventually you will come to admire the swift elegance of a retreating nymph.", |
|
1152 "RXZlbnR1YWxseSB5b3Ugd2lsbCBjb21lIHRvIGFkbWlyZSB0aGUgc3dpZnQgZWxlZ2FuY2Ugb2YgYSByZXRyZWF0aW5nIG55bXBoLg==" }, |
|
1153 { "Ever heard hissing outside? I *knew* you hadn't!", |
|
1154 "RXZlciBoZWFyZCBoaXNzaW5nIG91dHNpZGU/IEkgKmtuZXcqIHlvdSBoYWRuJ3Qh" }, |
|
1155 { "Ever lifted a dragon corpse?", |
|
1156 "RXZlciBsaWZ0ZWQgYSBkcmFnb24gY29ycHNlPw==" }, |
|
1157 { "Ever seen a leocrotta dancing the tengu?", |
|
1158 "RXZlciBzZWVuIGEgbGVvY3JvdHRhIGRhbmNpbmcgdGhlIHRlbmd1Pw==" }, |
|
1159 { "Ever seen your weapon glow plaid?", |
|
1160 "RXZlciBzZWVuIHlvdXIgd2VhcG9uIGdsb3cgcGxhaWQ/" }, |
|
1161 { "Ever tamed a shopkeeper?", |
|
1162 "RXZlciB0YW1lZCBhIHNob3BrZWVwZXI/" }, |
|
1163 { "Ever tried digging through a Vault Guard?", |
|
1164 "RXZlciB0cmllZCBkaWdnaW5nIHRocm91Z2ggYSBWYXVsdCBHdWFyZD8=" }, |
|
1165 { "Ever tried enchanting a rope?", |
|
1166 "RXZlciB0cmllZCBlbmNoYW50aW5nIGEgcm9wZT8=" }, |
|
1167 { "Floating eyes can't stand Hawaiian shirts.", |
|
1168 "RmxvYXRpbmcgZXllcyBjYW4ndCBzdGFuZCBIYXdhaWlhbiBzaGlydHMu" }, |
|
1169 { "For any remedy there is a misery.", |
|
1170 "Rm9yIGFueSByZW1lZHkgdGhlcmUgaXMgYSBtaXNlcnku" }, |
|
1171 { "Giant bats turn into giant vampires.", |
|
1172 "R2lhbnQgYmF0cyB0dXJuIGludG8gZ2lhbnQgdmFtcGlyZXMu" }, |
|
1173 { "Good day for overcoming obstacles. Try a steeplechase.", |
|
1174 "R29vZCBkYXkgZm9yIG92ZXJjb21pbmcgb2JzdGFjbGVzLiBUcnkgYSBzdGVlcGxlY2hhc2Uu" }, |
|
1175 { "Half Moon tonight. (At least it's better than no Moon at all.)", |
|
1176 "SGFsZiBNb29uIHRvbmlnaHQuIChBdCBsZWFzdCBpdCdzIGJldHRlciB0aGFuIG5vIE1vb24gYXQgYWxsLik=" }, |
|
1177 { "Help! I'm being held prisoner in a fortune cookie factory!", |
|
1178 "SGVscCEgSSdtIGJlaW5nIGhlbGQgcHJpc29uZXIgaW4gYSBmb3J0dW5lIGNvb2tpZSBmYWN0b3J5IQ==" }, |
|
1179 { "Housecats have nine lives, kittens only one.", |
|
1180 "SG91c2VjYXRzIGhhdmUgbmluZSBsaXZlcywga2l0dGVucyBvbmx5IG9uZS4=" }, |
|
1181 { "How long can you tread water?", |
|
1182 "SG93IGxvbmcgY2FuIHlvdSB0cmVhZCB3YXRlcj8=" }, |
|
1183 { "Hungry? There is an abundance of food on the next level.", |
|
1184 "SHVuZ3J5PyBUaGVyZSBpcyBhbiBhYnVuZGFuY2Ugb2YgZm9vZCBvbiB0aGUgbmV4dCBsZXZlbC4=" }, |
|
1185 { "I guess you've never hit a mail daemon with the Amulet of Yendor...", |
|
1186 "SSBndWVzcyB5b3UndmUgbmV2ZXIgaGl0IGEgbWFpbCBkYWVtb24gd2l0aCB0aGUgQW11bGV0IG9mIFllbmRvci4uLg==" }, |
|
1187 { "If you are the shopkeeper, you can take things for free.", |
|
1188 "SWYgeW91IGFyZSB0aGUgc2hvcGtlZXBlciwgeW91IGNhbiB0YWtlIHRoaW5ncyBmb3IgZnJlZS4=" }, |
|
1189 { "If you can't learn to do it well, learn to enjoy doing it badly.", |
|
1190 "SWYgeW91IGNhbid0IGxlYXJuIHRvIGRvIGl0IHdlbGwsIGxlYXJuIHRvIGVuam95IGRvaW5nIGl0IGJhZGx5Lg==" }, |
|
1191 { "If you thought the Wizard was bad, just wait till you meet the Warlord!", |
|
1192 "SWYgeW91IHRob3VnaHQgdGhlIFdpemFyZCB3YXMgYmFkLCBqdXN0IHdhaXQgdGlsbCB5b3UgbWVldCB0aGUgV2FybG9yZCE=" }, |
|
1193 { "If you turn blind, don't expect your dog to be turned into a seeing-eye dog.", |
|
1194 "SWYgeW91IHR1cm4gYmxpbmQsIGRvbid0IGV4cGVjdCB5b3VyIGRvZyB0byBiZSB0dXJuZWQgaW50byBhIHNlZWluZy1leWUgZG9nLg==" }, |
|
1195 { "If you want to feel great, you must eat something real big.", |
|
1196 "SWYgeW91IHdhbnQgdG8gZmVlbCBncmVhdCwgeW91IG11c3QgZWF0IHNvbWV0aGluZyByZWFsIGJpZy4=" }, |
|
1197 { "If you want to float, you'd better eat a floating eye.", |
|
1198 "SWYgeW91IHdhbnQgdG8gZmxvYXQsIHlvdSdkIGJldHRlciBlYXQgYSBmbG9hdGluZyBleWUu" }, |
|
1199 { "If your ghost kills a player, it increases your score.", |
|
1200 "SWYgeW91ciBnaG9zdCBraWxscyBhIHBsYXllciwgaXQgaW5jcmVhc2VzIHlvdXIgc2NvcmUu" }, |
|
1201 { "Increase mindpower: Tame your own ghost!", |
|
1202 "SW5jcmVhc2UgbWluZHBvd2VyOiBUYW1lIHlvdXIgb3duIGdob3N0IQ==" }, |
|
1203 { "It furthers one to see the great man.", |
|
1204 "SXQgZnVydGhlcnMgb25lIHRvIHNlZSB0aGUgZ3JlYXQgbWFuLg==" }, |
|
1205 { "It's easy to overlook a monster in a wood.", |
|
1206 "SXQncyBlYXN5IHRvIG92ZXJsb29rIGEgbW9uc3RlciBpbiBhIHdvb2Qu" }, |
|
1207 { "Just below any trapdoor there may be another one. Just keep falling!", |
|
1208 "SnVzdCBiZWxvdyBhbnkgdHJhcGRvb3IgdGhlcmUgbWF5IGJlIGFub3RoZXIgb25lLiBKdXN0IGtlZXAgZmFsbGluZyE=" }, |
|
1209 { "Katanas are very sharp; watch you don't cut yourself.", |
|
1210 "S2F0YW5hcyBhcmUgdmVyeSBzaGFycDsgd2F0Y2ggeW91IGRvbid0IGN1dCB5b3Vyc2VsZi4=" }, |
|
1211 { "Keep a clear mind: quaff clear potions.", |
|
1212 "S2VlcCBhIGNsZWFyIG1pbmQ6IHF1YWZmIGNsZWFyIHBvdGlvbnMu" }, |
|
1213 { "Kicking the terminal doesn't hurt the monsters.", |
|
1214 "S2lja2luZyB0aGUgdGVybWluYWwgZG9lc24ndCBodXJ0IHRoZSBtb25zdGVycy4=" }, |
|
1215 { "Killer bees keep appearing till you kill their queen.", |
|
1216 "S2lsbGVyIGJlZXMga2VlcCBhcHBlYXJpbmcgdGlsbCB5b3Uga2lsbCB0aGVpciBxdWVlbi4=" }, |
|
1217 { "Killer bunnies can be tamed with carrots only.", |
|
1218 "S2lsbGVyIGJ1bm5pZXMgY2FuIGJlIHRhbWVkIHdpdGggY2Fycm90cyBvbmx5Lg==" }, |
|
1219 { "Latest news? Put `rec.games.roguelike.nethack' in your .newsrc!", |
|
1220 "TGF0ZXN0IG5ld3M/IFB1dCBgcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrJyBpbiB5b3VyIC5uZXdzcmMh" }, |
|
1221 { "Learn how to spell. Play NetHack!", |
|
1222 "TGVhcm4gaG93IHRvIHNwZWxsLiBQbGF5IE5ldEhhY2sh" }, |
|
1223 { "Leprechauns hide their gold in a secret room.", |
|
1224 "TGVwcmVjaGF1bnMgaGlkZSB0aGVpciBnb2xkIGluIGEgc2VjcmV0IHJvb20u" }, |
|
1225 { "Let your fingers do the walking on the yulkjhnb keys.", |
|
1226 "TGV0IHlvdXIgZmluZ2VycyBkbyB0aGUgd2Fsa2luZyBvbiB0aGUgeXVsa2pobmIga2V5cy4=" }, |
|
1227 { "Let's face it: this time you're not going to win.", |
|
1228 "TGV0J3MgZmFjZSBpdDogdGhpcyB0aW1lIHlvdSdyZSBub3QgZ29pbmcgdG8gd2luLg==" }, |
|
1229 { "Let's have a party, drink a lot of booze.", |
|
1230 "TGV0J3MgaGF2ZSBhIHBhcnR5LCBkcmluayBhIGxvdCBvZiBib296ZS4=" }, |
|
1231 { "Liquor sellers do not drink; they hate to see you twice.", |
|
1232 "TGlxdW9yIHNlbGxlcnMgZG8gbm90IGRyaW5rOyB0aGV5IGhhdGUgdG8gc2VlIHlvdSB0d2ljZS4=" }, |
|
1233 { "Lunar eclipse tonight. May as well quit now!", |
|
1234 "THVuYXIgZWNsaXBzZSB0b25pZ2h0LiBNYXkgYXMgd2VsbCBxdWl0IG5vdyE=" }, |
|
1235 { "Meeting your own ghost decreases your luck considerably!", |
|
1236 "TWVldGluZyB5b3VyIG93biBnaG9zdCBkZWNyZWFzZXMgeW91ciBsdWNrIGNvbnNpZGVyYWJseSE=" }, |
|
1237 { "Money to invest? Take it to the local branch of the Magic Memory Vault!", |
|
1238 "TW9uZXkgdG8gaW52ZXN0PyBUYWtlIGl0IHRvIHRoZSBsb2NhbCBicmFuY2ggb2YgdGhlIE1hZ2ljIE1lbW9yeSBWYXVsdCE=" }, |
|
1239 { "Monsters come from nowhere to hit you everywhere.", |
|
1240 "TW9uc3RlcnMgY29tZSBmcm9tIG5vd2hlcmUgdG8gaGl0IHlvdSBldmVyeXdoZXJlLg==" }, |
|
1241 { "Monsters sleep because you are boring, not because they ever get tired.", |
|
1242 "TW9uc3RlcnMgc2xlZXAgYmVjYXVzZSB5b3UgYXJlIGJvcmluZywgbm90IGJlY2F1c2UgdGhleSBldmVyIGdldCB0aXJlZC4=" }, |
|
1243 { "Most monsters prefer minced meat. That's why they are hitting you!", |
|
1244 "TW9zdCBtb25zdGVycyBwcmVmZXIgbWluY2VkIG1lYXQuIFRoYXQncyB3aHkgdGhleSBhcmUgaGl0dGluZyB5b3Uh" }, |
|
1245 { "Most of the bugs in NetHack are on the floor.", |
|
1246 "TW9zdCBvZiB0aGUgYnVncyBpbiBOZXRIYWNrIGFyZSBvbiB0aGUgZmxvb3Iu" }, |
|
1247 { "Much ado Nothing Happens.", |
|
1248 "TXVjaCBhZG8gTm90aGluZyBIYXBwZW5zLg==" }, |
|
1249 { "Multi-player NetHack is a myth.", |
|
1250 "TXVsdGktcGxheWVyIE5ldEhhY2sgaXMgYSBteXRoLg==" }, |
|
1251 { "NetHack is addictive. Too late, you're already hooked.", |
|
1252 "TmV0SGFjayBpcyBhZGRpY3RpdmUuIFRvbyBsYXRlLCB5b3UncmUgYWxyZWFkeSBob29rZWQu" }, |
|
1253 { "Never ask a shopkeeper for a price list.", |
|
1254 "TmV2ZXIgYXNrIGEgc2hvcGtlZXBlciBmb3IgYSBwcmljZSBsaXN0Lg==" }, |
|
1255 { "Never burn a tree, unless you like getting whacked with a +5 shovel.", |
|
1256 "TmV2ZXIgYnVybiBhIHRyZWUsIHVubGVzcyB5b3UgbGlrZSBnZXR0aW5nIHdoYWNrZWQgd2l0aCBhICs1IHNob3ZlbC4=" }, |
|
1257 { "Never eat with glowing hands!", |
|
1258 "TmV2ZXIgZWF0IHdpdGggZ2xvd2luZyBoYW5kcyE=" }, |
|
1259 { "Never mind the monsters hitting you: they just replace the charwomen.", |
|
1260 "TmV2ZXIgbWluZCB0aGUgbW9uc3RlcnMgaGl0dGluZyB5b3U6IHRoZXkganVzdCByZXBsYWNlIHRoZSBjaGFyd29tZW4u" }, |
|
1261 { "Never play leapfrog with a unicorn.", |
|
1262 "TmV2ZXIgcGxheSBsZWFwZnJvZyB3aXRoIGEgdW5pY29ybi4=" }, |
|
1263 { "Never step on a cursed engraving.", |
|
1264 "TmV2ZXIgc3RlcCBvbiBhIGN1cnNlZCBlbmdyYXZpbmcu" }, |
|
1265 { "Never swim with a camera: there's nothing to take pictures of.", |
|
1266 "TmV2ZXIgc3dpbSB3aXRoIGEgY2FtZXJhOiB0aGVyZSdzIG5vdGhpbmcgdG8gdGFrZSBwaWN0dXJlcyBvZi4=" }, |
|
1267 { "Never teach your pet rust monster to fetch.", |
|
1268 "TmV2ZXIgdGVhY2ggeW91ciBwZXQgcnVzdCBtb25zdGVyIHRvIGZldGNoLg==" }, |
|
1269 { "Never trust a random generator in magic fields.", |
|
1270 "TmV2ZXIgdHJ1c3QgYSByYW5kb20gZ2VuZXJhdG9yIGluIG1hZ2ljIGZpZWxkcy4=" }, |
|
1271 { "Never use a wand of death.", |
|
1272 "TmV2ZXIgdXNlIGEgd2FuZCBvZiBkZWF0aC4=" }, |
|
1273 { "No level contains two shops. The maze is no level. So...", |
|
1274 "Tm8gbGV2ZWwgY29udGFpbnMgdHdvIHNob3BzLiBUaGUgbWF6ZSBpcyBubyBsZXZlbC4gU28uLi4=" }, |
|
1275 { "No part of this fortune may be reproduced, stored in a retrieval system, ...", |
|
1276 "Tm8gcGFydCBvZiB0aGlzIGZvcnR1bmUgbWF5IGJlIHJlcHJvZHVjZWQsIHN0b3JlZCBpbiBhIHJldHJpZXZhbCBzeXN0ZW0sIC4uLg==" }, |
|
1277 { "Not all rumors are as misleading as this one.", |
|
1278 "Tm90IGFsbCBydW1vcnMgYXJlIGFzIG1pc2xlYWRpbmcgYXMgdGhpcyBvbmUu" }, |
|
1279 { "Nymphs and nurses like beautiful rings.", |
|
1280 "TnltcGhzIGFuZCBudXJzZXMgbGlrZSBiZWF1dGlmdWwgcmluZ3Mu" }, |
|
1281 { "Nymphs are blondes. Are you a gentleman?", |
|
1282 "TnltcGhzIGFyZSBibG9uZGVzLiBBcmUgeW91IGEgZ2VudGxlbWFuPw==" }, |
|
1283 { "Offering a unicorn a worthless piece of glass might prove to be fatal!", |
|
1284 "T2ZmZXJpbmcgYSB1bmljb3JuIGEgd29ydGhsZXNzIHBpZWNlIG9mIGdsYXNzIG1pZ2h0IHByb3ZlIHRvIGJlIGZhdGFsIQ==" }, |
|
1285 { "Old hackers never die: young ones do.", |
|
1286 "T2xkIGhhY2tlcnMgbmV2ZXIgZGllOiB5b3VuZyBvbmVzIGRvLg==" }, |
|
1287 { "One has to leave shops before closing time.", |
|
1288 "T25lIGhhcyB0byBsZWF2ZSBzaG9wcyBiZWZvcmUgY2xvc2luZyB0aW1lLg==" }, |
|
1289 { "One homunculus a day keeps the doctor away.", |
|
1290 "T25lIGhvbXVuY3VsdXMgYSBkYXkga2VlcHMgdGhlIGRvY3RvciBhd2F5Lg==" }, |
|
1291 { "One level further down somebody is getting killed, right now.", |
|
1292 "T25lIGxldmVsIGZ1cnRoZXIgZG93biBzb21lYm9keSBpcyBnZXR0aW5nIGtpbGxlZCwgcmlnaHQgbm93Lg==" }, |
|
1293 { "Only a wizard can use a magic whistle.", |
|
1294 "T25seSBhIHdpemFyZCBjYW4gdXNlIGEgbWFnaWMgd2hpc3RsZS4=" }, |
|
1295 { "Only adventurers of evil alignment think of killing their dog.", |
|
1296 "T25seSBhZHZlbnR1cmVycyBvZiBldmlsIGFsaWdubWVudCB0aGluayBvZiBraWxsaW5nIHRoZWlyIGRvZy4=" }, |
|
1297 { "Only chaotic evils kill sleeping monsters.", |
|
1298 "T25seSBjaGFvdGljIGV2aWxzIGtpbGwgc2xlZXBpbmcgbW9uc3RlcnMu" }, |
|
1299 { "Only real trappers escape traps.", |
|
1300 "T25seSByZWFsIHRyYXBwZXJzIGVzY2FwZSB0cmFwcy4=" }, |
|
1301 { "Only real wizards can write scrolls.", |
|
1302 "T25seSByZWFsIHdpemFyZHMgY2FuIHdyaXRlIHNjcm9sbHMu" }, |
|
1303 { "Operation OVERKILL has started now.", |
|
1304 "T3BlcmF0aW9uIE9WRVJLSUxMIGhhcyBzdGFydGVkIG5vdy4=" }, |
|
1305 { "PLEASE ignore previous rumor.", |
|
1306 "UExFQVNFIGlnbm9yZSBwcmV2aW91cyBydW1vci4=" }, |
|
1307 { "Polymorph into an ettin; meet your opponents face to face to face.", |
|
1308 "UG9seW1vcnBoIGludG8gYW4gZXR0aW47IG1lZXQgeW91ciBvcHBvbmVudHMgZmFjZSB0byBmYWNlIHRvIGZhY2Uu" }, |
|
1309 { "Praying will frighten demons.", |
|
1310 "UHJheWluZyB3aWxsIGZyaWdodGVuIGRlbW9ucy4=" }, |
|
1311 { "Row (3x) that boat gently down the stream, Charon (4x), death is but a dream.", |
|
1312 "Um93ICgzeCkgdGhhdCBib2F0IGdlbnRseSBkb3duIHRoZSBzdHJlYW0sIENoYXJvbiAoNHgpLCBkZWF0aCBpcyBidXQgYSBkcmVhbS4=" }, |
|
1313 { "Running is good for your legs.", |
|
1314 "UnVubmluZyBpcyBnb29kIGZvciB5b3VyIGxlZ3Mu" }, |
|
1315 { "Screw up your courage! You've screwed up everything else.", |
|
1316 "U2NyZXcgdXAgeW91ciBjb3VyYWdlISBZb3UndmUgc2NyZXdlZCB1cCBldmVyeXRoaW5nIGVsc2Uu" }, |
|
1317 { "Seepage? Leaky pipes? Rising damp? Summon the plumber!", |
|
1318 "U2VlcGFnZT8gTGVha3kgcGlwZXM/IFJpc2luZyBkYW1wPyBTdW1tb24gdGhlIHBsdW1iZXIh" }, |
|
1319 { "Segmentation fault (core dumped).", |
|
1320 "U2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCku" }, |
|
1321 { "Shopkeepers sometimes die from old age.", |
|
1322 "U2hvcGtlZXBlcnMgc29tZXRpbWVzIGRpZSBmcm9tIG9sZCBhZ2Uu" }, |
|
1323 { "Some mazes (especially small ones) have no solutions, says man 6 maze.", |
|
1324 "U29tZSBtYXplcyAoZXNwZWNpYWxseSBzbWFsbCBvbmVzKSBoYXZlIG5vIHNvbHV0aW9ucywgc2F5cyBtYW4gNiBtYXplLg==" }, |
|
1325 { "Some questions the Sphynx asks just *don't* have any answers.", |
|
1326 "U29tZSBxdWVzdGlvbnMgdGhlIFNwaHlueCBhc2tzIGp1c3QgKmRvbid0KiBoYXZlIGFueSBhbnN3ZXJzLg==" }, |
|
1327 { "Sometimes \"mu\" is the answer.", |
|
1328 "U29tZXRpbWVzICJtdSIgaXMgdGhlIGFuc3dlci4=" }, |
|
1329 { "Sorry, no fortune this time. Better luck next cookie!", |
|
1330 "U29ycnksIG5vIGZvcnR1bmUgdGhpcyB0aW1lLiBCZXR0ZXIgbHVjayBuZXh0IGNvb2tpZSE=" }, |
|
1331 { "Spare your scrolls of make-edible until it's really necessary!", |
|
1332 "U3BhcmUgeW91ciBzY3JvbGxzIG9mIG1ha2UtZWRpYmxlIHVudGlsIGl0J3MgcmVhbGx5IG5lY2Vzc2FyeSE=" }, |
|
1333 { "Suddenly, the dungeon will collapse...", |
|
1334 "U3VkZGVubHksIHRoZSBkdW5nZW9uIHdpbGwgY29sbGFwc2UuLi4=" }, |
|
1335 { "Taming a mail daemon may cause a system security violation.", |
|
1336 "VGFtaW5nIGEgbWFpbCBkYWVtb24gbWF5IGNhdXNlIGEgc3lzdGVtIHNlY3VyaXR5IHZpb2xhdGlvbi4=" }, |
|
1337 { "The crowd was so tough, the Stooges won't play the Dungeon anymore, nyuk nyuk.", |
|
1338 "VGhlIGNyb3dkIHdhcyBzbyB0b3VnaCwgdGhlIFN0b29nZXMgd29uJ3QgcGxheSB0aGUgRHVuZ2VvbiBhbnltb3JlLCBueXVrIG55dWsu" }, |
|
1339 { "The leprechauns hide their treasure in a small hidden room.", |
|
1340 "VGhlIGxlcHJlY2hhdW5zIGhpZGUgdGhlaXIgdHJlYXN1cmUgaW4gYSBzbWFsbCBoaWRkZW4gcm9vbS4=" }, |
|
1341 { "The longer the wand the better.", |
|
1342 "VGhlIGxvbmdlciB0aGUgd2FuZCB0aGUgYmV0dGVyLg==" }, |
|
1343 { "The magic word is \"XYZZY\".", |
|
1344 "VGhlIG1hZ2ljIHdvcmQgaXMgIlhZWlpZIi4=" }, |
|
1345 { "The meek shall inherit your bones files.", |
|
1346 "VGhlIG1lZWsgc2hhbGwgaW5oZXJpdCB5b3VyIGJvbmVzIGZpbGVzLg==" }, |
|
1347 { "The mines are dark and deep, and I have levels to go before I sleep.", |
|
1348 "VGhlIG1pbmVzIGFyZSBkYXJrIGFuZCBkZWVwLCBhbmQgSSBoYXZlIGxldmVscyB0byBnbyBiZWZvcmUgSSBzbGVlcC4=" }, |
|
1349 { "The use of dynamite is dangerous.", |
|
1350 "VGhlIHVzZSBvZiBkeW5hbWl0ZSBpcyBkYW5nZXJvdXMu" }, |
|
1351 { "There are no worms in the UNIX version.", |
|
1352 "VGhlcmUgYXJlIG5vIHdvcm1zIGluIHRoZSBVTklYIHZlcnNpb24u" }, |
|
1353 { "There is a trap on this level!", |
|
1354 "VGhlcmUgaXMgYSB0cmFwIG9uIHRoaXMgbGV2ZWwh" }, |
|
1355 { "They say that Demogorgon, Asmodeus, Orcus, Yeenoghu & Juiblex is no law firm.", |
|
1356 "VGhleSBzYXkgdGhhdCBEZW1vZ29yZ29uLCBBc21vZGV1cywgT3JjdXMsIFllZW5vZ2h1ICYgSnVpYmxleCBpcyBubyBsYXcgZmlybS4=" }, |
|
1357 { "They say that Geryon has an evil twin, beware!", |
|
1358 "VGhleSBzYXkgdGhhdCBHZXJ5b24gaGFzIGFuIGV2aWwgdHdpbiwgYmV3YXJlIQ==" }, |
|
1359 { "They say that Medusa would make a terrible pet.", |
|
1360 "VGhleSBzYXkgdGhhdCBNZWR1c2Egd291bGQgbWFrZSBhIHRlcnJpYmxlIHBldC4=" }, |
|
1361 { "They say that NetHack bugs are Seldon planned.", |
|
1362 "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGJ1Z3MgYXJlIFNlbGRvbiBwbGFubmVkLg==" }, |
|
1363 { "They say that NetHack comes in 256 flavors.", |
|
1364 "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGNvbWVzIGluIDI1NiBmbGF2b3JzLg==" }, |
|
1365 { "They say that NetHack is just a computer game.", |
|
1366 "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIGp1c3QgYSBjb21wdXRlciBnYW1lLg==" }, |
|
1367 { "They say that NetHack is more than just a computer game.", |
|
1368 "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG1vcmUgdGhhbiBqdXN0IGEgY29tcHV0ZXIgZ2FtZS4=" }, |
|
1369 { "They say that NetHack is never what it used to be.", |
|
1370 "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG5ldmVyIHdoYXQgaXQgdXNlZCB0byBiZS4=" }, |
|
1371 { "They say that a baby dragon is too small to hurt or help you.", |
|
1372 "VGhleSBzYXkgdGhhdCBhIGJhYnkgZHJhZ29uIGlzIHRvbyBzbWFsbCB0byBodXJ0IG9yIGhlbHAgeW91Lg==" }, |
|
1373 { "They say that a black pudding is simply a brown pudding gone bad.", |
|
1374 "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHB1ZGRpbmcgaXMgc2ltcGx5IGEgYnJvd24gcHVkZGluZyBnb25lIGJhZC4=" }, |
|
1375 { "They say that a black sheep has 3 bags full of wool.", |
|
1376 "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHNoZWVwIGhhcyAzIGJhZ3MgZnVsbCBvZiB3b29sLg==" }, |
|
1377 { "They say that a blank scroll is like a blank check.", |
|
1378 "VGhleSBzYXkgdGhhdCBhIGJsYW5rIHNjcm9sbCBpcyBsaWtlIGEgYmxhbmsgY2hlY2su" }, |
|
1379 { "They say that a cat named Morris has nine lives.", |
|
1380 "VGhleSBzYXkgdGhhdCBhIGNhdCBuYW1lZCBNb3JyaXMgaGFzIG5pbmUgbGl2ZXMu" }, |
|
1381 { "They say that a desperate shopper might pay any price in a shop.", |
|
1382 "VGhleSBzYXkgdGhhdCBhIGRlc3BlcmF0ZSBzaG9wcGVyIG1pZ2h0IHBheSBhbnkgcHJpY2UgaW4gYSBzaG9wLg==" }, |
|
1383 { "They say that a diamond dog is everybody's best friend.", |
|
1384 "VGhleSBzYXkgdGhhdCBhIGRpYW1vbmQgZG9nIGlzIGV2ZXJ5Ym9keSdzIGJlc3QgZnJpZW5kLg==" }, |
|
1385 { "They say that a dwarf lord can carry a pick-axe because his armor is light.", |
|
1386 "VGhleSBzYXkgdGhhdCBhIGR3YXJmIGxvcmQgY2FuIGNhcnJ5IGEgcGljay1heGUgYmVjYXVzZSBoaXMgYXJtb3IgaXMgbGlnaHQu" }, |
|
1387 { "They say that a floating eye can defeat Medusa.", |
|
1388 "VGhleSBzYXkgdGhhdCBhIGZsb2F0aW5nIGV5ZSBjYW4gZGVmZWF0IE1lZHVzYS4=" }, |
|
1389 { "They say that a fortune only has 1 line and you can't read between it.", |
|
1390 "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lIGFuZCB5b3UgY2FuJ3QgcmVhZCBiZXR3ZWVuIGl0Lg==" }, |
|
1391 { "They say that a fortune only has 1 line, but you can read between it.", |
|
1392 "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lLCBidXQgeW91IGNhbiByZWFkIGJldHdlZW4gaXQu" }, |
|
1393 { "They say that a fountain looks nothing like a regularly erupting geyser.", |
|
1394 "VGhleSBzYXkgdGhhdCBhIGZvdW50YWluIGxvb2tzIG5vdGhpbmcgbGlrZSBhIHJlZ3VsYXJseSBlcnVwdGluZyBnZXlzZXIu" }, |
|
1395 { "They say that a gold doubloon is worth more than its weight in gold.", |
|
1396 "VGhleSBzYXkgdGhhdCBhIGdvbGQgZG91Ymxvb24gaXMgd29ydGggbW9yZSB0aGFuIGl0cyB3ZWlnaHQgaW4gZ29sZC4=" }, |
|
1397 { "They say that a grid bug won't pay a shopkeeper for zapping you in a shop.", |
|
1398 "VGhleSBzYXkgdGhhdCBhIGdyaWQgYnVnIHdvbid0IHBheSBhIHNob3BrZWVwZXIgZm9yIHphcHBpbmcgeW91IGluIGEgc2hvcC4=" }, |
|
1399 { "They say that a gypsy could tell your fortune for a price.", |
|
1400 "VGhleSBzYXkgdGhhdCBhIGd5cHN5IGNvdWxkIHRlbGwgeW91ciBmb3J0dW5lIGZvciBhIHByaWNlLg==" }, |
|
1401 { "They say that a hacker named Alice once level teleported by using a mirror.", |
|
1402 "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBBbGljZSBvbmNlIGxldmVsIHRlbGVwb3J0ZWQgYnkgdXNpbmcgYSBtaXJyb3Iu" }, |
|
1403 { "They say that a hacker named David once slew a giant with a sling and a rock.", |
|
1404 "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEYXZpZCBvbmNlIHNsZXcgYSBnaWFudCB3aXRoIGEgc2xpbmcgYW5kIGEgcm9jay4=" }, |
|
1405 { "They say that a hacker named Dorothy once rode a fog cloud to Oz.", |
|
1406 "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEb3JvdGh5IG9uY2Ugcm9kZSBhIGZvZyBjbG91ZCB0byBPei4=" }, |
|
1407 { "They say that a hacker named Mary once lost a white sheep in the mazes.", |
|
1408 "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBNYXJ5IG9uY2UgbG9zdCBhIHdoaXRlIHNoZWVwIGluIHRoZSBtYXplcy4=" }, |
|
1409 { "They say that a helm of brilliance is not to be taken lightly.", |
|
1410 "VGhleSBzYXkgdGhhdCBhIGhlbG0gb2YgYnJpbGxpYW5jZSBpcyBub3QgdG8gYmUgdGFrZW4gbGlnaHRseS4=" }, |
|
1411 { "They say that a hot dog and a hell hound are the same thing.", |
|
1412 "VGhleSBzYXkgdGhhdCBhIGhvdCBkb2cgYW5kIGEgaGVsbCBob3VuZCBhcmUgdGhlIHNhbWUgdGhpbmcu" }, |
|
1413 { "They say that a lamp named Aladdin's Lamp contains a djinni with 3 wishes.", |
|
1414 "VGhleSBzYXkgdGhhdCBhIGxhbXAgbmFtZWQgQWxhZGRpbidzIExhbXAgY29udGFpbnMgYSBkamlubmkgd2l0aCAzIHdpc2hlcy4=" }, |
|
1415 { "They say that a large dog named Lassie will lead you to the amulet.", |
|
1416 "VGhleSBzYXkgdGhhdCBhIGxhcmdlIGRvZyBuYW1lZCBMYXNzaWUgd2lsbCBsZWFkIHlvdSB0byB0aGUgYW11bGV0Lg==" }, |
|
1417 { "They say that a long sword is not a light sword.", |
|
1418 "VGhleSBzYXkgdGhhdCBhIGxvbmcgc3dvcmQgaXMgbm90IGEgbGlnaHQgc3dvcmQu" }, |
|
1419 { "They say that a manes won't mince words with you.", |
|
1420 "VGhleSBzYXkgdGhhdCBhIG1hbmVzIHdvbid0IG1pbmNlIHdvcmRzIHdpdGggeW91Lg==" }, |
|
1421 { "They say that a mind is a terrible thing to waste.", |
|
1422 "VGhleSBzYXkgdGhhdCBhIG1pbmQgaXMgYSB0ZXJyaWJsZSB0aGluZyB0byB3YXN0ZS4=" }, |
|
1423 { "They say that a plain nymph will only wear a wire ring in one ear.", |
|
1424 "VGhleSBzYXkgdGhhdCBhIHBsYWluIG55bXBoIHdpbGwgb25seSB3ZWFyIGEgd2lyZSByaW5nIGluIG9uZSBlYXIu" }, |
|
1425 { "They say that a plumed hat could be a previously used crested helmet.", |
|
1426 "VGhleSBzYXkgdGhhdCBhIHBsdW1lZCBoYXQgY291bGQgYmUgYSBwcmV2aW91c2x5IHVzZWQgY3Jlc3RlZCBoZWxtZXQu" }, |
|
1427 { "They say that a potion of oil is difficult to grasp.", |
|
1428 "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiBvaWwgaXMgZGlmZmljdWx0IHRvIGdyYXNwLg==" }, |
|
1429 { "They say that a potion of yogurt is a cancelled potion of sickness.", |
|
1430 "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiB5b2d1cnQgaXMgYSBjYW5jZWxsZWQgcG90aW9uIG9mIHNpY2tuZXNzLg==" }, |
|
1431 { "They say that a purple worm is not a baby purple dragon.", |
|
1432 "VGhleSBzYXkgdGhhdCBhIHB1cnBsZSB3b3JtIGlzIG5vdCBhIGJhYnkgcHVycGxlIGRyYWdvbi4=" }, |
|
1433 { "They say that a quivering blob tastes different than a gelatinous cube.", |
|
1434 "VGhleSBzYXkgdGhhdCBhIHF1aXZlcmluZyBibG9iIHRhc3RlcyBkaWZmZXJlbnQgdGhhbiBhIGdlbGF0aW5vdXMgY3ViZS4=" }, |
|
1435 { "They say that a runed broadsword named Stormbringer attracts vortices.", |
|
1436 "VGhleSBzYXkgdGhhdCBhIHJ1bmVkIGJyb2Fkc3dvcmQgbmFtZWQgU3Rvcm1icmluZ2VyIGF0dHJhY3RzIHZvcnRpY2VzLg==" }, |
|
1437 { "They say that a scroll of summoning has other names.", |
|
1438 "VGhleSBzYXkgdGhhdCBhIHNjcm9sbCBvZiBzdW1tb25pbmcgaGFzIG90aGVyIG5hbWVzLg==" }, |
|
1439 { "They say that a shaman can bestow blessings but usually doesn't.", |
|
1440 "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiBjYW4gYmVzdG93IGJsZXNzaW5ncyBidXQgdXN1YWxseSBkb2Vzbid0Lg==" }, |
|
1441 { "They say that a shaman will bless you for an eye of newt and wing of bat.", |
|
1442 "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiB3aWxsIGJsZXNzIHlvdSBmb3IgYW4gZXllIG9mIG5ld3QgYW5kIHdpbmcgb2YgYmF0Lg==" }, |
|
1443 { "They say that a shimmering gold shield is not a polished silver shield.", |
|
1444 "VGhleSBzYXkgdGhhdCBhIHNoaW1tZXJpbmcgZ29sZCBzaGllbGQgaXMgbm90IGEgcG9saXNoZWQgc2lsdmVyIHNoaWVsZC4=" }, |
|
1445 { "They say that a spear will hit a neo-otyugh. (Do YOU know what that is?)", |
|
1446 "VGhleSBzYXkgdGhhdCBhIHNwZWFyIHdpbGwgaGl0IGEgbmVvLW90eXVnaC4gKERvIFlPVSBrbm93IHdoYXQgdGhhdCBpcz8p" }, |
|
1447 { "They say that a spotted dragon is the ultimate shape changer.", |
|
1448 "VGhleSBzYXkgdGhhdCBhIHNwb3R0ZWQgZHJhZ29uIGlzIHRoZSB1bHRpbWF0ZSBzaGFwZSBjaGFuZ2VyLg==" }, |
|
1449 { "They say that a stethoscope is no good if you can only hear your heartbeat.", |
|
1450 "VGhleSBzYXkgdGhhdCBhIHN0ZXRob3Njb3BlIGlzIG5vIGdvb2QgaWYgeW91IGNhbiBvbmx5IGhlYXIgeW91ciBoZWFydGJlYXQu" }, |
|
1451 { "They say that a succubus named Suzy will sometimes warn you of danger.", |
|
1452 "VGhleSBzYXkgdGhhdCBhIHN1Y2N1YnVzIG5hbWVkIFN1enkgd2lsbCBzb21ldGltZXMgd2FybiB5b3Ugb2YgZGFuZ2VyLg==" }, |
|
1453 { "They say that a wand of cancellation is not like a wand of polymorph.", |
|
1454 "VGhleSBzYXkgdGhhdCBhIHdhbmQgb2YgY2FuY2VsbGF0aW9uIGlzIG5vdCBsaWtlIGEgd2FuZCBvZiBwb2x5bW9ycGgu" }, |
|
1455 { "They say that a wood golem named Pinocchio would be easy to control.", |
|
1456 "VGhleSBzYXkgdGhhdCBhIHdvb2QgZ29sZW0gbmFtZWQgUGlub2NjaGlvIHdvdWxkIGJlIGVhc3kgdG8gY29udHJvbC4=" }, |
|
1457 { "They say that after killing a dragon it's time for a change of scenery.", |
|
1458 "VGhleSBzYXkgdGhhdCBhZnRlciBraWxsaW5nIGEgZHJhZ29uIGl0J3MgdGltZSBmb3IgYSBjaGFuZ2Ugb2Ygc2NlbmVyeS4=" }, |
|
1459 { "They say that an amulet of strangulation is worse than ring around the collar.", |
|
1460 "VGhleSBzYXkgdGhhdCBhbiBhbXVsZXQgb2Ygc3RyYW5ndWxhdGlvbiBpcyB3b3JzZSB0aGFuIHJpbmcgYXJvdW5kIHRoZSBjb2xsYXIu" }, |
|
1461 { "They say that an attic is the best place to hide your toys.", |
|
1462 "VGhleSBzYXkgdGhhdCBhbiBhdHRpYyBpcyB0aGUgYmVzdCBwbGFjZSB0byBoaWRlIHlvdXIgdG95cy4=" }, |
|
1463 { "They say that an axe named Cleaver once belonged to a hacker named Beaver.", |
|
1464 "VGhleSBzYXkgdGhhdCBhbiBheGUgbmFtZWQgQ2xlYXZlciBvbmNlIGJlbG9uZ2VkIHRvIGEgaGFja2VyIG5hbWVkIEJlYXZlci4=" }, |
|
1465 { "They say that an eye of newt and a wing of bat are double the trouble.", |
|
1466 "VGhleSBzYXkgdGhhdCBhbiBleWUgb2YgbmV3dCBhbmQgYSB3aW5nIG9mIGJhdCBhcmUgZG91YmxlIHRoZSB0cm91YmxlLg==" }, |
|
1467 { "They say that an incubus named Izzy sometimes makes women feel sensitive.", |
|
1468 "VGhleSBzYXkgdGhhdCBhbiBpbmN1YnVzIG5hbWVkIEl6enkgc29tZXRpbWVzIG1ha2VzIHdvbWVuIGZlZWwgc2Vuc2l0aXZlLg==" }, |
|
1469 { "They say that an opulent throne room is rarely a place to wish you'd be in.", |
|
1470 "VGhleSBzYXkgdGhhdCBhbiBvcHVsZW50IHRocm9uZSByb29tIGlzIHJhcmVseSBhIHBsYWNlIHRvIHdpc2ggeW91J2QgYmUgaW4u" }, |
|
1471 { "They say that an unlucky hacker once had a nose bleed at an altar and died.", |
|
1472 "VGhleSBzYXkgdGhhdCBhbiB1bmx1Y2t5IGhhY2tlciBvbmNlIGhhZCBhIG5vc2UgYmxlZWQgYXQgYW4gYWx0YXIgYW5kIGRpZWQu" }, |
|
1473 { "They say that and they say this but they never say never, never!", |
|
1474 "VGhleSBzYXkgdGhhdCBhbmQgdGhleSBzYXkgdGhpcyBidXQgdGhleSBuZXZlciBzYXkgbmV2ZXIsIG5ldmVyIQ==" }, |
|
1475 { "They say that any quantum mechanic knows that speed kills.", |
|
1476 "VGhleSBzYXkgdGhhdCBhbnkgcXVhbnR1bSBtZWNoYW5pYyBrbm93cyB0aGF0IHNwZWVkIGtpbGxzLg==" }, |
|
1477 { "They say that applying a unicorn horn means you've missed the point.", |
|
1478 "VGhleSBzYXkgdGhhdCBhcHBseWluZyBhIHVuaWNvcm4gaG9ybiBtZWFucyB5b3UndmUgbWlzc2VkIHRoZSBwb2ludC4=" }, |
|
1479 { "They say that blue stones are radioactive, beware.", |
|
1480 "VGhleSBzYXkgdGhhdCBibHVlIHN0b25lcyBhcmUgcmFkaW9hY3RpdmUsIGJld2FyZS4=" }, |
|
1481 { "They say that building a dungeon is a team effort.", |
|
1482 "VGhleSBzYXkgdGhhdCBidWlsZGluZyBhIGR1bmdlb24gaXMgYSB0ZWFtIGVmZm9ydC4=" }, |
|
1483 { "They say that chaotic characters never get a kick out of altars.", |
|
1484 "VGhleSBzYXkgdGhhdCBjaGFvdGljIGNoYXJhY3RlcnMgbmV2ZXIgZ2V0IGEga2ljayBvdXQgb2YgYWx0YXJzLg==" }, |
|
1485 { "They say that collapsing a dungeon often creates a panic.", |
|
1486 "VGhleSBzYXkgdGhhdCBjb2xsYXBzaW5nIGEgZHVuZ2VvbiBvZnRlbiBjcmVhdGVzIGEgcGFuaWMu" }, |
|
1487 { "They say that counting your eggs before they hatch shows that you care.", |
|
1488 "VGhleSBzYXkgdGhhdCBjb3VudGluZyB5b3VyIGVnZ3MgYmVmb3JlIHRoZXkgaGF0Y2ggc2hvd3MgdGhhdCB5b3UgY2FyZS4=" }, |
|
1489 { "They say that dipping a bag of tricks in a fountain won't make it an icebox.", |
|
1490 "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGEgYmFnIG9mIHRyaWNrcyBpbiBhIGZvdW50YWluIHdvbid0IG1ha2UgaXQgYW4gaWNlYm94Lg==" }, |
|
1491 { "They say that dipping an eel and brown mold in hot water makes bouillabaisse.", |
|
1492 "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGFuIGVlbCBhbmQgYnJvd24gbW9sZCBpbiBob3Qgd2F0ZXIgbWFrZXMgYm91aWxsYWJhaXNzZS4=" }, |
|
1493 { "They say that donating a doubloon is extremely pious charity.", |
|
1494 "VGhleSBzYXkgdGhhdCBkb25hdGluZyBhIGRvdWJsb29uIGlzIGV4dHJlbWVseSBwaW91cyBjaGFyaXR5Lg==" }, |
|
1495 { "They say that eating royal jelly attracts grizzly owlbears.", |
|
1496 "VGhleSBzYXkgdGhhdCBlYXRpbmcgcm95YWwgamVsbHkgYXR0cmFjdHMgZ3JpenpseSBvd2xiZWFycy4=" }, |
|
1497 { "They say that eggs, pancakes and juice are just a mundane breakfast.", |
|
1498 "VGhleSBzYXkgdGhhdCBlZ2dzLCBwYW5jYWtlcyBhbmQganVpY2UgYXJlIGp1c3QgYSBtdW5kYW5lIGJyZWFrZmFzdC4=" }, |
|
1499 { "They say that everyone knows why Medusa stands alone in the dark.", |
|
1500 "VGhleSBzYXkgdGhhdCBldmVyeW9uZSBrbm93cyB3aHkgTWVkdXNhIHN0YW5kcyBhbG9uZSBpbiB0aGUgZGFyay4=" }, |
|
1501 { "They say that everyone wanted rec.games.hack to undergo a name change.", |
|
1502 "VGhleSBzYXkgdGhhdCBldmVyeW9uZSB3YW50ZWQgcmVjLmdhbWVzLmhhY2sgdG8gdW5kZXJnbyBhIG5hbWUgY2hhbmdlLg==" }, |
|
1503 { "They say that finding a winning strategy is a deliberate move on your part.", |
|
1504 "VGhleSBzYXkgdGhhdCBmaW5kaW5nIGEgd2lubmluZyBzdHJhdGVneSBpcyBhIGRlbGliZXJhdGUgbW92ZSBvbiB5b3VyIHBhcnQu" }, |
|
1505 { "They say that finding worthless glass is worth something.", |
|
1506 "VGhleSBzYXkgdGhhdCBmaW5kaW5nIHdvcnRobGVzcyBnbGFzcyBpcyB3b3J0aCBzb21ldGhpbmcu" }, |
|
1507 { "They say that fortune cookies are food for thought.", |
|
1508 "VGhleSBzYXkgdGhhdCBmb3J0dW5lIGNvb2tpZXMgYXJlIGZvb2QgZm9yIHRob3VnaHQu" }, |
|
1509 { "They say that gold is only wasted on a pet dragon.", |
|
1510 "VGhleSBzYXkgdGhhdCBnb2xkIGlzIG9ubHkgd2FzdGVkIG9uIGEgcGV0IGRyYWdvbi4=" }, |
|
1511 { "They say that good things come to those that wait.", |
|
1512 "VGhleSBzYXkgdGhhdCBnb29kIHRoaW5ncyBjb21lIHRvIHRob3NlIHRoYXQgd2FpdC4=" }, |
|
1513 { "They say that greased objects will slip out of monsters' hands.", |
|
1514 "VGhleSBzYXkgdGhhdCBncmVhc2VkIG9iamVjdHMgd2lsbCBzbGlwIG91dCBvZiBtb25zdGVycycgaGFuZHMu" }, |
|
1515 { "They say that if you can't spell then you'll wish you had a spell book.", |
|
1516 "VGhleSBzYXkgdGhhdCBpZiB5b3UgY2FuJ3Qgc3BlbGwgdGhlbiB5b3UnbGwgd2lzaCB5b3UgaGFkIGEgc3BlbGwgYm9vay4=" }, |
|
1517 { "They say that if you live by the sword, you'll die by the sword.", |
|
1518 "VGhleSBzYXkgdGhhdCBpZiB5b3UgbGl2ZSBieSB0aGUgc3dvcmQsIHlvdSdsbCBkaWUgYnkgdGhlIHN3b3JkLg==" }, |
|
1519 { "They say that if you play like a monster you'll have a better game.", |
|
1520 "VGhleSBzYXkgdGhhdCBpZiB5b3UgcGxheSBsaWtlIGEgbW9uc3RlciB5b3UnbGwgaGF2ZSBhIGJldHRlciBnYW1lLg==" }, |
|
1521 { "They say that if you sleep with a demon you might awake with a headache.", |
|
1522 "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc2xlZXAgd2l0aCBhIGRlbW9uIHlvdSBtaWdodCBhd2FrZSB3aXRoIGEgaGVhZGFjaGUu" }, |
|
1523 { "They say that if you step on a crack you could break your mother's back.", |
|
1524 "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc3RlcCBvbiBhIGNyYWNrIHlvdSBjb3VsZCBicmVhayB5b3VyIG1vdGhlcidzIGJhY2su" }, |
|
1525 { "They say that if you're invisible you can still be heard!", |
|
1526 "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgaW52aXNpYmxlIHlvdSBjYW4gc3RpbGwgYmUgaGVhcmQh" }, |
|
1527 { "They say that if you're lucky you can feel the runes on a scroll.", |
|
1528 "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgbHVja3kgeW91IGNhbiBmZWVsIHRoZSBydW5lcyBvbiBhIHNjcm9sbC4=" }, |
|
1529 { "They say that in the big picture gold is only small change.", |
|
1530 "VGhleSBzYXkgdGhhdCBpbiB0aGUgYmlnIHBpY3R1cmUgZ29sZCBpcyBvbmx5IHNtYWxsIGNoYW5nZS4=" }, |
|
1531 { "They say that in the dungeon it's not what you know that really matters.", |
|
1532 "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBpdCdzIG5vdCB3aGF0IHlvdSBrbm93IHRoYXQgcmVhbGx5IG1hdHRlcnMu" }, |
|
1533 { "They say that in the dungeon moon rocks are really dilithium crystals.", |
|
1534 "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBtb29uIHJvY2tzIGFyZSByZWFsbHkgZGlsaXRoaXVtIGNyeXN0YWxzLg==" }, |
|
1535 { "They say that in the dungeon the boorish customer is never right.", |
|
1536 "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB0aGUgYm9vcmlzaCBjdXN0b21lciBpcyBuZXZlciByaWdodC4=" }, |
|
1537 { "They say that in the dungeon you don't need a watch to tell time.", |
|
1538 "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgZG9uJ3QgbmVlZCBhIHdhdGNoIHRvIHRlbGwgdGltZS4=" }, |
|
1539 { "They say that in the dungeon you need something old, new, burrowed and blue.", |
|
1540 "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgbmVlZCBzb21ldGhpbmcgb2xkLCBuZXcsIGJ1cnJvd2VkIGFuZCBibHVlLg==" }, |
|
1541 { "They say that in the dungeon you should always count your blessings.", |
|
1542 "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3Ugc2hvdWxkIGFsd2F5cyBjb3VudCB5b3VyIGJsZXNzaW5ncy4=" }, |
|
1543 { "They say that iron golem plate mail isn't worth wishing for.", |
|
1544 "VGhleSBzYXkgdGhhdCBpcm9uIGdvbGVtIHBsYXRlIG1haWwgaXNuJ3Qgd29ydGggd2lzaGluZyBmb3Iu" }, |
|
1545 { "They say that it takes four quarterstaffs to make one staff.", |
|
1546 "VGhleSBzYXkgdGhhdCBpdCB0YWtlcyBmb3VyIHF1YXJ0ZXJzdGFmZnMgdG8gbWFrZSBvbmUgc3RhZmYu" }, |
|
1547 { "They say that it's not over till the fat ladies sing.", |
|
1548 "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWRpZXMgc2luZy4=" }, |
|
1549 { "They say that it's not over till the fat lady shouts `Off with its head'.", |
|
1550 "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWR5IHNob3V0cyBgT2ZmIHdpdGggaXRzIGhlYWQnLg==" }, |
|
1551 { "They say that kicking a heavy statue is really a dumb move.", |
|
1552 "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgaGVhdnkgc3RhdHVlIGlzIHJlYWxseSBhIGR1bWIgbW92ZS4=" }, |
|
1553 { "They say that kicking a valuable gem doesn't seem to make sense.", |
|
1554 "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgdmFsdWFibGUgZ2VtIGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlLg==" }, |
|
1555 { "They say that leprechauns know Latin and you should too.", |
|
1556 "VGhleSBzYXkgdGhhdCBsZXByZWNoYXVucyBrbm93IExhdGluIGFuZCB5b3Ugc2hvdWxkIHRvby4=" }, |
|
1557 { "They say that minotaurs get lost outside of the mazes.", |
|
1558 "VGhleSBzYXkgdGhhdCBtaW5vdGF1cnMgZ2V0IGxvc3Qgb3V0c2lkZSBvZiB0aGUgbWF6ZXMu" }, |
|
1559 { "They say that most trolls are born again.", |
|
1560 "VGhleSBzYXkgdGhhdCBtb3N0IHRyb2xscyBhcmUgYm9ybiBhZ2Fpbi4=" }, |
|
1561 { "They say that naming your cat Garfield will make you more attractive.", |
|
1562 "VGhleSBzYXkgdGhhdCBuYW1pbmcgeW91ciBjYXQgR2FyZmllbGQgd2lsbCBtYWtlIHlvdSBtb3JlIGF0dHJhY3RpdmUu" }, |
|
1563 { "They say that no one knows everything about everything in the dungeon.", |
|
1564 "VGhleSBzYXkgdGhhdCBubyBvbmUga25vd3MgZXZlcnl0aGluZyBhYm91dCBldmVyeXRoaW5nIGluIHRoZSBkdW5nZW9uLg==" }, |
|
1565 { "They say that no one plays NetHack just for the fun of it.", |
|
1566 "VGhleSBzYXkgdGhhdCBubyBvbmUgcGxheXMgTmV0SGFjayBqdXN0IGZvciB0aGUgZnVuIG9mIGl0Lg==" }, |
|
1567 { "They say that no one really subscribes to rec.games.roguelike.nethack.", |
|
1568 "VGhleSBzYXkgdGhhdCBubyBvbmUgcmVhbGx5IHN1YnNjcmliZXMgdG8gcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrLg==" }, |
|
1569 { "They say that no one will admit to starting a rumor.", |
|
1570 "VGhleSBzYXkgdGhhdCBubyBvbmUgd2lsbCBhZG1pdCB0byBzdGFydGluZyBhIHJ1bW9yLg==" }, |
|
1571 { "They say that nurses sometimes carry scalpels and never use them.", |
|
1572 "VGhleSBzYXkgdGhhdCBudXJzZXMgc29tZXRpbWVzIGNhcnJ5IHNjYWxwZWxzIGFuZCBuZXZlciB1c2UgdGhlbS4=" }, |
|
1573 { "They say that once you've met one wizard you've met them all.", |
|
1574 "VGhleSBzYXkgdGhhdCBvbmNlIHlvdSd2ZSBtZXQgb25lIHdpemFyZCB5b3UndmUgbWV0IHRoZW0gYWxsLg==" }, |
|
1575 { "They say that one troll is worth 10,000 newts.", |
|
1576 "VGhleSBzYXkgdGhhdCBvbmUgdHJvbGwgaXMgd29ydGggMTAsMDAwIG5ld3RzLg==" }, |
|
1577 { "They say that only David can find the zoo!", |
|
1578 "VGhleSBzYXkgdGhhdCBvbmx5IERhdmlkIGNhbiBmaW5kIHRoZSB6b28h" }, |
|
1579 { "They say that only angels play their harps for their pets.", |
|
1580 "VGhleSBzYXkgdGhhdCBvbmx5IGFuZ2VscyBwbGF5IHRoZWlyIGhhcnBzIGZvciB0aGVpciBwZXRzLg==" }, |
|
1581 { "They say that only big spenders carry gold.", |
|
1582 "VGhleSBzYXkgdGhhdCBvbmx5IGJpZyBzcGVuZGVycyBjYXJyeSBnb2xkLg==" }, |
|
1583 { "They say that orc shamans are healthy, wealthy and wise.", |
|
1584 "VGhleSBzYXkgdGhhdCBvcmMgc2hhbWFucyBhcmUgaGVhbHRoeSwgd2VhbHRoeSBhbmQgd2lzZS4=" }, |
|
1585 { "They say that playing NetHack is like walking into a death trap.", |
|
1586 "VGhleSBzYXkgdGhhdCBwbGF5aW5nIE5ldEhhY2sgaXMgbGlrZSB3YWxraW5nIGludG8gYSBkZWF0aCB0cmFwLg==" }, |
|
1587 { "They say that problem breathing is best treated by a proper diet.", |
|
1588 "VGhleSBzYXkgdGhhdCBwcm9ibGVtIGJyZWF0aGluZyBpcyBiZXN0IHRyZWF0ZWQgYnkgYSBwcm9wZXIgZGlldC4=" }, |
|
1589 { "They say that quaffing many potions of levitation can give you a headache.", |
|
1590 "VGhleSBzYXkgdGhhdCBxdWFmZmluZyBtYW55IHBvdGlvbnMgb2YgbGV2aXRhdGlvbiBjYW4gZ2l2ZSB5b3UgYSBoZWFkYWNoZS4=" }, |
|
1591 { "They say that queen bees get that way by eating royal jelly.", |
|
1592 "VGhleSBzYXkgdGhhdCBxdWVlbiBiZWVzIGdldCB0aGF0IHdheSBieSBlYXRpbmcgcm95YWwgamVsbHku" }, |
|
1593 { "They say that reading a scare monster scroll is the same as saying Elbereth.", |
|
1594 "VGhleSBzYXkgdGhhdCByZWFkaW5nIGEgc2NhcmUgbW9uc3RlciBzY3JvbGwgaXMgdGhlIHNhbWUgYXMgc2F5aW5nIEVsYmVyZXRoLg==" }, |
|
1595 { "They say that real hackers always are controlled.", |
|
1596 "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgYWx3YXlzIGFyZSBjb250cm9sbGVkLg==" }, |
|
1597 { "They say that real hackers never sleep.", |
|
1598 "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgbmV2ZXIgc2xlZXAu" }, |
|
1599 { "They say that shopkeepers are insured by Croesus himself!", |
|
1600 "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBhcmUgaW5zdXJlZCBieSBDcm9lc3VzIGhpbXNlbGYh" }, |
|
1601 { "They say that shopkeepers never carry more than 20 gold pieces, at night.", |
|
1602 "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBjYXJyeSBtb3JlIHRoYW4gMjAgZ29sZCBwaWVjZXMsIGF0IG5pZ2h0Lg==" }, |
|
1603 { "They say that shopkeepers never sell blessed potions of invisibility.", |
|
1604 "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBzZWxsIGJsZXNzZWQgcG90aW9ucyBvZiBpbnZpc2liaWxpdHku" }, |
|
1605 { "They say that soldiers wear kid gloves and silly helmets.", |
|
1606 "VGhleSBzYXkgdGhhdCBzb2xkaWVycyB3ZWFyIGtpZCBnbG92ZXMgYW5kIHNpbGx5IGhlbG1ldHMu" }, |
|
1607 { "They say that some Kops are on the take.", |
|
1608 "VGhleSBzYXkgdGhhdCBzb21lIEtvcHMgYXJlIG9uIHRoZSB0YWtlLg==" }, |
|
1609 { "They say that some guards' palms can be greased.", |
|
1610 "VGhleSBzYXkgdGhhdCBzb21lIGd1YXJkcycgcGFsbXMgY2FuIGJlIGdyZWFzZWQu" }, |
|
1611 { "They say that some monsters may kiss your boots to stop your drum playing.", |
|
1612 "VGhleSBzYXkgdGhhdCBzb21lIG1vbnN0ZXJzIG1heSBraXNzIHlvdXIgYm9vdHMgdG8gc3RvcCB5b3VyIGRydW0gcGxheWluZy4=" }, |
|
1613 { "They say that sometimes you can be the hit of the party when playing a horn.", |
|
1614 "VGhleSBzYXkgdGhhdCBzb21ldGltZXMgeW91IGNhbiBiZSB0aGUgaGl0IG9mIHRoZSBwYXJ0eSB3aGVuIHBsYXlpbmcgYSBob3JuLg==" }, |
|
1615 { "They say that the NetHack gods generally welcome your sacrifices.", |
|
1616 "VGhleSBzYXkgdGhhdCB0aGUgTmV0SGFjayBnb2RzIGdlbmVyYWxseSB3ZWxjb21lIHlvdXIgc2FjcmlmaWNlcy4=" }, |
|
1617 { "They say that the Three Rings are named Vilya, Nenya and Narya.", |
|
1618 "VGhleSBzYXkgdGhhdCB0aGUgVGhyZWUgUmluZ3MgYXJlIG5hbWVkIFZpbHlhLCBOZW55YSBhbmQgTmFyeWEu" }, |
|
1619 { "They say that the Wizard of Yendor has a death wish.", |
|
1620 "VGhleSBzYXkgdGhhdCB0aGUgV2l6YXJkIG9mIFllbmRvciBoYXMgYSBkZWF0aCB3aXNoLg==" }, |
|
1621 { "They say that the `hair of the dog' is sometimes an effective remedy.", |
|
1622 "VGhleSBzYXkgdGhhdCB0aGUgYGhhaXIgb2YgdGhlIGRvZycgaXMgc29tZXRpbWVzIGFuIGVmZmVjdGl2ZSByZW1lZHku" }, |
|
1623 { "They say that the best time to save your game is now before its too late.", |
|
1624 "VGhleSBzYXkgdGhhdCB0aGUgYmVzdCB0aW1lIHRvIHNhdmUgeW91ciBnYW1lIGlzIG5vdyBiZWZvcmUgaXRzIHRvbyBsYXRlLg==" }, |
|
1625 { "They say that the biggest obstacle in NetHack is your mind.", |
|
1626 "VGhleSBzYXkgdGhhdCB0aGUgYmlnZ2VzdCBvYnN0YWNsZSBpbiBOZXRIYWNrIGlzIHlvdXIgbWluZC4=" }, |
|
1627 { "They say that the gods are angry when they hit you with objects.", |
|
1628 "VGhleSBzYXkgdGhhdCB0aGUgZ29kcyBhcmUgYW5ncnkgd2hlbiB0aGV5IGhpdCB5b3Ugd2l0aCBvYmplY3RzLg==" }, |
|
1629 { "They say that the priesthood are specially favored by the gods.", |
|
1630 "VGhleSBzYXkgdGhhdCB0aGUgcHJpZXN0aG9vZCBhcmUgc3BlY2lhbGx5IGZhdm9yZWQgYnkgdGhlIGdvZHMu" }, |
|
1631 { "They say that the way to make a unicorn happy is to give it what it wants.", |
|
1632 "VGhleSBzYXkgdGhhdCB0aGUgd2F5IHRvIG1ha2UgYSB1bmljb3JuIGhhcHB5IGlzIHRvIGdpdmUgaXQgd2hhdCBpdCB3YW50cy4=" }, |
|
1633 { "They say that there are no black or white stones, only gray.", |
|
1634 "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gYmxhY2sgb3Igd2hpdGUgc3RvbmVzLCBvbmx5IGdyYXku" }, |
|
1635 { "They say that there are no skeletons hence there are no skeleton keys.", |
|
1636 "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gc2tlbGV0b25zIGhlbmNlIHRoZXJlIGFyZSBubyBza2VsZXRvbiBrZXlzLg==" }, |
|
1637 { "They say that there is a clever rogue in every hacker just dying to escape.", |
|
1638 "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBhIGNsZXZlciByb2d1ZSBpbiBldmVyeSBoYWNrZXIganVzdCBkeWluZyB0byBlc2NhcGUu" }, |
|
1639 { "They say that there is no such thing as free advice.", |
|
1640 "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGZyZWUgYWR2aWNlLg==" }, |
|
1641 { "They say that there is only one way to win at NetHack.", |
|
1642 "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB3YXkgdG8gd2luIGF0IE5ldEhhY2su" }, |
|
1643 { "They say that there once was a fearsome chaotic samurai named Luk No.", |
|
1644 "VGhleSBzYXkgdGhhdCB0aGVyZSBvbmNlIHdhcyBhIGZlYXJzb21lIGNoYW90aWMgc2FtdXJhaSBuYW1lZCBMdWsgTm8u" }, |
|
1645 { "They say that there was a time when cursed holy water wasn't water.", |
|
1646 "VGhleSBzYXkgdGhhdCB0aGVyZSB3YXMgYSB0aW1lIHdoZW4gY3Vyc2VkIGhvbHkgd2F0ZXIgd2Fzbid0IHdhdGVyLg==" }, |
|
1647 { "They say that there's no point in crying over a gray ooze.", |
|
1648 "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG5vIHBvaW50IGluIGNyeWluZyBvdmVyIGEgZ3JheSBvb3plLg==" }, |
|
1649 { "They say that there's only hope left after you've opened Pandora's box.", |
|
1650 "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG9ubHkgaG9wZSBsZWZ0IGFmdGVyIHlvdSd2ZSBvcGVuZWQgUGFuZG9yYSdzIGJveC4=" }, |
|
1651 { "They say that trapdoors should always be marked `Caution: Trap Door'.", |
|
1652 "VGhleSBzYXkgdGhhdCB0cmFwZG9vcnMgc2hvdWxkIGFsd2F5cyBiZSBtYXJrZWQgYENhdXRpb246IFRyYXAgRG9vcicu" }, |
|
1653 { "They say that using an amulet of change isn't a difficult operation.", |
|
1654 "VGhleSBzYXkgdGhhdCB1c2luZyBhbiBhbXVsZXQgb2YgY2hhbmdlIGlzbid0IGEgZGlmZmljdWx0IG9wZXJhdGlvbi4=" }, |
|
1655 { "They say that water walking boots are better if you are fast like Hermes.", |
|
1656 "VGhleSBzYXkgdGhhdCB3YXRlciB3YWxraW5nIGJvb3RzIGFyZSBiZXR0ZXIgaWYgeW91IGFyZSBmYXN0IGxpa2UgSGVybWVzLg==" }, |
|
1657 { "They say that when you wear a circular amulet you might resemble a troll.", |
|
1658 "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSB3ZWFyIGEgY2lyY3VsYXIgYW11bGV0IHlvdSBtaWdodCByZXNlbWJsZSBhIHRyb2xsLg==" }, |
|
1659 { "They say that when you're hungry you can get a pizza in 30 moves or it's free.", |
|
1660 "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSdyZSBodW5ncnkgeW91IGNhbiBnZXQgYSBwaXp6YSBpbiAzMCBtb3ZlcyBvciBpdCdzIGZyZWUu" }, |
|
1661 { "They say that when your god is angry you should try another one.", |
|
1662 "VGhleSBzYXkgdGhhdCB3aGVuIHlvdXIgZ29kIGlzIGFuZ3J5IHlvdSBzaG91bGQgdHJ5IGFub3RoZXIgb25lLg==" }, |
|
1663 { "They say that wielding a unicorn horn takes strength.", |
|
1664 "VGhleSBzYXkgdGhhdCB3aWVsZGluZyBhIHVuaWNvcm4gaG9ybiB0YWtlcyBzdHJlbmd0aC4=" }, |
|
1665 { "They say that with speed boots you never worry about hit and run accidents.", |
|
1666 "VGhleSBzYXkgdGhhdCB3aXRoIHNwZWVkIGJvb3RzIHlvdSBuZXZlciB3b3JyeSBhYm91dCBoaXQgYW5kIHJ1biBhY2NpZGVudHMu" }, |
|
1667 { "They say that you can defeat a killer bee with a unicorn horn.", |
|
1668 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIGRlZmVhdCBhIGtpbGxlciBiZWUgd2l0aCBhIHVuaWNvcm4gaG9ybi4=" }, |
|
1669 { "They say that you can only cross the River Styx in Charon's boat.", |
|
1670 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgY3Jvc3MgdGhlIFJpdmVyIFN0eXggaW4gQ2hhcm9uJ3MgYm9hdC4=" }, |
|
1671 { "They say that you can only kill a lich once and then you'd better be careful.", |
|
1672 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkga2lsbCBhIGxpY2ggb25jZSBhbmQgdGhlbiB5b3UnZCBiZXR0ZXIgYmUgY2FyZWZ1bC4=" }, |
|
1673 { "They say that you can only wish for things you've already had.", |
|
1674 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgd2lzaCBmb3IgdGhpbmdzIHlvdSd2ZSBhbHJlYWR5IGhhZC4=" }, |
|
1675 { "They say that you can train a cat by talking gently to it.", |
|
1676 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgY2F0IGJ5IHRhbGtpbmcgZ2VudGx5IHRvIGl0Lg==" }, |
|
1677 { "They say that you can train a dog by talking firmly to it.", |
|
1678 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgZG9nIGJ5IHRhbGtpbmcgZmlybWx5IHRvIGl0Lg==" }, |
|
1679 { "They say that you can trust your gold with the king.", |
|
1680 "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRydXN0IHlvdXIgZ29sZCB3aXRoIHRoZSBraW5nLg==" }, |
|
1681 { "They say that you can't wipe your greasy bare hands on a blank scroll.", |
|
1682 "VGhleSBzYXkgdGhhdCB5b3UgY2FuJ3Qgd2lwZSB5b3VyIGdyZWFzeSBiYXJlIGhhbmRzIG9uIGEgYmxhbmsgc2Nyb2xsLg==" }, |
|
1683 { "They say that you cannot trust scrolls of rumor.", |
|
1684 "VGhleSBzYXkgdGhhdCB5b3UgY2Fubm90IHRydXN0IHNjcm9sbHMgb2YgcnVtb3Iu" }, |
|
1685 { "They say that you could fall head over heels for an energy vortex.", |
|
1686 "VGhleSBzYXkgdGhhdCB5b3UgY291bGQgZmFsbCBoZWFkIG92ZXIgaGVlbHMgZm9yIGFuIGVuZXJneSB2b3J0ZXgu" }, |
|
1687 { "They say that you need a key in order to open locked doors.", |
|
1688 "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIGtleSBpbiBvcmRlciB0byBvcGVuIGxvY2tlZCBkb29ycy4=" }, |
|
1689 { "They say that you need a mirror to notice a mimic in an antique shop.", |
|
1690 "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIG1pcnJvciB0byBub3RpY2UgYSBtaW1pYyBpbiBhbiBhbnRpcXVlIHNob3Au" }, |
|
1691 { "They say that you really can use a pick-axe unless you really can't.", |
|
1692 "VGhleSBzYXkgdGhhdCB5b3UgcmVhbGx5IGNhbiB1c2UgYSBwaWNrLWF4ZSB1bmxlc3MgeW91IHJlYWxseSBjYW4ndC4=" }, |
|
1693 { "They say that you should always store your tools in the cellar.", |
|
1694 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGFsd2F5cyBzdG9yZSB5b3VyIHRvb2xzIGluIHRoZSBjZWxsYXIu" }, |
|
1695 { "They say that you should be careful while climbing the ladder to success.", |
|
1696 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGJlIGNhcmVmdWwgd2hpbGUgY2xpbWJpbmcgdGhlIGxhZGRlciB0byBzdWNjZXNzLg==" }, |
|
1697 { "They say that you should call your armor `rustproof'.", |
|
1698 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGNhbGwgeW91ciBhcm1vciBgcnVzdHByb29mJy4=" }, |
|
1699 { "They say that you should name your dog Spuds to have a cool pet.", |
|
1700 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciBkb2cgU3B1ZHMgdG8gaGF2ZSBhIGNvb2wgcGV0Lg==" }, |
|
1701 { "They say that you should name your weapon after your first monster kill.", |
|
1702 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciB3ZWFwb24gYWZ0ZXIgeW91ciBmaXJzdCBtb25zdGVyIGtpbGwu" }, |
|
1703 { "They say that you should never introduce a rope golem to a succubus.", |
|
1704 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIGludHJvZHVjZSBhIHJvcGUgZ29sZW0gdG8gYSBzdWNjdWJ1cy4=" }, |
|
1705 { "They say that you should never sleep near invisible ring wraiths.", |
|
1706 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHNsZWVwIG5lYXIgaW52aXNpYmxlIHJpbmcgd3JhaXRocy4=" }, |
|
1707 { "They say that you should never try to leave the dungeon with a bag of gems.", |
|
1708 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHRyeSB0byBsZWF2ZSB0aGUgZHVuZ2VvbiB3aXRoIGEgYmFnIG9mIGdlbXMu" }, |
|
1709 { "They say that you should remove your armor before sitting on a throne.", |
|
1710 "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIHJlbW92ZSB5b3VyIGFybW9yIGJlZm9yZSBzaXR0aW5nIG9uIGEgdGhyb25lLg==" }, |
|
1711 { "This fortune cookie is copy protected.", |
|
1712 "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyBjb3B5IHByb3RlY3RlZC4=" }, |
|
1713 { "This fortune cookie is the property of Fortune Cookies, Inc.", |
|
1714 "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyB0aGUgcHJvcGVydHkgb2YgRm9ydHVuZSBDb29raWVzLCBJbmMu" }, |
|
1715 { "Tired? Try a scroll of charging on yourself.", |
|
1716 "VGlyZWQ/IFRyeSBhIHNjcm9sbCBvZiBjaGFyZ2luZyBvbiB5b3Vyc2VsZi4=" }, |
|
1717 { "To achieve the next higher rating, you need 3 more points.", |
|
1718 "VG8gYWNoaWV2ZSB0aGUgbmV4dCBoaWdoZXIgcmF0aW5nLCB5b3UgbmVlZCAzIG1vcmUgcG9pbnRzLg==" }, |
|
1719 { "To reach heaven, escape the dungeon while wearing a ring of levitation.", |
|
1720 "VG8gcmVhY2ggaGVhdmVuLCBlc2NhcGUgdGhlIGR1bmdlb24gd2hpbGUgd2VhcmluZyBhIHJpbmcgb2YgbGV2aXRhdGlvbi4=" }, |
|
1721 { "Tourists wear shirts loud enough to wake the dead.", |
|
1722 "VG91cmlzdHMgd2VhciBzaGlydHMgbG91ZCBlbm91Z2ggdG8gd2FrZSB0aGUgZGVhZC4=" }, |
|
1723 { "Try calling your katana Moulinette.", |
|
1724 "VHJ5IGNhbGxpbmcgeW91ciBrYXRhbmEgTW91bGluZXR0ZS4=" }, |
|
1725 { "Ulch! That meat was painted!", |
|
1726 "VWxjaCEgVGhhdCBtZWF0IHdhcyBwYWludGVkIQ==" }, |
|
1727 { "Unfortunately, this message was left intentionally blank.", |
|
1728 "VW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzYWdlIHdhcyBsZWZ0IGludGVudGlvbmFsbHkgYmxhbmsu" }, |
|
1729 { "Using a morning star in the evening has no effect.", |
|
1730 "VXNpbmcgYSBtb3JuaW5nIHN0YXIgaW4gdGhlIGV2ZW5pbmcgaGFzIG5vIGVmZmVjdC4=" }, |
|
1731 { "Want a hint? Zap a wand of make invisible on your weapon!", |
|
1732 "V2FudCBhIGhpbnQ/IFphcCBhIHdhbmQgb2YgbWFrZSBpbnZpc2libGUgb24geW91ciB3ZWFwb24h" }, |
|
1733 { "Want to ascend in a hurry? Apply at Gizmonic Institute.", |
|
1734 "V2FudCB0byBhc2NlbmQgaW4gYSBodXJyeT8gQXBwbHkgYXQgR2l6bW9uaWMgSW5zdGl0dXRlLg==" }, |
|
1735 { "Wanted: shopkeepers. Send a scroll of mail to Mage of Yendor/Level 35/Dungeon.", |
|
1736 "V2FudGVkOiBzaG9wa2VlcGVycy4gU2VuZCBhIHNjcm9sbCBvZiBtYWlsIHRvIE1hZ2Ugb2YgWWVuZG9yL0xldmVsIDM1L0R1bmdlb24u" }, |
|
1737 { "Warning: fortune reading can be hazardous to your health.", |
|
1738 "V2FybmluZzogZm9ydHVuZSByZWFkaW5nIGNhbiBiZSBoYXphcmRvdXMgdG8geW91ciBoZWFsdGgu" }, |
|
1739 { "We have new ways of detecting treachery...", |
|
1740 "V2UgaGF2ZSBuZXcgd2F5cyBvZiBkZXRlY3RpbmcgdHJlYWNoZXJ5Li4u" }, |
|
1741 { "Wet towels make great weapons!", |
|
1742 "V2V0IHRvd2VscyBtYWtlIGdyZWF0IHdlYXBvbnMh" }, |
|
1743 { "What a pity, you cannot read it!", |
|
1744 "V2hhdCBhIHBpdHksIHlvdSBjYW5ub3QgcmVhZCBpdCE=" }, |
|
1745 { "When a piercer drops in on you, you will be tempted to hit the ceiling!", |
|
1746 "V2hlbiBhIHBpZXJjZXIgZHJvcHMgaW4gb24geW91LCB5b3Ugd2lsbCBiZSB0ZW1wdGVkIHRvIGhpdCB0aGUgY2VpbGluZyE=" }, |
|
1747 { "When in a maze follow the right wall and you will never get lost.", |
|
1748 "V2hlbiBpbiBhIG1hemUgZm9sbG93IHRoZSByaWdodCB3YWxsIGFuZCB5b3Ugd2lsbCBuZXZlciBnZXQgbG9zdC4=" }, |
|
1749 { "When you have a key, you don't have to wait for the guard.", |
|
1750 "V2hlbiB5b3UgaGF2ZSBhIGtleSwgeW91IGRvbid0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIGd1YXJkLg==" }, |
|
1751 { "Why are you wasting time reading fortunes?", |
|
1752 "V2h5IGFyZSB5b3Ugd2FzdGluZyB0aW1lIHJlYWRpbmcgZm9ydHVuZXM/" }, |
|
1753 { "Wish for a master key and open the Magic Memory Vault!", |
|
1754 "V2lzaCBmb3IgYSBtYXN0ZXIga2V5IGFuZCBvcGVuIHRoZSBNYWdpYyBNZW1vcnkgVmF1bHQh" }, |
|
1755 { "Wizard expects every monster to do its duty.", |
|
1756 "V2l6YXJkIGV4cGVjdHMgZXZlcnkgbW9uc3RlciB0byBkbyBpdHMgZHV0eS4=" }, |
|
1757 { "Wow! You could've had a potion of fruit juice!", |
|
1758 "V293ISBZb3UgY291bGQndmUgaGFkIGEgcG90aW9uIG9mIGZydWl0IGp1aWNlIQ==" }, |
|
1759 { "Yet Another Silly Message (YASM).", |
|
1760 "WWV0IEFub3RoZXIgU2lsbHkgTWVzc2FnZSAoWUFTTSku" }, |
|
1761 { "You are destined to be misled by a fortune.", |
|
1762 "WW91IGFyZSBkZXN0aW5lZCB0byBiZSBtaXNsZWQgYnkgYSBmb3J0dW5lLg==" }, |
|
1763 { "You can get a genuine Amulet of Yendor by doing the following: --More--", |
|
1764 "WW91IGNhbiBnZXQgYSBnZW51aW5lIEFtdWxldCBvZiBZZW5kb3IgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzogLS1Nb3JlLS0=" }, |
|
1765 { "You can protect yourself from black dragons by doing the following: --More--", |
|
1766 "WW91IGNhbiBwcm90ZWN0IHlvdXJzZWxmIGZyb20gYmxhY2sgZHJhZ29ucyBieSBkb2luZyB0aGUgZm9sbG93aW5nOiAtLU1vcmUtLQ==" }, |
|
1767 { "You can't get by the snake.", |
|
1768 "WW91IGNhbid0IGdldCBieSB0aGUgc25ha2Uu" }, |
|
1769 { "You feel like someone is pulling your leg.", |
|
1770 "WW91IGZlZWwgbGlrZSBzb21lb25lIGlzIHB1bGxpbmcgeW91ciBsZWcu" }, |
|
1771 { "You have to outwit the Sphynx or pay her.", |
|
1772 "WW91IGhhdmUgdG8gb3V0d2l0IHRoZSBTcGh5bnggb3IgcGF5IGhlci4=" }, |
|
1773 { "You hear the fortune cookie's hissing!", |
|
1774 "WW91IGhlYXIgdGhlIGZvcnR1bmUgY29va2llJ3MgaGlzc2luZyE=" }, |
|
1775 { "You may get rich selling letters, but beware of being blackmailed!", |
|
1776 "WW91IG1heSBnZXQgcmljaCBzZWxsaW5nIGxldHRlcnMsIGJ1dCBiZXdhcmUgb2YgYmVpbmcgYmxhY2ttYWlsZWQh" }, |
|
1777 { "You offend Shai-Hulud by sheathing your crysknife without having drawn blood.", |
|
1778 "WW91IG9mZmVuZCBTaGFpLUh1bHVkIGJ5IHNoZWF0aGluZyB5b3VyIGNyeXNrbmlmZSB3aXRob3V0IGhhdmluZyBkcmF3biBibG9vZC4=" }, |
|
1779 { "You swallowed the fortune!", |
|
1780 "WW91IHN3YWxsb3dlZCB0aGUgZm9ydHVuZSE=" }, |
|
1781 { "You want to regain strength? Two levels ahead is a guesthouse!", |
|
1782 "WW91IHdhbnQgdG8gcmVnYWluIHN0cmVuZ3RoPyBUd28gbGV2ZWxzIGFoZWFkIGlzIGEgZ3Vlc3Rob3VzZSE=" }, |
|
1783 { "You will encounter a tall, dark, and gruesome creature...", |
|
1784 "WW91IHdpbGwgZW5jb3VudGVyIGEgdGFsbCwgZGFyaywgYW5kIGdydWVzb21lIGNyZWF0dXJlLi4u" }, |
|
1785 |
|
1786 { "The End", "VGhlIEVuZA==" } |
|
1787 }; |
|
1788 |
|
1789 /* PL_Base64Encode, random strings */ |
|
1790 PRBool test_004(void) |
|
1791 { |
|
1792 int i; |
|
1793 char result[ 4096 ]; |
|
1794 |
|
1795 printf("Test 004 (PL_Base64Encode, random strings) ..."); fflush(stdout); |
|
1796 |
|
1797 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
1798 { |
|
1799 PRUint32 plen = PL_strlen(array[i].plaintext); |
|
1800 PRUint32 clen = ((plen + 2)/3)*4; |
|
1801 |
|
1802 char *rv = PL_Base64Encode(array[i].plaintext, plen, result); |
|
1803 |
|
1804 if( rv != result ) |
|
1805 { |
|
1806 printf("FAIL\n\t(%d): return value\n", i); |
|
1807 return PR_FALSE; |
|
1808 } |
|
1809 |
|
1810 if( 0 != PL_strncmp(result, array[i].cyphertext, clen) ) |
|
1811 { |
|
1812 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
|
1813 i, array[i].plaintext, array[i].cyphertext, clen, result); |
|
1814 return PR_FALSE; |
|
1815 } |
|
1816 } |
|
1817 |
|
1818 printf("PASS\n"); |
|
1819 return PR_TRUE; |
|
1820 } |
|
1821 |
|
1822 /* PL_Base64Encode, single characters, malloc */ |
|
1823 PRBool test_005(void) |
|
1824 { |
|
1825 PRUint32 a, b; |
|
1826 unsigned char plain[ 4 ]; |
|
1827 unsigned char cypher[ 5 ]; |
|
1828 char *rv; |
|
1829 |
|
1830 printf("Test 005 (PL_Base64Encode, single characters, malloc) ..."); fflush(stdout); |
|
1831 |
|
1832 plain[1] = plain[2] = plain[3] = (unsigned char)0; |
|
1833 cypher[2] = cypher[3] = (unsigned char)'='; |
|
1834 cypher[4] = (unsigned char)0; |
|
1835 |
|
1836 for( a = 0; a < 64; a++ ) |
|
1837 { |
|
1838 cypher[0] = base[a]; |
|
1839 |
|
1840 for( b = 0; b < 4; b++ ) |
|
1841 { |
|
1842 plain[0] = (unsigned char)(a * 4 + b); |
|
1843 cypher[1] = base[(b * 16)]; |
|
1844 |
|
1845 rv = PL_Base64Encode((char *)plain, 1, (char *)0); |
|
1846 if( (char *)0 == rv ) |
|
1847 { |
|
1848 printf("FAIL\n\t(%d, %d): no return value\n", a, b); |
|
1849 return PR_FALSE; |
|
1850 } |
|
1851 |
|
1852 if( 0 != PL_strcmp((char *)cypher, rv) ) |
|
1853 { |
|
1854 printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", |
|
1855 a, b, cypher, rv); |
|
1856 PR_DELETE(rv); |
|
1857 return PR_FALSE; |
|
1858 } |
|
1859 |
|
1860 PR_DELETE(rv); |
|
1861 } |
|
1862 } |
|
1863 |
|
1864 printf("PASS\n"); |
|
1865 return PR_TRUE; |
|
1866 } |
|
1867 |
|
1868 /* PL_Base64Encode, double characters, malloc */ |
|
1869 PRBool test_006(void) |
|
1870 { |
|
1871 PRUint32 a, b, c, d; |
|
1872 unsigned char plain[ 4 ]; |
|
1873 unsigned char cypher[ 5 ]; |
|
1874 char *rv; |
|
1875 |
|
1876 printf("Test 006 (PL_Base64Encode, double characters, malloc) ..."); fflush(stdout); |
|
1877 |
|
1878 plain[2] = plain[3] = (unsigned char)0; |
|
1879 cypher[3] = (unsigned char)'='; |
|
1880 cypher[4] = (unsigned char)0; |
|
1881 |
|
1882 for( a = 0; a < 64; a++ ) |
|
1883 { |
|
1884 cypher[0] = base[a]; |
|
1885 for( b = 0; b < 4; b++ ) |
|
1886 { |
|
1887 plain[0] = (a*4) + b; |
|
1888 for( c = 0; c < 16; c++ ) |
|
1889 { |
|
1890 cypher[1] = base[b*16 + c]; |
|
1891 for( d = 0; d < 16; d++ ) |
|
1892 { |
|
1893 plain[1] = c*16 + d; |
|
1894 cypher[2] = base[d*4]; |
|
1895 |
|
1896 rv = PL_Base64Encode((char *)plain, 2, (char *)0); |
|
1897 if( (char *)0 == rv ) |
|
1898 { |
|
1899 printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); |
|
1900 return PR_FALSE; |
|
1901 } |
|
1902 |
|
1903 if( 0 != PL_strcmp((char *)cypher, rv) ) |
|
1904 { |
|
1905 printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", |
|
1906 a, b, c, d, cypher, rv); |
|
1907 PR_DELETE(rv); |
|
1908 return PR_FALSE; |
|
1909 } |
|
1910 |
|
1911 PR_DELETE(rv); |
|
1912 } |
|
1913 } |
|
1914 } |
|
1915 } |
|
1916 |
|
1917 printf("PASS\n"); |
|
1918 return PR_TRUE; |
|
1919 } |
|
1920 |
|
1921 /* PL_Base64Encode, triple characters, malloc */ |
|
1922 PRBool test_007(void) |
|
1923 { |
|
1924 PRUint32 a, b, c, d, e, f; |
|
1925 unsigned char plain[ 4 ]; |
|
1926 unsigned char cypher[ 5 ]; |
|
1927 char *rv; |
|
1928 |
|
1929 printf("Test 007 (PL_Base64Encode, triple characters, malloc) ..."); fflush(stdout); |
|
1930 |
|
1931 cypher[4] = (unsigned char)0; |
|
1932 |
|
1933 for( a = 0; a < 64; a++ ) |
|
1934 { |
|
1935 cypher[0] = base[a]; |
|
1936 for( b = 0; b < 4; b++ ) |
|
1937 { |
|
1938 plain[0] = (a*4) + b; |
|
1939 for( c = 0; c < 16; c++ ) |
|
1940 { |
|
1941 cypher[1] = base[b*16 + c]; |
|
1942 for( d = 0; d < 16; d++ ) |
|
1943 { |
|
1944 plain[1] = c*16 + d; |
|
1945 for( e = 0; e < 4; e++ ) |
|
1946 { |
|
1947 cypher[2] = base[d*4 + e]; |
|
1948 for( f = 0; f < 64; f++ ) |
|
1949 { |
|
1950 plain[2] = e * 64 + f; |
|
1951 cypher[3] = base[f]; |
|
1952 |
|
1953 rv = PL_Base64Encode((char *)plain, 3, (char *)0); |
|
1954 if( (char *)0 == rv ) |
|
1955 { |
|
1956 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f); |
|
1957 return PR_FALSE; |
|
1958 } |
|
1959 |
|
1960 if( 0 != PL_strcmp((char *)cypher, rv) ) |
|
1961 { |
|
1962 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", |
|
1963 a, b, c, d, e, f, cypher, rv); |
|
1964 PR_DELETE(rv); |
|
1965 return PR_FALSE; |
|
1966 } |
|
1967 |
|
1968 PR_DELETE(rv); |
|
1969 } |
|
1970 } |
|
1971 } |
|
1972 } |
|
1973 } |
|
1974 } |
|
1975 |
|
1976 printf("PASS\n"); |
|
1977 return PR_TRUE; |
|
1978 } |
|
1979 |
|
1980 /* PL_Base64Encode, random strings, malloc */ |
|
1981 PRBool test_008(void) |
|
1982 { |
|
1983 int i; |
|
1984 |
|
1985 printf("Test 008 (PL_Base64Encode, random strings, malloc) ..."); fflush(stdout); |
|
1986 |
|
1987 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
1988 { |
|
1989 PRUint32 plen = PL_strlen(array[i].plaintext); |
|
1990 PRUint32 clen = ((plen + 2)/3)*4; |
|
1991 |
|
1992 char *rv = PL_Base64Encode(array[i].plaintext, plen, (char *)0); |
|
1993 |
|
1994 if( (char *)0 == rv ) |
|
1995 { |
|
1996 printf("FAIL\n\t(%d): no return value\n", i); |
|
1997 return PR_FALSE; |
|
1998 } |
|
1999 |
|
2000 if( 0 != PL_strcmp(rv, array[i].cyphertext) ) |
|
2001 { |
|
2002 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
|
2003 i, array[i].plaintext, array[i].cyphertext, rv); |
|
2004 return PR_FALSE; |
|
2005 } |
|
2006 } |
|
2007 |
|
2008 printf("PASS\n"); |
|
2009 return PR_TRUE; |
|
2010 } |
|
2011 |
|
2012 /* PL_Base64Decode, single characters */ |
|
2013 PRBool test_009(void) |
|
2014 { |
|
2015 PRUint32 a, b; |
|
2016 unsigned char plain[ 4 ]; |
|
2017 unsigned char cypher[ 5 ]; |
|
2018 char result[ 8 ]; |
|
2019 char *rv; |
|
2020 |
|
2021 printf("Test 009 (PL_Base64Decode, single characters, equals) ..."); fflush(stdout); |
|
2022 |
|
2023 plain[1] = plain[2] = plain[3] = (unsigned char)0; |
|
2024 cypher[2] = cypher[3] = (unsigned char)'='; |
|
2025 cypher[4] = (unsigned char)0; |
|
2026 |
|
2027 for( a = 0; a < 64; a++ ) |
|
2028 { |
|
2029 cypher[0] = base[a]; |
|
2030 |
|
2031 for( b = 0; b < 4; b++ ) |
|
2032 { |
|
2033 plain[0] = (unsigned char)(a * 4 + b); |
|
2034 cypher[1] = base[(b * 16)]; |
|
2035 |
|
2036 rv = PL_Base64Decode((char *)cypher, 4, result); |
|
2037 if( rv != result ) |
|
2038 { |
|
2039 printf("FAIL\n\t(%d, %d): return value\n", a, b); |
|
2040 return PR_FALSE; |
|
2041 } |
|
2042 |
|
2043 if( 0 != PL_strncmp((char *)plain, result, 1) ) |
|
2044 { |
|
2045 printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n", |
|
2046 a, b, plain, result); |
|
2047 return PR_FALSE; |
|
2048 } |
|
2049 } |
|
2050 } |
|
2051 |
|
2052 printf("PASS\n"); |
|
2053 return PR_TRUE; |
|
2054 } |
|
2055 |
|
2056 /* PL_Base64Decode, single characters */ |
|
2057 PRBool test_010(void) |
|
2058 { |
|
2059 PRUint32 a, b; |
|
2060 unsigned char plain[ 4 ]; |
|
2061 unsigned char cypher[ 5 ]; |
|
2062 char result[ 8 ]; |
|
2063 char *rv; |
|
2064 |
|
2065 printf("Test 010 (PL_Base64Decode, single characters, no equals) ..."); fflush(stdout); |
|
2066 |
|
2067 plain[1] = plain[2] = plain[3] = (unsigned char)0; |
|
2068 cypher[2] = cypher[3] = (unsigned char)0; |
|
2069 cypher[4] = (unsigned char)0; |
|
2070 |
|
2071 for( a = 0; a < 64; a++ ) |
|
2072 { |
|
2073 cypher[0] = base[a]; |
|
2074 |
|
2075 for( b = 0; b < 4; b++ ) |
|
2076 { |
|
2077 plain[0] = (unsigned char)(a * 4 + b); |
|
2078 cypher[1] = base[(b * 16)]; |
|
2079 |
|
2080 rv = PL_Base64Decode((char *)cypher, 2, result); |
|
2081 if( rv != result ) |
|
2082 { |
|
2083 printf("FAIL\n\t(%d, %d): return value\n", a, b); |
|
2084 return PR_FALSE; |
|
2085 } |
|
2086 |
|
2087 if( 0 != PL_strncmp((char *)plain, result, 1) ) |
|
2088 { |
|
2089 printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n", |
|
2090 a, b, plain, result); |
|
2091 return PR_FALSE; |
|
2092 } |
|
2093 } |
|
2094 } |
|
2095 |
|
2096 printf("PASS\n"); |
|
2097 return PR_TRUE; |
|
2098 } |
|
2099 |
|
2100 /* PL_Base64Decode, double characters */ |
|
2101 PRBool test_011(void) |
|
2102 { |
|
2103 PRUint32 a, b, c, d; |
|
2104 unsigned char plain[ 4 ]; |
|
2105 unsigned char cypher[ 5 ]; |
|
2106 char result[ 8 ]; |
|
2107 char *rv; |
|
2108 |
|
2109 printf("Test 011 (PL_Base64Decode, double characters, equals) ..."); fflush(stdout); |
|
2110 |
|
2111 plain[2] = plain[3] = (unsigned char)0; |
|
2112 cypher[3] = (unsigned char)'='; |
|
2113 cypher[4] = (unsigned char)0; |
|
2114 |
|
2115 for( a = 0; a < 64; a++ ) |
|
2116 { |
|
2117 cypher[0] = base[a]; |
|
2118 for( b = 0; b < 4; b++ ) |
|
2119 { |
|
2120 plain[0] = (a*4) + b; |
|
2121 for( c = 0; c < 16; c++ ) |
|
2122 { |
|
2123 cypher[1] = base[b*16 + c]; |
|
2124 for( d = 0; d < 16; d++ ) |
|
2125 { |
|
2126 plain[1] = c*16 + d; |
|
2127 cypher[2] = base[d*4]; |
|
2128 |
|
2129 rv = PL_Base64Decode((char *)cypher, 4, result); |
|
2130 if( rv != result ) |
|
2131 { |
|
2132 printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); |
|
2133 return PR_FALSE; |
|
2134 } |
|
2135 |
|
2136 if( 0 != PL_strncmp((char *)plain, result, 2) ) |
|
2137 { |
|
2138 printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n", |
|
2139 a, b, c, d, plain, result); |
|
2140 return PR_FALSE; |
|
2141 } |
|
2142 } |
|
2143 } |
|
2144 } |
|
2145 } |
|
2146 |
|
2147 printf("PASS\n"); |
|
2148 return PR_TRUE; |
|
2149 } |
|
2150 |
|
2151 /* PL_Base64Decode, double characters */ |
|
2152 PRBool test_012(void) |
|
2153 { |
|
2154 PRUint32 a, b, c, d; |
|
2155 unsigned char plain[ 4 ]; |
|
2156 unsigned char cypher[ 5 ]; |
|
2157 char result[ 8 ]; |
|
2158 char *rv; |
|
2159 |
|
2160 printf("Test 012 (PL_Base64Decode, double characters, no equals) ..."); fflush(stdout); |
|
2161 |
|
2162 plain[2] = plain[3] = (unsigned char)0; |
|
2163 cypher[3] = (unsigned char)0; |
|
2164 cypher[4] = (unsigned char)0; |
|
2165 |
|
2166 for( a = 0; a < 64; a++ ) |
|
2167 { |
|
2168 cypher[0] = base[a]; |
|
2169 for( b = 0; b < 4; b++ ) |
|
2170 { |
|
2171 plain[0] = (a*4) + b; |
|
2172 for( c = 0; c < 16; c++ ) |
|
2173 { |
|
2174 cypher[1] = base[b*16 + c]; |
|
2175 for( d = 0; d < 16; d++ ) |
|
2176 { |
|
2177 plain[1] = c*16 + d; |
|
2178 cypher[2] = base[d*4]; |
|
2179 |
|
2180 rv = PL_Base64Decode((char *)cypher, 3, result); |
|
2181 if( rv != result ) |
|
2182 { |
|
2183 printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); |
|
2184 return PR_FALSE; |
|
2185 } |
|
2186 |
|
2187 if( 0 != PL_strncmp((char *)plain, result, 2) ) |
|
2188 { |
|
2189 printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n", |
|
2190 a, b, c, d, cypher, result); |
|
2191 return PR_FALSE; |
|
2192 } |
|
2193 } |
|
2194 } |
|
2195 } |
|
2196 } |
|
2197 |
|
2198 printf("PASS\n"); |
|
2199 return PR_TRUE; |
|
2200 } |
|
2201 |
|
2202 /* PL_Base64Decode, triple characters */ |
|
2203 PRBool test_013(void) |
|
2204 { |
|
2205 PRUint32 a, b, c, d, e, f; |
|
2206 unsigned char plain[ 4 ]; |
|
2207 unsigned char cypher[ 5 ]; |
|
2208 char result[ 8 ]; |
|
2209 char *rv; |
|
2210 |
|
2211 printf("Test 013 (PL_Base64Decode, triple characters) ..."); fflush(stdout); |
|
2212 |
|
2213 cypher[4] = (unsigned char)0; |
|
2214 |
|
2215 for( a = 0; a < 64; a++ ) |
|
2216 { |
|
2217 cypher[0] = base[a]; |
|
2218 for( b = 0; b < 4; b++ ) |
|
2219 { |
|
2220 plain[0] = (a*4) + b; |
|
2221 for( c = 0; c < 16; c++ ) |
|
2222 { |
|
2223 cypher[1] = base[b*16 + c]; |
|
2224 for( d = 0; d < 16; d++ ) |
|
2225 { |
|
2226 plain[1] = c*16 + d; |
|
2227 for( e = 0; e < 4; e++ ) |
|
2228 { |
|
2229 cypher[2] = base[d*4 + e]; |
|
2230 for( f = 0; f < 64; f++ ) |
|
2231 { |
|
2232 plain[2] = e * 64 + f; |
|
2233 cypher[3] = base[f]; |
|
2234 |
|
2235 rv = PL_Base64Decode((char *)cypher, 4, result); |
|
2236 if( rv != result ) |
|
2237 { |
|
2238 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f); |
|
2239 return PR_FALSE; |
|
2240 } |
|
2241 |
|
2242 if( 0 != PL_strncmp((char *)plain, result, 3) ) |
|
2243 { |
|
2244 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n", |
|
2245 a, b, c, d, e, f, plain, result); |
|
2246 return PR_FALSE; |
|
2247 } |
|
2248 } |
|
2249 } |
|
2250 } |
|
2251 } |
|
2252 } |
|
2253 } |
|
2254 |
|
2255 printf("PASS\n"); |
|
2256 return PR_TRUE; |
|
2257 } |
|
2258 |
|
2259 /* PL_Base64Decode, random strings */ |
|
2260 PRBool test_014(void) |
|
2261 { |
|
2262 int i; |
|
2263 char result[ 4096 ]; |
|
2264 |
|
2265 printf("Test 014 (PL_Base64Decode, random strings, equals) ..."); fflush(stdout); |
|
2266 |
|
2267 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2268 { |
|
2269 PRUint32 clen = PL_strlen(array[i].cyphertext); |
|
2270 PRUint32 plen = (clen * 3) / 4; |
|
2271 |
|
2272 char *rv = PL_Base64Decode(array[i].cyphertext, clen, result); |
|
2273 |
|
2274 if( rv != result ) |
|
2275 { |
|
2276 printf("FAIL\n\t(%d): return value\n", i); |
|
2277 return PR_FALSE; |
|
2278 } |
|
2279 |
|
2280 if( 0 == (clen & 3) ) |
|
2281 { |
|
2282 if( '=' == array[i].cyphertext[clen-1] ) |
|
2283 { |
|
2284 if( '=' == array[i].cyphertext[clen-2] ) |
|
2285 { |
|
2286 plen -= 2; |
|
2287 } |
|
2288 else |
|
2289 { |
|
2290 plen -= 1; |
|
2291 } |
|
2292 } |
|
2293 } |
|
2294 |
|
2295 if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
|
2296 { |
|
2297 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
|
2298 i, array[i].cyphertext, array[i].plaintext, plen, result); |
|
2299 return PR_FALSE; |
|
2300 } |
|
2301 } |
|
2302 |
|
2303 printf("PASS\n"); |
|
2304 return PR_TRUE; |
|
2305 } |
|
2306 |
|
2307 /* PL_Base64Decode, random strings */ |
|
2308 PRBool test_015(void) |
|
2309 { |
|
2310 int i; |
|
2311 char buffer[ 4096 ]; |
|
2312 char result[ 4096 ]; |
|
2313 char *rv; |
|
2314 |
|
2315 printf("Test 015 (PL_Base64Decode, random strings, no equals) ..."); fflush(stdout); |
|
2316 |
|
2317 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2318 { |
|
2319 PRUint32 clen, plen; |
|
2320 |
|
2321 PL_strcpy(buffer, array[i].cyphertext); |
|
2322 clen = PL_strlen(buffer); |
|
2323 |
|
2324 if( 0 == (clen & 3) ) |
|
2325 { |
|
2326 if( '=' == buffer[clen-1] ) |
|
2327 { |
|
2328 if( '=' == buffer[clen-2] ) |
|
2329 { |
|
2330 buffer[clen-2] = buffer[clen-1] = (char)0; |
|
2331 clen -= 2; |
|
2332 } |
|
2333 else |
|
2334 { |
|
2335 buffer[clen-1] = (char)0; |
|
2336 clen -= 1; |
|
2337 } |
|
2338 } |
|
2339 } |
|
2340 |
|
2341 plen = (clen * 3) / 4; |
|
2342 |
|
2343 rv = PL_Base64Decode(buffer, clen, result); |
|
2344 |
|
2345 if( rv != result ) |
|
2346 { |
|
2347 printf("FAIL\n\t(%d): return value\n", i); |
|
2348 return PR_FALSE; |
|
2349 } |
|
2350 |
|
2351 if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
|
2352 { |
|
2353 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
|
2354 i, array[i].cyphertext, array[i].plaintext, plen, result); |
|
2355 return PR_FALSE; |
|
2356 } |
|
2357 } |
|
2358 |
|
2359 printf("PASS\n"); |
|
2360 return PR_TRUE; |
|
2361 } |
|
2362 |
|
2363 /* PL_Base64Decode, single characters, malloc */ |
|
2364 PRBool test_016(void) |
|
2365 { |
|
2366 PRUint32 a, b; |
|
2367 unsigned char plain[ 4 ]; |
|
2368 unsigned char cypher[ 5 ]; |
|
2369 char *rv; |
|
2370 |
|
2371 printf("Test 016 (PL_Base64Decode, single characters, equals, malloc) ..."); fflush(stdout); |
|
2372 |
|
2373 plain[1] = plain[2] = plain[3] = (unsigned char)0; |
|
2374 cypher[2] = cypher[3] = (unsigned char)'='; |
|
2375 cypher[4] = (unsigned char)0; |
|
2376 |
|
2377 for( a = 0; a < 64; a++ ) |
|
2378 { |
|
2379 cypher[0] = base[a]; |
|
2380 |
|
2381 for( b = 0; b < 4; b++ ) |
|
2382 { |
|
2383 plain[0] = (unsigned char)(a * 4 + b); |
|
2384 cypher[1] = base[(b * 16)]; |
|
2385 |
|
2386 rv = PL_Base64Decode((char *)cypher, 4, (char *)0); |
|
2387 if( (char *)0 == rv ) |
|
2388 { |
|
2389 printf("FAIL\n\t(%d, %d): no return value\n", a, b); |
|
2390 return PR_FALSE; |
|
2391 } |
|
2392 |
|
2393 if( 0 != PL_strcmp((char *)plain, rv) ) |
|
2394 { |
|
2395 printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", |
|
2396 a, b, plain, rv); |
|
2397 PR_DELETE(rv); |
|
2398 return PR_FALSE; |
|
2399 } |
|
2400 |
|
2401 PR_DELETE(rv); |
|
2402 } |
|
2403 } |
|
2404 |
|
2405 printf("PASS\n"); |
|
2406 return PR_TRUE; |
|
2407 } |
|
2408 |
|
2409 /* PL_Base64Decode, single characters, malloc */ |
|
2410 PRBool test_017(void) |
|
2411 { |
|
2412 PRUint32 a, b; |
|
2413 unsigned char plain[ 4 ]; |
|
2414 unsigned char cypher[ 5 ]; |
|
2415 char *rv; |
|
2416 |
|
2417 printf("Test 017 (PL_Base64Decode, single characters, no equals, malloc) ..."); fflush(stdout); |
|
2418 |
|
2419 plain[1] = plain[2] = plain[3] = (unsigned char)0; |
|
2420 cypher[2] = cypher[3] = (unsigned char)0; |
|
2421 cypher[4] = (unsigned char)0; |
|
2422 |
|
2423 for( a = 0; a < 64; a++ ) |
|
2424 { |
|
2425 cypher[0] = base[a]; |
|
2426 |
|
2427 for( b = 0; b < 4; b++ ) |
|
2428 { |
|
2429 plain[0] = (unsigned char)(a * 4 + b); |
|
2430 cypher[1] = base[(b * 16)]; |
|
2431 |
|
2432 rv = PL_Base64Decode((char *)cypher, 2, (char *)0); |
|
2433 if( (char *)0 == rv ) |
|
2434 { |
|
2435 printf("FAIL\n\t(%d, %d): no return value\n", a, b); |
|
2436 return PR_FALSE; |
|
2437 } |
|
2438 |
|
2439 if( 0 != PL_strcmp((char *)plain, rv) ) |
|
2440 { |
|
2441 printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", |
|
2442 a, b, plain, rv); |
|
2443 PR_DELETE(rv); |
|
2444 return PR_FALSE; |
|
2445 } |
|
2446 |
|
2447 PR_DELETE(rv); |
|
2448 } |
|
2449 } |
|
2450 |
|
2451 printf("PASS\n"); |
|
2452 return PR_TRUE; |
|
2453 } |
|
2454 |
|
2455 /* PL_Base64Decode, double characters, malloc */ |
|
2456 PRBool test_018(void) |
|
2457 { |
|
2458 PRUint32 a, b, c, d; |
|
2459 unsigned char plain[ 4 ]; |
|
2460 unsigned char cypher[ 5 ]; |
|
2461 char *rv; |
|
2462 |
|
2463 printf("Test 018 (PL_Base64Decode, double characters, equals, malloc) ..."); fflush(stdout); |
|
2464 |
|
2465 plain[2] = plain[3] = (unsigned char)0; |
|
2466 cypher[3] = (unsigned char)'='; |
|
2467 cypher[4] = (unsigned char)0; |
|
2468 |
|
2469 for( a = 0; a < 64; a++ ) |
|
2470 { |
|
2471 cypher[0] = base[a]; |
|
2472 for( b = 0; b < 4; b++ ) |
|
2473 { |
|
2474 plain[0] = (a*4) + b; |
|
2475 for( c = 0; c < 16; c++ ) |
|
2476 { |
|
2477 cypher[1] = base[b*16 + c]; |
|
2478 for( d = 0; d < 16; d++ ) |
|
2479 { |
|
2480 plain[1] = c*16 + d; |
|
2481 cypher[2] = base[d*4]; |
|
2482 |
|
2483 rv = PL_Base64Decode((char *)cypher, 4, (char *)0); |
|
2484 if( (char *)0 == rv ) |
|
2485 { |
|
2486 printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); |
|
2487 return PR_FALSE; |
|
2488 } |
|
2489 |
|
2490 if( 0 != PL_strcmp((char *)plain, rv) ) |
|
2491 { |
|
2492 printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", |
|
2493 a, b, c, d, plain, rv); |
|
2494 PR_DELETE(rv); |
|
2495 return PR_FALSE; |
|
2496 } |
|
2497 |
|
2498 PR_DELETE(rv); |
|
2499 } |
|
2500 } |
|
2501 } |
|
2502 } |
|
2503 |
|
2504 printf("PASS\n"); |
|
2505 return PR_TRUE; |
|
2506 } |
|
2507 |
|
2508 /* PL_Base64Decode, double characters, malloc */ |
|
2509 PRBool test_019(void) |
|
2510 { |
|
2511 PRUint32 a, b, c, d; |
|
2512 unsigned char plain[ 4 ]; |
|
2513 unsigned char cypher[ 5 ]; |
|
2514 char *rv; |
|
2515 |
|
2516 printf("Test 019 (PL_Base64Decode, double characters, no equals, malloc) ..."); fflush(stdout); |
|
2517 |
|
2518 plain[2] = plain[3] = (unsigned char)0; |
|
2519 cypher[3] = (unsigned char)0; |
|
2520 cypher[4] = (unsigned char)0; |
|
2521 |
|
2522 for( a = 0; a < 64; a++ ) |
|
2523 { |
|
2524 cypher[0] = base[a]; |
|
2525 for( b = 0; b < 4; b++ ) |
|
2526 { |
|
2527 plain[0] = (a*4) + b; |
|
2528 for( c = 0; c < 16; c++ ) |
|
2529 { |
|
2530 cypher[1] = base[b*16 + c]; |
|
2531 for( d = 0; d < 16; d++ ) |
|
2532 { |
|
2533 plain[1] = c*16 + d; |
|
2534 cypher[2] = base[d*4]; |
|
2535 |
|
2536 rv = PL_Base64Decode((char *)cypher, 3, (char *)0); |
|
2537 if( (char *)0 == rv ) |
|
2538 { |
|
2539 printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); |
|
2540 return PR_FALSE; |
|
2541 } |
|
2542 |
|
2543 if( 0 != PL_strcmp((char *)plain, rv) ) |
|
2544 { |
|
2545 printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", |
|
2546 a, b, c, d, cypher, rv); |
|
2547 PR_DELETE(rv); |
|
2548 return PR_FALSE; |
|
2549 } |
|
2550 |
|
2551 PR_DELETE(rv); |
|
2552 } |
|
2553 } |
|
2554 } |
|
2555 } |
|
2556 |
|
2557 printf("PASS\n"); |
|
2558 return PR_TRUE; |
|
2559 } |
|
2560 |
|
2561 /* PL_Base64Decode, triple characters, malloc */ |
|
2562 PRBool test_020(void) |
|
2563 { |
|
2564 PRUint32 a, b, c, d, e, f; |
|
2565 unsigned char plain[ 4 ]; |
|
2566 unsigned char cypher[ 5 ]; |
|
2567 char *rv; |
|
2568 |
|
2569 printf("Test 020 (PL_Base64Decode, triple characters, malloc) ..."); fflush(stdout); |
|
2570 |
|
2571 cypher[4] = (unsigned char)0; |
|
2572 plain[3] = (unsigned char)0; |
|
2573 |
|
2574 for( a = 0; a < 64; a++ ) |
|
2575 { |
|
2576 cypher[0] = base[a]; |
|
2577 for( b = 0; b < 4; b++ ) |
|
2578 { |
|
2579 plain[0] = (a*4) + b; |
|
2580 for( c = 0; c < 16; c++ ) |
|
2581 { |
|
2582 cypher[1] = base[b*16 + c]; |
|
2583 for( d = 0; d < 16; d++ ) |
|
2584 { |
|
2585 plain[1] = c*16 + d; |
|
2586 for( e = 0; e < 4; e++ ) |
|
2587 { |
|
2588 cypher[2] = base[d*4 + e]; |
|
2589 for( f = 0; f < 64; f++ ) |
|
2590 { |
|
2591 plain[2] = e * 64 + f; |
|
2592 cypher[3] = base[f]; |
|
2593 |
|
2594 rv = PL_Base64Decode((char *)cypher, 4, (char *)0); |
|
2595 if( (char *)0 == rv ) |
|
2596 { |
|
2597 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f); |
|
2598 return PR_FALSE; |
|
2599 } |
|
2600 |
|
2601 if( 0 != PL_strcmp((char *)plain, rv) ) |
|
2602 { |
|
2603 printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n", |
|
2604 a, b, c, d, e, f, plain, rv); |
|
2605 PR_DELETE(rv); |
|
2606 return PR_FALSE; |
|
2607 } |
|
2608 |
|
2609 PR_DELETE(rv); |
|
2610 } |
|
2611 } |
|
2612 } |
|
2613 } |
|
2614 } |
|
2615 } |
|
2616 |
|
2617 printf("PASS\n"); |
|
2618 return PR_TRUE; |
|
2619 } |
|
2620 |
|
2621 /* PL_Base64Decode, random strings, malloc */ |
|
2622 PRBool test_021(void) |
|
2623 { |
|
2624 int i; |
|
2625 |
|
2626 printf("Test 021 (PL_Base64Decode, random strings, equals, malloc) ..."); fflush(stdout); |
|
2627 |
|
2628 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2629 { |
|
2630 PRUint32 clen = PL_strlen(array[i].cyphertext); |
|
2631 |
|
2632 char *rv = PL_Base64Decode(array[i].cyphertext, clen, (char *)0); |
|
2633 |
|
2634 if( (char *)0 == rv ) |
|
2635 { |
|
2636 printf("FAIL\n\t(%d): no return value\n", i); |
|
2637 return PR_FALSE; |
|
2638 } |
|
2639 |
|
2640 if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
|
2641 { |
|
2642 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
|
2643 i, array[i].cyphertext, array[i].plaintext, rv); |
|
2644 PR_DELETE(rv); |
|
2645 return PR_FALSE; |
|
2646 } |
|
2647 |
|
2648 PR_DELETE(rv); |
|
2649 } |
|
2650 |
|
2651 printf("PASS\n"); |
|
2652 return PR_TRUE; |
|
2653 } |
|
2654 |
|
2655 /* PL_Base64Encode, random strings, malloc */ |
|
2656 PRBool test_022(void) |
|
2657 { |
|
2658 int i; |
|
2659 char buffer[ 4096 ]; |
|
2660 char *rv; |
|
2661 |
|
2662 printf("Test 022 (PL_Base64Decode, random strings, no equals, malloc) ..."); fflush(stdout); |
|
2663 |
|
2664 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2665 { |
|
2666 PRUint32 clen; |
|
2667 |
|
2668 PL_strcpy(buffer, array[i].cyphertext); |
|
2669 clen = PL_strlen(buffer); |
|
2670 |
|
2671 if( 0 == (clen & 3) ) |
|
2672 { |
|
2673 if( '=' == buffer[clen-1] ) |
|
2674 { |
|
2675 if( '=' == buffer[clen-2] ) |
|
2676 { |
|
2677 buffer[clen-2] = buffer[clen-1] = (char)0; |
|
2678 clen -= 2; |
|
2679 } |
|
2680 else |
|
2681 { |
|
2682 buffer[clen-1] = (char)0; |
|
2683 clen -= 1; |
|
2684 } |
|
2685 } |
|
2686 } |
|
2687 |
|
2688 rv = PL_Base64Decode(buffer, clen, (char *)0); |
|
2689 |
|
2690 if( (char *)0 == rv ) |
|
2691 { |
|
2692 printf("FAIL\n\t(%d): no return value\n", i); |
|
2693 return PR_FALSE; |
|
2694 } |
|
2695 |
|
2696 if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
|
2697 { |
|
2698 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
|
2699 i, array[i].cyphertext, array[i].plaintext, rv); |
|
2700 return PR_FALSE; |
|
2701 } |
|
2702 } |
|
2703 |
|
2704 printf("PASS\n"); |
|
2705 return PR_TRUE; |
|
2706 } |
|
2707 |
|
2708 /* PL_Base64Encode, random strings */ |
|
2709 PRBool test_023(void) |
|
2710 { |
|
2711 int i; |
|
2712 char result[ 4096 ]; |
|
2713 |
|
2714 printf("Test 023 (PL_Base64Encode, random strings, strlen) ..."); fflush(stdout); |
|
2715 |
|
2716 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2717 { |
|
2718 PRUint32 plen = PL_strlen(array[i].plaintext); |
|
2719 PRUint32 clen = ((plen + 2)/3)*4; |
|
2720 |
|
2721 char *rv = PL_Base64Encode(array[i].plaintext, 0, result); |
|
2722 |
|
2723 if( rv != result ) |
|
2724 { |
|
2725 printf("FAIL\n\t(%d): return value\n", i); |
|
2726 return PR_FALSE; |
|
2727 } |
|
2728 |
|
2729 if( 0 != PL_strncmp(result, array[i].cyphertext, clen) ) |
|
2730 { |
|
2731 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
|
2732 i, array[i].plaintext, array[i].cyphertext, clen, result); |
|
2733 return PR_FALSE; |
|
2734 } |
|
2735 } |
|
2736 |
|
2737 printf("PASS\n"); |
|
2738 return PR_TRUE; |
|
2739 } |
|
2740 |
|
2741 /* PL_Base64Encode, random strings, malloc */ |
|
2742 PRBool test_024(void) |
|
2743 { |
|
2744 int i; |
|
2745 |
|
2746 printf("Test 024 (PL_Base64Encode, random strings, malloc, strlen) ..."); fflush(stdout); |
|
2747 |
|
2748 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2749 { |
|
2750 PRUint32 plen = PL_strlen(array[i].plaintext); |
|
2751 PRUint32 clen = ((plen + 2)/3)*4; |
|
2752 |
|
2753 char *rv = PL_Base64Encode(array[i].plaintext, 0, (char *)0); |
|
2754 |
|
2755 if( (char *)0 == rv ) |
|
2756 { |
|
2757 printf("FAIL\n\t(%d): no return value\n", i); |
|
2758 return PR_FALSE; |
|
2759 } |
|
2760 |
|
2761 if( 0 != PL_strcmp(rv, array[i].cyphertext) ) |
|
2762 { |
|
2763 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
|
2764 i, array[i].plaintext, array[i].cyphertext, rv); |
|
2765 return PR_FALSE; |
|
2766 } |
|
2767 } |
|
2768 |
|
2769 printf("PASS\n"); |
|
2770 return PR_TRUE; |
|
2771 } |
|
2772 |
|
2773 /* PL_Base64Decode, random strings */ |
|
2774 PRBool test_025(void) |
|
2775 { |
|
2776 int i; |
|
2777 char result[ 4096 ]; |
|
2778 |
|
2779 printf("Test 025 (PL_Base64Decode, random strings, equals, strlen) ..."); fflush(stdout); |
|
2780 |
|
2781 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2782 { |
|
2783 PRUint32 clen = PL_strlen(array[i].cyphertext); |
|
2784 PRUint32 plen = (clen * 3) / 4; |
|
2785 |
|
2786 char *rv = PL_Base64Decode(array[i].cyphertext, 0, result); |
|
2787 |
|
2788 if( rv != result ) |
|
2789 { |
|
2790 printf("FAIL\n\t(%d): return value\n", i); |
|
2791 return PR_FALSE; |
|
2792 } |
|
2793 |
|
2794 if( 0 == (clen & 3) ) |
|
2795 { |
|
2796 if( '=' == array[i].cyphertext[clen-1] ) |
|
2797 { |
|
2798 if( '=' == array[i].cyphertext[clen-2] ) |
|
2799 { |
|
2800 plen -= 2; |
|
2801 } |
|
2802 else |
|
2803 { |
|
2804 plen -= 1; |
|
2805 } |
|
2806 } |
|
2807 } |
|
2808 |
|
2809 if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
|
2810 { |
|
2811 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
|
2812 i, array[i].cyphertext, array[i].plaintext, plen, result); |
|
2813 return PR_FALSE; |
|
2814 } |
|
2815 } |
|
2816 |
|
2817 printf("PASS\n"); |
|
2818 return PR_TRUE; |
|
2819 } |
|
2820 |
|
2821 /* PL_Base64Decode, random strings */ |
|
2822 PRBool test_026(void) |
|
2823 { |
|
2824 int i; |
|
2825 char buffer[ 4096 ]; |
|
2826 char result[ 4096 ]; |
|
2827 char *rv; |
|
2828 |
|
2829 printf("Test 026 (PL_Base64Decode, random strings, no equals, strlen) ..."); fflush(stdout); |
|
2830 |
|
2831 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2832 { |
|
2833 PRUint32 clen, plen; |
|
2834 |
|
2835 PL_strcpy(buffer, array[i].cyphertext); |
|
2836 clen = PL_strlen(buffer); |
|
2837 |
|
2838 if( 0 == (clen & 3) ) |
|
2839 { |
|
2840 if( '=' == buffer[clen-1] ) |
|
2841 { |
|
2842 if( '=' == buffer[clen-2] ) |
|
2843 { |
|
2844 buffer[clen-2] = buffer[clen-1] = (char)0; |
|
2845 clen -= 2; |
|
2846 } |
|
2847 else |
|
2848 { |
|
2849 buffer[clen-1] = (char)0; |
|
2850 clen -= 1; |
|
2851 } |
|
2852 } |
|
2853 } |
|
2854 |
|
2855 plen = (clen * 3) / 4; |
|
2856 |
|
2857 rv = PL_Base64Decode(buffer, 0, result); |
|
2858 |
|
2859 if( rv != result ) |
|
2860 { |
|
2861 printf("FAIL\n\t(%d): return value\n", i); |
|
2862 return PR_FALSE; |
|
2863 } |
|
2864 |
|
2865 if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
|
2866 { |
|
2867 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
|
2868 i, array[i].cyphertext, array[i].plaintext, plen, result); |
|
2869 return PR_FALSE; |
|
2870 } |
|
2871 } |
|
2872 |
|
2873 printf("PASS\n"); |
|
2874 return PR_TRUE; |
|
2875 } |
|
2876 |
|
2877 /* PL_Base64Decode, random strings, malloc */ |
|
2878 PRBool test_027(void) |
|
2879 { |
|
2880 int i; |
|
2881 |
|
2882 printf("Test 027 (PL_Base64Decode, random strings, equals, malloc, strlen) ..."); fflush(stdout); |
|
2883 |
|
2884 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2885 { |
|
2886 PRUint32 clen = PL_strlen(array[i].cyphertext); |
|
2887 |
|
2888 char *rv = PL_Base64Decode(array[i].cyphertext, 0, (char *)0); |
|
2889 |
|
2890 if( (char *)0 == rv ) |
|
2891 { |
|
2892 printf("FAIL\n\t(%d): no return value\n", i); |
|
2893 return PR_FALSE; |
|
2894 } |
|
2895 |
|
2896 if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
|
2897 { |
|
2898 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
|
2899 i, array[i].cyphertext, array[i].plaintext, rv); |
|
2900 PR_DELETE(rv); |
|
2901 return PR_FALSE; |
|
2902 } |
|
2903 |
|
2904 PR_DELETE(rv); |
|
2905 } |
|
2906 |
|
2907 printf("PASS\n"); |
|
2908 return PR_TRUE; |
|
2909 } |
|
2910 |
|
2911 /* PL_Base64Encode, random strings, malloc */ |
|
2912 PRBool test_028(void) |
|
2913 { |
|
2914 int i; |
|
2915 char buffer[ 4096 ]; |
|
2916 char *rv; |
|
2917 |
|
2918 printf("Test 028 (PL_Base64Decode, random strings, no equals, malloc, strlen) ..."); fflush(stdout); |
|
2919 |
|
2920 for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
|
2921 { |
|
2922 PRUint32 clen; |
|
2923 |
|
2924 PL_strcpy(buffer, array[i].cyphertext); |
|
2925 clen = PL_strlen(buffer); |
|
2926 |
|
2927 if( 0 == (clen & 3) ) |
|
2928 { |
|
2929 if( '=' == buffer[clen-1] ) |
|
2930 { |
|
2931 if( '=' == buffer[clen-2] ) |
|
2932 { |
|
2933 buffer[clen-2] = buffer[clen-1] = (char)0; |
|
2934 clen -= 2; |
|
2935 } |
|
2936 else |
|
2937 { |
|
2938 buffer[clen-1] = (char)0; |
|
2939 clen -= 1; |
|
2940 } |
|
2941 } |
|
2942 } |
|
2943 |
|
2944 rv = PL_Base64Decode(buffer, 0, (char *)0); |
|
2945 |
|
2946 if( (char *)0 == rv ) |
|
2947 { |
|
2948 printf("FAIL\n\t(%d): no return value\n", i); |
|
2949 return PR_FALSE; |
|
2950 } |
|
2951 |
|
2952 if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
|
2953 { |
|
2954 printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
|
2955 i, array[i].cyphertext, array[i].plaintext, rv); |
|
2956 return PR_FALSE; |
|
2957 } |
|
2958 } |
|
2959 |
|
2960 printf("PASS\n"); |
|
2961 return PR_TRUE; |
|
2962 } |
|
2963 |
|
2964 int |
|
2965 main |
|
2966 ( |
|
2967 int argc, |
|
2968 char *argv[] |
|
2969 ) |
|
2970 { |
|
2971 printf("Testing the Portable Library base64 functions:\n"); |
|
2972 printf("(warning: the \"triple characters\" tests are slow)\n"); |
|
2973 |
|
2974 if( 1 |
|
2975 && test_001() |
|
2976 && test_002() |
|
2977 && test_003() |
|
2978 && test_004() |
|
2979 && test_005() |
|
2980 && test_006() |
|
2981 && test_007() |
|
2982 && test_008() |
|
2983 && test_009() |
|
2984 && test_010() |
|
2985 && test_011() |
|
2986 && test_012() |
|
2987 && test_013() |
|
2988 && test_014() |
|
2989 && test_015() |
|
2990 && test_016() |
|
2991 && test_017() |
|
2992 && test_018() |
|
2993 && test_019() |
|
2994 && test_020() |
|
2995 && test_021() |
|
2996 && test_022() |
|
2997 && test_023() |
|
2998 && test_024() |
|
2999 && test_025() |
|
3000 && test_026() |
|
3001 && test_027() |
|
3002 && test_028() |
|
3003 ) |
|
3004 { |
|
3005 printf("Suite passed.\n"); |
|
3006 return 0; |
|
3007 } |
|
3008 else |
|
3009 { |
|
3010 printf("Suite failed.\n"); |
|
3011 return 1; |
|
3012 } |
|
3013 |
|
3014 /*NOTREACHED*/ |
|
3015 } |