d7ef403c047b0eefd5bddbe8aafa40de29678d3f
[elisp/flim.git] / TESTPAT
1 ;----------------------------------------------------------------------------
2 ;-------- This sequece of HYPHEN-MINUS is 76 bytes long. --------------------
3 ;----------------------------------------------------------------------------
4
5 ;;; options:
6 ;;encode-sticked-comment-as-atom    ; violate the policy preserving structures
7 ;;ignore-75bytes-limit              ; violate RFC2047
8 ;;ignore-76bytes-limit              ; violate RFC2047
9 ;;permit-sticked-comment            ; violate RFC2047
10 ;;permit-sticked-special            ; violate RFC2047
11 ;;separate-sticked-comment          ; violate the policy preserving absence of space
12 ;;separate-sticked-special          ; violate the policy preserving absence of space
13 ;;zero-characters-encoded-word-hack ; violate common sense (very tricky)
14 ;;embedded-encoded-word            ; violate character sequence semantics
15 ;;separate-sticked-tokens-for-fold  ; violate the policy preserving absence of space
16 ;;encode-long-ascii-string-for-fold ; violate the policy preserving US-ASCII string
17 ;;divide-atom-for-fold             ; violate tne policy preserving absence of space
18
19 ;;; test driver
20
21 ;;; FLIM or FLAM
22 '(progn
23 (require 'mime)
24 (require 'ew-line)
25
26 (if (< max-specpdl-size 1000)
27   (setq max-specpdl-size 1000))
28
29 (defun decode-test (src dsts &rest opts)
30   (setq src (ew-crlf-to-lf src))
31   (setq eword-lexical-analyze-cache nil)
32   (setq eword-decode-sticked-encoded-word
33     (or (memq 'permit-sticked-comment opts)
34         (memq 'permit-sticked-special opts)))
35   (setq eword-decode-quoted-encoded-word nil)
36   (with-temp-buffer
37     (insert src "\n" mail-header-separator)
38     (eword-decode-header 'us-ascii mail-header-separator)
39     (goto-char (point-min))
40     (std11-narrow-to-header mail-header-separator)
41     (std11-field-end)
42     (let ((result (std11-unfold-string
43                    (buffer-substring (point-min) (point)))))
44       (if (member result dsts) t result))))
45
46 (defun encode-test (src dsts &rest opts)
47   (setq eword-lexical-analyze-cache nil)
48   (setq eword-decode-sticked-encoded-word nil)
49   (setq eword-decode-quoted-encoded-word nil)
50   (with-temp-buffer
51     (insert src "\n" mail-header-separator)
52     (goto-char (point-min))
53     (eword-encode-header 'us-ascii)
54     (goto-char (point-min))
55     (std11-narrow-to-header mail-header-separator)
56     (std11-field-end)
57     (let ((result (buffer-substring (point-min) (point))))
58       (if (member result dsts) t result))))
59 )
60
61 ;;; EW
62 (progn
63 (require 'ew-dec)
64 (require 'ew-line)
65
66 (defun decode-test (src dsts &rest opts)
67   (setq ew-decode-field-cache-buf nil)
68   (let ((ew-decode-sticked-encoded-word nil)
69         (ew-decode-quoted-encoded-word nil)
70         (ew-ignore-75bytes-limit (memq 'ignore-75bytes-limit opts))
71         (ew-ignore-76bytes-limit (memq 'ignore-76bytes-limit opts))
72         (ew-permit-sticked-comment (memq 'permit-sticked-comment opts))
73         (ew-permit-sticked-special (memq 'permit-sticked-special opts)))
74     (string-match "\\`[^:]*:" src)
75     (let* ((field-name (substring src
76                                   (match-beginning 0)
77                                   (1- (match-end 0))))
78            (field-body (substring src (match-end 0)))
79            (result (ew-crlf-unfold
80                     (concat field-name ":"
81                             (ew-decode-field field-name field-body)))))
82       (if (member result dsts) t result))))
83
84 (defun encode-test (src dsts &rest opts)
85   nil)
86 )
87
88 ;;;
89
90 (setq decode-succ-count 0)
91 (setq decode-all-count 0)
92 (defun decode (src dsts &rest opts)
93   (if (stringp dsts) (setq dsts (list dsts)))
94   (setq decode-all-count (1+ decode-all-count))
95   (let ((res (condition-case nil
96                (apply 'decode-test src dsts opts)
97                (error nil))))
98     (if (eq res t)
99       (progn
100         (setq decode-succ-count (1+ decode-succ-count))
101         (insert "\n'dsucc"))
102       (insert (format "\n%S\n'dfail" res)))
103     res))
104
105 (setq encode-succ-count 0)
106 (setq encode-all-count 0)
107 (defun encode (src dsts &rest opts)
108   (if (stringp dsts) (setq dsts (list dsts)))
109   (setq encode-all-count (1+ encode-all-count))
110   (let ((res (condition-case nil
111                (apply 'encode-test src dsts opts)
112                (error nil))))
113     (if (eq res t)
114       (progn
115         (setq encode-succ-count (1+ encode-succ-count))
116         (insert "\n'esucc"))
117       (insert (format "\n%S\n'efail" res)))
118     res))
119
120 (defun report ()
121   (insert
122     (format "\n\"Decode: %d/%d  Encode: %d/%d  Total: %d/%d\""
123       decode-succ-count decode-all-count
124       encode-succ-count encode-all-count
125       (+ decode-succ-count encode-succ-count)
126       (+ decode-all-count encode-all-count))))
127
128 ;;;start-test
129
130 ;;; Section 1: Decoding examples from RFC2047
131
132 (decode
133 "From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>"
134 "From: Keith Moore <moore@cs.utk.edu>")
135
136 (decode
137 "To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>"
138 "To: Keld J\e.A\eNxrn Simonsen <keld@dkuug.dk>")\e*B
139
140 (decode
141 "CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>"
142 "CC: Andr\e.A\eNi Pirard <PIRARD@vm1.ulg.ac.be>")\e*B
143
144 (decode
145 "Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=\r
146  =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?="
147 "Subject: If you can read this you understand the example.")
148
149 (decode
150 "From: =?ISO-8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>"
151 "From: Olle J\e.A\eNdrnefors <ojarnef@admin.kth.se>")\e*B
152
153 (decode
154 "From: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>"
155 "From: Patrik F\e.A\eNdltstr\eNvm <paf@nada.kth.se>")\e*B
156
157 (decode
158 "From: Nathaniel Borenstein <nsb@thumper.bellcore.com>\r
159         (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)"
160 "From: Nathaniel Borenstein <nsb@thumper.bellcore.com>  (\e.H\eNm\eNe\eNl\eNy \eNo\eNa \eNi\eNl\eNh\eNt\eNp)")\e*B
161
162 (decode
163 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=)"
164 "From: foo@bar.baz (a)")
165
166 (decode
167 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= b)"
168 "From: foo@bar.baz (a b)")
169
170 (decode
171 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
172 "From: foo@bar.baz (ab)")
173
174 (decode
175 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)"
176 "From: foo@bar.baz (ab)")
177
178 (decode
179 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=\r
180         =?ISO-8859-1?Q?b?=)"
181 "From: foo@bar.baz (ab)")
182
183 (decode
184 "From: foo@bar.baz (=?ISO-8859-1?Q?a_b?=)"
185 "From: foo@bar.baz (a b)")
186
187 (decode
188 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
189 "From: foo@bar.baz (a b)")
190
191 (decode
192 "Subject: (=?ISO-8859-1?Q?a?=)"
193 "Subject: (=?ISO-8859-1?Q?a?=)")
194
195 (decode
196 "Subject: (=?ISO-8859-1?Q?a?= b)"
197 "Subject: (=?ISO-8859-1?Q?a?= b)")
198
199 (decode
200 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
201 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)")
202
203 (decode
204 "Subject: (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)"
205 "Subject: (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)")
206
207 (decode
208 "Subject: (=?ISO-8859-1?Q?a?=\r
209         =?ISO-8859-1?Q?b?=)"
210 "Subject: (=?ISO-8859-1?Q?a?=   =?ISO-8859-1?Q?b?=)")
211
212 (decode
213 "Subject: (=?ISO-8859-1?Q?a_b?=)"
214 "Subject: (=?ISO-8859-1?Q?a_b?=)")
215
216 (decode
217 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
218 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)")
219
220 ;;; Section 2: Decoding proper inputs.
221
222 (decode
223 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
224 "From: \e$B$"\e(B <akr@jaist.ac.jp>")
225
226 (decode
227 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
228  <akr@jaist.ac.jp>"
229 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
230
231 (decode
232 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
233  =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
234  <akr@jaist.ac.jp>"
235 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
236
237 (decode
238 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
239         =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
240  <akr@jaist.ac.jp>"
241 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
242
243 (decode
244 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"ja \\\"a\\\"\" <akr@jaist.ac.jp>"
245 "From: \e$B$"\e(B \"ja \\\"a\\\"\" <akr@jaist.ac.jp>")
246
247 (decode
248 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
249  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
250  =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
251 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)")
252
253 (decode
254 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
255 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
256
257 (decode
258 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
259 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
260
261 (decode
262 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
263 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
264
265 (decode
266 "From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>"
267 "From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>")
268
269 (decode
270 "From: \"\\\"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\\\"\\\\\" <akr@jaist.ac.jp>"
271 "From: \"\\\"\\\\\" \e$B$"\e(B \"\\\"\\\\\" <akr@jaist.ac.jp>")
272
273 (decode
274 "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>"
275 "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>")
276
277 (decode
278 "From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= <akr@jaist.ac.jp>"
279 "From: \e$BAA\e(B <akr@jaist.ac.jp>")
280
281 (decode
282 "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>"
283 "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>")
284
285 (decode
286 "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)"
287 "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)")
288
289 (decode
290 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
291 "From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>")
292
293 (decode
294 "From: =?US-ASCII?Q?=28?= <akr@jaist.ac.jp>, =?US-ASCII?Q?=29?= <akr@jaist.ac.jp>"
295 "From: \"(\" <akr@jaist.ac.jp>, \")\" <akr@jaist.ac.jp>"
296 'ignore-76bytes-limit)
297
298 (decode
299 "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>"
300 "From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>")
301
302 (decode
303 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?="
304 "Subject: \e$B$"\e(B")
305
306 (decode
307 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?="
308 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
309
310 (decode
311 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
312 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
313
314 (decode
315 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
316 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
317
318 (decode
319 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?="
320 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
321
322 (decode
323 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
324 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
325
326 (decode
327 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
328 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
329
330 (decode
331 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?="
332 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
333
334 (decode
335 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
336 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
337
338 (decode
339 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
340 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
341
342 (decode
343 "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
344 "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
345
346 (decode
347 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:"
348 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:")
349
350 (decode
351 "Subject: =?ISO-2022-JP?B??="
352 "Subject: =?ISO-2022-JP?B??=")
353
354 (decode
355 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a\r
356  =?ISO-2022-JP?B?GyRCJCQbKEI=?="
357 "Subject: \e$B$"\e(B a \e$B$$\e(B")
358
359 (decode
360 "Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r
361  =?US-ASCII?Q?____________________________________________________________?=\r
362  =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?="
363 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B")
364
365 (decode
366 "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>"
367 "From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>")\e*B
368
369 (decode
370 "Subject: ?= =?"
371 "Subject: ?= =?")
372
373 (decode
374 "Subject: \" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \""
375 "Subject: \" \e$B$"\e(B \"")
376
377 (decode
378 "From: \"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\" <akr@jaist.ac.jp>"
379 "From: \"\\\\\" \e$B$"\e(B \"\" <akr@jaist.ac.jp>")
380
381 (decode
382 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B_=1B$B$\"=1B(B?="
383 "Subject: \e$B$"\e(B \e$B$"\e(B")
384
385 (decode
386 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?="
387 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?=")
388
389 (decode
390 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?="
391 "Subject: \e$B$"\e(B a \e.H\eN`")\e*B
392
393 (decode
394 "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
395 "Subject: \e.H\eN`\e$BNm\e(B")\e*B
396
397 (decode
398 "Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
399 "Subject: \e.H\eN` \e$BNm\e(B")\e*B
400
401 (decode
402 "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="
403 "Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
404
405 (decode
406 "Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
407 "Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
408
409 (decode
410 "Subject: =?Shift_JIS?B?gqA=?="
411 "Subject: \e$B$"\e(B")
412
413 (decode
414 "Subject: =?EUC-JP?B?pKI=?="
415 "Subject: \e$B$"\e(B")
416
417 (decode
418 "Subject: = =?ISO-2022-JP?B?GyRCJCIbKEI=?="
419 "Subject: = \e$B$"\e(B")
420
421 (decode
422 "Subject: =? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
423 "Subject: =? \e$B$"\e(B")
424
425 (decode
426 "Subject: =?ISO-2022-JP =?ISO-2022-JP?B?GyRCJCIbKEI=?="
427 "Subject: =?ISO-2022-JP \e$B$"\e(B")
428
429 (decode
430 "Subject: =?ISO-2022-JP? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
431 "Subject: =?ISO-2022-JP? \e$B$"\e(B")
432
433 (decode
434 "Subject: =?ISO-2022-JP?B =?ISO-2022-JP?B?GyRCJCIbKEI=?="
435 "Subject: =?ISO-2022-JP?B \e$B$"\e(B")
436
437 (decode
438 "Subject: =?ISO-2022-JP?B? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
439 "Subject: =?ISO-2022-JP?B? \e$B$"\e(B")
440
441 (decode
442 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI =?ISO-2022-JP?B?GyRCJCIbKEI=?="
443 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI \e$B$"\e(B")
444
445 (decode
446 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
447 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= \e$B$"\e(B")
448
449 (decode
450 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
451 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? \e$B$"\e(B")
452
453 (decode
454 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
455 "Subject: \e$B$"$"\e(B")
456
457 (decode
458 "Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?="
459 "Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
460
461 (decode
462 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=="
463 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==")
464
465 (decode
466 "From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
467 "From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
468
469 (decode
470 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
471 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test")
472
473 (decode
474 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
475 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
476 'permit-sticked-special)
477
478 ;;; Section 3: Decoding melancholic inputs.
479
480 (decode
481 "From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
482 "From:\e$B$"\e(B <akr@jaist.ac.jp>")
483
484 (decode
485 "From: akr@jaist.ac.jp\r
486  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
487 "From: akr@jaist.ac.jp (\e$B$"\e(B\\a\e$B$$\e(B)")
488
489 (decode
490 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
491 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
492
493 (decode
494 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
495 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
496
497 (decode
498 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
499 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
500
501 (decode
502 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
503 "From: (a)\e$B$"\e(B <akr@jaist.ac.jp>"
504 'permit-sticked-comment)
505
506 (decode
507 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
508 "From: \e$B$"\e(B(b) <akr@jaist.ac.jp>"
509 'permit-sticked-comment)
510
511 (decode
512 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
513 "From: (a)\e$B$"\e(B(b) <akr@jaist.ac.jp>"
514 'permit-sticked-comment)
515
516 (decode
517 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
518 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
519
520 (decode
521 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
522 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
523
524 (decode
525 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
526 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
527
528 (decode
529 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
530  <akr@jaist.ac.jp>"
531 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
532 'permit-sticked-comment)
533
534 (decode
535 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
536 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
537
538 (decode
539 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
540 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
541 'permit-sticked-special)
542
543 (decode
544 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
545 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
546
547 (decode
548 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
549 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
550 'permit-sticked-special)
551
552 (decode
553 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
554 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
555
556 (decode
557 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
558 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
559 'permit-sticked-special)
560
561 (decode
562 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
563 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;")
564
565 (decode
566 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
567 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
568 'permit-sticked-special)
569
570 (decode
571 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
572 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;")
573
574 (decode
575 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
576 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
577 'ignore-76bytes-limit 'permit-sticked-special)
578
579 (decode
580 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
581 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>")
582
583 (decode
584 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
585 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
586 'ignore-76bytes-limit 'permit-sticked-special)
587
588 (decode
589 "Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?="
590 "Subject:\e$B$"\e(B")
591
592 ;;; Section 4: Decoding invalid inputs.
593
594 (decode
595 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
596  <akr@jaist.ac.jp>"
597 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= <akr@jaist.ac.jp>")
598
599 (decode
600 "From: akr@jaist.ac.jp\r
601  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
602 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)")
603
604 (decode
605 "From: akr@jaist.ac.jp\r
606  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
607 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)")
608
609 (decode
610 "From: akr@jaist.ac.jp\r
611  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
612 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
613 'ignore-76bytes-limit)
614
615 (decode
616 "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
617 "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
618
619 (decode
620 "Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?="
621 "Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
622
623 (decode
624 "Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
625 "Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
626
627 (decode
628 "Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?="
629 "Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
630
631 (decode
632 "Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
633 "Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
634
635 (decode
636 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?="
637 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
638
639 (decode
640 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?="
641 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
642
643 (decode
644 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
645 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
646
647 (decode
648 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?="
649 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
650
651 (decode
652 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?="
653 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?=")
654
655 (decode
656 "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?="
657 "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=")
658
659 (decode
660 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
661 "Subject: \e$B$"\e(B=?=\e$B$"\e(B")
662
663 ;;; Section 5: Encoding proper inputs.
664
665 (encode
666 "From: \e$B$"\e(B <akr@jaist.ac.jp>"
667 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
668
669 (encode
670 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>"
671 "From: =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= <akr@jaist.ac.jp>")
672
673 (encode
674 "From: \e$B$"\e(B \e$B$$\e(B <akr@jaist.ac.jp>"
675 "From: =?ISO-2022-JP?B?GyRCJCIbKEIgGyRCJCQbKEI=?= <akr@jaist.ac.jp>")
676
677 (encode
678 "From: \e.A\eN! \eN! <akr@jaist.ac.jp>"\e*B
679 "From: =?ISO-8859-1?Q?=A1_=A1?= <akr@jaist.ac.jp>")
680
681 (encode
682 "From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>"
683 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>")
684
685 (encode
686 "From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>"
687 "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>")
688
689 (encode
690 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B"
691 "Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r
692  =?US-ASCII?Q?____________________________________________________________?=\r
693  =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=")
694
695 (encode
696 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B"
697 "Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w=="
698 'ignore-76bytes-limit 'ignore-75bytes-limit)
699
700 (encode
701 "From: \e.A\eN! <akr@jaist.ac.jp>"\e*B
702 "From: =?ISO-8859-1?Q?=A1?= <akr@jaist.ac.jp>")
703
704 (encode
705 "From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>"\e*B
706 "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>")
707
708 (encode
709 "From: akr@jaist.ac.jp (abcdefghijklmnopqrst\e.A\eN!\\(\\)\"\\\\)"\e*B
710 "From: akr@jaist.ac.jp (=?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29\"=5C?=)")
711
712 (encode
713 "Subject: \e$B$"\e(B a \e.H\eN`"\e*B
714 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=")
715
716 (encode
717 "Subject: \e.H\eN`\e$BNm\e(B"\e*B
718 "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=")
719
720 (encode
721 "Subject: \e.H\eN` \e$BNm\e(B"\e*B
722 '("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
723   "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?="))
724
725 (encode
726 "Subject: \e.F\eNC\e$B4X?t\e(B"\e*B
727 '("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
728   "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="))
729
730 (encode
731 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
732 "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
733  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
734
735 (encode
736 "From: aaaaaaaaaaaaaaaaaaaaa (\e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
737 '("From: aaaaaaaaaaaaaaaaaaaaa
738  (=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
739   "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?=
740  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
741
742 (encode
743 "From: aaaaaaaaaaaaaaaaaaaaa( \e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
744 '("From: aaaaaaaaaaaaaaaaaaaaa(
745  =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
746   "From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIbKEI=?=
747  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
748
749 (encode
750 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
751 '("From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=
752  )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
753   "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=
754  =?ISO-2022-JP?B?GyRCJCQbKEI=?= )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
755
756 (encode
757 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B) aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
758 "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)\r
759  aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
760
761 (encode
762 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B \e$B$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
763 "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?=\r
764  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
765
766 (encode
767 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
768 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
769
770 (encode
771 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
772 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa\r
773  <akr@jaist.ac.jp>")
774
775 (encode
776 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
777 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
778  <akr@jaist.ac.jp>")
779
780 (encode
781 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
782 "From:\r
783  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
784  <akr@jaist.ac.jp>")
785
786 (encode
787 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
788 "From:\r
789  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
790  <akr@jaist.ac.jp>")
791
792 (encode
793 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
794 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
795  =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
796  <akr@jaist.ac.jp>"
797 'zero-characters-encoded-word-hack)
798
799 (encode
800 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
801 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
802  =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
803  <akr@jaist.ac.jp>"
804 'zero-characters-encoded-word-hack)
805
806 (encode
807 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
808 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
809  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
810 'separate-sticked-tokens-for-fold)
811
812 (encode
813 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
814 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaa?=\r
815  =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= <akr@jaist.ac.jp>"
816 'encode-long-ascii-string-for-fold 'permit-sticked-special)
817
818 (encode
819 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
820 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
821  aaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
822 'divide-atom-for-fold)
823
824 (encode
825 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
826 '("From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
827   "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
828  <akr@jaist.ac.jp>")
829 'ignore-76bytes-limit)
830
831 (encode
832 "From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B)aa <akr@jaist.ac.jp>"
833 "From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r
834  =?US-ASCII?Q?a?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa <akr@jaist.ac.jp>"
835 'encode-long-ascii-string-for-fold)
836
837 (encode
838 "From: \e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B)aa <akr@jaist.ac.jp>"
839 "From: =?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==?=\r
840  =?US-ASCII?Q?aaaaaaaaaaaaaaa?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa"
841 'encode-long-ascii-string-for-fold)
842
843 (encode
844 "From: (\e$B$"\e(B) <akr@jaist.ac.jp>"
845 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) <akr@jaist.ac.jp>")
846
847 (encode
848 "From: ((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
849 "From: ((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
850  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))\r
851  <akr@jaist.ac.jp>"
852 'zero-characters-encoded-word-hack)
853
854 (encode
855 "From: (((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
856 "From: (((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
857  =?ISO-2022-JP?B?GyRCJCIbKEI=?=)))))))))))))))))))))))))))))))))))))))))\r
858  <akr@jaist.ac.jp>"
859 'zero-characters-encoded-word-hack)
860
861 (encode
862 "From: ((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
863 "From: ((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
864  =?ISO-2022-JP?B?GyRCJCIbKEI=?=))))))))))))))))))))))))))))))))))))))))))))))\r
865  <akr@jaist.ac.jp>"
866 'zero-characters-encoded-word-hack)
867
868 (encode
869 "From: (((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
870 "From: (((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
871  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
872  =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))\r
873  <akr@jaist.ac.jp>"
874 'zero-characters-encoded-word-hack)
875
876 (encode
877 "From: ((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
878 "From:\r
879  ((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
880  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
881  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))\r
882  <akr@jaist.ac.jp>"
883 'zero-characters-encoded-word-hack)
884
885 (encode
886 "From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
887 "From:\r
888  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
889  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
890  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
891  <akr@jaist.ac.jp>"
892 'zero-characters-encoded-word-hack)
893
894 (encode
895 "From: (((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
896 "From:\r
897  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
898  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
899  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
900  <akr@jaist.ac.jp>"
901 'zero-characters-encoded-word-hack)
902
903 (encode
904 "From: (((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
905 "From:\r
906  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
907  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?ISO-2022-JP?B?GyhC?=\r
908  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
909  <akr@jaist.ac.jp>"
910 'zero-characters-encoded-word-hack)
911
912 (encode
913 "From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
914 "From:\r
915  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
916  =?ISO-2022-JP?B?GyhC?=((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
917  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))=?ISO-2022-JP?B?GyhC?=\r
918  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))\r
919  <akr@jaist.ac.jp>"
920 'zero-characters-encoded-word-hack)
921
922 (encode
923 "From: ()(\e$B$"\e(B)() <akr@jaist.ac.jp>"
924 "From: ()(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)() <akr@jaist.ac.jp>")
925
926 (encode
927 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
928 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()\r
929   <akr@jaist.ac.jp>")
930
931 (encode
932 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
933 "From:\r
934  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()()()()\r
935   <akr@jaist.ac.jp>")
936
937 (encode
938 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
939 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
940  =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()()()()()()()()()\r
941   <akr@jaist.ac.jp>"
942 'zero-characters-encoded-word-hack)
943
944 (encode
945 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
946 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
947  =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()(=?ISO-2022-JP?B?GyhC?=\r
948  =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()() <akr@jaist.ac.jp>"
949 'zero-characters-encoded-word-hack)
950
951 (encode
952 "To: l@d (\e$B$"\e(B aaa)(\e$B$"\e(B)"
953 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
954
955 (encode
956 "To: l@d (\e$B$"\e(B aaaa)(\e$B$"\e(B)"
957 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
958  aaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
959
960 (encode
961 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\e$B$"\e(B)"
962 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
963  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
964
965 (encode
966 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\e$B$"\e(B)"
967 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r
968  =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
969 'encode-long-ascii-string-for-fold)
970
971 (encode
972 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()\e$B$"\e(B)"
973 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r
974  =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=()=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
975 'encode-long-ascii-string-for-fold)
976
977 (encode
978 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \e$B$"\e(B)(\e$B$"\e(B)"
979 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
980  =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
981
982 (encode
983 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \e$B$"\e(B)(\e$B$"\e(B)"
984 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
985  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
986  =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
987
988 ;----------------------------------------------------------------------------
989
990 ;;; Section 6: Encoding melancholic inputs.
991
992 (encode
993 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
994 "From: akr@jaist.ac.jp\r
995  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
996 'ignore-76bytes-limit)
997
998 (encode
999 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
1000 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
1001  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1002  =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
1003 'zero-characters-encoded-word-hack)
1004
1005 (encode
1006 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
1007 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
1008 'encode-sticked-comment-as-atom)
1009
1010 (encode
1011 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
1012 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
1013  <akr@jaist.ac.jp>"
1014 'permit-sticked-comment)
1015
1016 (encode
1017 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
1018 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
1019  <akr@jaist.ac.jp>"
1020 'separate-sticked-comment)
1021
1022 (encode
1023 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
1024 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
1025 'permit-sticked-special)
1026
1027 (encode
1028 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
1029 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
1030 'separate-sticked-special)
1031
1032 (encode
1033 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
1034 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
1035 'permit-sticked-special)
1036
1037 (encode
1038 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
1039 "To: <akr@jaist.ac.jp>, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
1040 'separate-sticked-special)
1041
1042 (encode
1043 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
1044 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
1045 'permit-sticked-special)
1046
1047 (encode
1048 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
1049 "To: akr@jaist.ac.jp, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
1050 'separate-sticked-special)
1051
1052 (encode
1053 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
1054 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
1055 'permit-sticked-special)
1056
1057 (encode
1058 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
1059 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;"
1060 'separate-sticked-special)
1061
1062 (encode
1063 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
1064 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
1065 'ignore-76bytes-limit 'permit-sticked-special)
1066
1067 (encode
1068 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
1069 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1070  =?ISO-2022-JP?B?GyhC?=<akr@jaist.ac.jp>;"
1071 'zero-characters-encoded-word-hack 'permit-sticked-special)
1072
1073 (encode
1074 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
1075 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1076  <akr@jaist.ac.jp>;"
1077 'separate-sticked-special)
1078
1079 (encode
1080 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
1081 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
1082 'ignore-76bytes-limit 'permit-sticked-special)
1083
1084 (encode
1085 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
1086 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1087  =?ISO-2022-JP?B?GyhC?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=\r
1088  =?ISO-2022-JP?B?GyhC?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
1089 'zero-characters-encoded-word-hack 'permit-sticked-special)
1090
1091 (encode
1092 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
1093 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1094  <foo@bar>, =?ISO-2022-JP?B?GyRCJCYbKEI=?= <foo@bar>;,\r
1095  =?ISO-2022-JP?B?GyRCJCgbKEI=?= <foo@bar>"
1096 'separate-sticked-special)
1097
1098 ;;; Section 7: Using embedded-encoded-words.
1099 ;;
1100 ;; embedded-encoded-word \e$BI=8=\e(B
1101 ;; 
1102 ;; RFC2047 \e$B$N%G%3!<%@$O@x:_E*$K\e(B(\e$B%G%3!<%I7k2L$G$J$/\e(B) encoded-word \e$B$=$N$b$N$r\e(B
1103 ;; \e$B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#\e(B
1104 ;;
1105 ;; 1. \e$BCN$i$J$$\e(B charset \e$B$b$7$/$O\e(B encoding \e$B$,;XDj$5$l$F$$$?$H$-!#\e(B
1106 ;;  =?unknown-charset?known-encoding?some-encoded-text?=
1107 ;;  =?known-charset?unknown-encoding?some-encoded-text?=
1108 ;;  =?unknown-charset?unknown-encoding?some-encoded-text?=
1109 ;;
1110 ;; 2. \e$B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#\e(B
1111 ;;  Non ASCII \e$B3HD%\e(B RFC822 \e$B$NCf$K\e(B =?US-ASCII?Q?=0D=0A=0D=0A?= \e$B$N%G%3!<%I\e(B
1112 ;; \e$B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#\e(B
1113 ;;
1114 ;; \e$B$^$?!"%G%3!<%@$O\e(B encoded-word \e$B$N$h$&$K$_$($k%G%3!<%I7k2L$r=PNO$7$J$1\e(B
1115 ;; \e$B$l$P$J$i$J$$$3$H$b$"$k!#\e(B
1116 ;;
1117 ;;  =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?=
1118 ;;
1119 ;; \e$B%G%3!<%@$,C1$J$kJ8;zNs$r=PNO$9$k>l9g!"C1=c$K$O\e(B encoded-word \e$B$=$N$b$N$H\e(B
1120 ;; encoded-word \e$B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#\e(B
1121 ;; \e$B$3$3$G$OJ8;zNsCf$G$=$l$i$r3N<B$K6hJL$7$FI=8=$9$kJ}K!$r<($9!#\e(B
1122 ;;
1123 ;; rule 1: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
1124 ;;  \e$B%^%C%A$7$J$$ItJ,$O$=$NItJ,$N$^$^$NFbMF$rI=$9!#\e(B
1125 ;; 
1126 ;; rule 2: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
1127 ;;  \e$B%^%C%A$9$kItJ,$O\e(B charset \e$B$N@hF,$K\e(B + \e$B$,$$$/$DIU$$$F$$$k$+$GFbMF$N\e(B
1128 ;;  \e$B2r<a$rJQ$($k!#\e(B
1129 ;;
1130 ;;  3\e$B$rK!$H$7$F\e(B0\e$B$HEy$7$$>l9g\e(B(0, 3, 6, ...): charset \e$B$N@hF,$N\e(B + \e$B$N?t$r\e(B
1131 ;;    1/3 \e$B$K$7$?J8;zNs\e(B
1132 ;;  3\e$B$rK!$H$7$F\e(B1\e$B$HEy$7$$>l9g\e(B(1, 4, 7, ...): charset \e$B$N@hF,$N\e(B + \e$B$N?t$r\e(B
1133 ;;    1/3 (\e$B>.?tE@0J2<@Z<N$F\e(B)\e$B$K$7$F!"$=$l$r\e(B encoded-word \e$B$H;W$C$F%G\e(B
1134 ;;    \e$B%3!<%I$7$?J8;zNs!#\e(B
1135 ;;  3\e$B$rK!$H$7$F\e(B2\e$B$HEy$7$$>l9g\e(B(2, 5, 8, ...): charset \e$B$N@hF,$N\e(B + \e$B$N?t$r\e(B
1136 ;;    1/3 (\e$B>.?tE@0J2<@Z<N$F\e(B)\e$B$K$7$F!":G8e$N\e(B = \e$B$r<h$j=|$$$?J8;zNs\e(B
1137 ;;
1138 ;;  =?c?e?t?=?c?e?t?=... \e$B$H$$$&$h$&$K!"%Q%?!<%s$N@hF,$N\e(B = \e$B$H\e(B \e$BKvHx$N\e(B = 
1139 ;;  \e$B=E$J$k>l9g!"4q?tHVL\$N$b$N$KBP$7$F>e5-$N%k!<%k$rE,MQ$9$k!#\e(B
1140 ;;
1141 ;; NOTE: + \e$B$r\e(B embedded-encoded-word \e$BI=8=$N\e(B quote \e$BJ8;z$H8F$V!#\e(B
1142 ;;
1143 ;; NOTE: \e$B8=;~E@\e(B(1998/07/19)\e$B$G\e(B IANA \e$B$K$O\e(B + \e$B$r4^$`\e(B charset \e$B$O\e(B
1144 ;;  \e$BEPO?$5$l$F$$$J$$$N$G!"$=$l$i$N\e(B charset \e$B$r;H$C$?\e(B
1145 ;;  encoded-word \e$B$rI=8=$9$k$K$O\e(B + \e$B$r\e(B 1\e$B$D$D$1$k$3$H$K$J$k!#\e(B
1146 ;;
1147 ;;  =?US-ASCII?Q?abcdef?= \e$B$H$$$&\e(Bencoded-word : =?+US-ASCII?Q?abcdef?=
1148 ;;
1149 ;;  =?US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B        : =?US-ASCII?Q?abcdef?=
1150 ;;  =?+US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B       : =?+++US-ASCII?Q?abcdef?=
1151 ;;  =?++US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B     : =?++++++US-ASCII?Q?abcdef?=
1152 ;;  =?+++US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B    : =?+++++++++US-ASCII?Q?abcdef?=
1153 ;;  =?US-ASCII+?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B      : =?US-ASCII+?Q?abcdef?=
1154 ;;  =?U+S-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B      : =?U+S-ASCII?Q?abcdef?=
1155 ;;
1156 ;;  =?US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B         : =?++US-ASCII?Q?abcdef?=
1157 ;;  =?+US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B        : =?+++++US-ASCII?Q?abcdef?=
1158 ;;  =?++US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B     : =?++++++++US-ASCII?Q?abcdef?=
1159 ;;  =?+++US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B    : =?+++++++++++US-ASCII?Q?abcdef?=
1160 ;;
1161 ;; NOTE: encoded-word \e$B$K8+$($kJ8;zNs$G\e(B + \e$B$,\e(B 3\e$BG\A}$5$l$k$N$O\e(B charset \e$B$N\e(B
1162 ;;  \e$B@hF,$@$1$G$"$j!"\e(Bencoding \e$B$d\e(B encoded-text \e$B$O$?$H$(\e(B + \e$B$,F~$C$F$$$F$b\e(B
1163 ;;  \e$BJQ2=$7$J$$!#$^$?!"\e(Bcharset \e$BCf$G$b\e(B \e$B@hF,0J30$N\e(B + \e$B$OJQ2=$7$J$$!#\e(B
1164 ;;
1165 ;; NOTE: charset \e$B$H\e(B encoding \e$B$K$O\e(B = \e$B$O4^$^$l$J$$$N$G\e(B 1\e$BJ8;z0J>e=E$J$k$3\e(B
1166 ;;  \e$B$H$O$J$$!#\e(B
1167 ;;
1168 ;; rule 3: \e$BJ8;zNsA4BN$NFbMF$O!"\e(Brule 1 \e$B$H\e(B rule 2 \e$B$G2r<a$7$?3FItJ,$N\e(B
1169 ;;   \e$BJ8;zNs$rC1=c$KO"7k$7$?J8;zNs$H$9$k!#\e(B
1170 ;;
1171 ;; NOTE: RFC2047 \e$B$G$O\e(B encoded-word \e$B$,6uGr$G6h@Z$i$l$J$1$l$P$J$i$J$$$H$+!"\e(B
1172 ;;  encoded-word \e$B$O\e(B 75bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$H$+!"\e(B
1173 ;;  encoded-word \e$B$,4^$^$l$k9T$O\e(B 76bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$J$I$H$$$&\e(B
1174 ;;  \e$B5,Ls$,$"$k$,!"\e(Bembedded-encoded-word \e$BI=8=$G$O$=$l$i$O:NMQ$7$J$$!#\e(B
1175 ;;  \e$BC1=c$K\e(B encoded-word \e$BFbIt$NJ8K!$@$1$rMxMQ$9$k!#\e(B
1176 ;;  (\e$BK\<AE*$K$O0[$J$kJ8K!$r:NMQ$9$k$3$H$b2DG=$G$"$k$,!"\e(BRFC2047 \e$B$K7I0U$r\e(B
1177 ;;  \e$BI=$7$F\e(B encoded-word \e$B$NJ8K!$r:NMQ$9$k!#\e(B)
1178 ;;
1179 ;; NOTE: embedded-encoded-word \e$BI=8=$7$?J8;zNs$NO"7k$O0BA4$G$O$J$$!#\e(B
1180 ;;  =?+US-ASCII?Q?ab \e$B$H\e(B cd?= \e$B$H$$$&\e(B embedded-encoded-word \e$BI=8=$7$?J8;zNs$O\e(B
1181 ;;  \e$B$=$l$>$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs\e(B
1182 ;;  =?+US-ASCII?Q?abcd?= \e$B$O\e(B abcd \e$B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"\e(B
1183 ;;  \e$B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#\e(B
1184 ;;
1185 ;;  \e$B$3$l$O$H$/$K\e(B Non ASCII \e$B3HD%\e(B RFC822 \e$B$NCf$K\e(B embedded-encoded-word \e$BI=8=$r\e(B
1186 ;;  \e$BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#\e(B(\e$BKd$a9~$s$@7k2L$O@5$7$$\e(B
1187 ;;  embedded-encoded-word \e$BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#\e(B)
1188
1189 (decode
1190 "Subject: =?Unknown-Charset?B?gqA=?="
1191 "Subject: =?+Unknown-Charset?B?gqA=?="
1192 'embedded-encoded-word)
1193
1194 (decode
1195 "Subject: =?US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?="
1196 "Subject: =?+US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?="
1197 'embedded-encoded-word)
1198
1199 (decode
1200 "Subject: =?US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?="
1201 "Subject: =?+US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?="
1202 'embedded-encoded-word)
1203
1204 (decode
1205 "Subject: =?ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?=\r
1206  =?ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?="
1207 "Subject: =?+ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?==?+ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?="
1208 'embedded-encoded-word)
1209
1210 (decode
1211 "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?="
1212 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1213 'embedded-encoded-word)
1214
1215 (decode
1216 "Subject: =?Unknown-Charset?B?gqA=?=  =?Unknown-Charset?B?gqA=?="
1217 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1218 'embedded-encoded-word)
1219
1220 (decode
1221 "Subject: =?Unknown-Charset?B?gqA=?=\r
1222  =?Unknown-Charset?B?gqA=?="
1223 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1224 'embedded-encoded-word)
1225
1226 (decode
1227 "Subject: =?Unknown-Charset?B?gqA=?=\r
1228         =?Unknown-Charset?B?gqA=?="
1229 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1230 'embedded-encoded-word)
1231
1232 (decode
1233 "Subject: a=?Unknown-Charset?B?gqA=?="
1234 "Subject: a=?Unknown-Charset?B?gqA=?="
1235 'embedded-encoded-word)
1236
1237 (decode
1238 "Subject: =?Unknown-Charset?B?gqA=?=b"
1239 "Subject: =?Unknown-Charset?B?gqA=?=b"
1240 'embedded-encoded-word)
1241
1242 (decode
1243 "Subject: a=?Unknown-Charset?B?gqA=?=b"
1244 "Subject: a=?Unknown-Charset?B?gqA=?=b"
1245 'embedded-encoded-word)
1246
1247 (decode
1248 "Subject: a =?Unknown-Charset?B?gqA=?= b"
1249 "Subject: a =?+Unknown-Charset?B?gqA=?= b"
1250 'embedded-encoded-word)
1251
1252 (decode
1253 "Subject: =?ISO-2022-JP?B?DQoNCg==?="
1254 "Subject: =?+US-ASCII?Q?=0D=0A=0D=0A?="
1255 'embedded-encoded-word)
1256
1257 (decode
1258 "Subject: =?US-ASCII?Q?a=0D=0A_b?="
1259 "Subject: a b"
1260 'embedded-encoded-word)
1261
1262 (decode
1263 "Subject: =?US-ASCII?Q?a=0D=0Ab?="
1264 "Subject: a=?+US-ASCII?Q?=0D=0A?=b"
1265 'embedded-encoded-word)
1266
1267 ;;; Section 8: CR and LF.
1268
1269 (decode
1270 "From: akr@jaist.ac.jp (\r\\\n)"
1271 "From: akr@jaist.ac.jp (\r\\\n)")
1272
1273 (decode
1274 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)"
1275 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= a)")
1276
1277 (decode
1278 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)"
1279 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)")
1280
1281 (decode
1282 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)"
1283 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)")
1284
1285 (decode
1286 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )"
1287 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )")
1288
1289 (decode
1290 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=    )"
1291 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=    )")
1292
1293 (decode
1294 "From: akr@jaist.ac.jp (\\\r\\\n)"
1295 "From: akr@jaist.ac.jp (\\\r\\\n)")
1296
1297 (decode
1298 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)"
1299 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)"
1300 'embedded-encoded-word)
1301
1302 (decode
1303 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0Aa?=)"
1304 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)"
1305 'embedded-encoded-word)
1306
1307 (decode
1308 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A_?=)"
1309 "From: akr@jaist.ac.jp (\\ )")
1310
1311 (decode
1312 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A=09?=)"
1313 "From: akr@jaist.ac.jp (\\      )")
1314
1315 (decode
1316 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= )"
1317 "From: akr@jaist.ac.jp (\\ )")
1318
1319 (decode
1320 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=  )"
1321 "From: akr@jaist.ac.jp (\\      )")
1322
1323 (decode
1324 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r
1325  =?US-ASCII?Q?=0D=0A?= =?US-ASCII?Q?a?=)"
1326 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A=0D=0A?=a)"
1327 'embedded-encoded-word)
1328
1329 (decode
1330 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r
1331  =?US-ASCII?Q?=0D?=\\\n =?US-ASCII?Q?a?=)"
1332 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=\r\\
1333  a)"
1334 'embedded-encoded-word)
1335
1336 ;;;end-test
1337
1338 (report)
1339
1340 ;----------------------------------------------------------------------------