'unlabeled-1.7.2.37.2.25.2'.
+++ /dev/null
-#V C H HVC xyY
-9 6 97.5 2.5R9/6 CIExyY:0.3665/0.3183/0.7866
-9 6 0 5R9/6 CIExyY:0.3734/0.3256/0.7866
-9 6 2.5 7.5R9/6 CIExyY:0.3812/0.3348/0.7866
-9 6 5 10R9/6 CIExyY:0.388/0.3439/0.7866
-9 4 97.5 2.5R9/4 CIExyY:0.3445/0.3179/0.7866
-9 4 0 5R9/4 CIExyY:0.3495/0.3226/0.7866
-9 4 2.5 7.5R9/4 CIExyY:0.3551/0.3283/0.7866
-9 4 5 10R9/4 CIExyY:0.36/0.3348/0.7866
-9 2 97.5 2.5R9/2 CIExyY:0.322/0.3168/0.7866
-9 2 0 5R9/2 CIExyY:0.324/0.3188/0.7866
-9 2 2.5 7.5R9/2 CIExyY:0.3263/0.321/0.7866
-9 2 5 10R9/2 CIExyY:0.3284/0.3233/0.7866
-9 1 0 5R9/1 CIExyY:0.3148/0.3173/0.7866
-9 1 5 10R9/1 CIExyY:0.3165/0.3188/0.7866
-8 10 97.5 2.5R8/10 CIExyY:0.4125/0.316/0.591
-8 10 0 5R8/10 CIExyY:0.4249/0.327/0.591
-8 10 2.5 7.5R8/10 CIExyY:0.4388/0.3419/0.591
-8 10 5 10R8/10 CIExyY:0.449/0.3589/0.591
-8 8 97.5 2.5R8/8 CIExyY:0.39/0.3171/0.591
-8 8 0 5R8/8 CIExyY:0.4001/0.3263/0.591
-8 8 2.5 7.5R8/8 CIExyY:0.4118/0.3385/0.591
-8 8 5 10R8/8 CIExyY:0.4212/0.3526/0.591
-8 6 97.5 2.5R8/6 CIExyY:0.3671/0.3175/0.591
-8 6 0 5R8/6 CIExyY:0.3743/0.3248/0.591
-8 6 2.5 7.5R8/6 CIExyY:0.383/0.3335/0.591
-8 6 5 10R8/6 CIExyY:0.391/0.3442/0.591
-8 4 97.5 2.5R8/4 CIExyY:0.346/0.3177/0.591
-8 4 0 5R8/4 CIExyY:0.351/0.3224/0.591
-8 4 2.5 7.5R8/4 CIExyY:0.3564/0.3279/0.591
-8 4 5 10R8/4 CIExyY:0.3621/0.3349/0.591
-8 3 97.5 2.5R8/3 CIExyY:0.3343/0.3174/0.591
-8 3 0 5R8/3 CIExyY:0.3377/0.3205/0.591
-8 3 2.5 7.5R8/3 CIExyY:0.3415/0.3244/0.591
-8 3 5 10R8/3 CIExyY:0.3455/0.3292/0.591
-8 2 97.5 2.5R8/2 CIExyY:0.3236/0.3169/0.591
-8 2 0 5R8/2 CIExyY:0.3254/0.3186/0.591
-8 2 2.5 7.5R8/2 CIExyY:0.3277/0.3211/0.591
-8 2 5 10R8/2 CIExyY:0.3301/0.3237/0.591
-8 1 0 5R8/1 CIExyY:0.3157/0.3171/0.591
-8 1 5 10R8/1 CIExyY:0.3177/0.3192/0.591
-7 16 97.5 2.5R7/16 CIExyY:0.4885/0.3039/0.4306
-7 16 2.5 7.5R7/16 CIExyY:0.5341/0.3452/0.4306
-7 16 5 10R7/16 CIExyY:0.5519/0.3729/0.4306
-7 14 97.5 2.5R7/14 CIExyY:0.466/0.3082/0.4306
-7 14 0 5R7/14 CIExyY:0.4848/0.3238/0.4306
-7 14 2.5 7.5R7/14 CIExyY:0.5059/0.345/0.4306
-7 14 5 10R7/14 CIExyY:0.5234/0.37/0.4306
-7 12 97.5 2.5R7/12 CIExyY:0.4435/0.3119/0.4306
-7 12 0 5R7/12 CIExyY:0.4595/0.3252/0.4306
-7 12 2.5 7.5R7/12 CIExyY:0.4777/0.3435/0.4306
-7 12 5 10R7/12 CIExyY:0.493/0.3659/0.4306
-7 10 97.5 2.5R7/10 CIExyY:0.4183/0.3144/0.4306
-7 10 0 5R7/10 CIExyY:0.432/0.326/0.4306
-7 10 2.5 7.5R7/10 CIExyY:0.447/0.3413/0.4306
-7 10 5 10R7/10 CIExyY:0.46/0.3596/0.4306
-7 8 97.5 2.5R7/8 CIExyY:0.3961/0.316/0.4306
-7 8 0 5R7/8 CIExyY:0.4067/0.3256/0.4306
-7 8 2.5 7.5R7/8 CIExyY:0.4196/0.3382/0.4306
-7 8 5 10R7/8 CIExyY:0.4308/0.3533/0.4306
-7 6 97.5 2.5R7/6 CIExyY:0.3728/0.317/0.4306
-7 6 0 5R7/6 CIExyY:0.3805/0.3244/0.4306
-7 6 2.5 7.5R7/6 CIExyY:0.3888/0.3336/0.4306
-7 6 5 10R7/6 CIExyY:0.3984/0.3452/0.4306
-7 4 97.5 2.5R7/4 CIExyY:0.3499/0.3171/0.4306
-7 4 0 5R7/4 CIExyY:0.3552/0.3222/0.4306
-7 4 2.5 7.5R7/4 CIExyY:0.3611/0.3282/0.4306
-7 4 5 10R7/4 CIExyY:0.3671/0.336/0.4306
-7 3 97.5 2.5R7/3 CIExyY:0.3389/0.3171/0.4306
-7 3 0 5R7/3 CIExyY:0.3426/0.3206/0.4306
-7 3 2.5 7.5R7/3 CIExyY:0.347/0.3251/0.4306
-7 3 5 10R7/3 CIExyY:0.3512/0.3306/0.4306
-7 2 97.5 2.5R7/2 CIExyY:0.3284/0.317/0.4306
-7 2 0 5R7/2 CIExyY:0.3306/0.319/0.4306
-7 2 2.5 7.5R7/2 CIExyY:0.3335/0.322/0.4306
-7 2 5 10R7/2 CIExyY:0.336/0.3253/0.4306
-7 1 0 5R7/1 CIExyY:0.3196/0.3175/0.4306
-7 1 5 10R7/1 CIExyY:0.3221/0.3204/0.4306
-6 18 97.5 2.5R6/18 CIExyY:0.5262/0.2928/0.3005
-6 18 0 5R6/18 CIExyY:0.5552/0.3138/0.3005
-6 18 2.5 7.5R6/18 CIExyY:0.5829/0.3396/0.3005
-6 18 5 10R6/18 CIExyY:0.6009/0.372/0.3005
-6 16 97.5 2.5R6/16 CIExyY:0.5041/0.2983/0.3005
-6 16 0 5R6/16 CIExyY:0.5297/0.3179/0.3005
-6 16 2.5 7.5R6/16 CIExyY:0.556/0.342/0.3005
-6 16 5 10R6/16 CIExyY:0.5741/0.3713/0.3005
-6 14 97.5 2.5R6/14 CIExyY:0.479/0.3041/0.3005
-6 14 0 5R6/14 CIExyY:0.502/0.3212/0.3005
-6 14 2.5 7.5R6/14 CIExyY:0.5265/0.3431/0.3005
-6 14 5 10R6/14 CIExyY:0.5468/0.3697/0.3005
-6 12 97.5 2.5R6/12 CIExyY:0.4568/0.3082/0.3005
-6 12 0 5R6/12 CIExyY:0.476/0.3234/0.3005
-6 12 2.5 7.5R6/12 CIExyY:0.4961/0.3428/0.3005
-6 12 5 10R6/12 CIExyY:0.515/0.3667/0.3005
-6 10 97.5 2.5R6/10 CIExyY:0.432/0.3118/0.3005
-6 10 0 5R6/10 CIExyY:0.448/0.325/0.3005
-6 10 2.5 7.5R6/10 CIExyY:0.4655/0.3412/0.3005
-6 10 5 10R6/10 CIExyY:0.4812/0.3619/0.3005
-6 8 97.5 2.5R6/8 CIExyY:0.4065/0.3144/0.3005
-6 8 0 5R6/8 CIExyY:0.4187/0.3251/0.3005
-6 8 2.5 7.5R6/8 CIExyY:0.4318/0.3383/0.3005
-6 8 5 10R6/8 CIExyY:0.4449/0.355/0.3005
-6 6 97.5 2.5R6/6 CIExyY:0.3832/0.3158/0.3005
-6 6 0 5R6/6 CIExyY:0.3921/0.3244/0.3005
-6 6 2.5 7.5R6/6 CIExyY:0.4/0.334/0.3005
-6 6 5 10R6/6 CIExyY:0.4103/0.3473/0.3005
-6 4 97.5 2.5R6/4 CIExyY:0.3566/0.3163/0.3005
-6 4 0 5R6/4 CIExyY:0.3628/0.3221/0.3005
-6 4 2.5 7.5R6/4 CIExyY:0.3692/0.3291/0.3005
-6 4 5 10R6/4 CIExyY:0.3768/0.3381/0.3005
-6 3 97.5 2.5R6/3 CIExyY:0.3439/0.3165/0.3005
-6 3 0 5R6/3 CIExyY:0.3482/0.3206/0.3005
-6 3 2.5 7.5R6/3 CIExyY:0.3535/0.3261/0.3005
-6 3 5 10R6/3 CIExyY:0.3591/0.3325/0.3005
-6 2 97.5 2.5R6/2 CIExyY:0.3318/0.3166/0.3005
-6 2 0 5R6/2 CIExyY:0.3343/0.319/0.3005
-6 2 2.5 7.5R6/2 CIExyY:0.3381/0.3228/0.3005
-6 2 5 10R6/2 CIExyY:0.3417/0.3268/0.3005
-6 1 0 5R6/1 CIExyY:0.3214/0.3175/0.3005
-6 1 5 10R6/1 CIExyY:0.3251/0.3213/0.3005
-5 20 97.5 2.5R5/20 CIExyY:0.5784/0.2719/0.1977
-5 20 0 5R5/20 CIExyY:0.6142/0.297/0.1977
-5 20 2.5 7.5R5/20 CIExyY:0.6388/0.3216/0.1977
-5 18 97.5 2.5R5/18 CIExyY:0.554/0.2804/0.1977
-5 18 0 5R5/18 CIExyY:0.5918/0.3033/0.1977
-5 18 2.5 7.5R5/18 CIExyY:0.6161/0.3277/0.1977
-5 18 5 10R5/18 CIExyY:0.6297/0.3642/0.1977
-5 16 97.5 2.5R5/16 CIExyY:0.53/0.288/0.1977
-5 16 0 5R5/16 CIExyY:0.5637/0.3102/0.1977
-5 16 2.5 7.5R5/16 CIExyY:0.5901/0.3331/0.1977
-5 16 5 10R5/16 CIExyY:0.6037/0.3657/0.1977
-5 14 97.5 2.5R5/14 CIExyY:0.5047/0.295/0.1977
-5 14 0 5R5/14 CIExyY:0.5341/0.3158/0.1977
-5 14 2.5 7.5R5/14 CIExyY:0.559/0.337/0.1977
-5 14 5 10R5/14 CIExyY:0.5771/0.3664/0.1977
-5 12 97.5 2.5R5/12 CIExyY:0.482/0.3002/0.1977
-5 12 0 5R5/12 CIExyY:0.5071/0.3194/0.1977
-5 12 2.5 7.5R5/12 CIExyY:0.528/0.3389/0.1977
-5 12 5 10R5/12 CIExyY:0.5481/0.366/0.1977
-5 10 97.5 2.5R5/10 CIExyY:0.4533/0.3058/0.1977
-5 10 0 5R5/10 CIExyY:0.4747/0.3227/0.1977
-5 10 2.5 7.5R5/10 CIExyY:0.4927/0.3399/0.1977
-5 10 5 10R5/10 CIExyY:0.5113/0.363/0.1977
-5 8 97.5 2.5R5/8 CIExyY:0.4252/0.3101/0.1977
-5 8 0 5R5/8 CIExyY:0.4413/0.324/0.1977
-5 8 2.5 7.5R5/8 CIExyY:0.4563/0.3387/0.1977
-5 8 5 10R5/8 CIExyY:0.4713/0.3575/0.1977
-5 6 97.5 2.5R5/6 CIExyY:0.396/0.313/0.1977
-5 6 0 5R5/6 CIExyY:0.4078/0.3238/0.1977
-5 6 2.5 7.5R5/6 CIExyY:0.418/0.3348/0.1977
-5 6 5 10R5/6 CIExyY:0.4299/0.3499/0.1977
-5 4 97.5 2.5R5/4 CIExyY:0.366/0.3148/0.1977
-5 4 0 5R5/4 CIExyY:0.374/0.322/0.1977
-5 4 2.5 7.5R5/4 CIExyY:0.3806/0.3294/0.1977
-5 4 5 10R5/4 CIExyY:0.3879/0.3398/0.1977
-5 3 97.5 2.5R5/3 CIExyY:0.3507/0.3154/0.1977
-5 3 0 5R5/3 CIExyY:0.3563/0.3207/0.1977
-5 3 2.5 7.5R5/3 CIExyY:0.3612/0.3262/0.1977
-5 3 5 10R5/3 CIExyY:0.3668/0.3339/0.1977
-5 2 97.5 2.5R5/2 CIExyY:0.336/0.3158/0.1977
-5 2 0 5R5/2 CIExyY:0.3392/0.3192/0.1977
-5 2 2.5 7.5R5/2 CIExyY:0.3425/0.3229/0.1977
-5 2 5 10R5/2 CIExyY:0.3465/0.3278/0.1977
-5 1 0 5R5/1 CIExyY:0.3235/0.3177/0.1977
-5 1 5 10R5/1 CIExyY:0.3274/0.3218/0.1977
-4 20 2.5 7.5R4/20 CIExyY:0.6806/0.2988/0.12
-4 18 97.5 2.5R4/18 CIExyY:0.5898/0.2622/0.12
-4 18 0 5R4/18 CIExyY:0.6329/0.2881/0.12
-4 18 2.5 7.5R4/18 CIExyY:0.6538/0.31/0.12
-4 16 97.5 2.5R4/16 CIExyY:0.562/0.2724/0.12
-4 16 0 5R4/16 CIExyY:0.6039/0.2978/0.12
-4 16 2.5 7.5R4/16 CIExyY:0.626/0.3192/0.12
-4 16 5 10R4/16 CIExyY:0.6409/0.3533/0.12
-4 14 97.5 2.5R4/14 CIExyY:0.5369/0.281/0.12
-4 14 0 5R4/14 CIExyY:0.5734/0.3057/0.12
-4 14 2.5 7.5R4/14 CIExyY:0.5959/0.3269/0.12
-4 14 5 10R4/14 CIExyY:0.6154/0.3568/0.12
-4 12 97.5 2.5R4/12 CIExyY:0.5072/0.2897/0.12
-4 12 0 5R4/12 CIExyY:0.5385/0.3129/0.12
-4 12 2.5 7.5R4/12 CIExyY:0.5603/0.3321/0.12
-4 12 5 10R4/12 CIExyY:0.5801/0.3588/0.12
-4 10 97.5 2.5R4/10 CIExyY:0.4774/0.2969/0.12
-4 10 0 5R4/10 CIExyY:0.5043/0.3176/0.12
-4 10 2.5 7.5R4/10 CIExyY:0.5235/0.3351/0.12
-4 10 5 10R4/10 CIExyY:0.5418/0.358/0.12
-4 8 97.5 2.5R4/8 CIExyY:0.4472/0.3031/0.12
-4 8 0 5R4/8 CIExyY:0.469/0.3209/0.12
-4 8 2.5 7.5R4/8 CIExyY:0.485/0.3359/0.12
-4 8 5 10R4/8 CIExyY:0.4995/0.3557/0.12
-4 6 97.5 2.5R4/6 CIExyY:0.4141/0.3085/0.12
-4 6 0 5R4/6 CIExyY:0.4299/0.3226/0.12
-4 6 2.5 7.5R4/6 CIExyY:0.4415/0.334/0.12
-4 6 5 10R4/6 CIExyY:0.4535/0.35/0.12
-4 4 97.5 2.5R4/4 CIExyY:0.3806/0.3125/0.12
-4 4 0 5R4/4 CIExyY:0.3916/0.3223/0.12
-4 4 2.5 7.5R4/4 CIExyY:0.399/0.33/0.12
-4 4 5 10R4/4 CIExyY:0.4078/0.3412/0.12
-4 3 97.5 2.5R4/3 CIExyY:0.3635/0.3139/0.12
-4 3 0 5R4/3 CIExyY:0.3713/0.3214/0.12
-4 3 2.5 7.5R4/3 CIExyY:0.3765/0.327/0.12
-4 3 5 10R4/3 CIExyY:0.3832/0.3356/0.12
-4 2 97.5 2.5R4/2 CIExyY:0.3461/0.315/0.12
-4 2 0 5R4/2 CIExyY:0.3508/0.32/0.12
-4 2 2.5 7.5R4/2 CIExyY:0.3538/0.3236/0.12
-4 2 5 10R4/2 CIExyY:0.3582/0.3294/0.12
-4 1 0 5R4/1 CIExyY:0.3303/0.3183/0.12
-4 1 5 10R4/1 CIExyY:0.3336/0.3229/0.12
-3 16 97.5 2.5R3/16 CIExyY:0.6116/0.2456/0.06555
-3 16 0 5R3/16 CIExyY:0.652/0.266/0.06555
-3 16 2.5 7.5R3/16 CIExyY:0.6817/0.2872/0.06555
-3 14 97.5 2.5R3/14 CIExyY:0.5828/0.2579/0.06555
-3 14 0 5R3/14 CIExyY:0.6204/0.2789/0.06555
-3 14 2.5 7.5R3/14 CIExyY:0.6492/0.3012/0.06555
-3 14 5 10R3/14 CIExyY:0.6703/0.3249/0.06555
-3 12 97.5 2.5R3/12 CIExyY:0.5536/0.2691/0.06555
-3 12 0 5R3/12 CIExyY:0.5884/0.2904/0.06555
-3 12 2.5 7.5R3/12 CIExyY:0.6158/0.3129/0.06555
-3 12 5 10R3/12 CIExyY:0.6322/0.3361/0.06555
-3 10 97.5 2.5R3/10 CIExyY:0.5191/0.2811/0.06555
-3 10 0 5R3/10 CIExyY:0.55/0.3024/0.06555
-3 10 2.5 7.5R3/10 CIExyY:0.573/0.324/0.06555
-3 10 5 10R3/10 CIExyY:0.5871/0.344/0.06555
-3 8 97.5 2.5R3/8 CIExyY:0.4821/0.2918/0.06555
-3 8 0 5R3/8 CIExyY:0.5064/0.3114/0.06555
-3 8 2.5 7.5R3/8 CIExyY:0.5251/0.3297/0.06555
-3 8 5 10R3/8 CIExyY:0.5393/0.3477/0.06555
-3 6 97.5 2.5R3/6 CIExyY:0.4409/0.3009/0.06555
-3 6 0 5R3/6 CIExyY:0.4592/0.3168/0.06555
-3 6 2.5 7.5R3/6 CIExyY:0.4738/0.3316/0.06555
-3 6 5 10R3/6 CIExyY:0.4854/0.3467/0.06555
-3 4 97.5 2.5R3/4 CIExyY:0.4021/0.3076/0.06555
-3 4 0 5R3/4 CIExyY:0.4148/0.319/0.06555
-3 4 2.5 7.5R3/4 CIExyY:0.424/0.3302/0.06555
-3 4 5 10R3/4 CIExyY:0.4308/0.3412/0.06555
-3 3 97.5 2.5R3/3 CIExyY:0.3812/0.3105/0.06555
-3 3 0 5R3/3 CIExyY:0.3903/0.3193/0.06555
-3 3 2.5 7.5R3/3 CIExyY:0.3971/0.3279/0.06555
-3 3 5 10R3/3 CIExyY:0.4023/0.3369/0.06555
-3 2 97.5 2.5R3/2 CIExyY:0.3591/0.313/0.06555
-3 2 0 5R3/2 CIExyY:0.3645/0.319/0.06555
-3 2 2.5 7.5R3/2 CIExyY:0.369/0.3248/0.06555
-3 2 5 10R3/2 CIExyY:0.3728/0.3314/0.06555
-3 1 0 5R3/1 CIExyY:0.3377/0.318/0.06555
-3 1 5 10R3/1 CIExyY:0.3421/0.3246/0.06555
-2 14 97.5 2.5R2/14 CIExyY:0.5734/0.2083/0.03126
-2 14 0 5R2/14 CIExyY:0.6302/0.2287/0.03126
-2 14 2.5 7.5R2/14 CIExyY:0.6791/0.252/0.03126
-2 14 5 10R2/14 CIExyY:0.7165/0.2734/0.03126
-2 12 97.5 2.5R2/12 CIExyY:0.5438/0.2254/0.03126
-2 12 0 5R2/12 CIExyY:0.593/0.2465/0.03126
-2 12 2.5 7.5R2/12 CIExyY:0.6392/0.2704/0.03126
-2 12 5 10R2/12 CIExyY:0.6732/0.2937/0.03126
-2 10 97.5 2.5R2/10 CIExyY:0.5122/0.2428/0.03126
-2 10 0 5R2/10 CIExyY:0.5557/0.2633/0.03126
-2 10 2.5 7.5R2/10 CIExyY:0.5952/0.2874/0.03126
-2 10 5 10R2/10 CIExyY:0.6247/0.312/0.03126
-2 8 97.5 2.5R2/8 CIExyY:0.4776/0.2593/0.03126
-2 8 0 5R2/8 CIExyY:0.5143/0.28/0.03126
-2 8 2.5 7.5R2/8 CIExyY:0.5433/0.3027/0.03126
-2 8 5 10R2/8 CIExyY:0.5713/0.3259/0.03126
-2 6 97.5 2.5R2/6 CIExyY:0.439/0.276/0.03126
-2 6 0 5R2/6 CIExyY:0.4642/0.2934/0.03126
-2 6 2.5 7.5R2/6 CIExyY:0.4875/0.3123/0.03126
-2 6 5 10R2/6 CIExyY:0.5095/0.3331/0.03126
-2 4 97.5 2.5R2/4 CIExyY:0.4021/0.29/0.03126
-2 4 0 5R2/4 CIExyY:0.4184/0.3032/0.03126
-2 4 2.5 7.5R2/4 CIExyY:0.4335/0.3169/0.03126
-2 4 5 10R2/4 CIExyY:0.4481/0.333/0.03126
-2 3 97.5 2.5R2/3 CIExyY:0.3827/0.2967/0.03126
-2 3 0 5R2/3 CIExyY:0.3946/0.3074/0.03126
-2 3 2.5 7.5R2/3 CIExyY:0.405/0.3179/0.03126
-2 3 5 10R2/3 CIExyY:0.4152/0.3309/0.03126
-2 2 97.5 2.5R2/2 CIExyY:0.3614/0.3033/0.03126
-2 2 0 5R2/2 CIExyY:0.3692/0.3111/0.03126
-2 2 2.5 7.5R2/2 CIExyY:0.3751/0.3181/0.03126
-2 2 5 10R2/2 CIExyY:0.3811/0.3274/0.03126
-2 1 0 5R2/1 CIExyY:0.3413/0.3141/0.03126
-2 1 5 10R2/1 CIExyY:0.346/0.3225/0.03126
-1 10 97.5 2.5R1/10 CIExyY:0.5058/0.19/0.0121
-1 10 0 5R1/10 CIExyY:0.5604/0.21/0.0121
-1 10 2.5 7.5R1/10 CIExyY:0.6111/0.229/0.0121
-1 10 5 10R1/10 CIExyY:0.6661/0.2499/0.0121
-1 8 97.5 2.5R1/8 CIExyY:0.4812/0.2103/0.0121
-1 8 0 5R1/8 CIExyY:0.5282/0.2297/0.0121
-1 8 2.5 7.5R1/8 CIExyY:0.5722/0.2487/0.0121
-1 8 5 10R1/8 CIExyY:0.6178/0.2713/0.0121
-1 6 97.5 2.5R1/6 CIExyY:0.4515/0.2329/0.0121
-1 6 0 5R1/6 CIExyY:0.4885/0.2515/0.0121
-1 6 2.5 7.5R1/6 CIExyY:0.5235/0.2698/0.0121
-1 6 5 10R1/6 CIExyY:0.5584/0.2921/0.0121
-1 4 97.5 2.5R1/4 CIExyY:0.4166/0.2569/0.0121
-1 4 0 5R1/4 CIExyY:0.442/0.2728/0.0121
-1 4 2.5 7.5R1/4 CIExyY:0.466/0.2888/0.0121
-1 4 5 10R1/4 CIExyY:0.4933/0.3068/0.0121
-1 2 97.5 2.5R1/2 CIExyY:0.3768/0.2816/0.0121
-1 2 0 5R1/2 CIExyY:0.3908/0.2929/0.0121
-1 2 2.5 7.5R1/2 CIExyY:0.402/0.3034/0.0121
-1 2 5 10R1/2 CIExyY:0.4128/0.3154/0.0121
-9 8 12.5 7.5YR9/8 CIExyY:0.422/0.393/0.7866
-9 8 15 10YR9/8 CIExyY:0.4199/0.4069/0.7866
-9 6 7.5 2.5YR9/6 CIExyY:0.3927/0.355/0.7866
-9 6 10 5YR9/6 CIExyY:0.3948/0.3659/0.7866
-9 6 12.5 7.5YR9/6 CIExyY:0.395/0.3763/0.7866
-9 6 15 10YR9/6 CIExyY:0.3941/0.3877/0.7866
-9 4 7.5 2.5YR9/4 CIExyY:0.3641/0.3422/0.7866
-9 4 10 5YR9/4 CIExyY:0.3668/0.3509/0.7866
-9 4 12.5 7.5YR9/4 CIExyY:0.3679/0.3585/0.7866
-9 4 15 10YR9/4 CIExyY:0.3677/0.3668/0.7866
-9 3 15 10YR9/3 CIExyY:0.3536/0.3553/0.7866
-9 2 7.5 2.5YR9/2 CIExyY:0.332/0.3273/0.7866
-9 2 10 5YR9/2 CIExyY:0.3353/0.3325/0.7866
-9 2 12.5 7.5YR9/2 CIExyY:0.338/0.3377/0.7866
-9 2 15 10YR9/2 CIExyY:0.3392/0.343/0.7866
-9 1 10 5YR9/1 CIExyY:0.3213/0.3238/0.7866
-9 1 15 10YR9/1 CIExyY:0.3246/0.33/0.7866
-8 20 12.5 7.5YR8/20 CIExyY:0.5391/0.4518/0.591
-8 20 15 10YR8/20 CIExyY:0.5245/0.4709/0.591
-8 18 12.5 7.5YR8/18 CIExyY:0.5316/0.448/0.591
-8 18 15 10YR8/18 CIExyY:0.5179/0.467/0.591
-8 16 12.5 7.5YR8/16 CIExyY:0.5195/0.4424/0.591
-8 16 15 10YR8/16 CIExyY:0.5079/0.4613/0.591
-8 14 10 5YR8/14 CIExyY:0.5088/0.4145/0.591
-8 14 12.5 7.5YR8/14 CIExyY:0.5025/0.4338/0.591
-8 14 15 10YR8/14 CIExyY:0.494/0.453/0.591
-8 12 7.5 2.5YR8/12 CIExyY:0.4852/0.3847/0.591
-8 12 10 5YR8/12 CIExyY:0.4849/0.405/0.591
-8 12 12.5 7.5YR8/12 CIExyY:0.4816/0.4232/0.591
-8 12 15 10YR8/12 CIExyY:0.4753/0.4414/0.591
-8 10 7.5 2.5YR8/10 CIExyY:0.4552/0.3761/0.591
-8 10 10 5YR8/10 CIExyY:0.4576/0.3938/0.591
-8 10 12.5 7.5YR8/10 CIExyY:0.4568/0.41/0.591
-8 10 15 10YR8/10 CIExyY:0.4527/0.4268/0.591
-8 8 7.5 2.5YR8/8 CIExyY:0.4275/0.3662/0.591
-8 8 10 5YR8/8 CIExyY:0.431/0.382/0.591
-8 8 12.5 7.5YR8/8 CIExyY:0.4306/0.3952/0.591
-8 8 15 10YR8/8 CIExyY:0.428/0.4102/0.591
-8 6 7.5 2.5YR8/6 CIExyY:0.396/0.3547/0.591
-8 6 10 5YR8/6 CIExyY:0.3988/0.3663/0.591
-8 6 12.5 7.5YR8/6 CIExyY:0.4/0.377/0.591
-8 6 15 10YR8/6 CIExyY:0.3994/0.3896/0.591
-8 4 7.5 2.5YR8/4 CIExyY:0.3667/0.3429/0.591
-8 4 10 5YR8/4 CIExyY:0.369/0.351/0.591
-8 4 12.5 7.5YR8/4 CIExyY:0.3699/0.3586/0.591
-8 4 15 10YR8/4 CIExyY:0.3701/0.3674/0.591
-8 3 7.5 2.5YR8/3 CIExyY:0.3497/0.3352/0.591
-8 3 10 5YR8/3 CIExyY:0.353/0.3421/0.591
-8 3 12.5 7.5YR8/3 CIExyY:0.3547/0.3484/0.591
-8 3 15 10YR8/3 CIExyY:0.3555/0.3557/0.591
-8 2 7.5 2.5YR8/2 CIExyY:0.3334/0.3276/0.591
-8 2 10 5YR8/2 CIExyY:0.3373/0.333/0.591
-8 2 12.5 7.5YR8/2 CIExyY:0.3395/0.3379/0.591
-8 2 15 10YR8/2 CIExyY:0.3407/0.3434/0.591
-8 1 10 5YR8/1 CIExyY:0.3227/0.3242/0.591
-8 1 15 10YR8/1 CIExyY:0.3256/0.3303/0.591
-7 20 7.5 2.5YR7/20 CIExyY:0.5824/0.4046/0.4306
-7 20 10 5YR7/20 CIExyY:0.5657/0.4298/0.4306
-7 18 7.5 2.5YR7/18 CIExyY:0.5695/0.4024/0.4306
-7 18 10 5YR7/18 CIExyY:0.5564/0.4267/0.4306
-7 18 12.5 7.5YR7/18 CIExyY:0.5417/0.4492/0.4306
-7 18 15 10YR7/18 CIExyY:0.5276/0.47/0.4306
-7 16 7.5 2.5YR7/16 CIExyY:0.5522/0.3989/0.4306
-7 16 10 5YR7/16 CIExyY:0.5437/0.4228/0.4306
-7 16 12.5 7.5YR7/16 CIExyY:0.5319/0.4449/0.4306
-7 16 15 10YR7/16 CIExyY:0.5188/0.465/0.4306
-7 14 7.5 2.5YR7/14 CIExyY:0.5297/0.3938/0.4306
-7 14 10 5YR7/14 CIExyY:0.5252/0.4168/0.4306
-7 14 12.5 7.5YR7/14 CIExyY:0.5174/0.4381/0.4306
-7 14 15 10YR7/14 CIExyY:0.5074/0.4581/0.4306
-7 12 7.5 2.5YR7/12 CIExyY:0.5001/0.3861/0.4306
-7 12 10 5YR7/12 CIExyY:0.5007/0.4081/0.4306
-7 12 12.5 7.5YR7/12 CIExyY:0.497/0.4282/0.4306
-7 12 15 10YR7/12 CIExyY:0.49/0.448/0.4306
-7 10 7.5 2.5YR7/10 CIExyY:0.4671/0.3768/0.4306
-7 10 10 5YR7/10 CIExyY:0.4711/0.3972/0.4306
-7 10 12.5 7.5YR7/10 CIExyY:0.4704/0.4151/0.4306
-7 10 15 10YR7/10 CIExyY:0.4667/0.4335/0.4306
-7 8 7.5 2.5YR7/8 CIExyY:0.4371/0.3679/0.4306
-7 8 10 5YR7/8 CIExyY:0.4402/0.3842/0.4306
-7 8 12.5 7.5YR7/8 CIExyY:0.4415/0.3996/0.4306
-7 8 15 10YR7/8 CIExyY:0.4399/0.4164/0.4306
-7 6 7.5 2.5YR7/6 CIExyY:0.4053/0.357/0.4306
-7 6 10 5YR7/6 CIExyY:0.4091/0.3701/0.4306
-7 6 12.5 7.5YR7/6 CIExyY:0.4107/0.382/0.4306
-7 6 15 10YR7/6 CIExyY:0.4102/0.396/0.4306
-7 4 7.5 2.5YR7/4 CIExyY:0.3715/0.3439/0.4306
-7 4 10 5YR7/4 CIExyY:0.375/0.353/0.4306
-7 4 12.5 7.5YR7/4 CIExyY:0.3772/0.3613/0.4306
-7 4 15 10YR7/4 CIExyY:0.3778/0.3719/0.4306
-7 3 7.5 2.5YR7/3 CIExyY:0.3551/0.3369/0.4306
-7 3 10 5YR7/3 CIExyY:0.3584/0.344/0.4306
-7 3 12.5 7.5YR7/3 CIExyY:0.3605/0.3507/0.4306
-7 3 15 10YR7/3 CIExyY:0.3612/0.359/0.4306
-7 2 7.5 2.5YR7/2 CIExyY:0.3392/0.3298/0.4306
-7 2 10 5YR7/2 CIExyY:0.3421/0.3349/0.4306
-7 2 12.5 7.5YR7/2 CIExyY:0.3437/0.3397/0.4306
-7 2 15 10YR7/2 CIExyY:0.3443/0.3454/0.4306
-7 1 10 5YR7/1 CIExyY:0.326/0.3256/0.4306
-7 1 15 10YR7/1 CIExyY:0.3273/0.3312/0.4306
-6 18 7.5 2.5YR6/18 CIExyY:0.5879/0.4021/0.3005
-6 18 10 5YR6/18 CIExyY:0.5715/0.427/0.3005
-6 16 7.5 2.5YR6/16 CIExyY:0.5698/0.399/0.3005
-6 16 10 5YR6/16 CIExyY:0.5597/0.4239/0.3005
-6 16 12.5 7.5YR6/16 CIExyY:0.5468/0.4478/0.3005
-6 14 7.5 2.5YR6/14 CIExyY:0.5488/0.3947/0.3005
-6 14 10 5YR6/14 CIExyY:0.5423/0.4188/0.3005
-6 14 12.5 7.5YR6/14 CIExyY:0.532/0.4412/0.3005
-6 14 15 10YR6/14 CIExyY:0.52/0.4623/0.3005
-6 12 7.5 2.5YR6/12 CIExyY:0.5215/0.3887/0.3005
-6 12 10 5YR6/12 CIExyY:0.5199/0.4119/0.3005
-6 12 12.5 7.5YR6/12 CIExyY:0.5145/0.4331/0.3005
-6 12 15 10YR6/12 CIExyY:0.505/0.4536/0.3005
-6 10 7.5 2.5YR6/10 CIExyY:0.4891/0.3806/0.3005
-6 10 10 5YR6/10 CIExyY:0.4921/0.4022/0.3005
-6 10 12.5 7.5YR6/10 CIExyY:0.4904/0.422/0.3005
-6 10 15 10YR6/10 CIExyY:0.4843/0.4416/0.3005
-6 8 7.5 2.5YR6/8 CIExyY:0.4533/0.3708/0.3005
-6 8 10 5YR6/8 CIExyY:0.4592/0.39/0.3005
-6 8 12.5 7.5YR6/8 CIExyY:0.4596/0.4064/0.3005
-6 8 15 10YR6/8 CIExyY:0.457/0.4249/0.3005
-6 6 7.5 2.5YR6/6 CIExyY:0.418/0.36/0.3005
-6 6 10 5YR6/6 CIExyY:0.4229/0.375/0.3005
-6 6 12.5 7.5YR6/6 CIExyY:0.4242/0.3876/0.3005
-6 6 15 10YR6/6 CIExyY:0.424/0.403/0.3005
-6 4 7.5 2.5YR6/4 CIExyY:0.3806/0.3467/0.3005
-6 4 10 5YR6/4 CIExyY:0.384/0.3564/0.3005
-6 4 12.5 7.5YR6/4 CIExyY:0.386/0.3652/0.3005
-6 4 15 10YR6/4 CIExyY:0.3861/0.3767/0.3005
-6 3 7.5 2.5YR6/3 CIExyY:0.3628/0.3396/0.3005
-6 3 10 5YR6/3 CIExyY:0.3656/0.347/0.3005
-6 3 12.5 7.5YR6/3 CIExyY:0.3674/0.3539/0.3005
-6 3 15 10YR6/3 CIExyY:0.3677/0.3629/0.3005
-6 2 7.5 2.5YR6/2 CIExyY:0.3453/0.3321/0.3005
-6 2 10 5YR6/2 CIExyY:0.3474/0.3373/0.3005
-6 2 12.5 7.5YR6/2 CIExyY:0.3487/0.3421/0.3005
-6 2 15 10YR6/2 CIExyY:0.3491/0.3483/0.3005
-6 1 10 5YR6/1 CIExyY:0.329/0.3271/0.3005
-6 1 15 10YR6/1 CIExyY:0.33/0.3328/0.3005
-5 16 7.5 2.5YR5/16 CIExyY:0.5933/0.3989/0.1977
-5 14 7.5 2.5YR5/14 CIExyY:0.5731/0.3953/0.1977
-5 14 10 5YR5/14 CIExyY:0.5642/0.4201/0.1977
-5 14 12.5 7.5YR5/14 CIExyY:0.5506/0.445/0.1977
-5 12 7.5 2.5YR5/12 CIExyY:0.5482/0.3909/0.1977
-5 12 10 5YR5/12 CIExyY:0.5422/0.4141/0.1977
-5 12 12.5 7.5YR5/12 CIExyY:0.5335/0.4373/0.1977
-5 12 15 10YR5/12 CIExyY:0.5211/0.46/0.1977
-5 10 7.5 2.5YR5/10 CIExyY:0.5175/0.3844/0.1977
-5 10 10 5YR5/10 CIExyY:0.5161/0.4064/0.1977
-5 10 12.5 7.5YR5/10 CIExyY:0.5108/0.4276/0.1977
-5 10 15 10YR5/10 CIExyY:0.5025/0.4489/0.1977
-5 8 7.5 2.5YR5/8 CIExyY:0.4795/0.3758/0.1977
-5 8 10 5YR5/8 CIExyY:0.483/0.396/0.1977
-5 8 12.5 7.5YR5/8 CIExyY:0.482/0.4141/0.1977
-5 8 15 10YR5/8 CIExyY:0.477/0.4338/0.1977
-5 6 7.5 2.5YR5/6 CIExyY:0.4365/0.364/0.1977
-5 6 10 5YR5/6 CIExyY:0.442/0.3808/0.1977
-5 6 12.5 7.5YR5/6 CIExyY:0.444/0.3954/0.1977
-5 6 15 10YR5/6 CIExyY:0.4428/0.4128/0.1977
-5 4 7.5 2.5YR5/4 CIExyY:0.3925/0.3494/0.1977
-5 4 10 5YR5/4 CIExyY:0.3968/0.3614/0.1977
-5 4 12.5 7.5YR5/4 CIExyY:0.3991/0.3714/0.1977
-5 4 15 10YR5/4 CIExyY:0.3995/0.384/0.1977
-5 3 7.5 2.5YR5/3 CIExyY:0.3713/0.3417/0.1977
-5 3 10 5YR5/3 CIExyY:0.3748/0.3507/0.1977
-5 3 12.5 7.5YR5/3 CIExyY:0.3765/0.3582/0.1977
-5 3 15 10YR5/3 CIExyY:0.3771/0.3681/0.1977
-5 2 7.5 2.5YR5/2 CIExyY:0.3506/0.3337/0.1977
-5 2 10 5YR5/2 CIExyY:0.353/0.3395/0.1977
-5 2 12.5 7.5YR5/2 CIExyY:0.354/0.3445/0.1977
-5 2 15 10YR5/2 CIExyY:0.3546/0.3514/0.1977
-5 1 10 5YR5/1 CIExyY:0.3315/0.328/0.1977
-5 1 15 10YR5/1 CIExyY:0.3322/0.3341/0.1977
-4 12 7.5 2.5YR4/12 CIExyY:0.5809/0.391/0.12
-4 12 10 5YR4/12 CIExyY:0.5729/0.4169/0.12
-4 10 7.5 2.5YR4/10 CIExyY:0.5475/0.3856/0.12
-4 10 10 5YR4/10 CIExyY:0.5432/0.4097/0.12
-4 10 12.5 7.5YR4/10 CIExyY:0.5356/0.4342/0.12
-4 10 15 10YR4/10 CIExyY:0.525/0.4573/0.12
-4 8 7.5 2.5YR4/8 CIExyY:0.5071/0.3777/0.12
-4 8 10 5YR4/8 CIExyY:0.507/0.3994/0.12
-4 8 12.5 7.5YR4/8 CIExyY:0.5038/0.4204/0.12
-4 8 15 10YR4/8 CIExyY:0.4965/0.4414/0.12
-4 6 7.5 2.5YR4/6 CIExyY:0.4612/0.3674/0.12
-4 6 10 5YR4/6 CIExyY:0.4651/0.3859/0.12
-4 6 12.5 7.5YR4/6 CIExyY:0.4655/0.4029/0.12
-4 6 15 10YR4/6 CIExyY:0.4618/0.4213/0.12
-4 4 7.5 2.5YR4/4 CIExyY:0.4141/0.3539/0.12
-4 4 10 5YR4/4 CIExyY:0.4187/0.3679/0.12
-4 4 12.5 7.5YR4/4 CIExyY:0.4208/0.3809/0.12
-4 4 15 10YR4/4 CIExyY:0.4189/0.3948/0.12
-4 3 7.5 2.5YR4/3 CIExyY:0.3886/0.3457/0.12
-4 3 10 5YR4/3 CIExyY:0.3924/0.3567/0.12
-4 3 12.5 7.5YR4/3 CIExyY:0.3942/0.3664/0.12
-4 3 15 10YR4/3 CIExyY:0.3933/0.3779/0.12
-4 2 7.5 2.5YR4/2 CIExyY:0.3624/0.3367/0.12
-4 2 10 5YR4/2 CIExyY:0.3651/0.3442/0.12
-4 2 12.5 7.5YR4/2 CIExyY:0.3662/0.3504/0.12
-4 2 15 10YR4/2 CIExyY:0.366/0.359/0.12
-4 1 10 5YR4/1 CIExyY:0.3374/0.3307/0.12
-4 1 15 10YR4/1 CIExyY:0.338/0.3384/0.12
-3 10 7.5 2.5YR3/10 CIExyY:0.5941/0.3818/0.06555
-3 8 7.5 2.5YR3/8 CIExyY:0.5475/0.3771/0.06555
-3 8 10 5YR3/8 CIExyY:0.5456/0.404/0.06555
-3 8 12.5 7.5YR3/8 CIExyY:0.539/0.4306/0.06555
-3 8 15 10YR3/8 CIExyY:0.5305/0.4559/0.06555
-3 6 7.5 2.5YR3/6 CIExyY:0.4954/0.3692/0.06555
-3 6 10 5YR3/6 CIExyY:0.4966/0.3908/0.06555
-3 6 12.5 7.5YR3/6 CIExyY:0.493/0.4116/0.06555
-3 6 15 10YR3/6 CIExyY:0.4872/0.4326/0.06555
-3 4 7.5 2.5YR3/4 CIExyY:0.436/0.3563/0.06555
-3 4 10 5YR3/4 CIExyY:0.4376/0.3715/0.06555
-3 4 12.5 7.5YR3/4 CIExyY:0.4378/0.3865/0.06555
-3 4 15 10YR3/4 CIExyY:0.4341/0.4018/0.06555
-3 3 7.5 2.5YR3/3 CIExyY:0.4062/0.3483/0.06555
-3 3 10 5YR3/3 CIExyY:0.4079/0.3603/0.06555
-3 3 12.5 7.5YR3/3 CIExyY:0.4082/0.3715/0.06555
-3 3 15 10YR3/3 CIExyY:0.4051/0.3834/0.06555
-3 2 7.5 2.5YR3/2 CIExyY:0.3757/0.3391/0.06555
-3 2 10 5YR3/2 CIExyY:0.3771/0.3476/0.06555
-3 2 12.5 7.5YR3/2 CIExyY:0.3771/0.3549/0.06555
-3 2 15 10YR3/2 CIExyY:0.3747/0.363/0.06555
-3 1 10 5YR3/1 CIExyY:0.3447/0.333/0.06555
-3 1 15 10YR3/1 CIExyY:0.343/0.3406/0.06555
-2 8 7.5 2.5YR2/8 CIExyY:0.5995/0.359/0.03126
-2 6 7.5 2.5YR2/6 CIExyY:0.528/0.3581/0.03126
-2 6 10 5YR2/6 CIExyY:0.5426/0.3925/0.03126
-2 6 12.5 7.5YR2/6 CIExyY:0.5475/0.4271/0.03126
-2 4 7.5 2.5YR2/4 CIExyY:0.4598/0.3508/0.03126
-2 4 10 5YR2/4 CIExyY:0.4674/0.3738/0.03126
-2 4 12.5 7.5YR2/4 CIExyY:0.469/0.3964/0.03126
-2 4 15 10YR2/4 CIExyY:0.4676/0.4168/0.03126
-2 3 10 5YR2/3 CIExyY:0.4279/0.3615/0.03126
-2 3 12.5 7.5YR2/3 CIExyY:0.429/0.3785/0.03126
-2 2 7.5 2.5YR2/2 CIExyY:0.3852/0.3365/0.03126
-2 2 10 5YR2/2 CIExyY:0.388/0.3476/0.03126
-2 2 12.5 7.5YR2/2 CIExyY:0.3889/0.359/0.03126
-2 2 15 10YR2/2 CIExyY:0.3872/0.3688/0.03126
-2 1 10 5YR2/1 CIExyY:0.3485/0.3324/0.03126
-2 1 15 10YR2/1 CIExyY:0.3482/0.3431/0.03126
-1 8 7.5 2.5YR1/8 CIExyY:0.6721/0.3058/0.0121
-1 6 7.5 2.5YR1/6 CIExyY:0.6048/0.327/0.0121
-1 4 7.5 2.5YR1/4 CIExyY:0.5311/0.3371/0.0121
-1 4 10 5YR1/4 CIExyY:0.566/0.3795/0.0121
-1 2 7.5 2.5YR1/2 CIExyY:0.4258/0.3344/0.0121
-1 2 10 5YR1/2 CIExyY:0.4377/0.358/0.0121
-1 2 12.5 7.5YR1/2 CIExyY:0.443/0.3775/0.0121
-1 2 15 10YR1/2 CIExyY:0.4446/0.3982/0.0121
-9 20 20 5Y9/20 CIExyY:0.483/0.5092/0.7866
-9 18 20 5Y9/18 CIExyY:0.4782/0.5049/0.7866
-9 18 22.5 7.5Y9/18 CIExyY:0.4663/0.5188/0.7866
-9 18 25 10Y9/18 CIExyY:0.454/0.532/0.7866
-9 16 20 5Y9/16 CIExyY:0.4711/0.4977/0.7866
-9 16 22.5 7.5Y9/16 CIExyY:0.4595/0.5104/0.7866
-9 16 25 10Y9/16 CIExyY:0.4477/0.5225/0.7866
-9 14 20 5Y9/14 CIExyY:0.4602/0.4869/0.7866
-9 14 22.5 7.5Y9/14 CIExyY:0.4503/0.4993/0.7866
-9 14 25 10Y9/14 CIExyY:0.4393/0.5101/0.7866
-9 12 17.5 2.5Y9/12 CIExyY:0.4569/0.4527/0.7866
-9 12 20 5Y9/12 CIExyY:0.4455/0.4719/0.7866
-9 12 22.5 7.5Y9/12 CIExyY:0.4369/0.4829/0.7866
-9 12 25 10Y9/12 CIExyY:0.4271/0.492/0.7866
-9 10 17.5 2.5Y9/10 CIExyY:0.437/0.4369/0.7866
-9 10 20 5Y9/10 CIExyY:0.4275/0.4529/0.7866
-9 10 22.5 7.5Y9/10 CIExyY:0.4201/0.4622/0.7866
-9 10 25 10Y9/10 CIExyY:0.412/0.4694/0.7866
-9 8 17.5 2.5Y9/8 CIExyY:0.4154/0.4186/0.7866
-9 8 20 5Y9/8 CIExyY:0.408/0.4319/0.7866
-9 8 22.5 7.5Y9/8 CIExyY:0.4019/0.4392/0.7866
-9 8 25 10Y9/8 CIExyY:0.3957/0.445/0.7866
-9 6 17.5 2.5Y9/6 CIExyY:0.391/0.3972/0.7866
-9 6 20 5Y9/6 CIExyY:0.3858/0.4071/0.7866
-9 6 22.5 7.5Y9/6 CIExyY:0.3811/0.4123/0.7866
-9 6 25 10Y9/6 CIExyY:0.3761/0.4155/0.7866
-9 4 17.5 2.5Y9/4 CIExyY:0.3655/0.3738/0.7866
-9 4 20 5Y9/4 CIExyY:0.3621/0.3799/0.7866
-9 4 22.5 7.5Y9/4 CIExyY:0.3591/0.3832/0.7866
-9 4 25 10Y9/4 CIExyY:0.3558/0.3852/0.7866
-9 3 17.5 2.5Y9/3 CIExyY:0.3525/0.361/0.7866
-9 3 20 5Y9/3 CIExyY:0.3502/0.3656/0.7866
-9 3 22.5 7.5Y9/3 CIExyY:0.3481/0.3684/0.7866
-9 3 25 10Y9/3 CIExyY:0.3456/0.3699/0.7866
-9 2 17.5 2.5Y9/2 CIExyY:0.339/0.3472/0.7866
-9 2 20 5Y9/2 CIExyY:0.3378/0.3504/0.7866
-9 2 22.5 7.5Y9/2 CIExyY:0.3365/0.3527/0.7866
-9 2 25 10Y9/2 CIExyY:0.3349/0.3537/0.7866
-9 1 20 5Y9/1 CIExyY:0.3245/0.3341/0.7866
-9 1 25 10Y9/1 CIExyY:0.3232/0.336/0.7866
-8 20 17.5 2.5Y8/20 CIExyY:0.5091/0.49/0.591
-8 18 17.5 2.5Y8/18 CIExyY:0.5033/0.4855/0.591
-8 18 20 5Y8/18 CIExyY:0.4847/0.5069/0.591
-8 18 22.5 7.5Y8/18 CIExyY:0.4709/0.522/0.591
-8 18 25 10Y8/18 CIExyY:0.457/0.5366/0.591
-8 16 17.5 2.5Y8/16 CIExyY:0.4957/0.48/0.591
-8 16 20 5Y8/16 CIExyY:0.4791/0.5012/0.591
-8 16 22.5 7.5Y8/16 CIExyY:0.4658/0.5158/0.591
-8 16 25 10Y8/16 CIExyY:0.4525/0.5295/0.591
-8 14 17.5 2.5Y8/14 CIExyY:0.4842/0.4712/0.591
-8 14 20 5Y8/14 CIExyY:0.4699/0.492/0.591
-8 14 22.5 7.5Y8/14 CIExyY:0.4574/0.5062/0.591
-8 14 25 10Y8/14 CIExyY:0.445/0.5181/0.591
-8 12 17.5 2.5Y8/12 CIExyY:0.4678/0.4589/0.591
-8 12 20 5Y8/12 CIExyY:0.4562/0.4788/0.591
-8 12 22.5 7.5Y8/12 CIExyY:0.4455/0.4917/0.591
-8 12 25 10Y8/12 CIExyY:0.4341/0.502/0.591
-8 10 17.5 2.5Y8/10 CIExyY:0.4469/0.4423/0.591
-8 10 20 5Y8/10 CIExyY:0.4376/0.4601/0.591
-8 10 22.5 7.5Y8/10 CIExyY:0.4283/0.4712/0.591
-8 10 25 10Y8/10 CIExyY:0.419/0.4791/0.591
-8 8 17.5 2.5Y8/8 CIExyY:0.4231/0.4231/0.591
-8 8 20 5Y8/8 CIExyY:0.4158/0.4378/0.591
-8 8 22.5 7.5Y8/8 CIExyY:0.4088/0.4466/0.591
-8 8 25 10Y8/8 CIExyY:0.4008/0.452/0.591
-8 6 17.5 2.5Y8/6 CIExyY:0.3969/0.4009/0.591
-8 6 20 5Y8/6 CIExyY:0.3913/0.4117/0.591
-8 6 22.5 7.5Y8/6 CIExyY:0.3862/0.4175/0.591
-8 6 25 10Y8/6 CIExyY:0.3803/0.4216/0.591
-8 4 17.5 2.5Y8/4 CIExyY:0.3684/0.3751/0.591
-8 4 20 5Y8/4 CIExyY:0.365/0.3826/0.591
-8 4 22.5 7.5Y8/4 CIExyY:0.3622/0.3861/0.591
-8 4 25 10Y8/4 CIExyY:0.3581/0.3883/0.591
-8 3 17.5 2.5Y8/3 CIExyY:0.3546/0.3621/0.591
-8 3 20 5Y8/3 CIExyY:0.3524/0.3676/0.591
-8 3 22.5 7.5Y8/3 CIExyY:0.3503/0.3704/0.591
-8 3 25 10Y8/3 CIExyY:0.3472/0.3721/0.591
-8 2 17.5 2.5Y8/2 CIExyY:0.3406/0.3484/0.591
-8 2 20 5Y8/2 CIExyY:0.3394/0.3518/0.591
-8 2 22.5 7.5Y8/2 CIExyY:0.3379/0.354/0.591
-8 2 25 10Y8/2 CIExyY:0.3359/0.3552/0.591
-8 1 20 5Y8/1 CIExyY:0.3255/0.3348/0.591
-8 1 25 10Y8/1 CIExyY:0.3237/0.3369/0.591
-7 16 17.5 2.5Y7/16 CIExyY:0.5049/0.4843/0.4306
-7 16 20 5Y7/16 CIExyY:0.4875/0.5047/0.4306
-7 16 22.5 7.5Y7/16 CIExyY:0.4728/0.5215/0.4306
-7 16 25 10Y7/16 CIExyY:0.4582/0.5375/0.4306
-7 14 17.5 2.5Y7/14 CIExyY:0.495/0.4773/0.4306
-7 14 20 5Y7/14 CIExyY:0.4791/0.4965/0.4306
-7 14 22.5 7.5Y7/14 CIExyY:0.4652/0.5128/0.4306
-7 14 25 10Y7/14 CIExyY:0.4516/0.5277/0.4306
-7 12 17.5 2.5Y7/12 CIExyY:0.4806/0.4666/0.4306
-7 12 20 5Y7/12 CIExyY:0.4677/0.4857/0.4306
-7 12 22.5 7.5Y7/12 CIExyY:0.4547/0.5005/0.4306
-7 12 25 10Y7/12 CIExyY:0.442/0.5131/0.4306
-7 10 17.5 2.5Y7/10 CIExyY:0.4606/0.4516/0.4306
-7 10 20 5Y7/10 CIExyY:0.4509/0.4696/0.4306
-7 10 22.5 7.5Y7/10 CIExyY:0.44/0.483/0.4306
-7 10 25 10Y7/10 CIExyY:0.4289/0.4937/0.4306
-7 8 17.5 2.5Y7/8 CIExyY:0.4353/0.4312/0.4306
-7 8 20 5Y7/8 CIExyY:0.4271/0.4462/0.4306
-7 8 22.5 7.5Y7/8 CIExyY:0.4184/0.4568/0.4306
-7 8 25 10Y7/8 CIExyY:0.409/0.4641/0.4306
-7 6 17.5 2.5Y7/6 CIExyY:0.4073/0.4073/0.4306
-7 6 20 5Y7/6 CIExyY:0.4009/0.4198/0.4306
-7 6 22.5 7.5Y7/6 CIExyY:0.3943/0.4264/0.4306
-7 6 25 10Y7/6 CIExyY:0.3864/0.4305/0.4306
-7 4 17.5 2.5Y7/4 CIExyY:0.3761/0.38/0.4306
-7 4 20 5Y7/4 CIExyY:0.3718/0.3885/0.4306
-7 4 22.5 7.5Y7/4 CIExyY:0.3677/0.3925/0.4306
-7 4 25 10Y7/4 CIExyY:0.3624/0.3951/0.4306
-7 3 17.5 2.5Y7/3 CIExyY:0.36/0.3658/0.4306
-7 3 20 5Y7/3 CIExyY:0.357/0.3717/0.4306
-7 3 22.5 7.5Y7/3 CIExyY:0.3538/0.3745/0.4306
-7 3 25 10Y7/3 CIExyY:0.3498/0.3763/0.4306
-7 2 17.5 2.5Y7/2 CIExyY:0.3436/0.3507/0.4306
-7 2 20 5Y7/2 CIExyY:0.3419/0.354/0.4306
-7 2 22.5 7.5Y7/2 CIExyY:0.3396/0.3558/0.4306
-7 2 25 10Y7/2 CIExyY:0.3369/0.3569/0.4306
-7 1 20 5Y7/1 CIExyY:0.3263/0.3356/0.4306
-7 1 25 10Y7/1 CIExyY:0.3237/0.3369/0.4306
-6 14 17.5 2.5Y6/14 CIExyY:0.5061/0.4829/0.3005
-6 14 20 5Y6/14 CIExyY:0.4905/0.5038/0.3005
-6 14 22.5 7.5Y6/14 CIExyY:0.4754/0.522/0.3005
-6 14 25 10Y6/14 CIExyY:0.4593/0.5392/0.3005
-6 12 17.5 2.5Y6/12 CIExyY:0.4928/0.473/0.3005
-6 12 20 5Y6/12 CIExyY:0.478/0.492/0.3005
-6 12 22.5 7.5Y6/12 CIExyY:0.4638/0.5087/0.3005
-6 12 25 10Y6/12 CIExyY:0.4488/0.5237/0.3005
-6 10 17.5 2.5Y6/10 CIExyY:0.476/0.4607/0.3005
-6 10 20 5Y6/10 CIExyY:0.4639/0.479/0.3005
-6 10 22.5 7.5Y6/10 CIExyY:0.4512/0.4943/0.3005
-6 10 25 10Y6/10 CIExyY:0.4372/0.5068/0.3005
-6 8 17.5 2.5Y6/8 CIExyY:0.4517/0.4421/0.3005
-6 8 20 5Y6/8 CIExyY:0.4426/0.4588/0.3005
-6 8 22.5 7.5Y6/8 CIExyY:0.4321/0.4719/0.3005
-6 8 25 10Y6/8 CIExyY:0.4201/0.4812/0.3005
-6 6 17.5 2.5Y6/6 CIExyY:0.4203/0.4176/0.3005
-6 6 20 5Y6/6 CIExyY:0.414/0.4305/0.3005
-6 6 22.5 7.5Y6/6 CIExyY:0.406/0.44/0.3005
-6 6 25 10Y6/6 CIExyY:0.396/0.4452/0.3005
-6 4 17.5 2.5Y6/4 CIExyY:0.384/0.3867/0.3005
-6 4 20 5Y6/4 CIExyY:0.3794/0.3955/0.3005
-6 4 22.5 7.5Y6/4 CIExyY:0.3745/0.4004/0.3005
-6 4 25 10Y6/4 CIExyY:0.3679/0.4033/0.3005
-6 3 17.5 2.5Y6/3 CIExyY:0.3661/0.3708/0.3005
-6 3 20 5Y6/3 CIExyY:0.3626/0.3772/0.3005
-6 3 22.5 7.5Y6/3 CIExyY:0.3589/0.3805/0.3005
-6 3 25 10Y6/3 CIExyY:0.354/0.3824/0.3005
-6 2 17.5 2.5Y6/2 CIExyY:0.348/0.354/0.3005
-6 2 20 5Y6/2 CIExyY:0.3457/0.358/0.3005
-6 2 22.5 7.5Y6/2 CIExyY:0.3431/0.3601/0.3005
-6 2 25 10Y6/2 CIExyY:0.3398/0.3611/0.3005
-6 1 20 5Y6/1 CIExyY:0.3283/0.3378/0.3005
-6 1 25 10Y6/1 CIExyY:0.3252/0.3392/0.3005
-5 12 17.5 2.5Y5/12 CIExyY:0.5082/0.4812/0.1977
-5 12 20 5Y5/12 CIExyY:0.4931/0.5019/0.1977
-5 12 22.5 7.5Y5/12 CIExyY:0.4767/0.5208/0.1977
-5 12 25 10Y5/12 CIExyY:0.459/0.539/0.1977
-5 10 17.5 2.5Y5/10 CIExyY:0.4905/0.4683/0.1977
-5 10 20 5Y5/10 CIExyY:0.4777/0.4876/0.1977
-5 10 22.5 7.5Y5/10 CIExyY:0.4632/0.5057/0.1977
-5 10 25 10Y5/10 CIExyY:0.4468/0.5209/0.1977
-5 8 17.5 2.5Y5/8 CIExyY:0.4685/0.4524/0.1977
-5 8 20 5Y5/8 CIExyY:0.4579/0.4692/0.1977
-5 8 22.5 7.5Y5/8 CIExyY:0.445/0.485/0.1977
-5 8 25 10Y5/8 CIExyY:0.4307/0.4967/0.1977
-5 6 17.5 2.5Y5/6 CIExyY:0.438/0.4292/0.1977
-5 6 20 5Y5/6 CIExyY:0.4302/0.4435/0.1977
-5 6 22.5 7.5Y5/6 CIExyY:0.4199/0.4551/0.1977
-5 6 25 10Y5/6 CIExyY:0.4072/0.4621/0.1977
-5 4 17.5 2.5Y5/4 CIExyY:0.3968/0.3954/0.1977
-5 4 20 5Y5/4 CIExyY:0.3915/0.4057/0.1977
-5 4 22.5 7.5Y5/4 CIExyY:0.385/0.412/0.1977
-5 4 25 10Y5/4 CIExyY:0.3762/0.4158/0.1977
-5 3 17.5 2.5Y5/3 CIExyY:0.3752/0.3766/0.1977
-5 3 20 5Y5/3 CIExyY:0.3708/0.3843/0.1977
-5 3 22.5 7.5Y5/3 CIExyY:0.3661/0.3883/0.1977
-5 3 25 10Y5/3 CIExyY:0.3593/0.3904/0.1977
-5 2 17.5 2.5Y5/2 CIExyY:0.3534/0.357/0.1977
-5 2 20 5Y5/2 CIExyY:0.35/0.362/0.1977
-5 2 22.5 7.5Y5/2 CIExyY:0.347/0.364/0.1977
-5 2 25 10Y5/2 CIExyY:0.3422/0.3648/0.1977
-5 1 20 5Y5/1 CIExyY:0.3296/0.3392/0.1977
-5 1 25 10Y5/1 CIExyY:0.3256/0.3398/0.1977
-4 10 17.5 2.5Y4/10 CIExyY:0.512/0.48/0.12
-4 8 17.5 2.5Y4/8 CIExyY:0.4865/0.4625/0.12
-4 8 20 5Y4/8 CIExyY:0.4745/0.481/0.12
-4 8 22.5 7.5Y4/8 CIExyY:0.4595/0.499/0.12
-4 8 25 10Y4/8 CIExyY:0.443/0.5153/0.12
-4 6 17.5 2.5Y4/6 CIExyY:0.4542/0.4391/0.12
-4 6 20 5Y4/6 CIExyY:0.4451/0.455/0.12
-4 6 22.5 7.5Y4/6 CIExyY:0.4331/0.4688/0.12
-4 6 25 10Y4/6 CIExyY:0.419/0.4795/0.12
-4 4 17.5 2.5Y4/4 CIExyY:0.4138/0.4076/0.12
-4 4 20 5Y4/4 CIExyY:0.4069/0.4188/0.12
-4 4 22.5 7.5Y4/4 CIExyY:0.3982/0.4272/0.12
-4 4 25 10Y4/4 CIExyY:0.3871/0.4321/0.12
-4 3 17.5 2.5Y4/3 CIExyY:0.3893/0.3876/0.12
-4 3 20 5Y4/3 CIExyY:0.3836/0.3955/0.12
-4 3 22.5 7.5Y4/3 CIExyY:0.3768/0.4009/0.12
-4 3 25 10Y4/3 CIExyY:0.3677/0.4032/0.12
-4 2 17.5 2.5Y4/2 CIExyY:0.3633/0.3654/0.12
-4 2 20 5Y4/2 CIExyY:0.359/0.3701/0.12
-4 2 22.5 7.5Y4/2 CIExyY:0.3542/0.3727/0.12
-4 2 25 10Y4/2 CIExyY:0.3476/0.3731/0.12
-4 1 20 5Y4/1 CIExyY:0.3341/0.3434/0.12
-4 1 25 10Y4/1 CIExyY:0.328/0.3437/0.12
-3 6 17.5 2.5Y3/6 CIExyY:0.4784/0.4531/0.06555
-3 6 20 5Y3/6 CIExyY:0.467/0.4711/0.06555
-3 6 22.5 7.5Y3/6 CIExyY:0.4526/0.4889/0.06555
-3 6 25 10Y3/6 CIExyY:0.4345/0.5026/0.06555
-3 4 17.5 2.5Y3/4 CIExyY:0.4277/0.4166/0.06555
-3 4 20 5Y3/4 CIExyY:0.4191/0.4283/0.06555
-3 4 22.5 7.5Y3/4 CIExyY:0.4086/0.4379/0.06555
-3 4 25 10Y3/4 CIExyY:0.3961/0.4452/0.06555
-3 3 17.5 2.5Y3/3 CIExyY:0.3996/0.3944/0.06555
-3 3 20 5Y3/3 CIExyY:0.3923/0.4025/0.06555
-3 3 22.5 7.5Y3/3 CIExyY:0.3841/0.4085/0.06555
-3 3 25 10Y3/3 CIExyY:0.3739/0.4124/0.06555
-3 2 17.5 2.5Y3/2 CIExyY:0.3703/0.37/0.06555
-3 2 20 5Y3/2 CIExyY:0.3646/0.3748/0.06555
-3 2 22.5 7.5Y3/2 CIExyY:0.3589/0.3778/0.06555
-3 2 25 10Y3/2 CIExyY:0.3513/0.3789/0.06555
-3 1 20 5Y3/1 CIExyY:0.3369/0.3458/0.06555
-3 1 25 10Y3/1 CIExyY:0.3296/0.3464/0.06555
-2 4 17.5 2.5Y2/4 CIExyY:0.4627/0.4392/0.03126
-2 4 20 5Y2/4 CIExyY:0.4543/0.4573/0.03126
-2 4 22.5 7.5Y2/4 CIExyY:0.4401/0.4723/0.03126
-2 4 25 10Y2/4 CIExyY:0.4188/0.4789/0.03126
-2 2 17.5 2.5Y2/2 CIExyY:0.3825/0.3785/0.03126
-2 2 20 5Y2/2 CIExyY:0.3757/0.3839/0.03126
-2 2 22.5 7.5Y2/2 CIExyY:0.366/0.3858/0.03126
-2 2 25 10Y2/2 CIExyY:0.3556/0.3848/0.03126
-2 1 20 5Y2/1 CIExyY:0.3413/0.3494/0.03126
-2 1 25 10Y2/1 CIExyY:0.3306/0.3474/0.03126
-1 2 17.5 2.5Y1/2 CIExyY:0.4362/0.4177/0.0121
-1 2 20 5Y1/2 CIExyY:0.423/0.4265/0.0121
-1 2 22.5 7.5Y1/2 CIExyY:0.4042/0.4287/0.0121
-1 2 25 10Y1/2 CIExyY:0.3802/0.4212/0.0121
-9 18 27.5 2.5GY9/18 CIExyY:0.4354/0.5508/0.7866
-9 18 30 5GY9/18 CIExyY:0.4108/0.5699/0.7866
-9 18 32.5 7.5GY9/18 CIExyY:0.3602/0.592/0.7866
-9 18 35 10GY9/18 CIExyY:0.3032/0.5748/0.7866
-9 16 27.5 2.5GY9/16 CIExyY:0.4288/0.5383/0.7866
-9 16 30 5GY9/16 CIExyY:0.4058/0.5541/0.7866
-9 16 32.5 7.5GY9/16 CIExyY:0.3581/0.5654/0.7866
-9 16 35 10GY9/16 CIExyY:0.3079/0.544/0.7866
-9 14 27.5 2.5GY9/14 CIExyY:0.4212/0.5237/0.7866
-9 14 30 5GY9/14 CIExyY:0.3993/0.5329/0.7866
-9 14 32.5 7.5GY9/14 CIExyY:0.3551/0.5339/0.7866
-9 14 35 10GY9/14 CIExyY:0.3115/0.5129/0.7866
-9 12 27.5 2.5GY9/12 CIExyY:0.4108/0.5028/0.7866
-9 12 30 5GY9/12 CIExyY:0.3911/0.5082/0.7866
-9 12 32.5 7.5GY9/12 CIExyY:0.3518/0.5042/0.7866
-9 12 35 10GY9/12 CIExyY:0.3139/0.4829/0.7866
-9 10 27.5 2.5GY9/10 CIExyY:0.3973/0.4761/0.7866
-9 10 30 5GY9/10 CIExyY:0.381/0.4791/0.7866
-9 10 32.5 7.5GY9/10 CIExyY:0.3471/0.4735/0.7866
-9 10 35 10GY9/10 CIExyY:0.3155/0.4558/0.7866
-9 8 27.5 2.5GY9/8 CIExyY:0.3834/0.449/0.7866
-9 8 30 5GY9/8 CIExyY:0.3698/0.4497/0.7866
-9 8 32.5 7.5GY9/8 CIExyY:0.3414/0.4415/0.7866
-9 8 35 10GY9/8 CIExyY:0.3157/0.4259/0.7866
-9 6 27.5 2.5GY9/6 CIExyY:0.367/0.4178/0.7866
-9 6 30 5GY9/6 CIExyY:0.3572/0.4179/0.7866
-9 6 32.5 7.5GY9/6 CIExyY:0.3351/0.4111/0.7866
-9 6 35 10GY9/6 CIExyY:0.3153/0.4008/0.7866
-9 4 27.5 2.5GY9/4 CIExyY:0.3499/0.3866/0.7866
-9 4 30 5GY9/4 CIExyY:0.3437/0.3861/0.7866
-9 4 32.5 7.5GY9/4 CIExyY:0.3274/0.3791/0.7866
-9 4 35 10GY9/4 CIExyY:0.3144/0.3711/0.7866
-9 3 27.5 2.5GY9/3 CIExyY:0.3413/0.3707/0.7866
-9 3 30 5GY9/3 CIExyY:0.3364/0.3701/0.7866
-9 3 32.5 7.5GY9/3 CIExyY:0.3237/0.3648/0.7866
-9 3 35 10GY9/3 CIExyY:0.3135/0.3582/0.7866
-9 2 27.5 2.5GY9/2 CIExyY:0.3321/0.3539/0.7866
-9 2 30 5GY9/2 CIExyY:0.3284/0.3534/0.7866
-9 2 32.5 7.5GY9/2 CIExyY:0.3193/0.35/0.7866
-9 2 35 10GY9/2 CIExyY:0.3124/0.3454/0.7866
-9 1 30 5GY9/1 CIExyY:0.3197/0.3356/0.7866
-9 1 35 10GY9/1 CIExyY:0.3112/0.3317/0.7866
-8 24 35 10GY8/24 CIExyY:0.2781/0.684/0.591
-8 22 35 10GY8/22 CIExyY:0.2846/0.6564/0.591
-8 20 30 5GY8/20 CIExyY:0.4127/0.5855/0.591
-8 20 32.5 7.5GY8/20 CIExyY:0.3592/0.6235/0.591
-8 20 35 10GY8/20 CIExyY:0.2918/0.6255/0.591
-8 18 27.5 2.5GY8/18 CIExyY:0.4371/0.5557/0.591
-8 18 30 5GY8/18 CIExyY:0.4104/0.5785/0.591
-8 18 32.5 7.5GY8/18 CIExyY:0.3585/0.6063/0.591
-8 18 35 10GY8/18 CIExyY:0.2987/0.5919/0.591
-8 16 27.5 2.5GY8/16 CIExyY:0.4327/0.5475/0.591
-8 16 30 5GY8/16 CIExyY:0.4061/0.5641/0.591
-8 16 32.5 7.5GY8/16 CIExyY:0.3569/0.5798/0.591
-8 16 35 10GY8/16 CIExyY:0.3043/0.5578/0.591
-8 14 27.5 2.5GY8/14 CIExyY:0.4261/0.5344/0.591
-8 14 30 5GY8/14 CIExyY:0.4011/0.5468/0.591
-8 14 32.5 7.5GY8/14 CIExyY:0.3546/0.549/0.591
-8 14 35 10GY8/14 CIExyY:0.3091/0.5247/0.591
-8 12 27.5 2.5GY8/12 CIExyY:0.4154/0.5133/0.591
-8 12 30 5GY8/12 CIExyY:0.3924/0.5199/0.591
-8 12 32.5 7.5GY8/12 CIExyY:0.3511/0.5144/0.591
-8 12 35 10GY8/12 CIExyY:0.3124/0.4926/0.591
-8 10 27.5 2.5GY8/10 CIExyY:0.4021/0.4869/0.591
-8 10 30 5GY8/10 CIExyY:0.3816/0.4879/0.591
-8 10 32.5 7.5GY8/10 CIExyY:0.3463/0.4791/0.591
-8 10 35 10GY8/10 CIExyY:0.314/0.4601/0.591
-8 8 27.5 2.5GY8/8 CIExyY:0.3858/0.455/0.591
-8 8 30 5GY8/8 CIExyY:0.3696/0.4542/0.591
-8 8 32.5 7.5GY8/8 CIExyY:0.3408/0.4452/0.591
-8 8 35 10GY8/8 CIExyY:0.3149/0.4284/0.591
-8 6 27.5 2.5GY8/6 CIExyY:0.369/0.423/0.591
-8 6 30 5GY8/6 CIExyY:0.3573/0.4214/0.591
-8 6 32.5 7.5GY8/6 CIExyY:0.3339/0.4129/0.591
-8 6 35 10GY8/6 CIExyY:0.315/0.4014/0.591
-8 4 27.5 2.5GY8/4 CIExyY:0.3504/0.3887/0.591
-8 4 30 5GY8/4 CIExyY:0.3433/0.3872/0.591
-8 4 32.5 7.5GY8/4 CIExyY:0.3266/0.3809/0.591
-8 4 35 10GY8/4 CIExyY:0.314/0.3727/0.591
-8 3 27.5 2.5GY8/3 CIExyY:0.3418/0.3724/0.591
-8 3 30 5GY8/3 CIExyY:0.3361/0.3709/0.591
-8 3 32.5 7.5GY8/3 CIExyY:0.3231/0.3657/0.591
-8 3 35 10GY8/3 CIExyY:0.3131/0.3594/0.591
-8 2 27.5 2.5GY8/2 CIExyY:0.3327/0.3555/0.591
-8 2 30 5GY8/2 CIExyY:0.3284/0.3542/0.591
-8 2 32.5 7.5GY8/2 CIExyY:0.3194/0.3502/0.591
-8 2 35 10GY8/2 CIExyY:0.3121/0.3459/0.591
-8 1 30 5GY8/1 CIExyY:0.3193/0.3362/0.591
-8 1 35 10GY8/1 CIExyY:0.3111/0.3317/0.591
-7 22 35 10GY7/22 CIExyY:0.2728/0.6893/0.4306
-7 20 35 10GY7/20 CIExyY:0.2816/0.6563/0.4306
-7 18 32.5 7.5GY7/18 CIExyY:0.3555/0.6242/0.4306
-7 18 35 10GY7/18 CIExyY:0.2905/0.6186/0.4306
-7 16 27.5 2.5GY7/16 CIExyY:0.4366/0.5573/0.4306
-7 16 30 5GY7/16 CIExyY:0.4076/0.5783/0.4306
-7 16 32.5 7.5GY7/16 CIExyY:0.3549/0.6/0.4306
-7 16 35 10GY7/16 CIExyY:0.2981/0.5835/0.4306
-7 14 27.5 2.5GY7/14 CIExyY:0.4309/0.5459/0.4306
-7 14 30 5GY7/14 CIExyY:0.4027/0.5615/0.4306
-7 14 32.5 7.5GY7/14 CIExyY:0.3532/0.57/0.4306
-7 14 35 10GY7/14 CIExyY:0.3047/0.5458/0.4306
-7 12 27.5 2.5GY7/12 CIExyY:0.4213/0.527/0.4306
-7 12 30 5GY7/12 CIExyY:0.3949/0.5367/0.4306
-7 12 32.5 7.5GY7/12 CIExyY:0.3502/0.5328/0.4306
-7 12 35 10GY7/12 CIExyY:0.3092/0.5095/0.4306
-7 10 27.5 2.5GY7/10 CIExyY:0.4091/0.503/0.4306
-7 10 30 5GY7/10 CIExyY:0.3852/0.5051/0.4306
-7 10 32.5 7.5GY7/10 CIExyY:0.3461/0.495/0.4306
-7 10 35 10GY7/10 CIExyY:0.3123/0.4732/0.4306
-7 8 27.5 2.5GY7/8 CIExyY:0.3919/0.4681/0.4306
-7 8 30 5GY7/8 CIExyY:0.3722/0.4669/0.4306
-7 8 32.5 7.5GY7/8 CIExyY:0.3406/0.4558/0.4306
-7 8 35 10GY7/8 CIExyY:0.314/0.4387/0.4306
-7 6 27.5 2.5GY7/6 CIExyY:0.3728/0.4316/0.4306
-7 6 30 5GY7/6 CIExyY:0.3581/0.4291/0.4306
-7 6 32.5 7.5GY7/6 CIExyY:0.3341/0.4191/0.4306
-7 6 35 10GY7/6 CIExyY:0.3142/0.4058/0.4306
-7 4 27.5 2.5GY7/4 CIExyY:0.3534/0.3953/0.4306
-7 4 30 5GY7/4 CIExyY:0.3437/0.3929/0.4306
-7 4 32.5 7.5GY7/4 CIExyY:0.3267/0.3848/0.4306
-7 4 35 10GY7/4 CIExyY:0.3133/0.3764/0.4306
-7 3 27.5 2.5GY7/3 CIExyY:0.3433/0.3764/0.4306
-7 3 30 5GY7/3 CIExyY:0.3363/0.3746/0.4306
-7 3 32.5 7.5GY7/3 CIExyY:0.3229/0.3683/0.4306
-7 3 35 10GY7/3 CIExyY:0.3125/0.3617/0.4306
-7 2 27.5 2.5GY7/2 CIExyY:0.3328/0.3569/0.4306
-7 2 30 5GY7/2 CIExyY:0.3284/0.3559/0.4306
-7 2 32.5 7.5GY7/2 CIExyY:0.319/0.3516/0.4306
-7 2 35 10GY7/2 CIExyY:0.3117/0.3469/0.4306
-7 1 30 5GY7/1 CIExyY:0.3198/0.3365/0.4306
-7 1 35 10GY7/1 CIExyY:0.3109/0.3318/0.4306
-6 20 35 10GY6/20 CIExyY:0.2648/0.7004/0.3005
-6 18 35 10GY6/18 CIExyY:0.2763/0.6616/0.3005
-6 16 32.5 7.5GY6/16 CIExyY:0.3493/0.6282/0.3005
-6 16 35 10GY6/16 CIExyY:0.2872/0.6199/0.3005
-6 14 27.5 2.5GY6/14 CIExyY:0.4354/0.5594/0.3005
-6 14 30 5GY6/14 CIExyY:0.4042/0.5788/0.3005
-6 14 32.5 7.5GY6/14 CIExyY:0.3498/0.5985/0.3005
-6 14 35 10GY6/14 CIExyY:0.2962/0.5802/0.3005
-6 12 27.5 2.5GY6/12 CIExyY:0.4269/0.5414/0.3005
-6 12 30 5GY6/12 CIExyY:0.398/0.5564/0.3005
-6 12 32.5 7.5GY6/12 CIExyY:0.3488/0.5596/0.3005
-6 12 35 10GY6/12 CIExyY:0.3037/0.5358/0.3005
-6 10 27.5 2.5GY6/10 CIExyY:0.4159/0.519/0.3005
-6 10 30 5GY6/10 CIExyY:0.3891/0.5264/0.3005
-6 10 32.5 7.5GY6/10 CIExyY:0.3463/0.5196/0.3005
-6 10 35 10GY6/10 CIExyY:0.3086/0.4949/0.3005
-6 8 27.5 2.5GY6/8 CIExyY:0.4006/0.4885/0.3005
-6 8 30 5GY6/8 CIExyY:0.3772/0.488/0.3005
-6 8 32.5 7.5GY6/8 CIExyY:0.3418/0.4768/0.3005
-6 8 35 10GY6/8 CIExyY:0.3116/0.4563/0.3005
-6 6 27.5 2.5GY6/6 CIExyY:0.3799/0.447/0.3005
-6 6 30 5GY6/6 CIExyY:0.3622/0.4438/0.3005
-6 6 32.5 7.5GY6/6 CIExyY:0.3351/0.4321/0.3005
-6 6 35 10GY6/6 CIExyY:0.3128/0.4175/0.3005
-6 4 27.5 2.5GY6/4 CIExyY:0.3572/0.4038/0.3005
-6 4 30 5GY6/4 CIExyY:0.3461/0.4008/0.3005
-6 4 32.5 7.5GY6/4 CIExyY:0.3275/0.3922/0.3005
-6 4 35 10GY6/4 CIExyY:0.3124/0.3822/0.3005
-6 3 27.5 2.5GY6/3 CIExyY:0.3458/0.3823/0.3005
-6 3 30 5GY6/3 CIExyY:0.3376/0.38/0.3005
-6 3 32.5 7.5GY6/3 CIExyY:0.3235/0.3735/0.3005
-6 3 35 10GY6/3 CIExyY:0.3118/0.3658/0.3005
-6 2 27.5 2.5GY6/2 CIExyY:0.3342/0.3607/0.3005
-6 2 30 5GY6/2 CIExyY:0.3288/0.3592/0.3005
-6 2 32.5 7.5GY6/2 CIExyY:0.3193/0.355/0.3005
-6 2 35 10GY6/2 CIExyY:0.3112/0.3496/0.3005
-6 1 30 5GY6/1 CIExyY:0.3196/0.3381/0.3005
-6 1 35 10GY6/1 CIExyY:0.3106/0.3332/0.3005
-5 18 35 10GY5/18 CIExyY:0.2549/0.7179/0.1977
-5 16 35 10GY5/16 CIExyY:0.2702/0.67/0.1977
-5 14 32.5 7.5GY5/14 CIExyY:0.3429/0.6335/0.1977
-5 14 35 10GY5/14 CIExyY:0.2838/0.6208/0.1977
-5 12 27.5 2.5GY5/12 CIExyY:0.4333/0.5602/0.1977
-5 12 30 5GY5/12 CIExyY:0.4011/0.5802/0.1977
-5 12 32.5 7.5GY5/12 CIExyY:0.345/0.5949/0.1977
-5 12 35 10GY5/12 CIExyY:0.294/0.5751/0.1977
-5 10 27.5 2.5GY5/10 CIExyY:0.4224/0.5369/0.1977
-5 10 30 5GY5/10 CIExyY:0.3928/0.5485/0.1977
-5 10 32.5 7.5GY5/10 CIExyY:0.3451/0.549/0.1977
-5 10 35 10GY5/10 CIExyY:0.3028/0.5237/0.1977
-5 8 27.5 2.5GY5/8 CIExyY:0.4088/0.5068/0.1977
-5 8 30 5GY5/8 CIExyY:0.3815/0.5093/0.1977
-5 8 32.5 7.5GY5/8 CIExyY:0.3412/0.4976/0.1977
-5 8 35 10GY5/8 CIExyY:0.308/0.4759/0.1977
-5 6 27.5 2.5GY5/6 CIExyY:0.3879/0.4646/0.1977
-5 6 30 5GY5/6 CIExyY:0.3663/0.4614/0.1977
-5 6 32.5 7.5GY5/6 CIExyY:0.3354/0.4483/0.1977
-5 6 35 10GY5/6 CIExyY:0.3108/0.4301/0.1977
-5 4 27.5 2.5GY5/4 CIExyY:0.3621/0.4143/0.1977
-5 4 30 5GY5/4 CIExyY:0.3482/0.4097/0.1977
-5 4 32.5 7.5GY5/4 CIExyY:0.3274/0.3994/0.1977
-5 4 35 10GY5/4 CIExyY:0.3111/0.3881/0.1977
-5 3 27.5 2.5GY5/3 CIExyY:0.3486/0.3888/0.1977
-5 3 30 5GY5/3 CIExyY:0.3386/0.385/0.1977
-5 3 32.5 7.5GY5/3 CIExyY:0.3231/0.3771/0.1977
-5 3 35 10GY5/3 CIExyY:0.3111/0.369/0.1977
-5 2 27.5 2.5GY5/2 CIExyY:0.3352/0.3636/0.1977
-5 2 30 5GY5/2 CIExyY:0.3289/0.3612/0.1977
-5 2 32.5 7.5GY5/2 CIExyY:0.3188/0.356/0.1977
-5 2 35 10GY5/2 CIExyY:0.311/0.3508/0.1977
-5 1 30 5GY5/1 CIExyY:0.3193/0.3383/0.1977
-5 1 35 10GY5/1 CIExyY:0.3107/0.3333/0.1977
-4 16 35 10GY4/16 CIExyY:0.2422/0.736/0.12
-4 14 35 10GY4/14 CIExyY:0.259/0.6858/0.12
-4 12 32.5 7.5GY4/12 CIExyY:0.3348/0.6468/0.12
-4 12 35 10GY4/12 CIExyY:0.2758/0.6282/0.12
-4 10 30 5GY4/10 CIExyY:0.3983/0.585/0.12
-4 10 32.5 7.5GY4/10 CIExyY:0.3395/0.5913/0.12
-4 10 35 10GY4/10 CIExyY:0.2908/0.5672/0.12
-4 8 27.5 2.5GY4/8 CIExyY:0.4174/0.53/0.12
-4 8 30 5GY4/8 CIExyY:0.3868/0.5384/0.12
-4 8 32.5 7.5GY4/8 CIExyY:0.34/0.5348/0.12
-4 8 35 10GY4/8 CIExyY:0.3008/0.5095/0.12
-4 6 27.5 2.5GY4/6 CIExyY:0.3968/0.4857/0.12
-4 6 30 5GY4/6 CIExyY:0.3718/0.4852/0.12
-4 6 32.5 7.5GY4/6 CIExyY:0.3355/0.4739/0.12
-4 6 35 10GY4/6 CIExyY:0.3069/0.455/0.12
-4 4 27.5 2.5GY4/4 CIExyY:0.3708/0.4329/0.12
-4 4 30 5GY4/4 CIExyY:0.3538/0.4284/0.12
-4 4 32.5 7.5GY4/4 CIExyY:0.3281/0.4157/0.12
-4 4 35 10GY4/4 CIExyY:0.31/0.4018/0.12
-4 3 27.5 2.5GY4/3 CIExyY:0.3546/0.4018/0.12
-4 3 30 5GY4/3 CIExyY:0.3427/0.3978/0.12
-4 3 32.5 7.5GY4/3 CIExyY:0.3234/0.3872/0.12
-4 3 35 10GY4/3 CIExyY:0.3107/0.3775/0.12
-4 2 27.5 2.5GY4/2 CIExyY:0.3382/0.3706/0.12
-4 2 30 5GY4/2 CIExyY:0.3312/0.3678/0.12
-4 2 32.5 7.5GY4/2 CIExyY:0.3185/0.3604/0.12
-4 2 35 10GY4/2 CIExyY:0.3109/0.355/0.12
-4 1 30 5GY4/1 CIExyY:0.3201/0.3401/0.12
-4 1 35 10GY4/1 CIExyY:0.3107/0.3345/0.12
-3 14 35 10GY3/14 CIExyY:0.2283/0.7423/0.06555
-3 12 35 10GY3/12 CIExyY:0.2531/0.67/0.06555
-3 10 32.5 7.5GY3/10 CIExyY:0.3266/0.6448/0.06555
-3 10 35 10GY3/10 CIExyY:0.2724/0.6026/0.06555
-3 8 30 5GY3/8 CIExyY:0.3924/0.5832/0.06555
-3 8 32.5 7.5GY3/8 CIExyY:0.3341/0.57/0.06555
-3 8 35 10GY3/8 CIExyY:0.2887/0.5361/0.06555
-3 6 27.5 2.5GY3/6 CIExyY:0.4069/0.511/0.06555
-3 6 30 5GY3/6 CIExyY:0.375/0.5109/0.06555
-3 6 32.5 7.5GY3/6 CIExyY:0.3333/0.4967/0.06555
-3 6 35 10GY3/6 CIExyY:0.2992/0.4717/0.06555
-3 4 27.5 2.5GY3/4 CIExyY:0.3772/0.4484/0.06555
-3 4 30 5GY3/4 CIExyY:0.3554/0.4429/0.06555
-3 4 32.5 7.5GY3/4 CIExyY:0.327/0.4288/0.06555
-3 4 35 10GY3/4 CIExyY:0.3053/0.4123/0.06555
-3 3 27.5 2.5GY3/3 CIExyY:0.3593/0.4125/0.06555
-3 3 30 5GY3/3 CIExyY:0.3438/0.4072/0.06555
-3 3 32.5 7.5GY3/3 CIExyY:0.3226/0.3954/0.06555
-3 3 35 10GY3/3 CIExyY:0.3073/0.3839/0.06555
-3 2 27.5 2.5GY3/2 CIExyY:0.3412/0.3768/0.06555
-3 2 30 5GY3/2 CIExyY:0.3319/0.3729/0.06555
-3 2 32.5 7.5GY3/2 CIExyY:0.318/0.3644/0.06555
-3 2 35 10GY3/2 CIExyY:0.3088/0.3578/0.06555
-3 1 30 5GY3/1 CIExyY:0.3204/0.342/0.06555
-3 1 35 10GY3/1 CIExyY:0.3097/0.3349/0.06555
-2 12 35 10GY2/12 CIExyY:0.1907/0.7798/0.03126
-2 10 35 10GY2/10 CIExyY:0.2307/0.6814/0.03126
-2 8 32.5 7.5GY2/8 CIExyY:0.316/0.6509/0.03126
-2 8 35 10GY2/8 CIExyY:0.2628/0.5837/0.03126
-2 6 30 5GY2/6 CIExyY:0.3839/0.5748/0.03126
-2 6 32.5 7.5GY2/6 CIExyY:0.326/0.5379/0.03126
-2 6 35 10GY2/6 CIExyY:0.2852/0.4972/0.03126
-2 4 27.5 2.5GY2/4 CIExyY:0.3881/0.4752/0.03126
-2 4 30 5GY2/4 CIExyY:0.3582/0.465/0.03126
-2 4 32.5 7.5GY2/4 CIExyY:0.3248/0.4457/0.03126
-2 4 35 10GY2/4 CIExyY:0.2986/0.424/0.03126
-2 3 27.5 2.5GY2/3 CIExyY:0.3636/0.4239/0.03126
-2 3 30 5GY2/3 CIExyY:0.3442/0.4164/0.03126
-2 3 32.5 7.5GY2/3 CIExyY:0.321/0.4026/0.03126
-2 3 35 10GY2/3 CIExyY:0.3034/0.389/0.03126
-2 2 27.5 2.5GY2/2 CIExyY:0.3421/0.3803/0.03126
-2 2 30 5GY2/2 CIExyY:0.3309/0.3743/0.03126
-2 2 32.5 7.5GY2/2 CIExyY:0.3165/0.365/0.03126
-2 2 35 10GY2/2 CIExyY:0.3069/0.358/0.03126
-2 1 30 5GY2/1 CIExyY:0.3192/0.3404/0.03126
-2 1 35 10GY2/1 CIExyY:0.3091/0.333/0.03126
-1 6 35 10GY1/6 CIExyY:0.2232/0.6392/0.0121
-1 4 30 5GY1/4 CIExyY:0.3765/0.5942/0.0121
-1 4 32.5 7.5GY1/4 CIExyY:0.3133/0.538/0.0121
-1 4 35 10GY1/4 CIExyY:0.2722/0.4903/0.0121
-1 2 27.5 2.5GY1/2 CIExyY:0.354/0.4088/0.0121
-1 2 30 5GY1/2 CIExyY:0.3359/0.3982/0.0121
-1 2 32.5 7.5GY1/2 CIExyY:0.3154/0.384/0.0121
-1 2 35 10GY1/2 CIExyY:0.3006/0.372/0.0121
-9 16 37.5 2.5G9/16 CIExyY:0.263/0.4966/0.7866
-9 14 37.5 2.5G9/14 CIExyY:0.2711/0.4726/0.7866
-9 12 37.5 2.5G9/12 CIExyY:0.2786/0.4491/0.7866
-9 12 40 5G9/12 CIExyY:0.2528/0.416/0.7866
-9 12 42.5 7.5G9/12 CIExyY:0.2419/0.3985/0.7866
-9 12 45 10G9/12 CIExyY:0.2325/0.3796/0.7866
-9 10 37.5 2.5G9/10 CIExyY:0.2851/0.4275/0.7866
-9 10 40 5G9/10 CIExyY:0.2639/0.4001/0.7866
-9 10 42.5 7.5G9/10 CIExyY:0.2545/0.3855/0.7866
-9 10 45 10G9/10 CIExyY:0.2457/0.3702/0.7866
-9 8 37.5 2.5G9/8 CIExyY:0.2912/0.4054/0.7866
-9 8 40 5G9/8 CIExyY:0.2735/0.3854/0.7866
-9 8 42.5 7.5G9/8 CIExyY:0.2652/0.3738/0.7866
-9 8 45 10G9/8 CIExyY:0.2574/0.3618/0.7866
-9 6 37.5 2.5G9/6 CIExyY:0.2966/0.3846/0.7866
-9 6 40 5G9/6 CIExyY:0.2832/0.3697/0.7866
-9 6 42.5 7.5G9/6 CIExyY:0.2763/0.3607/0.7866
-9 6 45 10G9/6 CIExyY:0.2703/0.3513/0.7866
-9 4 37.5 2.5G9/4 CIExyY:0.3018/0.3606/0.7866
-9 4 40 5G9/4 CIExyY:0.2933/0.3519/0.7866
-9 4 42.5 7.5G9/4 CIExyY:0.2882/0.3461/0.7866
-9 4 45 10G9/4 CIExyY:0.284/0.3402/0.7866
-9 3 37.5 2.5G9/3 CIExyY:0.3039/0.3503/0.7866
-9 2 37.5 2.5G9/2 CIExyY:0.3058/0.34/0.7866
-9 2 40 5G9/2 CIExyY:0.3017/0.3357/0.7866
-9 2 42.5 7.5G9/2 CIExyY:0.2987/0.3323/0.7866
-9 2 45 10G9/2 CIExyY:0.2965/0.3293/0.7866
-9 1 40 5G9/1 CIExyY:0.3058/0.3267/0.7866
-9 1 45 10G9/1 CIExyY:0.303/0.3232/0.7866
-8 24 37.5 2.5G8/24 CIExyY:0.2091/0.6033/0.591
-8 22 37.5 2.5G8/22 CIExyY:0.2221/0.5799/0.591
-8 22 40 5G8/22 CIExyY:0.1821/0.494/0.591
-8 20 37.5 2.5G8/20 CIExyY:0.2339/0.5561/0.591
-8 20 40 5G8/20 CIExyY:0.1956/0.4806/0.591
-8 20 42.5 7.5G8/20 CIExyY:0.1845/0.4492/0.591
-8 20 45 10G8/20 CIExyY:0.1734/0.4164/0.591
-8 18 37.5 2.5G8/18 CIExyY:0.2451/0.5309/0.591
-8 18 40 5G8/18 CIExyY:0.2103/0.4652/0.591
-8 18 42.5 7.5G8/18 CIExyY:0.198/0.4372/0.591
-8 18 45 10G8/18 CIExyY:0.1866/0.4086/0.591
-8 16 37.5 2.5G8/16 CIExyY:0.2563/0.5045/0.591
-8 16 40 5G8/16 CIExyY:0.224/0.45/0.591
-8 16 42.5 7.5G8/16 CIExyY:0.212/0.4252/0.591
-8 16 45 10G8/16 CIExyY:0.2012/0.3992/0.591
-8 14 37.5 2.5G8/14 CIExyY:0.2661/0.478/0.591
-8 14 40 5G8/14 CIExyY:0.2368/0.4348/0.591
-8 14 42.5 7.5G8/14 CIExyY:0.2254/0.4125/0.591
-8 14 45 10G8/14 CIExyY:0.2148/0.3903/0.591
-8 12 37.5 2.5G8/12 CIExyY:0.2743/0.4554/0.591
-8 12 40 5G8/12 CIExyY:0.2489/0.4191/0.591
-8 12 42.5 7.5G8/12 CIExyY:0.238/0.4002/0.591
-8 12 45 10G8/12 CIExyY:0.2282/0.3811/0.591
-8 10 37.5 2.5G8/10 CIExyY:0.2829/0.4301/0.591
-8 10 40 5G8/10 CIExyY:0.2613/0.4026/0.591
-8 10 42.5 7.5G8/10 CIExyY:0.2515/0.3867/0.591
-8 10 45 10G8/10 CIExyY:0.243/0.371/0.591
-8 8 37.5 2.5G8/8 CIExyY:0.2896/0.4065/0.591
-8 8 40 5G8/8 CIExyY:0.2723/0.3865/0.591
-8 8 42.5 7.5G8/8 CIExyY:0.2639/0.3733/0.591
-8 8 45 10G8/8 CIExyY:0.2564/0.3611/0.591
-8 6 37.5 2.5G8/6 CIExyY:0.2952/0.3851/0.591
-8 6 40 5G8/6 CIExyY:0.2822/0.3702/0.591
-8 6 42.5 7.5G8/6 CIExyY:0.2754/0.3608/0.591
-8 6 45 10G8/6 CIExyY:0.2693/0.3512/0.591
-8 4 37.5 2.5G8/4 CIExyY:0.3009/0.3614/0.591
-8 4 40 5G8/4 CIExyY:0.2924/0.3523/0.591
-8 4 42.5 7.5G8/4 CIExyY:0.2874/0.3464/0.591
-8 4 45 10G8/4 CIExyY:0.2828/0.3403/0.591
-8 3 37.5 2.5G8/3 CIExyY:0.3032/0.3509/0.591
-8 3 40 5G8/3 CIExyY:0.2967/0.3442/0.591
-8 3 42.5 7.5G8/3 CIExyY:0.2927/0.3396/0.591
-8 3 45 10G8/3 CIExyY:0.2892/0.3349/0.591
-8 2 37.5 2.5G8/2 CIExyY:0.3053/0.3404/0.591
-8 2 40 5G8/2 CIExyY:0.3009/0.3359/0.591
-8 2 42.5 7.5G8/2 CIExyY:0.2981/0.3326/0.591
-8 2 45 10G8/2 CIExyY:0.2957/0.3293/0.591
-8 1 40 5G8/1 CIExyY:0.3053/0.3268/0.591
-8 1 45 10G8/1 CIExyY:0.3026/0.3232/0.591
-7 26 37.5 2.5G7/26 CIExyY:0.1689/0.6549/0.4306
-7 26 40 5G7/26 CIExyY:0.1397/0.5312/0.4306
-7 26 42.5 7.5G7/26 CIExyY:0.1303/0.4858/0.4306
-7 24 37.5 2.5G7/24 CIExyY:0.1875/0.6265/0.4306
-7 24 40 5G7/24 CIExyY:0.1521/0.52/0.4306
-7 24 42.5 7.5G7/24 CIExyY:0.1415/0.4778/0.4306
-7 24 45 10G7/24 CIExyY:0.131/0.4377/0.4306
-7 22 37.5 2.5G7/22 CIExyY:0.2029/0.6017/0.4306
-7 22 40 5G7/22 CIExyY:0.1659/0.5074/0.4306
-7 22 42.5 7.5G7/22 CIExyY:0.1539/0.4683/0.4306
-7 22 45 10G7/22 CIExyY:0.1434/0.4306/0.4306
-7 20 37.5 2.5G7/20 CIExyY:0.2181/0.5744/0.4306
-7 20 40 5G7/20 CIExyY:0.1805/0.4933/0.4306
-7 20 42.5 7.5G7/20 CIExyY:0.1688/0.457/0.4306
-7 20 45 10G7/20 CIExyY:0.1589/0.422/0.4306
-7 18 37.5 2.5G7/18 CIExyY:0.2328/0.5467/0.4306
-7 18 40 5G7/18 CIExyY:0.1967/0.4771/0.4306
-7 18 42.5 7.5G7/18 CIExyY:0.1841/0.4448/0.4306
-7 18 45 10G7/18 CIExyY:0.1734/0.4135/0.4306
-7 16 37.5 2.5G7/16 CIExyY:0.2448/0.5203/0.4306
-7 16 40 5G7/16 CIExyY:0.2111/0.4616/0.4306
-7 16 42.5 7.5G7/16 CIExyY:0.1982/0.433/0.4306
-7 16 45 10G7/16 CIExyY:0.1881/0.4049/0.4306
-7 14 37.5 2.5G7/14 CIExyY:0.2568/0.4931/0.4306
-7 14 40 5G7/14 CIExyY:0.2262/0.445/0.4306
-7 14 42.5 7.5G7/14 CIExyY:0.2139/0.4199/0.4306
-7 14 45 10G7/14 CIExyY:0.2033/0.3956/0.4306
-7 12 37.5 2.5G7/12 CIExyY:0.2672/0.4667/0.4306
-7 12 40 5G7/12 CIExyY:0.2416/0.4267/0.4306
-7 12 42.5 7.5G7/12 CIExyY:0.2295/0.4058/0.4306
-7 12 45 10G7/12 CIExyY:0.2195/0.3854/0.4306
-7 10 37.5 2.5G7/10 CIExyY:0.2775/0.4395/0.4306
-7 10 40 5G7/10 CIExyY:0.2554/0.4087/0.4306
-7 10 42.5 7.5G7/10 CIExyY:0.2445/0.3914/0.4306
-7 10 45 10G7/10 CIExyY:0.2352/0.3748/0.4306
-7 8 37.5 2.5G7/8 CIExyY:0.2861/0.4129/0.4306
-7 8 40 5G7/8 CIExyY:0.2687/0.3901/0.4306
-7 8 42.5 7.5G7/8 CIExyY:0.2595/0.3764/0.4306
-7 8 45 10G7/8 CIExyY:0.2513/0.3635/0.4306
-7 6 37.5 2.5G7/6 CIExyY:0.2933/0.3873/0.4306
-7 6 40 5G7/6 CIExyY:0.2801/0.3721/0.4306
-7 6 42.5 7.5G7/6 CIExyY:0.2728/0.3622/0.4306
-7 6 45 10G7/6 CIExyY:0.2662/0.3526/0.4306
-7 4 37.5 2.5G7/4 CIExyY:0.2992/0.3644/0.4306
-7 4 40 5G7/4 CIExyY:0.2902/0.3548/0.4306
-7 4 42.5 7.5G7/4 CIExyY:0.285/0.3482/0.4306
-7 4 45 10G7/4 CIExyY:0.2803/0.3415/0.4306
-7 3 37.5 2.5G7/3 CIExyY:0.302/0.353/0.4306
-7 3 40 5G7/3 CIExyY:0.2952/0.3459/0.4306
-7 3 42.5 7.5G7/3 CIExyY:0.2911/0.3409/0.4306
-7 3 45 10G7/3 CIExyY:0.2873/0.3357/0.4306
-7 2 37.5 2.5G7/2 CIExyY:0.3047/0.3413/0.4306
-7 2 40 5G7/2 CIExyY:0.3001/0.3366/0.4306
-7 2 42.5 7.5G7/2 CIExyY:0.2972/0.3333/0.4306
-7 2 45 10G7/2 CIExyY:0.2945/0.3297/0.4306
-7 1 40 5G7/1 CIExyY:0.3051/0.3268/0.4306
-7 1 45 10G7/1 CIExyY:0.302/0.3233/0.4306
-6 28 37.5 2.5G6/28 CIExyY:0.1145/0.7122/0.3005
-6 28 40 5G6/28 CIExyY:0.0908/0.5695/0.3005
-6 28 42.5 7.5G6/28 CIExyY:0.0858/0.5127/0.3005
-6 26 37.5 2.5G6/26 CIExyY:0.134/0.6871/0.3005
-6 26 40 5G6/26 CIExyY:0.1079/0.556/0.3005
-6 26 42.5 7.5G6/26 CIExyY:0.101/0.5018/0.3005
-6 26 45 10G6/26 CIExyY:0.0941/0.452/0.3005
-6 24 37.5 2.5G6/24 CIExyY:0.1536/0.6605/0.3005
-6 24 40 5G6/24 CIExyY:0.1252/0.5408/0.3005
-6 24 42.5 7.5G6/24 CIExyY:0.1159/0.491/0.3005
-6 24 45 10G6/24 CIExyY:0.107/0.4458/0.3005
-6 22 37.5 2.5G6/22 CIExyY:0.1739/0.6318/0.3005
-6 22 40 5G6/22 CIExyY:0.1432/0.5252/0.3005
-6 22 42.5 7.5G6/22 CIExyY:0.1325/0.4795/0.3005
-6 22 45 10G6/22 CIExyY:0.123/0.4378/0.3005
-6 20 37.5 2.5G6/20 CIExyY:0.1922/0.6035/0.3005
-6 20 40 5G6/20 CIExyY:0.1609/0.5091/0.3005
-6 20 42.5 7.5G6/20 CIExyY:0.1485/0.4677/0.3005
-6 20 45 10G6/20 CIExyY:0.1382/0.4299/0.3005
-6 18 37.5 2.5G6/18 CIExyY:0.2102/0.5737/0.3005
-6 18 40 5G6/18 CIExyY:0.1785/0.4924/0.3005
-6 18 42.5 7.5G6/18 CIExyY:0.1654/0.4551/0.3005
-6 18 45 10G6/18 CIExyY:0.1551/0.4208/0.3005
-6 16 37.5 2.5G6/16 CIExyY:0.2278/0.543/0.3005
-6 16 40 5G6/16 CIExyY:0.196/0.4751/0.3005
-6 16 42.5 7.5G6/16 CIExyY:0.1832/0.4414/0.3005
-6 16 45 10G6/16 CIExyY:0.1722/0.4113/0.3005
-6 14 37.5 2.5G6/14 CIExyY:0.2426/0.5133/0.3005
-6 14 40 5G6/14 CIExyY:0.213/0.4571/0.3005
-6 14 42.5 7.5G6/14 CIExyY:0.2001/0.4278/0.3005
-6 14 45 10G6/14 CIExyY:0.1895/0.4015/0.3005
-6 12 37.5 2.5G6/12 CIExyY:0.2574/0.4814/0.3005
-6 12 40 5G6/12 CIExyY:0.2293/0.439/0.3005
-6 12 42.5 7.5G6/12 CIExyY:0.2171/0.4138/0.3005
-6 12 45 10G6/12 CIExyY:0.206/0.3914/0.3005
-6 10 37.5 2.5G6/10 CIExyY:0.269/0.453/0.3005
-6 10 40 5G6/10 CIExyY:0.2466/0.4181/0.3005
-6 10 42.5 7.5G6/10 CIExyY:0.235/0.3979/0.3005
-6 10 45 10G6/10 CIExyY:0.2247/0.3796/0.3005
-6 8 37.5 2.5G6/8 CIExyY:0.2799/0.4239/0.3005
-6 8 40 5G6/8 CIExyY:0.2612/0.399/0.3005
-6 8 42.5 7.5G6/8 CIExyY:0.251/0.3829/0.3005
-6 8 45 10G6/8 CIExyY:0.242/0.3679/0.3005
-6 6 37.5 2.5G6/6 CIExyY:0.2892/0.3963/0.3005
-6 6 40 5G6/6 CIExyY:0.2748/0.3795/0.3005
-6 6 42.5 7.5G6/6 CIExyY:0.2662/0.3672/0.3005
-6 6 45 10G6/6 CIExyY:0.2591/0.3558/0.3005
-6 4 37.5 2.5G6/4 CIExyY:0.2967/0.3695/0.3005
-6 4 40 5G6/4 CIExyY:0.2868/0.3595/0.3005
-6 4 42.5 7.5G6/4 CIExyY:0.2807/0.3522/0.3005
-6 4 45 10G6/4 CIExyY:0.2749/0.3443/0.3005
-6 3 37.5 2.5G6/3 CIExyY:0.3004/0.3566/0.3005
-6 3 40 5G6/3 CIExyY:0.2928/0.349/0.3005
-6 3 42.5 7.5G6/3 CIExyY:0.2883/0.3435/0.3005
-6 3 45 10G6/3 CIExyY:0.2838/0.3375/0.3005
-6 2 37.5 2.5G6/2 CIExyY:0.3039/0.3437/0.3005
-6 2 40 5G6/2 CIExyY:0.2988/0.3382/0.3005
-6 2 42.5 7.5G6/2 CIExyY:0.2958/0.3344/0.3005
-6 2 45 10G6/2 CIExyY:0.2929/0.3303/0.3005
-6 1 40 5G6/1 CIExyY:0.3046/0.3273/0.3005
-6 1 45 10G6/1 CIExyY:0.3018/0.3231/0.3005
-5 28 37.5 2.5G5/28 CIExyY:0.0794/0.7385/0.1977
-5 28 40 5G5/28 CIExyY:0.0609/0.5898/0.1977
-5 28 42.5 7.5G5/28 CIExyY:0.0585/0.5224/0.1977
-5 28 45 10G5/28 CIExyY:0.0572/0.459/0.1977
-5 26 37.5 2.5G5/26 CIExyY:0.0992/0.7155/0.1977
-5 26 40 5G5/26 CIExyY:0.0784/0.5761/0.1977
-5 26 42.5 7.5G5/26 CIExyY:0.073/0.5131/0.1977
-5 26 45 10G5/26 CIExyY:0.069/0.4542/0.1977
-5 24 37.5 2.5G5/24 CIExyY:0.1188/0.6918/0.1977
-5 24 40 5G5/24 CIExyY:0.0953/0.5628/0.1977
-5 24 42.5 7.5G5/24 CIExyY:0.0878/0.5039/0.1977
-5 24 45 10G5/24 CIExyY:0.0811/0.4491/0.1977
-5 22 37.5 2.5G5/22 CIExyY:0.1377/0.6674/0.1977
-5 22 40 5G5/22 CIExyY:0.1144/0.5463/0.1977
-5 22 42.5 7.5G5/22 CIExyY:0.105/0.4927/0.1977
-5 22 45 10G5/22 CIExyY:0.0958/0.4428/0.1977
-5 20 37.5 2.5G5/20 CIExyY:0.1579/0.6392/0.1977
-5 20 40 5G5/20 CIExyY:0.1318/0.5321/0.1977
-5 20 42.5 7.5G5/20 CIExyY:0.1212/0.4817/0.1977
-5 20 45 10G5/20 CIExyY:0.112/0.436/0.1977
-5 18 37.5 2.5G5/18 CIExyY:0.1782/0.6095/0.1977
-5 18 40 5G5/18 CIExyY:0.1489/0.5171/0.1977
-5 18 42.5 7.5G5/18 CIExyY:0.1372/0.4705/0.1977
-5 18 45 10G5/18 CIExyY:0.1275/0.4288/0.1977
-5 16 37.5 2.5G5/16 CIExyY:0.2005/0.5759/0.1977
-5 16 40 5G5/16 CIExyY:0.1695/0.4981/0.1977
-5 16 42.5 7.5G5/16 CIExyY:0.1571/0.4561/0.1977
-5 16 45 10G5/16 CIExyY:0.1469/0.4192/0.1977
-5 14 37.5 2.5G5/14 CIExyY:0.2211/0.5411/0.1977
-5 14 40 5G5/14 CIExyY:0.1912/0.4773/0.1977
-5 14 42.5 7.5G5/14 CIExyY:0.1776/0.4415/0.1977
-5 14 45 10G5/14 CIExyY:0.1671/0.4089/0.1977
-5 12 37.5 2.5G5/12 CIExyY:0.2385/0.5071/0.1977
-5 12 40 5G5/12 CIExyY:0.2104/0.4578/0.1977
-5 12 42.5 7.5G5/12 CIExyY:0.1964/0.4271/0.1977
-5 12 45 10G5/12 CIExyY:0.1852/0.3992/0.1977
-5 10 37.5 2.5G5/10 CIExyY:0.2565/0.4705/0.1977
-5 10 40 5G5/10 CIExyY:0.2329/0.4331/0.1977
-5 10 42.5 7.5G5/10 CIExyY:0.22/0.4082/0.1977
-5 10 45 10G5/10 CIExyY:0.2095/0.3853/0.1977
-5 8 37.5 2.5G5/8 CIExyY:0.271/0.438/0.1977
-5 8 40 5G5/8 CIExyY:0.2511/0.4107/0.1977
-5 8 42.5 7.5G5/8 CIExyY:0.2395/0.3915/0.1977
-5 8 45 10G5/8 CIExyY:0.2297/0.373/0.1977
-5 6 37.5 2.5G5/6 CIExyY:0.2841/0.4045/0.1977
-5 6 40 5G5/6 CIExyY:0.269/0.386/0.1977
-5 6 42.5 7.5G5/6 CIExyY:0.2598/0.3724/0.1977
-5 6 45 10G5/6 CIExyY:0.2519/0.3587/0.1977
-5 4 37.5 2.5G5/4 CIExyY:0.2943/0.3735/0.1977
-5 4 40 5G5/4 CIExyY:0.2841/0.3628/0.1977
-5 4 42.5 7.5G5/4 CIExyY:0.2775/0.3545/0.1977
-5 4 45 10G5/4 CIExyY:0.2711/0.3455/0.1977
-5 3 37.5 2.5G5/3 CIExyY:0.2988/0.3588/0.1977
-5 3 40 5G5/3 CIExyY:0.2911/0.351/0.1977
-5 3 42.5 7.5G5/3 CIExyY:0.2861/0.3451/0.1977
-5 3 45 10G5/3 CIExyY:0.2811/0.3383/0.1977
-5 2 37.5 2.5G5/2 CIExyY:0.303/0.3445/0.1977
-5 2 40 5G5/2 CIExyY:0.2978/0.3392/0.1977
-5 2 42.5 7.5G5/2 CIExyY:0.2945/0.3355/0.1977
-5 2 45 10G5/2 CIExyY:0.291/0.331/0.1977
-5 1 40 5G5/1 CIExyY:0.3041/0.3276/0.1977
-5 1 45 10G5/1 CIExyY:0.3007/0.3236/0.1977
-4 26 37.5 2.5G4/26 CIExyY:0.0528/0.7502/0.12
-4 26 40 5G4/26 CIExyY:0.0407/0.601/0.12
-4 26 42.5 7.5G4/26 CIExyY:0.0392/0.5258/0.12
-4 26 45 10G4/26 CIExyY:0.04/0.4545/0.12
-4 24 37.5 2.5G4/24 CIExyY:0.076/0.725/0.12
-4 24 40 5G4/24 CIExyY:0.0614/0.5857/0.12
-4 24 42.5 7.5G4/24 CIExyY:0.0581/0.5151/0.12
-4 24 45 10G4/24 CIExyY:0.0553/0.4492/0.12
-4 22 37.5 2.5G4/22 CIExyY:0.1009/0.6975/0.12
-4 22 40 5G4/22 CIExyY:0.0841/0.5684/0.12
-4 22 42.5 7.5G4/22 CIExyY:0.077/0.504/0.12
-4 22 45 10G4/22 CIExyY:0.0702/0.444/0.12
-4 20 37.5 2.5G4/20 CIExyY:0.123/0.6706/0.12
-4 20 40 5G4/20 CIExyY:0.1018/0.5543/0.12
-4 20 42.5 7.5G4/20 CIExyY:0.0928/0.4942/0.12
-4 20 45 10G4/20 CIExyY:0.085/0.4388/0.12
-4 18 37.5 2.5G4/18 CIExyY:0.1446/0.6431/0.12
-4 18 40 5G4/18 CIExyY:0.1188/0.54/0.12
-4 18 42.5 7.5G4/18 CIExyY:0.1086/0.4842/0.12
-4 18 45 10G4/18 CIExyY:0.1006/0.433/0.12
-4 16 37.5 2.5G4/16 CIExyY:0.1682/0.6111/0.12
-4 16 40 5G4/16 CIExyY:0.1402/0.5214/0.12
-4 16 42.5 7.5G4/16 CIExyY:0.1293/0.4703/0.12
-4 16 45 10G4/16 CIExyY:0.1212/0.4245/0.12
-4 14 37.5 2.5G4/14 CIExyY:0.1909/0.5779/0.12
-4 14 40 5G4/14 CIExyY:0.1627/0.5015/0.12
-4 14 42.5 7.5G4/14 CIExyY:0.15/0.4562/0.12
-4 14 45 10G4/14 CIExyY:0.1398/0.4168/0.12
-4 12 37.5 2.5G4/12 CIExyY:0.2128/0.5425/0.12
-4 12 40 5G4/12 CIExyY:0.1843/0.4807/0.12
-4 12 42.5 7.5G4/12 CIExyY:0.1706/0.4419/0.12
-4 12 45 10G4/12 CIExyY:0.1602/0.407/0.12
-4 10 37.5 2.5G4/10 CIExyY:0.2355/0.5006/0.12
-4 10 40 5G4/10 CIExyY:0.2115/0.4532/0.12
-4 10 42.5 7.5G4/10 CIExyY:0.1989/0.4219/0.12
-4 10 45 10G4/10 CIExyY:0.1876/0.3933/0.12
-4 8 37.5 2.5G4/8 CIExyY:0.2561/0.4597/0.12
-4 8 40 5G4/8 CIExyY:0.2359/0.4266/0.12
-4 8 42.5 7.5G4/8 CIExyY:0.2232/0.4022/0.12
-4 8 45 10G4/8 CIExyY:0.2124/0.3799/0.12
-4 6 37.5 2.5G4/6 CIExyY:0.2735/0.4215/0.12
-4 6 40 5G4/6 CIExyY:0.2581/0.3992/0.12
-4 6 42.5 7.5G4/6 CIExyY:0.2467/0.3822/0.12
-4 6 45 10G4/6 CIExyY:0.2374/0.3655/0.12
-4 4 37.5 2.5G4/4 CIExyY:0.2891/0.3821/0.12
-4 4 40 5G4/4 CIExyY:0.2781/0.3704/0.12
-4 4 42.5 7.5G4/4 CIExyY:0.2702/0.3602/0.12
-4 4 45 10G4/4 CIExyY:0.2628/0.3498/0.12
-4 3 37.5 2.5G4/3 CIExyY:0.2956/0.364/0.12
-4 3 40 5G4/3 CIExyY:0.2874/0.3558/0.12
-4 3 42.5 7.5G4/3 CIExyY:0.2814/0.3486/0.12
-4 3 45 10G4/3 CIExyY:0.2756/0.3413/0.12
-4 2 37.5 2.5G4/2 CIExyY:0.3012/0.347/0.12
-4 2 40 5G4/2 CIExyY:0.2959/0.3417/0.12
-4 2 42.5 7.5G4/2 CIExyY:0.2919/0.3371/0.12
-4 2 45 10G4/2 CIExyY:0.288/0.3327/0.12
-4 1 40 5G4/1 CIExyY:0.3035/0.3284/0.12
-4 1 45 10G4/1 CIExyY:0.2996/0.3243/0.12
-3 22 37.5 2.5G3/22 CIExyY:0.039/0.7468/0.06555
-3 22 40 5G3/22 CIExyY:0.034/0.6011/0.06555
-3 22 42.5 7.5G3/22 CIExyY:0.0332/0.5206/0.06555
-3 22 45 10G3/22 CIExyY:0.0333/0.4444/0.06555
-3 20 37.5 2.5G3/20 CIExyY:0.072/0.7127/0.06555
-3 20 40 5G3/20 CIExyY:0.062/0.5802/0.06555
-3 20 42.5 7.5G3/20 CIExyY:0.0568/0.5082/0.06555
-3 20 45 10G3/20 CIExyY:0.0528/0.4393/0.06555
-3 18 37.5 2.5G3/18 CIExyY:0.1049/0.6766/0.06555
-3 18 40 5G3/18 CIExyY:0.0882/0.5605/0.06555
-3 18 42.5 7.5G3/18 CIExyY:0.0798/0.4954/0.06555
-3 18 45 10G3/18 CIExyY:0.0718/0.434/0.06555
-3 16 37.5 2.5G3/16 CIExyY:0.1341/0.642/0.06555
-3 16 40 5G3/16 CIExyY:0.112/0.5414/0.06555
-3 16 42.5 7.5G3/16 CIExyY:0.1023/0.4818/0.06555
-3 16 45 10G3/16 CIExyY:0.0925/0.4275/0.06555
-3 14 37.5 2.5G3/14 CIExyY:0.1626/0.6052/0.06555
-3 14 40 5G3/14 CIExyY:0.1382/0.5197/0.06555
-3 14 42.5 7.5G3/14 CIExyY:0.1262/0.4667/0.06555
-3 14 45 10G3/14 CIExyY:0.1161/0.4192/0.06555
-3 12 37.5 2.5G3/12 CIExyY:0.1902/0.5642/0.06555
-3 12 40 5G3/12 CIExyY:0.166/0.4948/0.06555
-3 12 42.5 7.5G3/12 CIExyY:0.1516/0.4505/0.06555
-3 12 45 10G3/12 CIExyY:0.1411/0.4095/0.06555
-3 10 37.5 2.5G3/10 CIExyY:0.217/0.5211/0.06555
-3 10 40 5G3/10 CIExyY:0.1935/0.4682/0.06555
-3 10 42.5 7.5G3/10 CIExyY:0.18/0.431/0.06555
-3 10 45 10G3/10 CIExyY:0.1688/0.3974/0.06555
-3 8 37.5 2.5G3/8 CIExyY:0.2435/0.4752/0.06555
-3 8 40 5G3/8 CIExyY:0.2228/0.438/0.06555
-3 8 42.5 7.5G3/8 CIExyY:0.2088/0.4101/0.06555
-3 8 45 10G3/8 CIExyY:0.197/0.3841/0.06555
-3 6 37.5 2.5G3/6 CIExyY:0.2642/0.4342/0.06555
-3 6 40 5G3/6 CIExyY:0.2471/0.41/0.06555
-3 6 42.5 7.5G3/6 CIExyY:0.2346/0.3901/0.06555
-3 6 45 10G3/6 CIExyY:0.224/0.3699/0.06555
-3 4 37.5 2.5G3/4 CIExyY:0.2836/0.3915/0.06555
-3 4 40 5G3/4 CIExyY:0.2711/0.378/0.06555
-3 4 42.5 7.5G3/4 CIExyY:0.2618/0.3667/0.06555
-3 4 45 10G3/4 CIExyY:0.2525/0.3537/0.06555
-3 3 37.5 2.5G3/3 CIExyY:0.2923/0.3702/0.06555
-3 3 40 5G3/3 CIExyY:0.2828/0.3607/0.06555
-3 3 42.5 7.5G3/3 CIExyY:0.2758/0.3529/0.06555
-3 3 45 10G3/3 CIExyY:0.2686/0.3438/0.06555
-3 2 37.5 2.5G3/2 CIExyY:0.2999/0.35/0.06555
-3 2 40 5G3/2 CIExyY:0.2935/0.3439/0.06555
-3 2 42.5 7.5G3/2 CIExyY:0.289/0.3391/0.06555
-3 2 45 10G3/2 CIExyY:0.2844/0.3337/0.06555
-3 1 40 5G3/1 CIExyY:0.3028/0.3288/0.06555
-3 1 45 10G3/1 CIExyY:0.2986/0.3243/0.06555
-2 16 37.5 2.5G2/16 CIExyY:0.0329/0.7358/0.03126
-2 16 40 5G2/16 CIExyY:0.0277/0.5986/0.03126
-2 16 42.5 7.5G2/16 CIExyY:0.0276/0.5153/0.03126
-2 16 45 10G2/16 CIExyY:0.0285/0.4327/0.03126
-2 14 37.5 2.5G2/14 CIExyY:0.082/0.686/0.03126
-2 14 40 5G2/14 CIExyY:0.0688/0.5691/0.03126
-2 14 42.5 7.5G2/14 CIExyY:0.0629/0.4973/0.03126
-2 14 45 10G2/14 CIExyY:0.0599/0.427/0.03126
-2 12 37.5 2.5G2/12 CIExyY:0.1307/0.6308/0.03126
-2 12 40 5G2/12 CIExyY:0.112/0.5358/0.03126
-2 12 42.5 7.5G2/12 CIExyY:0.1022/0.4759/0.03126
-2 12 45 10G2/12 CIExyY:0.0934/0.4183/0.03126
-2 10 37.5 2.5G2/10 CIExyY:0.1773/0.5698/0.03126
-2 10 40 5G2/10 CIExyY:0.156/0.4981/0.03126
-2 10 42.5 7.5G2/10 CIExyY:0.1442/0.4505/0.03126
-2 10 45 10G2/10 CIExyY:0.1321/0.4059/0.03126
-2 8 37.5 2.5G2/8 CIExyY:0.2192/0.5042/0.03126
-2 8 40 5G2/8 CIExyY:0.1979/0.4583/0.03126
-2 8 42.5 7.5G2/8 CIExyY:0.1842/0.4244/0.03126
-2 8 45 10G2/8 CIExyY:0.1705/0.3911/0.03126
-2 6 37.5 2.5G2/6 CIExyY:0.2493/0.4522/0.03126
-2 6 40 5G2/6 CIExyY:0.2318/0.4231/0.03126
-2 6 42.5 7.5G2/6 CIExyY:0.22/0.3983/0.03126
-2 6 45 10G2/6 CIExyY:0.2092/0.3739/0.03126
-2 4 37.5 2.5G2/4 CIExyY:0.2763/0.3998/0.03126
-2 4 40 5G2/4 CIExyY:0.264/0.3845/0.03126
-2 4 42.5 7.5G2/4 CIExyY:0.254/0.3705/0.03126
-2 4 45 10G2/4 CIExyY:0.2442/0.3559/0.03126
-2 3 37.5 2.5G2/3 CIExyY:0.288/0.3741/0.03126
-2 3 40 5G2/3 CIExyY:0.2788/0.3641/0.03126
-2 3 42.5 7.5G2/3 CIExyY:0.2711/0.355/0.03126
-2 3 45 10G2/3 CIExyY:0.2635/0.345/0.03126
-2 2 37.5 2.5G2/2 CIExyY:0.2978/0.3507/0.03126
-2 2 40 5G2/2 CIExyY:0.2918/0.345/0.03126
-2 2 42.5 7.5G2/2 CIExyY:0.2869/0.34/0.03126
-2 2 45 10G2/2 CIExyY:0.282/0.3341/0.03126
-2 1 40 5G2/1 CIExyY:0.3025/0.3286/0.03126
-2 1 45 10G2/1 CIExyY:0.298/0.3242/0.03126
-1 8 37.5 2.5G1/8 CIExyY:0.062/0.6896/0.0121
-1 8 40 5G1/8 CIExyY:0.0559/0.571/0.0121
-1 8 42.5 7.5G1/8 CIExyY:0.053/0.4943/0.0121
-1 8 45 10G1/8 CIExyY:0.0511/0.4158/0.0121
-1 6 37.5 2.5G1/6 CIExyY:0.1711/0.5619/0.0121
-1 6 40 5G1/6 CIExyY:0.1468/0.4996/0.0121
-1 6 42.5 7.5G1/6 CIExyY:0.1344/0.4505/0.0121
-1 6 45 10G1/6 CIExyY:0.1249/0.4019/0.0121
-1 4 37.5 2.5G1/4 CIExyY:0.2454/0.4489/0.0121
-1 4 40 5G1/4 CIExyY:0.229/0.4218/0.0121
-1 4 42.5 7.5G1/4 CIExyY:0.2159/0.3967/0.0121
-1 4 45 10G1/4 CIExyY:0.204/0.3724/0.0121
-1 2 37.5 2.5G1/2 CIExyY:0.291/0.3634/0.0121
-1 2 40 5G1/2 CIExyY:0.2833/0.3564/0.0121
-1 2 42.5 7.5G1/2 CIExyY:0.2758/0.3484/0.0121
-1 2 45 10G1/2 CIExyY:0.2689/0.3407/0.0121
-9 10 47.5 2.5BG9/10 CIExyY:0.2382/0.3568/0.7866
-9 10 50 5BG9/10 CIExyY:0.2301/0.3405/0.7866
-9 10 52.5 7.5BG9/10 CIExyY:0.2215/0.3226/0.7866
-9 8 47.5 2.5BG9/8 CIExyY:0.2509/0.3507/0.7866
-9 8 50 5BG9/8 CIExyY:0.2437/0.3378/0.7866
-9 8 52.5 7.5BG9/8 CIExyY:0.2361/0.3225/0.7866
-9 6 47.5 2.5BG9/6 CIExyY:0.2652/0.3433/0.7866
-9 6 50 5BG9/6 CIExyY:0.2599/0.3338/0.7866
-9 6 52.5 7.5BG9/6 CIExyY:0.2543/0.322/0.7866
-9 6 55 10BG9/6 CIExyY:0.2501/0.3118/0.7866
-9 4 47.5 2.5BG9/4 CIExyY:0.2805/0.3349/0.7866
-9 4 50 5BG9/4 CIExyY:0.2768/0.3287/0.7866
-9 4 52.5 7.5BG9/4 CIExyY:0.2728/0.3208/0.7866
-9 4 55 10BG9/4 CIExyY:0.27/0.314/0.7866
-9 2 47.5 2.5BG9/2 CIExyY:0.2947/0.3267/0.7866
-9 2 50 5BG9/2 CIExyY:0.293/0.3232/0.7866
-9 2 52.5 7.5BG9/2 CIExyY:0.2911/0.3188/0.7866
-9 2 55 10BG9/2 CIExyY:0.2907/0.3159/0.7866
-9 1 50 5BG9/1 CIExyY:0.3013/0.32/0.7866
-9 1 55 10BG9/1 CIExyY:0.3007/0.3164/0.7866
-8 18 47.5 2.5BG8/18 CIExyY:0.1759/0.3782/0.591
-8 16 47.5 2.5BG8/16 CIExyY:0.1915/0.3732/0.591
-8 16 50 5BG8/16 CIExyY:0.1814/0.345/0.591
-8 16 52.5 7.5BG8/16 CIExyY:0.1721/0.3168/0.591
-8 14 47.5 2.5BG8/14 CIExyY:0.2057/0.3681/0.591
-8 14 50 5BG8/14 CIExyY:0.1958/0.3432/0.591
-8 14 52.5 7.5BG8/14 CIExyY:0.1868/0.3179/0.591
-8 14 55 10BG8/14 CIExyY:0.1788/0.2936/0.591
-8 12 47.5 2.5BG8/12 CIExyY:0.2196/0.363/0.591
-8 12 50 5BG8/12 CIExyY:0.2101/0.3412/0.591
-8 12 52.5 7.5BG8/12 CIExyY:0.201/0.3188/0.591
-8 12 55 10BG8/12 CIExyY:0.1937/0.2978/0.591
-8 10 47.5 2.5BG8/10 CIExyY:0.2352/0.3566/0.591
-8 10 50 5BG8/10 CIExyY:0.2264/0.3383/0.591
-8 10 52.5 7.5BG8/10 CIExyY:0.2184/0.3196/0.591
-8 10 55 10BG8/10 CIExyY:0.212/0.3025/0.591
-8 8 47.5 2.5BG8/8 CIExyY:0.25/0.35/0.591
-8 8 50 5BG8/8 CIExyY:0.2419/0.3352/0.591
-8 8 52.5 7.5BG8/8 CIExyY:0.2352/0.3198/0.591
-8 8 55 10BG8/8 CIExyY:0.2302/0.3063/0.591
-8 6 47.5 2.5BG8/6 CIExyY:0.2647/0.3429/0.591
-8 6 50 5BG8/6 CIExyY:0.2588/0.3318/0.591
-8 6 52.5 7.5BG8/6 CIExyY:0.2525/0.3198/0.591
-8 6 55 10BG8/6 CIExyY:0.2489/0.3099/0.591
-8 4 47.5 2.5BG8/4 CIExyY:0.2791/0.3351/0.591
-8 4 50 5BG8/4 CIExyY:0.2752/0.3278/0.591
-8 4 52.5 7.5BG8/4 CIExyY:0.2718/0.32/0.591
-8 4 55 10BG8/4 CIExyY:0.2686/0.313/0.591
-8 3 47.5 2.5BG8/3 CIExyY:0.2864/0.3311/0.591
-8 3 50 5BG8/3 CIExyY:0.2834/0.3255/0.591
-8 3 52.5 7.5BG8/3 CIExyY:0.2809/0.3193/0.591
-8 3 55 10BG8/3 CIExyY:0.2789/0.3142/0.591
-8 2 47.5 2.5BG8/2 CIExyY:0.294/0.3268/0.591
-8 2 50 5BG8/2 CIExyY:0.2919/0.3228/0.591
-8 2 52.5 7.5BG8/2 CIExyY:0.29/0.3183/0.591
-8 2 55 10BG8/2 CIExyY:0.2894/0.3152/0.591
-8 1 50 5BG8/1 CIExyY:0.3007/0.3198/0.591
-8 1 55 10BG8/1 CIExyY:0.2998/0.3159/0.591
-7 22 47.5 2.5BG7/22 CIExyY:0.1334/0.387/0.4306
-7 20 47.5 2.5BG7/20 CIExyY:0.149/0.3827/0.4306
-7 20 50 5BG7/20 CIExyY:0.138/0.3412/0.4306
-7 18 47.5 2.5BG7/18 CIExyY:0.1626/0.3788/0.4306
-7 18 50 5BG7/18 CIExyY:0.1515/0.341/0.4306
-7 18 52.5 7.5BG7/18 CIExyY:0.1427/0.3076/0.4306
-7 16 47.5 2.5BG7/16 CIExyY:0.1788/0.3739/0.4306
-7 16 50 5BG7/16 CIExyY:0.1675/0.3401/0.4306
-7 16 52.5 7.5BG7/16 CIExyY:0.1584/0.3101/0.4306
-7 16 55 10BG7/16 CIExyY:0.1489/0.2768/0.4306
-7 14 47.5 2.5BG7/14 CIExyY:0.1932/0.3694/0.4306
-7 14 50 5BG7/14 CIExyY:0.1838/0.339/0.4306
-7 14 52.5 7.5BG7/14 CIExyY:0.1751/0.3129/0.4306
-7 14 55 10BG7/14 CIExyY:0.1671/0.2832/0.4306
-7 12 47.5 2.5BG7/12 CIExyY:0.2102/0.3636/0.4306
-7 12 50 5BG7/12 CIExyY:0.1997/0.3379/0.4306
-7 12 52.5 7.5BG7/12 CIExyY:0.1914/0.3148/0.4306
-7 12 55 10BG7/12 CIExyY:0.1841/0.2892/0.4306
-7 10 47.5 2.5BG7/10 CIExyY:0.2264/0.3576/0.4306
-7 10 50 5BG7/10 CIExyY:0.2163/0.3361/0.4306
-7 10 52.5 7.5BG7/10 CIExyY:0.2094/0.3165/0.4306
-7 10 55 10BG7/10 CIExyY:0.2035/0.2956/0.4306
-7 8 47.5 2.5BG7/8 CIExyY:0.2439/0.3508/0.4306
-7 8 50 5BG7/8 CIExyY:0.2354/0.3335/0.4306
-7 8 52.5 7.5BG7/8 CIExyY:0.2292/0.3178/0.4306
-7 8 55 10BG7/8 CIExyY:0.2235/0.3014/0.4306
-7 6 47.5 2.5BG7/6 CIExyY:0.2608/0.343/0.4306
-7 6 50 5BG7/6 CIExyY:0.2543/0.3302/0.4306
-7 6 52.5 7.5BG7/6 CIExyY:0.249/0.3186/0.4306
-7 6 55 10BG7/6 CIExyY:0.2448/0.3069/0.4306
-7 4 47.5 2.5BG7/4 CIExyY:0.2764/0.3354/0.4306
-7 4 50 5BG7/4 CIExyY:0.2712/0.3269/0.4306
-7 4 52.5 7.5BG7/4 CIExyY:0.2671/0.3189/0.4306
-7 4 55 10BG7/4 CIExyY:0.2642/0.3109/0.4306
-7 3 47.5 2.5BG7/3 CIExyY:0.2844/0.3313/0.4306
-7 3 50 5BG7/3 CIExyY:0.2803/0.3249/0.4306
-7 3 52.5 7.5BG7/3 CIExyY:0.2772/0.3187/0.4306
-7 3 55 10BG7/3 CIExyY:0.2753/0.3127/0.4306
-7 2 47.5 2.5BG7/2 CIExyY:0.2927/0.3269/0.4306
-7 2 50 5BG7/2 CIExyY:0.2898/0.3225/0.4306
-7 2 52.5 7.5BG7/2 CIExyY:0.2878/0.3182/0.4306
-7 2 55 10BG7/2 CIExyY:0.2869/0.3143/0.4306
-7 1 50 5BG7/1 CIExyY:0.2997/0.3197/0.4306
-7 1 55 10BG7/1 CIExyY:0.2986/0.3155/0.4306
-6 22 47.5 2.5BG6/22 CIExyY:0.112/0.386/0.3005
-6 20 47.5 2.5BG6/20 CIExyY:0.1269/0.3829/0.3005
-6 20 50 5BG6/20 CIExyY:0.1168/0.3344/0.3005
-6 18 47.5 2.5BG6/18 CIExyY:0.1423/0.379/0.3005
-6 18 50 5BG6/18 CIExyY:0.1325/0.3345/0.3005
-6 18 52.5 7.5BG6/18 CIExyY:0.1248/0.2981/0.3005
-6 18 55 10BG6/18 CIExyY:0.1181/0.2581/0.3005
-6 16 47.5 2.5BG6/16 CIExyY:0.16/0.3748/0.3005
-6 16 50 5BG6/16 CIExyY:0.1491/0.3345/0.3005
-6 16 52.5 7.5BG6/16 CIExyY:0.1408/0.3017/0.3005
-6 16 55 10BG6/16 CIExyY:0.1337/0.2651/0.3005
-6 14 47.5 2.5BG6/14 CIExyY:0.1779/0.3699/0.3005
-6 14 50 5BG6/14 CIExyY:0.1662/0.3343/0.3005
-6 14 52.5 7.5BG6/14 CIExyY:0.1585/0.3052/0.3005
-6 14 55 10BG6/14 CIExyY:0.1518/0.2729/0.3005
-6 12 47.5 2.5BG6/12 CIExyY:0.1954/0.3645/0.3005
-6 12 50 5BG6/12 CIExyY:0.1844/0.3337/0.3005
-6 12 52.5 7.5BG6/12 CIExyY:0.1762/0.3081/0.3005
-6 12 55 10BG6/12 CIExyY:0.1698/0.2802/0.3005
-6 10 47.5 2.5BG6/10 CIExyY:0.2148/0.3584/0.3005
-6 10 50 5BG6/10 CIExyY:0.2037/0.3329/0.3005
-6 10 52.5 7.5BG6/10 CIExyY:0.1961/0.311/0.3005
-6 10 55 10BG6/10 CIExyY:0.1909/0.2881/0.3005
-6 8 47.5 2.5BG6/8 CIExyY:0.2332/0.3522/0.3005
-6 8 50 5BG6/8 CIExyY:0.2236/0.3311/0.3005
-6 8 52.5 7.5BG6/8 CIExyY:0.2171/0.3138/0.3005
-6 8 55 10BG6/8 CIExyY:0.2116/0.295/0.3005
-6 6 47.5 2.5BG6/6 CIExyY:0.2526/0.3448/0.3005
-6 6 50 5BG6/6 CIExyY:0.2441/0.329/0.3005
-6 6 52.5 7.5BG6/6 CIExyY:0.2384/0.3155/0.3005
-6 6 55 10BG6/6 CIExyY:0.2335/0.3015/0.3005
-6 4 47.5 2.5BG6/4 CIExyY:0.2702/0.3369/0.3005
-6 4 50 5BG6/4 CIExyY:0.2648/0.3262/0.3005
-6 4 52.5 7.5BG6/4 CIExyY:0.2604/0.3169/0.3005
-6 4 55 10BG6/4 CIExyY:0.2578/0.3078/0.3005
-6 3 47.5 2.5BG6/3 CIExyY:0.2801/0.332/0.3005
-6 3 50 5BG6/3 CIExyY:0.2759/0.3242/0.3005
-6 3 52.5 7.5BG6/3 CIExyY:0.2725/0.3172/0.3005
-6 3 55 10BG6/3 CIExyY:0.2706/0.3107/0.3005
-6 2 47.5 2.5BG6/2 CIExyY:0.2902/0.3268/0.3005
-6 2 50 5BG6/2 CIExyY:0.2872/0.3219/0.3005
-6 2 52.5 7.5BG6/2 CIExyY:0.2849/0.3172/0.3005
-6 2 55 10BG6/2 CIExyY:0.2837/0.3132/0.3005
-6 1 50 5BG6/1 CIExyY:0.2987/0.3193/0.3005
-6 1 55 10BG6/1 CIExyY:0.2969/0.3151/0.3005
-5 24 47.5 2.5BG5/24 CIExyY:0.0738/0.3851/0.1977
-5 22 47.5 2.5BG5/22 CIExyY:0.0861/0.3832/0.1977
-5 22 50 5BG5/22 CIExyY:0.0781/0.3211/0.1977
-5 20 47.5 2.5BG5/20 CIExyY:0.1005/0.3814/0.1977
-5 20 50 5BG5/20 CIExyY:0.0904/0.3231/0.1977
-5 18 47.5 2.5BG5/18 CIExyY:0.1165/0.3785/0.1977
-5 18 50 5BG5/18 CIExyY:0.1046/0.3244/0.1977
-5 18 52.5 7.5BG5/18 CIExyY:0.0982/0.2828/0.1977
-5 16 47.5 2.5BG5/16 CIExyY:0.1348/0.375/0.1977
-5 16 50 5BG5/16 CIExyY:0.1243/0.3261/0.1977
-5 16 52.5 7.5BG5/16 CIExyY:0.1167/0.288/0.1977
-5 16 55 10BG5/16 CIExyY:0.1108/0.2489/0.1977
-5 14 47.5 2.5BG5/14 CIExyY:0.1559/0.3708/0.1977
-5 14 50 5BG5/14 CIExyY:0.1448/0.3275/0.1977
-5 14 52.5 7.5BG5/14 CIExyY:0.1364/0.2932/0.1977
-5 14 55 10BG5/14 CIExyY:0.1308/0.2582/0.1977
-5 12 47.5 2.5BG5/12 CIExyY:0.1735/0.3668/0.1977
-5 12 50 5BG5/12 CIExyY:0.1614/0.328/0.1977
-5 12 52.5 7.5BG5/12 CIExyY:0.1537/0.2976/0.1977
-5 12 55 10BG5/12 CIExyY:0.1485/0.2662/0.1977
-5 10 47.5 2.5BG5/10 CIExyY:0.198/0.3606/0.1977
-5 10 50 5BG5/10 CIExyY:0.185/0.328/0.1977
-5 10 52.5 7.5BG5/10 CIExyY:0.1776/0.3032/0.1977
-5 10 55 10BG5/10 CIExyY:0.1716/0.276/0.1977
-5 8 47.5 2.5BG5/8 CIExyY:0.2205/0.3537/0.1977
-5 8 50 5BG5/8 CIExyY:0.21/0.328/0.1977
-5 8 52.5 7.5BG5/8 CIExyY:0.203/0.3082/0.1977
-5 8 55 10BG5/8 CIExyY:0.197/0.286/0.1977
-5 6 47.5 2.5BG5/6 CIExyY:0.2448/0.3452/0.1977
-5 6 50 5BG5/6 CIExyY:0.236/0.327/0.1977
-5 6 52.5 7.5BG5/6 CIExyY:0.2292/0.3125/0.1977
-5 6 55 10BG5/6 CIExyY:0.2234/0.2952/0.1977
-5 4 47.5 2.5BG5/4 CIExyY:0.2659/0.3369/0.1977
-5 4 50 5BG5/4 CIExyY:0.2591/0.3246/0.1977
-5 4 52.5 7.5BG5/4 CIExyY:0.255/0.315/0.1977
-5 4 55 10BG5/4 CIExyY:0.2512/0.304/0.1977
-5 3 47.5 2.5BG5/3 CIExyY:0.2769/0.3321/0.1977
-5 3 50 5BG5/3 CIExyY:0.2714/0.3229/0.1977
-5 3 52.5 7.5BG5/3 CIExyY:0.2679/0.3157/0.1977
-5 3 55 10BG5/3 CIExyY:0.2652/0.3078/0.1977
-5 2 47.5 2.5BG5/2 CIExyY:0.288/0.327/0.1977
-5 2 50 5BG5/2 CIExyY:0.2841/0.321/0.1977
-5 2 52.5 7.5BG5/2 CIExyY:0.2812/0.3161/0.1977
-5 2 55 10BG5/2 CIExyY:0.2796/0.3111/0.1977
-5 1 50 5BG5/1 CIExyY:0.297/0.3188/0.1977
-5 1 55 10BG5/1 CIExyY:0.2945/0.3139/0.1977
-4 24 47.5 2.5BG4/24 CIExyY:0.051/0.38/0.12
-4 22 47.5 2.5BG4/22 CIExyY:0.0636/0.3788/0.12
-4 20 47.5 2.5BG4/20 CIExyY:0.0768/0.3773/0.12
-4 20 50 5BG4/20 CIExyY:0.0675/0.3075/0.12
-4 18 47.5 2.5BG4/18 CIExyY:0.0915/0.3754/0.12
-4 18 50 5BG4/18 CIExyY:0.0828/0.3108/0.12
-4 18 52.5 7.5BG4/18 CIExyY:0.0768/0.2667/0.12
-4 16 47.5 2.5BG4/16 CIExyY:0.1102/0.372/0.12
-4 16 50 5BG4/16 CIExyY:0.0992/0.3141/0.12
-4 16 52.5 7.5BG4/16 CIExyY:0.0922/0.2718/0.12
-4 16 55 10BG4/16 CIExyY:0.0888/0.2298/0.12
-4 14 47.5 2.5BG4/14 CIExyY:0.1283/0.3688/0.12
-4 14 50 5BG4/14 CIExyY:0.117/0.317/0.12
-4 14 52.5 7.5BG4/14 CIExyY:0.1092/0.2774/0.12
-4 14 55 10BG4/14 CIExyY:0.1033/0.2376/0.12
-4 12 47.5 2.5BG4/12 CIExyY:0.1492/0.3649/0.12
-4 12 50 5BG4/12 CIExyY:0.1379/0.3193/0.12
-4 12 52.5 7.5BG4/12 CIExyY:0.1298/0.284/0.12
-4 12 55 10BG4/12 CIExyY:0.1248/0.2484/0.12
-4 10 47.5 2.5BG4/10 CIExyY:0.1738/0.36/0.12
-4 10 50 5BG4/10 CIExyY:0.1618/0.3219/0.12
-4 10 52.5 7.5BG4/10 CIExyY:0.154/0.291/0.12
-4 10 55 10BG4/10 CIExyY:0.148/0.26/0.12
-4 8 47.5 2.5BG4/8 CIExyY:0.2006/0.354/0.12
-4 8 50 5BG4/8 CIExyY:0.189/0.3234/0.12
-4 8 52.5 7.5BG4/8 CIExyY:0.1815/0.2985/0.12
-4 8 55 10BG4/8 CIExyY:0.176/0.273/0.12
-4 6 47.5 2.5BG4/6 CIExyY:0.2278/0.3463/0.12
-4 6 50 5BG4/6 CIExyY:0.2182/0.324/0.12
-4 6 52.5 7.5BG4/6 CIExyY:0.2113/0.3052/0.12
-4 6 55 10BG4/6 CIExyY:0.2063/0.2863/0.12
-4 4 47.5 2.5BG4/4 CIExyY:0.2552/0.3375/0.12
-4 4 50 5BG4/4 CIExyY:0.248/0.3232/0.12
-4 4 52.5 7.5BG4/4 CIExyY:0.2429/0.3108/0.12
-4 4 55 10BG4/4 CIExyY:0.2384/0.2984/0.12
-4 3 47.5 2.5BG4/3 CIExyY:0.2697/0.3324/0.12
-4 3 50 5BG4/3 CIExyY:0.2639/0.3222/0.12
-4 3 52.5 7.5BG4/3 CIExyY:0.2595/0.3131/0.12
-4 3 55 10BG4/3 CIExyY:0.2559/0.3041/0.12
-4 2 47.5 2.5BG4/2 CIExyY:0.284/0.327/0.12
-4 2 50 5BG4/2 CIExyY:0.2799/0.3208/0.12
-4 2 52.5 7.5BG4/2 CIExyY:0.2764/0.3148/0.12
-4 2 55 10BG4/2 CIExyY:0.274/0.3091/0.12
-4 1 50 5BG4/1 CIExyY:0.2954/0.3188/0.12
-4 1 55 10BG4/1 CIExyY:0.2922/0.3133/0.12
-3 20 47.5 2.5BG3/20 CIExyY:0.0482/0.3695/0.06555
-3 18 47.5 2.5BG3/18 CIExyY:0.0648/0.3682/0.06555
-3 18 50 5BG3/18 CIExyY:0.058/0.294/0.06555
-3 16 47.5 2.5BG3/16 CIExyY:0.0843/0.3667/0.06555
-3 16 50 5BG3/16 CIExyY:0.0735/0.2979/0.06555
-3 16 52.5 7.5BG3/16 CIExyY:0.0691/0.2559/0.06555
-3 14 47.5 2.5BG3/14 CIExyY:0.1051/0.3648/0.06555
-3 14 50 5BG3/14 CIExyY:0.094/0.3027/0.06555
-3 14 52.5 7.5BG3/14 CIExyY:0.0874/0.2627/0.06555
-3 14 55 10BG3/14 CIExyY:0.0798/0.2151/0.06555
-3 12 47.5 2.5BG3/12 CIExyY:0.1288/0.362/0.06555
-3 12 50 5BG3/12 CIExyY:0.1158/0.3071/0.06555
-3 12 52.5 7.5BG3/12 CIExyY:0.1086/0.2706/0.06555
-3 12 55 10BG3/12 CIExyY:0.1018/0.2281/0.06555
-3 10 47.5 2.5BG3/10 CIExyY:0.1552/0.358/0.06555
-3 10 50 5BG3/10 CIExyY:0.141/0.3118/0.06555
-3 10 52.5 7.5BG3/10 CIExyY:0.1326/0.2784/0.06555
-3 10 55 10BG3/10 CIExyY:0.125/0.2411/0.06555
-3 8 47.5 2.5BG3/8 CIExyY:0.1845/0.3531/0.06555
-3 8 50 5BG3/8 CIExyY:0.1703/0.3159/0.06555
-3 8 52.5 7.5BG3/8 CIExyY:0.162/0.2872/0.06555
-3 8 55 10BG3/8 CIExyY:0.1551/0.2571/0.06555
-3 6 47.5 2.5BG3/6 CIExyY:0.2132/0.3468/0.06555
-3 6 50 5BG3/6 CIExyY:0.202/0.3188/0.06555
-3 6 52.5 7.5BG3/6 CIExyY:0.1928/0.2958/0.06555
-3 6 55 10BG3/6 CIExyY:0.1861/0.2722/0.06555
-3 4 47.5 2.5BG3/4 CIExyY:0.2437/0.3386/0.06555
-3 4 50 5BG3/4 CIExyY:0.2343/0.32/0.06555
-3 4 52.5 7.5BG3/4 CIExyY:0.2272/0.3041/0.06555
-3 4 55 10BG3/4 CIExyY:0.2221/0.2886/0.06555
-3 3 47.5 2.5BG3/3 CIExyY:0.2618/0.333/0.06555
-3 3 50 5BG3/3 CIExyY:0.254/0.3199/0.06555
-3 3 52.5 7.5BG3/3 CIExyY:0.2482/0.3083/0.06555
-3 3 55 10BG3/3 CIExyY:0.2435/0.2971/0.06555
-3 2 47.5 2.5BG3/2 CIExyY:0.2799/0.3271/0.06555
-3 2 50 5BG3/2 CIExyY:0.2742/0.3192/0.06555
-3 2 52.5 7.5BG3/2 CIExyY:0.2699/0.312/0.06555
-3 2 55 10BG3/2 CIExyY:0.266/0.305/0.06555
-3 1 50 5BG3/1 CIExyY:0.2934/0.318/0.06555
-3 1 55 10BG3/1 CIExyY:0.2885/0.3116/0.06555
-2 14 47.5 2.5BG2/14 CIExyY:0.0555/0.3588/0.03126
-2 12 47.5 2.5BG2/12 CIExyY:0.0851/0.3576/0.03126
-2 12 50 5BG2/12 CIExyY:0.0769/0.288/0.03126
-2 12 52.5 7.5BG2/12 CIExyY:0.0724/0.2478/0.03126
-2 10 47.5 2.5BG2/10 CIExyY:0.119/0.3551/0.03126
-2 10 50 5BG2/10 CIExyY:0.105/0.2956/0.03126
-2 10 52.5 7.5BG2/10 CIExyY:0.0991/0.2582/0.03126
-2 10 55 10BG2/10 CIExyY:0.0929/0.2133/0.03126
-2 8 47.5 2.5BG2/8 CIExyY:0.1557/0.3517/0.03126
-2 8 50 5BG2/8 CIExyY:0.1405/0.3037/0.03126
-2 8 52.5 7.5BG2/8 CIExyY:0.1325/0.271/0.03126
-2 8 55 10BG2/8 CIExyY:0.1258/0.2331/0.03126
-2 6 47.5 2.5BG2/6 CIExyY:0.1971/0.3452/0.03126
-2 6 50 5BG2/6 CIExyY:0.1843/0.311/0.03126
-2 6 52.5 7.5BG2/6 CIExyY:0.1747/0.2853/0.03126
-2 6 55 10BG2/6 CIExyY:0.1669/0.257/0.03126
-2 4 47.5 2.5BG2/4 CIExyY:0.2343/0.3378/0.03126
-2 4 50 5BG2/4 CIExyY:0.2234/0.315/0.03126
-2 4 52.5 7.5BG2/4 CIExyY:0.2162/0.2981/0.03126
-2 4 55 10BG2/4 CIExyY:0.2096/0.279/0.03126
-2 3 47.5 2.5BG2/3 CIExyY:0.2556/0.3327/0.03126
-2 3 50 5BG2/3 CIExyY:0.2465/0.3166/0.03126
-2 3 52.5 7.5BG2/3 CIExyY:0.2404/0.3043/0.03126
-2 3 55 10BG2/3 CIExyY:0.2347/0.2904/0.03126
-2 2 47.5 2.5BG2/2 CIExyY:0.2765/0.3271/0.03126
-2 2 50 5BG2/2 CIExyY:0.2697/0.3175/0.03126
-2 2 52.5 7.5BG2/2 CIExyY:0.2651/0.3098/0.03126
-2 2 55 10BG2/2 CIExyY:0.2606/0.301/0.03126
-2 1 50 5BG2/1 CIExyY:0.2915/0.3175/0.03126
-2 1 55 10BG2/1 CIExyY:0.2861/0.3099/0.03126
-1 8 47.5 2.5BG1/8 CIExyY:0.0476/0.3458/0.0121
-1 6 47.5 2.5BG1/6 CIExyY:0.1169/0.3452/0.0121
-1 6 50 5BG1/6 CIExyY:0.1093/0.286/0.0121
-1 6 52.5 7.5BG1/6 CIExyY:0.1059/0.2485/0.0121
-1 6 55 10BG1/6 CIExyY:0.1074/0.2129/0.0121
-1 4 47.5 2.5BG1/4 CIExyY:0.1883/0.3406/0.0121
-1 4 50 5BG1/4 CIExyY:0.1753/0.3021/0.0121
-1 4 52.5 7.5BG1/4 CIExyY:0.1702/0.2768/0.0121
-1 4 55 10BG1/4 CIExyY:0.1658/0.2496/0.0121
-1 2 47.5 2.5BG1/2 CIExyY:0.26/0.3289/0.0121
-1 2 50 5BG1/2 CIExyY:0.25/0.3141/0.0121
-1 2 52.5 7.5BG1/2 CIExyY:0.243/0.3023/0.0121
-1 2 55 10BG1/2 CIExyY:0.2362/0.2882/0.0121
-9 4 57.5 2.5B9/4 CIExyY:0.268/0.3073/0.7866
-9 4 60 5B9/4 CIExyY:0.2675/0.3005/0.7866
-9 4 62.5 7.5B9/4 CIExyY:0.2688/0.2961/0.7866
-9 4 65 10B9/4 CIExyY:0.2712/0.2924/0.7866
-9 2 57.5 2.5B9/2 CIExyY:0.2909/0.3125/0.7866
-9 2 60 5B9/2 CIExyY:0.2919/0.3102/0.7866
-9 2 62.5 7.5B9/2 CIExyY:0.2937/0.3087/0.7866
-9 2 65 10B9/2 CIExyY:0.2949/0.3076/0.7866
-9 1 60 5B9/1 CIExyY:0.3018/0.3137/0.7866
-9 1 65 10B9/1 CIExyY:0.3036/0.3128/0.7866
-8 12 57.5 2.5B8/12 CIExyY:0.1877/0.2752/0.591
-8 10 57.5 2.5B8/10 CIExyY:0.2066/0.2839/0.591
-8 8 57.5 2.5B8/8 CIExyY:0.2264/0.2923/0.591
-8 8 60 5B8/8 CIExyY:0.2237/0.2761/0.591
-8 8 62.5 7.5B8/8 CIExyY:0.2252/0.2668/0.591
-8 8 65 10B8/8 CIExyY:0.2294/0.2587/0.591
-8 6 57.5 2.5B8/6 CIExyY:0.2462/0.3/0.591
-8 6 60 5B8/6 CIExyY:0.2457/0.2888/0.591
-8 6 62.5 7.5B8/6 CIExyY:0.2472/0.2821/0.591
-8 6 65 10B8/6 CIExyY:0.2512/0.276/0.591
-8 4 57.5 2.5B8/4 CIExyY:0.2668/0.3067/0.591
-8 4 60 5B8/4 CIExyY:0.2671/0.2998/0.591
-8 4 62.5 7.5B8/4 CIExyY:0.2688/0.2956/0.591
-8 4 65 10B8/4 CIExyY:0.2718/0.2911/0.591
-8 3 57.5 2.5B8/3 CIExyY:0.2783/0.3097/0.591
-8 3 60 5B8/3 CIExyY:0.2791/0.305/0.591
-8 3 62.5 7.5B8/3 CIExyY:0.2807/0.302/0.591
-8 3 65 10B8/3 CIExyY:0.2829/0.299/0.591
-8 2 57.5 2.5B8/2 CIExyY:0.2897/0.3124/0.591
-8 2 60 5B8/2 CIExyY:0.2908/0.3096/0.591
-8 2 62.5 7.5B8/2 CIExyY:0.2922/0.3077/0.591
-8 2 65 10B8/2 CIExyY:0.2935/0.3062/0.591
-8 1 60 5B8/1 CIExyY:0.3014/0.3135/0.591
-8 1 65 10B8/1 CIExyY:0.3028/0.3122/0.591
-7 16 57.5 2.5B7/16 CIExyY:0.1435/0.2472/0.4306
-7 14 57.5 2.5B7/14 CIExyY:0.1624/0.2581/0.4306
-7 14 60 5B7/14 CIExyY:0.1615/0.2307/0.4306
-7 12 57.5 2.5B7/12 CIExyY:0.1797/0.2672/0.4306
-7 12 60 5B7/12 CIExyY:0.1778/0.243/0.4306
-7 12 62.5 7.5B7/12 CIExyY:0.1818/0.2303/0.4306
-7 12 65 10B7/12 CIExyY:0.1883/0.2203/0.4306
-7 10 57.5 2.5B7/10 CIExyY:0.1994/0.2775/0.4306
-7 10 60 5B7/10 CIExyY:0.1986/0.2579/0.4306
-7 10 62.5 7.5B7/10 CIExyY:0.2016/0.2466/0.4306
-7 10 65 10B7/10 CIExyY:0.2078/0.2382/0.4306
-7 8 57.5 2.5B7/8 CIExyY:0.2208/0.2871/0.4306
-7 8 60 5B7/8 CIExyY:0.2204/0.2729/0.4306
-7 8 62.5 7.5B7/8 CIExyY:0.2225/0.2631/0.4306
-7 8 65 10B7/8 CIExyY:0.2277/0.2559/0.4306
-7 6 57.5 2.5B7/6 CIExyY:0.2418/0.296/0.4306
-7 6 60 5B7/6 CIExyY:0.241/0.2854/0.4306
-7 6 62.5 7.5B7/6 CIExyY:0.2436/0.2787/0.4306
-7 6 65 10B7/6 CIExyY:0.2478/0.2728/0.4306
-7 4 57.5 2.5B7/4 CIExyY:0.2629/0.3038/0.4306
-7 4 60 5B7/4 CIExyY:0.2633/0.2972/0.4306
-7 4 62.5 7.5B7/4 CIExyY:0.2651/0.2927/0.4306
-7 4 65 10B7/4 CIExyY:0.2685/0.2886/0.4306
-7 3 57.5 2.5B7/3 CIExyY:0.2747/0.3076/0.4306
-7 3 60 5B7/3 CIExyY:0.2754/0.3027/0.4306
-7 3 62.5 7.5B7/3 CIExyY:0.277/0.2995/0.4306
-7 3 65 10B7/3 CIExyY:0.2797/0.2965/0.4306
-7 2 57.5 2.5B7/2 CIExyY:0.2867/0.311/0.4306
-7 2 60 5B7/2 CIExyY:0.2875/0.3078/0.4306
-7 2 62.5 7.5B7/2 CIExyY:0.2888/0.3058/0.4306
-7 2 65 10B7/2 CIExyY:0.2908/0.3039/0.4306
-7 1 60 5B7/1 CIExyY:0.2992/0.3124/0.4306
-7 1 65 10B7/1 CIExyY:0.3011/0.3106/0.4306
-6 16 57.5 2.5B6/16 CIExyY:0.1294/0.2348/0.3005
-6 16 60 5B6/16 CIExyY:0.131/0.2048/0.3005
-6 16 62.5 7.5B6/16 CIExyY:0.1376/0.1879/0.3005
-6 16 65 10B6/16 CIExyY:0.1454/0.1778/0.3005
-6 14 57.5 2.5B6/14 CIExyY:0.148/0.2459/0.3005
-6 14 60 5B6/14 CIExyY:0.1496/0.2193/0.3005
-6 14 62.5 7.5B6/14 CIExyY:0.1556/0.2043/0.3005
-6 14 65 10B6/14 CIExyY:0.1629/0.1947/0.3005
-6 12 57.5 2.5B6/12 CIExyY:0.166/0.2561/0.3005
-6 12 60 5B6/12 CIExyY:0.1685/0.2339/0.3005
-6 12 62.5 7.5B6/12 CIExyY:0.1734/0.2203/0.3005
-6 12 65 10B6/12 CIExyY:0.1803/0.2114/0.3005
-6 10 57.5 2.5B6/10 CIExyY:0.1879/0.2682/0.3005
-6 10 60 5B6/10 CIExyY:0.1883/0.2487/0.3005
-6 10 62.5 7.5B6/10 CIExyY:0.1934/0.2374/0.3005
-6 10 65 10B6/10 CIExyY:0.2/0.2298/0.3005
-6 8 57.5 2.5B6/8 CIExyY:0.208/0.2789/0.3005
-6 8 60 5B6/8 CIExyY:0.2088/0.2635/0.3005
-6 8 62.5 7.5B6/8 CIExyY:0.2132/0.2537/0.3005
-6 8 65 10B6/8 CIExyY:0.2189/0.2468/0.3005
-6 6 57.5 2.5B6/6 CIExyY:0.2312/0.2899/0.3005
-6 6 60 5B6/6 CIExyY:0.232/0.2789/0.3005
-6 6 62.5 7.5B6/6 CIExyY:0.2352/0.2708/0.3005
-6 6 65 10B6/6 CIExyY:0.2399/0.265/0.3005
-6 4 57.5 2.5B6/4 CIExyY:0.2571/0.3008/0.3005
-6 4 60 5B6/4 CIExyY:0.2579/0.2938/0.3005
-6 4 62.5 7.5B6/4 CIExyY:0.2602/0.2881/0.3005
-6 4 65 10B6/4 CIExyY:0.2637/0.284/0.3005
-6 3 57.5 2.5B6/3 CIExyY:0.2703/0.3055/0.3005
-6 3 60 5B6/3 CIExyY:0.2711/0.3004/0.3005
-6 3 62.5 7.5B6/3 CIExyY:0.2728/0.2962/0.3005
-6 3 65 10B6/3 CIExyY:0.2755/0.2928/0.3005
-6 2 57.5 2.5B6/2 CIExyY:0.2835/0.3097/0.3005
-6 2 60 5B6/2 CIExyY:0.2842/0.3063/0.3005
-6 2 62.5 7.5B6/2 CIExyY:0.2854/0.3037/0.3005
-6 2 65 10B6/2 CIExyY:0.2871/0.3012/0.3005
-6 1 60 5B6/1 CIExyY:0.2972/0.3116/0.3005
-6 1 65 10B6/1 CIExyY:0.2987/0.309/0.3005
-5 18 65 10B5/18 CIExyY:0.1203/0.1505/0.1977
-5 16 57.5 2.5B5/16 CIExyY:0.109/0.2166/0.1977
-5 16 60 5B5/16 CIExyY:0.1132/0.1863/0.1977
-5 16 62.5 7.5B5/16 CIExyY:0.123/0.1711/0.1977
-5 16 65 10B5/16 CIExyY:0.1326/0.1632/0.1977
-5 14 57.5 2.5B5/14 CIExyY:0.1283/0.2292/0.1977
-5 14 60 5B5/14 CIExyY:0.132/0.2021/0.1977
-5 14 62.5 7.5B5/14 CIExyY:0.1404/0.1878/0.1977
-5 14 65 10B5/14 CIExyY:0.1492/0.1797/0.1977
-5 12 57.5 2.5B5/12 CIExyY:0.1461/0.2406/0.1977
-5 12 60 5B5/12 CIExyY:0.1505/0.2172/0.1977
-5 12 62.5 7.5B5/12 CIExyY:0.1584/0.2042/0.1977
-5 12 65 10B5/12 CIExyY:0.1666/0.1964/0.1977
-5 10 57.5 2.5B5/10 CIExyY:0.1697/0.2549/0.1977
-5 10 60 5B5/10 CIExyY:0.1729/0.2347/0.1977
-5 10 62.5 7.5B5/10 CIExyY:0.1792/0.223/0.1977
-5 10 65 10B5/10 CIExyY:0.186/0.2149/0.1977
-5 8 57.5 2.5B5/8 CIExyY:0.1947/0.2687/0.1977
-5 8 60 5B5/8 CIExyY:0.1958/0.2519/0.1977
-5 8 62.5 7.5B5/8 CIExyY:0.2007/0.2417/0.1977
-5 8 65 10B5/8 CIExyY:0.2067/0.2344/0.1977
-5 6 57.5 2.5B5/6 CIExyY:0.221/0.2823/0.1977
-5 6 60 5B5/6 CIExyY:0.2215/0.2701/0.1977
-5 6 62.5 7.5B5/6 CIExyY:0.2248/0.2612/0.1977
-5 6 65 10B5/6 CIExyY:0.2299/0.2548/0.1977
-5 4 57.5 2.5B5/4 CIExyY:0.2492/0.2954/0.1977
-5 4 60 5B5/4 CIExyY:0.2493/0.2879/0.1977
-5 4 62.5 7.5B5/4 CIExyY:0.2511/0.2808/0.1977
-5 4 65 10B5/4 CIExyY:0.2547/0.2757/0.1977
-5 3 57.5 2.5B5/3 CIExyY:0.264/0.3015/0.1977
-5 3 60 5B5/3 CIExyY:0.2642/0.2958/0.1977
-5 3 62.5 7.5B5/3 CIExyY:0.2655/0.2906/0.1977
-5 3 65 10B5/3 CIExyY:0.2682/0.2862/0.1977
-5 2 57.5 2.5B5/2 CIExyY:0.2791/0.3071/0.1977
-5 2 60 5B5/2 CIExyY:0.2794/0.3032/0.1977
-5 2 62.5 7.5B5/2 CIExyY:0.2803/0.3/0.1977
-5 2 65 10B5/2 CIExyY:0.2821/0.2966/0.1977
-5 1 60 5B5/1 CIExyY:0.2948/0.31/0.1977
-5 1 65 10B5/1 CIExyY:0.2961/0.3067/0.1977
-4 16 57.5 2.5B4/16 CIExyY:0.09/0.1973/0.12
-4 16 65 10B4/16 CIExyY:0.1155/0.1416/0.12
-4 14 57.5 2.5B4/14 CIExyY:0.1027/0.2057/0.12
-4 14 60 5B4/14 CIExyY:0.1098/0.1785/0.12
-4 14 62.5 7.5B4/14 CIExyY:0.1204/0.1655/0.12
-4 14 65 10B4/14 CIExyY:0.131/0.158/0.12
-4 12 57.5 2.5B4/12 CIExyY:0.1247/0.2209/0.12
-4 12 60 5B4/12 CIExyY:0.1299/0.1963/0.12
-4 12 62.5 7.5B4/12 CIExyY:0.1393/0.1837/0.12
-4 12 65 10B4/12 CIExyY:0.1487/0.176/0.12
-4 10 57.5 2.5B4/10 CIExyY:0.1463/0.2354/0.12
-4 10 60 5B4/10 CIExyY:0.1512/0.2148/0.12
-4 10 62.5 7.5B4/10 CIExyY:0.1601/0.2028/0.12
-4 10 65 10B4/10 CIExyY:0.1681/0.1954/0.12
-4 8 57.5 2.5B4/8 CIExyY:0.1737/0.2524/0.12
-4 8 60 5B4/8 CIExyY:0.1759/0.2345/0.12
-4 8 62.5 7.5B4/8 CIExyY:0.1821/0.2232/0.12
-4 8 65 10B4/8 CIExyY:0.1893/0.216/0.12
-4 6 57.5 2.5B4/6 CIExyY:0.2048/0.2708/0.12
-4 6 60 5B4/6 CIExyY:0.206/0.2572/0.12
-4 6 62.5 7.5B4/6 CIExyY:0.2102/0.247/0.12
-4 6 65 10B4/6 CIExyY:0.2157/0.2407/0.12
-4 4 57.5 2.5B4/4 CIExyY:0.236/0.2872/0.12
-4 4 60 5B4/4 CIExyY:0.2363/0.2782/0.12
-4 4 62.5 7.5B4/4 CIExyY:0.2388/0.2704/0.12
-4 4 65 10B4/4 CIExyY:0.2429/0.2648/0.12
-4 3 57.5 2.5B4/3 CIExyY:0.254/0.2957/0.12
-4 3 60 5B4/3 CIExyY:0.2538/0.2889/0.12
-4 3 62.5 7.5B4/3 CIExyY:0.2555/0.2827/0.12
-4 3 65 10B4/3 CIExyY:0.2586/0.2778/0.12
-4 2 57.5 2.5B4/2 CIExyY:0.2727/0.3038/0.12
-4 2 60 5B4/2 CIExyY:0.2723/0.2992/0.12
-4 2 62.5 7.5B4/2 CIExyY:0.2733/0.2947/0.12
-4 2 65 10B4/2 CIExyY:0.2753/0.291/0.12
-4 1 60 5B4/1 CIExyY:0.2912/0.3085/0.12
-4 1 65 10B4/1 CIExyY:0.2926/0.304/0.12
-3 14 65 10B3/14 CIExyY:0.1065/0.1285/0.06555
-3 12 57.5 2.5B3/12 CIExyY:0.0989/0.1963/0.06555
-3 12 60 5B3/12 CIExyY:0.1042/0.1681/0.06555
-3 12 62.5 7.5B3/12 CIExyY:0.1131/0.1542/0.06555
-3 12 65 10B3/12 CIExyY:0.1228/0.146/0.06555
-3 10 57.5 2.5B3/10 CIExyY:0.122/0.2132/0.06555
-3 10 60 5B3/10 CIExyY:0.1259/0.1879/0.06555
-3 10 62.5 7.5B3/10 CIExyY:0.1343/0.1756/0.06555
-3 10 65 10B3/10 CIExyY:0.1432/0.1675/0.06555
-3 8 57.5 2.5B3/8 CIExyY:0.1511/0.2331/0.06555
-3 8 60 5B3/8 CIExyY:0.1527/0.2119/0.06555
-3 8 62.5 7.5B3/8 CIExyY:0.1583/0.1987/0.06555
-3 8 65 10B3/8 CIExyY:0.1658/0.1905/0.06555
-3 6 57.5 2.5B3/6 CIExyY:0.1826/0.2536/0.06555
-3 6 60 5B3/6 CIExyY:0.1835/0.2375/0.06555
-3 6 62.5 7.5B3/6 CIExyY:0.1875/0.2258/0.06555
-3 6 65 10B3/6 CIExyY:0.1933/0.2173/0.06555
-3 4 57.5 2.5B3/4 CIExyY:0.2183/0.2748/0.06555
-3 4 60 5B3/4 CIExyY:0.2176/0.2632/0.06555
-3 4 62.5 7.5B3/4 CIExyY:0.22/0.2536/0.06555
-3 4 65 10B3/4 CIExyY:0.2246/0.2467/0.06555
-3 3 57.5 2.5B3/3 CIExyY:0.2403/0.2868/0.06555
-3 3 60 5B3/3 CIExyY:0.2388/0.2777/0.06555
-3 3 62.5 7.5B3/3 CIExyY:0.2398/0.2695/0.06555
-3 3 65 10B3/3 CIExyY:0.2429/0.263/0.06555
-3 2 57.5 2.5B3/2 CIExyY:0.2636/0.2983/0.06555
-3 2 60 5B3/2 CIExyY:0.2617/0.2921/0.06555
-3 2 62.5 7.5B3/2 CIExyY:0.2616/0.2857/0.06555
-3 2 65 10B3/2 CIExyY:0.2631/0.2801/0.06555
-3 1 60 5B3/1 CIExyY:0.2857/0.3053/0.06555
-3 1 65 10B3/1 CIExyY:0.2855/0.2979/0.06555
-2 10 57.5 2.5B2/10 CIExyY:0.0911/0.1828/0.03126
-2 10 60 5B2/10 CIExyY:0.0965/0.1558/0.03126
-2 10 62.5 7.5B2/10 CIExyY:0.1051/0.1422/0.03126
-2 10 65 10B2/10 CIExyY:0.1157/0.1346/0.03126
-2 8 57.5 2.5B2/8 CIExyY:0.123/0.2076/0.03126
-2 8 60 5B2/8 CIExyY:0.1245/0.1827/0.03126
-2 8 62.5 7.5B2/8 CIExyY:0.1313/0.1692/0.03126
-2 8 65 10B2/8 CIExyY:0.1396/0.1603/0.03126
-2 6 57.5 2.5B2/6 CIExyY:0.1621/0.2358/0.03126
-2 6 60 5B2/6 CIExyY:0.1617/0.2162/0.03126
-2 6 62.5 7.5B2/6 CIExyY:0.1658/0.2026/0.03126
-2 6 65 10B2/6 CIExyY:0.1716/0.1937/0.03126
-2 4 57.5 2.5B2/4 CIExyY:0.206/0.2649/0.03126
-2 4 60 5B2/4 CIExyY:0.2048/0.2518/0.03126
-2 4 62.5 7.5B2/4 CIExyY:0.2063/0.24/0.03126
-2 4 65 10B2/4 CIExyY:0.2102/0.2313/0.03126
-2 3 57.5 2.5B2/3 CIExyY:0.2314/0.2799/0.03126
-2 3 60 5B2/3 CIExyY:0.2297/0.27/0.03126
-2 3 62.5 7.5B2/3 CIExyY:0.2295/0.26/0.03126
-2 3 65 10B2/3 CIExyY:0.232/0.2515/0.03126
-2 2 57.5 2.5B2/2 CIExyY:0.2578/0.294/0.03126
-2 2 60 5B2/2 CIExyY:0.2559/0.2874/0.03126
-2 2 62.5 7.5B2/2 CIExyY:0.2545/0.2799/0.03126
-2 2 65 10B2/2 CIExyY:0.2558/0.2725/0.03126
-2 1 60 5B2/1 CIExyY:0.2829/0.3031/0.03126
-2 1 65 10B2/1 CIExyY:0.2818/0.2941/0.03126
-1 8 62.5 7.5B1/8 CIExyY:0.0968/0.128/0.0121
-1 8 65 10B1/8 CIExyY:0.1077/0.1218/0.0121
-1 6 57.5 2.5B1/6 CIExyY:0.1118/0.1908/0.0121
-1 6 60 5B1/6 CIExyY:0.1212/0.1745/0.0121
-1 6 62.5 7.5B1/6 CIExyY:0.1303/0.1639/0.0121
-1 6 65 10B1/6 CIExyY:0.1392/0.1563/0.0121
-1 4 57.5 2.5B1/4 CIExyY:0.1649/0.2324/0.0121
-1 4 60 5B1/4 CIExyY:0.1667/0.2168/0.0121
-1 4 62.5 7.5B1/4 CIExyY:0.1716/0.2048/0.0121
-1 4 65 10B1/4 CIExyY:0.1783/0.1974/0.0121
-1 2 57.5 2.5B1/2 CIExyY:0.2322/0.2781/0.0121
-1 2 60 5B1/2 CIExyY:0.2291/0.2677/0.0121
-1 2 62.5 7.5B1/2 CIExyY:0.2291/0.2579/0.0121
-1 2 65 10B1/2 CIExyY:0.2309/0.2491/0.0121
-9 4 75 10PB9/4 CIExyY:0.291/0.285/0.7866
-9 2 67.5 2.5PB9/2 CIExyY:0.2975/0.3063/0.7866
-9 2 70 5PB9/2 CIExyY:0.2991/0.3057/0.7866
-9 2 72.5 7.5PB9/2 CIExyY:0.3015/0.3052/0.7866
-9 2 75 10PB9/2 CIExyY:0.3038/0.3054/0.7866
-9 1 70 5PB9/1 CIExyY:0.3046/0.311/0.7866
-9 1 75 10PB9/1 CIExyY:0.3078/0.312/0.7866
-8 8 75 10PB8/8 CIExyY:0.2677/0.2443/0.591
-8 6 67.5 2.5PB8/6 CIExyY:0.2562/0.2709/0.591
-8 6 70 5PB8/6 CIExyY:0.2614/0.267/0.591
-8 6 72.5 7.5PB8/6 CIExyY:0.2702/0.2648/0.591
-8 6 75 10PB8/6 CIExyY:0.2792/0.2649/0.591
-8 4 67.5 2.5PB8/4 CIExyY:0.2758/0.2879/0.591
-8 4 70 5PB8/4 CIExyY:0.2798/0.2861/0.591
-8 4 72.5 7.5PB8/4 CIExyY:0.2856/0.2846/0.591
-8 4 75 10PB8/4 CIExyY:0.2911/0.2848/0.591
-8 3 67.5 2.5PB8/3 CIExyY:0.2861/0.2966/0.591
-8 3 70 5PB8/3 CIExyY:0.289/0.2954/0.591
-8 3 72.5 7.5PB8/3 CIExyY:0.2933/0.2944/0.591
-8 3 75 10PB8/3 CIExyY:0.2972/0.2946/0.591
-8 2 67.5 2.5PB8/2 CIExyY:0.2957/0.3047/0.591
-8 2 70 5PB8/2 CIExyY:0.2974/0.3039/0.591
-8 2 72.5 7.5PB8/2 CIExyY:0.3003/0.3034/0.591
-8 2 75 10PB8/2 CIExyY:0.3027/0.3035/0.591
-8 1 70 5PB8/1 CIExyY:0.3046/0.311/0.591
-8 1 75 10PB8/1 CIExyY:0.3072/0.3109/0.591
-7 12 75 10PB7/12 CIExyY:0.2465/0.2058/0.4306
-7 10 67.5 2.5PB7/10 CIExyY:0.2162/0.2309/0.4306
-7 10 70 5PB7/10 CIExyY:0.2254/0.2267/0.4306
-7 10 72.5 7.5PB7/10 CIExyY:0.241/0.2224/0.4306
-7 10 75 10PB7/10 CIExyY:0.2563/0.224/0.4306
-7 8 67.5 2.5PB7/8 CIExyY:0.2352/0.2498/0.4306
-7 8 70 5PB7/8 CIExyY:0.2427/0.2458/0.4306
-7 8 72.5 7.5PB7/8 CIExyY:0.2546/0.2418/0.4306
-7 8 75 10PB7/8 CIExyY:0.267/0.2425/0.4306
-7 6 67.5 2.5PB7/6 CIExyY:0.2538/0.2677/0.4306
-7 6 70 5PB7/6 CIExyY:0.2596/0.2643/0.4306
-7 6 72.5 7.5PB7/6 CIExyY:0.2687/0.2612/0.4306
-7 6 75 10PB7/6 CIExyY:0.2776/0.2612/0.4306
-7 4 67.5 2.5PB7/4 CIExyY:0.2729/0.2848/0.4306
-7 4 70 5PB7/4 CIExyY:0.2773/0.2828/0.4306
-7 4 72.5 7.5PB7/4 CIExyY:0.2833/0.2809/0.4306
-7 4 75 10PB7/4 CIExyY:0.2886/0.2801/0.4306
-7 3 67.5 2.5PB7/3 CIExyY:0.2832/0.2939/0.4306
-7 3 70 5PB7/3 CIExyY:0.2864/0.2922/0.4306
-7 3 72.5 7.5PB7/3 CIExyY:0.2909/0.2908/0.4306
-7 3 75 10PB7/3 CIExyY:0.2946/0.2902/0.4306
-7 2 67.5 2.5PB7/2 CIExyY:0.2932/0.3025/0.4306
-7 2 70 5PB7/2 CIExyY:0.2952/0.3011/0.4306
-7 2 72.5 7.5PB7/2 CIExyY:0.2982/0.3003/0.4306
-7 2 75 10PB7/2 CIExyY:0.3005/0.3/0.4306
-7 1 70 5PB7/1 CIExyY:0.3032/0.3093/0.4306
-7 1 75 10PB7/1 CIExyY:0.3058/0.3089/0.4306
-6 16 75 10PB6/16 CIExyY:0.2265/0.1671/0.3005
-6 14 67.5 2.5PB6/14 CIExyY:0.1754/0.1868/0.3005
-6 14 70 5PB6/14 CIExyY:0.1873/0.1822/0.3005
-6 14 72.5 7.5PB6/14 CIExyY:0.2119/0.1799/0.3005
-6 14 75 10PB6/14 CIExyY:0.2352/0.1839/0.3005
-6 12 67.5 2.5PB6/12 CIExyY:0.1913/0.2038/0.3005
-6 12 70 5PB6/12 CIExyY:0.2026/0.1999/0.3005
-6 12 72.5 7.5PB6/12 CIExyY:0.2241/0.1975/0.3005
-6 12 75 10PB6/12 CIExyY:0.244/0.1998/0.3005
-6 10 67.5 2.5PB6/10 CIExyY:0.2095/0.2225/0.3005
-6 10 70 5PB6/10 CIExyY:0.2197/0.2188/0.3005
-6 10 72.5 7.5PB6/10 CIExyY:0.2378/0.2168/0.3005
-6 10 75 10PB6/10 CIExyY:0.254/0.2176/0.3005
-6 8 67.5 2.5PB6/8 CIExyY:0.2274/0.2406/0.3005
-6 8 70 5PB6/8 CIExyY:0.236/0.2365/0.3005
-6 8 72.5 7.5PB6/8 CIExyY:0.2505/0.2347/0.3005
-6 8 75 10PB6/8 CIExyY:0.2637/0.2352/0.3005
-6 6 67.5 2.5PB6/6 CIExyY:0.2465/0.2599/0.3005
-6 6 70 5PB6/6 CIExyY:0.2533/0.2558/0.3005
-6 6 72.5 7.5PB6/6 CIExyY:0.2638/0.2531/0.3005
-6 6 75 10PB6/6 CIExyY:0.274/0.2533/0.3005
-6 4 67.5 2.5PB6/4 CIExyY:0.2684/0.2804/0.3005
-6 4 70 5PB6/4 CIExyY:0.2734/0.2778/0.3005
-6 4 72.5 7.5PB6/4 CIExyY:0.2798/0.2752/0.3005
-6 4 75 10PB6/4 CIExyY:0.2863/0.2747/0.3005
-6 3 67.5 2.5PB6/3 CIExyY:0.2791/0.29/0.3005
-6 3 70 5PB6/3 CIExyY:0.283/0.288/0.3005
-6 3 72.5 7.5PB6/3 CIExyY:0.2877/0.2859/0.3005
-6 3 75 10PB6/3 CIExyY:0.2926/0.2855/0.3005
-6 2 67.5 2.5PB6/2 CIExyY:0.2897/0.2991/0.3005
-6 2 70 5PB6/2 CIExyY:0.2923/0.2978/0.3005
-6 2 72.5 7.5PB6/2 CIExyY:0.2955/0.2963/0.3005
-6 2 75 10PB6/2 CIExyY:0.2988/0.2961/0.3005
-6 1 70 5PB6/1 CIExyY:0.3013/0.3072/0.3005
-6 1 75 10PB6/1 CIExyY:0.3047/0.3064/0.3005
-5 22 75 10PB5/22 CIExyY:0.2082/0.1225/0.1977
-5 20 72.5 7.5PB5/20 CIExyY:0.1794/0.1239/0.1977
-5 20 75 10PB5/20 CIExyY:0.2121/0.1329/0.1977
-5 18 67.5 2.5PB5/18 CIExyY:0.1363/0.141/0.1977
-5 18 70 5PB5/18 CIExyY:0.1518/0.1365/0.1977
-5 18 72.5 7.5PB5/18 CIExyY:0.1862/0.1365/0.1977
-5 18 75 10PB5/18 CIExyY:0.2174/0.1444/0.1977
-5 16 67.5 2.5PB5/16 CIExyY:0.1495/0.1559/0.1977
-5 16 70 5PB5/16 CIExyY:0.1638/0.1521/0.1977
-5 16 72.5 7.5PB5/16 CIExyY:0.1945/0.1511/0.1977
-5 16 75 10PB5/16 CIExyY:0.2224/0.1555/0.1977
-5 14 67.5 2.5PB5/14 CIExyY:0.1642/0.1723/0.1977
-5 14 70 5PB5/14 CIExyY:0.1773/0.1689/0.1977
-5 14 72.5 7.5PB5/14 CIExyY:0.2042/0.1661/0.1977
-5 14 75 10PB5/14 CIExyY:0.2299/0.1698/0.1977
-5 12 67.5 2.5PB5/12 CIExyY:0.1793/0.1894/0.1977
-5 12 70 5PB5/12 CIExyY:0.1918/0.1858/0.1977
-5 12 72.5 7.5PB5/12 CIExyY:0.2157/0.183/0.1977
-5 12 75 10PB5/12 CIExyY:0.2384/0.1857/0.1977
-5 10 67.5 2.5PB5/10 CIExyY:0.1968/0.2078/0.1977
-5 10 70 5PB5/10 CIExyY:0.208/0.2041/0.1977
-5 10 72.5 7.5PB5/10 CIExyY:0.2285/0.202/0.1977
-5 10 75 10PB5/10 CIExyY:0.2478/0.203/0.1977
-5 8 67.5 2.5PB5/8 CIExyY:0.2157/0.2278/0.1977
-5 8 70 5PB5/8 CIExyY:0.2255/0.2239/0.1977
-5 8 72.5 7.5PB5/8 CIExyY:0.2417/0.2204/0.1977
-5 8 75 10PB5/8 CIExyY:0.2572/0.2211/0.1977
-5 6 67.5 2.5PB5/6 CIExyY:0.2365/0.2488/0.1977
-5 6 70 5PB5/6 CIExyY:0.2447/0.2449/0.1977
-5 6 72.5 7.5PB5/6 CIExyY:0.2563/0.2417/0.1977
-5 6 75 10PB5/6 CIExyY:0.2686/0.2412/0.1977
-5 4 67.5 2.5PB5/4 CIExyY:0.26/0.272/0.1977
-5 4 70 5PB5/4 CIExyY:0.2662/0.2687/0.1977
-5 4 72.5 7.5PB5/4 CIExyY:0.2739/0.2666/0.1977
-5 4 75 10PB5/4 CIExyY:0.2821/0.2659/0.1977
-5 3 67.5 2.5PB5/3 CIExyY:0.2722/0.2832/0.1977
-5 3 70 5PB5/3 CIExyY:0.2772/0.2805/0.1977
-5 3 72.5 7.5PB5/3 CIExyY:0.2828/0.2787/0.1977
-5 3 75 10PB5/3 CIExyY:0.289/0.2781/0.1977
-5 2 67.5 2.5PB5/2 CIExyY:0.2847/0.2942/0.1977
-5 2 70 5PB5/2 CIExyY:0.2882/0.2923/0.1977
-5 2 72.5 7.5PB5/2 CIExyY:0.2918/0.2908/0.1977
-5 2 75 10PB5/2 CIExyY:0.2959/0.2905/0.1977
-5 1 70 5PB5/1 CIExyY:0.2992/0.3042/0.1977
-5 1 75 10PB5/1 CIExyY:0.3029/0.3032/0.1977
-4 30 75 10PB4/30 CIExyY:0.1952/0.0778/0.12
-4 28 75 10PB4/28 CIExyY:0.1971/0.084/0.12
-4 26 72.5 7.5PB4/26 CIExyY:0.1659/0.0825/0.12
-4 26 75 10PB4/26 CIExyY:0.1994/0.0904/0.12
-4 24 72.5 7.5PB4/24 CIExyY:0.1684/0.0899/0.12
-4 24 75 10PB4/24 CIExyY:0.202/0.0985/0.12
-4 22 72.5 7.5PB4/22 CIExyY:0.1713/0.098/0.12
-4 22 75 10PB4/22 CIExyY:0.2048/0.1064/0.12
-4 20 70 5PB4/20 CIExyY:0.1288/0.1027/0.12
-4 20 72.5 7.5PB4/20 CIExyY:0.1742/0.1058/0.12
-4 20 75 10PB4/20 CIExyY:0.2075/0.114/0.12
-4 18 67.5 2.5PB4/18 CIExyY:0.1218/0.1203/0.12
-4 18 70 5PB4/18 CIExyY:0.1392/0.1167/0.12
-4 18 72.5 7.5PB4/18 CIExyY:0.1798/0.1185/0.12
-4 18 75 10PB4/18 CIExyY:0.212/0.1256/0.12
-4 16 67.5 2.5PB4/16 CIExyY:0.1336/0.1349/0.12
-4 16 70 5PB4/16 CIExyY:0.1504/0.1317/0.12
-4 16 72.5 7.5PB4/16 CIExyY:0.1861/0.1316/0.12
-4 16 75 10PB4/16 CIExyY:0.217/0.1373/0.12
-4 14 67.5 2.5PB4/14 CIExyY:0.1473/0.1513/0.12
-4 14 70 5PB4/14 CIExyY:0.1627/0.1479/0.12
-4 14 72.5 7.5PB4/14 CIExyY:0.1941/0.1468/0.12
-4 14 75 10PB4/14 CIExyY:0.222/0.1503/0.12
-4 12 67.5 2.5PB4/12 CIExyY:0.1634/0.1698/0.12
-4 12 70 5PB4/12 CIExyY:0.1773/0.1659/0.12
-4 12 72.5 7.5PB4/12 CIExyY:0.2037/0.1629/0.12
-4 12 75 10PB4/12 CIExyY:0.2298/0.1659/0.12
-4 10 67.5 2.5PB4/10 CIExyY:0.1805/0.1888/0.12
-4 10 70 5PB4/10 CIExyY:0.1925/0.1843/0.12
-4 10 72.5 7.5PB4/10 CIExyY:0.2158/0.1811/0.12
-4 10 75 10PB4/10 CIExyY:0.2388/0.1837/0.12
-4 8 67.5 2.5PB4/8 CIExyY:0.1995/0.2094/0.12
-4 8 70 5PB4/8 CIExyY:0.2103/0.205/0.12
-4 8 72.5 7.5PB4/8 CIExyY:0.2304/0.2023/0.12
-4 8 75 10PB4/8 CIExyY:0.2497/0.2038/0.12
-4 6 67.5 2.5PB4/6 CIExyY:0.2235/0.2343/0.12
-4 6 70 5PB4/6 CIExyY:0.2325/0.23/0.12
-4 6 72.5 7.5PB4/6 CIExyY:0.2471/0.2266/0.12
-4 6 75 10PB4/6 CIExyY:0.2618/0.2263/0.12
-4 4 67.5 2.5PB4/4 CIExyY:0.2487/0.2597/0.12
-4 4 70 5PB4/4 CIExyY:0.2562/0.256/0.12
-4 4 72.5 7.5PB4/4 CIExyY:0.2657/0.2528/0.12
-4 4 75 10PB4/4 CIExyY:0.2759/0.2522/0.12
-4 3 67.5 2.5PB4/3 CIExyY:0.263/0.2734/0.12
-4 3 70 5PB4/3 CIExyY:0.2686/0.2697/0.12
-4 3 72.5 7.5PB4/3 CIExyY:0.2756/0.2668/0.12
-4 3 75 10PB4/3 CIExyY:0.2832/0.2657/0.12
-4 2 67.5 2.5PB4/2 CIExyY:0.2782/0.2876/0.12
-4 2 70 5PB4/2 CIExyY:0.2816/0.2842/0.12
-4 2 72.5 7.5PB4/2 CIExyY:0.2861/0.2819/0.12
-4 2 75 10PB4/2 CIExyY:0.2911/0.2804/0.12
-4 1 70 5PB4/1 CIExyY:0.2954/0.2997/0.12
-4 1 75 10PB4/1 CIExyY:0.3/0.2971/0.12
-3 34 72.5 7.5PB3/34 CIExyY:0.1608/0.048/0.06555
-3 34 75 10PB3/34 CIExyY:0.1918/0.0503/0.06555
-3 32 72.5 7.5PB3/32 CIExyY:0.1612/0.0511/0.06555
-3 32 75 10PB3/32 CIExyY:0.1926/0.0542/0.06555
-3 30 72.5 7.5PB3/30 CIExyY:0.1621/0.0556/0.06555
-3 30 75 10PB3/30 CIExyY:0.1938/0.0599/0.06555
-3 28 72.5 7.5PB3/28 CIExyY:0.1632/0.0609/0.06555
-3 28 75 10PB3/28 CIExyY:0.195/0.065/0.06555
-3 26 72.5 7.5PB3/26 CIExyY:0.1642/0.0655/0.06555
-3 26 75 10PB3/26 CIExyY:0.1963/0.0708/0.06555
-3 24 72.5 7.5PB3/24 CIExyY:0.1658/0.0711/0.06555
-3 24 75 10PB3/24 CIExyY:0.1982/0.0772/0.06555
-3 22 72.5 7.5PB3/22 CIExyY:0.1677/0.0782/0.06555
-3 22 75 10PB3/22 CIExyY:0.2004/0.0847/0.06555
-3 20 72.5 7.5PB3/20 CIExyY:0.1702/0.0867/0.06555
-3 20 75 10PB3/20 CIExyY:0.203/0.093/0.06555
-3 18 70 5PB3/18 CIExyY:0.1228/0.0895/0.06555
-3 18 72.5 7.5PB3/18 CIExyY:0.173/0.0948/0.06555
-3 18 75 10PB3/18 CIExyY:0.206/0.102/0.06555
-3 16 70 5PB3/16 CIExyY:0.1318/0.1024/0.06555
-3 16 72.5 7.5PB3/16 CIExyY:0.1765/0.1048/0.06555
-3 16 75 10PB3/16 CIExyY:0.2092/0.1118/0.06555
-3 14 67.5 2.5PB3/14 CIExyY:0.1251/0.1218/0.06555
-3 14 70 5PB3/14 CIExyY:0.1431/0.1184/0.06555
-3 14 72.5 7.5PB3/14 CIExyY:0.1824/0.1188/0.06555
-3 14 75 10PB3/14 CIExyY:0.2142/0.125/0.06555
-3 12 67.5 2.5PB3/12 CIExyY:0.1398/0.1395/0.06555
-3 12 70 5PB3/12 CIExyY:0.1557/0.1356/0.06555
-3 12 72.5 7.5PB3/12 CIExyY:0.1903/0.1353/0.06555
-3 12 75 10PB3/12 CIExyY:0.2206/0.1407/0.06555
-3 10 67.5 2.5PB3/10 CIExyY:0.1576/0.16/0.06555
-3 10 70 5PB3/10 CIExyY:0.1718/0.1562/0.06555
-3 10 72.5 7.5PB3/10 CIExyY:0.2005/0.1536/0.06555
-3 10 75 10PB3/10 CIExyY:0.2278/0.1565/0.06555
-3 8 67.5 2.5PB3/8 CIExyY:0.178/0.1833/0.06555
-3 8 70 5PB3/8 CIExyY:0.1908/0.1799/0.06555
-3 8 72.5 7.5PB3/8 CIExyY:0.2149/0.1761/0.06555
-3 8 75 10PB3/8 CIExyY:0.2387/0.1786/0.06555
-3 6 67.5 2.5PB3/6 CIExyY:0.2022/0.2101/0.06555
-3 6 70 5PB3/6 CIExyY:0.2122/0.2052/0.06555
-3 6 72.5 7.5PB3/6 CIExyY:0.2311/0.201/0.06555
-3 6 75 10PB3/6 CIExyY:0.2511/0.2031/0.06555
-3 4 67.5 2.5PB3/4 CIExyY:0.2312/0.2405/0.06555
-3 4 70 5PB3/4 CIExyY:0.2393/0.2361/0.06555
-3 4 72.5 7.5PB3/4 CIExyY:0.252/0.2319/0.06555
-3 4 75 10PB3/4 CIExyY:0.266/0.2319/0.06555
-3 3 67.5 2.5PB3/3 CIExyY:0.2478/0.2574/0.06555
-3 3 70 5PB3/3 CIExyY:0.2543/0.2532/0.06555
-3 3 72.5 7.5PB3/3 CIExyY:0.2641/0.2493/0.06555
-3 3 75 10PB3/3 CIExyY:0.2747/0.2482/0.06555
-3 2 67.5 2.5PB3/2 CIExyY:0.2663/0.2756/0.06555
-3 2 70 5PB3/2 CIExyY:0.2708/0.2719/0.06555
-3 2 72.5 7.5PB3/2 CIExyY:0.2777/0.2687/0.06555
-3 2 75 10PB3/2 CIExyY:0.2847/0.267/0.06555
-3 1 70 5PB3/1 CIExyY:0.2893/0.2928/0.06555
-3 1 75 10PB3/1 CIExyY:0.2964/0.2894/0.06555
-2 38 72.5 7.5PB2/38 CIExyY:0.1623/0.028/0.03126
-2 36 72.5 7.5PB2/36 CIExyY:0.1628/0.031/0.03126
-2 34 72.5 7.5PB2/34 CIExyY:0.163/0.034/0.03126
-2 34 75 10PB2/34 CIExyY:0.1911/0.0344/0.03126
-2 32 72.5 7.5PB2/32 CIExyY:0.1635/0.0373/0.03126
-2 32 75 10PB2/32 CIExyY:0.1918/0.0379/0.03126
-2 30 72.5 7.5PB2/30 CIExyY:0.164/0.0409/0.03126
-2 30 75 10PB2/30 CIExyY:0.1925/0.042/0.03126
-2 28 72.5 7.5PB2/28 CIExyY:0.1647/0.0451/0.03126
-2 28 75 10PB2/28 CIExyY:0.1937/0.0471/0.03126
-2 26 72.5 7.5PB2/26 CIExyY:0.1653/0.0492/0.03126
-2 26 75 10PB2/26 CIExyY:0.1949/0.052/0.03126
-2 24 72.5 7.5PB2/24 CIExyY:0.166/0.0538/0.03126
-2 24 75 10PB2/24 CIExyY:0.1962/0.0578/0.03126
-2 22 72.5 7.5PB2/22 CIExyY:0.167/0.0594/0.03126
-2 22 75 10PB2/22 CIExyY:0.1978/0.0643/0.03126
-2 20 72.5 7.5PB2/20 CIExyY:0.1685/0.0666/0.03126
-2 20 75 10PB2/20 CIExyY:0.1998/0.0718/0.03126
-2 18 72.5 7.5PB2/18 CIExyY:0.1701/0.0742/0.03126
-2 18 75 10PB2/18 CIExyY:0.2021/0.0808/0.03126
-2 16 72.5 7.5PB2/16 CIExyY:0.1728/0.0839/0.03126
-2 16 75 10PB2/16 CIExyY:0.2052/0.091/0.03126
-2 14 70 5PB2/14 CIExyY:0.1253/0.0873/0.03126
-2 14 72.5 7.5PB2/14 CIExyY:0.1762/0.0955/0.03126
-2 14 75 10PB2/14 CIExyY:0.2087/0.1026/0.03126
-2 12 67.5 2.5PB2/12 CIExyY:0.1166/0.1076/0.03126
-2 12 70 5PB2/12 CIExyY:0.1363/0.1048/0.03126
-2 12 72.5 7.5PB2/12 CIExyY:0.1813/0.1094/0.03126
-2 12 75 10PB2/12 CIExyY:0.2139/0.117/0.03126
-2 10 67.5 2.5PB2/10 CIExyY:0.1332/0.1278/0.03126
-2 10 70 5PB2/10 CIExyY:0.15/0.124/0.03126
-2 10 72.5 7.5PB2/10 CIExyY:0.1882/0.1258/0.03126
-2 10 75 10PB2/10 CIExyY:0.22/0.133/0.03126
-2 8 67.5 2.5PB2/8 CIExyY:0.154/0.153/0.03126
-2 8 70 5PB2/8 CIExyY:0.1685/0.1491/0.03126
-2 8 72.5 7.5PB2/8 CIExyY:0.2005/0.1495/0.03126
-2 8 75 10PB2/8 CIExyY:0.2294/0.1551/0.03126
-2 6 67.5 2.5PB2/6 CIExyY:0.1825/0.1857/0.03126
-2 6 70 5PB2/6 CIExyY:0.1942/0.1811/0.03126
-2 6 72.5 7.5PB2/6 CIExyY:0.2189/0.179/0.03126
-2 6 75 10PB2/6 CIExyY:0.244/0.184/0.03126
-2 4 67.5 2.5PB2/4 CIExyY:0.2175/0.2245/0.03126
-2 4 70 5PB2/4 CIExyY:0.2263/0.2192/0.03126
-2 4 72.5 7.5PB2/4 CIExyY:0.242/0.2148/0.03126
-2 4 75 10PB2/4 CIExyY:0.26/0.2162/0.03126
-2 3 67.5 2.5PB2/3 CIExyY:0.2374/0.2454/0.03126
-2 3 70 5PB2/3 CIExyY:0.2442/0.2398/0.03126
-2 3 72.5 7.5PB2/3 CIExyY:0.2556/0.2351/0.03126
-2 3 75 10PB2/3 CIExyY:0.2693/0.2347/0.03126
-2 2 67.5 2.5PB2/2 CIExyY:0.2592/0.2675/0.03126
-2 2 70 5PB2/2 CIExyY:0.2638/0.2624/0.03126
-2 2 72.5 7.5PB2/2 CIExyY:0.2712/0.2582/0.03126
-2 2 75 10PB2/2 CIExyY:0.2803/0.2567/0.03126
-2 1 70 5PB2/1 CIExyY:0.2856/0.2877/0.03126
-2 1 75 10PB2/1 CIExyY:0.2937/0.2834/0.03126
-1 38 72.5 7.5PB1/38 CIExyY:0.168/0.014/0.0121
-1 36 72.5 7.5PB1/36 CIExyY:0.1681/0.016/0.0121
-1 34 72.5 7.5PB1/34 CIExyY:0.1682/0.018/0.0121
-1 32 72.5 7.5PB1/32 CIExyY:0.1682/0.0202/0.0121
-1 30 72.5 7.5PB1/30 CIExyY:0.1684/0.0234/0.0121
-1 30 75 10PB1/30 CIExyY:0.1928/0.024/0.0121
-1 28 72.5 7.5PB1/28 CIExyY:0.1686/0.027/0.0121
-1 28 75 10PB1/28 CIExyY:0.1936/0.0281/0.0121
-1 26 72.5 7.5PB1/26 CIExyY:0.1689/0.0309/0.0121
-1 26 75 10PB1/26 CIExyY:0.1942/0.0326/0.0121
-1 24 72.5 7.5PB1/24 CIExyY:0.1691/0.0352/0.0121
-1 24 75 10PB1/24 CIExyY:0.1952/0.038/0.0121
-1 22 72.5 7.5PB1/22 CIExyY:0.1696/0.0402/0.0121
-1 22 75 10PB1/22 CIExyY:0.1965/0.0436/0.0121
-1 20 72.5 7.5PB1/20 CIExyY:0.1701/0.0454/0.0121
-1 20 75 10PB1/20 CIExyY:0.1976/0.0493/0.0121
-1 18 72.5 7.5PB1/18 CIExyY:0.1709/0.0518/0.0121
-1 18 75 10PB1/18 CIExyY:0.1991/0.0564/0.0121
-1 16 72.5 7.5PB1/16 CIExyY:0.172/0.0583/0.0121
-1 16 75 10PB1/16 CIExyY:0.2003/0.0638/0.0121
-1 14 72.5 7.5PB1/14 CIExyY:0.1738/0.0688/0.0121
-1 14 75 10PB1/14 CIExyY:0.2038/0.0745/0.0121
-1 12 72.5 7.5PB1/12 CIExyY:0.1763/0.0804/0.0121
-1 12 75 10PB1/12 CIExyY:0.207/0.0869/0.0121
-1 10 70 5PB1/10 CIExyY:0.1285/0.087/0.0121
-1 10 72.5 7.5PB1/10 CIExyY:0.1804/0.095/0.0121
-1 10 75 10PB1/10 CIExyY:0.212/0.1029/0.0121
-1 8 67.5 2.5PB1/8 CIExyY:0.1273/0.1157/0.0121
-1 8 70 5PB1/8 CIExyY:0.1447/0.1124/0.0121
-1 8 72.5 7.5PB1/8 CIExyY:0.1872/0.1141/0.0121
-1 8 75 10PB1/8 CIExyY:0.219/0.1228/0.0121
-1 6 67.5 2.5PB1/6 CIExyY:0.1539/0.1491/0.0121
-1 6 70 5PB1/6 CIExyY:0.1678/0.1447/0.0121
-1 6 72.5 7.5PB1/6 CIExyY:0.2/0.1422/0.0121
-1 6 75 10PB1/6 CIExyY:0.229/0.147/0.0121
-1 4 67.5 2.5PB1/4 CIExyY:0.1895/0.1911/0.0121
-1 4 70 5PB1/4 CIExyY:0.2012/0.1867/0.0121
-1 4 72.5 7.5PB1/4 CIExyY:0.2232/0.1821/0.0121
-1 4 75 10PB1/4 CIExyY:0.2459/0.1828/0.0121
-1 2 67.5 2.5PB1/2 CIExyY:0.236/0.242/0.0121
-1 2 70 5PB1/2 CIExyY:0.2427/0.2368/0.0121
-1 2 72.5 7.5PB1/2 CIExyY:0.2547/0.231/0.0121
-1 2 75 10PB1/2 CIExyY:0.2677/0.228/0.0121
-9 6 82.5 7.5P9/6 CIExyY:0.312/0.2788/0.7866
-9 6 85 10P9/6 CIExyY:0.3218/0.2845/0.7866
-9 4 77.5 2.5P9/4 CIExyY:0.2963/0.2865/0.7866
-9 4 80 5P9/4 CIExyY:0.3003/0.287/0.7866
-9 4 82.5 7.5P9/4 CIExyY:0.3117/0.2928/0.7866
-9 4 85 10P9/4 CIExyY:0.3176/0.2966/0.7866
-9 2 77.5 2.5P9/2 CIExyY:0.305/0.3051/0.7866
-9 2 80 5P9/2 CIExyY:0.3067/0.306/0.7866
-9 2 82.5 7.5P9/2 CIExyY:0.3107/0.3081/0.7866
-9 2 85 10P9/2 CIExyY:0.3128/0.3094/0.7866
-9 1 80 5P9/1 CIExyY:0.3088/0.3122/0.7866
-9 1 85 10P9/1 CIExyY:0.311/0.314/0.7866
-8 14 85 10P8/14 CIExyY:0.3342/0.2349/0.591
-8 12 82.5 7.5P8/12 CIExyY:0.3117/0.237/0.591
-8 12 85 10P8/12 CIExyY:0.3312/0.247/0.591
-8 10 80 5P8/10 CIExyY:0.287/0.238/0.591
-8 10 82.5 7.5P8/10 CIExyY:0.3116/0.2497/0.591
-8 10 85 10P8/10 CIExyY:0.3282/0.2582/0.591
-8 8 77.5 2.5P8/8 CIExyY:0.28/0.2488/0.591
-8 8 80 5P8/8 CIExyY:0.2914/0.2534/0.591
-8 8 82.5 7.5P8/8 CIExyY:0.3116/0.2626/0.591
-8 8 85 10P8/8 CIExyY:0.325/0.27/0.591
-8 6 77.5 2.5P8/6 CIExyY:0.2881/0.2671/0.591
-8 6 80 5P8/6 CIExyY:0.2963/0.2704/0.591
-8 6 82.5 7.5P8/6 CIExyY:0.3114/0.2785/0.591
-8 6 85 10P8/6 CIExyY:0.3213/0.2829/0.591
-8 4 77.5 2.5P8/4 CIExyY:0.2962/0.285/0.591
-8 4 80 5P8/4 CIExyY:0.3012/0.2868/0.591
-8 4 82.5 7.5P8/4 CIExyY:0.3114/0.2915/0.591
-8 4 85 10P8/4 CIExyY:0.3175/0.2955/0.591
-8 3 77.5 2.5P8/3 CIExyY:0.3007/0.2949/0.591
-8 3 80 5P8/3 CIExyY:0.3039/0.2961/0.591
-8 3 82.5 7.5P8/3 CIExyY:0.3111/0.2995/0.591
-8 3 85 10P8/3 CIExyY:0.3152/0.3022/0.591
-8 2 77.5 2.5P8/2 CIExyY:0.3048/0.304/0.591
-8 2 80 5P8/2 CIExyY:0.3065/0.3047/0.591
-8 2 82.5 7.5P8/2 CIExyY:0.3107/0.307/0.591
-8 2 85 10P8/2 CIExyY:0.3131/0.3084/0.591
-8 1 80 5P8/1 CIExyY:0.3086/0.3118/0.591
-8 1 85 10P8/1 CIExyY:0.3113/0.3133/0.591
-7 22 85 10P7/22 CIExyY:0.343/0.1883/0.4306
-7 20 85 10P7/20 CIExyY:0.341/0.1988/0.4306
-7 18 82.5 7.5P7/18 CIExyY:0.3093/0.1962/0.4306
-7 18 85 10P7/18 CIExyY:0.3391/0.2088/0.4306
-7 16 82.5 7.5P7/16 CIExyY:0.3099/0.2074/0.4306
-7 16 85 10P7/16 CIExyY:0.3368/0.2192/0.4306
-7 14 80 5P7/14 CIExyY:0.2801/0.2068/0.4306
-7 14 82.5 7.5P7/14 CIExyY:0.3101/0.2192/0.4306
-7 14 85 10P7/14 CIExyY:0.3341/0.2308/0.4306
-7 12 77.5 2.5P7/12 CIExyY:0.2664/0.2127/0.4306
-7 12 80 5P7/12 CIExyY:0.2833/0.2197/0.4306
-7 12 82.5 7.5P7/12 CIExyY:0.3104/0.232/0.4306
-7 12 85 10P7/12 CIExyY:0.3314/0.2423/0.4306
-7 10 77.5 2.5P7/10 CIExyY:0.2729/0.2289/0.4306
-7 10 80 5P7/10 CIExyY:0.2872/0.2343/0.4306
-7 10 82.5 7.5P7/10 CIExyY:0.3108/0.2442/0.4306
-7 10 85 10P7/10 CIExyY:0.3288/0.2531/0.4306
-7 8 77.5 2.5P7/8 CIExyY:0.2799/0.2459/0.4306
-7 8 80 5P7/8 CIExyY:0.2918/0.2504/0.4306
-7 8 82.5 7.5P7/8 CIExyY:0.3109/0.2584/0.4306
-7 8 85 10P7/8 CIExyY:0.3256/0.2654/0.4306
-7 6 77.5 2.5P7/6 CIExyY:0.2873/0.2633/0.4306
-7 6 80 5P7/6 CIExyY:0.2961/0.2663/0.4306
-7 6 82.5 7.5P7/6 CIExyY:0.3111/0.273/0.4306
-7 6 85 10P7/6 CIExyY:0.3221/0.2786/0.4306
-7 4 77.5 2.5P7/4 CIExyY:0.295/0.281/0.4306
-7 4 80 5P7/4 CIExyY:0.3009/0.2831/0.4306
-7 4 82.5 7.5P7/4 CIExyY:0.3111/0.288/0.4306
-7 4 85 10P7/4 CIExyY:0.3181/0.292/0.4306
-7 3 77.5 2.5P7/3 CIExyY:0.2991/0.2906/0.4306
-7 3 80 5P7/3 CIExyY:0.3034/0.2921/0.4306
-7 3 82.5 7.5P7/3 CIExyY:0.3111/0.296/0.4306
-7 3 85 10P7/3 CIExyY:0.3159/0.2989/0.4306
-7 2 77.5 2.5P7/2 CIExyY:0.3031/0.3/0.4306
-7 2 80 5P7/2 CIExyY:0.3059/0.301/0.4306
-7 2 82.5 7.5P7/2 CIExyY:0.3109/0.3037/0.4306
-7 2 85 10P7/2 CIExyY:0.3138/0.3054/0.4306
-7 1 80 5P7/1 CIExyY:0.3082/0.3092/0.4306
-7 1 85 10P7/1 CIExyY:0.3118/0.3113/0.4306
-6 26 85 10P6/26 CIExyY:0.3457/0.1604/0.3005
-6 24 82.5 7.5P6/24 CIExyY:0.3058/0.1547/0.3005
-6 24 85 10P6/24 CIExyY:0.3441/0.1698/0.3005
-6 22 82.5 7.5P6/22 CIExyY:0.3062/0.1638/0.3005
-6 22 85 10P6/22 CIExyY:0.3426/0.1785/0.3005
-6 20 80 5P6/20 CIExyY:0.2702/0.1621/0.3005
-6 20 82.5 7.5P6/20 CIExyY:0.3069/0.1745/0.3005
-6 20 85 10P6/20 CIExyY:0.3409/0.1882/0.3005
-6 18 77.5 2.5P6/18 CIExyY:0.2504/0.1658/0.3005
-6 18 80 5P6/18 CIExyY:0.2731/0.1738/0.3005
-6 18 82.5 7.5P6/18 CIExyY:0.3075/0.187/0.3005
-6 18 85 10P6/18 CIExyY:0.3388/0.1995/0.3005
-6 16 77.5 2.5P6/16 CIExyY:0.2548/0.1768/0.3005
-6 16 80 5P6/16 CIExyY:0.2761/0.1852/0.3005
-6 16 82.5 7.5P6/16 CIExyY:0.308/0.1976/0.3005
-6 16 85 10P6/16 CIExyY:0.337/0.2095/0.3005
-6 14 77.5 2.5P6/14 CIExyY:0.2593/0.1909/0.3005
-6 14 80 5P6/14 CIExyY:0.2794/0.1979/0.3005
-6 14 82.5 7.5P6/14 CIExyY:0.3084/0.2095/0.3005
-6 14 85 10P6/14 CIExyY:0.3349/0.2203/0.3005
-6 12 77.5 2.5P6/12 CIExyY:0.2647/0.2052/0.3005
-6 12 80 5P6/12 CIExyY:0.2829/0.2121/0.3005
-6 12 82.5 7.5P6/12 CIExyY:0.309/0.2222/0.3005
-6 12 85 10P6/12 CIExyY:0.3321/0.2329/0.3005
-6 10 77.5 2.5P6/10 CIExyY:0.2703/0.2204/0.3005
-6 10 80 5P6/10 CIExyY:0.2862/0.226/0.3005
-6 10 82.5 7.5P6/10 CIExyY:0.3092/0.235/0.3005
-6 10 85 10P6/10 CIExyY:0.3293/0.245/0.3005
-6 8 77.5 2.5P6/8 CIExyY:0.277/0.2372/0.3005
-6 8 80 5P6/8 CIExyY:0.2905/0.2421/0.3005
-6 8 82.5 7.5P6/8 CIExyY:0.3099/0.2502/0.3005
-6 8 85 10P6/8 CIExyY:0.3259/0.2584/0.3005
-6 6 77.5 2.5P6/6 CIExyY:0.2842/0.255/0.3005
-6 6 80 5P6/6 CIExyY:0.295/0.2585/0.3005
-6 6 82.5 7.5P6/6 CIExyY:0.3101/0.265/0.3005
-6 6 85 10P6/6 CIExyY:0.3226/0.2716/0.3005
-6 4 77.5 2.5P6/4 CIExyY:0.2932/0.2759/0.3005
-6 4 80 5P6/4 CIExyY:0.3001/0.2778/0.3005
-6 4 82.5 7.5P6/4 CIExyY:0.3107/0.2831/0.3005
-6 4 85 10P6/4 CIExyY:0.3181/0.2871/0.3005
-6 3 77.5 2.5P6/3 CIExyY:0.2974/0.286/0.3005
-6 3 80 5P6/3 CIExyY:0.3025/0.2872/0.3005
-6 3 82.5 7.5P6/3 CIExyY:0.3108/0.2913/0.3005
-6 3 85 10P6/3 CIExyY:0.3164/0.2945/0.3005
-6 2 77.5 2.5P6/2 CIExyY:0.3016/0.296/0.3005
-6 2 80 5P6/2 CIExyY:0.305/0.2967/0.3005
-6 2 82.5 7.5P6/2 CIExyY:0.3107/0.2993/0.3005
-6 2 85 10P6/2 CIExyY:0.3146/0.3018/0.3005
-6 1 80 5P6/1 CIExyY:0.3075/0.3063/0.3005
-6 1 85 10P6/1 CIExyY:0.3126/0.309/0.3005
-5 30 82.5 7.5P5/30 CIExyY:0.301/0.117/0.1977
-5 30 85 10P5/30 CIExyY:0.349/0.1308/0.1977
-5 28 80 5P5/28 CIExyY:0.2618/0.1135/0.1977
-5 28 82.5 7.5P5/28 CIExyY:0.3018/0.1253/0.1977
-5 28 85 10P5/28 CIExyY:0.3478/0.1388/0.1977
-5 26 77.5 2.5P5/26 CIExyY:0.2348/0.114/0.1977
-5 26 80 5P5/26 CIExyY:0.2635/0.1224/0.1977
-5 26 82.5 7.5P5/26 CIExyY:0.3022/0.1331/0.1977
-5 26 85 10P5/26 CIExyY:0.3468/0.146/0.1977
-5 24 77.5 2.5P5/24 CIExyY:0.2372/0.1223/0.1977
-5 24 80 5P5/24 CIExyY:0.2652/0.1304/0.1977
-5 24 82.5 7.5P5/24 CIExyY:0.303/0.1423/0.1977
-5 24 85 10P5/24 CIExyY:0.345/0.1555/0.1977
-5 22 77.5 2.5P5/22 CIExyY:0.2402/0.1315/0.1977
-5 22 80 5P5/22 CIExyY:0.2673/0.1398/0.1977
-5 22 82.5 7.5P5/22 CIExyY:0.3038/0.15/0.1977
-5 22 85 10P5/22 CIExyY:0.3437/0.1644/0.1977
-5 20 77.5 2.5P5/20 CIExyY:0.2438/0.1419/0.1977
-5 20 80 5P5/20 CIExyY:0.2694/0.1499/0.1977
-5 20 82.5 7.5P5/20 CIExyY:0.3042/0.1606/0.1977
-5 20 85 10P5/20 CIExyY:0.3422/0.1735/0.1977
-5 18 77.5 2.5P5/18 CIExyY:0.2476/0.1532/0.1977
-5 18 80 5P5/18 CIExyY:0.2718/0.1604/0.1977
-5 18 82.5 7.5P5/18 CIExyY:0.3052/0.1711/0.1977
-5 18 85 10P5/18 CIExyY:0.3401/0.184/0.1977
-5 16 77.5 2.5P5/16 CIExyY:0.2515/0.1644/0.1977
-5 16 80 5P5/16 CIExyY:0.2744/0.1718/0.1977
-5 16 82.5 7.5P5/16 CIExyY:0.306/0.183/0.1977
-5 16 85 10P5/16 CIExyY:0.3382/0.1951/0.1977
-5 14 77.5 2.5P5/14 CIExyY:0.256/0.1774/0.1977
-5 14 80 5P5/14 CIExyY:0.2775/0.1847/0.1977
-5 14 82.5 7.5P5/14 CIExyY:0.3068/0.1951/0.1977
-5 14 85 10P5/14 CIExyY:0.336/0.2067/0.1977
-5 12 77.5 2.5P5/12 CIExyY:0.2608/0.1913/0.1977
-5 12 80 5P5/12 CIExyY:0.2806/0.1977/0.1977
-5 12 82.5 7.5P5/12 CIExyY:0.3071/0.208/0.1977
-5 12 85 10P5/12 CIExyY:0.3338/0.2186/0.1977
-5 10 77.5 2.5P5/10 CIExyY:0.2665/0.2075/0.1977
-5 10 80 5P5/10 CIExyY:0.2845/0.2137/0.1977
-5 10 82.5 7.5P5/10 CIExyY:0.308/0.223/0.1977
-5 10 85 10P5/10 CIExyY:0.3308/0.2328/0.1977
-5 8 77.5 2.5P5/8 CIExyY:0.2728/0.224/0.1977
-5 8 80 5P5/8 CIExyY:0.2885/0.2296/0.1977
-5 8 82.5 7.5P5/8 CIExyY:0.3087/0.2375/0.1977
-5 8 85 10P5/8 CIExyY:0.328/0.2464/0.1977
-5 6 77.5 2.5P5/6 CIExyY:0.2806/0.2444/0.1977
-5 6 80 5P5/6 CIExyY:0.2932/0.2487/0.1977
-5 6 82.5 7.5P5/6 CIExyY:0.3093/0.2555/0.1977
-5 6 85 10P5/6 CIExyY:0.3243/0.263/0.1977
-5 4 77.5 2.5P5/4 CIExyY:0.2898/0.2667/0.1977
-5 4 80 5P5/4 CIExyY:0.2986/0.2699/0.1977
-5 4 82.5 7.5P5/4 CIExyY:0.31/0.275/0.1977
-5 4 85 10P5/4 CIExyY:0.3193/0.2807/0.1977
-5 3 77.5 2.5P5/3 CIExyY:0.2948/0.2788/0.1977
-5 3 80 5P5/3 CIExyY:0.3015/0.2812/0.1977
-5 3 82.5 7.5P5/3 CIExyY:0.3102/0.2854/0.1977
-5 3 85 10P5/3 CIExyY:0.3173/0.2897/0.1977
-5 2 77.5 2.5P5/2 CIExyY:0.3/0.2912/0.1977
-5 2 80 5P5/2 CIExyY:0.3045/0.2928/0.1977
-5 2 82.5 7.5P5/2 CIExyY:0.3103/0.2959/0.1977
-5 2 85 10P5/2 CIExyY:0.3148/0.2986/0.1977
-5 1 80 5P5/1 CIExyY:0.3074/0.3045/0.1977
-5 1 85 10P5/1 CIExyY:0.3124/0.3075/0.1977
-4 32 77.5 2.5P4/32 CIExyY:0.2265/0.0774/0.12
-4 32 80 5P4/32 CIExyY:0.2574/0.0833/0.12
-4 32 82.5 7.5P4/32 CIExyY:0.2962/0.0906/0.12
-4 30 77.5 2.5P4/30 CIExyY:0.2285/0.0847/0.12
-4 30 80 5P4/30 CIExyY:0.2588/0.0907/0.12
-4 30 82.5 7.5P4/30 CIExyY:0.2969/0.0979/0.12
-4 30 85 10P4/30 CIExyY:0.344/0.108/0.12
-4 28 77.5 2.5P4/28 CIExyY:0.2302/0.0909/0.12
-4 28 80 5P4/28 CIExyY:0.26/0.0971/0.12
-4 28 82.5 7.5P4/28 CIExyY:0.2979/0.1062/0.12
-4 28 85 10P4/28 CIExyY:0.3432/0.1172/0.12
-4 26 77.5 2.5P4/26 CIExyY:0.2322/0.0978/0.12
-4 26 80 5P4/26 CIExyY:0.2618/0.1052/0.12
-4 26 82.5 7.5P4/26 CIExyY:0.2986/0.1135/0.12
-4 26 85 10P4/26 CIExyY:0.3428/0.1248/0.12
-4 24 77.5 2.5P4/24 CIExyY:0.2348/0.1062/0.12
-4 24 80 5P4/24 CIExyY:0.2635/0.1132/0.12
-4 24 82.5 7.5P4/24 CIExyY:0.2993/0.1225/0.12
-4 24 85 10P4/24 CIExyY:0.3421/0.1337/0.12
-4 22 77.5 2.5P4/22 CIExyY:0.2371/0.1143/0.12
-4 22 80 5P4/22 CIExyY:0.2652/0.1218/0.12
-4 22 82.5 7.5P4/22 CIExyY:0.3001/0.1306/0.12
-4 22 85 10P4/22 CIExyY:0.3411/0.1424/0.12
-4 20 77.5 2.5P4/20 CIExyY:0.2394/0.1221/0.12
-4 20 80 5P4/20 CIExyY:0.267/0.13/0.12
-4 20 82.5 7.5P4/20 CIExyY:0.301/0.1396/0.12
-4 20 85 10P4/20 CIExyY:0.34/0.15/0.12
-4 18 77.5 2.5P4/18 CIExyY:0.243/0.1332/0.12
-4 18 80 5P4/18 CIExyY:0.2693/0.1408/0.12
-4 18 82.5 7.5P4/18 CIExyY:0.3016/0.15/0.12
-4 18 85 10P4/18 CIExyY:0.3386/0.1626/0.12
-4 16 77.5 2.5P4/16 CIExyY:0.2467/0.1452/0.12
-4 16 80 5P4/16 CIExyY:0.2718/0.152/0.12
-4 16 82.5 7.5P4/16 CIExyY:0.3028/0.1621/0.12
-4 16 85 10P4/16 CIExyY:0.337/0.1756/0.12
-4 14 77.5 2.5P4/14 CIExyY:0.2509/0.1585/0.12
-4 14 80 5P4/14 CIExyY:0.2747/0.166/0.12
-4 14 82.5 7.5P4/14 CIExyY:0.3035/0.1755/0.12
-4 14 85 10P4/14 CIExyY:0.3351/0.1875/0.12
-4 12 77.5 2.5P4/12 CIExyY:0.2559/0.173/0.12
-4 12 80 5P4/12 CIExyY:0.2778/0.1808/0.12
-4 12 82.5 7.5P4/12 CIExyY:0.3048/0.1905/0.12
-4 12 85 10P4/12 CIExyY:0.3331/0.2014/0.12
-4 10 77.5 2.5P4/10 CIExyY:0.2619/0.1903/0.12
-4 10 80 5P4/10 CIExyY:0.2814/0.1967/0.12
-4 10 82.5 7.5P4/10 CIExyY:0.3056/0.206/0.12
-4 10 85 10P4/10 CIExyY:0.3306/0.2162/0.12
-4 8 77.5 2.5P4/8 CIExyY:0.2685/0.2089/0.12
-4 8 80 5P4/8 CIExyY:0.2855/0.215/0.12
-4 8 82.5 7.5P4/8 CIExyY:0.3066/0.2228/0.12
-4 8 85 10P4/8 CIExyY:0.328/0.2318/0.12
-4 6 77.5 2.5P4/6 CIExyY:0.2763/0.23/0.12
-4 6 80 5P4/6 CIExyY:0.2903/0.2347/0.12
-4 6 82.5 7.5P4/6 CIExyY:0.3076/0.2416/0.12
-4 6 85 10P4/6 CIExyY:0.3248/0.2493/0.12
-4 4 77.5 2.5P4/4 CIExyY:0.2855/0.2531/0.12
-4 4 80 5P4/4 CIExyY:0.2958/0.2565/0.12
-4 4 82.5 7.5P4/4 CIExyY:0.3084/0.2622/0.12
-4 4 85 10P4/4 CIExyY:0.321/0.2686/0.12
-4 3 77.5 2.5P4/3 CIExyY:0.2906/0.2661/0.12
-4 3 80 5P4/3 CIExyY:0.2989/0.2688/0.12
-4 3 82.5 7.5P4/3 CIExyY:0.3089/0.2734/0.12
-4 3 85 10P4/3 CIExyY:0.3187/0.279/0.12
-4 2 77.5 2.5P4/2 CIExyY:0.2962/0.2807/0.12
-4 2 80 5P4/2 CIExyY:0.3022/0.2825/0.12
-4 2 82.5 7.5P4/2 CIExyY:0.3093/0.2859/0.12
-4 2 85 10P4/2 CIExyY:0.3162/0.2902/0.12
-4 1 80 5P4/1 CIExyY:0.3059/0.2982/0.12
-4 1 85 10P4/1 CIExyY:0.3133/0.3026/0.12
-3 34 77.5 2.5P3/34 CIExyY:0.223/0.0543/0.06555
-3 32 77.5 2.5P3/32 CIExyY:0.2242/0.0587/0.06555
-3 32 80 5P3/32 CIExyY:0.2557/0.063/0.06555
-3 30 77.5 2.5P3/30 CIExyY:0.2252/0.0638/0.06555
-3 30 80 5P3/30 CIExyY:0.2568/0.069/0.06555
-3 30 82.5 7.5P3/30 CIExyY:0.2922/0.075/0.06555
-3 28 77.5 2.5P3/28 CIExyY:0.2268/0.0698/0.06555
-3 28 80 5P3/28 CIExyY:0.2579/0.075/0.06555
-3 28 82.5 7.5P3/28 CIExyY:0.293/0.0812/0.06555
-3 26 77.5 2.5P3/26 CIExyY:0.2286/0.0765/0.06555
-3 26 80 5P3/26 CIExyY:0.259/0.0822/0.06555
-3 26 82.5 7.5P3/26 CIExyY:0.2938/0.0892/0.06555
-3 26 85 10P3/26 CIExyY:0.3343/0.0978/0.06555
-3 24 77.5 2.5P3/24 CIExyY:0.2305/0.0832/0.06555
-3 24 80 5P3/24 CIExyY:0.2602/0.0891/0.06555
-3 24 82.5 7.5P3/24 CIExyY:0.2944/0.0967/0.06555
-3 24 85 10P3/24 CIExyY:0.3341/0.1055/0.06555
-3 22 77.5 2.5P3/22 CIExyY:0.2329/0.0911/0.06555
-3 22 80 5P3/22 CIExyY:0.262/0.0978/0.06555
-3 22 82.5 7.5P3/22 CIExyY:0.2953/0.1057/0.06555
-3 22 85 10P3/22 CIExyY:0.334/0.1146/0.06555
-3 20 77.5 2.5P3/20 CIExyY:0.2354/0.1003/0.06555
-3 20 80 5P3/20 CIExyY:0.2639/0.1074/0.06555
-3 20 82.5 7.5P3/20 CIExyY:0.2961/0.1151/0.06555
-3 20 85 10P3/20 CIExyY:0.3332/0.124/0.06555
-3 18 77.5 2.5P3/18 CIExyY:0.238/0.1094/0.06555
-3 18 80 5P3/18 CIExyY:0.2657/0.1163/0.06555
-3 18 82.5 7.5P3/18 CIExyY:0.2969/0.1239/0.06555
-3 18 85 10P3/18 CIExyY:0.3329/0.1332/0.06555
-3 16 77.5 2.5P3/16 CIExyY:0.241/0.1198/0.06555
-3 16 80 5P3/16 CIExyY:0.268/0.1272/0.06555
-3 16 82.5 7.5P3/16 CIExyY:0.2981/0.1356/0.06555
-3 16 85 10P3/16 CIExyY:0.332/0.1456/0.06555
-3 14 77.5 2.5P3/14 CIExyY:0.2449/0.1325/0.06555
-3 14 80 5P3/14 CIExyY:0.2707/0.1397/0.06555
-3 14 82.5 7.5P3/14 CIExyY:0.2992/0.1475/0.06555
-3 14 85 10P3/14 CIExyY:0.3309/0.1572/0.06555
-3 12 77.5 2.5P3/12 CIExyY:0.2498/0.148/0.06555
-3 12 80 5P3/12 CIExyY:0.2739/0.1539/0.06555
-3 12 82.5 7.5P3/12 CIExyY:0.3003/0.1618/0.06555
-3 12 85 10P3/12 CIExyY:0.3301/0.1715/0.06555
-3 10 77.5 2.5P3/10 CIExyY:0.2548/0.1638/0.06555
-3 10 80 5P3/10 CIExyY:0.2772/0.1707/0.06555
-3 10 82.5 7.5P3/10 CIExyY:0.302/0.1794/0.06555
-3 10 85 10P3/10 CIExyY:0.3286/0.1889/0.06555
-3 8 77.5 2.5P3/8 CIExyY:0.2615/0.1845/0.06555
-3 8 80 5P3/8 CIExyY:0.2819/0.191/0.06555
-3 8 82.5 7.5P3/8 CIExyY:0.3037/0.1981/0.06555
-3 8 85 10P3/8 CIExyY:0.3269/0.2075/0.06555
-3 6 77.5 2.5P3/6 CIExyY:0.2691/0.2072/0.06555
-3 6 80 5P3/6 CIExyY:0.287/0.2135/0.06555
-3 6 82.5 7.5P3/6 CIExyY:0.3057/0.2208/0.06555
-3 6 85 10P3/6 CIExyY:0.3243/0.2293/0.06555
-3 4 77.5 2.5P3/4 CIExyY:0.2792/0.2342/0.06555
-3 4 80 5P3/4 CIExyY:0.2928/0.2386/0.06555
-3 4 82.5 7.5P3/4 CIExyY:0.3072/0.2448/0.06555
-3 4 85 10P3/4 CIExyY:0.3214/0.2517/0.06555
-3 3 77.5 2.5P3/3 CIExyY:0.2852/0.2498/0.06555
-3 3 80 5P3/3 CIExyY:0.296/0.253/0.06555
-3 3 82.5 7.5P3/3 CIExyY:0.308/0.2583/0.06555
-3 3 85 10P3/3 CIExyY:0.3195/0.2644/0.06555
-3 2 77.5 2.5P3/2 CIExyY:0.2922/0.268/0.06555
-3 2 80 5P3/2 CIExyY:0.2997/0.27/0.06555
-3 2 82.5 7.5P3/2 CIExyY:0.3088/0.274/0.06555
-3 2 85 10P3/2 CIExyY:0.317/0.279/0.06555
-3 1 80 5P3/1 CIExyY:0.3043/0.2908/0.06555
-3 1 85 10P3/1 CIExyY:0.3139/0.2961/0.06555
-2 30 77.5 2.5P2/30 CIExyY:0.2231/0.0432/0.03126
-2 28 77.5 2.5P2/28 CIExyY:0.2245/0.0491/0.03126
-2 28 80 5P2/28 CIExyY:0.2559/0.0525/0.03126
-2 26 77.5 2.5P2/26 CIExyY:0.226/0.0555/0.03126
-2 26 80 5P2/26 CIExyY:0.2569/0.0594/0.03126
-2 24 77.5 2.5P2/24 CIExyY:0.2277/0.0621/0.03126
-2 24 80 5P2/24 CIExyY:0.2582/0.0669/0.03126
-2 24 82.5 7.5P2/24 CIExyY:0.2882/0.0719/0.03126
-2 22 77.5 2.5P2/22 CIExyY:0.2298/0.0696/0.03126
-2 22 80 5P2/22 CIExyY:0.2597/0.075/0.03126
-2 22 82.5 7.5P2/22 CIExyY:0.289/0.0799/0.03126
-2 22 85 10P2/22 CIExyY:0.323/0.0861/0.03126
-2 20 77.5 2.5P2/20 CIExyY:0.232/0.0779/0.03126
-2 20 80 5P2/20 CIExyY:0.2612/0.0838/0.03126
-2 20 82.5 7.5P2/20 CIExyY:0.2902/0.0901/0.03126
-2 20 85 10P2/20 CIExyY:0.3231/0.0962/0.03126
-2 18 77.5 2.5P2/18 CIExyY:0.2345/0.0873/0.03126
-2 18 80 5P2/18 CIExyY:0.2632/0.0935/0.03126
-2 18 82.5 7.5P2/18 CIExyY:0.2912/0.0995/0.03126
-2 18 85 10P2/18 CIExyY:0.3233/0.1063/0.03126
-2 16 77.5 2.5P2/16 CIExyY:0.2372/0.098/0.03126
-2 16 80 5P2/16 CIExyY:0.2652/0.1045/0.03126
-2 16 82.5 7.5P2/16 CIExyY:0.2922/0.1106/0.03126
-2 16 85 10P2/16 CIExyY:0.3235/0.1181/0.03126
-2 14 77.5 2.5P2/14 CIExyY:0.2406/0.11/0.03126
-2 14 80 5P2/14 CIExyY:0.2676/0.1163/0.03126
-2 14 82.5 7.5P2/14 CIExyY:0.2938/0.1235/0.03126
-2 14 85 10P2/14 CIExyY:0.3235/0.1317/0.03126
-2 12 77.5 2.5P2/12 CIExyY:0.2449/0.1245/0.03126
-2 12 80 5P2/12 CIExyY:0.2709/0.132/0.03126
-2 12 82.5 7.5P2/12 CIExyY:0.2956/0.1392/0.03126
-2 12 85 10P2/12 CIExyY:0.3233/0.1477/0.03126
-2 10 77.5 2.5P2/10 CIExyY:0.2501/0.1422/0.03126
-2 10 80 5P2/10 CIExyY:0.2743/0.15/0.03126
-2 10 82.5 7.5P2/10 CIExyY:0.2979/0.1569/0.03126
-2 10 85 10P2/10 CIExyY:0.323/0.1659/0.03126
-2 8 77.5 2.5P2/8 CIExyY:0.257/0.1635/0.03126
-2 8 80 5P2/8 CIExyY:0.2791/0.1707/0.03126
-2 8 82.5 7.5P2/8 CIExyY:0.3/0.1781/0.03126
-2 8 85 10P2/8 CIExyY:0.3219/0.1862/0.03126
-2 6 77.5 2.5P2/6 CIExyY:0.2661/0.1921/0.03126
-2 6 80 5P2/6 CIExyY:0.285/0.1992/0.03126
-2 6 82.5 7.5P2/6 CIExyY:0.3025/0.2058/0.03126
-2 6 85 10P2/6 CIExyY:0.3207/0.2132/0.03126
-2 4 77.5 2.5P2/4 CIExyY:0.2758/0.2208/0.03126
-2 4 80 5P2/4 CIExyY:0.2908/0.2261/0.03126
-2 4 82.5 7.5P2/4 CIExyY:0.3048/0.2321/0.03126
-2 4 85 10P2/4 CIExyY:0.3189/0.239/0.03126
-2 3 77.5 2.5P2/3 CIExyY:0.2818/0.2377/0.03126
-2 3 80 5P2/3 CIExyY:0.2942/0.2419/0.03126
-2 3 82.5 7.5P2/3 CIExyY:0.3059/0.2468/0.03126
-2 3 85 10P2/3 CIExyY:0.3178/0.2527/0.03126
-2 2 77.5 2.5P2/2 CIExyY:0.2892/0.2583/0.03126
-2 2 80 5P2/2 CIExyY:0.2984/0.2612/0.03126
-2 2 82.5 7.5P2/2 CIExyY:0.3071/0.2647/0.03126
-2 2 85 10P2/2 CIExyY:0.3161/0.2691/0.03126
-2 1 80 5P2/1 CIExyY:0.3036/0.2855/0.03126
-2 1 85 10P2/1 CIExyY:0.3136/0.2893/0.03126
-1 26 77.5 2.5P1/26 CIExyY:0.2251/0.0355/0.0121
-1 24 77.5 2.5P1/24 CIExyY:0.2266/0.0418/0.0121
-1 22 77.5 2.5P1/22 CIExyY:0.2279/0.0473/0.0121
-1 22 80 5P1/22 CIExyY:0.259/0.0509/0.0121
-1 20 77.5 2.5P1/20 CIExyY:0.2295/0.0542/0.0121
-1 20 80 5P1/20 CIExyY:0.2601/0.0586/0.0121
-1 20 82.5 7.5P1/20 CIExyY:0.2831/0.0625/0.0121
-1 18 77.5 2.5P1/18 CIExyY:0.2312/0.0618/0.0121
-1 18 80 5P1/18 CIExyY:0.2612/0.0667/0.0121
-1 18 82.5 7.5P1/18 CIExyY:0.2841/0.0706/0.0121
-1 18 85 10P1/18 CIExyY:0.3069/0.0748/0.0121
-1 16 77.5 2.5P1/16 CIExyY:0.2331/0.0696/0.0121
-1 16 80 5P1/16 CIExyY:0.2625/0.0746/0.0121
-1 16 82.5 7.5P1/16 CIExyY:0.2852/0.079/0.0121
-1 16 85 10P1/16 CIExyY:0.3078/0.0839/0.0121
-1 14 77.5 2.5P1/14 CIExyY:0.2361/0.081/0.0121
-1 14 80 5P1/14 CIExyY:0.2645/0.0863/0.0121
-1 14 82.5 7.5P1/14 CIExyY:0.2868/0.0903/0.0121
-1 14 85 10P1/14 CIExyY:0.3084/0.0952/0.0121
-1 12 77.5 2.5P1/12 CIExyY:0.2394/0.094/0.0121
-1 12 80 5P1/12 CIExyY:0.267/0.1006/0.0121
-1 12 82.5 7.5P1/12 CIExyY:0.2884/0.1059/0.0121
-1 12 85 10P1/12 CIExyY:0.3094/0.111/0.0121
-1 10 77.5 2.5P1/10 CIExyY:0.2441/0.1112/0.0121
-1 10 80 5P1/10 CIExyY:0.2701/0.1173/0.0121
-1 10 82.5 7.5P1/10 CIExyY:0.2905/0.1229/0.0121
-1 10 85 10P1/10 CIExyY:0.3102/0.1282/0.0121
-1 8 77.5 2.5P1/8 CIExyY:0.2496/0.1303/0.0121
-1 8 80 5P1/8 CIExyY:0.2742/0.1375/0.0121
-1 8 82.5 7.5P1/8 CIExyY:0.2932/0.1429/0.0121
-1 8 85 10P1/8 CIExyY:0.3114/0.1481/0.0121
-1 6 77.5 2.5P1/6 CIExyY:0.257/0.1559/0.0121
-1 6 80 5P1/6 CIExyY:0.2794/0.1628/0.0121
-1 6 82.5 7.5P1/6 CIExyY:0.296/0.1682/0.0121
-1 6 85 10P1/6 CIExyY:0.3126/0.1737/0.0121
-1 4 77.5 2.5P1/4 CIExyY:0.2668/0.1874/0.0121
-1 4 80 5P1/4 CIExyY:0.2854/0.1927/0.0121
-1 4 82.5 7.5P1/4 CIExyY:0.2991/0.1974/0.0121
-1 4 85 10P1/4 CIExyY:0.3132/0.2032/0.0121
-1 2 77.5 2.5P1/2 CIExyY:0.2808/0.2296/0.0121
-1 2 80 5P1/2 CIExyY:0.2936/0.233/0.0121
-1 2 82.5 7.5P1/2 CIExyY:0.303/0.2361/0.0121
-1 2 85 10P1/2 CIExyY:0.3132/0.2404/0.0121
-9 6 87.5 2.5RP9/6 CIExyY:0.3322/0.291/0.7866
-9 6 90 5RP9/6 CIExyY:0.3431/0.2988/0.7866
-9 6 92.5 7.5RP9/6 CIExyY:0.3512/0.3052/0.7866
-9 6 95 10RP9/6 CIExyY:0.359/0.3118/0.7866
-9 4 87.5 2.5RP9/4 CIExyY:0.3234/0.301/0.7866
-9 4 90 5RP9/4 CIExyY:0.3301/0.306/0.7866
-9 4 92.5 7.5RP9/4 CIExyY:0.335/0.3099/0.7866
-9 4 95 10RP9/4 CIExyY:0.34/0.314/0.7866
-9 2 87.5 2.5RP9/2 CIExyY:0.3149/0.3108/0.7866
-9 2 90 5RP9/2 CIExyY:0.3172/0.3126/0.7866
-9 2 92.5 7.5RP9/2 CIExyY:0.319/0.3141/0.7866
-9 2 95 10RP9/2 CIExyY:0.3205/0.3155/0.7866
-9 1 90 5RP9/1 CIExyY:0.3126/0.315/0.7866
-9 1 95 10RP9/1 CIExyY:0.3136/0.316/0.7866
-8 14 87.5 2.5RP8/14 CIExyY:0.3621/0.2496/0.591
-8 12 87.5 2.5RP8/12 CIExyY:0.3552/0.2594/0.591
-8 12 90 5RP8/12 CIExyY:0.3818/0.2742/0.591
-8 12 92.5 7.5RP8/12 CIExyY:0.4002/0.2859/0.591
-8 10 87.5 2.5RP8/10 CIExyY:0.3479/0.2699/0.591
-8 10 90 5RP8/10 CIExyY:0.3685/0.2828/0.591
-8 10 92.5 7.5RP8/10 CIExyY:0.383/0.293/0.591
-8 10 95 10RP8/10 CIExyY:0.3983/0.3049/0.591
-8 8 87.5 2.5RP8/8 CIExyY:0.3406/0.2793/0.591
-8 8 90 5RP8/8 CIExyY:0.357/0.29/0.591
-8 8 92.5 7.5RP8/8 CIExyY:0.3682/0.2983/0.591
-8 8 95 10RP8/8 CIExyY:0.38/0.3082/0.591
-8 6 87.5 2.5RP8/6 CIExyY:0.3327/0.2898/0.591
-8 6 90 5RP8/6 CIExyY:0.344/0.2978/0.591
-8 6 92.5 7.5RP8/6 CIExyY:0.3521/0.3042/0.591
-8 6 95 10RP8/6 CIExyY:0.36/0.3112/0.591
-8 4 87.5 2.5RP8/4 CIExyY:0.3239/0.3/0.591
-8 4 90 5RP8/4 CIExyY:0.3303/0.3052/0.591
-8 4 92.5 7.5RP8/4 CIExyY:0.336/0.3092/0.591
-8 4 95 10RP8/4 CIExyY:0.3412/0.3135/0.591
-8 3 87.5 2.5RP8/3 CIExyY:0.3194/0.3052/0.591
-8 3 90 5RP8/3 CIExyY:0.3241/0.3088/0.591
-8 3 92.5 7.5RP8/3 CIExyY:0.3276/0.3115/0.591
-8 3 95 10RP8/3 CIExyY:0.3311/0.3144/0.591
-8 2 87.5 2.5RP8/2 CIExyY:0.3154/0.31/0.591
-8 2 90 5RP8/2 CIExyY:0.318/0.312/0.591
-8 2 92.5 7.5RP8/2 CIExyY:0.32/0.3136/0.591
-8 2 95 10RP8/2 CIExyY:0.3218/0.3152/0.591
-8 1 90 5RP8/1 CIExyY:0.3132/0.3146/0.591
-8 1 95 10RP8/1 CIExyY:0.3145/0.3158/0.591
-7 20 87.5 2.5RP7/20 CIExyY:0.3811/0.2143/0.4306
-7 18 87.5 2.5RP7/18 CIExyY:0.3751/0.2241/0.4306
-7 18 90 5RP7/18 CIExyY:0.4186/0.2459/0.4306
-7 16 87.5 2.5RP7/16 CIExyY:0.3688/0.2342/0.4306
-7 16 90 5RP7/16 CIExyY:0.4076/0.254/0.4306
-7 16 92.5 7.5RP7/16 CIExyY:0.4346/0.2689/0.4306
-7 16 95 10RP7/16 CIExyY:0.4648/0.2878/0.4306
-7 14 87.5 2.5RP7/14 CIExyY:0.362/0.2448/0.4306
-7 14 90 5RP7/14 CIExyY:0.3958/0.2628/0.4306
-7 14 92.5 7.5RP7/14 CIExyY:0.4195/0.2762/0.4306
-7 14 95 10RP7/14 CIExyY:0.4456/0.2931/0.4306
-7 12 87.5 2.5RP7/12 CIExyY:0.3555/0.2545/0.4306
-7 12 90 5RP7/12 CIExyY:0.3841/0.271/0.4306
-7 12 92.5 7.5RP7/12 CIExyY:0.404/0.2834/0.4306
-7 12 95 10RP7/12 CIExyY:0.426/0.298/0.4306
-7 10 87.5 2.5RP7/10 CIExyY:0.3487/0.2648/0.4306
-7 10 90 5RP7/10 CIExyY:0.3713/0.2798/0.4306
-7 10 92.5 7.5RP7/10 CIExyY:0.3871/0.2906/0.4306
-7 10 95 10RP7/10 CIExyY:0.404/0.303/0.4306
-7 8 87.5 2.5RP7/8 CIExyY:0.3417/0.2745/0.4306
-7 8 90 5RP7/8 CIExyY:0.3603/0.2869/0.4306
-7 8 92.5 7.5RP7/8 CIExyY:0.3722/0.2963/0.4306
-7 8 95 10RP7/8 CIExyY:0.3851/0.3067/0.4306
-7 6 87.5 2.5RP7/6 CIExyY:0.3338/0.2854/0.4306
-7 6 90 5RP7/6 CIExyY:0.347/0.2949/0.4306
-7 6 92.5 7.5RP7/6 CIExyY:0.3562/0.3022/0.4306
-7 6 95 10RP7/6 CIExyY:0.3648/0.3098/0.4306
-7 4 87.5 2.5RP7/4 CIExyY:0.3254/0.2971/0.4306
-7 4 90 5RP7/4 CIExyY:0.3332/0.3032/0.4306
-7 4 92.5 7.5RP7/4 CIExyY:0.3389/0.3079/0.4306
-7 4 95 10RP7/4 CIExyY:0.3446/0.3125/0.4306
-7 3 87.5 2.5RP7/3 CIExyY:0.3211/0.3025/0.4306
-7 3 90 5RP7/3 CIExyY:0.3267/0.307/0.4306
-7 3 92.5 7.5RP7/3 CIExyY:0.3308/0.3103/0.4306
-7 3 95 10RP7/3 CIExyY:0.3349/0.3137/0.4306
-7 2 87.5 2.5RP7/2 CIExyY:0.317/0.3076/0.4306
-7 2 90 5RP7/2 CIExyY:0.3206/0.3104/0.4306
-7 2 92.5 7.5RP7/2 CIExyY:0.3232/0.3125/0.4306
-7 2 95 10RP7/2 CIExyY:0.3258/0.3148/0.4306
-7 1 90 5RP7/1 CIExyY:0.315/0.3135/0.4306
-7 1 95 10RP7/1 CIExyY:0.3175/0.3157/0.4306
-6 24 87.5 2.5RP6/24 CIExyY:0.3927/0.1892/0.3005
-6 22 87.5 2.5RP6/22 CIExyY:0.3877/0.1978/0.3005
-6 22 90 5RP6/22 CIExyY:0.4449/0.2219/0.3005
-6 20 87.5 2.5RP6/20 CIExyY:0.3833/0.2056/0.3005
-6 20 90 5RP6/20 CIExyY:0.4368/0.2283/0.3005
-6 20 92.5 7.5RP6/20 CIExyY:0.4735/0.2464/0.3005
-6 18 87.5 2.5RP6/18 CIExyY:0.3773/0.2158/0.3005
-6 18 90 5RP6/18 CIExyY:0.4245/0.2382/0.3005
-6 18 92.5 7.5RP6/18 CIExyY:0.4581/0.2549/0.3005
-6 18 95 10RP6/18 CIExyY:0.4961/0.2751/0.3005
-6 16 87.5 2.5RP6/16 CIExyY:0.3718/0.2251/0.3005
-6 16 90 5RP6/16 CIExyY:0.4136/0.2467/0.3005
-6 16 92.5 7.5RP6/16 CIExyY:0.4448/0.2622/0.3005
-6 16 95 10RP6/16 CIExyY:0.4781/0.2812/0.3005
-6 14 87.5 2.5RP6/14 CIExyY:0.3652/0.2355/0.3005
-6 14 90 5RP6/14 CIExyY:0.4023/0.2552/0.3005
-6 14 92.5 7.5RP6/14 CIExyY:0.4285/0.2702/0.3005
-6 14 95 10RP6/14 CIExyY:0.4552/0.2881/0.3005
-6 12 87.5 2.5RP6/12 CIExyY:0.3582/0.2462/0.3005
-6 12 90 5RP6/12 CIExyY:0.39/0.2646/0.3005
-6 12 92.5 7.5RP6/12 CIExyY:0.4125/0.2784/0.3005
-6 12 95 10RP6/12 CIExyY:0.436/0.2936/0.3005
-6 10 87.5 2.5RP6/10 CIExyY:0.3509/0.2578/0.3005
-6 10 90 5RP6/10 CIExyY:0.3769/0.2738/0.3005
-6 10 92.5 7.5RP6/10 CIExyY:0.396/0.286/0.3005
-6 10 95 10RP6/10 CIExyY:0.415/0.2989/0.3005
-6 8 87.5 2.5RP6/8 CIExyY:0.3437/0.2688/0.3005
-6 8 90 5RP6/8 CIExyY:0.3648/0.282/0.3005
-6 8 92.5 7.5RP6/8 CIExyY:0.3791/0.2929/0.3005
-6 8 95 10RP6/8 CIExyY:0.393/0.3038/0.3005
-6 6 87.5 2.5RP6/6 CIExyY:0.3362/0.2799/0.3005
-6 6 90 5RP6/6 CIExyY:0.352/0.2904/0.3005
-6 6 92.5 7.5RP6/6 CIExyY:0.3635/0.2987/0.3005
-6 6 95 10RP6/6 CIExyY:0.374/0.3074/0.3005
-6 4 87.5 2.5RP6/4 CIExyY:0.3272/0.2929/0.3005
-6 4 90 5RP6/4 CIExyY:0.3371/0.3001/0.3005
-6 4 92.5 7.5RP6/4 CIExyY:0.3439/0.3056/0.3005
-6 4 95 10RP6/4 CIExyY:0.3503/0.3112/0.3005
-6 3 87.5 2.5RP6/3 CIExyY:0.323/0.2989/0.3005
-6 3 90 5RP6/3 CIExyY:0.33/0.3044/0.3005
-6 3 92.5 7.5RP6/3 CIExyY:0.3348/0.3086/0.3005
-6 3 95 10RP6/3 CIExyY:0.3397/0.3127/0.3005
-6 2 87.5 2.5RP6/2 CIExyY:0.3188/0.3048/0.3005
-6 2 90 5RP6/2 CIExyY:0.3232/0.3085/0.3005
-6 2 92.5 7.5RP6/2 CIExyY:0.3261/0.3113/0.3005
-6 2 95 10RP6/2 CIExyY:0.3292/0.3141/0.3005
-6 1 90 5RP6/1 CIExyY:0.3166/0.3124/0.3005
-6 1 95 10RP6/1 CIExyY:0.3193/0.3153/0.3005
-5 26 87.5 2.5RP5/26 CIExyY:0.4011/0.1652/0.1977
-5 24 87.5 2.5RP5/24 CIExyY:0.3965/0.1738/0.1977
-5 24 90 5RP5/24 CIExyY:0.4683/0.1978/0.1977
-5 22 87.5 2.5RP5/22 CIExyY:0.3924/0.1814/0.1977
-5 22 90 5RP5/22 CIExyY:0.4581/0.2068/0.1977
-5 22 92.5 7.5RP5/22 CIExyY:0.5045/0.2248/0.1977
-5 20 87.5 2.5RP5/20 CIExyY:0.3873/0.1909/0.1977
-5 20 90 5RP5/20 CIExyY:0.4484/0.215/0.1977
-5 20 92.5 7.5RP5/20 CIExyY:0.4915/0.233/0.1977
-5 20 95 10RP5/20 CIExyY:0.5396/0.2535/0.1977
-5 18 87.5 2.5RP5/18 CIExyY:0.3821/0.2007/0.1977
-5 18 90 5RP5/18 CIExyY:0.4372/0.2242/0.1977
-5 18 92.5 7.5RP5/18 CIExyY:0.4761/0.2421/0.1977
-5 18 95 10RP5/18 CIExyY:0.5185/0.262/0.1977
-5 16 87.5 2.5RP5/16 CIExyY:0.3763/0.2108/0.1977
-5 16 90 5RP5/16 CIExyY:0.4261/0.2331/0.1977
-5 16 92.5 7.5RP5/16 CIExyY:0.4617/0.2506/0.1977
-5 16 95 10RP5/16 CIExyY:0.4986/0.2685/0.1977
-5 14 87.5 2.5RP5/14 CIExyY:0.3703/0.2211/0.1977
-5 14 90 5RP5/14 CIExyY:0.4142/0.2428/0.1977
-5 14 92.5 7.5RP5/14 CIExyY:0.4454/0.2596/0.1977
-5 14 95 10RP5/14 CIExyY:0.4767/0.2776/0.1977
-5 12 87.5 2.5RP5/12 CIExyY:0.3635/0.2325/0.1977
-5 12 90 5RP5/12 CIExyY:0.4022/0.2523/0.1977
-5 12 92.5 7.5RP5/12 CIExyY:0.4303/0.2675/0.1977
-5 12 95 10RP5/12 CIExyY:0.4579/0.2841/0.1977
-5 10 87.5 2.5RP5/10 CIExyY:0.356/0.2452/0.1977
-5 10 90 5RP5/10 CIExyY:0.388/0.263/0.1977
-5 10 92.5 7.5RP5/10 CIExyY:0.4108/0.2773/0.1977
-5 10 95 10RP5/10 CIExyY:0.4332/0.2918/0.1977
-5 8 87.5 2.5RP5/8 CIExyY:0.349/0.257/0.1977
-5 8 90 5RP5/8 CIExyY:0.3748/0.2729/0.1977
-5 8 92.5 7.5RP5/8 CIExyY:0.3932/0.2852/0.1977
-5 8 95 10RP5/8 CIExyY:0.4105/0.298/0.1977
-5 6 87.5 2.5RP5/6 CIExyY:0.3396/0.2718/0.1977
-5 6 90 5RP5/6 CIExyY:0.3585/0.2842/0.1977
-5 6 92.5 7.5RP5/6 CIExyY:0.3726/0.2941/0.1977
-5 6 95 10RP5/6 CIExyY:0.3851/0.3039/0.1977
-5 4 87.5 2.5RP5/4 CIExyY:0.3298/0.2869/0.1977
-5 4 90 5RP5/4 CIExyY:0.3421/0.2954/0.1977
-5 4 92.5 7.5RP5/4 CIExyY:0.3515/0.3024/0.1977
-5 4 95 10RP5/4 CIExyY:0.3594/0.309/0.1977
-5 3 87.5 2.5RP5/3 CIExyY:0.3248/0.2944/0.1977
-5 3 90 5RP5/3 CIExyY:0.3338/0.301/0.1977
-5 3 92.5 7.5RP5/3 CIExyY:0.3404/0.3062/0.1977
-5 3 95 10RP5/3 CIExyY:0.3461/0.3112/0.1977
-5 2 87.5 2.5RP5/2 CIExyY:0.3199/0.3019/0.1977
-5 2 90 5RP5/2 CIExyY:0.3256/0.3065/0.1977
-5 2 92.5 7.5RP5/2 CIExyY:0.3296/0.3098/0.1977
-5 2 95 10RP5/2 CIExyY:0.3332/0.3131/0.1977
-5 1 90 5RP5/1 CIExyY:0.3177/0.3116/0.1977
-5 1 95 10RP5/1 CIExyY:0.321/0.3148/0.1977
-4 26 87.5 2.5RP4/26 CIExyY:0.4048/0.1428/0.12
-4 24 87.5 2.5RP4/24 CIExyY:0.4011/0.1504/0.12
-4 22 87.5 2.5RP4/22 CIExyY:0.3967/0.1593/0.12
-4 22 90 5RP4/22 CIExyY:0.4656/0.1821/0.12
-4 20 87.5 2.5RP4/20 CIExyY:0.3926/0.1679/0.12
-4 20 90 5RP4/20 CIExyY:0.4571/0.1906/0.12
-4 20 92.5 7.5RP4/20 CIExyY:0.513/0.2101/0.12
-4 20 95 10RP4/20 CIExyY:0.5674/0.2319/0.12
-4 18 87.5 2.5RP4/18 CIExyY:0.3865/0.1802/0.12
-4 18 90 5RP4/18 CIExyY:0.4455/0.2023/0.12
-4 18 92.5 7.5RP4/18 CIExyY:0.4965/0.2217/0.12
-4 18 95 10RP4/18 CIExyY:0.5466/0.2424/0.12
-4 16 87.5 2.5RP4/16 CIExyY:0.3807/0.1923/0.12
-4 16 90 5RP4/16 CIExyY:0.4339/0.2139/0.12
-4 16 92.5 7.5RP4/16 CIExyY:0.4799/0.2329/0.12
-4 16 95 10RP4/16 CIExyY:0.5234/0.253/0.12
-4 14 87.5 2.5RP4/14 CIExyY:0.3748/0.2039/0.12
-4 14 90 5RP4/14 CIExyY:0.4225/0.2249/0.12
-4 14 92.5 7.5RP4/14 CIExyY:0.4629/0.2437/0.12
-4 14 95 10RP4/14 CIExyY:0.502/0.2623/0.12
-4 12 87.5 2.5RP4/12 CIExyY:0.3683/0.2162/0.12
-4 12 90 5RP4/12 CIExyY:0.4104/0.2361/0.12
-4 12 92.5 7.5RP4/12 CIExyY:0.445/0.2541/0.12
-4 12 95 10RP4/12 CIExyY:0.4789/0.2717/0.12
-4 10 87.5 2.5RP4/10 CIExyY:0.3608/0.2301/0.12
-4 10 90 5RP4/10 CIExyY:0.396/0.2489/0.12
-4 10 92.5 7.5RP4/10 CIExyY:0.4259/0.2651/0.12
-4 10 95 10RP4/10 CIExyY:0.4528/0.2811/0.12
-4 8 87.5 2.5RP4/8 CIExyY:0.3533/0.2438/0.12
-4 8 90 5RP4/8 CIExyY:0.3833/0.26/0.12
-4 8 92.5 7.5RP4/8 CIExyY:0.4072/0.275/0.12
-4 8 95 10RP4/8 CIExyY:0.4282/0.289/0.12
-4 6 87.5 2.5RP4/6 CIExyY:0.3442/0.2595/0.12
-4 6 90 5RP4/6 CIExyY:0.3671/0.2733/0.12
-4 6 92.5 7.5RP4/6 CIExyY:0.385/0.2859/0.12
-4 6 95 10RP4/6 CIExyY:0.3999/0.2972/0.12
-4 4 87.5 2.5RP4/4 CIExyY:0.334/0.277/0.12
-4 4 90 5RP4/4 CIExyY:0.3491/0.2872/0.12
-4 4 92.5 7.5RP4/4 CIExyY:0.3612/0.2963/0.12
-4 4 95 10RP4/4 CIExyY:0.3715/0.3042/0.12
-4 3 87.5 2.5RP4/3 CIExyY:0.3287/0.2858/0.12
-4 3 90 5RP4/3 CIExyY:0.3402/0.294/0.12
-4 3 92.5 7.5RP4/3 CIExyY:0.3494/0.3012/0.12
-4 3 95 10RP4/3 CIExyY:0.3568/0.3075/0.12
-4 2 87.5 2.5RP4/2 CIExyY:0.3231/0.2951/0.12
-4 2 90 5RP4/2 CIExyY:0.331/0.301/0.12
-4 2 92.5 7.5RP4/2 CIExyY:0.3371/0.3061/0.12
-4 2 95 10RP4/2 CIExyY:0.3417/0.3106/0.12
-4 1 90 5RP4/1 CIExyY:0.3211/0.3084/0.12
-4 1 95 10RP4/1 CIExyY:0.3261/0.3135/0.12
-3 22 87.5 2.5RP3/22 CIExyY:0.4018/0.1304/0.06555
-3 20 87.5 2.5RP3/20 CIExyY:0.3969/0.1413/0.06555
-3 20 90 5RP3/20 CIExyY:0.4577/0.1593/0.06555
-3 18 87.5 2.5RP3/18 CIExyY:0.3929/0.1506/0.06555
-3 18 90 5RP3/18 CIExyY:0.4503/0.1695/0.06555
-3 18 92.5 7.5RP3/18 CIExyY:0.513/0.1893/0.06555
-3 16 87.5 2.5RP3/16 CIExyY:0.3876/0.1629/0.06555
-3 16 90 5RP3/16 CIExyY:0.4418/0.1809/0.06555
-3 16 92.5 7.5RP3/16 CIExyY:0.4991/0.2011/0.06555
-3 16 95 10RP3/16 CIExyY:0.5628/0.2241/0.06555
-3 14 87.5 2.5RP3/14 CIExyY:0.3818/0.1758/0.06555
-3 14 90 5RP3/14 CIExyY:0.4313/0.1944/0.06555
-3 14 92.5 7.5RP3/14 CIExyY:0.4831/0.214/0.06555
-3 14 95 10RP3/14 CIExyY:0.538/0.2369/0.06555
-3 12 87.5 2.5RP3/12 CIExyY:0.3754/0.1898/0.06555
-3 12 90 5RP3/12 CIExyY:0.4199/0.2089/0.06555
-3 12 92.5 7.5RP3/12 CIExyY:0.4654/0.2273/0.06555
-3 12 95 10RP3/12 CIExyY:0.5139/0.2489/0.06555
-3 10 87.5 2.5RP3/10 CIExyY:0.3681/0.2054/0.06555
-3 10 90 5RP3/10 CIExyY:0.4073/0.2235/0.06555
-3 10 92.5 7.5RP3/10 CIExyY:0.4445/0.2419/0.06555
-3 10 95 10RP3/10 CIExyY:0.4851/0.2618/0.06555
-3 8 87.5 2.5RP3/8 CIExyY:0.3598/0.2233/0.06555
-3 8 90 5RP3/8 CIExyY:0.393/0.2395/0.06555
-3 8 92.5 7.5RP3/8 CIExyY:0.4234/0.2556/0.06555
-3 8 95 10RP3/8 CIExyY:0.4552/0.2741/0.06555
-3 6 87.5 2.5RP3/6 CIExyY:0.3501/0.2425/0.06555
-3 6 90 5RP3/6 CIExyY:0.3765/0.2569/0.06555
-3 6 92.5 7.5RP3/6 CIExyY:0.399/0.2708/0.06555
-3 6 95 10RP3/6 CIExyY:0.4218/0.2864/0.06555
-3 4 87.5 2.5RP3/4 CIExyY:0.34/0.2624/0.06555
-3 4 90 5RP3/4 CIExyY:0.3586/0.2742/0.06555
-3 4 92.5 7.5RP3/4 CIExyY:0.3739/0.2851/0.06555
-3 4 95 10RP3/4 CIExyY:0.3889/0.2969/0.06555
-3 3 87.5 2.5RP3/3 CIExyY:0.334/0.2736/0.06555
-3 3 90 5RP3/3 CIExyY:0.3484/0.2838/0.06555
-3 3 92.5 7.5RP3/3 CIExyY:0.3601/0.2925/0.06555
-3 3 95 10RP3/3 CIExyY:0.3714/0.3019/0.06555
-3 2 87.5 2.5RP3/2 CIExyY:0.3272/0.2861/0.06555
-3 2 90 5RP3/2 CIExyY:0.337/0.294/0.06555
-3 2 92.5 7.5RP3/2 CIExyY:0.345/0.3001/0.06555
-3 2 95 10RP3/2 CIExyY:0.3526/0.3068/0.06555
-3 1 90 5RP3/1 CIExyY:0.3243/0.3048/0.06555
-3 1 95 10RP3/1 CIExyY:0.3323/0.3116/0.06555
-2 20 87.5 2.5RP2/20 CIExyY:0.3802/0.108/0.03126
-2 18 87.5 2.5RP2/18 CIExyY:0.3778/0.1188/0.03126
-2 18 90 5RP2/18 CIExyY:0.4338/0.134/0.03126
-2 16 87.5 2.5RP2/16 CIExyY:0.3748/0.131/0.03126
-2 16 90 5RP2/16 CIExyY:0.4269/0.1454/0.03126
-2 16 92.5 7.5RP2/16 CIExyY:0.4744/0.1595/0.03126
-2 14 87.5 2.5RP2/14 CIExyY:0.3711/0.1449/0.03126
-2 14 90 5RP2/14 CIExyY:0.418/0.1598/0.03126
-2 14 92.5 7.5RP2/14 CIExyY:0.4624/0.1737/0.03126
-2 14 95 10RP2/14 CIExyY:0.5129/0.1888/0.03126
-2 12 87.5 2.5RP2/12 CIExyY:0.3668/0.1618/0.03126
-2 12 90 5RP2/12 CIExyY:0.408/0.1764/0.03126
-2 12 92.5 7.5RP2/12 CIExyY:0.4481/0.1903/0.03126
-2 12 95 10RP2/12 CIExyY:0.4911/0.206/0.03126
-2 10 87.5 2.5RP2/10 CIExyY:0.3617/0.18/0.03126
-2 10 90 5RP2/10 CIExyY:0.3971/0.1939/0.03126
-2 10 92.5 7.5RP2/10 CIExyY:0.4321/0.2082/0.03126
-2 10 95 10RP2/10 CIExyY:0.4678/0.2237/0.03126
-2 8 87.5 2.5RP2/8 CIExyY:0.3555/0.2003/0.03126
-2 8 90 5RP2/8 CIExyY:0.3858/0.214/0.03126
-2 8 92.5 7.5RP2/8 CIExyY:0.4137/0.2276/0.03126
-2 8 95 10RP2/8 CIExyY:0.4428/0.2419/0.03126
-2 6 87.5 2.5RP2/6 CIExyY:0.347/0.2259/0.03126
-2 6 90 5RP2/6 CIExyY:0.3708/0.238/0.03126
-2 6 92.5 7.5RP2/6 CIExyY:0.3918/0.249/0.03126
-2 6 95 10RP2/6 CIExyY:0.4139/0.2608/0.03126
-2 4 87.5 2.5RP2/4 CIExyY:0.3382/0.2496/0.03126
-2 4 90 5RP2/4 CIExyY:0.3558/0.2597/0.03126
-2 4 92.5 7.5RP2/4 CIExyY:0.3702/0.2683/0.03126
-2 4 95 10RP2/4 CIExyY:0.385/0.2778/0.03126
-2 3 87.5 2.5RP2/3 CIExyY:0.3336/0.2614/0.03126
-2 3 90 5RP2/3 CIExyY:0.3479/0.2706/0.03126
-2 3 92.5 7.5RP2/3 CIExyY:0.3589/0.2783/0.03126
-2 3 95 10RP2/3 CIExyY:0.37/0.2865/0.03126
-2 2 87.5 2.5RP2/2 CIExyY:0.3279/0.2754/0.03126
-2 2 90 5RP2/2 CIExyY:0.3383/0.2829/0.03126
-2 2 92.5 7.5RP2/2 CIExyY:0.3459/0.2892/0.03126
-2 2 95 10RP2/2 CIExyY:0.3532/0.2957/0.03126
-2 1 90 5RP2/1 CIExyY:0.326/0.2978/0.03126
-2 1 95 10RP2/1 CIExyY:0.3336/0.3056/0.03126
-1 16 87.5 2.5RP1/16 CIExyY:0.3368/0.0902/0.0121
-1 14 87.5 2.5RP1/14 CIExyY:0.3368/0.102/0.0121
-1 14 90 5RP1/14 CIExyY:0.3811/0.1138/0.0121
-1 12 87.5 2.5RP1/12 CIExyY:0.3361/0.1181/0.0121
-1 12 90 5RP1/12 CIExyY:0.3772/0.1283/0.0121
-1 12 92.5 7.5RP1/12 CIExyY:0.424/0.14/0.0121
-1 12 95 10RP1/12 CIExyY:0.4668/0.1514/0.0121
-1 10 87.5 2.5RP1/10 CIExyY:0.3354/0.1351/0.0121
-1 10 90 5RP1/10 CIExyY:0.3727/0.1458/0.0121
-1 10 92.5 7.5RP1/10 CIExyY:0.4132/0.158/0.0121
-1 10 95 10RP1/10 CIExyY:0.4521/0.171/0.0121
-1 8 87.5 2.5RP1/8 CIExyY:0.3342/0.1551/0.0121
-1 8 90 5RP1/8 CIExyY:0.366/0.1662/0.0121
-1 8 92.5 7.5RP1/8 CIExyY:0.4005/0.1793/0.0121
-1 8 95 10RP1/8 CIExyY:0.4357/0.1921/0.0121
-1 6 87.5 2.5RP1/6 CIExyY:0.3321/0.1811/0.0121
-1 6 90 5RP1/6 CIExyY:0.3588/0.192/0.0121
-1 6 92.5 7.5RP1/6 CIExyY:0.3865/0.2036/0.0121
-1 6 95 10RP1/6 CIExyY:0.4151/0.2169/0.0121
-1 4 87.5 2.5RP1/4 CIExyY:0.329/0.2095/0.0121
-1 4 90 5RP1/4 CIExyY:0.3503/0.2196/0.0121
-1 4 92.5 7.5RP1/4 CIExyY:0.3705/0.23/0.0121
-1 4 95 10RP1/4 CIExyY:0.392/0.2423/0.0121
-1 2 87.5 2.5RP1/2 CIExyY:0.324/0.2459/0.0121
-1 2 90 5RP1/2 CIExyY:0.3378/0.2542/0.0121
-1 2 92.5 7.5RP1/2 CIExyY:0.3498/0.2617/0.0121
-1 2 95 10RP1/2 CIExyY:0.3629/0.271/0.0121
+++ /dev/null
-* You should byte-compile(make).
-Because DOODLE uses very complex macro.
-
-Especialy ew-line.el, ew-scan-m.el, ew-scan-s.el and ew-scan-u.el that are require 'lex.
-(lex is scanner generator.)
-
-* Multiline field-bodies fetched from XOVER is already concatinated,
-you should set ew-ignore-76bytes-limit to true.
-Currentry Gnus use these variables to decode and "Subject" and "From",
-tell it here. Unless doing it, DOODLE does not decode atoms in phrase
-because DOODLE cannot decide whether an atom is in phrase or not without
-field name information.
-
-(setq gnus-unstructured-field-decoder
- (lambda (string)
- (if (fboundp 'ew-decode-field)
- (let ((ew-ignore-76bytes-limit t))
- (ew-cut-cr-lf (ew-decode-field "Subject" (ew-lf-crlf-to-crlf string))))
- (eword-decode-and-unfold-structured-field string))))
-
-(setq gnus-structured-field-decoder
- (lambda (string)
- (if (fboundp 'ew-decode-field)
- (let ((ew-ignore-76bytes-limit t))
- (ew-cut-cr-lf (ew-decode-field "From" (ew-lf-crlf-to-crlf string))))
- (eword-decode-unstructured-field-body (std11-unfold-string string) 'must-unfold))))
-
-* Ignore warnings about args-eword-* when byte-compiling.
+++ /dev/null
-FLIM: Faithful Library about Internet Message
-FLAM: Faithful Library About MIME
-DOODLE: Definition Oriented Obsessive Decoding Library for Encoded-word
-
-Order is not significant.
-
- 1 \e$BAIK'\e(B \e$B$9$[$&\e(B 2.5R3.0/3.0 FLIM-FLAM 1.0.0
- 2 \e$B9HG_\e(B \e$B$3$&$P$$\e(B 2.5R7.0/8.0 FLIM-FLAM 1.0.1
- 3 \e$B4Z9H2V\e(B \e$B$+$i$/$l$J$p\e(B 4.0R4.0/14.0 FLIM-FLAM 1.1.0
- 4 \e$BEm2V\e(B \e$B$b$b\e(B 2.5R6.0/10.0 FLIM-FLAM 1.2.0
- 5 \e$B:y\e(B \e$B$5$/$i\e(B 2.5R7.0/7.0 FLIM-FLAM 1.2.1
- 6 \e$BFy\e(B \e$B$K$/\e(B 2.5YR8.0/4.0 FLIM-FLAM 1.3.0
- 7 \e$B@VAIK'\e(B \e$B$"$+$9$[$&\e(B 7.5R4.0/14.0 FLIM-FLAM 1.8.0
- 8 \e$B6d<k\e(B \e$B$.$s$7$e\e(B 5.0R4.5/13.0 FLIM-FLAM 1.9.0
- 9 \e$B`O!9Hl\e(B \e$B$7$g$&$8$g$&$R\e(B 7.5R4.5/14.0 FLIM-FLAM 1.9.1
- 10 \e$B9HHl\e(B \e$B$Y$K$R\e(B 7.5R5.0/13.0 FLAM-DOODLE 1.9.0
- 11 \e$B2+C0\e(B \e$B$o$&$?$s\e(B 10R5.5/14.0 FLAM-DOODLE 1.9.1
- 12 \e$B??Hl\e(B \e$B$^$R\e(B 10R6.0/11.0
- 13 \e$(DT`\e(B \e$B$=$R\e(B 2.5YR7.0/11.0
- 14 \e$B3A\e(B \e$B$+$-\e(B 10R6.5/10.0
- 15 \e$B?<;Y;R\e(B \e$B$3$-$/$A$J$7\e(B 10YR7.5/8.0
- 16 \e$B4;;R\e(B \e$B$3$&$8\e(B 7.5YR7.0/11.0
- 17 \e$B5`MU\e(B \e$B$/$A$P\e(B 10YR7.5/10.0
- 18 \e$B@VGrFK\e(B \e$B$"$+$7$m$D$k$P$_\e(B 5.0YR8.0/6.0
- 19 \e$B>.F&\e(B \e$B$"$:$-\e(B 2.5R3.5/5.0
- 20 \e$BIrF:Cc\e(B \e$B$($S$A$c\e(B 5.0R4.0/11.0
- 21 \e$B??<k\e(B \e$B$7$s$7$e\e(B 2.5R4.5/10.0
- 22 \e$B[XHi\e(B \e$B$R$O$@\e(B 2.0YR3.5/4.0
- 23 \e$B%Y%s%,%i\e(B \e$B$Y$s$,$i\e(B 7.5R4.0/7.0
- 24 \e$BBel`\e(B \e$B$?$$$7$c\e(B 10R4.5/8.0
- 25 \e$B>GCc\e(B \e$B$3$2$A$c\e(B 10R3.0/2.0
- 26 \e$B7*Hi\e(B \e$B$/$j$+$O\e(B 10R3.0/4.0
- 27 \e$BFP\e(B \e$B$H$S\e(B 10R4.0/7.0
- 28 \e$B3w\e(B \e$B$+$P\e(B 10R4.0/5.0
- 29 \e$B2+H'@w\e(B \e$B$3$&$m$;$s\e(B 2.5Y5.0/4.0
- 30 \e$BCz;RCc\e(B \e$B$A$g$&$8$A$c\e(B 5.0YR4.0/4.0
- 31 \e$B<F\e(B \e$B$U$7\e(B 10YR4.0/4.0
- 32 \e$BCz;z\e(B \e$B$A$g$&$8\e(B 7.5YR6.0/6.0
- 33 \e$BDS2+\e(B \e$B$7$c$*$&\e(B 7.5YR5.5/6.0
- 34 \e$B%+!<%-!<\e(B \e$B$+!<$-!<\e(B 10YR6.0/7.0
- 35 \e$B7,\e(B \e$B$/$o\e(B 7.5YR6.0/5.0
- 36 \e$B2+FK\e(B \e$B$-$D$k$P$_\e(B 2.5Y6.5/7.0
- 37 \e$B9a\e(B \e$B$3$&\e(B 10YR7.5/6.0
- 38 \e$B2+EZ\e(B \e$B$*$&$I\e(B 10YR7.0/7.0
- 39 \e$B;3?a\e(B \e$B$d$^$V$-\e(B 3.5Y8.0/12.0
- 40 \e$BF#2+\e(B \e$B$H$&$*$&\e(B 3.0Y8.0/14.0
- 41 \e$B]56b\e(B \e$B$&$3$s\e(B 4.5Y8.0/12.0
- 42 \e$B4"0B\e(B \e$B$+$j$d$9\e(B 5.0Y8.0/10.0
- 43 \e$B2+\e(B[\e$Bi-\e(B/\e$BLZ\e(B] \e$B$-$O$@\e(B 4.5Y8.0/8.0
- 44 \e$B;Y;R\e(B \e$B$/$A$J$7\e(B 3.0Y8.0/7.0
- 45 \e$B6L;R\e(B \e$B$?$^$4\e(B 4.0Y8.0/8.0
- 46 \e$Bs4\e(B \e$B$R$o\e(B 10Y8.0/10.0
- 47 \e$Bs4K(2+\e(B \e$B$R$o$b$($.\e(B 5.0GY7.0/8.0
- 48 \e$Brt\e(B \e$B$&$0$$$9\e(B 7.5GY5.5/5.0
- 49 \e$BK(2+\e(B \e$B$b$($.\e(B 10GY5.5/9.0
- 50 \e$BNP\e(B \e$B$_$I$j\e(B 10GY4.0/6.0
- 51 \e$BNP@D\e(B \e$B$m$/$7$g$&\e(B 5.0G6.0/8.0
- 52 \e$BGrNP\e(B \e$B$S$c$/$m$/\e(B 2.5G8.0/2.0
- 53 \e$B>>MU\e(B \e$B$^$D$P\e(B 7.5G5.0/5.0
- 54 \e$B;3Mu@"\e(B \e$B$d$^$"$$$:$j\e(B 5.0BG/4.0/4.0
- 55 \e$B3$>>\e(B \e$B$_$k\e(B 2.5GY3.5/2.0
- 56 \e$BU;Cc\e(B \e$B$3$S$A$c\e(B 10Y4.0/2.0
- 57 \e$B@DGrFK\e(B \e$B$"$*$7$m$D$k$P$_\e(B 5.0GY7.5/3.0
- 58 \e$B2X;R:0\e(B \e$B$J$9$3$s\e(B 7.5PB/2.3/3.0
- 59 \e$B:0\e(B \e$B$3$s\e(B 7.5PB3.0/3.0
- 60 \e$BG<8M\e(B \e$B$J$s$I\e(B 5.0PB3.0/4.0
- 61 \e$B:0@D\e(B \e$B$3$s$8$g$&\e(B 8.5PB3.0/12.0
- 62 \e$BN0M~\e(B \e$B$k$j\e(B 7.5PB3.0/12.0
- 63 \e$B72@D\e(B \e$B$0$s$8$g$&\e(B 6.0PB3.5/12.0
- 64 \e$BGr72\e(B \e$B$S$c$/$0$s\e(B 7.5B6.0/4.0
- 65 \e$Be]\e(B \e$B$O$J$@\e(B 10B3.5/5.0
- 66 \e$B@u2+\e(B \e$B$"$5$.\e(B 10BG6.0/3.0
- 67 \e$BLG;g\e(B \e$B$a$C$7\e(B 5.0P2.5/4.0
- 68 \e$B?<;g\e(B \e$B$3$`$i$5$-\e(B 5.0P2.5/4.0
- 69 \e$BFsMu\e(B \e$B$U$?$"$$\e(B 5.0P4.0/3.0
- 70 \e$B;g\e(B \e$B$`$i$5$-\e(B 7.5P3.5/4.0
- 71 \e$BIrF:\e(B \e$B$($S\e(B 7.5P3.5/6.0
- 72 \e$B?<Hl\e(B \e$B$3$-$R\e(B 8.5R4.5/4.0
- 73 \e$B5K9<\e(B \e$B$-$-$g$&\e(B 10PB3.5/10
- 74 \e$BF#\e(B \e$B$U$8\e(B 7.5P5.0/8.0
- 75 \e$B24C0\e(B \e$B$\$?$s\e(B 5.0RP4.5/14
- 76 \e$BKO\e(B \e$B$9$_\e(B N1.5/0
- 77 \e$BKOFK\e(B \e$B$/$m$D$k$P$_\e(B 5.0YR3.0/0.5
- 78 \e$Bb%\e(B \e$B$/$j\e(B 2.5YR3.0/0.5
- 79 \e$BF_\e(B \e$B$K$S\e(B 7.5R4.0/0.5
- 80 \e$B@DF_\e(B \e$B$"$*$K$S\e(B 5.0B4.0/0.5
- 81 \e$BMx5WAM\e(B \e$B$j$-$e$&$M$:$_\e(B 5.0G4.5/0.5
- 82 \e$B3%\e(B \e$B$O$$\e(B 5.0GY5.0/0.5
+++ /dev/null
-;;; -*-Emacs-Lisp-*-
-
-;; FLIM-CFG: installation setting about FLIM.
-
-;;; Code:
-
-(defvar default-load-path load-path)
-
-(add-to-list 'load-path
- (expand-file-name "../../site-lisp/apel" data-directory))
-
-(if (boundp 'LISPDIR)
- (progn
- (add-to-list 'default-load-path LISPDIR)
- (add-to-list 'load-path LISPDIR)
- (add-to-list 'load-path (expand-file-name "apel" LISPDIR))
- ))
-
-(require 'install)
-
-(add-path default-directory)
-
-(or (fboundp 'write-region-as-binary)
- (error "Please install latest APEL 7.3 or later."))
-(or (fboundp 'insert-file-contents-as-binary)
- (error "Please install latest APEL 7.3 or later."))
-
-
-;;; @ Please specify prefix of install directory.
-;;;
-
-;; Please specify install path prefix.
-;; If it is omitted, shared directory (maybe /usr/local is used).
-(defvar PREFIX install-prefix)
-;;(setq PREFIX "~/")
-
-;; Please specify prefix for ``FLIM'' [optional]
-(setq FLIM_PREFIX "flim")
-
-\f
-
-;;; @ optional settings
-;;;
-
-;; It is generated by automatically. Please set variable `PREFIX'.
-;; If you don't like default directory tree, please set it.
-(defvar LISPDIR (install-detect-elisp-directory PREFIX))
-;; (setq install-default-elisp-directory "~/lib/emacs/lisp")
-
-(setq FLIM_DIR (expand-file-name FLIM_PREFIX LISPDIR))
-
-;;; FLIM-CFG ends here
+++ /dev/null
-;;; -*-Emacs-Lisp-*-
-
-;; FLIM-ELS: list of FLIM modules to install
-
-;;; Code:
-
-(setq flim-modules '(mime-def
- mel mel-dl mel-b mel-q mel-u mel-g
- closure
- natset
- digraph
- automata rx lex
- lr-driver
- ew-var
- ew-util
- ew-line
- ew-quote
- ew-unit
- ew-data
- ew-parse
- ew-scan-s
- ew-scan-m
- ew-scan-u
- ew-dec
- std11
- eword-decode eword-encode
- mime mime-parse mmbuffer mmcooked
- ;; mime-lib
- mailcap
- ))
-
-(if (fboundp 'dynamic-link)
- (setq flim-modules (cons 'mel-dl flim-modules))
- )
-
-;;; FLIM-ELS ends here
+++ /dev/null
-;;; -*-Emacs-Lisp-*-
-;;;
-;;; $Id: FLIM-MK,v 1.1 1998-04-13 13:08:14 morioka Exp $
-;;;
-
-(defun config-flim ()
- (let (prefix lisp-dir)
- (and (setq prefix (car command-line-args-left))
- (or (string-equal "NONE" prefix)
- (defvar PREFIX prefix)
- ))
- (setq command-line-args-left (cdr command-line-args-left))
- (and (setq lisp-dir (car command-line-args-left))
- (or (string-equal "NONE" lisp-dir)
- (defvar LISPDIR lisp-dir)
- ))
- (setq command-line-args-left (cdr command-line-args-left))
- (load-file "FLIM-CFG")
- (load-file "FLIM-ELS")
- (princ (format "PREFIX=%s
-LISPDIR=%s\n" PREFIX LISPDIR))
- ))
-
-(defun compile-flim ()
- (config-flim)
- (compile-elisp-modules flim-modules ".")
- )
-
-(defun install-flim ()
- (config-flim)
- (install-elisp-modules flim-modules "./" FLIM_DIR)
- )
-
-;;; FLIM-MK ends here
+++ /dev/null
-[FLIM Version names]
-
-1.0.0 -----
-
-;;-------------------------------------------------------------------------
-;; Kinki Nippon Railway \e$(B6a5&F|K\E4F;\e(B http://www.kintetsu.co.jp/
-;; Ky\e-Dòto\e-A Line \e$(B5~ET@~\e(B
-;;-------------------------------------------------------------------------
-1.0.1 Ky\e-Dòto\e-A \e$(B5~ET\e(B ; <=> JR, \e$(B5~ET;T8rDL6I\e(B
-1.1.0 T\e-Dòji\e-A \e$(BEl;{\e(B
-1.2.0 J\e-Dþjò\e-A \e$(B==>r\e(B
-1.2.1 Kamitobaguchi \e$(B>eD;1)8}\e(B
-1.2.2 Takeda \e$(BC]ED\e(B ; = \e$(B5~ET;T8rDL6I\e(B \e$(B1(4]@~\e(B
-1.3.0 Fushimi \e$(BIz8+\e(B
-1.4.0 Kintetsu-Tanbabashi \e$(B6aE4C0GH66\e(B ; <=> \e$(B5~:e\e(B \e$(BC0GH66\e(B
-1.4.1 Momoyama-Gory\e-Dòmae\e-A \e$(BEm;38fNMA0\e(B
-1.5.0 Mukaijima \e$(B8~Eg\e(B
-1.6.0 Ogura \e$(B>.AR\e(B
-1.7.0 Iseda \e$(B0K@*ED\e(B
-1.8.0 \e-DÃ’kubo\e-A \e$(BBg5WJ]\e(B
-1.8.1 Kutsukawa \e$(B5WDE@n\e(B
-1.9.0 Terada \e$(B;{ED\e(B
-
-
-[Chao Version names]
-
-;;-------------------------------------------------------------------------
-;; Kyoto Municipal Transfer Bureau
-;; \e$(B5~ET;T8rDL6I\e(B
-;; http://www.city.kyoto.jp/kotsu/main.htm
-;; Karasuma Line \e$(B1(4]@~\e(B
-;;-------------------------------------------------------------------------
-1.2.0 Takeda \e$(BC]ED\e(B ; = \e$(B6aE4\e(B \e$(B5~ET@~\e(B
-1.3.0 Kuinabashi \e$(B$/$$$J66\e(B
-1.4.0 J\e-Dþjò\e-A \e$(B==>r\e(B
-1.6.0 Kuj\e-Dò\e-A \e$(B6e>r\e(B
-1.6.1 Ky\e-Dòto\e-A \e$(B5~ET\e(B ; <=> JR, \e$(B6aE4\e(B
-1.7.0 Goj\e-Dò\e-A \e$(B8^>r\e(B
-1.8.0 Shij\e-Dò\e-A \e$(B;M>r\e(B
+++ /dev/null
-#
-# Makefile for FLIM.
-#
-
-PACKAGE = flim
-VERSION = 1.9.0
-
-TAR = tar
-RM = /bin/rm -f
-CP = /bin/cp -p
-
-EMACS = emacs
-FLAGS = -batch -q -no-site-file -l FLIM-MK
-
-PREFIX = NONE
-LISPDIR = NONE
-
-GOMI = *.elc
-FILES = README.?? Makefile FLIM-MK FLIM-CFG FLIM-ELS *.el ChangeLog
-
-
-elc: ew-parse.el
- $(EMACS) $(FLAGS) -f compile-flim $(PREFIX) $(LISPDIR)
-
-install: elc
- $(EMACS) $(FLAGS) -f install-flim $(PREFIX) $(LISPDIR)
-
-clean:
- -$(RM) $(GOMI)
- cd ../tl && make clean
-
-
-tar:
- cvs commit
- sh -c 'cvs tag -RF $(PACKAGE)-`echo $(VERSION) \
- | sed s/\\\\./_/ | sed s/\\\\./_/`; \
- cd /tmp; \
- cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
- export -d $(PACKAGE)-$(VERSION) \
- -r $(PACKAGE)-`echo $(VERSION) | sed s/\\\\./_/ | sed s/\\\\./_/` \
- flim'
- cd /tmp; $(RM) $(PACKAGE)-$(VERSION)/ftp.in ; \
- $(TAR) cvzf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION)
- cd /tmp; $(RM) -r $(PACKAGE)-$(VERSION)
- sed "s/VERSION/$(VERSION)/" < ftp.in > ftp
-
-release:
- -$(RM) /pub/GNU/elisp/apel/$(PACKAGE)-$(VERSION).tar.gz
- mv /tmp/$(PACKAGE)-$(VERSION).tar.gz /pub/GNU/elisp/flim/
- cd /pub/GNU/elisp/semi/ ; \
- ln -s ../flim/$(PACKAGE)-$(VERSION).tar.gz .
-
-ew-parse.el: ew-parse.scm lalr-el.scm
- -scm -f lalr-el.scm -f ew-parse.scm > ew-parse.out
+++ /dev/null
-[README for FLIM (English Version)]
-
-What's FLIM
-===========
-
- FLIM is a library to provide basic features about message
- representation or encoding. It consists of following
- modules:
-
- std11.el --- STD 11 (RFC 822) parser and utility
-
- mime.el --- MIME library
-
- mime-def.el --- Definitions about MIME format
-
- mime-parse.el --- MIME parser
-
- mel.el --- MIME encoder/decoder
- mel-dl.el --- base64 (b-encoding) encoder/decoder
- (for Emacs 20 with dynamic loading support)
- mel-b.el --- base64 (b-encoding) encoder/decoder
- (for other emacsen)
- mel-q.el --- quoted-printable and q-encoding encoder/decoder
- mel-u.el --- unofficial module for uuencode
- mel-g.el --- unofficial module for gzip64
-
- eword-decode.el --- encoded-word decoder
- eword-encode.el --- encoded-word encoder
-
- mailcap.el --- mailcap parser and utility
-
-
-Installation
-============
-
-(0) before installing it, please install APEL package. APEL package
- is available at:
-
- ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
-
-(1-a) run in expanded place
-
- If you don't want to install other directories, please do only
- following:
-
- % make
-
- You can specify the emacs command name, for example
-
- % make install EMACS=xemacs
-
- If `EMACS=...' is omitted, EMACS=emacs is used.
-
-(1-b) make install
-
- If you want to install other directories, please do following:
-
- % make install
-
- You can specify the emacs command name, for example
-
- % make install EMACS=xemacs
-
- If `EMACS=...' is omitted, EMACS=emacs is used.
-
- You can specify the prefix of the directory tree for Emacs Lisp
- programs and shell scripts, for example:
-
- % make install PREFIX=~/
-
- If `PREFIX=...' is omitted, the prefix of the directory tree of the
- specified emacs command is used (perhaps /usr/local).
-
- For example, if PREFIX=/usr/local and EMACS 19.34 is specified, it
- will create the following directory tree:
-
- /usr/local/share/emacs/site-lisp/flim/ --- FLIM
-
- You can specify site-lisp directory, for example
-
- % make install LISPDIR=~/share/emacs/lisp
-
- If `LISPDIR=...' is omitted, site-lisp directory of the specified
- emacs command is used (perhaps /usr/local/share/emacs/site-lisp or
- /usr/local/lib/xemacs/site-lisp).
-
- You can specify other optional settings by editing the file
- FLIM-CFG. Please read comments in it.
-
-
-load-path (for Emacs or MULE)
-=============================
-
- If you are using Emacs or Mule, please add directory of FLIM to
- load-path. If you install by default setting, you can write
- subdirs.el for example:
-
- --------------------------------------------------------------------
- (normal-top-level-add-to-load-path '("apel" "flim"))
- --------------------------------------------------------------------
-
- If you are using XEmacs, there are no need of setting about
- load-path.
-
-
-Bug reports
-===========
-
- If you write bug-reports and/or suggestions for improvement, please
- send them to the tm Mailing List:
-
- bug-tm-en@chamonix.jaist.ac.jp (English)
- bug-tm-ja@chamonix.jaist.ac.jp (Japanese)
-
- Via the tm ML, you can report FLIM bugs, obtain the latest release
- of FLIM, and discuss future enhancements to FLIM. To join the tm ML,
- send an empty e-mail to
-
- tm-en-help@chamonix.jaist.ac.jp (English)
- tm-ja-help@chamonix.jaist.ac.jp (Japanese)
+++ /dev/null
-;;; -*- mode: emacs-lisp; coding: iso-2022-7bit-ss2 -*-
-;----------------------------------------------------------------------------
-;-------- This sequece of HYPHEN-MINUS is 76 bytes long. --------------------
-;----------------------------------------------------------------------------
-
-;;; options:
-;;encode-sticked-comment-as-atom ; violate the policy preserving structures
-;;ignore-75bytes-limit ; violate RFC2047
-;;ignore-76bytes-limit ; violate RFC2047
-;;permit-sticked-comment ; violate RFC2047
-;;permit-sticked-special ; violate RFC2047
-;;separate-sticked-comment ; violate the policy preserving absence of space
-;;separate-sticked-special ; violate the policy preserving absence of space
-;;zero-characters-encoded-word-hack ; violate common sense (very tricky)
-;;embedded-encoded-word ; violate character sequence semantics
-;;separate-sticked-tokens-for-fold ; violate the policy preserving absence of space
-;;encode-long-ascii-string-for-fold ; violate the policy preserving US-ASCII string
-;;divide-atom-for-fold ; violate tne policy preserving absence of space
-
-;;; test driver
-
-;;; FLIM or FLAM
-'(progn
-(require 'mime)
-(require 'ew-line)
-
-(if (< max-specpdl-size 1000)
- (setq max-specpdl-size 1000))
-
-(defun decode-test (src dsts &rest opts)
- (setq src (ew-crlf-to-lf src))
- (setq eword-lexical-analyze-cache nil)
- (setq eword-decode-sticked-encoded-word
- (or (memq 'permit-sticked-comment opts)
- (memq 'permit-sticked-special opts)))
- (setq eword-decode-quoted-encoded-word nil)
- (with-temp-buffer
- (insert src "\n" mail-header-separator)
- (eword-decode-header 'us-ascii mail-header-separator)
- (goto-char (point-min))
- (std11-narrow-to-header mail-header-separator)
- (std11-field-end)
- (let ((result (std11-unfold-string
- (buffer-substring (point-min) (point)))))
- (if (member result dsts) t result))))
-
-(defun encode-test (src dsts &rest opts)
- (setq eword-lexical-analyze-cache nil)
- (setq eword-decode-sticked-encoded-word nil)
- (setq eword-decode-quoted-encoded-word nil)
- (with-temp-buffer
- (insert src "\n" mail-header-separator)
- (goto-char (point-min))
- (eword-encode-header 'us-ascii)
- (goto-char (point-min))
- (std11-narrow-to-header mail-header-separator)
- (std11-field-end)
- (let ((result (buffer-substring (point-min) (point))))
- (if (member result dsts) t result))))
-)
-
-;;; EW
-(progn
-(require 'ew-dec)
-(require 'ew-line)
-
-(defun decode-test (src dsts &rest opts)
- (setq ew-decode-field-cache-buf nil)
- (let ((ew-decode-sticked-encoded-word nil)
- (ew-decode-quoted-encoded-word nil)
- (ew-ignore-75bytes-limit (memq 'ignore-75bytes-limit opts))
- (ew-ignore-76bytes-limit (memq 'ignore-76bytes-limit opts))
- (ew-permit-sticked-comment (memq 'permit-sticked-comment opts))
- (ew-permit-sticked-special (memq 'permit-sticked-special opts)))
- (string-match "\\`[^:]*:" src)
- (let* ((field-name (substring src
- (match-beginning 0)
- (1- (match-end 0))))
- (field-body (substring src (match-end 0)))
- (result (ew-crlf-unfold
- (concat field-name ":"
- (ew-decode-field field-name field-body)))))
- (if (member result dsts) t result))))
-
-(defun encode-test (src dsts &rest opts)
- nil)
-)
-
-;;;
-
-(setq decode-succ-count 0)
-(setq decode-all-count 0)
-(defun decode (src dsts &rest opts)
- (if (stringp dsts) (setq dsts (list dsts)))
- (setq decode-all-count (1+ decode-all-count))
- (let ((res (condition-case nil
- (apply 'decode-test src dsts opts)
- (error nil))))
- (if (eq res t)
- (progn
- (setq decode-succ-count (1+ decode-succ-count))
- (insert "\n'dsucc"))
- (insert (format "\n%S\n'dfail" res)))
- res))
-
-(setq encode-succ-count 0)
-(setq encode-all-count 0)
-(defun encode (src dsts &rest opts)
- (if (stringp dsts) (setq dsts (list dsts)))
- (setq encode-all-count (1+ encode-all-count))
- (let ((res (condition-case nil
- (apply 'encode-test src dsts opts)
- (error nil))))
- (if (eq res t)
- (progn
- (setq encode-succ-count (1+ encode-succ-count))
- (insert "\n'esucc"))
- (insert (format "\n%S\n'efail" res)))
- res))
-
-(defun report ()
- (insert
- (format "\n\"Decode: %d/%d Encode: %d/%d Total: %d/%d\""
- decode-succ-count decode-all-count
- encode-succ-count encode-all-count
- (+ decode-succ-count encode-succ-count)
- (+ decode-all-count encode-all-count))))
-
-;;;start-test
-
-;;; Section 1: Decoding examples from RFC2047
-
-(decode
-"From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>"
-"From: Keith Moore <moore@cs.utk.edu>")
-
-(decode
-"To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>"
-"To: Keld J\e.A\eNxrn Simonsen <keld@dkuug.dk>")\e*B
-
-(decode
-"CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>"
-"CC: Andr\e.A\eNi Pirard <PIRARD@vm1.ulg.ac.be>")\e*B
-
-(decode
-"Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=\r
- =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?="
-"Subject: If you can read this you understand the example.")
-
-(decode
-"From: =?ISO-8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>"
-"From: Olle J\e.A\eNdrnefors <ojarnef@admin.kth.se>")\e*B
-
-(decode
-"From: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>"
-"From: Patrik F\e.A\eNdltstr\eNvm <paf@nada.kth.se>")\e*B
-
-(decode
-"From: Nathaniel Borenstein <nsb@thumper.bellcore.com>\r
-\t(=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)"
-"From: Nathaniel Borenstein <nsb@thumper.bellcore.com>\t(\e.H\eNm\eNe\eNl\eNy \eNo\eNa \eNi\eNl\eNh\eNt\eNp)")\e*B
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a?=)"
-"From: foo@bar.baz (a)")
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a?= b)"
-"From: foo@bar.baz (a b)")
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
-"From: foo@bar.baz (ab)")
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
-"From: foo@bar.baz (ab)")
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a?=\r
-\t=?ISO-8859-1?Q?b?=)"
-"From: foo@bar.baz (ab)")
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a_b?=)"
-"From: foo@bar.baz (a b)")
-
-(decode
-"From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
-"From: foo@bar.baz (a b)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a?=)"
-"Subject: (=?ISO-8859-1?Q?a?=)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a?= b)"
-"Subject: (=?ISO-8859-1?Q?a?= b)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a?=\r
-\t=?ISO-8859-1?Q?b?=)"
-"Subject: (=?ISO-8859-1?Q?a?=\t=?ISO-8859-1?Q?b?=)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a_b?=)"
-"Subject: (=?ISO-8859-1?Q?a_b?=)")
-
-(decode
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
-"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)")
-
-;;; Section 2: Decoding proper inputs.
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-"From: \e$B$"\e(B <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- <akr@jaist.ac.jp>"
-"From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- <akr@jaist.ac.jp>"
-"From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
-\t=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- <akr@jaist.ac.jp>"
-"From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"ja \\\"a\\\"\" <akr@jaist.ac.jp>"
-"From: \e$B$"\e(B \"ja \\\"a\\\"\" <akr@jaist.ac.jp>")
-
-(decode
-"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
-"From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)")
-
-(decode
-"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
-
-(decode
-"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
-"From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
-
-(decode
-"From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>"
-"From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>")
-
-(decode
-"From: \"\\\"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\\\"\\\\\" <akr@jaist.ac.jp>"
-"From: \"\\\"\\\\\" \e$B$"\e(B \"\\\"\\\\\" <akr@jaist.ac.jp>")
-
-(decode
-"From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>"
-"From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= <akr@jaist.ac.jp>"
-"From: \e$BAA\e(B <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>")
-
-(decode
-"From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)"
-"From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
-"From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>")
-
-(decode
-"From: =?US-ASCII?Q?=28?= <akr@jaist.ac.jp>, =?US-ASCII?Q?=29?= <akr@jaist.ac.jp>"
-"From: \"(\" <akr@jaist.ac.jp>, \")\" <akr@jaist.ac.jp>"
-'ignore-76bytes-limit)
-
-(decode
-"From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>"
-"From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: \e$B$"\e(B")
-
-(decode
-"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
-
-(decode
-"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
-"Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
-
-(decode
-"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
-
-(decode
-"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
-"Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
-
-(decode
-"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
-
-(decode
-"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
-"Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
-
-(decode
-"Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
-"Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:"
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:")
-
-(decode
-"Subject: =?ISO-2022-JP?B??="
-"Subject: =?ISO-2022-JP?B??=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a\r
- =?ISO-2022-JP?B?GyRCJCQbKEI=?="
-"Subject: \e$B$"\e(B a \e$B$$\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r
- =?US-ASCII?Q?____________________________________________________________?=\r
- =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?="
-"Subject: \e$B0$\e(B \e$BR_\e(B")
-
-(decode
-"From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>"
-"From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>")\e*B
-
-(decode
-"Subject: ?= =?"
-"Subject: ?= =?")
-
-(decode
-"Subject: \" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \""
-"Subject: \" \e$B$"\e(B \"")
-
-(decode
-"From: \"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\" <akr@jaist.ac.jp>"
-"From: \"\\\\\" \e$B$"\e(B \"\" <akr@jaist.ac.jp>")
-
-(decode
-"Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B_=1B$B$\"=1B(B?="
-"Subject: \e$B$"\e(B \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?="
-"Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?="
-"Subject: \e$B$"\e(B a \e.H\eN`")\e*B
-
-(decode
-"Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
-"Subject: \e.H\eN`\e$BNm\e(B")\e*B
-
-(decode
-"Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
-"Subject: \e.H\eN` \e$BNm\e(B")\e*B
-
-(decode
-"Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="
-"Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
-
-(decode
-"Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
-"Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
-
-(decode
-"Subject: =?Shift_JIS?B?gqA=?="
-"Subject: \e$B$"\e(B")
-
-(decode
-"Subject: =?EUC-JP?B?pKI=?="
-"Subject: \e$B$"\e(B")
-
-(decode
-"Subject: = =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: = \e$B$"\e(B")
-
-(decode
-"Subject: =? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =? \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP? \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B? \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? \e$B$"\e(B")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: \e$B$"$"\e(B")
-
-(decode
-"Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==")
-
-(decode
-"From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
-"From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-(decode
-"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
-"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test")
-
-(decode
-"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
-"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
-'permit-sticked-special)
-
-;;; Section 3: Decoding melancholic inputs.
-
-(decode
-"From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-"From:\e$B$"\e(B <akr@jaist.ac.jp>")
-
-(decode
-"From: akr@jaist.ac.jp\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
-"From: akr@jaist.ac.jp (\e$B$"\e(B\\a\e$B$$\e(B)")
-
-(decode
-"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
-
-(decode
-"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
-"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
-
-(decode
-"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-"From: (a)\e$B$"\e(B <akr@jaist.ac.jp>"
-'permit-sticked-comment)
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
-"From: \e$B$"\e(B(b) <akr@jaist.ac.jp>"
-'permit-sticked-comment)
-
-(decode
-"From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
-"From: (a)\e$B$"\e(B(b) <akr@jaist.ac.jp>"
-'permit-sticked-comment)
-
-(decode
-"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
-
-(decode
-"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
-"From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
- <akr@jaist.ac.jp>"
-"From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
-'permit-sticked-comment)
-
-(decode
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
-
-(decode
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-"To: \e$B$"\e(B<akr@jaist.ac.jp>"
-'permit-sticked-special)
-
-(decode
-"To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-"To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
-
-(decode
-"To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-"To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
-'permit-sticked-special)
-
-(decode
-"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
-
-(decode
-"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-"To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
-'permit-sticked-special)
-
-(decode
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;")
-
-(decode
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
-"To: \e$B$"\e(B:akr@jaist.ac.jp;"
-'permit-sticked-special)
-
-(decode
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;")
-
-(decode
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
-"To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
-'ignore-76bytes-limit 'permit-sticked-special)
-
-(decode
-"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>"
-"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>")
-
-(decode
-"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>"
-"To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
-'ignore-76bytes-limit 'permit-sticked-special)
-
-(decode
-"Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject:\e$B$"\e(B")
-
-;;; Section 4: Decoding invalid inputs.
-
-(decode
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= <akr@jaist.ac.jp>")
-
-(decode
-"From: akr@jaist.ac.jp\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
-"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)")
-
-(decode
-"From: akr@jaist.ac.jp\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
-"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)")
-
-(decode
-"From: akr@jaist.ac.jp\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
-"From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
-'ignore-76bytes-limit)
-
-(decode
-"Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?="
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?="
-"Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=")
-
-(decode
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
-"Subject: \e$B$"\e(B=?=\e$B$"\e(B")
-
-;;; Section 5: Encoding proper inputs.
-
-(encode
-"From: \e$B$"\e(B <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
-
-(encode
-"From: \e$B$"$$\e(B <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= <akr@jaist.ac.jp>")
-
-(encode
-"From: \e$B$"\e(B \e$B$$\e(B <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEIgGyRCJCQbKEI=?= <akr@jaist.ac.jp>")
-
-(encode
-"From: \e.A\eN! \eN! <akr@jaist.ac.jp>"\e*B
-"From: =?ISO-8859-1?Q?=A1_=A1?= <akr@jaist.ac.jp>")
-
-(encode
-"From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>")
-
-(encode
-"From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>")
-
-(encode
-"Subject: \e$B0$\e(B \e$BR_\e(B"
-"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r
- =?US-ASCII?Q?____________________________________________________________?=\r
- =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=")
-
-(encode
-"Subject: \e$B0$\e(B \e$BR_\e(B"
-"Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w=="
-'ignore-76bytes-limit 'ignore-75bytes-limit)
-
-(encode
-"From: \e.A\eN! <akr@jaist.ac.jp>"\e*B
-"From: =?ISO-8859-1?Q?=A1?= <akr@jaist.ac.jp>")
-
-(encode
-"From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>"\e*B
-"From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>")
-
-(encode
-"From: akr@jaist.ac.jp (abcdefghijklmnopqrst\e.A\eN!\\(\\)\"\\\\)"\e*B
-"From: akr@jaist.ac.jp (=?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29\"=5C?=)")
-
-(encode
-"Subject: \e$B$"\e(B a \e.H\eN`"\e*B
-"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=")
-
-(encode
-"Subject: \e.H\eN`\e$BNm\e(B"\e*B
-"Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=")
-
-(encode
-"Subject: \e.H\eN` \e$BNm\e(B"\e*B
-'("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
- "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?="))
-
-(encode
-"Subject: \e.F\eNC\e$B4X?t\e(B"\e*B
-'("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
- "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="))
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaa (\e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-'("From: aaaaaaaaaaaaaaaaaaaaa
- (=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
- "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?=
- =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaa( \e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-'("From: aaaaaaaaaaaaaaaaaaaaa(
- =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
- "From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIbKEI=?=
- =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-'("From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=
- )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
- "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=
- =?ISO-2022-JP?B?GyRCJCQbKEI=?= )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B) aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)\r
- aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B \e$B$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?=\r
- =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa\r
- <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From:\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From:\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-'separate-sticked-tokens-for-fold)
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaa?=\r
- =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= <akr@jaist.ac.jp>"
-'encode-long-ascii-string-for-fold 'permit-sticked-special)
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- aaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-'divide-atom-for-fold)
-
-(encode
-"From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
-'("From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
- "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- <akr@jaist.ac.jp>")
-'ignore-76bytes-limit)
-
-(encode
-"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B)aa <akr@jaist.ac.jp>"
-"From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r
- =?US-ASCII?Q?a?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa <akr@jaist.ac.jp>"
-'encode-long-ascii-string-for-fold)
-
-(encode
-"From: \e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B)aa <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==?=\r
- =?US-ASCII?Q?aaaaaaaaaaaaaaa?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa"
-'encode-long-ascii-string-for-fold)
-
-(encode
-"From: (\e$B$"\e(B) <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) <akr@jaist.ac.jp>")
-
-(encode
-"From: ((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From: ((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From: (((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=)))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: ((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From: ((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=))))))))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From: (((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: ((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From:\r
- ((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From:\r
- ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From:\r
- ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From:\r
- ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
-"From:\r
- ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyhC?=((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: ()(\e$B$"\e(B)() <akr@jaist.ac.jp>"
-"From: ()(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)() <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()\r
- <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
-"From:\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()()()()\r
- <akr@jaist.ac.jp>")
-
-(encode
-"From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()()()()()()()()()\r
- <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
-"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()(=?ISO-2022-JP?B?GyhC?=\r
- =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()() <akr@jaist.ac.jp>"
-'zero-characters-encoded-word-hack)
-
-(encode
-"To: l@d (\e$B$"\e(B aaa)(\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-(encode
-"To: l@d (\e$B$"\e(B aaaa)(\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- aaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-(encode
-"To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-(encode
-"To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r
- =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
-'encode-long-ascii-string-for-fold)
-
-(encode
-"To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r
- =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=()=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
-'encode-long-ascii-string-for-fold)
-
-(encode
-"To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \e$B$"\e(B)(\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-(encode
-"To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \e$B$"\e(B)(\e$B$"\e(B)"
-"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
- =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
-
-;----------------------------------------------------------------------------
-
-;;; Section 6: Encoding melancholic inputs.
-
-(encode
-"From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
-"From: akr@jaist.ac.jp\r
- (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
-'ignore-76bytes-limit)
-
-(encode
-"From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
-"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
-'zero-characters-encoded-word-hack)
-
-(encode
-"From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
-'encode-sticked-comment-as-atom)
-
-(encode
-"From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
- <akr@jaist.ac.jp>"
-'permit-sticked-comment)
-
-(encode
-"From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
-"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
- <akr@jaist.ac.jp>"
-'separate-sticked-comment)
-
-(encode
-"To: \e$B$"\e(B<akr@jaist.ac.jp>"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-'permit-sticked-special)
-
-(encode
-"To: \e$B$"\e(B<akr@jaist.ac.jp>"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-'separate-sticked-special)
-
-(encode
-"To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
-"To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-'permit-sticked-special)
-
-(encode
-"To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
-"To: <akr@jaist.ac.jp>, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-'separate-sticked-special)
-
-(encode
-"To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
-"To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
-'permit-sticked-special)
-
-(encode
-"To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
-"To: akr@jaist.ac.jp, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
-'separate-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:akr@jaist.ac.jp;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
-'permit-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:akr@jaist.ac.jp;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;"
-'separate-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
-'ignore-76bytes-limit 'permit-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=<akr@jaist.ac.jp>;"
-'zero-characters-encoded-word-hack 'permit-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- <akr@jaist.ac.jp>;"
-'separate-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
-"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>"
-'ignore-76bytes-limit 'permit-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=\r
- =?ISO-2022-JP?B?GyhC?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
-'zero-characters-encoded-word-hack 'permit-sticked-special)
-
-(encode
-"To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
-"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
- <foo@bar>, =?ISO-2022-JP?B?GyRCJCYbKEI=?= <foo@bar>;,\r
- =?ISO-2022-JP?B?GyRCJCgbKEI=?= <foo@bar>"
-'separate-sticked-special)
-
-;;; Section 7: Using embedded-encoded-words.
-;;
-;; embedded-encoded-word \e$BI=8=\e(B
-;;
-;; 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
-;; \e$B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#\e(B
-;;
-;; 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
-;; =?unknown-charset?known-encoding?some-encoded-text?=
-;; =?known-charset?unknown-encoding?some-encoded-text?=
-;; =?unknown-charset?unknown-encoding?some-encoded-text?=
-;;
-;; 2. \e$B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#\e(B
-;; 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
-;; \e$B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#\e(B
-;;
-;; \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
-;; \e$B$l$P$J$i$J$$$3$H$b$"$k!#\e(B
-;;
-;; =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?=
-;;
-;; \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
-;; encoded-word \e$B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#\e(B
-;; \e$B$3$3$G$OJ8;zNsCf$G$=$l$i$r3N<B$K6hJL$7$FI=8=$9$kJ}K!$r<($9!#\e(B
-;;
-;; rule 1: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
-;; \e$B%^%C%A$7$J$$ItJ,$O$=$NItJ,$N$^$^$NFbMF$rI=$9!#\e(B
-;;
-;; rule 2: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
-;; \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
-;; \e$B2r<a$rJQ$($k!#\e(B
-;;
-;; 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
-;; 1/3 \e$B$K$7$?J8;zNs\e(B
-;; 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
-;; 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
-;; \e$B%3!<%I$7$?J8;zNs!#\e(B
-;; 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
-;; 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
-;;
-;; =?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 =
-;; \e$B=E$J$k>l9g!"4q?tHVL\$N$b$N$KBP$7$F>e5-$N%k!<%k$rE,MQ$9$k!#\e(B
-;;
-;; NOTE: + \e$B$r\e(B embedded-encoded-word \e$BI=8=$N\e(B quote \e$BJ8;z$H8F$V!#\e(B
-;;
-;; 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
-;; \e$BEPO?$5$l$F$$$J$$$N$G!"$=$l$i$N\e(B charset \e$B$r;H$C$?\e(B
-;; 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
-;;
-;; =?US-ASCII?Q?abcdef?= \e$B$H$$$&\e(Bencoded-word : =?+US-ASCII?Q?abcdef?=
-;;
-;; =?US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B : =?US-ASCII?Q?abcdef?=
-;; =?+US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B : =?+++US-ASCII?Q?abcdef?=
-;; =?++US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B : =?++++++US-ASCII?Q?abcdef?=
-;; =?+++US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B : =?+++++++++US-ASCII?Q?abcdef?=
-;; =?US-ASCII+?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B : =?US-ASCII+?Q?abcdef?=
-;; =?U+S-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B : =?U+S-ASCII?Q?abcdef?=
-;;
-;; =?US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B : =?++US-ASCII?Q?abcdef?=
-;; =?+US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B : =?+++++US-ASCII?Q?abcdef?=
-;; =?++US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B : =?++++++++US-ASCII?Q?abcdef?=
-;; =?+++US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B : =?+++++++++++US-ASCII?Q?abcdef?=
-;;
-;; 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
-;; \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
-;; \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
-;;
-;; 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
-;; \e$B$H$O$J$$!#\e(B
-;;
-;; 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
-;; \e$BJ8;zNs$rC1=c$KO"7k$7$?J8;zNs$H$9$k!#\e(B
-;;
-;; 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
-;; encoded-word \e$B$O\e(B 75bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$H$+!"\e(B
-;; 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
-;; \e$B5,Ls$,$"$k$,!"\e(Bembedded-encoded-word \e$BI=8=$G$O$=$l$i$O:NMQ$7$J$$!#\e(B
-;; \e$BC1=c$K\e(B encoded-word \e$BFbIt$NJ8K!$@$1$rMxMQ$9$k!#\e(B
-;; (\e$BK\<AE*$K$O0[$J$kJ8K!$r:NMQ$9$k$3$H$b2DG=$G$"$k$,!"\e(BRFC2047 \e$B$K7I0U$r\e(B
-;; \e$BI=$7$F\e(B encoded-word \e$B$NJ8K!$r:NMQ$9$k!#\e(B)
-;;
-;; NOTE: embedded-encoded-word \e$BI=8=$7$?J8;zNs$NO"7k$O0BA4$G$O$J$$!#\e(B
-;; =?+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
-;; \e$B$=$l$>$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs\e(B
-;; =?+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
-;; \e$B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#\e(B
-;;
-;; \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
-;; \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
-;; embedded-encoded-word \e$BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#\e(B)
-
-(decode
-"Subject: =?Unknown-Charset?B?gqA=?="
-"Subject: =?+Unknown-Charset?B?gqA=?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?="
-"Subject: =?+US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?="
-"Subject: =?+US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?=\r
- =?ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?="
-"Subject: =?+ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?==?+ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?="
-"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?="
-"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?Unknown-Charset?B?gqA=?=\r
- =?Unknown-Charset?B?gqA=?="
-"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?Unknown-Charset?B?gqA=?=\r
-\t=?Unknown-Charset?B?gqA=?="
-"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
-'embedded-encoded-word)
-
-(decode
-"Subject: a=?Unknown-Charset?B?gqA=?="
-"Subject: a=?Unknown-Charset?B?gqA=?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?Unknown-Charset?B?gqA=?=b"
-"Subject: =?Unknown-Charset?B?gqA=?=b"
-'embedded-encoded-word)
-
-(decode
-"Subject: a=?Unknown-Charset?B?gqA=?=b"
-"Subject: a=?Unknown-Charset?B?gqA=?=b"
-'embedded-encoded-word)
-
-(decode
-"Subject: a =?Unknown-Charset?B?gqA=?= b"
-"Subject: a =?+Unknown-Charset?B?gqA=?= b"
-'embedded-encoded-word)
-
-(decode
-"Subject: =?ISO-2022-JP?B?DQoNCg==?="
-"Subject: =?+US-ASCII?Q?=0D=0A=0D=0A?="
-'embedded-encoded-word)
-
-(decode
-"Subject: =?US-ASCII?Q?a=0D=0A_b?="
-"Subject: a b"
-'embedded-encoded-word)
-
-(decode
-"Subject: =?US-ASCII?Q?a=0D=0Ab?="
-"Subject: a=?+US-ASCII?Q?=0D=0A?=b"
-'embedded-encoded-word)
-
-;;; Section 8: CR and LF.
-
-(decode
-"From: akr@jaist.ac.jp (\r\\\n)"
-"From: akr@jaist.ac.jp (\r\\\n)")
-
-(decode
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)"
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= a)")
-
-(decode
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)"
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)")
-
-(decode
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)"
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)")
-
-(decode
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )"
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )")
-
-(decode
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=\t)"
-"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=\t)")
-
-(decode
-"From: akr@jaist.ac.jp (\\\r\\\n)"
-"From: akr@jaist.ac.jp (\\\r\\\n)")
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)"
-"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)"
-'embedded-encoded-word)
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0Aa?=)"
-"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)"
-'embedded-encoded-word)
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A_?=)"
-"From: akr@jaist.ac.jp (\\ )")
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A=09?=)"
-"From: akr@jaist.ac.jp (\\\t)")
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= )"
-"From: akr@jaist.ac.jp (\\ )")
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\t)"
-"From: akr@jaist.ac.jp (\\\t)")
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r
- =?US-ASCII?Q?=0D=0A?= =?US-ASCII?Q?a?=)"
-"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A=0D=0A?=a)"
-'embedded-encoded-word)
-
-(decode
-"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r
- =?US-ASCII?Q?=0D?=\\\n =?US-ASCII?Q?a?=)"
-"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=\r\\
- a)"
-'embedded-encoded-word)
-
-;;;end-test
-
-(report)
-
-;----------------------------------------------------------------------------
+++ /dev/null
-
-(require 'digraph)
-(require 'natset)
-(provide 'automata)
-
-(defvar automata-never-fail (make-symbol "automata-never-fail"))
-(defvar automata-state-var (make-symbol "automata-state"))
-
-(defmacro automata (in-var start-tag &rest clauses)
- (let* ((org-len (length clauses))
- (org-graph (make-vector org-len nil))
- (tag-to-org-alist nil)
- forest org-to-forest forest-to-org
- i j tmp trans)
- (setq tmp clauses
- i 0)
- (while tmp
- (setq tag-to-org-alist (cons (cons (caar tmp) i) tag-to-org-alist)
- i (1+ i)
- tmp (cdr tmp)))
- (setq tmp clauses
- i 0)
- (while tmp
- (setq trans (cddr (cdar tmp)))
- (while trans
- (setq j (cdr (assoc (cadr (car trans)) tag-to-org-alist)))
- (if (not (member j (aref org-graph i)))
- (aset org-graph i (cons j (aref org-graph i))))
- (setq trans (cdr trans)))
- (setq i (1+ i)
- tmp (cdr tmp)))
- ;;(error "%s" org-graph)
- (setq tmp (digraph-split-as-forest org-graph)
- forest (aref tmp 0)
- org-to-forest (aref tmp 1)
- forest-to-org (aref tmp 2))
- (setq clauses
- (mapcar
- (lambda (c)
- (let ((tag (car c))
- (action (cadr c))
- (fail (nth 2 c))
- (trs (nthcdr 3 c)))
- (setq trs
- (mapcar
- (lambda (next)
- (list
- (apply
- 'natset-union
- (mapcar
- (lambda (tr) (if (equal (cadr tr) next) (car tr) (natset-empty)))
- trs))
- next))
- (natset-enum (apply 'natset-single (mapcar 'cadr trs)))))
- (cons tag (cons action (cons fail trs)))))
- clauses))
- `(let ((,automata-state-var ,(cdr (assoc start-tag tag-to-org-alist))))
- ,@(automata-exp-seq
- (automata-gen-state
- in-var clauses
- org-len
- (list (cdr (assoc start-tag tag-to-org-alist)))
- tag-to-org-alist
- (aref org-to-forest (cdr (assoc start-tag tag-to-org-alist)))
- forest org-to-forest forest-to-org)))))
-
-(defun automata-gen-state (in-var clauses
- org-len
- start-states
- tag-to-org-alist
- forest-state forest org-to-forest forest-to-org)
- (let* ((org-states (aref forest-to-org forest-state))
- (forest-states (digraph-descents forest forest-state))
- (branch-length (+ (length org-states) (length forest-states)))
- (branch-to-org
- (vconcat
- (mapcar 'list org-states)
- (mapcar (lambda (forest-state)
- (aref forest-to-org forest-state))
- forest-states)))
- (org-to-branch
- (let ((org-to-branch (make-vector org-len nil))
- (i 0) tmp)
- (while (< i branch-length)
- (setq tmp (aref branch-to-org i))
- (while tmp
- (aset org-to-branch (car tmp) i)
- (setq tmp (cdr tmp)))
- (setq i (1+ i)))
- org-to-branch))
- (branch-to-forest
- (vconcat
- (make-list (length org-states) nil)
- forest-states))
- (branch-state-range
- (vconcat
- (mapcar 'natset-single org-states)
- (mapcar (lambda (forest-state)
- (apply 'natset-single
- (aref forest-to-org forest-state)))
- forest-states)))
- (branch-descents
- (vconcat
- (mapcar (lambda (org-state)
- (let* ((c (nth org-state clauses))
- (trs (nthcdr 3 c)))
- (apply 'natset-union
- (mapcar (lambda (tr)
- (natset-single
- (cdr (assoc (cadr tr) tag-to-org-alist))))
- trs))))
- org-states)
- (mapcar (lambda (forest-state) ())
- forest-states)))
- (all-descents (apply 'natset-union (append branch-descents ())))
- (branch-ascents
- (let* ((branch-ascents (make-vector branch-length 0))
- (i 0) j)
- (while (< i branch-length)
- (setq j 0)
- (while (< j branch-length)
- (if (natset-has-intersection-p (aref branch-state-range i)
- (aref branch-descents j))
- (aset branch-ascents i
- (1+ (aref branch-ascents i))))
- (setq j (1+ j)))
- (setq i (1+ i)))
- branch-ascents))
- (start-inline nil)
- (branch-inline
- (let* ((branch-inline (make-vector branch-length nil))
- (start-ns (apply 'natset-single start-states))
- (i 0))
- (while (< i branch-length)
- (if (natset-has-intersection-p (aref branch-state-range i) start-ns)
- (if (and (= (length start-states) 1)
- (= (aref branch-ascents i) 0))
- (progn
- (setq start-inline i)
- (aset branch-inline i t))
- nil)
- (if (= (aref branch-ascents i) 1)
- (aset branch-inline i t)))
- (setq i (1+ i)))
- branch-inline))
- (branch-gen nil)
- (_
- (setq branch-gen
- (vconcat
- (mapcar
- (lambda (org-state)
- (cons
- (lambda (org-state)
- `(,(natset-single org-state)
- nil ; don't duplicate.
- ,@(let* ((c (nth org-state clauses)))
- (automata-exp-seq
- (nth 1 c) ; action
- (if (null (nthcdr 3 c))
- (nth 2 c)
- `(automata-branch
- ,in-var ; input variable
- ,(natset-full) ; input is unpredictable.
- ,(nth 2 c) ; fail action
- ,@(let ((trs (nthcdr 3 c)))
- (mapcar
- (lambda (next-branch)
- (let ((input-range
- (apply 'natset-union
- (mapcar
- (lambda (tr)
- (if (member (cdr (assoc (cadr tr) tag-to-org-alist))
- (aref branch-to-org next-branch))
- (car tr)
- (natset-empty)))
- trs))))
- `(,input-range ; input range
- ,(not (aref branch-inline next-branch)) ; duplicatable unless inlining.
- ,(let ((goto-list (apply
- 'append
- (mapcar
- (lambda (tr)
- (let ((range (natset-intersection (car tr) input-range)))
- (if range
- `((,range
- t
- (automata-goto
- ,automata-state-var
- ,org-state
- ,(cdr (assoc (cadr tr) tag-to-org-alist)))))
- ())))
- trs))))
- (if (= (length goto-list) 1)
- (car (cddr (car goto-list)))
- `(automata-branch
- ,in-var
- ,input-range
- ,automata-never-fail
- ,@goto-list)))
- ,@(if (aref branch-inline next-branch)
- (automata-exp-seq
- `(progn ,@(cddr (funcall (car (aref branch-gen next-branch))
- (cdr (aref branch-gen next-branch))))))
- ()))))
- (natset-enum
- (apply 'natset-union
- (mapcar
- (lambda (tr)
- (natset-single
- (aref org-to-branch
- (cdr (assoc (cadr tr) tag-to-org-alist)))))
- trs))))
- )))))))
- org-state))
- org-states)
- (mapcar
- (lambda (forest-state)
- (cons
- (lambda (forest-state)
- `(,(natset-intersection
- (apply 'natset-single (aref forest-to-org forest-state))
- all-descents) ; state range
- nil ; don't duplicate.
- ,@(automata-exp-seq
- (automata-gen-state
- in-var clauses
- org-len
- (aref forest-to-org forest-state)
- tag-to-org-alist
- forest-state forest org-to-forest forest-to-org))))
- forest-state))
- forest-states))))
- (branches
- (let* ((branches ())
- (i branch-length))
- (while (< 0 i)
- (setq i (1- i))
- (if (not (aref branch-inline i))
- (setq branches
- (cons
- (funcall (car (aref branch-gen i))
- (cdr (aref branch-gen i)))
- branches))))
- branches))
- )
- ;;(error "err")
- (if start-inline
- (apply
- 'automata-seq-exp
- `(progn ,@(cddr (funcall (car (aref branch-gen start-inline))
- (cdr (aref branch-gen start-inline)))))
- (cond
- ((null branches) ())
- ((null (cdr branches))
- (cddr (car branches)))
- (t
- `((while t
- (automata-branch
- ,automata-state-var ,(natset-full) ,automata-never-fail
- ,@branches))))))
- (if (= (length branches) 1)
- `(while t ,@(cddr (car branches)))
- `(while t ; ,branch-inline ,branch-state-range ,branch-descents ,branch-ascents
- (automata-branch
- ,automata-state-var ,(natset-full) ,automata-never-fail
- ,@branches))))))
-
-(defun automata-seq-exp (&rest seq)
- (cond
- ((null seq) nil)
- ((null (cdr seq))
- (car seq))
- (t
- (setq seq
- (apply
- 'append
- (mapcar
- (lambda (exp) (if (and (consp exp) (eq (car exp) 'progn))
- (cdr exp)
- (list exp)))
- seq)))
- (let ((rseq (reverse seq)))
- (cons 'progn
- (apply
- 'append
- (apply
- 'append
- (mapcar
- (lambda (exp) (if (null exp) () (list exp)))
- (nreverse (cdr rseq))))
- (list (list (car rseq)))))))))
-
-(defun automata-exp-seq (&rest seq)
- (let ((exp (apply 'automata-seq-exp seq)))
- (if (and (consp exp) (eq (car exp) 'progn))
- (cdr exp)
- (list exp))))
-
-(defmacro automata-goto (var curr next)
- (if (eq curr next)
- nil
- `(setq ,var ,next)))
-
-(defmacro automata-branch (var range fail &rest clauses)
- (when (eq fail automata-never-fail)
- (setq range (natset-intersection
- (apply 'natset-union (mapcar 'car clauses))
- range)))
- (let ((len (length clauses))
- ns-list dup-list body-list tmp ns)
- (setq tmp clauses
- ns (natset-negate range))
- (while tmp
- (setq ns-list (cons (natset-sub (caar tmp) ns) ns-list)
- dup-list (cons (cadr (car tmp)) dup-list)
- body-list (cons (cddr (car tmp)) body-list)
- ns (natset-union ns (caar tmp))
- tmp (cdr tmp))
- (if (natset-empty-p (car ns-list))
- (setq ns-list (cdr ns-list)
- dup-list (cdr dup-list)
- body-list (cdr body-list))))
- (setq ns-list (nreverse ns-list)
- dup-list (nreverse dup-list)
- body-list (nreverse body-list))
- (automata-branch-i var range fail ns-list dup-list body-list)))
-
-(defun automata-branch-i (var range fail ns-list dup-list body-list)
- (cond
- ((null ns-list) fail)
- ((null (cdr ns-list))
- (if (natset-include-p (car ns-list) range)
- (apply 'automata-seq-exp (car body-list))
- `(if ,(natset-gen-pred-exp (car ns-list) var range)
- ,(apply 'automata-seq-exp (car body-list))
- ,fail)))
- (t
- (let (tmp tmpn tmpd cut)
- (setq tmpn ns-list
- cut (natset-empty))
- (while tmpn
- (setq cut (natset-union cut (natset-boundary-set (car tmpn)))
- tmpn (cdr tmpn)))
- (setq tmpn ns-list
- tmpd dup-list)
- (while tmpn
- (if (not (car tmpd))
- (setq tmp (natset-minmax (car tmpn))
- tmp (natset-sub tmp (natset-start-set tmp))
- cut (natset-sub cut tmp)))
- (setq tmpn (cdr tmpn)
- tmpd (cdr tmpd)))
- (setq cut (natset-sub cut (natset-boundary-set (natset-minmax range))))
- (if (null (setq cut (natset-enum cut)))
- `(if ,(natset-gen-pred-exp (car ns-list) var range)
- ,(apply 'automata-seq-exp (car body-list))
- ,(automata-branch-i var
- (natset-sub range (car ns-list))
- fail
- (cdr ns-list)
- (cdr dup-list)
- (cdr body-list)))
- (let* ((mid (nth (/ (length cut) 2) cut))
- (lower (natset-seg 0 (1- mid)))
- (higher (natset-seg mid))
- ns-list1 dup-list1 body-list1
- ns-list2 dup-list2 body-list2
- )
- (while ns-list
- (if (natset-has-intersection-p lower (car ns-list))
- (setq ns-list1 (cons (natset-intersection (car ns-list) lower) ns-list1)
- dup-list1 (cons (car dup-list) dup-list1)
- body-list1 (cons (car body-list) body-list1)))
- (if (natset-has-intersection-p higher (car ns-list))
- (setq ns-list2 (cons (natset-intersection (car ns-list) higher) ns-list2)
- dup-list2 (cons (car dup-list) dup-list2)
- body-list2 (cons (car body-list) body-list2)))
- (setq ns-list (cdr ns-list)
- dup-list (cdr dup-list)
- body-list (cdr body-list)))
- ;;(if (or (null ns-list1) (null ns-list2)) (error "divide fail"))
- `(if (< ,var ,mid)
- ,(automata-branch-i var
- (natset-intersection range lower)
- fail ns-list1 dup-list1 body-list1)
- ,(automata-branch-i var
- (natset-intersection range higher)
- fail ns-list2 dup-list2 body-list2))))))))
-
-
-'(
-(npp (macroexpand '
-(automata pc 0
- (1
- (progn
- (lex-match 1)
- (lex-scan-unibyte-save))
- (lex-fail))
- (5
- (progn
- (lex-match 2)
- (lex-scan-unibyte-save))
- (lex-fail))
- (4
- (progn
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((9 10) 5) ((32 33) 5))
- (2
- (progn
- (lex-match 3)
- (lex-scan-unibyte-save)
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((13 14) 2)
- ((0 9) 3) ((11 13) 3) ((14 32) 3) ((33) 3)
- ((10 11) 4))
- (3
- (progn
- (lex-match 3)
- (lex-scan-unibyte-save)
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((0 9) 3) ((10 11) 3) ((11 13) 3) ((14 32) 3) ((33) 3)
- ((13 14) 2)
- )
- (0
- (progn
- (lex-match 3)
- (lex-scan-unibyte-save)
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((0 9) 3) ((10 11) 3) ((11 13) 3) ((14 32) 3) ((33) 3)
- ((13 14) 2)
- ((9 10) 1) ((32 33) 1)))))
-
-(npp (macroexpand '
-(automata pc 0
- (0
- (progn
- (lex-match 3)
- (lex-scan-unibyte-save)
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((0 9) 3) ((10 11) 3) ((11 13) 3) ((14 32) 3) ((33) 3)
- ((13 14) 2)
- ((9 10) 1) ((32 33) 1))
- (1
- (progn
- (lex-match 1)
- (lex-scan-unibyte-save))
- (lex-fail))
- (2
- (progn
- (lex-match 3)
- (lex-scan-unibyte-save)
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((13 14) 2)
- ((0 9) 3) ((11 13) 3) ((14 32) 3) ((33) 3)
- ((10 11) 4))
- (3
- (progn
- (lex-match 3)
- (lex-scan-unibyte-save)
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((0 9) 3) ((10 11) 3) ((11 13) 3) ((14 32) 3) ((33) 3)
- ((13 14) 2)
- )
- (4
- (progn
- (lex-scan-unibyte-read pc))
- (lex-fail)
- ((9 10) 5) ((32 33) 5))
- (5
- (progn
- (lex-match 2)
- (lex-scan-unibyte-save))
- (lex-fail))
-)))
-
-(npp
-(automata-gen-state
-'pc
-'((0 (progn (lex-match 3) (lex-scan-unibyte-save) (lex-scan-unibyte-read pc)) (lex-fail) ((9 10 32 33) 1) ((13 14) 2) ((0 9 10 13 14 32 33) 3))
- (1 (progn (lex-match 1) (lex-scan-unibyte-save)) (lex-fail))
- (2 (progn (lex-match 3) (lex-scan-unibyte-save) (lex-scan-unibyte-read pc)) (lex-fail) ((13 14) 2) ((0 9 11 13 14 32 33) 3) ((10 11) 4))
- (3 (progn (lex-match 3) (lex-scan-unibyte-save) (lex-scan-unibyte-read pc)) (lex-fail) ((13 14) 2) ((0 9 10 13 14 32 33) 3))
- (4 (progn (lex-scan-unibyte-read pc)) (lex-fail) ((9 10 32 33) 5))
- (5 (progn (lex-match 2) (lex-scan-unibyte-save)) (lex-fail)))
-6
-'(0)
-'((5 . 5) (4 . 4) (3 . 3) (2 . 2) (1 . 1) (0 . 0))
-0
-[(4 1) (2) (3) nil nil]
-[0 4 1 1 2 3]
-[(0) (3 2) (4) (5) (1)]))
-)
\ No newline at end of file
+++ /dev/null
-(provide 'closure)
-
-;; closure is one of following forms.
-;; FUNCTION
-;; (WRAPPER FUNCTION FV1 . FVS)
-;; (PARTIAL-ARGS CLOSURE)
-
-(defmacro closure-make (fun &rest fvs)
- "Make a closure from a function FUN and free variables FVS.
-CAUTION: Do not assign to free variables."
- (if (null fvs)
- fun
- (let* ((funv (make-symbol "funv"))
- (args (make-symbol "args")))
- `(list
- (lambda (,funv ,args ,@fvs)
- (apply ,funv ,args))
- ,fun
- ,@fvs))))
-
-(defmacro closure-partial-call (clo &rest args)
- "Call partially."
- `(list (list ,@args) ,clo))
-
-(defun closure-call (clo &rest args)
- "Call closure."
- (while
- (and
- (not (functionp clo))
- (if (cddr clo)
- (progn
- (setq args (cons (cadr clo) (cons args (cddr clo)))
- clo (car clo))
- nil)
- t))
- (setq args (append (car clo) args)
- clo (cadr clo)))
- (apply clo args))
-
-(defun closure-compose (c1 c2)
- "Compose C1 and C2.
-
-If either C1 or C2 is nil, another one is returned.
-If C1 and C2 is non-nil, C1 must be closure with one argument."
- (cond
- ((null c1) c2)
- ((null c2) c1)
- (t
- (closure-make
- (lambda (&rest args)
- (closure-call c1 (apply 'closure-call c2 args)))
- c1 c2))))
-
-'(
-
-(setq c1 (let ((a 1)) (closure-make (lambda (b) (+ a b)) a)))
-(closure-call c1 2) ; => 3
-
-(let ((a 1)) (setq plus1 (closure-make (lambda (b) (+ a b)) a)))
-(let ((a 2)) (setq plus2 (closure-make (lambda (b) (+ a b)) a)))
-(setq plus3 (closure-compose plus1 plus2))
-(closure-call plus3 4) ; => 7
-
-(closure-call (closure-partial-call (closure-partial-call '+ 1 2 3) 4 5 6) 7 8 9) ;=> 45
-
-)
\ No newline at end of file
+++ /dev/null
-;;; directed graph package.
-(provide 'digraph)
-
-;; A directed graph is represented as vector of lists of integers.
-;; The number of nodes in the graph is length of the vector.
-;;
-;; i'th list of the vector contains j <=> there is the edge from i to j.
-
-(defalias 'digraph-descents 'aref)
-
-(defun digraph-split-as-dag (g)
- "Returns 3 element vector of follows.
-
-0. Directed acyclic graph generated by mergeing each strongly connected
-components in G as new nodes.
-
-1. Map from a node in g to a node in result.
-
-2. Map from a node in result to nodes in g."
- (let* ((old-len (length g))
- (new-to-olds (vconcat (digraph-tsort g)))
- (new-len (length new-to-olds))
- (old-to-new (make-vector old-len ()))
- (i 0)
- js res)
- (while (< i new-len)
- (setq js (aref new-to-olds i))
- (while js
- (aset old-to-new (car js) i)
- (setq js (cdr js)))
- (setq i (1+ i)))
- (setq i (1- new-len))
- (while (<= 0 i)
- (setq res (cons
- (digraph-list-uniq
- (apply
- 'nconc
- (mapcar
- (lambda (old)
- (apply
- 'nconc
- (mapcar
- (lambda (old)
- (if (= i (aref old-to-new old))
- ()
- (list (aref old-to-new old))))
- (aref g old))))
- (aref new-to-olds i))))
- res)
- i (1- i)))
- (vector
- (vconcat res)
- old-to-new
- new-to-olds)))
-
-(defun digraph-split-as-forest (g)
- "Returns 3 element vector of follows.
-
-0. Tree generated by merging nodes which have common descent node.
-
-1. Map from a node in g to a node in result.
-
-2. Map from a node in result to nodes in g."
- (let* ((tmp (digraph-split-as-dag g))
- (d (aref tmp 0))
- (g-to-d (aref tmp 1))
- (d-to-g (aref tmp 2))
- ;;(_ (error "%s" tmp))
- (tmp (digraph-dag-to-forest d))
- (f (aref tmp 0))
- (d-to-f (aref tmp 1))
- (f-to-d (aref tmp 2))
- old-indices
- new-indices
- i)
- (setq i (1- (length g)))
- (while (<= 0 i)
- (setq old-indices (cons i old-indices)
- i (1- i)))
- (setq i (1- (length f)))
- (while (<= 0 i)
- (setq new-indices (cons i new-indices)
- i (1- i)))
- (vector
- f
- (vconcat
- (mapcar
- (lambda (gi) (aref d-to-f (aref g-to-d gi)))
- old-indices))
- (vconcat
- (mapcar
- (lambda (fi)
- (apply
- 'nconc
- (mapcar
- (lambda (di) (aref d-to-g di))
- (aref f-to-d fi))))
- new-indices)))))
-
-(defun digraph-tsort (dep)
- "Sort nodes in a graph toporogicaly.
-
-DEP is a vector of lists of integers and
-digraph-tsort returns list of lists of integers.
-
-The graph has (length DEP) nodes.
-
-Dependency for i'th node is represented by i'th element of DEP.
-If (aref DEP i) is a list (j1 j2 ... jn), it represents that i'th node
-depends to j1, j2, ... and jn'th nodes of the graph.
-
-A result of digraph-tsort is a sequence of sets of indexes for each
-strongly connected nodes ordered by indepenedent to dependent as list
-of lists of integers.
-
-If (nth n result) contains an integer i, it represents the fact as
-follows.
-
-1. For all j in (nth n result) and j != i, i'th node depends to j'th
-node and vice versa.
-
-2. For all m < n and j in (nth m result), i'th nodes does not depend
-to j'th node."
- (let* ((len (length dep))
- (ord (make-vector len nil))
- (i 0)
- (res ()))
- (while (< i len)
- (if (not (aref ord i))
- (setq res (nth 3 (digraph-tsort-visit dep len ord i 0 () res))))
- (setq i (1+ i)))
- res))
-
-(defun digraph-tsort-visit (dep len ord i id stk res)
- (aset ord i id)
- (let ((js (aref dep i))
- (m id)
- (nid (1+ id))
- (stk (cons i stk))
- (res res))
- (while js
- (let* ((j (car js)) (jo (aref ord j)))
- (if jo
- (setq m (if (< m jo) m jo))
- (let* ((tmp (digraph-tsort-visit dep len ord j nid stk res))
- (m0 (nth 0 tmp)))
- (setq m (if (< m m0) m m0)
- nid (nth 1 tmp)
- stk (nth 2 tmp)
- res (nth 3 tmp)))))
- (setq js (cdr js)))
- (if (= m id)
- (let* ((p (member i stk))
- (nstk (cdr p))
- (tmp stk))
- (setcdr p ())
- (while tmp
- (aset ord (car tmp) len)
- (setq tmp (cdr tmp)))
- (list m nid nstk (cons stk res)))
- (list m nid stk res))))
-
-(defun digraph-reverse (g)
- "Return graph with reversed edge."
- (let* ((len (length g))
- (rev (make-vector len nil))
- (i 0))
- (while (< i len)
- (let ((links (aref g i)))
- (while links
- (if (not (member i (aref rev (car links))))
- (aset rev (car links) (cons i (aref rev (car links)))))
- (setq links (cdr links))))
- (setq i (1+ i)))
- rev))
-
-(defun digraph-leaves (g)
- "Return list of leaves of G."
- (let* ((i (length g))
- (res ()))
- (while (< 0 i)
- (setq i (1- i))
- (if (null (aref g i))
- (setq res (cons i res))))
- res))
-
-(defun digraph-roots (g)
- "Return list of roots of G."
- (digraph-leaves (digraph-reverse g)))
-
-;;; forest
-
-(defun digraph-dag-to-forest (dag)
- "Convert a DAG(directed acyclic graph) to forest(set of trees)."
- (let* ((len (length dag))
- (rev (digraph-reverse dag))
- (forest (digraph-forest-make len))
- (i 0))
- (while (< i len)
- (digraph-dag-forest-add-node forest i (aref rev i))
- (setq i (1+ i)))
- ;;(error "%s" forest)
- (digraph-forest-to-graph forest)))
-
-(defun digraph-dag-forest-add-node (forest node links)
- (if (null links)
- (digraph-forest-add-tree forest node)
- (let ((parent (car links)))
- (setq links (cdr links))
- (digraph-forest-add-node forest parent node)
- (while links
- (digraph-forest-merge-node forest parent (car links))
- (setq links (cdr links)))))
- forest)
-
-;; forest = [last-tree-id node-merge-map node-parent-map]
-(defun digraph-forest-make (num)
- (vector 0 (make-vector num nil) (make-vector num nil)))
-(defsubst digraph-forest-merge-map (forest) (aref forest 1))
-(defsubst digraph-forest-parent-map (forest) (aref forest 2))
-
-(defun digraph-forest-add-tree (forest node)
- (aset (digraph-forest-parent-map forest)
- node
- (aset forest 0 (1- (aref forest 0)))))
-
-(defun digraph-forest-add-node (forest parent node)
- (aset (digraph-forest-parent-map forest) node parent))
-
-(defun digraph-forest-node-id (forest node)
- (let ((merge-map (digraph-forest-merge-map forest)) tmp)
- (while (setq tmp (aref merge-map node))
- (setq node tmp))
- node))
-
-(defun digraph-forest-tree-id (forest node)
- (setq node (digraph-forest-node-id forest node))
- (let ((parent-map (digraph-forest-parent-map forest))
- tmp)
- (while (<= 0 (setq tmp (aref parent-map node)))
- (setq node (digraph-forest-node-id forest tmp)))
- tmp))
-
-(defun digraph-forest-root-p (forest node)
- (setq node (digraph-forest-node-id forest node))
- (< (aref (digraph-forest-parent-map forest) node) 0))
-
-(defun digraph-forest-path-to-root (forest node)
- (setq node (digraph-forest-node-id forest node))
- (let ((parent-map (digraph-forest-parent-map forest))
- (path (list node)))
- (while (not (digraph-forest-root-p forest node))
- (setq node (digraph-forest-node-id forest (aref parent-map node))
- path (cons node path)))
- path))
-
-(defun digraph-forest-merge-node (forest n1 n2)
- (setq n1 (digraph-forest-node-id forest n1)
- n2 (digraph-forest-node-id forest n2))
- (let ((t1 (digraph-forest-tree-id forest n1))
- (t2 (digraph-forest-tree-id forest n2)))
- (if (= t1 t2)
- (let ((merge-map (digraph-forest-merge-map forest))
- (p1 (digraph-forest-path-to-root forest n1))
- (p2 (digraph-forest-path-to-root forest n2))
- top)
- (while (and p1 p2
- (= (car p1) (car p2)))
- (setq top (car p1)
- p1 (cdr p1)
- p2 (cdr p2)))
- (setq p1 (nreverse p1))
- (setq p2 (nreverse p2))
- (while (and p1 p2)
- (aset merge-map (car p2) (car p1))
- (setq p1 (cdr p1)
- p2 (cdr p2)))
- (if (or p1 p2)
- (let ((ns (nconc p1 p2)) n)
- (while ns
- (aset merge-map (car ns) top)
- (setq ns (cdr ns))))))
- (let ((merge-map (digraph-forest-merge-map forest))
- (parent-map (digraph-forest-parent-map forest)))
- (while (and (not (digraph-forest-root-p forest n1))
- (not (digraph-forest-root-p forest n2)))
- (aset merge-map n2 n1)
- (setq n1 (digraph-forest-node-id forest (aref parent-map n1))
- n2 (digraph-forest-node-id forest (aref parent-map n2))))
- (if (digraph-forest-root-p forest n2)
- (aset merge-map n2 n1)
- (aset merge-map n1 n2)))))
- forest)
-
-(defun digraph-forest-to-graph (forest)
- (let* ((merge-map (digraph-forest-merge-map forest))
- (parent-map (digraph-forest-parent-map forest))
- (old-len (length merge-map))
- (old-to-new (make-vector old-len nil))
- new-to-olds
- (new-len 0)
- (i 0)
- j
- graph
- )
- (while (< i old-len)
- (setq j (digraph-forest-node-id forest i))
- (if (aref old-to-new j)
- (aset old-to-new i (aref old-to-new j))
- (progn
- (aset old-to-new j new-len)
- (aset old-to-new i new-len)
- (setq new-len (1+ new-len))))
- (setq i (1+ i)))
- (setq new-to-olds (make-vector new-len nil)
- graph (make-vector new-len nil))
- (setq i (1- old-len))
- (while (<= 0 i)
- (setq j (aref old-to-new i))
- (aset new-to-olds j
- (cons i (aref new-to-olds j)))
- (setq i (1- i)))
- (setq i 0)
- (while (< i new-len)
- (setq j (aref parent-map (digraph-forest-node-id forest (car (aref new-to-olds i)))))
- (if (<= 0 j) (aset graph (aref old-to-new j)
- (cons i (aref graph (aref old-to-new j)))))
- (setq i (1+ i)))
- (vector graph old-to-new new-to-olds)))
-
-;;; utilities
-
-(defun digraph-list-uniq (il)
- (if (null il)
- ()
- (if (member (car il) (cdr il))
- (digraph-list-uniq (cdr il))
- (cons (car il) (digraph-list-uniq (cdr il))))))
-
-'(
-(digraph-split-as-forest [nil nil nil nil nil nil nil nil nil nil (10) nil nil (12) (13) (0 1 2 3 4 5 6 7 8 9 10 11 13 14)])
-[
- [(14 13 12 11 10 9 8 7 6 5 4 3 1) (2) nil nil nil nil nil nil nil nil nil nil nil nil nil]
- [14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0]
- [(15) (14) (13) (12) (11) (10) (9) (8) (7) (6) (5) (4) (3) (2) (1) (0)]]
-
-)
\ No newline at end of file
+++ /dev/null
-(require 'ew-var)
-(require 'ew-util)
-(provide 'ew-data)
-
-(defun ew-make-anchor (column str)
- (let ((anchor (make-symbol str)))
- (put anchor 'anchor anchor)
- (put anchor 'type 'ew:*anchor*)
- (put anchor 'prev-frag anchor)
- (put anchor 'next-frag anchor)
- (put anchor 'column column)
- (put anchor 'line-length 0)
- anchor))
-
-(defun ew-terminate (anchor)
- (let ((frag (get anchor 'prev-frag))
- (line-length (get anchor 'column)))
- (while (null (get frag 'line-length))
- (put frag 'line-length line-length)
- (setq frag (get frag 'prev-frag)))))
-
-(defsubst ew-add-frag (anchor start end type)
- (let ((frag (make-symbol (substring (symbol-name anchor) start end))))
- (put frag 'anchor anchor)
- (put frag 'type type)
- (put frag 'prev-frag (get anchor 'prev-frag))
- (put frag 'next-frag anchor)
- (put (get anchor 'prev-frag) 'next-frag frag)
- (put anchor 'prev-frag frag)
- (put frag 'decode (or (get type 'decode) 'ew-decode-none))
- (if (string-match "\r\n\\(.*\r\n\\)*" (symbol-name frag))
- (let ((prev-line-length (+ (get anchor 'column) (match-beginning 0)))
- (next-line-column (- (length (symbol-name frag)) (match-end 0)))
- (tmp frag))
- (while (null (get tmp 'line-length))
- (put tmp 'line-length prev-line-length)
- (setq tmp (get tmp 'prev-frag)))
- (put anchor 'column next-line-column))
- (put anchor 'column (+ (get anchor 'column) (length (symbol-name frag)))))
- frag))
-
-;;; listup
-
-(defun ew-frag-list (anchor)
- (let ((res ())
- (tmp (get anchor 'prev-frag)))
- (while (not (eq anchor tmp))
- (setq res (cons tmp res)
- tmp (get tmp 'prev-frag)))
- res))
-
-(defun ew-pair-list (anchor)
- (mapcar
- (lambda (frag)
- (cons (symbol-value (get frag 'type))
- frag))
- (ew-frag-list anchor)))
-
-(defun ew-separate-eword (frag1 frag2 targets)
- (while (not (eq frag1 frag2))
- (when (and (memq (get frag1 'type) targets)
- (string-match ew-encoded-word-regexp
- (symbol-name frag1))
- (or (< 0 (match-beginning 0))
- (< (match-end 0) (length (symbol-name frag1)))))
- (let ((atom (symbol-name frag1))
- (start (match-end 0))
- result
- frag)
- (when (< 0 (match-beginning 0))
- (setq frag (make-symbol (substring atom 0 (match-beginning 0)))
- result (ew-rcons* result frag)))
- (setq frag (make-symbol (substring atom (match-beginning 0) (match-end 0)))
- result (ew-rcons* result frag))
- (when (cdr result)
- (put frag 'prev-frag (cadr result))
- (put (cadr result) 'next-frag frag)
- (setq frag (cadr result)))
- (put frag 'prev-frag (get frag1 'prev-frag))
- (put (get frag1 'prev-frag) 'next-frag frag)
- (while (string-match ew-encoded-word-regexp atom start)
- (when (< start (match-beginning 0))
- (setq frag (make-symbol (substring atom start (match-beginning 0)))
- result (ew-rcons* result frag))
- (put frag 'prev-frag (cadr result))
- (put (cadr result) 'next-frag frag))
- (setq frag (make-symbol (substring atom (match-beginning 0) (match-end 0)))
- result (ew-rcons* result frag)
- start (match-end 0))
- (put frag 'prev-frag (cadr result))
- (put (cadr result) 'next-frag frag))
- (when (< start (length (symbol-name frag1)))
- (setq frag (make-symbol (substring atom start))
- result (ew-rcons* result frag))
- (put frag 'prev-frag (cadr result))
- (put (cadr result) 'next-frag frag))
- (setq frag (car result))
- (put frag 'next-frag (get frag1 'next-frag))
- (put (get frag1 'next-frag) 'prev-frag frag)
- (while result
- (setq frag (car result)
- result (cdr result))
- (put frag 'anchor (get frag1 'anchor))
- (put frag 'type (get frag1 'type))
- (put frag 'decode (get frag1 'decode))
- (put frag 'line-length (get frag1 'line-length)))))
- (setq frag1 (get frag1 'next-frag))))
-
-;;; phrase marking
-
-(defun ew-mark-phrase (frag1 frag2)
- (when ew-decode-sticked-encoded-word
- (ew-separate-eword
- frag1 frag2
- (if ew-decode-quoted-encoded-word
- '(ew:atom
- ew:qs-texts)
- '(ew:atom)))
- (setq frag1 (get (get frag1 'prev-frag) 'next-frag)))
- (while (not (eq frag1 frag2))
- (setq frag2 (get frag2 'prev-frag))
- (unless (ew-comment-frag-p frag2)
- (put frag2 'decode 'ew-decode-phrase)))
- (while (not (ew-token-last-frag-p
- (setq frag2 (get frag2 'prev-frag))))
- (unless (ew-comment-frag-p frag2)
- (put frag2 'decode 'ew-decode-phrase))))
-
-;;; frag predicate
-
-(defun ew-token-last-frag-p (frag)
- (member (get frag 'type)
- '(ew:*anchor*
- ew:lt
- ew:gt
- ew:at
- ew:comma
- ew:semicolon
- ew:colon
- ew:dot
- ew:atom
- ew:qs-end
- ew:dl-end)))
-
-(defun ew-comment-frag-p (frag)
- (member (get frag 'type)
- '(ew:cm-begin
- ew:cm-end
- ew:cm-nested-begin
- ew:cm-nested-end
- ew:cm-texts
- ew:cm-wsp
- ew:cm-fold
- ew:cm-qfold
- ew:cm-qpair)))
-
-(defun ew-special-frag-p (frag)
- (member (get frag 'type)
- '(ew:lt
- ew:gt
- ew:at
- ew:comma
- ew:semicolon
- ew:colon
- ew:dot
- ew:qs-begin
- ew:qs-end
- ew:dl-begin
- ew:dl-end
- ew:cm-begin
- ew:cm-end)))
+++ /dev/null
-(require 'emu)
-(require 'ew-var)
-(require 'ew-unit)
-(require 'ew-scan-s)
-(require 'ew-scan-m)
-(require 'ew-scan-u)
-(require 'ew-parse)
-(provide 'ew-dec)
-
-(defvar ew-decode-field-cache-buf '())
-(defvar ew-decode-field-cache-num 300)
-
-(defun ew-decode-field (field-name field-body)
- "Decode MIME RFC2047 encoded-words in a field.
-FIELD-NAME is a name of the field such as \"To\", \"Subject\" etc. and
-used to selecting syntax of body of the field and deciding first
-column of body of the field.
-FIELD-BODY is a body of the field.
-
-If FIELD-BODY has multiple lines, each line is separated by CRLF as
-pure network representation. Also if the result has multiple lines,
-each line is separated by CRLF."
- (let* ((key (ew-cons* field-name field-body
- (ew-dynamic-options)))
- (tmp (assoc key ew-decode-field-cache-buf)))
- (if tmp
- (cdr tmp)
- (progn
- (setq tmp (nthcdr ew-decode-field-cache-num
- ew-decode-field-cache-buf))
- (if (cdr tmp)
- (progn
- (setcdr (cdr tmp) ew-decode-field-cache-buf)
- (setq ew-decode-field-cache-buf (cdr tmp))
- (setcdr tmp nil))
- (setq ew-decode-field-cache-buf
- (cons (cons nil nil)
- ew-decode-field-cache-buf)))
- (setcar (car ew-decode-field-cache-buf) key)
- (setcdr (car ew-decode-field-cache-buf)
- (ew-decode-field-no-cache
- field-name field-body))
- (cdar ew-decode-field-cache-buf)))))
-
-(defun ew-analyze-field-to-decode (field-name field-body)
- "Analyze FIELD-BODY to decode."
- (let ((tmp (assq (intern (downcase field-name)) ew-decode-field-syntax-alist))
- anchor)
- (if tmp
- (setq tmp (cdr tmp))
- (setq tmp ew-decode-field-default-syntax))
- (setq anchor (funcall (car tmp) (1+ (length field-name)) field-body))
- (put anchor 'field-name field-name)
- (put anchor 'scanner (car tmp))
- (put anchor 'marker (cdr tmp))
- anchor))
-
-(defun ew-decode-analyzed-field (anchor)
- "Decode analyzed field."
- (or (get anchor 'decoded)
- (let (tmp frag1 frag2 decode)
- (when ew-decode-sticked-encoded-word
- (ew-separate-eword
- (get anchor 'next-frag)
- anchor
- (if (eq (get anchor 'scanner) 'ew-scan-unibyte-unstructured)
- '(ew:us-texts)
- '(ew:cm-texts))))
- (when (get anchor 'marker)
- (ew-mark (get anchor 'marker) anchor))
- (setq frag1 (get anchor 'next-frag))
- (while (not (eq frag1 anchor))
- (setq decode (get frag1 'decode))
- (setq frag2 (get frag1 'next-frag))
- (while (and (not (eq frag2 anchor))
- (eq decode (get frag2 'decode)))
- (setq frag2 (get frag2 'next-frag)))
- (funcall decode anchor frag1 frag2)
- (setq frag1 frag2))
- (setq frag1 (get anchor 'prev-frag)
- tmp ())
- (while (not (eq frag1 anchor))
- (setq tmp (cons (or (get frag1 'decoded) (symbol-name frag1)) tmp)
- frag1 (get frag1 'prev-frag)))
- (put anchor 'decoded (apply 'concat tmp)))))
-
-(defun ew-decode-field-no-cache (field-name field-body)
- "No caching version of ew-decode-field."
- (ew-decode-analyzed-field
- (ew-analyze-field-to-decode field-name field-body)))
-
-(defun ew-mark (tag anchor)
- (let ((tlist (cons (list (symbol-value tag)) (ew-pair-list anchor))))
- ;;(insert (format "%s" tlist))
- (ew-parse
- (lambda ()
- (if (null tlist)
- (cons 0 anchor)
- (prog1 (car tlist) (setq tlist (cdr tlist)))))
- (lambda (msg tok)
- (message "%s%s : %s" msg tok anchor)
- (when (< 0 ew-parse-error-sit-for-seconds)
- (sit-for ew-parse-error-sit-for-seconds))))))
-
-(defsubst ew-decode-us-ascii (str)
- (decode-mime-charset-string str ew-default-mime-charset 'LF))
-
-(defun ew-decode-none (anchor frag end)
- (while (not (eq frag end))
- (put frag 'decoded (ew-decode-us-ascii (symbol-name frag)))
- (setq frag (get frag 'next-frag))))
-
-(defsubst ew-proper-eword-p (frag)
- (and
- (or ew-ignore-75bytes-limit
- (<= (length (symbol-name frag)) 75))
- (or ew-ignore-76bytes-limit
- (<= (get frag 'line-length) 76))
- (cond
- ((eq (get frag 'type) 'ew:cm-texts)
- (ew-eword-p (symbol-name frag)))
- ((eq (get frag 'type) 'ew:qs-texts)
- (ew-eword-p (symbol-name frag)))
- ((eq (get frag 'type) 'ew:atom)
- (and
- (or ew-permit-sticked-comment
- (and
- (not (ew-comment-frag-p (get frag 'prev-frag)))
- (not (ew-comment-frag-p (get frag 'next-frag)))))
- (or ew-permit-sticked-special
- (and
- (or (ew-comment-frag-p (get frag 'prev-frag))
- (not (ew-special-frag-p (get frag 'prev-frag))))
- (or (ew-comment-frag-p (get frag 'next-frag))
- (not (ew-special-frag-p (get frag 'next-frag))))))
- (ew-eword-p (symbol-name frag))))
- ((eq (get frag 'type) 'ew:us-texts)
- (and
- (or ew-permit-sticked-special
- (not (ew-special-frag-p (get frag 'prev-frag))))
- (ew-eword-p (symbol-name frag))))
- (t
- nil))))
-
-(defun ew-decode-generic (anchor start end
- decode-ewords
- decode-others
- eword gap all)
- (let ((frag start) (start-others start) type f)
- (while (not (eq frag end))
- (setq type (get frag 'type))
- (cond
- ((and (memq type eword)
- (ew-proper-eword-p frag))
- (when (not (eq start-others frag))
- (funcall decode-others start-others frag))
- (let ((first frag) (ewords (list frag)))
- (while (progn
- (setq f (get frag 'next-frag))
- (while (and (not (eq f end))
- (memq (get f 'type) gap))
- (setq f (get f 'next-frag)))
- (and (not (eq f end))
- (ew-proper-eword-p f)))
- (setq frag (get frag 'next-frag))
- (while (not (eq frag f))
- (put frag 'decoded "")
- (setq frag (get frag 'next-frag)))
- (setq ewords (ew-rcons* ewords f)
- frag f))
- (funcall decode-ewords
- (nreverse ewords)))
- (setq start-others (get frag 'next-frag)))
- ((memq type all)
- nil)
- (t
- (error "unexpected token: %s (%s)" frag type)))
- (setq frag (get frag 'next-frag)))
- (when (not (eq start-others end))
- (funcall decode-others start-others end))))
-
-(defun ew-decode-generic-others (start end puncts quotes targets)
- (let ((frag start) (start-nonpunct start) type buff tmp)
- (while (not (eq frag end))
- (setq type (get frag 'type))
- (cond
- ((memq type puncts)
- (when buff
- (setq buff (apply 'concat (nreverse buff))
- tmp (ew-decode-us-ascii buff))
- (if (equal buff tmp)
- (while (not (eq start-nonpunct frag))
- (put start-nonpunct 'decoded (symbol-name start-nonpunct))
- (setq start-nonpunct (get start-nonpunct 'next-frag)))
- (progn
- (put start-nonpunct 'decoded tmp)
- (setq start-nonpunct (get start-nonpunct 'next-frag))
- (while (not (eq start-nonpunct frag))
- (put start-nonpunct 'decoded "")
- (setq start-nonpunct (get start-nonpunct 'next-frag)))))
- (setq buff ()))
- (put frag 'decoded (symbol-name frag))
- (setq start-nonpunct (get frag 'next-frag)))
- ((memq type quotes)
- (setq buff (ew-rcons* buff
- (substring (symbol-name frag) 1))))
- ((memq type targets)
- (setq buff (ew-rcons* buff
- (symbol-name frag))))
- (t (error "something wrong: unexpected token: %s (%s)" frag type)))
- (setq frag (get frag 'next-frag)))
- (when buff
- (setq buff (apply 'concat (nreverse buff))
- tmp (ew-decode-us-ascii buff))
- (if (equal buff tmp)
- (while (not (eq start-nonpunct frag))
- (put start-nonpunct 'decoded (symbol-name start-nonpunct))
- (setq start-nonpunct (get start-nonpunct 'next-frag)))
- (progn
- (put start-nonpunct 'decoded tmp)
- (setq start-nonpunct (get start-nonpunct 'next-frag))
- (while (not (eq start-nonpunct frag))
- (put start-nonpunct 'decoded "")
- (setq start-nonpunct (get start-nonpunct 'next-frag))))))))
-
-(defun ew-decode-unstructured-ewords (ewords)
- (while ewords
- (put (car ewords)
- 'decoded
- (list (ew-decode-eword (symbol-name (car ewords)))))
- (setq ewords (cdr ewords))))
-
-(defun ew-decode-unstructured-others (start end)
- (let (strs)
- (while (not (eq start end))
- (put start 'decoded "")
- (setq strs (ew-rcons* strs
- (symbol-name start))
- start (get start 'next-frag)))
- (put (get end 'prev-frag)
- 'decoded
- (ew-decode-us-ascii
- (apply 'concat (nreverse strs))))))
-
-(defun ew-decode-unstructured (anchor start end)
- (ew-decode-generic
- anchor start end
- 'ew-decode-unstructured-ewords
- 'ew-decode-unstructured-others
- '(ew:us-texts)
- '(ew:us-wsp
- ew:us-fold)
- '(ew:us-texts
- ew:us-wsp
- ew:us-fold))
- (let ((frag end) tmp)
- (while (not (eq frag start))
- (setq frag (get frag 'prev-frag)
- tmp (cons (get frag 'decoded) tmp))
- (put frag 'decoded ""))
- (put start 'decoded (ew-encode-crlf (apply 'ew-quote-concat tmp)))))
-
-(defun ew-decode-phrase-ewords (ewords)
- (let* ((qs (eq (get (car ewords) 'type) 'ew:qs-texts))
- (regexp (if qs "[\\\\\\\"]" "[][()<>@,;:\\\\\\\".\000-\037]"))
- has-dangerous-char
- tmp decoded)
- (setq tmp ewords)
- (while tmp
- (put (car tmp)
- 'decoded
- (list (setq decoded (ew-decode-eword (symbol-name (car tmp))))))
- (setq tmp (cdr tmp)
- has-dangerous-char (or has-dangerous-char
- (string-match regexp decoded))))
- (when has-dangerous-char
- (setq tmp ewords)
- (while tmp
- (setq decoded (get (car tmp) 'decoded))
- (setcar decoded (ew-embed-in-quoted-string (car decoded)))
- (setq tmp (cdr tmp)))
- (when (not qs)
- (setq decoded (get (car ewords) 'decoded))
- (setcar decoded (concat "\"" (car decoded)))
- (setq decoded (get (car (last ewords)) 'decoded))
- (setcar decoded (concat (car decoded) "\""))))))
-
-(defun ew-decode-phrase-others (start end)
- (ew-decode-generic-others
- start end
- '(ew:qs-begin
- ew:qs-end)
- '(ew:qs-qfold
- ew:qs-qpair)
- '(ew:atom
- ew:wsp
- ew:fold
- ew:qs-texts
- ew:qs-wsp
- ew:qs-fold)))
-
-(defmacro ew-rotate (var val len)
- (let ((tmp (make-symbol "tmp")))
- `(let ((,tmp (nthcdr ,(- len 2) ,var)))
- (if (cdr ,tmp)
- (progn
- (setcdr (cdr ,tmp) ,var)
- (setq ,var (cdr ,tmp))
- (setcdr ,tmp nil))
- (setq ,var (cons nil ,var)))
- (setcar ,var ,val))))
-
-(defun ew-decode-phrase (anchor start end)
- (ew-decode-generic
- anchor start end
- 'ew-decode-phrase-ewords
- 'ew-decode-phrase-others
- (if ew-decode-quoted-encoded-word
- '(ew:atom ew:qs-texts)
- '(ew:atom))
- '(ew:wsp
- ew:fold
- ew:qs-wsp
- ew:qs-fold)
- '(ew:atom
- ew:wsp
- ew:fold
- ew:qs-begin
- ew:qs-end
- ew:qs-texts
- ew:qs-wsp
- ew:qs-fold
- ew:qs-qfold
- ew:qs-qpair))
- (let ((frag start) decoded str len idx char
- chars frags
- tmp)
- (while (not (eq frag end))
- (setq decoded (get frag 'decoded)
- str (or (car-safe decoded) decoded)
- len (length str)
- idx 0)
- (while (< idx len)
- (setq char (sref str idx))
- (ew-rotate chars char 3)
- (ew-rotate frags frag 3)
- (when (and (not (memq char '(?\t ?\ )))
- (equal (cdr chars) '(?\n ?\r))
- (eq (get (setq tmp (nth 2 frags)) 'type) 'ew:qs-qpair)
- (eq (symbol-name tmp) (get tmp 'decoded)))
- (put tmp 'decoded "\r"))
- (setq idx (char-next-index char idx)))
- (setq frag (get frag 'next-frag)))
- (setq frag end
- tmp ())
- (while (not (eq frag start))
- (setq frag (get frag 'prev-frag)
- tmp (cons (get frag 'decoded) tmp))
- (put frag 'decoded ""))
- (put start 'decoded (ew-encode-crlf (apply 'ew-quote-concat tmp)))))
-
-(defun ew-decode-comment-ewords (ewords)
- (let* ((regexp "[()\\\\]")
- has-dangerous-char
- tmp decoded)
- (setq tmp ewords)
- (while tmp
- (put (car tmp)
- 'decoded
- (list (setq decoded (ew-decode-eword (symbol-name (car tmp))))))
- (setq tmp (cdr tmp)
- has-dangerous-char (or has-dangerous-char
- (string-match regexp decoded))))
- (when has-dangerous-char
- (setq tmp ewords)
- (while tmp
- (setq decoded (get (car tmp) 'decoded))
- (setcar decoded (ew-embed-in-comment (car decoded)))
- (setq tmp (cdr tmp))))))
-
-(defun ew-decode-comment-others (start end)
- (ew-decode-generic-others
- start end
- '()
- '(ew:cm-qfold
- ew:cm-qpair)
- '(ew:cm-texts
- ew:cm-wsp
- ew:cm-fold)))
-
-(defun ew-decode-comment (anchor start end)
- (ew-decode-generic
- anchor start end
- 'ew-decode-comment-ewords
- 'ew-decode-comment-others
- '(ew:cm-texts)
- '(ew:cm-wsp
- ew:cm-fold)
- '(ew:cm-texts
- ew:cm-wsp
- ew:cm-fold
- ew:cm-qfold
- ew:cm-qpair))
- (let ((frag start) decoded str len idx char
- chars frags tmp)
- (while (not (eq frag end))
- (setq decoded (get frag 'decoded)
- str (or (car-safe decoded) decoded)
- len (length str)
- idx 0)
- (while (< idx len)
- (setq char (sref str idx))
- (ew-rotate chars char 3)
- (ew-rotate frags frag 3)
- (when (and (not (memq char '(?\t ?\ )))
- (equal (cdr chars) '(?\n ?\r))
- (eq (get (setq tmp (nth 2 frags)) 'type) 'ew:cm-qpair)
- (eq (symbol-name tmp) (get tmp 'decoded)))
- (put tmp 'decoded "\r"))
- (setq idx (char-next-index char idx)))
- (setq frag (get frag 'next-frag)))
- (setq frag end
- tmp ())
- (while (not (eq frag start))
- (setq frag (get frag 'prev-frag)
- tmp (cons (get frag 'decoded) tmp))
- (put frag 'decoded ""))
- (put start 'decoded (ew-encode-crlf (apply 'ew-quote-concat tmp)))))
-
-;;;
-
-(defun ew-embed-in-phrase (str)
- (concat "\"" (ew-embed-in-quoted-string str) "\""))
-
-(defun ew-embed-in-quoted-string (str)
- (ew-quote-as-quoted-pair str '(?\\ ?\")))
-
-(defun ew-embed-in-comment (str)
- (ew-quote-as-quoted-pair str '(?\\ ?\( ?\))))
-
-(defun ew-quote-as-quoted-pair (str specials)
- (let ((i 0) (j 0) (l (length str)) result)
- (while (< j l)
- (when (member (aref str j) specials)
- (setq result (ew-rcons*
- result
- (substring str i j)
- "\\")
- i j))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-;;;
-
-(defun ew-contain-non-ascii-p (str)
- (not (eq (charsets-to-mime-charset (find-charset-string str)) 'us-ascii)))
-
-'(
-
-(ew-decode-field "To" " =?US-ASCII?Q?phrase?= <akr@jaist.ac.jp>")
-(ew-decode-field "To" " =?US-ASCII?Q?phrase?= < =?US-ASCII?Q?akr?= @jaist.ac.jp>")
-(ew-decode-field "To" " =?US-ASCII?Q?akr?= @jaist.ac.jp")
-(ew-decode-field "Subject" " =?ISO-2022-JP?B?GyRCJCIbKEI=?=")
-(ew-decode-field "Content-Type" " text/vnd.latex-z(=?US-ASCII?Q?What=3F?=);charset=ISO-2022-JP")
-
-(ew-decode-field "To" " =?US-ASCII?Q?A=22B=5CC?= <akr@jaist.ac.jp>")
-(let ((ew-decode-quoted-encoded-word t))
- (ew-decode-field "To" " \"=?US-ASCII?Q?A=22B=5CC?=\" <akr@jaist.ac.jp>"))
-
-(ew-decode-field "To" " akr@jaist.ac.jp (=?US-ASCII?Q?=28A=29B=5C?=)")
-
-(ew-decode-field "To" "\"A\\BC\e$B\\\"\\\\\e(B\" <foo@bar>")
-(ew-decode-field "To" "\"A\\BC\" <foo@bar>")
-(ew-decode-field "To" "\"\e\\$\\B\\$\\\"\e\\(\\B\" <foo@bar>")
-
-)
+++ /dev/null
-(require 'lex)
-(require 'ew-util)
-(provide 'ew-line)
-
-(put 'ew-crlf-line-generic 'lisp-indent-function 1)
-(put 'ew-crlf-line-convert 'lisp-indent-function 1)
-(put 'ew-lf-line-generic 'lisp-indent-function 1)
-(put 'ew-lf-line-convert 'lisp-indent-function 1)
-
-(defun ew-tab-to-space (str)
- (let ((i 0) (j 0) (l (length str)) result)
- (while (< j l)
- (when (equal (aref str j) ?\t)
- (setq result (ew-rcons*
- result
- (substring str i j)
- " ")
- i j))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-lf-to-crlf (str)
- (let ((i 0) (j 0) (l (length str)) result)
- (while (< j l)
- (when (equal (aref str j) ?\n)
- (setq result (ew-rcons*
- result
- (substring str i j)
- "\r")
- i j))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-crlf-to-lf (str)
- (let* ((i 0) (j 0) (l (length str)) (l- (1- l)) result)
- (while (< j l-)
- (when (and (equal (aref str j) ?\r)
- (equal (aref str (1+ j)) ?\n))
- (setq result (ew-rcons*
- result
- (substring str i j))
- j (1+ j)
- i j))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-lf-crlf-to-crlf (str)
- (let* ((i 0) (j 0) (l (length str)) (l- (1- l)) result)
- (while (< j l)
- (cond
- ((and (< j l-)
- (equal (aref str j) ?\r)
- (equal (aref str (1+ j)) ?\n))
- (setq j (1+ j)))
- ((equal (aref str j) ?\n)
- (setq result (ew-rcons*
- result
- (substring str i j)
- "\r")
- i j)))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-crlf-unfold (str)
- (let* ((i 0) (j 0) (l (length str)) (l- (- l 2)) result)
- (while (< j l-)
- (when (and (equal (aref str j) ?\r)
- (equal (aref str (1+ j)) ?\n)
- (member (aref str (+ j 2)) '(?\t ?\ )))
- (setq result (ew-rcons*
- result
- (substring str i j))
- j (+ j 2)
- i j))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-lf-unfold (str)
- (let* ((i 0) (j 0) (l (length str)) (l- (- l 1)) result)
- (while (< j l-)
- (when (and (equal (aref str j) ?\n)
- (member (aref str (+ j 1)) '(?\t ?\ )))
- (setq result (ew-rcons*
- result
- (substring str i j))
- j (+ j 1)
- i j))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-cut-generic (str chars)
- (let ((i 0) (j 0) (l (length str)) result)
- (while (< j l)
- (when (member (aref str j) chars)
- (setq result (ew-rcons*
- result
- (substring str i j))
- i (1+ j)))
- (setq j (1+ j)))
- (when (< i l)
- (setq result (ew-rcons*
- result
- (substring str i))))
- (apply 'concat (nreverse result))))
-
-(defun ew-cut-cr-lf (str) (ew-cut-generic str '(?\r ?\n)))
-(defun ew-cut-cr (str) (ew-cut-generic str '(?\r)))
-(defun ew-cut-lf (str) (ew-cut-generic str '(?\n)))
-
-(defmacro ew-crlf-generic-define ()
- (let ((str (make-symbol "str"))
- (others-fun (make-symbol "others-fun"))
- (fold-fun (make-symbol "fold-fun"))
- (nl-fun (make-symbol "nl-fun"))
- (cr-fun (make-symbol "cr-fun"))
- (lf-fun (make-symbol "lf-fun"))
- (p (make-symbol "p"))
- (q (make-symbol "q"))
- (r (make-symbol "r")))
- `(defun ew-crlf-generic
- (,str ,others-fun ,fold-fun ,nl-fun ,cr-fun ,lf-fun)
- (let ((,p 0) (,q (length ,str)) ,r)
- (while (< ,p ,q)
- (setq ,r ,p)
- (lex-scan-unibyte ,str ,p ,q
- ((+ [^ "\r\n"]) (when ,others-fun (funcall ,others-fun ,r ,p)))
- ((?\r ?\n [" \t"]) (when ,fold-fun (funcall ,fold-fun ,r ,p)))
- ((?\r ?\n) (when ,nl-fun (funcall ,nl-fun ,r ,p)))
- ((?\r) (when ,cr-fun (funcall ,cr-fun ,r ,p)))
- ((?\n) (when ,lf-fun (funcall ,lf-fun ,r ,p)))
- (() (error "something wrong"))))
- ,q))))
-(ew-crlf-generic-define)
-
-(defmacro ew-crlf-line-generic-define ()
- (let ((str (make-symbol "str"))
- (others-fun (make-symbol "others-fun"))
- (fold-fun (make-symbol "fold-fun"))
- (nl-fun (make-symbol "nl-fun"))
- (p (make-symbol "p"))
- (q (make-symbol "q"))
- (r (make-symbol "r")))
- `(defun ew-crlf-line-generic
- (,str ,others-fun ,fold-fun ,nl-fun)
- (let ((,p 0) (,q (length ,str)) ,r)
- (while (< ,p ,q)
- (setq ,r ,p)
- (lex-scan-unibyte ,str ,p ,q
- (() (error "something wrong"))
- (((* [^ "\r"])
- (* (+ ?\r) [^ "\r\n"] (* [^ "\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (and ,others-fun (< ,r (- ,p 3))) (funcall ,others-fun ,r (- ,p 3)))
- (when ,fold-fun (funcall ,fold-fun (- ,p 3) ,p)))
- (((* [^ "\r"])
- (* (+ ?\r) [^ "\r\n"] (* [^ "\r"]))
- (* ?\r)
- (?\r ?\n))
- (when (and ,others-fun (< ,r (- ,p 2))) (funcall ,others-fun ,r (- ,p 2)))
- (when ,nl-fun (funcall ,nl-fun (- ,p 2) ,p)))
- (((* [^ "\r"])
- (* (+ ?\r) [^ "\r\n"] (* [^ "\r"]))
- (* ?\r))
- (when ,others-fun (funcall ,others-fun ,r ,p)))))
- ,q))))
-(ew-crlf-line-generic-define)
-
-(defmacro ew-lf-generic-define ()
- (let ((str (make-symbol "str"))
- (others-fun (make-symbol "others-fun"))
- (fold-fun (make-symbol "fold-fun"))
- (nl-fun (make-symbol "nl-fun"))
- (cr-fun (make-symbol "cr-fun"))
- (p (make-symbol "p"))
- (q (make-symbol "q"))
- (r (make-symbol "r")))
- `(defun ew-lf-generic
- (,str ,others-fun ,fold-fun ,nl-fun ,cr-fun)
- (let ((,p 0) (,q (length ,str)) ,r)
- (while (< ,p ,q)
- (setq ,r ,p)
- (lex-scan-unibyte ,str ,p ,q
- ((+ [^ "\r\n"]) (when ,others-fun (funcall ,others-fun ,r ,p)))
- ((?\n [" \t"]) (when ,fold-fun (funcall ,fold-fun ,r ,p)))
- ((?\n) (when ,nl-fun (funcall ,nl-fun ,r ,p)))
- ((?\r) (when ,cr-fun (funcall ,cr-fun ,r ,p)))
- (() (error "something wrong"))))
- ,q))))
-(ew-lf-generic-define)
-
-(defmacro ew-lf-line-generic-define ()
- (let ((str (make-symbol "str"))
- (others-fun (make-symbol "others-fun"))
- (fold-fun (make-symbol "fold-fun"))
- (nl-fun (make-symbol "nl-fun"))
- (p (make-symbol "p"))
- (q (make-symbol "q"))
- (r (make-symbol "r")))
- `(defun ew-lf-line-generic
- (,str ,others-fun ,fold-fun ,nl-fun)
- (let ((,p 0) (,q (length ,str)) ,r)
- (while (< ,p ,q)
- (setq ,r ,p)
- (lex-scan-unibyte ,str ,p ,q
- (() (error "something wrong"))
- ((+ [^ "\n"])
- (when ,others-fun (funcall ,others-fun ,r ,p)))
- ((?\n [" \t"])
- (when ,fold-fun (funcall ,fold-fun ,r ,p)))
- (?\n
- (when ,nl-fun (funcall ,nl-fun ,r ,p)))))
- ,q))))
-(ew-lf-line-generic-define)
-
-(defmacro ew-generic-convert-define (name generic &rest funcs)
- (let ((str (make-symbol "str"))
- (funcs-vars (mapcar (lambda (func) (make-symbol (symbol-name func))) funcs))
- (index (make-symbol "index"))
- (result (make-symbol "result"))
- (tmp (make-symbol "tmp"))
- (start (make-symbol "starx"))
- (end (make-symbol "end")))
- `(defun ,name
- (,str ,@funcs-vars)
- (let ((,index 0) ,result ,tmp)
- (when (> (,generic
- ,str
- ,@(mapcar
- (lambda (fun)
- `(when ,fun
- (lambda (,start ,end)
- (setq ,tmp (funcall ,fun (substring ,str ,start ,end)))
- (when ,tmp
- (when (< ,index ,start)
- (setq ,result
- (ew-rcons* ,result
- (substring ,str ,index ,start))))
- (setq ,result (ew-rcons* ,result ,tmp)
- ,index ,end)))))
- funcs-vars))
- ,index)
- (setq ,result
- (ew-rcons* ,result
- (substring ,str ,index))))
- (apply 'concat (nreverse ,result))))))
-(ew-generic-convert-define ew-crlf-convert ew-crlf-generic others-fun fold-fun nl-fun cr-fun lf-fun)
-(ew-generic-convert-define ew-crlf-line-convert ew-crlf-line-generic others-fun fold-fun nl-fun)
-(ew-generic-convert-define ew-lf-convert ew-lf-generic others-fun fold-fun nl-fun cr-fun)
-(ew-generic-convert-define ew-lf-line-convert ew-lf-line-generic others-fun fold-fun nl-fun)
-
-(defmacro ew-fold-define (name convert nl)
- `(defun ,name (str start-column line-length)
- (let ((column start-column))
- (,convert str
- (lambda (line)
- (let ((start 0)
- (end (length line))
- result tmp fold width)
- (while (and (< start end)
- (progn
- (when (<= column 1)
- (setq tmp (sref line start)
- result (ew-rcons* result (char-to-string tmp))
- column (+ column (char-width tmp))
- start (char-next-index tmp start)))
- (string-match "[ \t]" line start)))
- (setq tmp (substring line start (match-beginning 0))
- width (string-width tmp)
- result (ew-rcons* result tmp)
- column (+ column width)
- start (match-beginning 0))
- (if (<= line-length column)
- (progn
- (when (and fold (not (= line-length column)))
- (setcdr fold (cons (car fold) (cdr fold)))
- (setcar fold ,nl)
- (setq column (+ width
- (if (eq (cdr result) fold)
- 0
- (string-width (cadr result))))))
- (if (<= line-length column)
- (setq result (ew-rcons* result ,nl)
- column 0
- fold nil)
- (setq fold result)))
- (setq fold result))
- (setq tmp (sref line (match-beginning 0))
- result (ew-rcons* result (char-to-string tmp))
- column (+ column (char-width tmp))
- start (match-end 0)))
- (when (< start end)
- (setq tmp (substring line start)
- result (ew-rcons* result tmp)
- column (+ column (string-width tmp))))
- (when (and (< line-length column) fold)
- (setcdr fold (cons (car fold) (cdr fold)))
- (setcar fold ,nl))
- (apply 'concat (nreverse result))))
- (lambda (fold) (setq column 1) nil)
- (lambda (nl) (setq column 0) nil)))))
-
-(ew-fold-define ew-crlf-fold ew-crlf-line-convert "\r\n")
-(ew-fold-define ew-lf-fold ew-crlf-line-convert "\n")
-
-(defun ew-crlf-refold (string start-column line-length)
- (ew-crlf-fold (ew-crlf-unfold string) start-column line-length))
-
-(defun ew-lf-refold (string start-column line-length)
- (ew-lf-fold (ew-lf-unfold string) start-column line-length))
+++ /dev/null
-; *** Header ***
-(provide 'ew-parse)
-(require 'ew-data)
-(require 'lr-driver)
-
-; *** Token Definitions ***
-(defconst ew:*eoi* 0)
-(defconst ew:*anchor* 1)
-(defconst ew:*err* 2)
-(defconst ew:tag-mailbox 3)
-(defconst ew:tag-mailbox* 4)
-(defconst ew:tag-mailbox+ 5)
-(defconst ew:tag-address* 6)
-(defconst ew:tag-address+ 7)
-(defconst ew:tag-phrase* 8)
-(defconst ew:tag-phrase-msg-id* 9)
-(defconst ew:lt 10)
-(defconst ew:gt 11)
-(defconst ew:at 12)
-(defconst ew:comma 13)
-(defconst ew:semicolon 14)
-(defconst ew:colon 15)
-(defconst ew:dot 16)
-(defconst ew:atom 17)
-(defconst ew:slash 18)
-(defconst ew:question 19)
-(defconst ew:equal 20)
-(defconst ew:token 21)
-(defconst ew:qs-begin 22)
-(defconst ew:qs-end 23)
-(defconst ew:qs-texts 24)
-(defconst ew:qs-wsp 25)
-(defconst ew:qs-fold 26)
-(defconst ew:qs-qfold 27)
-(defconst ew:qs-qpair 28)
-(defconst ew:dl-begin 29)
-(defconst ew:dl-end 30)
-(defconst ew:dl-texts 31)
-(defconst ew:dl-wsp 32)
-(defconst ew:dl-fold 33)
-(defconst ew:dl-qfold 34)
-(defconst ew:dl-qpair 35)
-(defconst ew:cm-begin 36)
-(defconst ew:cm-end 37)
-(defconst ew:cm-nested-begin 38)
-(defconst ew:cm-nested-end 39)
-(defconst ew:cm-texts 40)
-(defconst ew:cm-wsp 41)
-(defconst ew:cm-fold 42)
-(defconst ew:cm-qfold 43)
-(defconst ew:cm-qpair 44)
-(defconst ew:wsp 45)
-(defconst ew:fold 46)
-(defconst ew:us-texts 47)
-(defconst ew:us-wsp 48)
-(defconst ew:us-fold 49)
-
-(defconst ew:token-defs
- (list
- (cons 0 "*eoi*")
- (cons 1 "*anchor*")
- (cons 2 "*err*")
- (cons 3 "tag-mailbox")
- (cons 4 "tag-mailbox*")
- (cons 5 "tag-mailbox+")
- (cons 6 "tag-address*")
- (cons 7 "tag-address+")
- (cons 8 "tag-phrase*")
- (cons 9 "tag-phrase-msg-id*")
- (cons 10 "lt")
- (cons 11 "gt")
- (cons 12 "at")
- (cons 13 "comma")
- (cons 14 "semicolon")
- (cons 15 "colon")
- (cons 16 "dot")
- (cons 17 "atom")
- (cons 18 "slash")
- (cons 19 "question")
- (cons 20 "equal")
- (cons 21 "token")
- (cons 22 "qs-begin")
- (cons 23 "qs-end")
- (cons 24 "qs-texts")
- (cons 25 "qs-wsp")
- (cons 26 "qs-fold")
- (cons 27 "qs-qfold")
- (cons 28 "qs-qpair")
- (cons 29 "dl-begin")
- (cons 30 "dl-end")
- (cons 31 "dl-texts")
- (cons 32 "dl-wsp")
- (cons 33 "dl-fold")
- (cons 34 "dl-qfold")
- (cons 35 "dl-qpair")
- (cons 36 "cm-begin")
- (cons 37 "cm-end")
- (cons 38 "cm-nested-begin")
- (cons 39 "cm-nested-end")
- (cons 40 "cm-texts")
- (cons 41 "cm-wsp")
- (cons 42 "cm-fold")
- (cons 43 "cm-qfold")
- (cons 44 "cm-qpair")
- (cons 45 "wsp")
- (cons 46 "fold")
- (cons 47 "us-texts")
- (cons 48 "us-wsp")
- (cons 49 "us-fold")
- ))
-
-; *** Action Table ***
-(defconst ew:action-table
- [
- ((default . *error*) (3 . 7) (4 . 6) (5 . 5) (6 . 4) (7 . 3) (8 . 2) (9 . 1))
- ((default . -61))
- ((default . -61))
- ((default . -61))
- ((default . -61))
- ((default . -61))
- ((default . -61))
- ((default . -61))
- ((default . *error*) (0 . 16))
- ((default . -51) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . -53) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . *error*) (10 . 34) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . -9) (10 . 34) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . *error*) (10 . 34) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . -30) (10 . 34) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . *error*) (10 . 34) (17 . 21) (22 . 20) (36 . 19) (45 . 18) (46 . 17))
- ((default . -1) (0 . accept))
- ((default . -63))
- ((default . -62))
- ((default . -90))
- ((default . -76))
- ((default . -61))
- ((default . -64))
- ((default . -61))
- ((default . -48))
- ((default . -49))
- ((default . -8) (10 . 34))
- ((default . -57))
- ((default . -37))
- ((default . -36) (17 . 21) (22 . 20))
- ((default . -52))
- ((default . -54) (13 . 60))
- ((default . -7))
- ((default . -55))
- ((default . -61))
- ((default . -43) (12 . 63))
- ((default . -37) (16 . -25) (12 . -25))
- ((default . -29))
- ((default . *error*) (10 . 34) (15 . 68))
- ((default . -13))
- ((default . *error*) (12 . 63) (16 . 71))
- ((default . -14))
- ((default . -27))
- ((default . -11))
- ((default . -6) (13 . 60))
- ((default . -10) (13 . 60))
- ((default . -5))
- ((default . *error*) (10 . 34))
- ((default . -4) (13 . 60))
- ((default . -32))
- ((default . -31) (13 . 60))
- ((default . -3))
- ((default . -2))
- ((default . *error*) (37 . 83) (38 . 82) (39 . 81) (40 . 80) (41 . 79) (42 . 78) (43 . 77) (44 . 76))
- ((default . *error*) (23 . 89) (24 . 88) (25 . 87) (26 . 86) (27 . 85) (28 . 84))
- ((default . -74) (36 . 19) (45 . 18) (46 . 17))
- ((default . -72) (36 . 19) (45 . 18) (46 . 17))
- ((default . *error*) (17 . 21) (22 . 20))
- ((default . -51) (17 . 21) (22 . 20))
- ((default . -38))
- ((default . -61))
- ((default . *error*) (17 . 21) (22 . 20))
- ((default . -65) (36 . 19) (45 . 18) (46 . 17))
- ((default . -61))
- ((default . *error*) (17 . 21) (29 . 96))
- ((default . *error*) (17 . 21) (22 . 20))
- ((default . *error*) (13 . 60) (15 . 68))
- ((default . -44))
- ((default . -61))
- ((default . -30) (10 . 34) (17 . 21) (22 . 20))
- ((default . -28))
- ((default . -61))
- ((default . *error*) (17 . 21) (22 . 20))
- ((default . *error*) (17 . 21) (29 . 96))
- ((default . *error*) (10 . 34) (17 . 21) (22 . 20))
- ((default . *error*) (10 . 34) (17 . 21) (22 . 20))
- ((default . -97))
- ((default . -96))
- ((default . -95))
- ((default . -94))
- ((default . -93))
- ((default . -92))
- ((default . -91))
- ((default . -89))
- ((default . -81))
- ((default . -80))
- ((default . -79))
- ((default . -78))
- ((default . -77))
- ((default . -75))
- ((default . -25))
- ((default . *error*) (11 . 113))
- ((default . -58))
- ((default . -68) (36 . 19) (45 . 18) (46 . 17))
- ((default . -56))
- ((default . -67) (36 . 19) (45 . 18) (46 . 17))
- ((default . -83))
- ((default . -61))
- ((default . -21))
- ((default . -46))
- ((default . -19))
- ((default . -45))
- ((default . -40) (16 . 71))
- ((default . *error*) (11 . 113))
- ((default . -39))
- ((default . *error*) (12 . 63))
- ((default . -70) (36 . 19) (45 . 18) (46 . 17))
- ((default . *error*) (14 . 120))
- ((default . -71) (36 . 19) (45 . 18) (46 . 17))
- ((default . -26))
- ((default . -15) (16 . 71))
- ((default . -12))
- ((default . -33))
- ((default . -61))
- ((default . -35))
- ((default . *error*) (30 . 128) (31 . 127) (32 . 126) (33 . 125) (34 . 124) (35 . 123))
- ((default . -73) (36 . 19) (45 . 18) (46 . 17))
- ((default . *error*) (17 . 21) (29 . 96))
- ((default . -42))
- ((default . *error*) (17 . 21) (29 . 96))
- ((default . -61))
- ((default . -22))
- ((default . -66) (36 . 19) (45 . 18) (46 . 17))
- ((default . -88))
- ((default . -87))
- ((default . -86))
- ((default . -85))
- ((default . -84))
- ((default . -82))
- ((default . -20))
- ((default . -41) (16 . 71))
- ((default . -69) (36 . 19) (45 . 18) (46 . 17))
- ])
-
-; *** Goto Table ***
-(defconst ew:goto-table
- [
- ((1 . 8))
- ((33 . 9))
- ((33 . 10))
- ((33 . 11))
- ((33 . 12))
- ((33 . 13))
- ((33 . 14))
- ((33 . 15))
- ()
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(31 . 26)(28 . 27)(26 . 28)(19 . 29)(18 . 30))
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(30 . 31)(29 . 32)(26 . 28)(19 . 29)(18 . 33))
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 38)(13 . 39)(12 . 40)(10 . 41)(5 . 42)(4 . 43)(3 . 44))
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 38)(13 . 39)(12 . 40)(10 . 41)(5 . 42)(4 . 43)(3 . 45)(2 . 46))
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 47)(15 . 48)(13 . 49)(12 . 40)(5 . 42))
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 47)(15 . 50)(14 . 51)(13 . 49)(12 . 40)(5 . 42))
- ((48 . 22)(44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 47)(13 . 52)(12 . 40)(5 . 42))
- ()
- ()
- ()
- ((49 . 53))
- ((45 . 54))
- ((33 . 55))
- ()
- ((33 . 56))
- ()
- ()
- ((34 . 57)(17 . 58))
- ()
- ()
- ((44 . 23)(43 . 24)(41 . 25)(26 . 59))
- ()
- ((37 . 61))
- ()
- ()
- ((33 . 62))
- ((36 . 64)(23 . 65)(21 . 66)(20 . 67))
- ()
- ()
- ((39 . 69)(34 . 35)(22 . 70))
- ()
- ((40 . 72)(36 . 73))
- ()
- ()
- ()
- ((37 . 74))
- ((37 . 74))
- ()
- ((34 . 35)(22 . 70))
- ((37 . 75))
- ()
- ((37 . 75))
- ()
- ()
- ()
- ()
- ((48 . 22))
- ((48 . 22))
- ((44 . 23)(43 . 24)(41 . 25)(26 . 90)(12 . 40)(5 . 91))
- ((44 . 23)(43 . 24)(41 . 25)(28 . 92)(26 . 28)(19 . 29)(18 . 30))
- ()
- ((33 . 93))
- ((44 . 23)(43 . 24)(41 . 25)(26 . 28)(19 . 29)(18 . 94))
- ((48 . 22))
- ((33 . 95))
- ((46 . 97)(43 . 98)(42 . 99)(24 . 100)(9 . 101)(8 . 102))
- ((44 . 23)(43 . 24)(41 . 25)(26 . 90)(12 . 40)(5 . 103))
- ((39 . 104)(37 . 105))
- ()
- ((33 . 106))
- ((44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 47)(15 . 50)(14 . 107)(13 . 49)(12 . 40)(5 . 42))
- ()
- ((33 . 108))
- ((44 . 23)(43 . 24)(41 . 25)(26 . 109))
- ((46 . 97)(43 . 98)(42 . 99)(24 . 100)(9 . 101)(8 . 110))
- ((44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 38)(13 . 39)(12 . 40)(10 . 41)(5 . 42)(4 . 111))
- ((44 . 23)(43 . 24)(41 . 25)(34 . 35)(26 . 36)(22 . 37)(19 . 29)(18 . 47)(13 . 112)(12 . 40)(5 . 42))
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ((35 . 114))
- ()
- ((48 . 22))
- ()
- ((48 . 22))
- ((47 . 115))
- ((33 . 116))
- ()
- ()
- ()
- ()
- ((40 . 117))
- ((35 . 118))
- ()
- ((36 . 119))
- ((48 . 22))
- ((38 . 121))
- ((48 . 22))
- ()
- ((40 . 117))
- ()
- ()
- ((33 . 122))
- ()
- ()
- ((48 . 22))
- ((46 . 97)(43 . 98)(42 . 99)(24 . 129)(9 . 101))
- ()
- ((46 . 97)(43 . 98)(42 . 99)(24 . 100)(9 . 101)(8 . 130))
- ((33 . 131))
- ()
- ((48 . 22))
- ()
- ()
- ()
- ()
- ()
- ()
- ()
- ((40 . 117))
- ((48 . 22))
- ])
-
-; *** Reduction Table ***
-(defconst ew:reduction-table
- (vector
- '()
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (accept $1)))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 1 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 2 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 2 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 3 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 3 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 4 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 4 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 5 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 6 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($4 (aref stack (- sp 1)))
- ($3 (aref stack (- sp 3)))
- ($2 (aref stack (- sp 5)))
- ($1 (aref stack (- sp 7))))
- (lr-push stack (- sp 8) 7 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 7 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 8 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 8 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 9 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($4 (aref stack (- sp 1)))
- ($3 (aref stack (- sp 3)))
- ($2 (aref stack (- sp 5)))
- ($1 (aref stack (- sp 7))))
- (lr-push stack (- sp 8) 10 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 11 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($5 (aref stack (- sp 1)))
- ($4 (aref stack (- sp 3)))
- ($3 (aref stack (- sp 5)))
- ($2 (aref stack (- sp 7)))
- ($1 (aref stack (- sp 9))))
- (lr-push stack (- sp 10) 11 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 12 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 12 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 13 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 13 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 13 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 14 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 14 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 15 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 15 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 16 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 17 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 18 goto-table (ew-mark-phrase $1 $look))))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 19 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 19 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 20 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 21 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($4 (aref stack (- sp 1)))
- ($3 (aref stack (- sp 3)))
- ($2 (aref stack (- sp 5)))
- ($1 (aref stack (- sp 7))))
- (lr-push stack (- sp 8) 21 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($4 (aref stack (- sp 1)))
- ($3 (aref stack (- sp 3)))
- ($2 (aref stack (- sp 5)))
- ($1 (aref stack (- sp 7))))
- (lr-push stack (- sp 8) 22 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 23 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 23 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 24 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 24 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 25 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 26 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 26 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 27 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 28 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 28 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 29 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 29 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 30 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 30 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 31 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 31 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($1 (aref stack (- sp 1))))
- (lr-push stack (- sp 2) 32 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 32 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 33 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 33 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 33 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 33 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 34 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 35 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 36 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 37 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 38 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 39 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 40 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 41 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 42 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 43 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 44 goto-table $1)))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 45 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 45 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 45 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 45 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 45 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 45 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 46 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 47 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 47 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 47 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 47 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 47 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 47 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($3 (aref stack (- sp 1)))
- ($2 (aref stack (- sp 3)))
- ($1 (aref stack (- sp 5))))
- (lr-push stack (- sp 6) 48 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* ()
- (lr-push stack (- sp 0) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- (lambda (stack sp goto-table $look)
- (let* (($2 (aref stack (- sp 1)))
- ($1 (aref stack (- sp 3))))
- (lr-push stack (- sp 4) 49 goto-table ())))
- ))
-
-; *** Parser Definition ***
-(defun ew-parse(scanner errorhandler)
- (lr-parse scanner errorhandler
- ew:action-table
- ew:goto-table
- ew:reduction-table
- ew:token-defs))
-
-; *** Footer ***
-(put 'ew:cm-texts 'decode 'ew-decode-comment)
-(put 'ew:cm-wsp 'decode 'ew-decode-comment)
-(put 'ew:cm-fold 'decode 'ew-decode-comment)
-(put 'ew:cm-qfold 'decode 'ew-decode-comment)
-(put 'ew:cm-qpair 'decode 'ew-decode-comment)
-(put 'ew:us-texts 'decode 'ew-decode-unstructured)
-(put 'ew:us-wsp 'decode 'ew-decode-unstructured)
-(put 'ew:us-fold 'decode 'ew-decode-unstructured)
-
-
+++ /dev/null
-(define field-grammar
-'(
-; Terminal symbols
-*anchor*
-*err*
-
-tag-mailbox
-tag-mailbox*
-tag-mailbox+
-tag-address*
-tag-address+
-tag-phrase*
-tag-phrase-msg-id*
-
-;; S : STD11 structured field
-;; M : MIME structured field
-;; U : Unstructured field
-
-lt ; S/M
-gt ; S/M
-at ; S/M
-comma ; S/M
-semicolon ; S/M
-colon ; S/M
-
-dot ; S
-atom ; S
-
-slash ; M
-question ; M
-equal ; M
-token ; M
-
-qs-begin ; S/M
-qs-end ; S/M
-qs-texts ; S/M
-qs-wsp ; S/M
-qs-fold ; S/M
-qs-qfold ; S/M
-qs-qpair ; S/M
-
-dl-begin ; S/M
-dl-end ; S/M
-dl-texts ; S/M
-dl-wsp ; S/M
-dl-fold ; S/M
-dl-qfold ; S/M
-dl-qpair ; S/M
-
-cm-begin ; S/M
-cm-end ; S/M
-cm-nested-begin ; S/M
-cm-nested-end ; S/M
-cm-texts ; S/M
-cm-wsp ; S/M
-cm-fold ; S/M
-cm-qfold ; S/M
-cm-qpair ; S/M
-
-wsp ; S/M
-fold ; S/M
-
-us-texts ; U
-us-wsp ; U
-us-fold ; U
-
-; Productions
-(start (tag-mailbox gap mailbox) : ()
- (tag-mailbox* gap mailbox*) : ()
- (tag-mailbox+ gap mailbox+) : ()
- (tag-address* gap address*) : ()
- (tag-address+ gap address+) : ()
- (tag-phrase* gap phrase*) : ()
- (tag-phrase-msg-id* gap phrase-msg-id*) : ())
-(address* () : ()
- (address+) : ())
-(address+ (address) : ()
- (address+ comma-gap address) : ())
-(address (mailbox) : ()
- (group) : ())
-(addr-spec (local-part at-gap domain) : ())
-(date (atom-gap atom-gap atom-gap) : ())
-(date-time (atom-gap comma-gap date time) : ()
- (date time) : ())
-(domain (sub-domain) : ()
- (domain dot-gap sub-domain) : ())
-(domain-ref (atom-gap) : ())
-(group (phrase colon-gap mailbox* semicolon-gap) : ())
-(hour (atom-gap colon-gap atom-gap) : ()
- (atom-gap colon-gap atom-gap colon-gap atom-gap): ())
-(local-part (word) : ()
- (local-part dot-gap word) : ())
-(mailbox (addr-spec) : ()
- (phrase route-addr) : ()
- (route-addr) : ())
-(mailbox* () : ()
- (mailbox+) : ())
-(mailbox+ (mailbox) : ()
- (mailbox+ comma-gap mailbox) : ())
-(month (atom-gap) : ())
-(msg-id (lt-gap addr-spec gt-gap) : ())
-(phrase (phrase-c) : (ew-mark-phrase $1 $look))
-(phrase-c (word) : $1
- (phrase-c word) : $1)
-(route (at-domain+ colon-gap) : ())
-(at-domain+ (at-gap domain) : ()
- (at-domain+ comma-gap at-gap domain) : ())
-(route-addr (lt-gap route/ addr-spec gt-gap) : ())
-(route/ () : ()
- (route) : ())
-(sub-domain (domain-ref) : ()
- (domain-literal-gap) : ())
-(time (hour zone) : ())
-(word (atom-gap) : $1
- (quoted-string-gap) : $1)
-(zone (atom-gap) : ())
-(phrase/ () : ()
- (phrase) : ())
-(phrase* () : ()
- (phrase+) : ())
-(phrase+ (phrase) : ()
- (phrase+ comma-gap phrase) : ())
-(phrase-msg-id* (phrase/) : ()
- (phrase-msg-id* msg-id phrase/) : ())
-(word1or2 (word) : ()
- (word comma-gap word) : ())
-(gap () : ()
- (gap wsp) : ()
- (gap fold) : ()
- (gap comment) : ())
-(lt-gap (lt gap) : ())
-(gt-gap (gt gap) : ())
-(at-gap (at gap) : ())
-(comma-gap (comma gap) : ())
-(semicolon-gap (semicolon gap) : ())
-(colon-gap (colon gap) : ())
-(dot-gap (dot gap) : ())
-(quoted-string-gap (quoted-string gap) : $1)
-(domain-literal-gap (domain-literal gap) : ())
-(atom-gap (atom gap) : $1)
-(quoted-string (qs-begin qs qs-end) : $1)
-(qs () : ()
- (qs qs-texts) : ()
- (qs qs-wsp) : ()
- (qs qs-fold) : ()
- (qs qs-qfold) : ()
- (qs qs-qpair) : ())
-(domain-literal (dl-begin dl dl-end) : ())
-(dl () : ()
- (dl dl-texts) : ()
- (dl dl-wsp) : ()
- (dl dl-fold) : ()
- (dl dl-qfold) : ()
- (dl dl-qpair) : ())
-(comment (cm-begin cm cm-end) : ())
-(cm () : ()
- (cm cm-nested-begin) : ()
- (cm cm-nested-end) : ()
- (cm cm-texts) : ()
- (cm cm-wsp) : ()
- (cm cm-fold) : ()
- (cm cm-qfold) : ()
- (cm cm-qpair) : ())
-
-))
-
-(gen-lalr1 field-grammar "ew-parse.el"
-"(provide 'ew-parse)
-(require 'ew-data)
-"
-"(put 'ew:cm-texts 'decode 'ew-decode-comment)
-(put 'ew:cm-wsp 'decode 'ew-decode-comment)
-(put 'ew:cm-fold 'decode 'ew-decode-comment)
-(put 'ew:cm-qfold 'decode 'ew-decode-comment)
-(put 'ew:cm-qpair 'decode 'ew-decode-comment)
-(put 'ew:us-texts 'decode 'ew-decode-unstructured)
-(put 'ew:us-wsp 'decode 'ew-decode-unstructured)
-(put 'ew:us-fold 'decode 'ew-decode-unstructured)
-"
-'ew)
-
-(print-states)
+++ /dev/null
-;;; quoted encoded word library
-
-(require 'ew-var)
-(require 'ew-util)
-(require 'ew-line)
-(provide 'ew-quote)
-
-;; This library provides functions operating strings embedding
-;; unencodable encoded words.
-
-;;;type embedded-pattern denoted-pattern
-;; Type-0 =?(QQQ)*A?B?C?= =?(Q)*A?B?C?=
-;; Type-1 =?(QQQ)*QA?B?C?= Decode =?(Q)*A?B?C?= as encoded-word
-;; Type-2 =?(QQQ)*QQA?B?C?= =?(Q)*A?B?C?
-
-;; Q : quoting character '+'.
-;; A : token. But it does not start with quoting character.
-;; B : token.
-;; C : encoded-text.
-
-(eval-and-compile
- (defconst ew-quoting-char ?+))
-(defconst ew-quoting-chars-regexp
- (eval-when-compile
- (concat (regexp-quote (char-to-string ew-quoting-char)) "*")))
-
-(defconst ew-type2-regexp
- (eval-when-compile
- (require 'ew-var)
- (concat (regexp-quote "=?")
- "\\(" ew-token-regexp "\\)"
- (regexp-quote "?")
- "\\(" ew-token-regexp "\\)"
- (regexp-quote "?")
- "\\(" ew-encoded-text-regexp "\\)"
- (regexp-quote "?")
- "\\'")))
-
-;;;
-
-(defun ew-quoting-char-seq (num)
- (make-string num ew-quoting-char))
-
-(defun ew-quote (str)
- (ew-quote-concat str))
-
-(defun ew-concat (&rest args)
- (apply 'ew-quote-concat (mapcar 'list args)))
-
-(defun ew-quote-concat (&rest args)
- (let (result raws tmp)
- (while args
- (setq tmp (car args))
- (cond
- ((stringp tmp)
- ;; raw string
- (setq raws (cons tmp raws)))
- ((listp tmp)
- ;; quoted encoded word embedding strings
- (let (str start eword-start charset-start quoting-end eword-end l q r)
- (while tmp
- (setq str (car tmp)
- start 0)
- (while (string-match ew-encoded-word-regexp str start)
- (setq eword-start (match-beginning 0)
- charset-start (match-beginning 1)
- eword-end (match-end 0))
- (string-match ew-quoting-chars-regexp str charset-start)
- (setq quoting-end (match-end 0)
- l (- quoting-end charset-start)
- q (/ l 3)
- r (% l 3))
- (cond
- ((= r 0) ; Type-0
- (setq raws
- (ew-rcons*
- raws
- (substring str start charset-start)
- (ew-quoting-char-seq q)
- (substring str quoting-end eword-end))))
- ((= r 2) ; Type-2
- (setq raws
- (ew-rcons*
- raws
- (substring str start charset-start)
- (ew-quoting-char-seq q)
- (substring str quoting-end (1- eword-end)))))
- ((= r 1) ; Type-1
- (setq raws
- (ew-rcons*
- raws
- (substring str start eword-start))
- result
- (ew-rcons*
- result
- (ew-quote-sole (apply 'concat (nreverse raws)) t)
- (substring str eword-start eword-end))
- raws ())))
- (setq start eword-end))
- (setq raws (ew-rcons* raws (substring str start))
- tmp (cdr tmp)))))
- (t
- (error "ew-quote-concat: %s" tmp)))
- (setq args (cdr args)))
- (setq result
- (ew-rcons*
- result
- (ew-quote-sole (apply 'concat (nreverse raws)) nil)))
- (apply 'concat (nreverse result))))
-
-(defun ew-quote-sole (str gen-type2)
- (let (result (start 0) charset-start quoting-end eword-end l)
- (while (string-match ew-encoded-word-regexp str start)
- (setq charset-start (match-beginning 1)
- eword-end (match-end 0))
- (string-match ew-quoting-chars-regexp str charset-start)
- (setq quoting-end (match-end 0)
- l (* (- quoting-end charset-start) 3)
- result
- (ew-rcons*
- result
- (substring str start charset-start)
- (ew-quoting-char-seq l)
- (substring str quoting-end eword-end))
- start eword-end))
- (if (and gen-type2
- (string-match ew-type2-regexp str start))
- (progn
- (setq charset-start (match-beginning 1)
- eword-end (match-end 0))
- (string-match ew-quoting-chars-regexp str charset-start)
- (setq quoting-end (match-end 0)
- l (* (- quoting-end charset-start) 3)
- result
- (ew-rcons*
- result
- (substring str start charset-start)
- (ew-quoting-char-seq (+ l 2))
- (substring str quoting-end eword-end)
- "=")))
- (setq result (ew-rcons* result (substring str start))))
- (apply 'concat (nreverse result))))
-
-(defun ew-quote-eword (charset encoding encoded-text)
- (string-match ew-quoting-chars-regexp charset)
- (concat
- "=?+" ; Type-1
- (ew-quoting-char-seq (* (- (match-end 0) (match-beginning 0)) 3))
- (substring charset (match-end 0))
- "?"
- encoding
- "?"
- encoded-text
- "?="))
-
-(defun ew-encode-crlf (str)
- (if ew-remove-bare-crlf
- (ew-crlf-line-convert str nil nil (lambda (nl) ""))
- (let ((sstart 0)
- (mstart 0)
- (end (length str)) result ms me)
- (while (string-match "\\(\r\n\\)+" str mstart)
- (setq ms (match-beginning 0)
- me (match-end 0))
- (setq mstart me)
- (when (and (< me end)
- (member (aref str me) '(?\t ?\ )))
- (setq me (- me 2)))
- (when (< ms me)
- (setq result (ew-rcons* result
- (substring str sstart ms)
- "=?+US-ASCII?Q?")
- sstart me)
- (while (< ms me)
- (setq result (ew-rcons* result "=0D=0A")
- ms (+ ms 2)))
- (setq result (ew-rcons* result "?="))))
- (when (< sstart end)
- (setq result (ew-rcons* result
- (substring str sstart))))
- (apply 'concat (nreverse result)))))
-
-'(
-(ew-quote-concat "aaa=?A?B?C?=ccc") ;"aaa=?A?B?C?=ccc"
-(ew-quote-concat "aaa=?+A?B?C?=ccc") ;"aaa=?+++A?B?C?=ccc"
-(ew-quote-concat '("aaa=?A?B?C?=ccc")) ;"aaa=?A?B?C?=ccc"
-(ew-quote-concat '("aaa=?+++A?B?C?=ccc")) ;"aaa=?+++A?B?C?=ccc"
-(ew-quote-concat "aaa=?+A?B" "?C?=ccc") ;"aaa=?+++A?B?C?=ccc"
-(ew-quote-concat "a=?+A?B?C?" '("=?+US-ASCII?Q?z?=")) ;"a=?+++++A?B?C?==?+US-ASCII?Q?z?="
-(ew-quote-concat "a=?+A?B?C?=?+D?E?F?" '("=?+US-ASCII?Q?z?=")) ;"a=?+++A?B?C?=?+D?E?F?=?+US-ASCII?Q?z?="
-(ew-quote-concat "a=?+A?B?C?=?+D?E?F?=?+G?H?I?" '("=?+US-ASCII?Q?z?=")) ;"a=?+++A?B?C?=?+D?E?F?=?+++++G?H?I?==?+US-ASCII?Q?z?="
-(ew-quote-concat '("a=?++A?B?C?==?+++A?B?C?=c")) ;"a=?A?B?C?=?+A?B?C?=c"
-)
+++ /dev/null
-(require 'lex)
-(require 'automata)
-(require 'ew-data)
-(require 'ew-parse)
-(provide 'ew-scan-m)
-
-(defmacro ew-scan-mime (scan col str)
- `(let ((res (ew-make-anchor col str))
- (mode 'token)
- (p 0)
- (q (length str))
- r
- type
- nest)
- (while (< p q)
- (setq r p)
- (cond
- ((eq mode 'token)
- (setq
- type
- (,scan
- str p q
- ([" \t"] 'ew:wsp)
- (?< 'ew:lt)
- (?> 'ew:gt)
- (?@ 'ew:at)
- (?, 'ew:comma)
- (?\; 'ew:semicolon)
- (?: 'ew:colon)
- (?/ 'ew:slash)
- (?? 'ew:question)
- (?= 'ew:equal)
- ((?\r ?\n [" \t"]) 'ew:fold)
- ((?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- ((+ [(?a ?z) (?A ?Z) (?0 ?9) "!#$%&'*+-.^_`{|}~" non-ascii])
- 'ew:token)
- (?\" (setq mode 'quoted-string) 'ew:qs-begin)
- (?\[ (setq mode 'domain-literal) 'ew:dl-begin)
- (?\( (setq mode 'comment
- nest 1)
- 'ew:cm-begin)
- (() (setq p q) 'ew:*err*)))
- (ew-add-frag res r p type))
- ((eq mode 'quoted-string)
- (setq
- type
- (,scan
- str p q
- (?\" (setq mode 'token) 'ew:qs-end)
- ((?\\ ?\r ?\n [" \t"]) 'ew:qs-qfold)
- ((?\\ ?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- (((* [^ "\"\\ \t\r"])
- (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:qs-texts)
- (setq r (- p 3)))
- 'ew:qs-fold)
- (((* [^ "\"\\ \t\r"])
- (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:qs-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- ((?\\ (any))
- 'ew:qs-qpair)
- ([" \t"]
- 'ew:qs-wsp)
- (((* [^ "\"\\ \t\r"])
- (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:qs-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))
- ((eq mode 'domain-literal)
- (setq
- type
- (,scan
- str p q
- (?\] (setq mode 'token) 'ew:dl-end)
- ((?\\ ?\r ?\n [" \t"])
- 'ew:dl-qfold)
- ((?\\ ?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- (((* [^ "[]\\ \t\r"])
- (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:dl-texts)
- (setq r (- p 3)))
- 'ew:dl-fold)
- (((* [^ "[]\\ \t\r"])
- (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:dl-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- ((?\\ (any))
- 'ew:dl-qpair)
- ([" \t"]
- 'ew:dl-wsp)
- (((* [^ "[]\\ \t\r"])
- (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:dl-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))
- ((eq mode 'comment)
- (setq
- type
- (,scan
- str p q
- (?\( (setq nest (1+ nest)) 'ew:cm-nested-begin)
- (?\) (setq nest (1- nest))
- (if (zerop nest)
- (progn (setq mode 'token) 'ew:cm-end)
- 'ew:cm-nested-end))
- ((?\\ ?\r ?\n [" \t"])
- 'ew:cm-qfold)
- ((?\\ ?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- (((* [^ "()\\ \t\r"])
- (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:cm-texts)
- (setq r (- p 3)))
- 'ew:cm-fold)
- (((* [^ "()\\ \t\r"])
- (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:cm-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- ((?\\ (any))
- 'ew:cm-qpair)
- ([" \t"]
- 'ew:cm-wsp)
- (((* [^ "()\\ \t\r"])
- (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:cm-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))))
- (ew-terminate res)
- res))
-
-(defun ew-scan-unibyte-mime (col str)
- (ew-scan-mime lex-scan-unibyte col str))
-(defun ew-scan-multibyte-mime (col str)
- (ew-scan-mime lex-scan-multibyte col str))
-
-'(
-(npp
- (mapcar
- (lambda (frag) (cons (get frag 'type) (symbol-name frag)))
- (ew-frag-list
- (ew-scan-unibyte-mime
- 0 " text/vnd.latex-z; charset=ISO-2022-JP"))))
-)
+++ /dev/null
-(require 'lex)
-(require 'automata)
-(require 'ew-data)
-(require 'ew-parse)
-(provide 'ew-scan-s)
-
-(defmacro ew-scan-std11 (scan col str)
- `(let ((res (ew-make-anchor col str))
- (mode 'token)
- (p 0)
- (q (length str))
- r
- type
- nest)
- (while (< p q)
- (setq r p)
- (cond
- ((eq mode 'token)
- (setq
- type
- (,scan
- str p q
- ([" \t"] 'ew:wsp)
- (?< 'ew:lt)
- (?> 'ew:gt)
- (?@ 'ew:at)
- (?, 'ew:comma)
- (?\; 'ew:semicolon)
- (?: 'ew:colon)
- (?. 'ew:dot)
- ((?\r ?\n [" \t"]) 'ew:fold)
- ((?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- ((+ [(?a ?z) (?A ?Z) (?0 ?9) "!#$%&'*+-/=?^_`{|}~" non-ascii])
- 'ew:atom)
- (?\" (setq mode 'quoted-string) 'ew:qs-begin)
- (?\[ (setq mode 'domain-literal) 'ew:dl-begin)
- (?\( (setq mode 'comment
- nest 1)
- 'ew:cm-begin)
- (() (setq p q) 'ew:*err*)))
- (ew-add-frag res r p type))
- ((eq mode 'quoted-string)
- (setq
- type
- (,scan
- str p q
- (?\" (setq mode 'token) 'ew:qs-end)
- ((?\\ ?\r ?\n [" \t"]) 'ew:qs-qfold)
- ((?\\ ?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- (((* [^ "\"\\ \t\r"])
- (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:qs-texts)
- (setq r (- p 3)))
- 'ew:qs-fold)
- (((* [^ "\"\\ \t\r"])
- (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:qs-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- ((?\\ (any))
- 'ew:qs-qpair)
- ([" \t"]
- 'ew:qs-wsp)
- (((* [^ "\"\\ \t\r"])
- (* (+ ?\r) [^ "\"\\ \t\r\n"] (* [^ "\"\\ \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:qs-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))
- ((eq mode 'domain-literal)
- (setq
- type
- (,scan
- str p q
- (?\] (setq mode 'token) 'ew:dl-end)
- ((?\\ ?\r ?\n [" \t"])
- 'ew:dl-qfold)
- ((?\\ ?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- (((* [^ "[]\\ \t\r"])
- (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:dl-texts)
- (setq r (- p 3)))
- 'ew:dl-fold)
- (((* [^ "[]\\ \t\r"])
- (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:dl-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- ((?\\ (any))
- 'ew:dl-qpair)
- ([" \t"]
- 'ew:dl-wsp)
- (((* [^ "[]\\ \t\r"])
- (* (+ ?\r) [^ "[]\\ \t\r\n"] (* [^ "[]\\ \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:dl-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))
- ((eq mode 'comment)
- (setq
- type
- (,scan
- str p q
- (?\( (setq nest (1+ nest)) 'ew:cm-nested-begin)
- (?\) (setq nest (1- nest))
- (if (zerop nest)
- (progn (setq mode 'token) 'ew:cm-end)
- 'ew:cm-nested-end))
- ((?\\ ?\r ?\n [" \t"])
- 'ew:cm-qfold)
- ((?\\ ?\r ?\n [^ " \t"])
- (setq p q) 'ew:*err*)
- (((* [^ "()\\ \t\r"])
- (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:cm-texts)
- (setq r (- p 3)))
- 'ew:cm-fold)
- (((* [^ "()\\ \t\r"])
- (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:cm-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- ((?\\ (any))
- 'ew:cm-qpair)
- ([" \t"]
- 'ew:cm-wsp)
- (((* [^ "()\\ \t\r"])
- (* (+ ?\r) [^ "()\\ \t\r\n"] (* [^ "()\\ \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:cm-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))))
- (ew-terminate res)
- res))
-
-(defun ew-scan-unibyte-std11 (col str)
- (ew-scan-std11 lex-scan-unibyte col str))
-(defun ew-scan-multibyte-std11 (col str)
- (ew-scan-std11 lex-scan-multibyte col str))
-
-'(
-(npp
- (mapcar
- 'symbol-plist
- (ew-frag-list
- (ew-scan-unibyte-std11
- 0 " Tanaka Akira <akr@jaist.ac.jp> (Tanaka Akira)"))))
-
-(npp
- (mapcar
- (lambda (frag) (cons (get frag 'type) (symbol-name frag)))
- (ew-frag-list
- (ew-scan-unibyte-std11
- 0 " Tanaka Akira <akr@jaist.ac.jp> (Tanaka Akira)"))))
-)
+++ /dev/null
-(require 'lex)
-(require 'automata)
-(require 'ew-data)
-(require 'ew-parse)
-(provide 'ew-scan-u)
-
-(defmacro ew-scan-unstructured (scan col str)
- `(let ((res (ew-make-anchor col str))
- (p 0)
- (q (length str))
- r
- type)
- (while (< p q)
- (setq r p)
- (setq
- type
- (,scan
- str p q
- ([" \t"] 'ew:us-wsp)
- (((* [^ " \t\r"])
- (* (+ ?\r) [^ " \t\r\n"] (* [^ " \t\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:us-texts)
- (setq r (- p 3)))
- 'ew:us-fold)
- (((* [^ " \t\r"])
- (* (+ ?\r) [^ " \t\r\n"] (* [^ " \t\r"]))
- (* ?\r)
- (?\r ?\n [^ " \t"]))
- (when (< r (- p 3))
- (ew-add-frag res r (- p 3) 'ew:us-texts)
- (setq r (- p 3)))
- (setq p q) 'ew:*err*)
- (((* [^ " \t\r"])
- (* (+ ?\r) [^ " \t\r\n"] (* [^ " \t\r"]))
- (* ?\r))
- (if (< r p)
- 'ew:us-texts
- (progn (setq p q) 'ew:*err*)))))
- (ew-add-frag res r p type))
- (ew-terminate res)
- res))
-
-(defun ew-scan-unibyte-unstructured (col str)
- (ew-scan-unstructured lex-scan-unibyte col str))
-(defun ew-scan-multibyte-unstructured (col str)
- (ew-scan-unstructured lex-scan-multibyte col str))
-
-'(
-(npp
- (mapcar
- (lambda (frag) (cons (get frag 'type) (symbol-name frag)))
- (ew-frag-list
- (ew-scan-unibyte-unstructured
- 0 " Hello! =?US-ASCII?Q?Hello!?="))))
-
-(npp
- (mapcar
- (lambda (frag) (cons (get frag 'type) (symbol-name frag)))
- (ew-frag-list
- (ew-scan-unibyte-unstructured
- 0 " \r\na"))))
-
-)
+++ /dev/null
-(require 'closure)
-(require 'ew-line)
-(require 'ew-quote)
-(require 'mel)
-
-(provide 'ew-unit)
-
-(defconst ew-anchored-encoded-word-regexp
- (eval-when-compile
- (require 'ew-var)
- (concat "\\`" ew-encoded-word-regexp "\\'")))
-
-(defconst ew-b-regexp
- (eval-when-compile
- (concat "\\`\\("
- "[A-Za-z0-9+/]"
- "[A-Za-z0-9+/]"
- "[A-Za-z0-9+/]"
- "[A-Za-z0-9+/]"
- "\\)*"
- "[A-Za-z0-9+/]"
- "[A-Za-z0-9+/]"
- "\\(==\\|"
- "[A-Za-z0-9+/]"
- "[A-Za-z0-9+/=]"
- "\\)\\'")))
-
-(defconst ew-q-regexp "\\`\\([^=?]\\|=[0-9A-Fa-f][0-9A-Fa-f]\\)*\\'")
-
-(defconst ew-byte-decoder-alist
- '(("B" . ew-b-decode)
- ("Q" . ew-q-decode)))
-
-(defconst ew-byte-checker-alist
- '(("B" . ew-b-check)
- ("Q" . ew-q-check)))
-
-(defun ew-b-check (encoding encoded-text) (string-match ew-b-regexp encoded-text))
-(defun ew-q-check (encoding encoded-text) (string-match ew-q-regexp encoded-text))
-
-(defsubst ew-eword-p (str)
- (let ((len (length str)))
- (and
- (<= 3 len)
- (eq (aref str 0) ?=)
- (eq (aref str 1) ??)
- (eq (aref str (- len 2)) ??)
- (eq (aref str (1- len)) ?=))))
-
-(defun ew-decode-eword (str)
- (if (string-match ew-anchored-encoded-word-regexp str)
- (let ((charset (match-string 1 str))
- (encoding (match-string 2 str))
- (encoded-text (match-string 3 str))
- bdec cdec
- bcheck
- tmp)
- (if (and (setq bdec (ew-byte-decoder encoding))
- (setq cdec (ew-char-decoder charset)))
- (if (or (null (setq bcheck (ew-byte-checker encoding)))
- (funcall bcheck encoding encoded-text))
- (ew-quote (closure-call cdec (funcall bdec encoded-text)))
- (ew-quote str))
- (ew-quote-eword charset encoding encoded-text)))
- (ew-quote str)))
-
-(defun ew-byte-decoder (encoding)
- (cdr (assoc (upcase encoding) ew-byte-decoder-alist)))
-
-(defun ew-byte-checker (encoding)
- (cdr (assoc (upcase encoding) ew-byte-checker-alist)))
-
-(defalias 'ew-b-decode 'base64-decode-string)
-(defalias 'ew-q-decode 'q-encoding-decode-string)
-
-(defun ew-char-decoder (charset)
- (let ((sym (intern (downcase charset))))
- (when (mime-charset-to-coding-system sym 'LF)
- (closure-make
- (lambda (str) (decode-mime-charset-string str sym 'LF))
- sym))))
+++ /dev/null
-(provide 'ew-util)
-
-(defmacro ew-cons* (seed &rest rest)
- (setq rest (nreverse (cons seed rest))
- seed (car rest)
- rest (cdr rest))
- (while rest
- (setq seed `(cons ,(car rest) ,seed)
- rest (cdr rest)))
- seed)
-
-(defmacro ew-rcons* (seed &rest rest)
- (while rest
- (setq seed `(cons ,(car rest) ,seed)
- rest (cdr rest)))
- seed)
-
-(defmacro ew-rappend (a b)
- `(append (reverse ,b) ,a))
+++ /dev/null
-(provide 'ew-var)
-
-;;; user customizable variables.
-
-(defvar ew-decode-sticked-encoded-word nil)
-(defvar ew-decode-quoted-encoded-word nil)
-(defvar ew-ignore-75bytes-limit nil)
-(defvar ew-ignore-76bytes-limit nil)
-(defvar ew-permit-sticked-comment nil)
-(defvar ew-permit-sticked-special nil)
-
-(defvar ew-remove-bare-crlf nil)
-(defvar ew-default-mime-charset 'x-ctext)
-
-;;;
-(defvar ew-decode-field-syntax-alist
-'((from ew-scan-unibyte-std11 . ew:tag-mailbox+)
- (sender ew-scan-unibyte-std11 . ew:tag-mailbox)
- (to ew-scan-unibyte-std11 . ew:tag-address+)
- (resent-to ew-scan-unibyte-std11 . ew:tag-address+)
- (cc ew-scan-unibyte-std11 . ew:tag-address+)
- (resent-cc ew-scan-unibyte-std11 . ew:tag-address+)
- (bcc ew-scan-unibyte-std11 . ew:tag-address*)
- (resent-bcc ew-scan-unibyte-std11 . ew:tag-address*)
- (message-id ew-scan-unibyte-std11)
- (resent-message-id ew-scan-unibyte-std11)
- (in-reply-to ew-scan-unibyte-std11 . ew:tag-phrase-msg-id*)
- (references ew-scan-unibyte-std11 . ew:tag-phrase-msg-id*)
- (keywords ew-scan-unibyte-std11 . ew:tag-phrase*)
- (subject ew-scan-unibyte-unstructured)
- (comments ew-scan-unibyte-unstructured)
- (encrypted ew-scan-unibyte-std11)
- (date ew-scan-unibyte-std11)
- (reply-to ew-scan-unibyte-std11 . ew:tag-address+)
- (received ew-scan-unibyte-std11)
- (resent-reply-to ew-scan-unibyte-std11 . ew:tag-address+)
- (resent-from ew-scan-unibyte-std11 . ew:tag-mailbox+)
- (resent-sender ew-scan-unibyte-std11 . ew:tag-mailbox)
- (resent-date ew-scan-unibyte-std11)
- (return-path ew-scan-unibyte-std11)
- (mime-version ew-scan-unibyte-std11)
- (content-type ew-scan-unibyte-mime)
- (content-transfer-encoding ew-scan-unibyte-mime)
- (content-id ew-scan-unibyte-std11)
- (content-description ew-scan-unibyte-unstructured)
- (content-disposition ew-scan-unibyte-mime)
- (approved ew-scan-unibyte-std11 . ew:tag-address+)
-))
-
-(defvar ew-decode-field-default-syntax '(ew-scan-unibyte-unstructured))
-
-(defvar ew-parse-error-sit-for-seconds 0)
-
-;;; constants.
-
-(eval-and-compile
- (defconst ew-token-regexp "[-!#-'*+0-9A-Z^-~]+")
- (defconst ew-encoded-text-regexp "[!->@-~]+")
-)
-(defconst ew-encoded-word-regexp
- (eval-when-compile
- (concat (regexp-quote "=?")
- "\\(" ew-token-regexp "\\)"
- (regexp-quote "?")
- "\\(" ew-token-regexp "\\)"
- (regexp-quote "?")
- "\\(" ew-encoded-text-regexp "\\)"
- (regexp-quote "?="))))
-
-;;; utilities for variables.
-
-(defun ew-dynamic-options ()
- (cons
- ew-default-mime-charset
- (logior
- (if ew-decode-sticked-encoded-word 1 0)
- (if ew-decode-quoted-encoded-word 2 0)
- (if ew-ignore-75bytes-limit 4 0)
- (if ew-ignore-76bytes-limit 8 0)
- (if ew-permit-sticked-comment 16 0)
- (if ew-permit-sticked-special 32 0)
- (if ew-remove-bare-crlf 64 0)
- )))
+++ /dev/null
-;;; eword-decode.el --- RFC 2047 based encoded-word decoder for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: ENAMI Tsugutomo <enami@sys.ptg.sony.co.jp>
-;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Tanaka Akira <akr@jaist.ac.jp>
-;; Maintainer: Tanaka Akira <akr@jaist.ac.jp>
-;; Created: 1995/10/03
-;; Original: 1992/07/20 ENAMI Tsugutomo's `mime.el'.
-;; Renamed: 1993/06/03 to tiny-mime.el
-;; Renamed: 1995/10/03 from tiny-mime.el (split off encoder)
-;; Renamed: 1997/02/22 from tm-ew-d.el
-;; Keywords: encoded-word, MIME, multilingual, header, mail, news
-
-;; This file is part of FLAM (Faithful Library About MIME).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'std11)
-(require 'mel)
-(require 'mime-def)
-
-(require 'ew-dec)
-
-(defgroup eword-decode nil
- "Encoded-word decoding"
- :group 'mime)
-
-;;; TEST
-
-(defvar rotate-memo nil)
-(defmacro rotate-memo (var val)
- `(when rotate-memo
- (unless (boundp ',var) (setq ,var ()))
- (setq ,var (cons ,val ,var))
- (let ((tmp (last ,var (- (length ,var) 100))))
- (when tmp (setcdr tmp nil)))
- ,var))
-
-;;; @ variables
-;;;
-
-(defcustom eword-decode-sticked-encoded-word nil
- "*If non-nil, decode encoded-words sticked on atoms,
-other encoded-words, etc.
-however this behaviour violates RFC2047."
- :group 'eword-decode
- :type 'boolean)
-
-(defcustom eword-decode-quoted-encoded-word nil
- "*If non-nil, decode encoded-words in quoted-string
-however this behaviour violates RFC2047."
- :group 'eword-decode
- :type 'boolean)
-
-
-;;; @ MIME encoded-word definition
-;;;
-
-(defconst eword-encoded-word-prefix-regexp
- (concat (regexp-quote "=?")
- "\\(" mime-charset-regexp "\\)"
- (regexp-quote "?")
- "\\(B\\|Q\\)"
- (regexp-quote "?")))
-(defconst eword-encoded-word-suffix-regexp
- (regexp-quote "?="))
-
-(defconst eword-encoded-text-in-unstructured-regexp "[!->@-~]+")
-(defconst eword-encoded-word-in-unstructured-regexp
- (concat eword-encoded-word-prefix-regexp
- "\\(" eword-encoded-text-in-unstructured-regexp "\\)"
- eword-encoded-word-suffix-regexp))
-(defconst eword-after-encoded-word-in-unstructured-regexp "\\([ \t]\\|$\\)")
-
-(defconst eword-encoded-text-in-phrase-regexp "[-A-Za-z0-9!*+/=_]+")
-(defconst eword-encoded-word-in-phrase-regexp
- (concat eword-encoded-word-prefix-regexp
- "\\(" eword-encoded-text-in-phrase-regexp "\\)"
- eword-encoded-word-suffix-regexp))
-(defconst eword-after-encoded-word-in-phrase-regexp "\\([ \t]\\|$\\)")
-
-(defconst eword-encoded-text-in-comment-regexp "[]!-'*->@-[^-~]+")
-(defconst eword-encoded-word-in-comment-regexp
- (concat eword-encoded-word-prefix-regexp
- "\\(" eword-encoded-text-in-comment-regexp "\\)"
- eword-encoded-word-suffix-regexp))
-(defconst eword-after-encoded-word-in-comment-regexp "\\([ \t()\\\\]\\|$\\)")
-
-(defconst eword-encoded-text-in-quoted-string-regexp "[]!#->@-[^-~]+")
-(defconst eword-encoded-word-in-quoted-string-regexp
- (concat eword-encoded-word-prefix-regexp
- "\\(" eword-encoded-text-in-quoted-string-regexp "\\)"
- eword-encoded-word-suffix-regexp))
-(defconst eword-after-encoded-word-in-quoted-string-regexp "\\([ \t\"\\\\]\\|$\\)")
-
-; obsolete
-(defconst eword-encoded-text-regexp eword-encoded-text-in-unstructured-regexp)
-(defconst eword-encoded-word-regexp eword-encoded-word-in-unstructured-regexp)
-
-
-;;; @@ Base64
-;;;
-
-(defconst base64-token-regexp "[A-Za-z0-9+/]")
-(defconst base64-token-padding-regexp "[A-Za-z0-9+/=]")
-
-(defconst eword-B-encoded-text-regexp
- (concat "\\(\\("
- base64-token-regexp
- base64-token-regexp
- base64-token-regexp
- base64-token-regexp
- "\\)*"
- base64-token-regexp
- base64-token-regexp
- base64-token-padding-regexp
- base64-token-padding-regexp
- "\\)"))
-
-;; (defconst eword-B-encoding-and-encoded-text-regexp
-;; (concat "\\(B\\)\\?" eword-B-encoded-text-regexp))
-
-
-;;; @@ Quoted-Printable
-;;;
-
-(defconst eword-Q-encoded-text-regexp
- (concat "\\([^=?]\\|" quoted-printable-octet-regexp "\\)+"))
-;; (defconst eword-Q-encoding-and-encoded-text-regexp
-;; (concat "\\(Q\\)\\?" eword-Q-encoded-text-regexp))
-
-
-;;; @ internal utilities
-;;;
-
-(defun eword-decode-first-encoded-words (string
- eword-regexp
- after-regexp
- &optional must-unfold)
- "Decode MIME encoded-words in beginning of STRING.
-
-EWORD-REGEXP is the regexp that matches a encoded-word.
-Usual value is
-eword-encoded-word-in-unstructured-regexp,
-eword-encoded-text-in-phrase-regexp,
-eword-encoded-word-in-comment-regexp or
-eword-encoded-word-in-quoted-string-regexp.
-
-AFTER-REGEXP is the regexp that matches a after encoded-word.
-Usual value is
-eword-after-encoded-word-in-unstructured-regexp,
-eword-after-encoded-text-in-phrase-regexp,
-eword-after-encoded-word-in-comment-regexp or
-eword-after-encoded-word-in-quoted-string-regexp.
-
-If beginning of STRING matches EWORD-REGEXP with AFTER-REGEXP,
-returns a cons cell of decoded string(sequence of characters) and
-the rest(sequence of octets).
-
-If beginning of STRING does not matches EWORD-REGEXP and AFTER-REGEXP,
-returns nil.
-
-If an encoded-word is broken or your emacs implementation can not
-decode the charset included in it, it is returned in decoded part
-as encoded-word form.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-words (generated by bad manner MUA
-such as a version of Net$cape)."
- (if eword-decode-sticked-encoded-word (setq after-regexp ""))
- (let* ((between-ewords-regexp
- (if eword-decode-sticked-encoded-word
- "\\(\n?[ \t]\\)*"
- "\\(\n?[ \t]\\)+"))
- (between-ewords-eword-after-regexp
- (concat "\\`\\(" between-ewords-regexp "\\)"
- "\\(" eword-regexp "\\)"
- after-regexp))
- (eword-after-regexp
- (concat "\\`\\(" eword-regexp "\\)" after-regexp))
- (src string) ; sequence of octets.
- (dst "")) ; sequence of characters.
- (if (string-match eword-after-regexp src)
- (let* (p
- (q (match-end 1))
- (ew (substring src 0 q))
- (dw (eword-decode-encoded-word ew must-unfold)))
- (setq dst (concat dst dw)
- src (substring src q))
- (if (not (string= ew dw))
- (progn
- (while
- (and
- (string-match between-ewords-eword-after-regexp src)
- (progn
- (setq p (match-end 1)
- q (match-end 3)
- ew (substring src p q)
- dw (eword-decode-encoded-word ew must-unfold))
- (if (string= ew dw)
- (progn
- (setq dst (concat dst (substring src 0 q))
- src (substring src q))
- nil)
- t)))
- (setq dst (concat dst dw)
- src (substring src q)))))
- (cons dst src))
- nil)))
-
-(defun eword-decode-entire-string (string
- eword-regexp
- after-regexp
- safe-regexp
- escape ; ?\\ or nil.
- delimiters ; list of chars.
- chars-must-be-quote
- must-unfold
- code-conversion)
- (if (and code-conversion
- (not (mime-charset-to-coding-system code-conversion)))
- (setq code-conversion default-mime-charset))
- (let ((equal-safe-regexp (concat "\\`=?" safe-regexp))
- (dst "")
- (buf "")
- (src string)
- (ew-enable t))
- (while (< 0 (length src))
- (let ((ch (aref src 0))
- (decoded (and
- ew-enable
- (eword-decode-first-encoded-words src
- eword-regexp after-regexp must-unfold))))
- (if (and (not (string= buf ""))
- (or decoded (memq ch delimiters)))
- (setq dst (concat dst
- (std11-wrap-as-quoted-pairs
- (decode-mime-charset-string buf code-conversion)
- chars-must-be-quote))
- buf ""))
- (cond
- (decoded
- (setq dst (concat dst
- (std11-wrap-as-quoted-pairs
- (car decoded)
- chars-must-be-quote))
- src (cdr decoded)))
- ((memq ch delimiters)
- (setq dst (concat dst (list ch))
- src (substring src 1)
- ew-enable t))
- ((eq ch escape)
- (setq buf (concat buf (list (aref src 1)))
- src (substring src 2)
- ew-enable t))
- ((string-match "\\`[ \t\n]+" src)
- (setq buf (concat buf (substring src 0 (match-end 0)))
- src (substring src (match-end 0))
- ew-enable t))
- ((and (string-match equal-safe-regexp src)
- (< 0 (match-end 0)))
- (setq buf (concat buf (substring src 0 (match-end 0)))
- src (substring src (match-end 0))
- ew-enable eword-decode-sticked-encoded-word))
- (t (error "something wrong")))))
- (if (not (string= buf ""))
- (setq dst (concat dst
- (std11-wrap-as-quoted-pairs
- (decode-mime-charset-string buf code-conversion)
- chars-must-be-quote))))
- dst))
-
-
-;;; @ for string
-;;;
-
-(defun eword-decode-unstructured (string code-conversion &optional must-unfold)
- (eword-decode-entire-string
- string
- eword-encoded-word-in-unstructured-regexp
- eword-after-encoded-word-in-unstructured-regexp
- "[^ \t\n=]*"
- nil
- nil
- nil
- must-unfold
- code-conversion))
-
-(defun eword-decode-comment (string code-conversion &optional must-unfold)
- (eword-decode-entire-string
- string
- eword-encoded-word-in-comment-regexp
- eword-after-encoded-word-in-comment-regexp
- "[^ \t\n()\\\\=]*"
- ?\\
- '(?\( ?\))
- '(?\( ?\) ?\\ ?\r ?\n)
- must-unfold
- code-conversion))
-
-(defun eword-decode-quoted-string (string code-conversion &optional must-unfold)
- (eword-decode-entire-string
- string
- eword-encoded-word-in-quoted-string-regexp
- eword-after-encoded-word-in-quoted-string-regexp
- "[^ \t\n\"\\\\=]*"
- ?\\
- '(?\")
- '(?\" ?\\ ?\r ?\n)
- must-unfold
- code-conversion))
-
-(defun eword-decode-string (string &optional must-unfold code-conversion)
- "Decode MIME encoded-words in STRING.
-
-STRING is unfolded before decoding.
-
-If an encoded-word is broken or your emacs implementation can not
-decode the charset included in it, it is not decoded.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-words (generated by bad manner MUA
-such as a version of Net$cape).
-
-If CODE-CONVERSION is nil, it decodes only encoded-words. If it is
-mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
-Otherwise it decodes non-ASCII bit patterns as the
-default-mime-charset."
- (eword-decode-unstructured
- (std11-unfold-string string)
- code-conversion
- must-unfold))
-
-
-;;; @ for region
-;;;
-
-(defun eword-decode-region (start end &optional unfolding must-unfold
- code-conversion)
- "Decode MIME encoded-words in region between START and END.
-
-If UNFOLDING is not nil, it unfolds before decoding.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-words (generated by bad manner MUA
-such as a version of Net$cape).
-
-If CODE-CONVERSION is nil, it decodes only encoded-words. If it is
-mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
-Otherwise it decodes non-ASCII bit patterns as the
-default-mime-charset."
- (interactive "*r")
- (rotate-memo args-eword-decode-region
- (list start end (buffer-substring start end) unfolding must-unfold code-conversion))
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (if unfolding
- (eword-decode-unfold)
- )
- (let ((str (eword-decode-unstructured
- (buffer-substring (point-min) (point-max))
- code-conversion
- must-unfold)))
- (delete-region (point-min) (point-max))
- (insert str)))))
-
-
-;;; @ for message header
-;;;
-
-(defcustom eword-decode-ignored-field-list
- '(Newsgroups Path Lines Nntp-Posting-Host Received Message-Id Date)
- "*List of field-names to be ignored when decoding.
-Each field name must be symbol."
- :group 'eword-decode
- :type '(repeat symbol))
-
-(defcustom eword-decode-structured-field-list
- '(Reply-To Resent-Reply-To From Resent-From Sender Resent-Sender
- To Resent-To Cc Resent-Cc Bcc Resent-Bcc Dcc
- Mime-Version Content-Type Content-Transfer-Encoding
- Content-Disposition)
- "*List of field-names to decode as structured field.
-Each field name must be symbol."
- :group 'eword-decode
- :type '(repeat symbol))
-
-(defun eword-decode-header (&optional code-conversion separator)
- "Decode MIME encoded-words in header fields.
-If CODE-CONVERSION is nil, it decodes only encoded-words. If it is
-mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
-Otherwise it decodes non-ASCII bit patterns as the
-default-mime-charset.
-If SEPARATOR is not nil, it is used as header separator."
- (interactive "*")
- (rotate-memo args-eword-decode-header (list code-conversion))
- (unless code-conversion
- (message "eword-decode-header is called with no code-conversion")
- (sit-for 2))
- (if (and code-conversion
- (not (mime-charset-to-coding-system code-conversion)))
- (setq code-conversion default-mime-charset))
- (save-excursion
- (save-restriction
- (std11-narrow-to-header separator)
- (rotate-memo args-h-eword-decode-header (buffer-substring (point-min) (point-max)))
- (if code-conversion
- (let (beg p end field-name field-body decoded)
- (goto-char (point-min))
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq beg (match-beginning 0)
- p (match-end 0)
- field-name (buffer-substring beg (1- p))
- end (std11-field-end)
- field-body (buffer-substring p end)
- decoded (ew-decode-field
- field-name
- (ew-lf-crlf-to-crlf field-body)))
- (unless (equal field-body decoded)
- (setq decoded (ew-crlf-refold
- decoded
- (1+ (string-width field-name))
- fill-column)))
- (delete-region p end)
- (insert (ew-crlf-to-lf decoded))))
- (eword-decode-region (point-min) (point-max) t nil nil)
- ))))
-
-(defun eword-decode-unfold ()
- (goto-char (point-min))
- (let (field beg end)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq beg (match-beginning 0)
- end (std11-field-end))
- (setq field (buffer-substring beg end))
- (if (string-match eword-encoded-word-regexp field)
- (save-restriction
- (narrow-to-region (goto-char beg) end)
- (while (re-search-forward "\n\\([ \t]\\)" nil t)
- (replace-match (match-string 1))
- )
- (goto-char (point-max))
- ))
- )))
-
-
-;;; @ encoded-word decoder
-;;;
-
-(defvar eword-decode-encoded-word-error-handler
- 'eword-decode-encoded-word-default-error-handler)
-
-(defvar eword-warning-face nil
- "Face used for invalid encoded-word.")
-
-(defun eword-decode-encoded-word-default-error-handler (word signal)
- (and (add-text-properties 0 (length word)
- (and eword-warning-face
- (list 'face eword-warning-face))
- word)
- word))
-
-(defun eword-decode-encoded-word (word &optional must-unfold)
- "Decode WORD if it is an encoded-word.
-
-If your emacs implementation can not decode the charset of WORD, it
-returns WORD. Similarly the encoded-word is broken, it returns WORD.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-word (generated by bad manner MUA such
-as a version of Net$cape)."
- (or (if (string-match eword-encoded-word-regexp word)
- (let ((charset
- (substring word (match-beginning 1) (match-end 1))
- )
- (encoding
- (upcase
- (substring word (match-beginning 2) (match-end 2))
- ))
- (text
- (substring word (match-beginning 3) (match-end 3))
- ))
- (condition-case err
- (eword-decode-encoded-text charset encoding text must-unfold)
- (error
- (funcall eword-decode-encoded-word-error-handler word err)
- ))
- ))
- word))
-
-
-;;; @ encoded-text decoder
-;;;
-
-(defun eword-decode-encoded-text (charset encoding string
- &optional must-unfold)
- "Decode STRING as an encoded-text.
-
-If your emacs implementation can not decode CHARSET, it returns nil.
-
-If ENCODING is not \"B\" or \"Q\", it occurs error.
-So you should write error-handling code if you don't want break by errors.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-text (generated by bad manner MUA such
-as a version of Net$cape)."
- (let ((cs (mime-charset-to-coding-system charset)))
- (if cs
- (let ((dest
- (cond
- ((string-equal "B" encoding)
- (if (and (string-match eword-B-encoded-text-regexp string)
- (string-equal string (match-string 0 string)))
- (base64-decode-string string)
- (error "Invalid encoded-text %s" string)))
- ((string-equal "Q" encoding)
- (if (and (string-match eword-Q-encoded-text-regexp string)
- (string-equal string (match-string 0 string)))
- (q-encoding-decode-string string)
- (error "Invalid encoded-text %s" string)))
- (t
- (error "Invalid encoding %s" encoding)
- )))
- )
- (when dest
- (setq dest (decode-mime-charset-string dest charset))
- (if must-unfold
- (mapconcat (function
- (lambda (chr)
- (cond ((eq chr ?\n) "")
- ((eq chr ?\t) " ")
- (t (char-to-string chr)))
- ))
- (std11-unfold-string dest)
- "")
- dest))))))
-
-
-;;; @ lexical analyze
-;;;
-
-(defvar eword-lexical-analyze-cache nil)
-(defvar eword-lexical-analyze-cache-max 299
- "*Max position of eword-lexical-analyze-cache.
-It is max size of eword-lexical-analyze-cache - 1.")
-
-(defcustom eword-lexical-analyzers
- '(eword-analyze-quoted-string
- eword-analyze-domain-literal
- eword-analyze-comment
- eword-analyze-spaces
- eword-analyze-special
- eword-analyze-encoded-word
- eword-analyze-atom)
- "*List of functions to return result of lexical analyze.
-Each function must have two arguments: STRING and MUST-UNFOLD.
-STRING is the target string to be analyzed.
-If MUST-UNFOLD is not nil, each function must unfold and eliminate
-bare-CR and bare-LF from the result even if they are included in
-content of the encoded-word.
-Each function must return nil if it can not analyze STRING as its
-format.
-
-Previous function is preferred to next function. If a function
-returns nil, next function is used. Otherwise the return value will
-be the result."
- :group 'eword-decode
- :type '(repeat function))
-
-(defun eword-analyze-quoted-string (string &optional must-unfold)
- (let ((p (std11-check-enclosure string ?\" ?\")))
- (if p
- (cons (cons 'quoted-string
- (if eword-decode-quoted-encoded-word
- (eword-decode-quoted-string
- (substring string 0 p)
- default-mime-charset)
- (std11-wrap-as-quoted-string
- (decode-mime-charset-string
- (std11-strip-quoted-pair (substring string 1 (1- p)))
- default-mime-charset))))
- (substring string p)))
- ))
-
-(defun eword-analyze-domain-literal (string &optional must-unfold)
- (std11-analyze-domain-literal string))
-
-(defun eword-analyze-comment (string &optional must-unfold)
- (let ((len (length string)))
- (if (and (< 0 len) (eq (aref string 0) ?\())
- (let ((p 0))
- (while (and p (< p len) (eq (aref string p) ?\())
- (setq p (std11-check-enclosure string ?\( ?\) t p)))
- (setq p (or p len))
- (cons (cons 'comment
- (eword-decode-comment
- (std11-unfold-string (substring string 0 p))
- default-mime-charset))
- (substring string p)))
- nil)))
-
-(defun eword-analyze-spaces (string &optional must-unfold)
- (std11-analyze-spaces string))
-
-(defun eword-analyze-special (string &optional must-unfold)
- (std11-analyze-special string))
-
-(defun eword-analyze-encoded-word (string &optional must-unfold)
- (let ((decoded (eword-decode-first-encoded-words
- string
- eword-encoded-word-in-phrase-regexp
- eword-after-encoded-word-in-phrase-regexp
- must-unfold)))
- (if decoded
- (let ((s (car decoded)))
- (while (or (string-match std11-atom-regexp s)
- (string-match std11-spaces-regexp s))
- (setq s (substring s (match-end 0))))
- (if (= (length s) 0)
- (cons (cons 'atom (car decoded)) (cdr decoded))
- (cons (cons 'quoted-string
- (std11-wrap-as-quoted-string (car decoded)))
- (cdr decoded)))))))
-
-(defun eword-analyze-atom (string &optional must-unfold)
- (if (let ((enable-multibyte-characters nil))
- (string-match std11-atom-regexp string))
- (let ((end (match-end 0)))
- (if (and eword-decode-sticked-encoded-word
- (string-match eword-encoded-word-in-phrase-regexp
- (substring string 0 end))
- (< 0 (match-beginning 0)))
- (setq end (match-beginning 0)))
- (cons (cons 'atom (decode-mime-charset-string
- (substring string 0 end)
- default-mime-charset))
- (substring string end)
- ))))
-
-(defun eword-lexical-analyze-internal (string must-unfold)
- (let ((last 'eword-analyze-spaces)
- dest ret)
- (while (not (string-equal string ""))
- (setq ret
- (let ((rest eword-lexical-analyzers)
- func r)
- (while (and (setq func (car rest))
- (or
- (and
- (not eword-decode-sticked-encoded-word)
- (not (eq last 'eword-analyze-spaces))
- (eq func 'eword-analyze-encoded-word))
- (null (setq r (funcall func string must-unfold))))
- )
- (setq rest (cdr rest)))
- (setq last func)
- (or r `((error . ,string) . ""))
- ))
- (setq dest (cons (car ret) dest))
- (setq string (cdr ret))
- )
- (nreverse dest)
- ))
-
-(defun eword-lexical-analyze (string &optional must-unfold)
- "Return lexical analyzed list corresponding STRING.
-It is like std11-lexical-analyze, but it decodes non us-ascii
-characters encoded as encoded-words or invalid \"raw\" format.
-\"Raw\" non us-ascii characters are regarded as variable
-`default-mime-charset'."
- (let* ((str (copy-sequence string))
- (key (cons str (cons default-mime-charset must-unfold)))
- ret)
- (set-text-properties 0 (length str) nil str)
- (if (setq ret (assoc key eword-lexical-analyze-cache))
- (cdr ret)
- (setq ret (eword-lexical-analyze-internal str must-unfold))
- (setq eword-lexical-analyze-cache
- (cons (cons key ret)
- (last eword-lexical-analyze-cache
- eword-lexical-analyze-cache-max)))
- ret)))
-
-(defun eword-decode-token (token)
- (cdr token))
-
-(defun eword-decode-and-fold-structured-field
- (string start-column &optional max-column must-unfold)
- "Decode and fold (fill) STRING as structured field body.
-It decodes non us-ascii characters in FULL-NAME encoded as
-encoded-words or invalid \"raw\" string. \"Raw\" non us-ascii
-characters are regarded as variable `default-mime-charset'.
-
-If an encoded-word is broken or your emacs implementation can not
-decode the charset included in it, it is not decoded.
-
-If MAX-COLUMN is omitted, `fill-column' is used.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-words (generated by bad manner MUA
-such as a version of Net$cape)."
- (rotate-memo args-eword-decode-and-fold-structured-field
- (list string start-column max-column must-unfold))
- (or max-column
- (setq max-column fill-column))
- (let* ((field-name (make-string (1- start-column) ?X))
- (field-body (ew-lf-crlf-to-crlf string))
- (ew-decode-field-default-syntax '(ew-scan-unibyte-std11))
- (decoded (ew-decode-field field-name field-body)))
- (unless (equal field-body decoded)
- (setq decoded (ew-crlf-refold decoded start-column max-column)))
- (ew-crlf-to-lf decoded)))
-
-(defun eword-decode-and-unfold-structured-field (string)
- "Decode and unfold STRING as structured field body.
-It decodes non us-ascii characters in FULL-NAME encoded as
-encoded-words or invalid \"raw\" string. \"Raw\" non us-ascii
-characters are regarded as variable `default-mime-charset'.
-
-If an encoded-word is broken or your emacs implementation can not
-decode the charset included in it, it is not decoded."
- (rotate-memo args-eword-decode-and-unfold-structured-field (list string))
- (let* ((ew-decode-field-default-syntax '(ew-scan-unibyte-std11))
- (decoded (ew-decode-field "" (ew-lf-crlf-to-crlf string))))
- (ew-crlf-to-lf (ew-crlf-unfold decoded))))
-
-(defun eword-decode-structured-field-body (string &optional must-unfold
- start-column max-column)
- "Decode non us-ascii characters in STRING as structured field body.
-STRING is unfolded before decoding.
-
-It decodes non us-ascii characters in FULL-NAME encoded as
-encoded-words or invalid \"raw\" string. \"Raw\" non us-ascii
-characters are regarded as variable `default-mime-charset'.
-
-If an encoded-word is broken or your emacs implementation can not
-decode the charset included in it, it is not decoded.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-words (generated by bad manner MUA
-such as a version of Net$cape)."
- (rotate-memo args-eword-decode-structured-field-body
- (list string must-unfold start-column max-column))
- (if start-column
- ;; fold with max-column
- (eword-decode-and-fold-structured-field
- string start-column max-column must-unfold)
- ;; Don't fold
- (let* ((ew-decode-field-default-syntax '(ew-scan-unibyte-std11))
- (decoded (ew-decode-field "" (ew-lf-crlf-to-crlf string))))
- (ew-crlf-to-lf decoded))))
-
-(defun eword-decode-unstructured-field-body (string &optional must-unfold)
- "Decode non us-ascii characters in STRING as unstructured field body.
-STRING is unfolded before decoding.
-
-It decodes non us-ascii characters in FULL-NAME encoded as
-encoded-words or invalid \"raw\" string. \"Raw\" non us-ascii
-characters are regarded as variable `default-mime-charset'.
-
-If an encoded-word is broken or your emacs implementation can not
-decode the charset included in it, it is not decoded.
-
-If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
-if there are in decoded encoded-words (generated by bad manner MUA
-such as a version of Net$cape)."
- (rotate-memo args-eword-decode-unstructured-field-body
- (list string must-unfold))
- (let ((decoded (ew-decode-field "" (ew-lf-crlf-to-crlf string))))
- (ew-crlf-to-lf (ew-crlf-unfold decoded))))
-
-(defun eword-extract-address-components (string)
- "Extract full name and canonical address from STRING.
-Returns a list of the form (FULL-NAME CANONICAL-ADDRESS).
-If no name can be extracted, FULL-NAME will be nil.
-It decodes non us-ascii characters in FULL-NAME encoded as
-encoded-words or invalid \"raw\" string. \"Raw\" non us-ascii
-characters are regarded as variable `default-mime-charset'."
- (rotate-memo args-eword-extract-address-components (list string))
- (let* ((structure (car (std11-parse-address
- (eword-lexical-analyze
- (std11-unfold-string string) 'must-unfold))))
- (phrase (std11-full-name-string structure))
- (address (std11-address-string structure))
- )
- (list phrase address)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'eword-decode)
-
-;;; eword-decode.el ends here
+++ /dev/null
-;;; eword-encode.el --- RFC 2047 based encoded-word encoder for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: encoded-word, MIME, multilingual, header, mail, news
-
-;; This file is part of SEMI (Spadework for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-(require 'mel)
-(require 'std11)
-(require 'mime-def)
-(require 'eword-decode)
-
-
-;;; @ variables
-;;;
-
-(defvar eword-field-encoding-method-alist
- '(("X-Nsubject" . iso-2022-jp-2)
- ("Newsgroups" . nil)
- ("Message-ID" . nil)
- (t . mime)
- )
- "*Alist to specify field encoding method.
-Its key is field-name, value is encoding method.
-
-If method is `mime', this field will be encoded into MIME format.
-
-If method is a MIME-charset, this field will be encoded as the charset
-when it must be convert into network-code.
-
-If method is `default-mime-charset', this field will be encoded as
-variable `default-mime-charset' when it must be convert into
-network-code.
-
-If method is nil, this field will not be encoded.")
-
-(defvar eword-charset-encoding-alist
- '((us-ascii . nil)
- (iso-8859-1 . "Q")
- (iso-8859-2 . "Q")
- (iso-8859-3 . "Q")
- (iso-8859-4 . "Q")
- (iso-8859-5 . "Q")
- (koi8-r . "Q")
- (iso-8859-7 . "Q")
- (iso-8859-8 . "Q")
- (iso-8859-9 . "Q")
- (iso-2022-jp . "B")
- (iso-2022-kr . "B")
- (gb2312 . "B")
- (cn-gb . "B")
- (cn-gb-2312 . "B")
- (euc-kr . "B")
- (iso-2022-jp-2 . "B")
- (iso-2022-int-1 . "B")
- ))
-
-
-;;; @ encoded-text encoder
-;;;
-
-(defun eword-encode-text (charset encoding string &optional mode)
- "Encode STRING as an encoded-word, and return the result.
-CHARSET is a symbol to indicate MIME charset of the encoded-word.
-ENCODING allows \"B\" or \"Q\".
-MODE is allows `text', `comment', `phrase' or nil. Default value is
-`phrase'."
- (let ((text
- (cond ((string= encoding "B")
- (base64-encode-string string))
- ((string= encoding "Q")
- (q-encoding-encode-string string mode))
- )
- ))
- (if text
- (concat "=?" (upcase (symbol-name charset)) "?"
- encoding "?" text "?=")
- )))
-
-
-;;; @ charset word
-;;;
-
-(defsubst eword-encode-char-type (character)
- (if (or (eq character ? )(eq character ?\t))
- nil
- (char-charset character)
- ))
-
-(defun eword-encode-divide-into-charset-words (string)
- (let ((len (length string))
- dest)
- (while (> len 0)
- (let* ((chr (sref string 0))
- (charset (eword-encode-char-type chr))
- (i (char-length chr)))
- (while (and (< i len)
- (setq chr (sref string i))
- (eq charset (eword-encode-char-type chr))
- )
- (setq i (char-next-index chr i))
- )
- (setq dest (cons (cons charset (substring string 0 i)) dest)
- string (substring string i)
- len (- len i)
- )))
- (nreverse dest)
- ))
-
-
-;;; @ word
-;;;
-
-(defun eword-encode-charset-words-to-words (charset-words)
- (let (dest)
- (while charset-words
- (let* ((charset-word (car charset-words))
- (charset (car charset-word))
- )
- (if charset
- (let ((charsets (list charset))
- (str (cdr charset-word))
- )
- (catch 'tag
- (while (setq charset-words (cdr charset-words))
- (setq charset-word (car charset-words)
- charset (car charset-word))
- (if (null charset)
- (throw 'tag nil)
- )
- (or (memq charset charsets)
- (setq charsets (cons charset charsets))
- )
- (setq str (concat str (cdr charset-word)))
- ))
- (setq dest (cons (cons charsets str) dest))
- )
- (setq dest (cons charset-word dest)
- charset-words (cdr charset-words)
- ))))
- (nreverse dest)
- ))
-
-
-;;; @ rule
-;;;
-
-(defmacro tm-eword::make-rword (text charset encoding type)
- (` (list (, text)(, charset)(, encoding)(, type))))
-(defmacro tm-eword::rword-text (rword)
- (` (car (, rword))))
-(defmacro tm-eword::rword-charset (rword)
- (` (car (cdr (, rword)))))
-(defmacro tm-eword::rword-encoding (rword)
- (` (car (cdr (cdr (, rword))))))
-(defmacro tm-eword::rword-type (rword)
- (` (car (cdr (cdr (cdr (, rword)))))))
-
-(defun tm-eword::find-charset-rule (charsets)
- (if charsets
- (let* ((charset (charsets-to-mime-charset charsets))
- (encoding (cdr (assq charset eword-charset-encoding-alist)))
- )
- (list charset encoding)
- )))
-
-(defun tm-eword::words-to-ruled-words (wl &optional mode)
- (mapcar (function
- (lambda (word)
- (let ((ret (tm-eword::find-charset-rule (car word))))
- (tm-eword::make-rword (cdr word) (car ret)(nth 1 ret) mode)
- )))
- wl))
-
-(defun tm-eword::space-process (seq)
- (let (prev a ac b c cc)
- (while seq
- (setq b (car seq))
- (setq seq (cdr seq))
- (setq c (car seq))
- (setq cc (tm-eword::rword-charset c))
- (if (null (tm-eword::rword-charset b))
- (progn
- (setq a (car prev))
- (setq ac (tm-eword::rword-charset a))
- (if (and (tm-eword::rword-encoding a)
- (tm-eword::rword-encoding c))
- (cond ((eq ac cc)
- (setq prev (cons
- (cons (concat (car a)(car b)(car c))
- (cdr a))
- (cdr prev)
- ))
- (setq seq (cdr seq))
- )
- (t
- (setq prev (cons
- (cons (concat (car a)(car b))
- (cdr a))
- (cdr prev)
- ))
- ))
- (setq prev (cons b prev))
- ))
- (setq prev (cons b prev))
- ))
- (reverse prev)
- ))
-
-(defun tm-eword::split-string (str &optional mode)
- (tm-eword::space-process
- (tm-eword::words-to-ruled-words
- (eword-encode-charset-words-to-words
- (eword-encode-divide-into-charset-words str))
- mode)))
-
-
-;;; @ length
-;;;
-
-(defun tm-eword::encoded-word-length (rword)
- (let ((string (tm-eword::rword-text rword))
- (charset (tm-eword::rword-charset rword))
- (encoding (tm-eword::rword-encoding rword))
- ret)
- (setq ret
- (cond ((string-equal encoding "B")
- (setq string (encode-mime-charset-string string charset))
- (base64-encoded-length string)
- )
- ((string-equal encoding "Q")
- (setq string (encode-mime-charset-string string charset))
- (q-encoding-encoded-length string
- (tm-eword::rword-type rword))
- )))
- (if ret
- (cons (+ 7 (length (symbol-name charset)) ret) string)
- )))
-
-
-;;; @ encode-string
-;;;
-
-(defun tm-eword::encode-string-1 (column rwl)
- (let* ((rword (car rwl))
- (ret (tm-eword::encoded-word-length rword))
- string len)
- (if (null ret)
- (cond ((and (setq string (car rword))
- (or (<= (setq len (+ (length string) column)) 76)
- (<= column 1))
- )
- (setq rwl (cdr rwl))
- )
- (t
- (setq string "\n ")
- (setq len 1)
- ))
- (cond ((and (setq len (car ret))
- (<= (+ column len) 76)
- )
- (setq string
- (eword-encode-text
- (tm-eword::rword-charset rword)
- (tm-eword::rword-encoding rword)
- (cdr ret)
- (tm-eword::rword-type rword)
- ))
- (setq len (+ (length string) column))
- (setq rwl (cdr rwl))
- )
- (t
- (setq string (car rword))
- (let* ((p 0) np
- (str "") nstr)
- (while (and (< p len)
- (progn
- (setq np (char-next-index (sref string p) p))
- (setq nstr (substring string 0 np))
- (setq ret (tm-eword::encoded-word-length
- (cons nstr (cdr rword))
- ))
- (setq nstr (cdr ret))
- (setq len (+ (car ret) column))
- (<= len 76)
- ))
- (setq str nstr
- p np))
- (if (string-equal str "")
- (setq string "\n "
- len 1)
- (setq rwl (cons (cons (substring string p) (cdr rword))
- (cdr rwl)))
- (setq string
- (eword-encode-text
- (tm-eword::rword-charset rword)
- (tm-eword::rword-encoding rword)
- str
- (tm-eword::rword-type rword)))
- (setq len (+ (length string) column))
- )
- )))
- )
- (list string len rwl)
- ))
-
-(defun tm-eword::encode-rwl (column rwl)
- (let (ret dest ps special str ew-f pew-f)
- (while rwl
- (setq ew-f (nth 2 (car rwl)))
- (if (and pew-f ew-f)
- (setq rwl (cons '(" ") rwl)
- pew-f nil)
- (setq pew-f ew-f)
- )
- (setq ret (tm-eword::encode-string-1 column rwl))
- (setq str (car ret))
- (if (eq (elt str 0) ?\n)
- (if (eq special ?\()
- (progn
- (setq dest (concat dest "\n ("))
- (setq ret (tm-eword::encode-string-1 2 rwl))
- (setq str (car ret))
- ))
- (cond ((eq special ? )
- (if (string= str "(")
- (setq ps t)
- (setq dest (concat dest " "))
- (setq ps nil)
- ))
- ((eq special ?\()
- (if ps
- (progn
- (setq dest (concat dest " ("))
- (setq ps nil)
- )
- (setq dest (concat dest "("))
- )
- )))
- (cond ((string= str " ")
- (setq special ? )
- )
- ((string= str "(")
- (setq special ?\()
- )
- (t
- (setq special nil)
- (setq dest (concat dest str))
- ))
- (setq column (nth 1 ret)
- rwl (nth 2 ret))
- )
- (list dest column)
- ))
-
-(defun tm-eword::encode-string (column str &optional mode)
- (tm-eword::encode-rwl column (tm-eword::split-string str mode))
- )
-
-
-;;; @ converter
-;;;
-
-(defun tm-eword::phrase-to-rwl (phrase)
- (let (token type dest str)
- (while phrase
- (setq token (car phrase))
- (setq type (car token))
- (cond ((eq type 'quoted-string)
- (setq str (concat "\"" (cdr token) "\""))
- (setq dest
- (append dest
- (list
- (let ((ret (tm-eword::find-charset-rule
- (find-non-ascii-charset-string str))))
- (tm-eword::make-rword
- str (car ret)(nth 1 ret) 'phrase)
- )
- )))
- )
- ((eq type 'comment)
- (setq dest
- (append dest
- '(("(" nil nil))
- (tm-eword::words-to-ruled-words
- (eword-encode-charset-words-to-words
- (eword-encode-divide-into-charset-words
- (cdr token)))
- 'comment)
- '((")" nil nil))
- ))
- )
- (t
- (setq dest
- (append dest
- (tm-eword::words-to-ruled-words
- (eword-encode-charset-words-to-words
- (eword-encode-divide-into-charset-words
- (cdr token))
- ) 'phrase)))
- ))
- (setq phrase (cdr phrase))
- )
- (tm-eword::space-process dest)
- ))
-
-(defun eword-addr-seq-to-rwl (seq)
- (let (dest pname)
- (while seq
- (let* ((token (car seq))
- (name (car token))
- )
- (cond ((eq name 'spaces)
- (setq dest (nconc dest (list (list (cdr token) nil nil))))
- )
- ((eq name 'comment)
- (setq dest
- (nconc
- dest
- (list (list "(" nil nil))
- (tm-eword::split-string (cdr token) 'comment)
- (list (list ")" nil nil))
- ))
- )
- ((eq name 'quoted-string)
- (setq dest
- (nconc
- dest
- (list
- (list (concat "\"" (cdr token) "\"") nil nil)
- )))
- )
- (t
- (setq dest
- (if (or (eq pname 'spaces)
- (eq pname 'comment))
- (nconc dest (list (list (cdr token) nil nil)))
- (nconc (butlast dest)
- (list
- (list (concat (car (car (last dest)))
- (cdr token))
- nil nil)))))
- ))
- (setq seq (cdr seq)
- pname name))
- )
- dest))
-
-(defun eword-phrase-route-addr-to-rwl (phrase-route-addr)
- (if (eq (car phrase-route-addr) 'phrase-route-addr)
- (let ((phrase (nth 1 phrase-route-addr))
- (route (nth 2 phrase-route-addr))
- dest)
- (if (eq (car (car phrase)) 'spaces)
- (setq phrase (cdr phrase))
- )
- (setq dest (tm-eword::phrase-to-rwl phrase))
- (if dest
- (setq dest (append dest '((" " nil nil))))
- )
- (append
- dest
- (eword-addr-seq-to-rwl
- (append '((specials . "<"))
- route
- '((specials . ">"))))
- ))))
-
-(defun eword-addr-spec-to-rwl (addr-spec)
- (if (eq (car addr-spec) 'addr-spec)
- (eword-addr-seq-to-rwl (cdr addr-spec))
- ))
-
-(defun tm-eword::mailbox-to-rwl (mbox)
- (let ((addr (nth 1 mbox))
- (comment (nth 2 mbox))
- dest)
- (setq dest (or (eword-phrase-route-addr-to-rwl addr)
- (eword-addr-spec-to-rwl addr)
- ))
- (if comment
- (setq dest
- (append dest
- '((" " nil nil)
- ("(" nil nil))
- (tm-eword::split-string comment 'comment)
- '((")" nil nil))
- )))
- dest))
-
-(defun tm-eword::addresses-to-rwl (addresses)
- (let ((dest (tm-eword::mailbox-to-rwl (car addresses))))
- (if dest
- (while (setq addresses (cdr addresses))
- (setq dest (append dest
- '(("," nil nil))
- '((" " nil nil))
- (tm-eword::mailbox-to-rwl (car addresses))
- ))
- ))
- dest))
-
-(defun tm-eword::encode-address-list (column str)
- (tm-eword::encode-rwl
- column
- (tm-eword::addresses-to-rwl (std11-parse-addresses-string str))
- ))
-
-
-;;; @ application interfaces
-;;;
-
-(defun eword-encode-field (string)
- "Encode header field STRING, and return the result.
-A lexical token includes non-ASCII character is encoded as MIME
-encoded-word. ASCII token is not encoded."
- (setq string (std11-unfold-string string))
- (let ((ret (string-match std11-field-head-regexp string)))
- (or (if ret
- (let ((field-name (substring string 0 (1- (match-end 0))))
- (field-body (eliminate-top-spaces
- (substring string (match-end 0))))
- )
- (if (setq ret
- (cond ((string-equal field-body "") "")
- ((memq (intern (downcase field-name))
- '(reply-to
- from sender
- resent-reply-to resent-from
- resent-sender to resent-to
- cc resent-cc
- bcc resent-bcc dcc
- mime-version)
- )
- (car (tm-eword::encode-address-list
- (+ (length field-name) 2) field-body))
- )
- (t
- (car (tm-eword::encode-string
- (1+ (length field-name))
- field-body 'text))
- ))
- )
- (concat field-name ": " ret)
- )))
- (car (tm-eword::encode-string 0 string))
- )))
-
-(defun eword-in-subject-p ()
- (let ((str (std11-field-body "Subject")))
- (if (and str (string-match eword-encoded-word-regexp str))
- str)))
-
-(defsubst eword-find-field-encoding-method (field-name)
- (setq field-name (downcase field-name))
- (let ((alist eword-field-encoding-method-alist))
- (catch 'found
- (while alist
- (let* ((pair (car alist))
- (str (car pair)))
- (if (and (stringp str)
- (string= field-name (downcase str)))
- (throw 'found (cdr pair))
- ))
- (setq alist (cdr alist)))
- (cdr (assq t eword-field-encoding-method-alist))
- )))
-
-(defun eword-encode-header (&optional code-conversion)
- "Encode header fields to network representation, such as MIME encoded-word.
-
-It refer variable `eword-field-encoding-method-alist'."
- (interactive "*")
- (save-excursion
- (save-restriction
- (std11-narrow-to-header mail-header-separator)
- (goto-char (point-min))
- (let ((default-cs (mime-charset-to-coding-system default-mime-charset))
- beg end field-name)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq beg (match-beginning 0))
- (setq field-name (buffer-substring beg (1- (match-end 0))))
- (setq end (std11-field-end))
- (and (find-non-ascii-charset-region beg end)
- (let ((method (eword-find-field-encoding-method
- (downcase field-name))))
- (cond ((eq method 'mime)
- (let ((field
- (buffer-substring-no-properties beg end)
- ))
- (delete-region beg end)
- (insert (eword-encode-field field))
- ))
- (code-conversion
- (let ((cs
- (or (mime-charset-to-coding-system
- method)
- default-cs)))
- (encode-coding-region beg end cs)
- )))
- ))
- ))
- )))
-
-(defun eword-encode-string (str &optional column mode)
- (car (tm-eword::encode-rwl (or column 0) (tm-eword::split-string str mode)))
- )
-
-
-;;; @ end
-;;;
-
-(provide 'eword-encode)
-
-;;; eword-encode.el ends here
+++ /dev/null
---<<alternative>>-{
-
- It is available from
-
- ftp://ftp.jaist.ac.jp/pub/GNU/elisp/flim/
-
---[[message/external-body;
- access-type=anon-ftp;
- site="ftp.jaist.ac.jp";
- directory="/pub/GNU/elisp/flim";
- name="flim-VERSION.tar.gz";
- mode=image]]
-Content-Type: application/octet-stream;
- name="flim-VERSION.tar.gz";
- type=tar;
- conversions=gzip
---}-<<alternative>>
+++ /dev/null
-;; ---------------------------------------------------------------------- ;;
-;; FICHIER : lalr.scm ;;
-;; DATE DE CREATION : Mon Jan 22 15:42:32 1996 ;;
-;; DERNIERE MODIFICATION : Mon Jun 3 10:24:43 1996 ;;
-;; ---------------------------------------------------------------------- ;;
-;; Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. ;;
-;; (for the Bison source code translated in Scheme) ;;
-;; Copyright (C) 1996 Dominique Boucher ;;
-;; (for the translation in Scheme) ;;
-;; ---------------------------------------------------------------------- ;;
-;; An efficient Scheme LALR(1) Parser Generator -- lalr.scm ;;
-;; ---------------------------------------------------------------------- ;;
-;; This file contains yet another LALR(1) parser generator written in ;;
-;; Scheme. In contrast to other such parser generators, this one ;;
-;; implements a more efficient algorithm for computing the lookahead sets.;;
-;; The algorithm is the same as used in Bison (GNU yacc) and is described ;;
-;; in the following paper: ;;
-;; ;;
-;; "Efficient Computation of LALR(1) Look-Ahead Set", F. DeRemer and ;;
-;; T. Pennello, TOPLAS, vol. 4, no. 4, october 1982. ;;
-;; ;;
-;; As a consequence, it is not written in a fully functional style. ;;
-;; The program has been successfully tested on several Scheme ;;
-;; interpreters and compilers, including scm4d3, Gambit v2.2, and ;;
-;; MIT-Scheme 7.2.0 (microcode 11.127, runtime 14.160). ;;
-;; ---------------------------------------------------------------------- ;;
-;; HOW TO USE THE PROGRAM ;;
-;; ;;
-;; To generate a parser for a given grammar, the latter must be first ;;
-;; written down in scheme. The next section will describe the syntax ;;
-;; of the grammar. Now suppose your grammar is defined like this: ;;
-;; ;;
-;; (define my-grammar { grammar }) ;;
-;; ;;
-;; All you need to do is evaluate the expression: ;;
-;; ;;
-;; (gen-lalr1 my-grammar "file" [prefix]) ;;
-;; ;;
-;; where "file" is the name of the file (a string) that will contain the ;;
-;; tables for LR-parsing. The last argument must be supplied if you want ;;
-;; multiple parsers coexist in the same application. It must be a symbol, ;;
-;; otherwise it will be ignored. ;;
-;; ;;
-;; To run the parser, you must first load the LR parsing driver(also part ;;
-;; of this distribution): ;;
-;; ;;
-;; (load "lr-dvr.scm") ;;
-;; ;;
-;; The interface to the generated parser will be the function ;;
-;; ;;
-;; ([prefix-]parse lexer errorp) ;;
-;; ;;
-;; where lexer is the name of the scanner feeding the parser with pairs ;;
-;; (token . lval) and errorp is the name of a user-defined error ;;
-;; function (the standard error function can be used as well). ;;
-;; ;;
-;; ;;
-;; Here are some notes about the lexer and the error function: ;;
-;; ;;
-;; - the tokens (which are the first components of the pairs returned ;;
-;; by the lexer) must agree with the tokens defined in the grammar. ;;
-;; ;;
-;; - when the lexer wants to signal the end of the input, it must ;;
-;; return the pair '(0) each time it's invoked. ;;
-;; ;;
-;; - the error function must accept two parameters (the standard error ;;
-;; function accepts a variable number of parameters, so it accepts ;;
-;; two). ;;
-;; ;;
-;; ---------------------------------------------------------------------- ;;
-;; THE GRAMMAR FORMAT ;;
-;; ;;
-;; The grammar is specified by first giving the list of terminals and the ;;
-;; list of non-terminal definitions. Each non-terminal definition ;;
-;; is a list where the first element is the non-terminal and the other ;;
-;; elements are the right-hand sides (lists of grammar symbols). In ;;
-;; addition to this, each rhs can be followed by a semantic action. ;;
-;; By convention, use strings for tokens and atoms for non-terminals. ;;
-;; ;;
-;; For example, consider the following (yacc) grammar: ;;
-;; ;;
-;; e : e '+' t ;;
-;; | t ;;
-;; ; ;;
-;; ;;
-;; t : t '*' f ;;
-;; | f ;;
-;; ; ;;
-;; ;;
-;; f : ID ;;
-;; ; ;;
-;; ;;
-;; The same grammar, written for the scheme parser generator, would look ;;
-;; like this (with semantic actions) ;;
-;; ;;
-;; (define my-grammar ;;
-;; '( ;;
-;; ; Terminal symbols ;;
-;; ID ADD MULT ;;
-;; ; Productions ;;
-;; (e (e ADD t) : (+ $1 $3) ;;
-;; (t) : $1 ;;
-;; ) ;;
-;; (t (t MULT f) : (* $1 $3) ;;
-;; (f) : $1 ;;
-;; ) ;;
-;; (f (ID) : $1) ;;
-;; )) ;;
-;; ;;
-;; In semantic actions, the symbol $<n> refers to the synthesized ;;
-;; attribute value of the nth symbol in the production. The value ;;
-;; associated with the non-terminal on the left is the result of ;;
-;; evaluating the semantic action (it defaults to #f). ;;
-;; ;;
-;; If you evaluate ;;
-;; ;;
-;; (gen-lalr1 my-grammar "foo.scm" 'my) ;;
-;; ;;
-;; then the generated parser will be named 'my-parser'. ;;
-;; ;;
-;; NOTE ON CONFLICT RESOLUTION ;;
-;; ;;
-;; Conflicts in the grammar are handled in a conventional way. ;;
-;; Shift/Reduce conflicts are resolved by shifting, and Reduce/Reduce ;;
-;; conflicts are resolved by choosing the rule listed first in the ;;
-;; grammar definition. ;;
-;; ;;
-;; You can print the states of the generated parser by evaluating ;;
-;; `(print-states)'. The format of the output is similar to the one ;;
-;; produced by bison when given the -v command-line option. ;;
-;; ---------------------------------------------------------------------- ;;
-;; lalr.scm is free software; you can redistribute it and/or modify ;;
-;; it under the terms of the GNU General Public License as published by ;;
-;; the Free Software Foundation; either version 2, or (at your option) ;;
-;; any later version. ;;
-;; ;;
-;; lalr.scm is distributed in the hope that it will be useful, ;;
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;
-;; GNU General Public License for more details. ;;
-;; ;;
-;; You should have received a copy of the GNU General Public License ;;
-;; along with lalr.scm; see the file COPYING. If not, write to ;;
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;;
-;; ;;
-;; Dominique Boucher -- Universite de Montreal ;;
-;; ;;
-;; Send questions, comments or suggestions to boucherd@iro.umontreal.ca ;;
-;; ---------------------------------------------------------------------- ;;
-
-;; 1998/08/16: Tanaka Akira <akr@jaist.ac.jp> transplants generating code from Scheme to Emacs-Lisp.
-
-;;; ---------- SYSTEM DEPENDENT SECTION -----------------
-
-;; -------- SCM
-(begin
- (defmacro def-macro (args body)
- `(defmacro ,(car args) ,(cdr args) ,body))
-
- (def-macro (BITS-PER-WORD) 24)
- (def-macro (logical-or x . y) `(logior ,x ,@y))
- )
-
-;; -------- MIT-Scheme
-'(begin
- (declare (usual-integrations))
-
- (define-macro (def-macro form . body)
- `(DEFINE-MACRO ,form (LET () ,@body)))
-
- (def-macro (BITS-PER-WORD) 24)
- (def-macro (logical-or x . y) `(fix:or ,x ,@y))
- )
-
-;; -------- Gambit
-'(begin
-
- (declare
- (standard-bindings)
- (fixnum)
- (block)
- (not safe))
-
- (define-macro (def-macro form . body)
- `(DEFINE-MACRO ,form (LET () ,@body)))
-
- (def-macro (BITS-PER-WORD) 28)
- (def-macro (logical-or x . y) `(,(string->symbol "##logior") ,x ,@y))
- )
-
-;; -------- Bigloo
-'(begin
-
- (define-macro (def-macro form . body)
- `(DEFINE-MACRO ,form (LET () ,@body)))
- (def-macro (BITS-PER-WORD) 16)
- (def-macro (logical-or x . y) `(bit-or ,x ,@y))
- )
-
-;;; ---------- END OF SYSTEM DEPENDENT SECTION ------------
-
-;; - Macros pour la gestion des vecteurs de bits
-
-(def-macro (set-bit v b)
- `(let ((x (quotient ,b (BITS-PER-WORD)))
- (y (expt 2 (remainder ,b (BITS-PER-WORD)))))
- (vector-set! ,v x (logical-or (vector-ref ,v x) y))))
-
-(def-macro (bit-union v1 v2 n)
- `(do ((i 0 (+ i 1)))
- ((= i ,n))
- (vector-set! ,v1 i (logical-or (vector-ref ,v1 i)
- (vector-ref ,v2 i)))))
-
-;; - Macro pour les structures de donnees
-
-(def-macro (new-core) `(make-vector 4 0))
-(def-macro (set-core-number! c n) `(vector-set! ,c 0 ,n))
-(def-macro (set-core-acc-sym! c s) `(vector-set! ,c 1 ,s))
-(def-macro (set-core-nitems! c n) `(vector-set! ,c 2 ,n))
-(def-macro (set-core-items! c i) `(vector-set! ,c 3 ,i))
-(def-macro (core-number c) `(vector-ref ,c 0))
-(def-macro (core-acc-sym c) `(vector-ref ,c 1))
-(def-macro (core-nitems c) `(vector-ref ,c 2))
-(def-macro (core-items c) `(vector-ref ,c 3))
-
-(def-macro (new-shift) `(make-vector 3 0))
-(def-macro (set-shift-number! c x) `(vector-set! ,c 0 ,x))
-(def-macro (set-shift-nshifts! c x) `(vector-set! ,c 1 ,x))
-(def-macro (set-shift-shifts! c x) `(vector-set! ,c 2 ,x))
-(def-macro (shift-number s) `(vector-ref ,s 0))
-(def-macro (shift-nshifts s) `(vector-ref ,s 1))
-(def-macro (shift-shifts s) `(vector-ref ,s 2))
-
-(def-macro (new-red) `(make-vector 3 0))
-(def-macro (set-red-number! c x) `(vector-set! ,c 0 ,x))
-(def-macro (set-red-nreds! c x) `(vector-set! ,c 1 ,x))
-(def-macro (set-red-rules! c x) `(vector-set! ,c 2 ,x))
-(def-macro (red-number c) `(vector-ref ,c 0))
-(def-macro (red-nreds c) `(vector-ref ,c 1))
-(def-macro (red-rules c) `(vector-ref ,c 2))
-
-
-
-(def-macro (new-set nelem)
- `(make-vector ,nelem 0))
-
-
-(def-macro (vector-map f v)
- `(let ((vm-n (- (vector-length ,v) 1)))
- (let loop ((vm-low 0) (vm-high vm-n))
- (if (= vm-low vm-high)
- (vector-set! ,v vm-low (,f (vector-ref ,v vm-low) vm-low))
- (let ((vm-middle (quotient (+ vm-low vm-high) 2)))
- (loop vm-low vm-middle)
- (loop (+ vm-middle 1) vm-high))))))
-
-
-;; - Constantes
-(define STATE-TABLE-SIZE 1009)
-
-
-;; - Tableaux
-(define rrhs #f)
-(define rlhs #f)
-(define ritem #f)
-(define nullable #f)
-(define derives #f)
-(define fderives #f)
-(define firsts #f)
-(define kernel-base #f)
-(define kernel-end #f)
-(define shift-symbol #f)
-(define shift-set #f)
-(define red-set #f)
-(define state-table #f)
-(define acces-symbol #f)
-(define reduction-table #f)
-(define shift-table #f)
-(define consistent #f)
-(define lookaheads #f)
-(define LA #f)
-(define LAruleno #f)
-(define lookback #f)
-(define goto-map #f)
-(define from-state #f)
-(define to-state #f)
-(define includes #f)
-(define F #f)
-(define action-table #f)
-
-;; - Variables
-(define nitems #f)
-(define nrules #f)
-(define nvars #f)
-(define nterms #f)
-(define nsyms #f)
-(define nstates #f)
-(define first-state #f)
-(define last-state #f)
-(define final-state #f)
-(define first-shift #f)
-(define last-shift #f)
-(define first-reduction #f)
-(define last-reduction #f)
-(define nshifts #f)
-(define maxrhs #f)
-(define ngotos #f)
-(define token-set-size #f)
-
-(define (gen-larl1 gram output-file header footer . opt)
- (define (conv-rule-right rr)
- (if (null? rr)
- '()
- (cons (reverse (car rr))
- (cons (cadr rr)
- (cons (caddr rr)
- (conv-rule-right (cdddr rr)))))))
- (apply gen-lalr1
- (map
- (lambda (elt)
- (if (symbol? elt)
- elt
- (cons (car elt) (conv-rule-right (cdr elt)))))
- gram)
- output-file
- header
- footer
- opt))
-
-(define (gen-lalr1 gram output-file header footer . opt)
- (initialize-all)
- (rewrite-grammar
- gram
- (lambda (terms vars gram gram/actions)
- (set! the-terminals (list->vector terms))
- (set! the-nonterminals (list->vector vars))
- (set! nterms (length terms))
- (set! nvars (length vars))
- (set! nsyms (+ nterms nvars))
- (let ((no-of-rules (length gram/actions))
- (no-of-items (let loop ((l gram/actions) (count 0))
- (if (null? l)
- count
- (loop (cdr l) (+ count (length (caar l))))))))
- (pack-grammar no-of-rules no-of-items gram)
- (set-derives)
- (set-nullable)
- (generate-states)
- (lalr)
- (build-tables)
- (compact-action-table)
- (let* ((parser-name (if (and (pair? opt) (symbol? (car opt))) (car opt) #f))
- (prefix (if parser-name
- (string-append
- (symbol->string parser-name)
- ":")
- ""))
- (parser-prefix (if parser-name
- (string-append (symbol->string parser-name) "-")
- "")))
- (with-output-to-file output-file
- (lambda ()
- (display "; *** Header ***")
- (newline)
- (output-header header parser-prefix)
- (display "; *** Token Definitions ***")
- (newline)
- (output-token-defs terms prefix)
- (display "; *** Action Table ***")
- (newline)
- (output-action-table prefix)
- (display "; *** Goto Table ***")
- (newline)
- (output-goto-table prefix)
- (display "; *** Reduction Table ***")
- (newline)
- (output-reduction-table gram/actions prefix)
- (display "; *** Parser Definition ***")
- (newline)
- (output-parser-def parser-prefix prefix)
- (display "; *** Footer ***")
- (newline)
- (output-footer footer)
- )))))))
-
-
-(define (initialize-all)
- (set! rrhs #f)
- (set! rlhs #f)
- (set! ritem #f)
- (set! nullable #f)
- (set! derives #f)
- (set! fderives #f)
- (set! firsts #f)
- (set! kernel-base #f)
- (set! kernel-end #f)
- (set! shift-symbol #f)
- (set! shift-set #f)
- (set! red-set #f)
- (set! state-table (make-vector STATE-TABLE-SIZE '()))
- (set! acces-symbol #f)
- (set! reduction-table #f)
- (set! shift-table #f)
- (set! consistent #f)
- (set! lookaheads #f)
- (set! LA #f)
- (set! LAruleno #f)
- (set! lookback #f)
- (set! goto-map #f)
- (set! from-state #f)
- (set! to-state #f)
- (set! includes #f)
- (set! F #f)
- (set! action-table #f)
- (set! nstates #f)
- (set! first-state #f)
- (set! last-state #f)
- (set! final-state #f)
- (set! first-shift #f)
- (set! last-shift #f)
- (set! first-reduction #f)
- (set! last-reduction #f)
- (set! nshifts #f)
- (set! maxrhs #f)
- (set! ngotos #f)
- (set! token-set-size #f))
-
-
-(define (pack-grammar no-of-rules no-of-items gram)
- (set! nrules (+ no-of-rules 1))
- (set! nitems no-of-items)
- (set! rlhs (make-vector nrules #f))
- (set! rrhs (make-vector nrules #f))
- (set! ritem (make-vector (+ 1 nitems) #f))
-
- (let loop ((p gram) (item-no 0) (rule-no 1))
- (if (not (null? p))
- (let ((nt (caar p)))
- (let loop2 ((prods (cdar p)) (it-no2 item-no) (rl-no2 rule-no))
- (if (null? prods)
- (loop (cdr p) it-no2 rl-no2)
- (begin
- (vector-set! rlhs rl-no2 nt)
- (vector-set! rrhs rl-no2 it-no2)
- (let loop3 ((rhs (car prods)) (it-no3 it-no2))
- (if (null? rhs)
- (begin
- (vector-set! ritem it-no3 (- rl-no2))
- (loop2 (cdr prods) (+ it-no3 1) (+ rl-no2 1)))
- (begin
- (vector-set! ritem it-no3 (car rhs))
- (loop3 (cdr rhs) (+ it-no3 1))))))))))))
-
-
-;; Fonction set-derives
-;; --------------------
-(define (set-derives)
- (define delts (make-vector (+ nrules 1) 0))
- (define dset (make-vector nvars -1))
-
- (let loop ((i 1) (j 0)) ; i = 0
- (if (< i nrules)
- (let ((lhs (vector-ref rlhs i)))
- (if (>= lhs 0)
- (begin
- (vector-set! delts j (cons i (vector-ref dset lhs)))
- (vector-set! dset lhs j)
- (loop (+ i 1) (+ j 1)))
- (loop (+ i 1) j)))))
-
- (set! derives (make-vector nvars 0))
-
- (let loop ((i 0))
- (if (< i nvars)
- (let ((q (let loop2 ((j (vector-ref dset i)) (s '()))
- (if (< j 0)
- s
- (let ((x (vector-ref delts j)))
- (loop2 (cdr x) (cons (car x) s)))))))
- (vector-set! derives i q)
- (loop (+ i 1))))))
-
-
-
-(define (set-nullable)
- (set! nullable (make-vector nvars #f))
- (let ((squeue (make-vector nvars #f))
- (rcount (make-vector (+ nrules 1) 0))
- (rsets (make-vector nvars #f))
- (relts (make-vector (+ nitems nvars 1) #f)))
- (let loop ((r 0) (s2 0) (p 0))
- (let ((*r (vector-ref ritem r)))
- (if *r
- (if (< *r 0)
- (let ((symbol (vector-ref rlhs (- *r))))
- (if (and (>= symbol 0)
- (not (vector-ref nullable symbol)))
- (begin
- (vector-set! nullable symbol #t)
- (vector-set! squeue s2 symbol)
- (loop (+ r 1) (+ s2 1) p))))
- (let loop2 ((r1 r) (any-tokens #f))
- (let* ((symbol (vector-ref ritem r1)))
- (if (> symbol 0)
- (loop2 (+ r1 1) (or any-tokens (>= symbol nvars)))
- (if (not any-tokens)
- (let ((ruleno (- symbol)))
- (let loop3 ((r2 r) (p2 p))
- (let ((symbol (vector-ref ritem r2)))
- (if (> symbol 0)
- (begin
- (vector-set! rcount ruleno
- (+ (vector-ref rcount ruleno) 1))
- (vector-set! relts p2
- (cons (vector-ref rsets symbol)
- ruleno))
- (vector-set! rsets symbol p2)
- (loop3 (+ r2 1) (+ p2 1)))
- (loop (+ r2 1) s2 p2)))))
- (loop (+ r1 1) s2 p))))))
- (let loop ((s1 0) (s3 s2))
- (if (< s1 s3)
- (let loop2 ((p (vector-ref rsets (vector-ref squeue s1))) (s4 s3))
- (if p
- (let* ((x (vector-ref relts p))
- (ruleno (cdr x))
- (y (- (vector-ref rcount ruleno) 1)))
- (vector-set! rcount ruleno y)
- (if (= y 0)
- (let ((symbol (vector-ref rlhs ruleno)))
- (if (and (>= symbol 0)
- (not (vector-ref nullable symbol)))
- (begin
- (vector-set! nullable symbol #t)
- (vector-set! squeue s4 symbol)
- (loop2 (car x) (+ s4 1)))
- (loop2 (car x) s4)))
- (loop2 (car x) s4))))
- (loop (+ s1 1) s4)))))))))
-
-
-
-; Fonction set-firsts qui calcule un tableau de taille
-; nvars et qui donne, pour chaque non-terminal X, une liste des
-; non-terminaux pouvant apparaitre au debut d'une derivation a
-; partir de X.
-
-(define (set-firsts)
- (set! firsts (make-vector nvars '()))
-
- ;; -- initialization
- (let loop ((i 0))
- (if (< i nvars)
- (let loop2 ((sp (vector-ref derives i)))
- (if (null? sp)
- (loop (+ i 1))
- (let ((sym (vector-ref ritem (vector-ref rrhs (car sp)))))
- (if (< -1 sym nvars)
- (vector-set! firsts i (sinsert sym (vector-ref firsts i))))
- (loop2 (cdr sp)))))))
-
- ;; -- reflexive and transitive closure
- (let loop ((continue #t))
- (if continue
- (let loop2 ((i 0) (cont #f))
- (if (>= i nvars)
- (loop cont)
- (let* ((x (vector-ref firsts i))
- (y (let loop3 ((l x) (z x))
- (if (null? l)
- z
- (loop3 (cdr l)
- (sunion (vector-ref firsts (car l)) z))))))
- (if (equal? x y)
- (loop2 (+ i 1) cont)
- (begin
- (vector-set! firsts i y)
- (loop2 (+ i 1) #t))))))))
-
- (let loop ((i 0))
- (if (< i nvars)
- (begin
- (vector-set! firsts i (sinsert i (vector-ref firsts i)))
- (loop (+ i 1))))))
-
-
-
-
-; Fonction set-fderives qui calcule un tableau de taille
-; nvars et qui donne, pour chaque non-terminal, une liste des regles pouvant
-; etre derivees a partir de ce non-terminal. (se sert de firsts)
-
-(define (set-fderives)
- (set! fderives (make-vector nvars #f))
-
- (set-firsts)
-
- (let loop ((i 0))
- (if (< i nvars)
- (let ((x (let loop2 ((l (vector-ref firsts i)) (fd '()))
- (if (null? l)
- fd
- (loop2 (cdr l)
- (sunion (vector-ref derives (car l)) fd))))))
- (vector-set! fderives i x)
- (loop (+ i 1))))))
-
-
-; Fonction calculant la fermeture d'un ensemble d'items LR0
-; ou core est une liste d'items
-
-(define (closure core)
- ;; Initialization
- (define ruleset (make-vector nrules #f))
-
- (let loop ((csp core))
- (if (not (null? csp))
- (let ((sym (vector-ref ritem (car csp))))
- (if (< -1 sym nvars)
- (let loop2 ((dsp (vector-ref fderives sym)))
- (if (not (null? dsp))
- (begin
- (vector-set! ruleset (car dsp) #t)
- (loop2 (cdr dsp))))))
- (loop (cdr csp)))))
-
- (let loop ((ruleno 1) (csp core) (itemsetv '())) ; ruleno = 0
- (if (< ruleno nrules)
- (if (vector-ref ruleset ruleno)
- (let ((itemno (vector-ref rrhs ruleno)))
- (let loop2 ((c csp) (itemsetv2 itemsetv))
- (if (and (pair? c)
- (< (car c) itemno))
- (loop2 (cdr c) (cons (car c) itemsetv2))
- (loop (+ ruleno 1) c (cons itemno itemsetv2)))))
- (loop (+ ruleno 1) csp itemsetv))
- (let loop2 ((c csp) (itemsetv2 itemsetv))
- (if (pair? c)
- (loop2 (cdr c) (cons (car c) itemsetv2))
- (reverse itemsetv2))))))
-
-
-
-(define (allocate-item-sets)
- (set! kernel-base (make-vector nsyms 0))
- (set! kernel-end (make-vector nsyms #f)))
-
-
-(define (allocate-storage)
- (allocate-item-sets)
- (set! red-set (make-vector (+ nrules 1) 0)))
-
-;; --
-
-
-(define (initialize-states)
- (let ((p (new-core)))
- (set-core-number! p 0)
- (set-core-acc-sym! p #f)
- (set-core-nitems! p 1)
- (set-core-items! p '(0))
-
- (set! first-state (list p))
- (set! last-state first-state)
- (set! nstates 1)))
-
-
-
-(define (generate-states)
- (allocate-storage)
- (set-fderives)
- (initialize-states)
- (let loop ((this-state first-state))
- (if (pair? this-state)
- (let* ((x (car this-state))
- (is (closure (core-items x))))
- (save-reductions x is)
- (new-itemsets is)
- (append-states)
- (if (> nshifts 0)
- (save-shifts x))
- (loop (cdr this-state))))))
-
-
-;; Fonction calculant les symboles sur lesquels il faut "shifter"
-;; et regroupe les items en fonction de ces symboles
-
-(define (new-itemsets itemset)
- ;; - Initialization
- (set! shift-symbol '())
- (let loop ((i 0))
- (if (< i nsyms)
- (begin
- (vector-set! kernel-end i '())
- (loop (+ i 1)))))
-
- (let loop ((isp itemset))
- (if (pair? isp)
- (let* ((i (car isp))
- (sym (vector-ref ritem i)))
- (if (>= sym 0)
- (begin
- (set! shift-symbol (sinsert sym shift-symbol))
- (let ((x (vector-ref kernel-end sym)))
- (if (null? x)
- (begin
- (vector-set! kernel-base sym (cons (+ i 1) x))
- (vector-set! kernel-end sym (vector-ref kernel-base sym)))
- (begin
- (set-cdr! x (list (+ i 1)))
- (vector-set! kernel-end sym (cdr x)))))))
- (loop (cdr isp)))))
-
- (set! nshifts (length shift-symbol)))
-
-
-
-(define (get-state sym)
- (let* ((isp (vector-ref kernel-base sym))
- (n (length isp))
- (key (let loop ((isp1 isp) (k 0))
- (if (null? isp1)
- (modulo k STATE-TABLE-SIZE)
- (loop (cdr isp1) (+ k (car isp1))))))
- (sp (vector-ref state-table key)))
- (if (null? sp)
- (let ((x (new-state sym)))
- (vector-set! state-table key (list x))
- (core-number x))
- (let loop ((sp1 sp))
- (if (and (= n (core-nitems (car sp1)))
- (let loop2 ((i1 isp) (t (core-items (car sp1))))
- (if (and (pair? i1)
- (= (car i1)
- (car t)))
- (loop2 (cdr i1) (cdr t))
- (null? i1))))
- (core-number (car sp1))
- (if (null? (cdr sp1))
- (let ((x (new-state sym)))
- (set-cdr! sp1 (list x))
- (core-number x))
- (loop (cdr sp1))))))))
-
-
-(define (new-state sym)
- (let* ((isp (vector-ref kernel-base sym))
- (n (length isp))
- (p (new-core)))
- (set-core-number! p nstates)
- (set-core-acc-sym! p sym)
- (if (= sym nvars) (set! final-state nstates))
- (set-core-nitems! p n)
- (set-core-items! p isp)
- (set-cdr! last-state (list p))
- (set! last-state (cdr last-state))
- (set! nstates (+ nstates 1))
- p))
-
-
-;; --
-
-(define (append-states)
- (set! shift-set
- (let loop ((l (reverse shift-symbol)))
- (if (null? l)
- '()
- (cons (get-state (car l)) (loop (cdr l)))))))
-
-;; --
-
-(define (save-shifts core)
- (let ((p (new-shift)))
- (set-shift-number! p (core-number core))
- (set-shift-nshifts! p nshifts)
- (set-shift-shifts! p shift-set)
- (if last-shift
- (begin
- (set-cdr! last-shift (list p))
- (set! last-shift (cdr last-shift)))
- (begin
- (set! first-shift (list p))
- (set! last-shift first-shift)))))
-
-(define (save-reductions core itemset)
- (let ((rs (let loop ((l itemset))
- (if (null? l)
- '()
- (let ((item (vector-ref ritem (car l))))
- (if (< item 0)
- (cons (- item) (loop (cdr l)))
- (loop (cdr l))))))))
- (if (pair? rs)
- (let ((p (new-red)))
- (set-red-number! p (core-number core))
- (set-red-nreds! p (length rs))
- (set-red-rules! p rs)
- (if last-reduction
- (begin
- (set-cdr! last-reduction (list p))
- (set! last-reduction (cdr last-reduction)))
- (begin
- (set! first-reduction (list p))
- (set! last-reduction first-reduction)))))))
-
-
-;; --
-
-(define (lalr)
- (set! token-set-size (+ 1 (quotient nterms (BITS-PER-WORD))))
- (set-accessing-symbol)
- (set-shift-table)
- (set-reduction-table)
- (set-max-rhs)
- (initialize-LA)
- (set-goto-map)
- (initialize-F)
- (build-relations)
- (digraph includes)
- (compute-lookaheads))
-
-(define (set-accessing-symbol)
- (set! acces-symbol (make-vector nstates #f))
- (let loop ((l first-state))
- (if (pair? l)
- (let ((x (car l)))
- (vector-set! acces-symbol (core-number x) (core-acc-sym x))
- (loop (cdr l))))))
-
-(define (set-shift-table)
- (set! shift-table (make-vector nstates #f))
- (let loop ((l first-shift))
- (if (pair? l)
- (let ((x (car l)))
- (vector-set! shift-table (shift-number x) x)
- (loop (cdr l))))))
-
-(define (set-reduction-table)
- (set! reduction-table (make-vector nstates #f))
- (let loop ((l first-reduction))
- (if (pair? l)
- (let ((x (car l)))
- (vector-set! reduction-table (red-number x) x)
- (loop (cdr l))))))
-
-(define (set-max-rhs)
- (let loop ((p 0) (curmax 0) (length 0))
- (let ((x (vector-ref ritem p)))
- (if x
- (if (>= x 0)
- (loop (+ p 1) curmax (+ length 1))
- (loop (+ p 1) (max curmax length) 0))
- (set! maxrhs curmax)))))
-
-(define (initialize-LA)
- (define (last l)
- (if (null? (cdr l))
- (car l)
- (last (cdr l))))
-
- (set! consistent (make-vector nstates #f))
- (set! lookaheads (make-vector (+ nstates 1) #f))
-
- (let loop ((count 0) (i 0))
- (if (< i nstates)
- (begin
- (vector-set! lookaheads i count)
- (let ((rp (vector-ref reduction-table i))
- (sp (vector-ref shift-table i)))
- (if (and rp
- (or (> (red-nreds rp) 1)
- (and sp
- (not
- (< (vector-ref acces-symbol
- (last (shift-shifts sp)))
- nvars)))))
- (loop (+ count (red-nreds rp)) (+ i 1))
- (begin
- (vector-set! consistent i #t)
- (loop count (+ i 1))))))
-
- (begin
- (vector-set! lookaheads nstates count)
- (let ((c (max count 1)))
- (set! LA (make-vector c #f))
- (do ((j 0 (+ j 1))) ((= j c)) (vector-set! LA j (new-set token-set-size)))
- (set! LAruleno (make-vector c -1))
- (set! lookback (make-vector c #f)))
- (let loop ((i 0) (np 0))
- (if (< i nstates)
- (if (vector-ref consistent i)
- (loop (+ i 1) np)
- (let ((rp (vector-ref reduction-table i)))
- (if rp
- (let loop2 ((j (red-rules rp)) (np2 np))
- (if (null? j)
- (loop (+ i 1) np2)
- (begin
- (vector-set! LAruleno np2 (car j))
- (loop2 (cdr j) (+ np2 1)))))
- (loop (+ i 1) np))))))))))
-
-
-(define (set-goto-map)
- (set! goto-map (make-vector (+ nvars 1) 0))
- (let ((temp-map (make-vector (+ nvars 1) 0)))
- (let loop ((ng 0) (sp first-shift))
- (if (pair? sp)
- (let loop2 ((i (reverse (shift-shifts (car sp)))) (ng2 ng))
- (if (pair? i)
- (let ((symbol (vector-ref acces-symbol (car i))))
- (if (< symbol nvars)
- (begin
- (vector-set! goto-map symbol
- (+ 1 (vector-ref goto-map symbol)))
- (loop2 (cdr i) (+ ng2 1)))
- (loop2 (cdr i) ng2)))
- (loop ng2 (cdr sp))))
-
- (let loop ((k 0) (i 0))
- (if (< i nvars)
- (begin
- (vector-set! temp-map i k)
- (loop (+ k (vector-ref goto-map i)) (+ i 1)))
-
- (begin
- (do ((i 0 (+ i 1)))
- ((>= i nvars))
- (vector-set! goto-map i (vector-ref temp-map i)))
-
- (set! ngotos ng)
- (vector-set! goto-map nvars ngotos)
- (vector-set! temp-map nvars ngotos)
- (set! from-state (make-vector ngotos #f))
- (set! to-state (make-vector ngotos #f))
-
- (do ((sp first-shift (cdr sp)))
- ((null? sp))
- (let* ((x (car sp))
- (state1 (shift-number x)))
- (do ((i (shift-shifts x) (cdr i)))
- ((null? i))
- (let* ((state2 (car i))
- (symbol (vector-ref acces-symbol state2)))
- (if (< symbol nvars)
- (let ((k (vector-ref temp-map symbol)))
- (vector-set! temp-map symbol (+ k 1))
- (vector-set! from-state k state1)
- (vector-set! to-state k state2))))))))))))))
-
-
-(define (map-goto state symbol)
- (let loop ((low (vector-ref goto-map symbol))
- (high (- (vector-ref goto-map (+ symbol 1)) 1)))
- (if (> low high)
- (begin
- (display (list "Error in map-goto" state symbol)) (newline)
- 0)
- (let* ((middle (quotient (+ low high) 2))
- (s (vector-ref from-state middle)))
- (cond
- ((= s state)
- middle)
- ((< s state)
- (loop (+ middle 1) high))
- (else
- (loop low (- middle 1))))))))
-
-
-(define (initialize-F)
- (set! F (make-vector ngotos #f))
- (do ((i 0 (+ i 1))) ((= i ngotos)) (vector-set! F i (new-set token-set-size)))
-
- (let ((reads (make-vector ngotos #f)))
-
- (let loop ((i 0) (rowp 0))
- (if (< i ngotos)
- (let* ((rowf (vector-ref F rowp))
- (stateno (vector-ref to-state i))
- (sp (vector-ref shift-table stateno)))
- (if sp
- (let loop2 ((j (shift-shifts sp)) (edges '()))
- (if (pair? j)
- (let ((symbol (vector-ref acces-symbol (car j))))
- (if (< symbol nvars)
- (if (vector-ref nullable symbol)
- (loop2 (cdr j) (cons (map-goto stateno symbol)
- edges))
- (loop2 (cdr j) edges))
- (begin
- (set-bit rowf (- symbol nvars))
- (loop2 (cdr j) edges))))
- (if (pair? edges)
- (vector-set! reads i (reverse edges))))))
- (loop (+ i 1) (+ rowp 1)))))
- (digraph reads)))
-
-(define (add-lookback-edge stateno ruleno gotono)
- (let ((k (vector-ref lookaheads (+ stateno 1))))
- (let loop ((found #f) (i (vector-ref lookaheads stateno)))
- (if (and (not found) (< i k))
- (if (= (vector-ref LAruleno i) ruleno)
- (loop #t i)
- (loop found (+ i 1)))
-
- (if (not found)
- (begin (display "Error in add-lookback-edge : ")
- (display (list stateno ruleno gotono)) (newline))
- (vector-set! lookback i
- (cons gotono (vector-ref lookback i))))))))
-
-
-(define (transpose r-arg n)
- (let ((new-end (make-vector n #f))
- (new-R (make-vector n #f)))
- (do ((i 0 (+ i 1)))
- ((= i n))
- (let ((x (list 'bidon)))
- (vector-set! new-R i x)
- (vector-set! new-end i x)))
- (do ((i 0 (+ i 1)))
- ((= i n))
- (let ((sp (vector-ref r-arg i)))
- (if (pair? sp)
- (let loop ((sp2 sp))
- (if (pair? sp2)
- (let* ((x (car sp2))
- (y (vector-ref new-end x)))
- (set-cdr! y (cons i (cdr y)))
- (vector-set! new-end x (cdr y))
- (loop (cdr sp2))))))))
- (do ((i 0 (+ i 1)))
- ((= i n))
- (vector-set! new-R i (cdr (vector-ref new-R i))))
-
- new-R))
-
-
-
-(define (build-relations)
-
- (define (get-state stateno symbol)
- (let loop ((j (shift-shifts (vector-ref shift-table stateno)))
- (stno stateno))
- (if (null? j)
- stno
- (let ((st2 (car j)))
- (if (= (vector-ref acces-symbol st2) symbol)
- st2
- (loop (cdr j) st2))))))
-
- (set! includes (make-vector ngotos #f))
- (do ((i 0 (+ i 1)))
- ((= i ngotos))
- (let ((state1 (vector-ref from-state i))
- (symbol1 (vector-ref acces-symbol (vector-ref to-state i))))
- (let loop ((rulep (vector-ref derives symbol1))
- (edges '()))
- (if (pair? rulep)
- (let ((*rulep (car rulep)))
- (let loop2 ((rp (vector-ref rrhs *rulep))
- (stateno state1)
- (states (list state1)))
- (let ((*rp (vector-ref ritem rp)))
- (if (> *rp 0)
- (let ((st (get-state stateno *rp)))
- (loop2 (+ rp 1) st (cons st states)))
- (begin
-
- (if (not (vector-ref consistent stateno))
- (add-lookback-edge stateno *rulep i))
-
- (let loop2 ((done #f)
- (stp (cdr states))
- (rp2 (- rp 1))
- (edgp edges))
- (if (not done)
- (let ((*rp (vector-ref ritem rp2)))
- (if (< -1 *rp nvars)
- (loop2 (not (vector-ref nullable *rp))
- (cdr stp)
- (- rp2 1)
- (cons (map-goto (car stp) *rp) edgp))
- (loop2 #t stp rp2 edgp)))
-
- (loop (cdr rulep) edgp))))))))
- (vector-set! includes i edges)))))
- (set! includes (transpose includes ngotos)))
-
-
-
-(define (compute-lookaheads)
- (let ((n (vector-ref lookaheads nstates)))
- (let loop ((i 0))
- (if (< i n)
- (let loop2 ((sp (vector-ref lookback i)))
- (if (pair? sp)
- (let ((LA-i (vector-ref LA i))
- (F-j (vector-ref F (car sp))))
- (bit-union LA-i F-j token-set-size)
- (loop2 (cdr sp)))
- (loop (+ i 1))))))))
-
-
-
-(define (digraph relation)
- (define infinity (+ ngotos 2))
- (define INDEX (make-vector (+ ngotos 1) 0))
- (define VERTICES (make-vector (+ ngotos 1) 0))
- (define top 0)
- (define R relation)
-
- (define (traverse i)
- (set! top (+ 1 top))
- (vector-set! VERTICES top i)
- (let ((height top))
- (vector-set! INDEX i height)
- (let ((rp (vector-ref R i)))
- (if (pair? rp)
- (let loop ((rp2 rp))
- (if (pair? rp2)
- (let ((j (car rp2)))
- (if (= 0 (vector-ref INDEX j))
- (traverse j))
- (if (> (vector-ref INDEX i)
- (vector-ref INDEX j))
- (vector-set! INDEX i (vector-ref INDEX j)))
- (let ((F-i (vector-ref F i))
- (F-j (vector-ref F j)))
- (bit-union F-i F-j token-set-size))
- (loop (cdr rp2))))))
- (if (= (vector-ref INDEX i) height)
- (let loop ()
- (let ((j (vector-ref VERTICES top)))
- (set! top (- top 1))
- (vector-set! INDEX j infinity)
- (if (not (= i j))
- (begin
- (bit-union (vector-ref F i)
- (vector-ref F j)
- token-set-size)
- (loop)))))))))
-
- (let loop ((i 0))
- (if (< i ngotos)
- (begin
- (if (and (= 0 (vector-ref INDEX i))
- (pair? (vector-ref R i)))
- (traverse i))
- (loop (+ i 1))))))
-
-
-;; --
-
-(define (build-tables)
- (define (add-action St Sym Act)
- (let* ((x (vector-ref ACTION-TABLE St))
- (y (assv Sym x)))
- (if y
- (if (not (= Act (cdr y)))
- ;; -- there is a conflict
- (begin
- (if (and (<= (cdr y) 0)
- (<= Act 0))
- (begin
- (display "%% Reduce/Reduce conflict ")
- (display "(reduce ") (display (- Act))
- (display ", reduce ") (display (- (cdr y)))
- (display ") on ") (print-symbol (+ Sym nvars))
- (display " in state ") (display St)
- (newline)
- (set-cdr! y (max (cdr y) Act)))
- (begin
- (display "%% Shift/Reduce conflict ")
- (display "(shift ") (display Act)
- (display ", reduce ") (display (- (cdr y)))
- (display ") on ") (print-symbol (+ Sym nvars))
- (display " in state ") (display St)
- (newline)
- (set-cdr! y Act)))))
- (vector-set! ACTION-TABLE St
- (cons (cons Sym Act) x)))))
-
- (set! action-table (make-vector nstates '()))
-
- (do ((i 0 (+ i 1))) ; i = state
- ((= i nstates))
- (let ((red (vector-ref reduction-table i)))
- (if (and red (>= (red-nreds red) 1))
- (if (and (= (red-nreds red) 1) (vector-ref consistent i))
- (add-action i 'default (- (car (red-rules red))))
- (let ((k (vector-ref lookaheads (+ i 1))))
- (let loop ((j (vector-ref lookaheads i)))
- (if (< j k)
- (let ((rule (- (vector-ref LAruleno j)))
- (lav (vector-ref LA j)))
- (let loop2 ((token 0) (x (vector-ref lav 0)) (y 1) (z 0))
- (if (< token nterms)
- (begin
- (let ((in-la-set? (modulo x 2)))
- (if (= in-la-set? 1)
- (add-action i token rule)))
- (if (= y (BITS-PER-WORD))
- (loop2 (+ token 1)
- (vector-ref lav (+ z 1))
- 1
- (+ z 1))
- (loop2 (+ token 1) (quotient x 2) (+ y 1) z)))))
- (loop (+ j 1)))))))))
-
- (let ((shiftp (vector-ref shift-table i)))
- (if shiftp
- (let loop ((k (shift-shifts shiftp)))
- (if (pair? k)
- (let* ((state (car k))
- (symbol (vector-ref acces-symbol state)))
- (if (>= symbol nvars)
- (add-action i (- symbol nvars) state))
- (loop (cdr k))))))))
-
- (add-action final-state 0 'accept))
-
-(define (compact-action-table)
- (define (most-common-action acts)
- (let ((accums '()))
- (let loop ((l acts))
- (if (pair? l)
- (let* ((x (cdar l))
- (y (assv x accums)))
- (if (and (number? x) (< x 0))
- (if y
- (set-cdr! y (+ 1 (cdr y)))
- (set! accums (cons `(,x . 1) accums))))
- (loop (cdr l)))))
-
- (let loop ((l accums) (max 0) (sym #f))
- (if (null? l)
- sym
- (let ((x (car l)))
- (if (> (cdr x) max)
- (loop (cdr l) (cdr x) (car x))
- (loop (cdr l) max sym)))))))
-
- (do ((i 0 (+ i 1)))
- ((= i nstates))
- (let ((acts (vector-ref action-table i)))
- (if (vector? (vector-ref reduction-table i))
- (let ((act (most-common-action acts)))
- (vector-set! action-table i
- (cons `(default . ,(if act act 'error))
- (filter (lambda (x)
- (not (eq? (cdr x) act)))
- acts))))
- (vector-set! action-table i
- (cons `(default . *error*) acts))))))
-
-
-(define (output-action-table prefix)
- (display "(defconst ") (display prefix) (display "action-table") (newline)
- (display " [") (newline)
- (do ((i 0 (+ i 1)))
- ((= i nstates))
- (display " ")
- (write (vector-ref action-table i))
- (newline))
- (display " ])") (newline)
- (newline))
-
-(define (output-goto-table prefix)
- (display "(defconst ") (display prefix) (display "goto-table") (newline)
- (display " [") (newline)
- (do ((i 0 (+ i 1)))
- ((= i nstates))
- (display " ")
- (let ((shifts (vector-ref shift-table i)))
- (if shifts
- (begin
- (display "(")
- (let loop ((l (shift-shifts shifts)))
- (if (null? l)
- (display ")")
- (let* ((state (car l))
- (symbol (vector-ref acces-symbol state)))
- (if (< symbol nvars)
- (display `(,symbol . ,state)))
- (loop (cdr l))))))
- (display '())))
- (newline))
- (display " ])") (newline)
- (newline))
-
-(define (output-reduction-table gram/actions prefix)
- (display "(defconst ") (display prefix) (display "reduction-table") (newline)
- (display " (vector") (newline)
- (display " '()") (newline)
- (for-each
- (lambda (p)
- (let ((act (cdr p)))
- (display " (lambda (stack sp goto-table $look)") (newline)
- (let* ((nt (caar p)) (rhs (cdar p)) (n (length rhs)))
- (display " (let* (")
- (if act
- (let loop ((i 1) (l rhs))
- (if (not (null? l))
- (let ((rest (cdr l)))
- (if (> i 1) (begin (newline) (display " ")))
- (display "($") (display (+ (- n i) 1)) (display " ")
- (display "(aref stack (- sp ")
- (display (- (* i 2) 1))
- (display ")))")
- (loop (+ i 1) rest)))))
- (display ")")
- (newline)
- (display " ")
- (if (= nt 0)
- (display "(accept $1)")
- (begin
- (display "(lr-push stack (- sp ")
- (display (* 2 n))
- (display ") ")
- (display nt)
- (display " goto-table ")
- (write (cdr p))
- (display ")")))
- (display "))") (newline))))
- gram/Actions)
- (display " ))") (newline)
- (newline))
-
-(define (output-header header parser-prefix)
- (display header)
- (display "(require 'lr-driver)") (newline)
- (newline))
-
-(define (output-footer footer)
- (display footer) (newline)
- (newline))
-
-(define (output-parser-def parser-prefix prefix)
- (display "(defun ") (display parser-prefix) (display "parse") (display "(scanner errorhandler)") (newline)
- (display " (lr-parse scanner errorhandler ") (newline)
- (display " ") (display prefix) (display "action-table") (newline)
- (display " ") (display prefix) (display "goto-table") (newline)
- (display " ") (display prefix) (display "reduction-table") (newline)
- (display " ") (display prefix) (display "token-defs))") (newline)
- (newline))
-
-(define (output-token-defs terms prefix)
- (let loop ((i 0) (l terms))
- (if (pair? l)
- (let ((x (car l)))
- (display "(defconst ") (display prefix)
- (write x)
- (display #\tab)
- (display i)
- (display ")")
- (newline)
- (loop (+ i 1) (cdr l)))))
- (newline)
- (display "(defconst ") (display prefix) (display "token-defs") (newline)
- (display " (list ") (newline)
- (let loop ((i 0) (l terms))
- (if (pair? l)
- (begin
- (display " (cons ")
- (display i)
- (display " \"") (display (car l)) (display "\")")
- (newline)
- (loop (+ i 1) (cdr l)))))
- (display " ))") (newline)
- (newline))
-
-;; --
-
-(define (rewrite-grammar grammar proc)
-
- (define eoi '*EOI*)
-
- (if (not (pair? grammar))
- (error "Grammar definition must be a non-empty list")
- (let loop1 ((lst grammar) (rev-terms '()))
- (if (and (pair? lst) (not (pair? (car lst)))) ; definition d'un terminal?
- (let ((term (car lst)))
- (cond ((not (valid-terminal? term))
- (error "Invalid terminal:" term))
- ((member term rev-terms)
- (error "Terminal previously defined:" term))
- (else
- (loop1 (cdr lst) (cons term rev-terms)))))
- (let loop2 ((lst lst) (rev-nonterm-defs '()))
- (if (pair? lst)
- (let ((def (car lst)))
- (if (not (pair? def))
- (error "Nonterminal definition must be a non-empty list")
- (let ((nonterm (car def)))
- (cond ((not (valid-nonterminal? nonterm))
- (error "Invalid nonterminal:" nonterm))
- ((or (member nonterm rev-terms)
- (assoc nonterm rev-nonterm-defs))
- (error "Nonterminal previously defined:" nonterm))
- (else
- (loop2 (cdr lst)
- (cons def rev-nonterm-defs)))))))
- (let* ((terms (cons eoi (reverse rev-terms)))
- (nonterm-defs (reverse rev-nonterm-defs))
- (nonterms (cons '*start* (map car nonterm-defs))))
- (if (= (length nonterms) 1)
- (error "Grammar must contain at least one nonterminal")
- (let ((compiled-nonterminals
- (map (lambda (nonterm-def)
- (rewrite-nonterm-def nonterm-def
- terms
- nonterms))
- (cons `(*start* (,(cadr nonterms) ,eoi) : $1)
- nonterm-defs))))
- (proc terms
- nonterms
- (map (lambda (x) (cons (caaar x) (map cdar x)))
- compiled-nonterminals)
- (apply append compiled-nonterminals)))))))))))
-
-
-(define (rewrite-nonterm-def nonterm-def terms nonterms)
-
- (define No-NT (length nonterms))
-
- (define (encode x)
- (let ((PosInNT (pos-in-list x nonterms)))
- (if PosInNT
- PosInNT
- (let ((PosInT (pos-in-list x terms)))
- (if PosInT
- (+ No-NT PosInT)
- (error "undefined symbol : " x))))))
-
- (if (not (pair? (cdr nonterm-def)))
- (error "At least one production needed for nonterminal" (car nonterm-def))
- (let ((name (symbol->string (car nonterm-def))))
- (let loop1 ((lst (cdr nonterm-def))
- (i 1)
- (rev-productions-and-actions '()))
- (if (not (pair? lst))
- (reverse rev-productions-and-actions)
- (let* ((rhs (car lst))
- (rest (cdr lst))
- (prod (map encode (cons (car nonterm-def) rhs))))
- (for-each (lambda (x)
- (if (not (or (member x terms) (member x nonterms)))
- (error "Invalid terminal or nonterminal" x)))
- rhs)
- (if (and (pair? rest)
- (eq? (car rest) ':)
- (pair? (cdr rest)))
- (loop1 (cddr rest)
- (+ i 1)
- (cons (cons prod (cadr rest))
- rev-productions-and-actions))
- (let* ((rhs-length (length rhs))
- (action
- (cons 'VECTOR
- (cons (list 'QUOTE (string->symbol
- (string-append
- name
- "-"
- (number->string i))))
- (let loop-j ((j 1))
- (if (> j rhs-length)
- '()
- (cons (string->symbol
- (string-append
- "$"
- (number->string j)))
- (loop-j (+ j 1)))))))))
- (loop1 rest
- (+ i 1)
- (cons (cons prod action)
- rev-productions-and-actions))))))))))
-
-(define (valid-nonterminal? x)
- (symbol? x))
-
-(define (valid-terminal? x)
- (symbol? x)) ; DB
-
-;; ---------------------------------------------------------------------- ;;
-;; Miscellaneous ;;
-;; ---------------------------------------------------------------------- ;;
-(define (pos-in-list x lst)
- (let loop ((lst lst) (i 0))
- (cond ((not (pair? lst)) #f)
- ((equal? (car lst) x) i)
- (else (loop (cdr lst) (+ i 1))))))
-
-(define (sunion lst1 lst2) ; union of sorted lists
- (let loop ((L1 lst1)
- (L2 lst2))
- (cond ((null? L1) L2)
- ((null? L2) L1)
- (else
- (let ((x (car L1)) (y (car L2)))
- (cond
- ((> x y)
- (cons y (loop L1 (cdr L2))))
- ((< x y)
- (cons x (loop (cdr L1) L2)))
- (else
- (loop (cdr L1) L2))
- ))))))
-
-(define (sinsert elem lst)
- (let loop ((l1 lst))
- (if (null? l1)
- (cons elem l1)
- (let ((x (car l1)))
- (cond ((< elem x)
- (cons elem l1))
- ((> elem x)
- (cons x (loop (cdr l1))))
- (else
- l1))))))
-
-(define (filter p lst)
- (let loop ((l lst))
- (if (null? l)
- '()
- (let ((x (car l)) (y (cdr l)))
- (if (p x)
- (cons x (loop y))
- (loop y))))))
-
-;; ---------------------------------------------------------------------- ;;
-;; Debugging tools ... ;;
-;; ---------------------------------------------------------------------- ;;
-(define the-terminals #f)
-(define the-nonterminals #f)
-
-(define (print-item item-no)
- (let loop ((i item-no))
- (let ((v (vector-ref ritem i)))
- (if (>= v 0)
- (loop (+ i 1))
- (let* ((rlno (- v))
- (nt (vector-ref rlhs rlno)))
- (display (vector-ref the-nonterminals nt)) (display " --> ")
- (let loop ((i (vector-ref rrhs rlno)))
- (let ((v (vector-ref ritem i)))
- (if (= i item-no)
- (display ". "))
- (if (>= v 0)
- (begin
- (print-symbol v)
- (display " ")
- (loop (+ i 1)))
- (begin
- (display " (rule ")
- (display (- v))
- (display ")")
- (newline))))))))))
-
-(define (print-symbol n)
- (display (if (>= n nvars)
- (vector-ref the-terminals (- n nvars))
- (vector-ref the-nonterminals n))))
-
-(define (print-states)
- (define (print-action act)
- (cond
- ((eq? act '*error*)
- (display " : Error"))
- ((eq? act 'accept)
- (display " : Accept input"))
- ((< act 0)
- (display " : reduce using rule ")
- (display (- act)))
- (else
- (display " : shift and goto state ")
- (display act)))
- (newline)
- #t)
-
- (define (print-actions acts)
- (let loop ((l acts))
- (if (null? l)
- #t
- (let ((sym (caar l))
- (act (cdar l)))
- (display " ")
- (cond
- ((eq? sym 'default)
- (display "default action"))
- (else
- (print-symbol (+ sym nvars))))
- (print-action act)
- (loop (cdr l))))))
-
- (if (not action-table)
- (begin
- (display "No generated parser available!")
- (newline)
- #f)
- (begin
- (display "State table") (newline)
- (display "-----------") (newline) (newline)
-
- (let loop ((l first-state))
- (if (null? l)
- #t
- (let* ((core (car l))
- (i (core-number core))
- (items (core-items core))
- (actions (vector-ref action-table i)))
- (display "state ") (display i) (newline)
- (newline)
- (for-each (lambda (x) (display " ") (print-item x))
- items)
- (newline)
- (print-actions actions)
- (newline)
- (loop (cdr l))))))))
-
-
-
+++ /dev/null
-(require 'emu)
-(require 'rx)
-(require 'automata)
-(provide 'lex)
-
-(put 'lex-scan-multibyte 'lisp-indent-function 3)
-(put 'lex-scan-unibyte 'lisp-indent-function 3)
-
-;;;
-
-(eval-and-compile
-;; CCL is not so fast for this library.
-;; Because it requires quadratic time for skipping string prefix.
-;; However, it is bit faster than emacs-lisp on average for common case,
-;; it is default if available.
-(defvar lex-use-ccl (fboundp 'ccl-execute-on-string))
-(when lex-use-ccl
- (require 'ccl))
-)
-
-;;; user interface macro
-
-;;; multibyte
-
-(defvar lex-scan-multibyte-str-var (make-symbol "str"))
-(defvar lex-scan-multibyte-ptr-var (make-symbol "ptr"))
-(defvar lex-scan-multibyte-end-var (make-symbol "end"))
-(defvar lex-scan-multibyte-mch-var (make-symbol "mch"))
-
-(defmacro lex-scan-multibyte-read (pc)
- `(if (< ,lex-scan-multibyte-ptr-var ,lex-scan-multibyte-end-var)
- (setq ,pc (sref ,lex-scan-multibyte-str-var ,lex-scan-multibyte-ptr-var)
- ,lex-scan-multibyte-ptr-var (char-next-index ,pc ,lex-scan-multibyte-ptr-var)
- ,pc (char-int ,pc))
- (lex-fail)))
-
-(defmacro lex-scan-multibyte-save ()
- `(setq ,lex-scan-multibyte-mch-var ,lex-scan-multibyte-ptr-var))
-
-(defmacro lex-scan-multibyte (str start end &rest clauses)
- (if (not start) (setq start 0))
- (if (not end) (setq end `(length ,lex-scan-multibyte-str-var)))
- (let ((id 1) (rx ()) (acts ()) tmp code
- (restore-code (if (symbolp start) `(setq ,start ,lex-scan-multibyte-mch-var))))
- (while (consp clauses)
- (setq rx (cons (rx-con (caar clauses) (rx-act id)) rx)
- acts (cons (cons id (cons restore-code (cdar clauses))) acts)
- id (1+ id)
- clauses (cdr clauses)))
- (setq rx (rx-alt rx)
- tmp (rx-categolize-char (rx-desugar rx)))
- `(let* ((,lex-scan-multibyte-str-var ,str)
- (,lex-scan-multibyte-ptr-var ,start)
- (,lex-scan-multibyte-end-var ,end)
- ,lex-scan-multibyte-mch-var)
- ,(lex-gen-machine (lex-automata (car tmp)) (cdr tmp) acts 'lex-scan-multibyte-read 'lex-scan-multibyte-save))))
-
-;;; unibyte
-
-(defvar lex-scan-unibyte-str-var (make-symbol "str"))
-(defvar lex-scan-unibyte-ptr-var (make-symbol "ptr"))
-(defvar lex-scan-unibyte-end-var (make-symbol "end"))
-(defvar lex-scan-unibyte-mch-var (make-symbol "mch"))
-
-(defmacro lex-scan-unibyte-read (pc)
- `(if (< ,lex-scan-unibyte-ptr-var ,lex-scan-unibyte-end-var)
- (setq ,pc (aref ,lex-scan-unibyte-str-var ,lex-scan-unibyte-ptr-var)
- ,lex-scan-unibyte-ptr-var (1+ ,lex-scan-unibyte-ptr-var)
- ,pc (char-int ,pc))
- (lex-fail)))
-
-(defmacro lex-scan-unibyte-save ()
- `(setq ,lex-scan-unibyte-mch-var ,lex-scan-unibyte-ptr-var))
-
-(defmacro lex-scan-unibyte (str start end &rest clauses)
- (if (not start) (setq start 0))
- (if (not end) (setq end `(length ,lex-scan-unibyte-str-var)))
- (let ((id 1) (rx ()) (acts ()) tmp code
- (restore-code (if (symbolp start) `(setq ,start ,lex-scan-unibyte-mch-var))))
- (while (consp clauses)
- (setq rx (cons (rx-con (caar clauses) (rx-act id)) rx)
- acts (cons (cons id (cons restore-code (cdar clauses))) acts)
- id (1+ id)
- clauses (cdr clauses)))
- (setq rx (rx-alt rx)
- tmp (rx-categolize-char (rx-desugar rx)))
- `(let* ((,lex-scan-unibyte-str-var ,str)
- (,lex-scan-unibyte-ptr-var ,start)
- (,lex-scan-unibyte-end-var ,end)
- ,lex-scan-unibyte-mch-var)
- ,(lex-gen-machine (lex-automata (car tmp)) (cdr tmp) acts 'lex-scan-unibyte-read 'lex-scan-unibyte-save))))
-
-;;; automata generation
-
-(defun lex-automata (rx)
- (let* ((rx (rx-simplify rx))
- (stack (list rx)) ; list of rx
- (table (list (rx-cons* rx 0 (lex-make-box (list 'd1 'd2)))))
- ; list of (rx id . box-for-reverse-links)
- (states ()) ; list of (id act trans . box-for-reverse-links)
- ; where trans = list of (pc id . box-for-reverse-links)
- (next-id 1)
- tbl-ent box id pcs act pc trans rx-stepped p)
- (while (consp stack)
- (setq rx (car stack)
- stack (cdr stack)
- tbl-ent (assoc rx table)
- id (cadr tbl-ent)
- box (cddr tbl-ent)
- pcs (rx-head-pcs rx)
- act (rx-head-act rx)
- trans ())
- (while (consp pcs)
- (setq pc (car pcs)
- pcs (cdr pcs)
- rx-stepped (rx-step rx pc)
- p (assoc rx-stepped table))
- (if p
- (progn
- (setq trans (cons (cons pc (cdr p)) trans))
- (lex-add-box (cddr p) id))
- (setq p (rx-cons* rx-stepped next-id (lex-make-box (list id)))
- trans (cons (cons pc (cdr p)) trans)
- table (cons p table)
- next-id (1+ next-id)
- stack (cons rx-stepped stack))))
- (setq states
- (cons (rx-cons* id act trans box)
- states)))
- states))
-
-;;; automata coding
-
-(defvar lex-pc-var (make-symbol "pc"))
-(defvar lex-act-var (make-symbol "act"))
-(defvar lex-escape-tag (make-symbol "esc"))
-
-(defun lex-gen-machine (states cs acts read-macro save-macro)
- `(let (,lex-pc-var ,lex-act-var)
- ,(if (and lex-use-ccl
- (eq read-macro 'lex-scan-unibyte-read)
- (eq save-macro 'lex-scan-unibyte-save))
- (lex-gen-ccl-unibyte-automata states cs)
- (lex-gen-automata states cs read-macro save-macro))
- ,(lex-gen-action acts)))
-
-(defun lex-gen-automata (states cs read-macro save-macro)
- `(catch ',lex-escape-tag
- (automata
- ,lex-pc-var 0
- ,@(mapcar
- (lambda (s) (lex-gen-state s cs read-macro save-macro))
- states))))
-
-(defun lex-gen-state (s cs read-macro save-macro)
- (let ((id (nth 0 s))
- (act (nth 1 s))
- (trans (nth 2 s)))
- `(,id
- (progn
- ,@(if act
- `((lex-match ,(cdr act)) (,save-macro))
- ())
- ,@(if (consp trans) `((,read-macro ,lex-pc-var))))
- (lex-fail)
- ,@(mapcar
- (lambda (tr) `(,(let ((l (member (car tr) cs)))
- (if (null (cdr l))
- (natset-seg (car l))
- (natset-seg (car l) (1- (cadr l)))))
- ,(cadr tr)))
- trans))))
-
-(defun lex-gen-action (acts)
- `(automata-branch
- ,lex-act-var ,(apply 'natset-single (mapcar 'car acts)) automata-never-fail
- ,@(mapcar
- (lambda (act) `(,(natset-single (car act)) nil ,@(cdr act)))
- acts)))
-
-;;; CCL version automata generation
-
-(defun lex-gen-ccl-unibyte-automata (states cs)
- ;; read-macro is lex-scan-unibyte-read
- ;; save-macro is lex-scan-unibyte-save
- `(let ((status [nil nil nil nil nil nil nil nil nil]))
- (aset status 0 nil) ; r0: pc
- (aset status 1 0) ; r1: state
- (aset status 2 ,lex-scan-unibyte-ptr-var) ; r2: ptr
- (aset status 3 ,lex-scan-unibyte-ptr-var) ; r3: start
- (aset status 4 ,lex-scan-unibyte-end-var) ; r4: end
- (aset status 5 nil) ; r5: mch
- (aset status 6 0) ; r6: act
- (aset status 7 nil) ; r7
- (aset status 8 nil) ; ic
- (ccl-execute-on-string
- (eval-when-compile
- (ccl-compile
- ',(lex-gen-ccl-unibyte-automata-program states cs)))
- status
- ,lex-scan-unibyte-str-var)
- (setq ,lex-scan-unibyte-ptr-var (aref status 2))
- (when (< 0 (aref status 6))
- (setq ,lex-act-var (aref status 6)
- ,lex-scan-unibyte-mch-var (aref status 5)))))
-
-(defun lex-gen-ccl-unibyte-automata-program (states cs)
- `(0
- ((loop
- (if (r3 > 0)
- ((r3 -= 1)
- (read r0)
- (repeat))
- (break)))
- (loop
- (branch r1
- ,@(mapcar
- (lambda (s) (lex-gen-ccl-unibyte-automata-state
- (nth 0 s) (cdr (nth 1 s)) (nth 2 s)
- cs))
- (sort states
- (lambda (a b) (< (car a) (car b))))))))))
-
-(defun lex-gen-ccl-unibyte-automata-state (id act trans cs)
- `(,@(when act
- `((r5 = r2)
- (r6 = ,act)))
- ,@(if (consp trans)
- `((if (r4 <= r2)
- (end)
- ((read r0)
- (r2 += 1)
- ,(apply
- 'natset-gen-ccl-branch
- 'r0
- '(end)
- (mapcar
- (lambda (tr) (cons
- (let ((l (member (car tr) cs)))
- (if (null (cdr l))
- (natset-seg (car l))
- (natset-seg (car l) (1- (cadr l)))))
- `((r1 = ,(cadr tr))
- (repeat))))
- trans))
- (repeat))))
- '((end)))))
-
-;;; internal macros
-
-(defmacro lex-match (id)
- `(setq ,lex-act-var ',id))
-(defmacro lex-fail ()
- `(throw ',lex-escape-tag nil))
-
-;;; utilities
-
-(defun lex-make-box (val)
- (list val))
-(defalias 'lex-box-ref 'car)
-
-(defun lex-add-box (box val)
- (if (not (member val (car box)))
- (setcar box (cons val (car box)))))
-
-;;; testing
-'(
-
- (mapcar (lambda (v) (set v (intern (symbol-name (symbol-value v)))))
- '(lex-pc-var
- lex-act-var
- lex-escape-tag
- lex-scan-multibyte-str-var
- lex-scan-multibyte-ptr-var
- lex-scan-multibyte-end-var
- lex-scan-multibyte-mch-var
- lex-scan-unibyte-str-var
- lex-scan-unibyte-ptr-var
- lex-scan-unibyte-end-var
- lex-scan-unibyte-mch-var))
-
- (lex-scan-multibyte
- "aaa" 0 3
- (?a 'a))
-
-(let* ((str "abcdef\ndeefx\r\n jfdks\r")
- (p 15))
- (cons
- (lex-scan-unibyte str p nil
- (()
- 'error)
- (((* [^ "\r\n"])
- (* (+ ?\r) [^ "\r\n"] (* [^ "\r"]))
- (* ?\r)
- (?\r ?\n [" \t"]))
- 'line-fold)
- (((* [^ "\r\n"])
- (* (+ ?\r) [^ "\r\n"] (* [^ "\r"]))
- (* ?\r)
- (?\r ?\n))
- 'line-crlf)
- (((* [^ "\r\n"])
- (* (+ ?\r) [^ "\r\n"] (* [^ "\r"]))
- (* ?\r))
- 'line))
- p))
-
-(ew-crlf-line-convert "abcdef\ndeefx\r\n jfdks\r"
- (lambda (a) (format "[L:%s]" a))
- (lambda (a) (format "[F:%s]" a))
- (lambda (a) (format "[N:%s]" a)))
-
-
-)
-
+++ /dev/null
-;; ---------------------------------------------------------------------- ;;
-;; FICHIER : lr-dvr.scm ;;
-;; DATE DE CREATION : Fri May 31 15:47:05 1996 ;;
-;; DERNIERE MODIFICATION : Fri May 31 15:51:13 1996 ;;
-;; ---------------------------------------------------------------------- ;;
-;; Copyright (c) 1996 Dominique Boucher ;;
-;; ---------------------------------------------------------------------- ;;
-;; The LR parser driver ;;
-;; ;;
-;; lr-dvr.scm is part of the lalr.scm distribution which is free ;;
-;; software; you can redistribute it and/or modify ;;
-;; it under the terms of the GNU General Public License as published by ;;
-;; the Free Software Foundation; either version 2, or (at your option) ;;
-;; any later version. ;;
-;; ;;
-;; lalr.scm is distributed in the hope that it will be useful, ;;
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;
-;; GNU General Public License for more details. ;;
-;; ;;
-;; You should have received a copy of the GNU General Public License ;;
-;; along with lalr.scm; see the file COPYING. If not, write to ;;
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;;
-;; ---------------------------------------------------------------------- ;;
-
-;; 1998/08/16: Tanaka Akira <akr@jaist.ac.jp> transplants from Scheme to Emacs-Lisp.
-
-(provide 'lr-driver)
-
-(defconst lr-max-stack-size 500)
-
-(defsubst lr-push (stack sp new-cat goto-table lval)
- (let* ((state (aref stack sp))
- (new-state (cdr (assq new-cat (aref goto-table state))))
- (new-sp (+ sp 2)))
- (if (>= new-sp lr-max-stack-size)
- (error "PARSE ERROR : stack overflow")
- (progn
- (aset stack new-sp new-state)
- (aset stack (- new-sp 1) lval)
- new-sp))))
-
-(defun lr-parse (lexerp errorp action-table goto-table reduction-table token-defs)
- (let ((stack (make-vector lr-max-stack-size 0)) (sp 0) (input (funcall lexerp)))
- (catch 'parser
- (while t
- (let* ((state (aref stack sp))
- (i (car input))
- (act (let* ((l (aref action-table state)) (y (assq i l))) (if y (cdr y) (cdar l)))))
-
- (cond
-
- ;; Input succesfully parsed
- ((eq act 'accept)
- (throw 'parser (aref stack 1)))
-
- ;; Syntax error in input
- ((eq act '*error*)
- (throw 'parser
- (funcall errorp "PARSE ERROR : unexpected token : "
- (cdr (assq i token-defs)))))
-
- ;; Shift current token on top of the stack
- ((>= act 0)
- (aset stack (+ sp 1) (cdr input))
- (aset stack (+ sp 2) act)
- (setq sp (+ sp 2))
- (setq input (funcall lexerp)))
-
- ;; Reduce by rule (- act)
- (t
- (setq sp (funcall (aref reduction-table (- act)) stack sp goto-table (cdr input))))))))))
+++ /dev/null
-;;; mailcap.el --- mailcap parser
-
-;; Copyright (C) 1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1997/6/27
-;; Keywords: mailcap, setting, configuration, MIME, multimedia
-
-;; This file is part of SEMI (Spadework for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime-def)
-
-
-;;; @ comment
-;;;
-
-(defsubst mailcap-skip-comment ()
- (let ((chr (char-after (point))))
- (when (and chr
- (or (= chr ?\n)
- (= chr ?#)))
- (forward-line)
- t)))
-
-
-;;; @ token
-;;;
-
-(defsubst mailcap-look-at-token ()
- (if (looking-at mime-token-regexp)
- (let ((beg (match-beginning 0))
- (end (match-end 0)))
- (goto-char end)
- (buffer-substring beg end)
- )))
-
-
-;;; @ typefield
-;;;
-
-(defsubst mailcap-look-at-type-field ()
- (let ((type (mailcap-look-at-token)))
- (if type
- (if (eq (char-after (point)) ?/)
- (progn
- (forward-char)
- (let ((subtype (mailcap-look-at-token)))
- (if subtype
- (cons (cons 'type (intern type))
- (unless (string= subtype "*")
- (list (cons 'subtype (intern subtype)))
- )))))
- (list (cons 'type (intern type)))
- ))))
-
-
-;;; @ field separator
-;;;
-
-(defsubst mailcap-skip-field-separator ()
- (let ((ret (looking-at "\\([ \t]\\|\\\\\n\\)*;\\([ \t]\\|\\\\\n\\)*")))
- (when ret
- (goto-char (match-end 0))
- t)))
-
-
-;;; @ mtext
-;;;
-
-(defsubst mailcap-look-at-schar ()
- (let ((chr (char-after (point))))
- (if (and (>= chr ? )
- (/= chr ?\;)
- (/= chr ?\\)
- )
- (prog1
- chr
- (forward-char)))))
-
-(defsubst mailcap-look-at-qchar ()
- (let ((chr (char-after (point))))
- (when (eq chr ?\\)
- (forward-char 2)
- (char-before (point))
- )))
-
-(defsubst mailcap-look-at-mtext ()
- (let ((beg (point)))
- (while (or (mailcap-look-at-qchar)
- (mailcap-look-at-schar)))
- (buffer-substring beg (point))
- ))
-
-
-;;; @ field
-;;;
-
-(defsubst mailcap-look-at-field ()
- (let ((token (mailcap-look-at-token)))
- (if token
- (if (looking-at "[ \t]*=[ \t]*")
- (let ((value (progn
- (goto-char (match-end 0))
- (mailcap-look-at-mtext))))
- (if value
- (cons (intern token) value)
- ))
- (list (intern token))
- ))))
-
-
-;;; @ mailcap entry
-;;;
-
-(defun mailcap-look-at-entry ()
- (let ((type (mailcap-look-at-type-field)))
- (if (and type (mailcap-skip-field-separator))
- (let ((view (mailcap-look-at-mtext))
- fields field)
- (when view
- (while (and (mailcap-skip-field-separator)
- (setq field (mailcap-look-at-field))
- )
- (setq fields (cons field fields))
- )
- (nconc type
- (list (cons 'view view))
- fields))))))
-
-
-;;; @ main
-;;;
-
-(defun mailcap-parse-buffer (&optional buffer order)
- "Parse BUFFER as a mailcap, and return the result.
-If optional argument ORDER is a function, result is sorted by it.
-If optional argument ORDER is not specified, result is sorted original
-order. Otherwise result is not sorted."
- (save-excursion
- (if buffer
- (set-buffer buffer))
- (goto-char (point-min))
- (let (entries entry)
- (while (progn
- (while (mailcap-skip-comment))
- (setq entry (mailcap-look-at-entry))
- )
- (setq entries (cons entry entries))
- (forward-line)
- )
- (cond ((functionp order) (sort entries order))
- ((null order) (nreverse entries))
- (t entries)
- ))))
-
-
-(defcustom mailcap-file "~/.mailcap"
- "*File name of user's mailcap file."
- :group 'mime
- :type 'file)
-
-(defun mailcap-parse-file (&optional filename order)
- "Parse FILENAME as a mailcap, and return the result.
-If optional argument ORDER is a function, result is sorted by it.
-If optional argument ORDER is not specified, result is sorted original
-order. Otherwise result is not sorted."
- (or filename
- (setq filename mailcap-file))
- (with-temp-buffer
- (insert-file-contents filename)
- (mailcap-parse-buffer (current-buffer) order)
- ))
-
-(defun mailcap-format-command (mtext situation)
- "Return formated command string from MTEXT and SITUATION.
-
-MTEXT is a command text of mailcap specification, such as
-view-command.
-
-SITUATION is an association-list about information of entity. Its key
-may be:
-
- 'type primary media-type
- 'subtype media-subtype
- 'filename filename
- STRING parameter of Content-Type field"
- (let ((i 0)
- (len (length mtext))
- (p 0)
- dest)
- (while (< i len)
- (let ((chr (aref mtext i)))
- (cond ((eq chr ?%)
- (setq i (1+ i)
- chr (aref mtext i))
- (cond ((eq chr ?s)
- (let ((file (cdr (assq 'filename situation))))
- (if (null file)
- (error "'filename is not specified in situation.")
- (setq dest (concat dest
- (substring mtext p (1- i))
- file)
- i (1+ i)
- p i)
- )))
- ((eq chr ?t)
- (let ((type (or (mime-type/subtype-string
- (cdr (assq 'type situation))
- (cdr (assq 'subtype situation)))
- "text/plain")))
- (setq dest (concat dest
- (substring mtext p (1- i))
- type)
- i (1+ i)
- p i)
- ))
- ((eq chr ?\{)
- (setq i (1+ i))
- (if (not (string-match "}" mtext i))
- (error "parse error!!!")
- (let* ((me (match-end 0))
- (attribute (substring mtext i (1- me)))
- (parameter (cdr (assoc attribute situation))))
- (if (null parameter)
- (error "\"%s\" is not specified in situation."
- attribute)
- (setq dest (concat dest
- (substring mtext p (- i 2))
- parameter)
- i me
- p i)
- )
- )))
- (t (error "Invalid sequence `%%%c'." chr))
- ))
- ((eq chr ?\\)
- (setq dest (concat dest (substring mtext p i))
- p (1+ i)
- i (+ i 2))
- )
- (t (setq i (1+ i)))
- )))
- (concat dest (substring mtext p))
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mailcap)
-
-;;; mailcap.el ends here
+++ /dev/null
-;;; mel-b.el: Base64 encoder/decoder for GNU Emacs
-
-;; Copyright (C) 1992,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: ENAMI Tsugutomo <enami@sys.ptg.sony.co.jp>
-;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/6/24
-;; Keywords: MIME, Base64
-
-;; This file is part of MEL (MIME Encoding Library).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-
-
-;;; @ variables
-;;;
-
-(defvar base64-external-encoder '("mmencode")
- "*list of base64 encoder program name and its arguments.")
-
-(defvar base64-external-decoder '("mmencode" "-u")
- "*list of base64 decoder program name and its arguments.")
-
-(defvar base64-external-decoder-option-to-specify-file '("-o")
- "*list of options of base64 decoder program to specify file.")
-
-(defvar base64-internal-encoding-limit 1000
- "*limit size to use internal base64 encoder.
-If size of input to encode is larger than this limit,
-external encoder is called.")
-
-(defvar base64-internal-decoding-limit 1000
- "*limit size to use internal base64 decoder.
-If size of input to decode is larger than this limit,
-external decoder is called.")
-
-
-;;; @ internal base64 decoder/encoder
-;;; based on base64 decoder by Enami Tsugutomo
-
-;;; @@ convert from/to base64 char
-;;;
-
-(defun base64-num-to-char (n)
- (cond ((eq n nil) ?=)
- ((< n 26) (+ ?A n))
- ((< n 52) (+ ?a (- n 26)))
- ((< n 62) (+ ?0 (- n 52)))
- ((= n 62) ?+)
- ((= n 63) ?/)
- (t (error "not a base64 integer %d" n))))
-
-(defun base64-char-to-num (c)
- (cond ((and (<= ?A c) (<= c ?Z)) (- c ?A))
- ((and (<= ?a c) (<= c ?z)) (+ (- c ?a) 26))
- ((and (<= ?0 c) (<= c ?9)) (+ (- c ?0) 52))
- ((= c ?+) 62)
- ((= c ?/) 63)
- ((= c ?=) nil)
- (t (error "not a base64 character %c" c))))
-
-
-;;; @@ encode/decode one base64 unit
-;;;
-
-(defun base64-encode-1 (pack)
- (let ((a (car pack))
- (b (nth 1 pack))
- (c (nth 2 pack)))
- (concat
- (char-to-string (base64-num-to-char (ash a -2)))
- (if b
- (concat
- (char-to-string
- (base64-num-to-char (logior (ash (logand a 3) 4) (ash b -4))))
- (if c
- (concat
- (char-to-string
- (base64-num-to-char (logior (ash (logand b 15) 2) (ash c -6))))
- (char-to-string (base64-num-to-char (logand c 63)))
- )
- (concat (char-to-string
- (base64-num-to-char (ash (logand b 15) 2))) "=")
- ))
- (concat (char-to-string
- (base64-num-to-char (ash (logand a 3) 4))) "==")
- ))))
-
-(defun base64-decode-unit (a b &optional c d)
- (condition-case err
- (concat
- (char-to-string (logior (ash (base64-char-to-num a) 2)
- (ash (setq b (base64-char-to-num b)) -4)))
- (if (and c (setq c (base64-char-to-num c)))
- (concat (char-to-string
- (logior (ash (logand b 15) 4) (ash c -2)))
- (if (and d (setq d (base64-char-to-num d)))
- (char-to-string (logior (ash (logand c 3) 6) d))
- ))))
- (error (message (nth 1 err))
- "")))
-
-
-;;; @@ base64 encoder/decoder for string
-;;;
-
-(defun base64-encode-string (string)
- "Encode STRING to base64, and return the result."
- (let ((len (length string))
- (b 0)(e 57)
- dest)
- (while (< e len)
- (setq dest
- (concat dest
- (mapconcat
- (function base64-encode-1)
- (pack-sequence (substring string b e) 3)
- "")
- "\n"))
- (setq b e
- e (+ e 57)
- )
- )
- (let* ((es (mapconcat
- (function base64-encode-1)
- (pack-sequence (substring string b) 3)
- ""))
- (m (mod (length es) 4))
- )
- (concat dest es (cond ((= m 3) "=")
- ((= m 2) "==")
- ))
- )))
-
-(defun base64-internal-decode-string (string)
- (let ((len (length string))
- (i 0)
- dest)
- (while (< i len)
- (let ((a (aref string i)))
- (setq i (1+ i))
- (unless (eq a ?\n)
- (let ((b (aref string i)))
- (setq i (1+ i))
- (cond
- ((eq b ?\n)
- ;; invalid
- )
- ((>= i len)
- (setq dest (concat dest (base64-decode-unit a b) ))
- )
- (t
- (let ((c (aref string i)))
- (setq i (1+ i))
- (cond
- ((eq c ?\n)
- (setq dest (concat dest (base64-decode-unit a b)))
- )
- ((>= i len)
- (setq dest (concat dest (base64-decode-unit a b c)))
- )
- (t
- (let ((d (aref string i)))
- (setq i (1+ i))
- (setq dest
- (concat dest
- (if (eq c ?\n)
- (base64-decode-unit a b c)
- (base64-decode-unit a b c d))))
- ))))))))))
- dest))
-
-
-;;; @ base64 encoder/decoder for region
-;;;
-
-(defun base64-internal-encode-region (beg end)
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (let ((str (buffer-substring beg end)))
- (delete-region beg end)
- (insert (base64-encode-string str))
- )
- (or (bolp)
- (insert "\n")
- )
- )))
-
-(defun base64-internal-decode-region (beg end)
- (save-excursion
- (let ((str (buffer-substring beg end)))
- (delete-region beg end)
- (goto-char beg)
- (insert (base64-internal-decode-string str)))))
-
-(defun base64-external-encode-region (beg end)
- (save-excursion
- (save-restriction
- (narrow-to-region beg end)
- (as-binary-process (apply (function call-process-region)
- beg end (car base64-external-encoder)
- t t nil (cdr base64-external-encoder))
- )
- ;; for OS/2
- ;; regularize line break code
- (goto-char (point-min))
- (while (re-search-forward "\r$" nil t)
- (replace-match "")
- )
- )))
-
-(defun base64-external-decode-region (beg end)
- (save-excursion
- (as-binary-process (apply (function call-process-region)
- beg end (car base64-external-decoder)
- t t nil (cdr base64-external-decoder))
- )))
-
-(defun base64-external-decode-string (string)
- (with-temp-buffer
- (insert string)
- (as-binary-process (apply (function call-process-region)
- (point-min) (point-max)
- (car base64-external-decoder)
- t t nil (cdr base64-external-decoder))
- )
- (buffer-string)))
-
-
-(defun base64-encode-region (start end)
- "Encode current region by base64.
-START and END are buffer positions.
-This function calls internal base64 encoder if size of region is
-smaller than `base64-internal-encoding-limit', otherwise it calls
-external base64 encoder specified by `base64-external-encoder'. In
-this case, you must install the program (maybe mmencode included in
-metamail or XEmacs package)."
- (interactive "r")
- (if (and base64-internal-encoding-limit
- (> (- end start) base64-internal-encoding-limit))
- (base64-external-encode-region start end)
- (base64-internal-encode-region start end)
- ))
-
-(defun base64-decode-region (start end)
- "Decode current region by base64.
-START and END are buffer positions.
-This function calls internal base64 decoder if size of region is
-smaller than `base64-internal-decoding-limit', otherwise it calls
-external base64 decoder specified by `base64-external-decoder'. In
-this case, you must install the program (maybe mmencode included in
-metamail or XEmacs package)."
- (interactive "r")
- (if (and base64-internal-decoding-limit
- (> (- end start) base64-internal-decoding-limit))
- (base64-external-decode-region start end)
- (base64-internal-decode-region start end)
- ))
-
-(defun base64-decode-string (string)
- "Decode STRING which is encoded in base64, and return the result.
-This function calls internal base64 decoder if size of STRING is
-smaller than `base64-internal-decoding-limit', otherwise it calls
-external base64 decoder specified by `base64-external-decoder'. In
-this case, you must install the program (maybe mmencode included in
-metamail or XEmacs package)."
- (interactive "r")
- (if (and base64-internal-decoding-limit
- (> (length string) base64-internal-decoding-limit))
- (base64-external-decode-string string)
- (base64-internal-decode-string string)
- ))
-
-
-;;; @ base64 encoder/decoder for file
-;;;
-
-(defun base64-insert-encoded-file (filename)
- "Encode contents of file FILENAME to base64, and insert the result.
-It calls external base64 encoder specified by
-`base64-external-encoder'. So you must install the program (maybe
-mmencode included in metamail or XEmacs package)."
- (interactive (list (read-file-name "Insert encoded file: ")))
- (apply (function call-process) (car base64-external-encoder)
- filename t nil (cdr base64-external-encoder))
- )
-
-(defun base64-write-decoded-region (start end filename)
- "Decode and write current region encoded by base64 into FILENAME.
-START and END are buffer positions."
- (interactive
- (list (region-beginning) (region-end)
- (read-file-name "Write decoded region to file: ")))
- (as-binary-process
- (apply (function call-process-region)
- start end (car base64-external-decoder)
- nil nil nil
- (append (cdr base64-external-decoder)
- base64-external-decoder-option-to-specify-file
- (list filename))
- )))
-
-
-;;; @ etc
-;;;
-
-(defun base64-encoded-length (string)
- (let ((len (length string)))
- (* (+ (/ len 3)
- (if (= (mod len 3) 0) 0 1)
- ) 4)
- ))
-
-(defun pack-sequence (seq size)
- "Split sequence SEQ into SIZE elements packs,
-and return list of packs. [mel-b; tl-seq function]"
- (let ((len (length seq)) (p 0) obj
- unit (i 0)
- dest)
- (while (< p len)
- (setq obj (elt seq p))
- (setq unit (cons obj unit))
- (setq i (1+ i))
- (if (= i size)
- (progn
- (setq dest (cons (reverse unit) dest))
- (setq unit nil)
- (setq i 0)
- ))
- (setq p (1+ p))
- )
- (if unit
- (setq dest (cons (reverse unit) dest))
- )
- (reverse dest)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mel-b)
-
-;;; mel-b.el ends here.
+++ /dev/null
-;;; mel-dl.el: Base64 encoder/decoder using DL module
-
-;; Copyright (C) 1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, Base64
-
-;; This file is part of MEL (MIME Encoding Library).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-
-(defvar base64-dl-module
- (expand-file-name "base64.so" exec-directory))
-
-(defvar base64-dl-handle
- (and (file-exists-p base64-dl-module)
- (dynamic-link base64-dl-module)))
-
-(dynamic-call "emacs_base64_init" base64-dl-handle)
-
-(defalias 'base64-encode-string 'encode-base64-string)
-(defalias 'base64-decode-string 'decode-base64-string)
-
-(defun base64-encode-region (start end)
- "Encode current region by base64.
-START and END are buffer positions."
- (interactive "r")
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (let ((str (buffer-substring start end)))
- (delete-region start end)
- (insert (encode-base64-string str))
- )
- (or (bolp)
- (insert "\n")
- )
- )))
-
-(defun base64-decode-region (start end)
- "Decode current region by base64.
-START and END are buffer positions."
- (interactive "r")
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char (point-min))
- (while (looking-at ".*\n")
- (condition-case err
- (replace-match
- (decode-base64-string
- (buffer-substring (match-beginning 0) (1- (match-end 0))))
- t t)
- (error
- (prog1
- (message (nth 1 err))
- (replace-match "")))))
- (if (looking-at ".*$")
- (condition-case err
- (replace-match
- (decode-base64-string
- (buffer-substring (match-beginning 0) (match-end 0)))
- t t)
- (error
- (prog1
- (message (nth 1 err))
- (replace-match "")))
- ))
- )))
-
-
-;;; @ base64 encoder/decoder for file
-;;;
-
-(defvar base64-external-encoder '("mmencode")
- "*list of base64 encoder program name and its arguments.")
-
-(defvar base64-external-decoder '("mmencode" "-u")
- "*list of base64 decoder program name and its arguments.")
-
-(defvar base64-external-decoder-option-to-specify-file '("-o")
- "*list of options of base64 decoder program to specify file.")
-
-(defun base64-insert-encoded-file (filename)
- "Encode contents of file FILENAME to base64, and insert the result.
-It calls external base64 encoder specified by
-`base64-external-encoder'. So you must install the program (maybe
-mmencode included in metamail or XEmacs package)."
- (interactive (list (read-file-name "Insert encoded file: ")))
- (apply (function call-process) (car base64-external-encoder)
- filename t nil (cdr base64-external-encoder))
- )
-
-(defun base64-write-decoded-region (start end filename)
- "Decode and write current region encoded by base64 into FILENAME.
-START and END are buffer positions."
- (interactive
- (list (region-beginning) (region-end)
- (read-file-name "Write decoded region to file: ")))
- (as-binary-process
- (apply (function call-process-region)
- start end (car base64-external-decoder)
- nil nil nil
- (append (cdr base64-external-decoder)
- base64-external-decoder-option-to-specify-file
- (list filename))
- )))
-
-
-;;; @ etc
-;;;
-
-(defun base64-encoded-length (string)
- (let ((len (length string)))
- (* (+ (/ len 3)
- (if (= (mod len 3) 0) 0 1)
- ) 4)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mel-dl)
-
-;;; mel-dl.el ends here.
+++ /dev/null
-;;; mel-g.el: Gzip64 encoder/decoder for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
-;; Copyright (C) 1996,1997 Shuhei KOBAYASHI
-
-;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; modified by MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Created: 1995/10/25
-;; Keywords: Gzip64, base64, gzip, MIME
-
-;; This file is part of MEL (MIME Encoding Library).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Commentary:
-
-;;; NOTE: Gzip64 is an experimental Content-Transfer-Encoding and its
-;;; use is STRONGLY DISCOURAGED except for private communication.
-
-;;; Code:
-
-(require 'emu)
-(require 'path-util)
-
-
-;;; @ variables
-;;;
-
-(defvar gzip64-external-encoder
- (let ((file (exec-installed-p "mmencode")))
- (and file
- (` ("sh" "-c" (, (concat "gzip -c | " file))))
- ))
- "*list of gzip64 encoder program name and its arguments.")
-
-(defvar gzip64-external-decoder
- (let ((file (exec-installed-p "mmencode")))
- (and file
- (` ("sh" "-c" (, (concat file " -u | gzip -dc"))))
- ))
- "*list of gzip64 decoder program name and its arguments.")
-
-
-;;; @ encoder/decoder for region
-;;;
-
-(defun gzip64-external-encode-region (beg end)
- (interactive "*r")
- (save-excursion
- (as-binary-process (apply (function call-process-region)
- beg end (car gzip64-external-encoder)
- t t nil (cdr gzip64-external-encoder))
- )
- ;; for OS/2
- ;; regularize line break code
- (goto-char (point-min))
- (while (re-search-forward "\r$" nil t)
- (replace-match "")
- )
- ))
-
-(defun gzip64-external-decode-region (beg end)
- (interactive "*r")
- (save-excursion
- (as-binary-process (apply (function call-process-region)
- beg end (car gzip64-external-decoder)
- t t nil (cdr gzip64-external-decoder))
- )
- ))
-
-(defalias 'gzip64-encode-region 'gzip64-external-encode-region)
-(defalias 'gzip64-decode-region 'gzip64-external-decode-region)
-
-
-;;; @ encoder/decoder for file
-;;;
-
-(defun gzip64-insert-encoded-file (filename)
- (interactive (list (read-file-name "Insert encoded file: ")))
- (apply (function call-process) (car gzip64-external-encoder)
- filename t nil
- (cdr gzip64-external-encoder))
- )
-
-(defun gzip64-write-decoded-region (start end filename)
- "Decode and write current region encoded by gzip64 into FILENAME.
-START and END are buffer positions."
- (interactive
- (list (region-beginning) (region-end)
- (read-file-name "Write decoded region to file: ")))
- (as-binary-process
- (apply (function call-process-region)
- start end (car gzip64-external-decoder)
- nil nil nil
- (let ((args (cdr gzip64-external-decoder)))
- (append (butlast args)
- (list (concat (car (last args)) ">" filename))))
- )))
-
-
-;;; @ end
-;;;
-
-(provide 'mel-g)
-
-;;; mel-g.el ends here.
+++ /dev/null
-;;; mel-q.el: Quoted-Printable and Q-encoding encoder/decoder for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/6/25
-;; Keywords: MIME, Quoted-Printable, Q-encoding
-
-;; This file is part of MEL (MIME Encoding Library).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-(require 'mime-def)
-
-
-;;; @ Quoted-Printable encoder
-;;;
-
-(defsubst quoted-printable-quote-char (character)
- (concat
- "="
- (char-to-string (aref quoted-printable-hex-chars (ash character -4)))
- (char-to-string (aref quoted-printable-hex-chars (logand character 15)))
- ))
-
-(defun quoted-printable-internal-encode-region (start end)
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (let ((col 0))
- (while (< (point)(point-max))
- (cond ((>= col 75)
- (insert "=\n")
- (setq col 0)
- )
- ((looking-at-as-unibyte "^From ")
- (replace-match "=46rom ")
- (backward-char 1)
- (setq col (+ col 6))
- )
- ((looking-at-as-unibyte "[ \t]\n")
- (forward-char 1)
- (insert "=\n")
- (forward-char 1)
- (setq col 0)
- )
- (t
- (let ((chr (char-after (point))))
- (cond ((= chr ?\n)
- (forward-char 1)
- (setq col 0)
- )
- ((or (= chr ?\t)
- (and (<= 32 chr)(/= chr ?=)(< chr 127))
- )
- (forward-char 1)
- (setq col (1+ col))
- )
- ((>= col 73)
- (insert "=\n")
- (setq col 0)
- )
- (t
- (delete-char 1)
- (insert (quoted-printable-quote-char chr))
- (setq col (+ col 3))
- ))
- )))
- )))))
-
-
-(defvar quoted-printable-external-encoder '("mmencode" "-q")
- "*list of quoted-printable encoder program name and its arguments.")
-
-(defun quoted-printable-external-encode-region (start end)
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (as-binary-process
- (apply (function call-process-region)
- start end (car quoted-printable-external-encoder)
- t t nil (cdr quoted-printable-external-encoder))
- )
- ;; for OS/2
- ;; regularize line break code
- (goto-char (point-min))
- (while (re-search-forward "\r$" nil t)
- (replace-match "")
- )
- )))
-
-
-(defvar quoted-printable-internal-encoding-limit
- (if (and (featurep 'xemacs)(featurep 'mule))
- 0
- (require 'path-util)
- (if (exec-installed-p "mmencode")
- 1000
- (message "Don't found external encoder for Quoted-Printable!")
- nil))
- "*limit size to use internal quoted-printable encoder.
-If size of input to encode is larger than this limit,
-external encoder is called.")
-
-(defun quoted-printable-encode-region (start end)
- "Encode current region by quoted-printable.
-START and END are buffer positions.
-This function calls internal quoted-printable encoder if size of
-region is smaller than `quoted-printable-internal-encoding-limit',
-otherwise it calls external quoted-printable encoder specified by
-`quoted-printable-external-encoder'. In this case, you must install
-the program (maybe mmencode included in metamail or XEmacs package)."
- (interactive "r")
- (if (and quoted-printable-internal-encoding-limit
- (> (- end start) quoted-printable-internal-encoding-limit))
- (quoted-printable-external-encode-region start end)
- (quoted-printable-internal-encode-region start end)
- ))
-
-
-(defun quoted-printable-encode-string (string)
- "Encode STRING to quoted-printable, and return the result."
- (with-temp-buffer
- (insert string)
- (quoted-printable-encode-region (point-min)(point-max))
- (buffer-string)
- ))
-
-
-(defun quoted-printable-insert-encoded-file (filename)
- "Encode contents of file FILENAME to quoted-printable, and insert the result.
-It calls external quoted-printable encoder specified by
-`quoted-printable-external-encoder'. So you must install the program
-\(maybe mmencode included in metamail or XEmacs package)."
- (interactive (list (read-file-name "Insert encoded file: ")))
- (apply (function call-process) (car quoted-printable-external-encoder)
- filename t nil (cdr quoted-printable-external-encoder))
- )
-
-
-;;; @ Quoted-Printable decoder
-;;;
-
-(defsubst quoted-printable-hex-char-to-num (chr)
- (cond ((<= ?a chr) (+ (- chr ?a) 10))
- ((<= ?A chr) (+ (- chr ?A) 10))
- ((<= ?0 chr) (- chr ?0))
- ))
-
-(defun quoted-printable-internal-decode-region (start end)
- (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char (point-min))
- (while (search-forward "=" nil t)
- (let ((beg (match-beginning 0)))
- (cond ((looking-at "\n")
- (delete-region beg (match-end 0))
- )
- ((looking-at
- `,(concat "[" quoted-printable-hex-chars
- "][" quoted-printable-hex-chars "]"))
- (let* ((end (match-end 0))
- (hex (buffer-substring (match-beginning 0) end)))
- (delete-region beg end)
- (insert
- (logior
- (ash (quoted-printable-hex-char-to-num (aref hex 0)) 4)
- (quoted-printable-hex-char-to-num (aref hex 1))))
- ))
- (t
- ;; invalid
- ))
- )))))
-
-(defvar quoted-printable-external-decoder '("mmencode" "-q" "-u")
- "*list of quoted-printable decoder program name and its arguments.")
-
-(defun quoted-printable-external-decode-region (start end)
- (save-excursion
- (as-binary-process
- (apply (function call-process-region)
- start end (car quoted-printable-external-decoder)
- t t nil (cdr quoted-printable-external-decoder))
- )))
-
-
-(defvar quoted-printable-internal-decoding-limit nil
- "*limit size to use internal quoted-printable decoder.
-If size of input to decode is larger than this limit,
-external decoder is called.")
-
-(defun quoted-printable-decode-region (start end)
- "Decode current region by quoted-printable.
-START and END are buffer positions.
-This function calls internal quoted-printable decoder if size of
-region is smaller than `quoted-printable-internal-decoding-limit',
-otherwise it calls external quoted-printable decoder specified by
-`quoted-printable-external-decoder'. In this case, you must install
-the program (maybe mmencode included in metamail or XEmacs package)."
- (interactive "r")
- (if (and quoted-printable-internal-decoding-limit
- (> (- end start) quoted-printable-internal-decoding-limit))
- (quoted-printable-external-decode-region start end)
- (quoted-printable-internal-decode-region start end)
- ))
-
-(defun quoted-printable-decode-string (string)
- "Decode STRING which is encoded in quoted-printable, and return the result."
- (with-temp-buffer
- (insert string)
- (quoted-printable-decode-region (point-min)(point-max))
- (buffer-string)))
-
-
-(defvar quoted-printable-external-decoder-option-to-specify-file '("-o")
- "*list of options of quoted-printable decoder program to specify file.")
-
-(defun quoted-printable-write-decoded-region (start end filename)
- "Decode and write current region encoded by quoted-printable into FILENAME.
-START and END are buffer positions."
- (interactive
- (list (region-beginning) (region-end)
- (read-file-name "Write decoded region to file: ")))
- (as-binary-process
- (apply (function call-process-region)
- start end (car quoted-printable-external-decoder)
- nil nil nil
- (append (cdr quoted-printable-external-decoder)
- quoted-printable-external-decoder-option-to-specify-file
- (list filename))
- )))
-
-\f
-;;; @ Q-encoding encode/decode string
-;;;
-
-(defconst q-encoding-special-chars-alist
- '((text ?= ?? ?_)
- (comment ?= ?? ?_ ?\( ?\) ?\\)
- (phrase ?= ?? ?_ ?\( ?\) ?\\ ?\" ?# ?$ ?% ?& ?' ?, ?. ?/
- ?: ?\; ?< ?> ?@ ?\[ ?\] ?^ ?` ?{ ?| ?} ?~)
- ))
-
-(defun q-encoding-encode-string (string &optional mode)
- "Encode STRING to Q-encoding of encoded-word, and return the result.
-MODE allows `text', `comment', `phrase' or nil. Default value is
-`phrase'."
- (let ((specials (cdr (or (assq mode q-encoding-special-chars-alist)
- (assq 'phrase q-encoding-special-chars-alist)
- ))))
- (mapconcat (function
- (lambda (chr)
- (cond ((eq chr ? ) "_")
- ((or (< chr 32) (< 126 chr)
- (memq chr specials)
- )
- (quoted-printable-quote-char chr)
- )
- (t
- (char-to-string chr)
- ))
- ))
- string "")
- ))
-
-(defun q-encoding-decode-string (string)
- "Decode STRING which is encoded in Q-encoding and return the result."
- (let (q h l)
- (mapconcat (function
- (lambda (chr)
- (cond ((eq chr ?_) " ")
- ((eq chr ?=)
- (setq q t)
- "")
- (q (setq h (quoted-printable-hex-char-to-num chr))
- (setq q nil)
- "")
- (h (setq l (quoted-printable-hex-char-to-num chr))
- (prog1
- (char-to-string (logior (ash h 4) l))
- (setq h nil)
- )
- )
- (t (char-to-string chr))
- )))
- string "")))
-
-
-;;; @@ etc
-;;;
-
-(defun q-encoding-printable-char-p (chr mode)
- (and (not (memq chr '(?= ?? ?_)))
- (<= ?\ chr)(<= chr ?~)
- (cond ((eq mode 'text) t)
- ((eq mode 'comment)
- (not (memq chr '(?\( ?\) ?\\)))
- )
- (t
- (string-match "[A-Za-z0-9!*+/=_---]" (char-to-string chr))
- ))))
-
-(defun q-encoding-encoded-length (string &optional mode)
- (let ((l 0)(i 0)(len (length string)) chr)
- (while (< i len)
- (setq chr (elt string i))
- (if (q-encoding-printable-char-p chr mode)
- (setq l (+ l 1))
- (setq l (+ l 3))
- )
- (setq i (+ i 1)) )
- l))
-
-
-;;; @ end
-;;;
-
-(provide 'mel-q)
-
-;;; mel-q.el ends here
+++ /dev/null
-;;; mel-u.el: uuencode encoder/decoder for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Created: 1995/10/25
-;; Keywords: uuencode
-
-;; This file is part of MEL (MIME Encoding Library).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-(require 'mime-def)
-
-
-;;; @ variables
-;;;
-
-(defvar uuencode-external-encoder '("uuencode" "-")
- "*list of uuencode encoder program name and its arguments.")
-
-(defvar uuencode-external-decoder '("sh" "-c" "uudecode")
- "*list of uuencode decoder program name and its arguments.")
-
-
-;;; @ uuencode encoder/decoder for region
-;;;
-
-(defun uuencode-external-encode-region (start end)
- "Encode current region by unofficial uuencode format.
-This function uses external uuencode encoder which is specified by
-variable `uuencode-external-encoder'."
- (interactive "*r")
- (save-excursion
- (as-binary-process (apply (function call-process-region)
- start end (car uuencode-external-encoder)
- t t nil (cdr uuencode-external-encoder))
- )
- ;; for OS/2
- ;; regularize line break code
- (goto-char (point-min))
- (while (re-search-forward "\r$" nil t)
- (replace-match "")
- )
- ))
-
-(defun uuencode-external-decode-region (start end)
- "Decode current region by unofficial uuencode format.
-This function uses external uuencode decoder which is specified by
-variable `uuencode-external-decoder'."
- (interactive "*r")
- (save-excursion
- (let ((filename (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (if (re-search-forward "^begin [0-9]+ " nil t)
- (if (looking-at ".+$")
- (buffer-substring (match-beginning 0)
- (match-end 0))
- )))))
- (default-directory mime-temp-directory))
- (if filename
- (as-binary-process
- (apply (function call-process-region)
- start end (car uuencode-external-decoder)
- t nil nil (cdr uuencode-external-decoder))
- (as-binary-input-file (insert-file-contents filename))
- ;; The previous line causes the buffer to be made read-only, I
- ;; do not pretend to understand the control flow leading to this
- ;; but suspect it has something to do with image-mode. -slb
- ;; Use `inhibit-read-only' to avoid to force
- ;; buffer-read-only nil. - tomo.
- (let ((inhibit-read-only t))
- (delete-file filename)
- )
- ))
- )))
-
-(defalias 'uuencode-encode-region 'uuencode-external-encode-region)
-(defalias 'uuencode-decode-region 'uuencode-external-decode-region)
-
-
-;;; @ uuencode encoder/decoder for file
-;;;
-
-(defun uuencode-insert-encoded-file (filename)
- "Insert file encoded by unofficial uuencode format.
-This function uses external uuencode encoder which is specified by
-variable `uuencode-external-encoder'."
- (interactive (list (read-file-name "Insert encoded file: ")))
- (call-process (car uuencode-external-encoder) filename t nil
- (file-name-nondirectory filename))
- )
-
-(defun uuencode-write-decoded-region (start end filename)
- "Decode and write current region encoded by uuencode into FILENAME.
-START and END are buffer positions."
- (interactive
- (list (region-beginning) (region-end)
- (read-file-name "Write decoded region to file: ")))
- (save-excursion
- (let ((file (save-excursion
- (save-restriction
- (narrow-to-region start end)
- (goto-char start)
- (if (re-search-forward "^begin [0-9]+ " nil t)
- (if (looking-at ".+$")
- (buffer-substring (match-beginning 0)
- (match-end 0))
- )))))
- (default-directory mime-temp-directory))
- (if file
- (as-binary-process
- (apply (function call-process-region)
- start end (car uuencode-external-decoder)
- nil nil nil (cdr uuencode-external-decoder))
- (rename-file file filename 'overwrites)
- )))))
-
-
-;;; @ end
-;;;
-
-(provide 'mel-u)
-
-;;; mel-u.el ends here
+++ /dev/null
-;;; mel.el : a MIME encoding/decoding library
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; modified by Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;; Created: 1995/6/25
-;; Keywords: MIME, Base64, Quoted-Printable, uuencode, gzip64
-
-;; This file is part of MEL (MIME Encoding Library).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-
-
-;;; @ variable
-;;;
-
-(defvar base64-dl-module
- (and (fboundp 'dynamic-link)
- (let ((path (expand-file-name "base64.so" exec-directory)))
- (and (file-exists-p path)
- path))))
-
-
-;;; @ autoload
-;;;
-
-(cond (base64-dl-module
- (autoload 'base64-encode-string "mel-dl"
- "Encode STRING to base64, and return the result.")
- (autoload 'base64-decode-string "mel-dl"
- "Decode STRING which is encoded in base64, and return the result.")
- (autoload 'base64-encode-region "mel-dl"
- "Encode current region by base64." t)
- (autoload 'base64-decode-region "mel-dl"
- "Decode current region by base64." t)
- (autoload 'base64-insert-encoded-file "mel-dl"
- "Encode contents of file to base64, and insert the result." t)
- (autoload 'base64-write-decoded-region "mel-dl"
- "Decode and write current region encoded by base64 into FILENAME." t)
- ;; for encoded-word
- (autoload 'base64-encoded-length "mel-dl")
- )
- (t
- (autoload 'base64-encode-string "mel-b"
- "Encode STRING to base64, and return the result.")
- (autoload 'base64-decode-string "mel-b"
- "Decode STRING which is encoded in base64, and return the result.")
- (autoload 'base64-encode-region "mel-b"
- "Encode current region by base64." t)
- (autoload 'base64-decode-region "mel-b"
- "Decode current region by base64." t)
- (autoload 'base64-insert-encoded-file "mel-b"
- "Encode contents of file to base64, and insert the result." t)
- (autoload 'base64-write-decoded-region "mel-b"
- "Decode and write current region encoded by base64 into FILENAME." t)
- ;; for encoded-word
- (autoload 'base64-encoded-length "mel-b")
- ))
-
-(autoload 'quoted-printable-encode-string "mel-q"
- "Encode STRING to quoted-printable, and return the result.")
-(autoload 'quoted-printable-decode-string "mel-q"
- "Decode STRING which is encoded in quoted-printable, and return the result.")
-(autoload 'quoted-printable-encode-region "mel-q"
- "Encode current region by Quoted-Printable." t)
-(autoload 'quoted-printable-decode-region "mel-q"
- "Decode current region by Quoted-Printable." t)
-(autoload 'quoted-printable-insert-encoded-file "mel-q"
- "Encode contents of file to quoted-printable, and insert the result." t)
-(autoload 'quoted-printable-write-decoded-region "mel-q"
- "Decode and write current region encoded by quoted-printable into FILENAME."
- t)
-;; for encoded-word
-(autoload 'q-encoding-encode-string "mel-q"
- "Encode STRING to Q-encoding of encoded-word, and return the result.")
-(autoload 'q-encoding-decode-string "mel-q"
- "Decode STRING which is encoded in Q-encoding and return the result.")
-(autoload 'q-encoding-encoded-length "mel-q")
-
-(autoload 'uuencode-encode-region "mel-u"
- "Encode current region by unofficial uuencode format." t)
-(autoload 'uuencode-decode-region "mel-u"
- "Decode current region by unofficial uuencode format." t)
-(autoload 'uuencode-insert-encoded-file "mel-u"
- "Insert file encoded by unofficial uuencode format." t)
-(autoload 'uuencode-write-decoded-region "mel-u"
- "Decode and write current region encoded by uuencode into FILENAME." t)
-
-(autoload 'gzip64-encode-region "mel-g"
- "Encode current region by unofficial x-gzip64 format." t)
-(autoload 'gzip64-decode-region "mel-g"
- "Decode current region by unofficial x-gzip64 format." t)
-(autoload 'gzip64-insert-encoded-file "mel-g"
- "Insert file encoded by unofficial gzip64 format." t)
-(autoload 'gzip64-write-decoded-region "mel-g"
- "Decode and write current region encoded by gzip64 into FILENAME." t)
-
-
-;;; @ region
-;;;
-
-;;;###autoload
-(defvar mime-encoding-method-alist
- '(("base64" . base64-encode-region)
- ("quoted-printable" . quoted-printable-encode-region)
- ;; Not standard, their use is DISCOURAGED.
- ;; ("x-uue" . uuencode-encode-region)
- ;; ("x-gzip64" . gzip64-encode-region)
- ("7bit")
- ("8bit")
- ("binary")
- )
- "Alist of encoding vs. corresponding method to encode region.
-Each element looks like (STRING . FUNCTION) or (STRING . nil).
-STRING is content-transfer-encoding.
-FUNCTION is region encoder and nil means not to encode.")
-
-;;;###autoload
-(defvar mime-decoding-method-alist
- '(("base64" . base64-decode-region)
- ("quoted-printable" . quoted-printable-decode-region)
- ("x-uue" . uuencode-decode-region)
- ("x-uuencode" . uuencode-decode-region)
- ("x-gzip64" . gzip64-decode-region)
- )
- "Alist of encoding vs. corresponding method to decode region.
-Each element looks like (STRING . FUNCTION).
-STRING is content-transfer-encoding.
-FUNCTION is region decoder.")
-
-;;;###autoload
-(defun mime-encode-region (start end encoding)
- "Encode region START to END of current buffer using ENCODING.
-ENCODING must be string. If ENCODING is found in
-`mime-encoding-method-alist' as its key, this function encodes the
-region by its value."
- (interactive
- (list (region-beginning) (region-end)
- (completing-read "encoding: "
- mime-encoding-method-alist
- nil t "base64"))
- )
- (let ((f (cdr (assoc encoding mime-encoding-method-alist))))
- (if f
- (funcall f start end)
- )))
-
-;;;###autoload
-(defun mime-decode-region (start end encoding)
- "Decode region START to END of current buffer using ENCODING.
-ENCODING must be string. If ENCODING is found in
-`mime-decoding-method-alist' as its key, this function decodes the
-region by its value."
- (interactive
- (list (region-beginning) (region-end)
- (completing-read "encoding: "
- mime-decoding-method-alist
- nil t "base64"))
- )
- (let ((f (cdr (assoc encoding mime-decoding-method-alist))))
- (if f
- (funcall f start end)
- )))
-
-
-;;; @ string
-;;;
-
-;;;###autoload
-(defvar mime-string-decoding-method-alist
- '(("base64" . base64-decode-string)
- ("quoted-printable" . quoted-printable-decode-string)
- ("7bit" . identity)
- ("8bit" . identity)
- ("binary" . identity)
- )
- "Alist of encoding vs. corresponding method to decode string.
-Each element looks like (STRING . FUNCTION).
-STRING is content-transfer-encoding.
-FUNCTION is string decoder.")
-
-;;;###autoload
-(defun mime-decode-string (string encoding)
- "Decode STRING using ENCODING.
-ENCODING must be string. If ENCODING is found in
-`mime-string-decoding-method-alist' as its key, this function decodes
-the STRING by its value."
- (let ((f (cdr (assoc encoding mime-string-decoding-method-alist))))
- (if f
- (funcall f string)
- (with-temp-buffer
- (insert string)
- (mime-decode-region (point-min)(point-max) encoding)
- (buffer-string)
- ))))
-
-
-;;; @ file
-;;;
-
-;;;###autoload
-(defvar mime-file-encoding-method-alist
- '(("base64" . base64-insert-encoded-file)
- ("quoted-printable" . quoted-printable-insert-encoded-file)
- ;; Not standard, their use is DISCOURAGED.
- ;; ("x-uue" . uuencode-insert-encoded-file)
- ;; ("x-gzip64" . gzip64-insert-encoded-file)
- ("7bit" . insert-file-contents-as-binary)
- ("8bit" . insert-file-contents-as-binary)
- ("binary" . insert-file-contents-as-binary)
- )
- "Alist of encoding vs. corresponding method to insert encoded file.
-Each element looks like (STRING . FUNCTION).
-STRING is content-transfer-encoding.
-FUNCTION is function to insert encoded file.")
-
-;;;###autoload
-(defvar mime-file-decoding-method-alist
- '(("base64" . base64-write-decoded-region)
- ("quoted-printable" . quoted-printable-write-decoded-region)
- ("x-uue" . uuencode-write-decoded-region)
- ("x-gzip64" . gzip64-write-decoded-region)
- ("7bit" . write-region-as-binary)
- ("8bit" . write-region-as-binary)
- ("binary" . write-region-as-binary)
- )
- "Alist of encoding vs. corresponding method to write decoded region to file.
-Each element looks like (STRING . FUNCTION).
-STRING is content-transfer-encoding.
-FUNCTION is function to write decoded region to file.")
-
-;;;###autoload
-(defun mime-insert-encoded-file (filename encoding)
- "Insert file FILENAME encoded by ENCODING format."
- (interactive
- (list (read-file-name "Insert encoded file: ")
- (completing-read "encoding: "
- mime-encoding-method-alist
- nil t "base64"))
- )
- (let ((f (cdr (assoc encoding mime-file-encoding-method-alist))))
- (if f
- (funcall f filename)
- )))
-
-;;;###autoload
-(defun mime-write-decoded-region (start end filename encoding)
- "Decode and write current region encoded by ENCODING into FILENAME.
-START and END are buffer positions."
- (interactive
- (list (region-beginning) (region-end)
- (read-file-name "Write decoded region to file: ")
- (completing-read "encoding: "
- mime-file-decoding-method-alist
- nil t "base64")))
- (let ((f (cdr (assoc encoding mime-file-decoding-method-alist))))
- (if f
- (funcall f start end filename)
- )))
-
-
-;;; @ end
-;;;
-
-(provide 'mel)
-
-;;; mel.el ends here.
+++ /dev/null
-;;; mime-def.el --- definition module about MIME
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: definition, MIME, multimedia, mail, news
-
-;; This file is part of FLAM (Faithful Library About MIME).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(defconst mime-library-version-string
- "FLAM-DOODLE 1.9.1 - \"\e$B2+C0\e(B\" 10R5.5/14.0")
-
-
-;;; @ variables
-;;;
-
-(require 'custom)
-
-(eval-when-compile (require 'cl))
-
-(defgroup mime nil
- "Emacs MIME Interfaces"
- :group 'news
- :group 'mail)
-
-(custom-handle-keyword 'default-mime-charset :group 'mime
- 'custom-variable)
-
-(defcustom mime-temp-directory (or (getenv "MIME_TMP_DIR")
- (getenv "TM_TMP_DIR")
- (getenv "TMPDIR")
- (getenv "TMP")
- (getenv "TEMP")
- "/tmp/")
- "*Directory for temporary files."
- :group 'mime
- :type 'directory)
-
-(defcustom mime-uuencode-encoding-name-list '("x-uue" "x-uuencode")
- "*List of encoding names for uuencode format."
- :group 'mime
- :type '(repeat string))
-
-
-;;; @ required functions
-;;;
-
-(unless (fboundp 'butlast)
- (defun butlast (x &optional n)
- "Returns a copy of LIST with the last N elements removed."
- (if (and n (<= n 0)) x
- (nbutlast (copy-sequence x) n)))
-
- (defun nbutlast (x &optional n)
- "Modifies LIST to remove the last N elements."
- (let ((m (length x)))
- (or n (setq n 1))
- (and (< n m)
- (progn
- (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil))
- x))))
- )
-
-(defsubst eliminate-top-spaces (string)
- "Eliminate top sequence of space or tab in STRING."
- (if (string-match "^[ \t]+" string)
- (substring string (match-end 0))
- string))
-
-(defsubst regexp-* (regexp)
- (concat regexp "*"))
-
-(defsubst regexp-or (&rest args)
- (concat "\\(" (mapconcat (function identity) args "\\|") "\\)"))
-
-
-;;; @ about STD 11
-;;;
-
-(defconst std11-quoted-pair-regexp "\\\\.")
-(defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
-(defconst std11-qtext-regexp
- (concat "[^" (char-list-to-string std11-non-qtext-char-list) "]"))
-(defconst std11-quoted-string-regexp
- (concat "\""
- (regexp-*
- (regexp-or std11-qtext-regexp std11-quoted-pair-regexp))
- "\""))
-
-
-;;; @ about MIME
-;;;
-
-(defconst mime-tspecials "][()<>@,\;:\\\"/?=")
-(defconst mime-token-regexp (concat "[^" mime-tspecials "\000-\040]+"))
-(defconst mime-charset-regexp mime-token-regexp)
-
-(defconst mime-media-type/subtype-regexp
- (concat mime-token-regexp "/" mime-token-regexp))
-
-
-;;; @@ Quoted-Printable
-;;;
-
-(defconst quoted-printable-hex-chars "0123456789ABCDEF")
-
-(defconst quoted-printable-octet-regexp
- (concat "=[" quoted-printable-hex-chars
- "][" quoted-printable-hex-chars "]"))
-
-
-;;; @ Content-Type
-;;;
-
-(defsubst make-mime-content-type (type subtype &optional parameters)
- (list* (cons 'type type)
- (cons 'subtype subtype)
- (nreverse parameters))
- )
-
-(defsubst mime-content-type-primary-type (content-type)
- "Return primary-type of CONTENT-TYPE."
- (cdr (car content-type)))
-
-(defsubst mime-content-type-subtype (content-type)
- "Return primary-type of CONTENT-TYPE."
- (cdr (cadr content-type)))
-
-(defsubst mime-content-type-parameters (content-type)
- "Return primary-type of CONTENT-TYPE."
- (cddr content-type))
-
-(defsubst mime-content-type-parameter (content-type parameter)
- "Return PARAMETER value of CONTENT-TYPE."
- (cdr (assoc parameter (mime-content-type-parameters content-type))))
-
-
-(defsubst mime-type/subtype-string (type &optional subtype)
- "Return type/subtype string from TYPE and SUBTYPE."
- (if type
- (if subtype
- (format "%s/%s" type subtype)
- (format "%s" type))))
-
-
-;;; @ Content-Disposition
-;;;
-
-(defsubst mime-content-disposition-type (content-disposition)
- "Return disposition-type of CONTENT-DISPOSITION."
- (cdr (car content-disposition)))
-
-(defsubst mime-content-disposition-parameters (content-disposition)
- "Return disposition-parameters of CONTENT-DISPOSITION."
- (cdr content-disposition))
-
-(defsubst mime-content-disposition-parameter (content-disposition parameter)
- "Return PARAMETER value of CONTENT-DISPOSITION."
- (cdr (assoc parameter (cdr content-disposition))))
-
-(defsubst mime-content-disposition-filename (content-disposition)
- "Return filename of CONTENT-DISPOSITION."
- (mime-content-disposition-parameter content-disposition "filename"))
-
-
-;;; @ MIME entity
-;;;
-
-(defsubst make-mime-entity-internal (representation-type location
- &optional content-type
- children parent node-id
- buffer
- header-start header-end
- body-start body-end)
- (vector representation-type location
- content-type nil nil children parent node-id
- buffer header-start header-end body-start body-end
- nil nil))
-
-(defsubst mime-entity-representation-type-internal (entity)
- (aref entity 0))
-(defsubst mime-entity-set-representation-type-internal (entity type)
- (aset entity 0 type))
-(defsubst mime-entity-location-internal (entity)
- (aref entity 1))
-
-(defsubst mime-entity-content-type-internal (entity)
- (aref entity 2))
-(defsubst mime-entity-set-content-type-internal (entity type)
- (aset entity 2 type))
-(defsubst mime-entity-content-disposition-internal (entity)
- (aref entity 3))
-(defsubst mime-entity-set-content-disposition-internal (entity disposition)
- (aset entity 3 disposition))
-(defsubst mime-entity-encoding-internal (entity)
- (aref entity 4))
-(defsubst mime-entity-set-encoding-internal (entity encoding)
- (aset entity 4 encoding))
-
-(defsubst mime-entity-children-internal (entity)
- (aref entity 5))
-(defsubst mime-entity-set-children-internal (entity children)
- (aset entity 5 children))
-(defsubst mime-entity-parent-internal (entity)
- (aref entity 6))
-(defsubst mime-entity-node-id-internal (entity)
- (aref entity 7))
-
-(defsubst mime-entity-buffer-internal (entity)
- (aref entity 8))
-(defsubst mime-entity-set-buffer-internal (entity buffer)
- (aset entity 8 buffer))
-(defsubst mime-entity-header-start-internal (entity)
- (aref entity 9))
-(defsubst mime-entity-set-header-start-internal (entity point)
- (aset entity 9 point))
-(defsubst mime-entity-header-end-internal (entity)
- (aref entity 10))
-(defsubst mime-entity-set-header-end-internal (entity point)
- (aset entity 10 point))
-(defsubst mime-entity-body-start-internal (entity)
- (aref entity 11))
-(defsubst mime-entity-set-body-start-internal (entity point)
- (aset entity 11 point))
-(defsubst mime-entity-body-end-internal (entity)
- (aref entity 12))
-(defsubst mime-entity-set-body-end-internal (entity point)
- (aset entity 12 point))
-
-(defsubst mime-entity-original-header-internal (entity)
- (aref entity 13))
-(defsubst mime-entity-set-original-header-internal (entity header)
- (aset entity 13 header))
-(defsubst mime-entity-parsed-header-internal (entity)
- (aref entity 14))
-(defsubst mime-entity-set-parsed-header-internal (entity header)
- (aset entity 14 header))
-
-
-;;; @ message structure
-;;;
-
-(defvar mime-message-structure nil
- "Information about structure of message.
-Please use reference function `mime-entity-SLOT' to get value of SLOT.
-
-Following is a list of slots of the structure:
-
-buffer buffer includes this entity (buffer).
-node-id node-id (list of integers)
-header-start minimum point of header in raw-buffer
-header-end maximum point of header in raw-buffer
-body-start minimum point of body in raw-buffer
-body-end maximum point of body in raw-buffer
-content-type content-type (content-type)
-content-disposition content-disposition (content-disposition)
-encoding Content-Transfer-Encoding (string or nil)
-children entities included in this entity (list of entity)
-
-If an entity includes other entities in its body, such as multipart or
-message/rfc822, `mime-entity' structures of them are included in
-`children', so the `mime-entity' structure become a tree.")
-
-(make-variable-buffer-local 'mime-message-structure)
-
-
-;;; @ for mm-backend
-;;;
-
-(defvar mime-entity-implementation-alist nil)
-
-(defmacro mm-define-backend (type &optional parents)
- (if parents
- `(let ((rest ',(reverse parents)))
- (while rest
- (set-alist 'mime-entity-implementation-alist
- ',type
- (copy-alist
- (cdr (assq (car rest)
- mime-entity-implementation-alist))))
- (setq rest (cdr rest))
- ))))
-
-(defmacro mm-define-method (name args &rest body)
- (let* ((specializer (car args))
- (class (nth 1 specializer))
- (self (car specializer)))
- `(let ((imps (cdr (assq ',class mime-entity-implementation-alist)))
- (func (lambda ,(if self
- (cons self (cdr args))
- (cdr args))
- ,@body)))
- (if imps
- (set-alist 'mime-entity-implementation-alist
- ',class (put-alist ',name func imps))
- (set-alist 'mime-entity-implementation-alist
- ',class
- (list (cons ',name func)))
- ))))
-
-(put 'mm-define-method 'lisp-indent-function 'defun)
-
-
-;;; @ end
-;;;
-
-(provide 'mime-def)
-
-;;; mime-def.el ends here
+++ /dev/null
-<!doctype sinfo system>
-<head>
-<title>FLIM 1.9 Manual about MIME Features
-<author>MORIOKA Tomohiko <mail>morioka@jaist.ac.jp</mail>
-<date>1998/07/01
-
-<toc>
-</head>
-
-<body>
-
-<abstract>
-<p>
-This file documents MIME features of FLIM, a Internet message
-parsing/encoding library for GNU Emacs.
-</abstract>
-
-
-<h1> What is FLIM?
-<node> Introduction
-<p>
-FLIM is a library to provide basic features about message
-representation or encoding.
-
-
-<h1> How to use MIME features
-<node> How to use
-<p>
-Please eval following to use MIME features provided by FLIM:
-
-<lisp>
-(require 'mime)
-</lisp>
-
-
-<h1> Message and Entity
-<node> Entity
-<p>
-According to <dref>RFC 2045</dref>, `The term ``entity'', refers
-specifically to the MIME-defined header fields and contents of either
-a message or one of the parts in the body of a multipart entity.' In
-this document, the term <concept>entity</concept> indicates all of
-header fields and body.
-<p>
-The definition of RFC 2045 indicates that a MIME message is a tree.
-An message is a tree, each node is an entity, like following figure.
-Namely MIME extends message to tree structure.
-<p>
-FLIM uses <concept>mime-entity</concept> structure to represent
-information of entity. In this document, it is called simply
-`mime-entity'.
-<p>
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-<verb>
-
- \e$B(#(!(!(!($\e(B
- \e$B("\e(B nil \e$B("\e(B
- \e$B(&(!(((!(%\e(B
- \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
- \e$B(#(*($\e(B \e$B(#(*($\e(B \e$B(#(*($\e(B
- \e$B("#0("\e(B \e$B("#1("\e(B \e$B("#2("\e(B
- \e$B(&(((%\e(B \e$B(&(((%\e(B \e$B(&(((%\e(B
- \e$B("\e(B \e$B(#(!(!(!(!(+(!(!(!(!($\e(B \e$B("\e(B
- \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
- \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
- \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-
-</verb>
-<p>
-<noindent>\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B <concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B <code>(1 2 3)</code> \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-<p>
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B <concept>node-id</concept> \e$B$rMQ$$$^$9!#\e(B
-node-id \e$B$O$A$g$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number
-1.2.3 \e$B$KBP1~$9$k\e(B node-id \e$B$O\e(B <code>(3 2 1)</code> \e$B$G$9!#\e(B
-<p>
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B <code>mime-message-structure</code> \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B
-<code>mime-message-structure</code> \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
-
-
-<h2> Functions to create mime-entity
-<node> Entity creation
-<p>
-<defun name="mime-open-entity">
- <opts> type location
-<p>
-Open an entity and return it.
-<p>
-<var>type</var> is representation-type. <cf node="mm-backend">
-<p>
-<var>location</var> is location of entity. Specification of it is
-depended on representation-type.
-</defun>
-
-<defun name="mime-parse-buffer">
- <opts> buffer type
-<p>
-Parse <var>buffer</var> as message, and set the result to buffer local
-variable <code>mime-message-structure</code> of <var>buffer</var> as
-mime-entity.
-<p>
-If <var>buffer</var> is omitted, current buffer is used.
-<p>
-<var>type</var> is representation-type of created mime-entity. <cf
-node="mm-backend"> Default value is <var>buffer</var>.
-</defun>
-
-
-<h2> Features about message tree
-<node> Entity hierarchy
-<p>
-<defvar name="mime-message-structure">
-<p>
-Buffer local variable to store mime-entity structure of message.
-</defvar>
-
-<defun name="mime-entity-children">
- <args> entity
-<p>
-Return list of entities included in the <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-parent">
- <args> entity <opts> message
-<p>
-Return parent entity of the <var>entity</var>.
-<p>
-If <var>message</var> is specified, it is regarded as root instead of
-<code>mime-message-structure</code>.
-</defun>
-
-<defun name="mime-root-entity-p">
- <args> entity
-<p>
-Return non-<code>nil</code> if <var>entity</var> is root entity
-(message).
-</defun>
-
-<defun name="mime-entity-node-id">
- <args> entity
-<p>
-Return node-id of <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-number">
- <args> entity
-<p>
-Return entity-number of <var>entity</var>.
-</defun>
-
-<defun name="mime-find-entity-from-number">
- <args> entity-number <opts> message
-<p>
-Return entity from <var>entity-number</var> in <var>message</var>.
-<p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
-</defun>
-
-<defun name="mime-find-entity-from-node-id">
- <args> entity-node-id <opts> message
-<p>
-Return entity from <var>entity-node-id</var> in <var>message</var>.
-<p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
-</defun>
-
-
-<h2> Functions about attributes of mime-entity
-<node> Entity Attributes
-<p>
-<defun name="mime-entity-content-type">
- <args> entity
-<p>
-Return content-type of <var>entity</var>.
-<cf node="mime-content-type">
-</defun>
-
-<defun name="mime-entity-content-disposition">
- <args> entity
-<p>
-Return content-disposition of <var>entity</var>. <cf
-node="mime-content-disposition">
-</defun>
-
-<defun name="mime-entity-filename">
- <args> entity
-<p>
-Return file name of <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-encoding">
- <args> entity <opts> default-encoding
-<p>
-Return content-transfer-encoding of <var>entity</var>.
-<cf node="Content-Transfer-Encoding">
-<p>
-If the <var>entity</var> does not have Content-Transfer-Encoding
-field, this function returns <var>default-encoding</var>. If it is
-nil, <code>"7bit"</code> is used as default value.
-</defun>
-
-<defun name="mime-entity-cooked-p">
- <args> entity
-<p>
-Return non-nil if contents of <var>entity</var> has been already
-code-converted.
-</defun>
-
-
-<h2> Information of entity header
-<node> Entity-header
-<p>
-<defun name="mime-fetch-field">
- <args> field-name <opts> entity
-<p>
-Return field-body of <var>field-name</var> field in header of
-<var>entity</var>.
-<p>
-The results is network representation.
-<p>
-If <var>entity</var> is omitted, <code>mime-message-structure</code>
-is used as default value.
-<p>
-If <var>field-name</var> field is not found, this function returns
-<code>nil</code>.
-</defun>
-
-<defun name="mime-read-field">
- <args> field-name <opts> entity
-<p>
-Parse <var>field-name</var> field in header of <var>entity</var>, and
-return the result.
-<p>
-Format of result is depended on kind of field. For non-structured
-field, this function returns string. For structured field, it returns
-list corresponding with structure of the field.
-<p>
-Strings in the result will be converted to internal representation of
-Emacs.
-<p>
-If <var>entity</var> is omitted, <code>mime-message-structure</code>
-is used as default value.
-<p>
-If <var>field-name</var> field is not found, this function returns
-<code>nil</code>.
-</defun>
-
-<defun name="mime-insert-decoded-header">
- <args> entity <opts> invisible-fields visible-fields
-<p>
-Insert before point a decoded contents of header of <var>entity</var>.
-<p>
-<var>invisible-fields</var> is list of regexps to match field-name to
-hide. <var>visible-fields</var> is list of regexps to match
-field-name to hide.
-<p>
-If a field-name is matched with some elements of
-<var>invisible-fields</var> and matched with none of
-<var>visible-fields</var>, this function don't insert the field.
-</defun>
-
-
-<h2> Contents of Entity
-<node> Entity-content
-<p>
-<defun name="mime-entity-content">
- <args> entity
-<p>
-Return content of <var>entity</var> as byte sequence.
-</defun>
-
-<defun name="mime-write-entity-content">
- <args> entity filename
-<p>
-Write content of <var>entity</var> into <var>filename</var>.
-</defun>
-
-<defun name="mime-write-entity">
- <args> entity filename
-<p>
-Write representation of <var>entity</var> into <var>filename</var>.
-</defun>
-
-<defun name="mime-write-entity-body">
- <args> entity filename
-<p>
-Write body of <var>entity</var> into <var>filename</var>.
-</defun>
-
-
-<h2> Entity as buffer representation
-<node> Entity buffer
-<p>
-<defun name="mime-entity-buffer">
- <args> entity
-<p>
-Return buffer, which contains <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-point-min">
- <args> entity
-<p>
-Return the start point of <var>entity</var> in the buffer which
-contains <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-point-max">
- <args> entity
-<p>
-Return the end point of <var>entity</var> in the buffer which
-contains <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-header-start">
- <args> entity
-<p>
-Return the start point of header of <var>entity</var> in the buffer
-which contains <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-header-end">
- <args> entity
-<p>
-Return the end point of header of <var>entity</var> in the buffer
-which contains <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-body-start">
- <args> entity
-<p>
-Return the start point of body of <var>entity</var> in the buffer
-which contains <var>entity</var>.
-</defun>
-
-<defun name="mime-entity-body-end">
- <args> entity
-<p>
-Return the end point of body of <var>entity</var> in the buffer which
-contains <var>entity</var>.
-</defun>
-
-
-<h2> Entity representations and implementations
-<node> mm-backend
-<p>
-Entity \e$B$OCj>]2=$5$l$?%G!<%?I=8=$G!"<B:]$N%G!<%?I=8=$H$7$F$OMQES$K1~$8$F\e(B
-\e$B$5$^$6$^$J$b$N$,MxMQ$G$-$k$h$&$K@_7W$5$l$F$$$^$9!#\e(B
-<p>
-\e$B$3$3$G!"\e(Bentity \e$B$,$I$&$$$&<oN`$NI=8=$r9T$C$F$$$k$+$r<($9$N$,\e(B
-<concept>representation-type</concept> \e$B$G!"\e(Bentity \e$B$r@8@.$9$k;~$K$O$3$l$r\e(B
-\e$B;XDj$7$^$9!#\e(B<cf node="Entity Creation">
-<p>
-\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
-\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B
-representation-type \e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]\e(B
-\e$B$N=hM}$r9T$&4X?t$r8F$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B <concept>entity \e$B=hM}\e(B
-method</concept> \e$B$H8F$S$^$9!#$^$?!"\e(Brepresentation-type \e$BKh$K$3$N$h$&$J4X\e(B
-\e$B?t$r$^$H$a$?$b$N$r\e(B <concept>mm-backend</concept> \e$B$H8F$S$^$9!#\e(B
-<p>
-mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$H$$$&\e(B
-\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
-representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$rIU$1$?$b$N$K$J$C$F\e(B
-\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
-\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
-
-
-<h3> Message-passing for entity
-<node> Request for entity
-<p>
-<defun name="mime-entity-send">
- <args> entity message <rest> args
-<p>
-<var>entity</var> \e$B$K\e(B <var>message</var> \e$B$rAw$k!#\e(B
-<p>
-<var>args</var> \e$B$O\e(B <var>message</var> \e$B$N0z?t$G$"$k!#\e(B
-</defun>
-
-
-<h3> How to make mm-backend
-<node> mm-backend module
-<p>
-\e$B!J$9$_$^$;$s!#$=$N$&$A=q$-$^$9\e(B (^_^;\e$B!K\e(B
-<p>
-\e$B!J$H$j$"$($:!"\e(Bmm*.el \e$B$r;29M$K$7$F$/$@$5$$!K\e(B
-
-
-<h1> Information of Content-Type field
-<node> Content-Type
-<p>
-<concept>Content-Type field</concept> is a field to indicate kind of
-contents or data format, such as <dref>media-type</dref> and MIME
-charset. It is defined in <dref>RFC 2045</dref>.
-
-<memo>
-<p>
-Historically, Content-Type field was proposed in RFC 1049. In it,
-Content-Type did not distinguish type and subtype, and there are no
-mechanism to represent kind of character code like MIME charset.
-</memo>
-
-<p>
-FLIM provides parser for Content-Type field and structure
-<concept>mime-content-type</concept> to store information of
-Content-Type field.
-
-
-<h2> Format of Content-Type field
-<node> Content-Type field
-<p>
-Content-Type \e$BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'\e(B
-
-<quote>
-``Content-Type'' ``:'' <concept>type</concept> ``/''
-<concept>subtype</concept> *( ``;'' <concept>parameter</concept> )
-</quote>
-<p>
-\e$BNc$($P!"\e(B
-
-<quote>
-<verb>
-Content-Type: image/jpeg
-</verb>
-</quote>
-
-<noindent>
-\e$B$d\e(B
-
-<quote>
-<verb>
-Content-Type: text/plain; charset=iso-2022-jp
-</verb>
-</quote>
-
-<noindent>
-\e$B$J$I$N$h$&$KMQ$$$i$l$^$9!#\e(B
-<p>
-\e$B$3$3$G!"\e(B`type' \e$B$H\e(B `subtype' \e$B$O\e(B entity \e$B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7\e(B
-\e$B$F!"\e(B`media-type' \e$B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k\e(B `image/jpeg' \e$B$d\e(B
-`text/plain' \e$B$O\e(B media-type \e$B$N#1$D$G$9!#\e(B
-
-<memo>
-<p>
-Content-Type \e$BMs$N$J$$\e(B entity \e$B$O\e(B
-
-<quote>
-<verb>
-Content-Type: text/plain; charset=us-ascii
-</verb>
-</quote>
-
-<noindent>
-\e$B$H$7$F2r<a$5$l$k!#\e(B<cf node="us-ascii">
-</memo>
-
-
-<h2> mime-content-type structure
-<node> mime-content-type
-<p>
-<define type="Structure" name="mime-content-type">
-<p>
-Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B
-<p>
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B <code>mime-content-type-\e$BMWAGL>\e(B</code> \e$B$H$$$&L>\e(B
-\e$BA0$N;2>H4X?t$rMQ$$$k!#\e(B
-<p>
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-<vl>
-<dt>primary-type<dd>media-type \e$B$N<g7?\e(B (symbol).
-</dd>
-<dt>subtype<dd>media-type \e$B$NI{7?\e(B (symbol).
-</dd>
-<dt>parameters<dd>Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-</dd>
-</vl>
-</define>
-
-<defun name="make-mime-content-type">
- <args> type subtype
- <opts> parameters
-<p>content-type \e$B$N@8@.;R!#\e(B
-</defun>
-
-<defun name="mime-content-type-parameter">
-<args> content-type parameter
-<p>
-<var>content-type</var> \e$B$N\e(B <var>parameter</var> \e$B$NCM$rJV$9!#\e(B
-</defun>
-
-
-<h2> Parser
-<node> Content-Type parser
-<p>
-<defun name="mime-parse-Content-Type">
- <args> string
-<p>
-<var>string</var> \e$B$r\e(B content-type \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-Content-Type">
-<p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Type \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-<p>
-Content-Type \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-</defun>
-
-
-<h2> Utility functions
-<node> Content-Type utility
-<p>
-<defun name="mime-type/subtype-string">
- <args> type <opts> subtype
-<p>
-Return type/subtype string from <var>type</var> and
-<var>subtype</var>.
-</defun>
-
-
-<h1> Information of Content-Disposition field
-<node> Content-Disposition
-<p>
-<concept>Content-Disposition \e$BMs\e(B</concept> \e$B$O\e(B entity \e$B$NI=<($d\e(B file \e$BL>$J$I\e(B
-\e$B$NB0@-$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#\e(B
-
-<rfc number="2183" type="Standards Track"
- author="S. Dorner, K. Moore and R. Troost"
- title="Communicating Presentation Information in
- Internet Messages: The Content-Disposition Header"
- date="August 1997">
-<p>
-FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Disposition
-\e$BMs$N2r@O7k2L$r3JG<$9$k9=B$BN\e(B
-<concept>mime-content-disposition</concept> \e$B$rDs6!$7$^$9!#\e(B
-
-
-<h2> mime-content-disposition structure
-<node> mime-content-disposition
-<p>
-<define type="Structure" name="mime-content-disposition">
-<p>
-Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B
-<p>
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B <code>mime-content-disposition-\e$BMWAGL>\e(B</code> \e$B$H\e(B
-\e$B$$$&L>A0$N;2>H4X?t$rMQ$$$k!#\e(B
-<p>
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-<vl>
-<dt>disposition-type<dd>disposition-type (symbol).
-</dd>
-<dt>parameters<dd>Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-</dd>
-</vl>
-</define>
-
-<defun name="mime-content-disposition-parameter">
-<args> content-disposition parameter
-<p>
-<var>content-disposition</var> \e$B$N\e(B <var>parameter</var> \e$B$NCM$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-content-disposition-filename">
-<args> content-disposition
-<p>
-<var>content-disposition</var> \e$B$N\e(B filename \e$B$NCM$rJV$9!#\e(B
-</defun>
-
-
-<h2> Parser for Content-Disposition field
-<node> Content-Disposition parser
-<p>
-<defun name="mime-parse-Content-Disposition">
- <args> string
-<p>
-<var>string</var> \e$B$r\e(B content-disposition \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-Content-Disposition">
-<p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Disposition \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-<p>
-Content-Disposition \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-</defun>
-
-
-<h1> Encoding Method
-<node> Content-Transfer-Encoding
-<p>
-<concept>Content-Transfer-Encoding \e$BMs\e(B</concept> \e$B$O\e(B entity \e$B$NId9f2=K!$r5-\e(B
-\e$B=R$9$k$?$a$N$b$N$G$9!#\e(B
-<p>
-FLIM \e$B$G$O\e(B Content-Transfer-Encoding \e$BMs$r9=J82r@O$9$k4X?t$rDs6!$7$^$9!#$3\e(B
-\e$B$l$i$N4X?t$O\e(B Content-Transfer-Encoding \e$BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#\e(B
-<p>
-\e$B$^$?!"\e(BContent-Transfer-Encoding \e$B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs\e(B
-\e$B6!$5$l$^$9!#\e(B
-
-
-<h2> Parser
-<node> Content-Transfer-Encoding parser
-<p>
-<defun name="mime-parse-Content-Transfer-Encoding">
- <args> string
-<p>
-<var>string</var> \e$B$r\e(B content-transfer-encoding \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-Content-Transfer-Encoding">
- <opts>default-encoding
-<p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Transfer-Encoding \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$r\e(B
-\e$BJV$9!#\e(B
-<p>
-Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B
-<var>default-encoding</var> \e$B$rJV$9!#\e(B
-</defun>
-
-
-<h2> Region encoding/decoding
-<node> Region encoder/decoder
-<p>
-<defun name="mime-encode-region">
- <args> start end encoding
-<p>
-Encode region <var>start</var> to <var>end</var> of current buffer
-using <var>encoding</var>.
-</defun>
-
-<defun name="mime-decode-region">
- <args> start end encoding
-<p>
-Decode region <var>start</var> to <var>end</var> of current buffer
-using <var>encoding</var>.
-</defun>
-
-<defvar name="mime-encoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to encode region.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code> or
-<code>(STRING . nil)</code>. <var>string</var> is
-content-transfer-encoding. <code>function</code> is region encoder
-and <code>nil</code> means not to encode.
-</defvar>
-
-<defvar name="mime-decoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to decode region.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code> or
-<code>(STRING . nil)</code>. <var>string</var> is
-content-transfer-encoding. <code>function</code> is region decoder
-and <code>nil</code> means not to decode.
-</defvar>
-
-
-<h2> String encoding/decoding
-<node> String encoder/decoder
-<p>
-<defun name="mime-decode-string">
- <args> string encoding
-<p>
-<var>string</var> \e$B$r\e(B <var>encoding</var> \e$B$H$7$FI|9f$7$?7k2L$rJV$7$^$9!#\e(B
-</defun>
-
-<defvar name="mime-string-decoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to decode string.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code>.
-STRING is content-transfer-encoding.
-FUNCTION is string decoder.
-</defvar>
-
-
-<h2> File encoding/decoding
-<node> File encoder/decoder
-<p>
-<defun name="mime-insert-encoded-file">
- <args> filename encoding
-<p>
-Insert file <var>FILENAME</var> encoded by <var>ENCODING</var> format.
-</defun>
-
-<defun name="mime-write-decoded-region">
- <args> start end filename encoding
-<p>
-Decode and write current region encoded by <var>encoding</var> into
-<var>filename</var>.
-<p>
-<var>start</var> and <var>end</var> are buffer positions.
-</defun>
-
-<defvar name="mime-file-encoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to insert encoded file.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code>. STRING is
-content-transfer-encoding. FUNCTION is function to insert encoded
-file.
-</defvar>
-
-<defvar name="mime-file-decoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to write decoded region to
-file.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code>. STRING is
-content-transfer-encoding. FUNCTION is function to write decoded
-region to file.
-</defvar>
-
-
-<h1> Network representation of header
-<node> encoded-word
-<p>
-encoded-word \e$B$O\e(B header \e$B$GHs\e(B <dref>ASCII</dref> \e$BJ8;z$rI=8=$9$k$?$a$N7A\e(B
-\e$B<0$G!"\e(B<concept>RFC 2047</concept> \e$B$GDj5A$5$l$F$$$^$9!#\e(B
-<p>
-<rfc number="2047" type="Standards Track" author="K. Moore"
- title="MIME (Multipurpose Internet Mail Extensions) Part
- Three: Message Header Extensions for Non-ASCII Text"
- date="November 1996" obsolete="1521,1522,1590">
-<p>
-\e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B
-<dref>ASCII</dref> \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B
-<p>
-FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
-
-
-<h2> Header encoding/decoding
-<node> Header encoder/decoder
-<p>
-<defun name="eword-encode-header">
- <opts> code-conversion separator
-<p>
-Decode MIME encoded-words in header fields.
-<p>
-If <var>code-conversion</var> is <code>nil</code>, it decodes only
-encoded-words. If it is mime-charset, it decodes non-ASCII bit
-patterns as the mime-charset. Otherwise it decodes non-ASCII bit
-patterns as the default-mime-charset.
-<p>
-If <var>separator</var> is not nil, it is used as header separator.
-</defun>
-
-<defun name="eword-encode-header">
- <opts> code-conversion
-<p>
-Encode header fields to network representation, such as MIME
-encoded-word.
-<p>
-It refer variable <code>eword-field-encoding-method-alist</code>.
-</defun>
-
-
-<h1> Various Customization
-<node> custom
-<p>
-<define type="group" name="mime">
-<p>
-MIME \e$B4XO"5!G=$K4X$9$k\e(B group.
-<p>
-<code>mail</code> \e$B$H\e(B <code>news</code> \e$B$KB0$9$k!#\e(B
-</define>
-
-<defvar name="default-mime-charset">
-<p>
-\e$BE,@Z$J\e(B <dref>MIME charset</dref> \e$B$,8+$D$+$i$J$+$C$?>l9g$KMQ$$$i$l$k\e(B
-MIME charset.
-<p>
-\e$BK\Mh$O\e(B APEL \e$B$NJQ?t$G$"$k!#\e(B
-</defvar>
-
-<defvar name="mime-temp-directory">
-<p>
-MIME \e$B5!G=$K4X$9$k<BAu$,0l;~E*$K;HMQ$9$k\e(B file \e$B$r:n@.$9$k\e(B directory.
-<p>
-\e$B4D6-JQ?t\e(B <code>MIME_TMP_DIR</code>, <code>TM_TMP_DIR</code>,
-<code>TMPDIR</code>, <code>TMP</code> \e$B$b$7$/$O\e(B <code>TEMP</code> \e$B$,@_Dj\e(B
-\e$B$5$l$F$$$?>l9g!"$=$l$r=i4|CM$H$7$FMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B
-<code>"/tmp/"</code> \e$B$rMQ$$$k!#\e(B
-</defvar>
-
-
-<h1> Appendix
-<node> Appendix
-
-<h2> Glossary
-<node> Glossary
-
-<h3> 7bit
-<node> 7bit
-<p>
-<concept>7bit</concept> means any integer between 0 .. 127.
-<p>
-Any data represented by 7bit integers is called <concept>7bit
-data</concept>.
-<p>
-Textual string consisted of Control characters between 0 .. 31 and
-127, and space represented by 32, and graphic characters between 33
-.. 236 are called <concept>7bit (textual) string</concept>.
-<p>
-Conventional Internet <a node="MTA">MTA</a> can translate 7bit data,
-so it is no need to translate by <a
-node="Quoted-Printable">Quoted-Printable</a> or <a
-node="Base64">Base64</a> for 7bit data.
-<p>
-However if there are too long lines, it can not translate by 7bit MTA
-even if it is 7bit data. <dref>RFC 821</dref> and <dref>RFC
-2045</dref> require lines in 7bit data must be less than 998 bytes.
-So if a ``7bit data'' has a line more than 999 bytes, it is regarded
-as <dref>binary</dref>. For example, Postscript file should be
-encoded by Quoted-Printable.
-
-
-<h3> 8bit
-<node> 8bit
-<p>
-<concept>8bit</concept> means any integer between 0 .. 255.
-<p>
-Any data represented by 8bit integers is called <concept>8bit
-data</concept>.
-<p>
-Textual string consisted of Control characters between 0 .. 31, 127,
-and 128 .. 159, and space represented by 32, and graphic characters
-between 33 .. 236 and 160 .. 255 are called <concept>8bit (textual)
-string</concept>.
-<p>
-For example, <dref>iso-8859-1</dref> or <dref>euc-kr</dref> are
-coded-character-set represented by 8bit textual string.
-<p>
-Traditional Internet <a node="MTA">MTA</a> can translate only
-<dref>7bit</dref> data, so if a 8bit data will be translated such MTA,
-it must be encoded by <dref>Quoted-Printable</dref> or
-<dref>Base64</dref>.
-<p>
-However 8bit MTA are increasing today.
-<p>
-However if there are too long lines, it can not translate by 8bit MTA
-even if it is 8bit data. <dref>RFC 2045</dref> require lines in 8bit
-data must be less than 998 bytes. So if a ``8bit data'' has a line
-more than 999 bytes, it is regarded as <dref>binary</dref>, so it must
-be encoded by Base64 or Quoted-Printable.
-
-
-<h3> ASCII
-<node> ASCII
-<p>
-<concept>ASCII</concept> is a 94-character set contains primary latin
-characters (A-Z, a-z), numbers and some characters. It is a standard
-of the United States of America. It is a variant of <a node="ISO
-646">ISO 646</a>.
-
-<standard abbrev="ASCII" title-en="Coded Character Set -- 7-Bit
- American Standard Code for Information Interchange"
- number="ANSI X3.4" year="1986">
-
-
-<h3> Base64
-<node> Base64
-<p>
-<concept>Base64</concept> is a transfer encoding method of
-<dref>MIME</dref> defined in <dref>RFC 2045</dref>.
-<p>
-The encoding process represents 24-bit groups of input bits as output
-strings of 4 encoded characters. Encoded characters represent integer
-0 .. 63 or <concept>pad</concept>. Base64 data must be 4 * n bytes,
-so pad is used to adjust size.
-<p>
-These 65 characters are subset of all versions of ISO 646, including
-US-ASCII, and all versions of EBCDIC. So it is safe even if it is
-translated by non-Internet gateways.
-
-
-<h3> binary
-<node> binary
-<p>
-Any byte stream is called <concept>binary</concept>.
-<p>
-It does not require structureof lines. It differs from from <a
-node="8bit">8bit</a>.
-<p>
-In addition, if line structured data contain too long line (more than
-998 bytes), it is regarded as binary.
-
-
-<h3> Coded character set, Character code
-<node> coded character set
-<p>
-A set of unambiguous rules that establishes a character set and the
-one-to-one relationship between the characters of the set and their
-bit combinations.
-
-
-<h3> media-type
-<node> media-type
-<p>
-<concept>media-type</concept> specifies the nature of the data in the
-body of <dref>MIME</dref> <dref>entity</dref>. It consists of
-<concept>type</concept> and <concept>subtype</concept>. It is defined
-in <dref>RFC 2046</dref>.
-<p>
-Currently there are following standard primary-types:
-
-<ul>
-<li><concept>text</concept>
-</li>
-<li><concept>image</concept>
-</li>
-<li><concept>audio</concept>
-</li>
-<li><concept>video</concept>
-</li>
-<li><concept>application</concept>
-</li>
-<li><a node="multipart"><concept>multipart</concept></a>
-</li>
-<li><concept>message</concept>
-</ul>
-
-<p>
-And there are various subtypes, for example, application/octet-stream,
-audio/basic, image/jpeg, <dref>multipart/mixed</dref>,
-<dref>text/plain</dref>, video/mpeg...
-
-<p>
-You can refer registered media types at <a
-href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA
-TYPES</a>.
-<p>
-In addition, you can use private type or subtype using
-<concept>x-token</concept>, which as the prefix `x-'. However you can
-not use them in public.
-<p>
-<cf node="Content-Type field">
-
-
-<h3> message
-<node> message
-<p>
-In this document, it means mail defined in <dref>RFC 822</dref> and
-news message defined in <dref>RFC 1036</dref>.
-
-
-<h3> MIME
-<node> MIME
-<p>
-MIME stands for <concept>Multipurpose Internet Mail
-Extensions</concept>, it is an extension for <dref>RFC 822</dref>.
-<p>
-According to RFC 2045:
-<p>
-STD 11, RFC 822, defines a message representation protocol specifying
-considerable detail about US-ASCII message headers, and leaves the
-message content, or message body, as flat US-ASCII text. This set of
-documents, collectively called the Multipurpose Internet Mail
-Extensions, or MIME, redefines the format of messages to allow for
-
-<ol>
-<li>textual message bodies in character sets other than US-ASCII,
-</li>
-<li>an extensible set of different formats for non-textual message
-bodies,
-</li>
-<li>multi-part message bodies, and
-</li>
-<li>textual header information in character sets other than US-ASCII.
-</ol>
-
-<p>
-It is defined in <dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a
-node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref> and <dref>RFC
-2049</dref>.
-
-
-<h3> MIME charset
-<node> MIME charset
-<p>
-<a node="coded character set">Coded character set</a> used in
-<dref>Content-Type field</dref> or charset parameter of <a
-node="encoded-word">encoded-word</a>.
-<p>
-It is defined in <dref>RFC 2045</dref>.
-<p>
-<dref>iso-2022-jp</dref> or <dref>euc-kr</dref> are kinds of it. (In
-this document, MIME charsets are written by small letters to
-distinguish <dref>graphic character set</dref>. For example, ISO
-8859-1 is a graphic character set, and iso-8859-1 is a MIME charset)
-
-
-<h3> MTA
-<node> MTA
-<p>
-<concept>Message Transfer Agent</concept>. It means mail transfer
-programs (ex. sendmail) and news servers.
-<p>
-<cf node="MUA">
-
-
-<h3> MUA
-<node> MUA
-<p>
-<concept>Message User Agent</concept>. It means mail readers and news
-readers.
-<p>
-<cf node="MTA">
-
-
-<h3> Quoted-Printable
-<node> Quoted-Printable
-<p>
-<concept>Quoted-Printable</concept> is a transfer encoding method of
-<dref>MIME</dref> defined in <dref>RFC 2045</dref>.
-<p>
-If the data being encoded are mostly US-ASCII text, the encoded form
-of the data remains largely recognizable by humans.
-<p>
-<cf node="Base64">
-
-
-<h3> RFC 822
-<node> RFC 822
-<p>
-A RFC defines format of Internet mail message, mainly <concept>message
-header</concept>.
-
-<memo>
-<p>
-news message is based on RFC 822, so <concept>Internet
-message</concept> may be more suitable than <concept>Internet
-mail</concept> .
-</memo>
-
-<rfc number="822" type="STD 11" author="D. Crocker" title="Standard
- for the Format of ARPA Internet Text Messages"
- date="August 1982">
-
-
-<h3> RFC 1036
-<node> RFC 1036
-<p>
-A RFC defines format of USENET message. It is a subset of <dref>RFC
-822</dref>. It is not Internet standard, but a lot of netnews
-excepting Usenet uses it.
-
-<rfc name="USENET" number="1036" author="M. Horton and R. Adams"
- title="Standard for Interchange of USENET Messages"
- date="December 1987" obsolete="850">
-
-
-<h3> RFC 2045
-<node> RFC 2045
-<p>
-<rfc number="2045" type="Standards Track" author="N. Freed and
- N. Borenstein" title="Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message
- Bodies" date="November 1996" obsolete="1521, 1522,
- 1590">
-
-
-<h3> RFC 2046
-<node> RFC 2046
-<p>
-<rfc number="2046" type="Standards Track" author="N. Freed and
- N. Borenstein" title="Multipurpose Internet Mail
- Extensions (MIME) Part Two: Media Types"
- date="November 1996" obsolete="1521, 1522, 1590">
-
-
-<h3> RFC 2048
-<node> RFC 2048
-<p>
-<rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin
- and J. Postel" title="Multipurpose Internet Mail
- Extensions (MIME) Part Four: Registration Procedures"
- date="November 1996" obsolete="1521, 1522, 1590">
-
-
-<h3> RFC 2049
-<node> RFC 2049
-<p>
-<rfc number="2049" type="Standards Track" author="N. Freed and
- N. Borenstein" title="Multipurpose Internet Mail
- Extensions (MIME) Part Five: Conformance Criteria and
- Examples" date="November 1996" obsolete="1521, 1522,
- 1590">
-
-
-<h3> plain text
-<node> plain text
-<p>
-A textual data represented by only <dref>coded character set</dref>.
-It does not have information about font or typesetting.
-<cf node="text/plain">
-
-
-<h3> us-ascii
-<node> us-ascii
-<p>
-A <a node="MIME charset">MIME charset</a> for primary Latin script
-mainly written by English or other languages.
-<p>
-It is a 7bit <dref>coded character set</dref> based on <dref>ISO
-2022</dref>, it contains only
-<dref>ASCII</dref> and <dref>code extension</dref> is not allowed.
-<p>
-It is standard coded character set of Internet mail. If MIME charset
-is not specified, <concept>us-ascii</concept> is used as default.
-<p>
-In addition, <concept>ASCII</concept> of <dref>RFC 822</dref> should
-be interpreted as us-ascii.
-
-
-<h2> How to report bugs
-<node> Bug report
-<p>
-If you write bug-reports and/or suggestions for improvement, please
-send them to the tm Mailing List:
-
-<ul>
-<li> Japanese <mail>bug-tm-ja@chamonix.jaist.ac.jp</mail>
-<li> English <mail>bug-tm-en@chamonix.jaist.ac.jp</mail>
-</ul>
-
-<p>
-Notice that, we do not welcome bug reports about too old version.
-Bugs in old version might be fixed. So please try latest version at
-first.
-<p>
-You should write <concept>good bug report</concept>. If you write
-only ``FLIM does not work'', we can not find such situations. At
-least, you should write name, type, variants and version of OS, emacs,
-APEL, FLIM, SEMI and MUA, and setting. In addition, if error occurs,
-to send backtrace is very important. <cf file="emacs" node="Bugs">
-<p>
-Bug may not appear only your environment, but also in a lot of
-environment (otherwise it might not bug). Therefor if you send mail
-to author directly, we must write a lot of mails. So please send mail
-to address for tm bugs instead of author.
-
-<p>
-Via the tm ML, you can report FLIM bugs, obtain the latest release of
-FLIM, and discuss future enhancements to FLIM. To join the tm ML,
-send empty e-mail to:
-
-<ul>
-<li> Japanese <mail>tm-ja-help@chamonix.jaist.ac.jp</mail>
-<li> English <mail>tm-en-help@chamonix.jaist.ac.jp</mail>
-</ul>
-
-
-<h2> CVS based development
-<node> CVS
-<p>
-FLIM \e$B$N\e(B file \e$B$O\e(B CVS \e$B$r;H$C$F4IM}$5$l$F$$$^$9!#$3$N$?$a!"0J2<$NJ}K!$G:G\e(B
-\e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
-
-<verb>
-(0) cvs login
-
- % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
- login
-
- CVS password: [CR] # NULL string
-
-(1) checkout
-
- % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
- checkout [-r TAG] flim
-</verb>
-
-<p>
-CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
-
-<ul>
-<li> <mail>cvs@chamonix.jaist.ac.jp</mail>
-</ul>
-
-<noindent>
-\e$B$^$G!"\e(Baccount \e$BL>$H\e(B UNIX \e$B$N\e(B passwd \e$B$HF1$87A<0$N\e(B crypt \e$B2=$5$l$?\e(B password
-\e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
-
-
-<h2> History of FLIM
-<node> History
-<p>
-FLIM \e$B$N\e(B code \e$B$N:G8E$NItJ,$O\e(B \e$B1]JB\e(B \e$B;LCR\e(B \e$B;a$,=q$$$?\e(B <file>mime.el</file>
-\e$B$K5/8;$7$^$9!#$3$N>.$5$J\e(B program \e$B$O\e(B Nemacs \e$B$GF0:n$9$k\e(B iso-2022-jp \e$B$N\e(B
-B-encoding \e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B
-<p>
-\e$B$=$N8e!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>mime.el</file> \e$B$r85$K\e(B
-<file>tiny-mime.el</file> \e$B$H$$$&%W%m%0%i%`$r=q$-$^$9!#$3$l$O!"\e(BNemacs
-\e$B$H\e(B Mule \e$B$GF0:n$9$k\e(B encoded-word \e$B$NId9f2=!&I|9f2=%W%m%0%i%`$G$7$?!#\e(B
-<file>tiny-mime.el</file> \e$B$O\e(B B-encoding \e$B$@$1$G$J$/\e(B Q-encoding \e$B$b\e(B
-support \e$B$7!"$^$?!"\e(BMULE \e$B$G07$&$3$H$,$G$-$k$5$^$6$^$J\e(B <dref>MIME
-charset</dref> \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(BNemacs \e$B$H\e(B Mule \e$B$N\e(B
-\e$BAPJ}$r\e(B support \e$B$9$k$?$a$KMQ$$$i$l$?%F%/%K%C%/$O8e$K\e(B emu package \e$B$K$^$H\e(B
-\e$B$a$i$l$^$9!#\e(B
-<p>
-\e$B$3$N:"!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>tiny-mime.el</file> \e$B$r$5$^$6$^$J\e(B MUA \e$B$G;H$&\e(B
-\e$B$?$a$N@_Dj=8$bG[I[$7$F$$$^$7$?$,!"$=$l$i$O8e$K\e(B
-<file>tiny-mime.el</file> \e$B$H$H$b$K#1$D$N\e(B package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$\e(B
-\e$B$&L>A0$GG[I[$5$l$^$9!#\e(B
-<p>
-\e$B<i2,\e(B \e$BCNI'\e(B \e$B$O$d$,$F!"\e(BMIME message \e$B$r1\Mw$9$k$?$a$N%W%m%0%i%`$G$"$k\e(B
-<file>tm-body.el</file> \e$B$r=q$-$^$9!#$3$l$O!"$9$0$K\e(B
-<file>tm-view.el</file> \e$B$H$$$&L>A0$KJQ$o$j$^$7$?$,!"$d$,$F!"$3$l$,\e(B
-<file>tiny-mime.el</file> \e$B$KBe$o$C$F!"\e(Btm \e$B$NCf3K$H$J$j$^$9!#\e(B
-<p>
-<file>tm-view.el</file> \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,\e(B
-\e$B$"$j$^$9!#$3$NL\E*$N$?$a$K!"\e(BMEL \e$B$,@0Hw$5$l$O$8$a$^$7$?!#\e(BBase64 \e$B$K4X$7\e(B
-\e$B$F$O\e(B <file>tiny-mime.el</file> \e$B$N\e(B code \e$B$,0\$5$l!"$^$?!"?7$?$K\e(B
-Quoted-Printable \e$B$N\e(B code \e$B$,DI2C$5$l$^$7$?!#$3$l$i$,\e(B
-<file>mel-b.el</file> \e$B$H\e(B <file>mel-q.el</file> \e$B$K$J$j$^$7$?!#\e(B
-<p>
-\e$B$^$?!"8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B uuencode \e$BMQ$N\e(B <file>mel-u.el</file> \e$B$,\e(B
-\e$BDI2C$5$l!"$=$N8e$K!">.NS\e(B \e$B=$J?\e(B \e$B;a$K$h$C$F\e(B x-gzip64 \e$BMQ$N\e(B
-<file>mel-g.el</file> \e$B$,DI2C$5$l$^$7$?!#\e(B
-<p>
-tm \e$B$G$O8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B <file>tiny-mime.el</file> \e$B$N:F<BAu$,9T\e(B
-\e$B$o$l!"$3$N2aDx$G!"\e(BSTD 11 \e$B$N\e(B parser \e$B$,=q$+$l$^$7$?!#$3$l$O!"8=:_$N\e(B
-<file>std11.el</file> \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B
-<file>tiny-mime.el</file> \e$B$OI|9f2=$r9T$&\e(B <file>tm-ew-d.el</file> \e$B$HId\e(B
-\e$B9f2=$r9T$&\e(B <file>tm-ew-e.el</file> \e$B$KJ,$1$i$l$^$7$?!#$3$NN><T$,8=:_$N\e(B
-<file>eword-decode.el</file> \e$B$H\e(B <file>eword-encode.el</file> \e$B$N@hAD$K\e(B
-\e$BEv$?$j$^$9!#\e(B
-<p>
-\e$B8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$i$K$h$C$F\e(B tm \e$B$NA4LL=q$-49$(:n6H$,9T$o$l!"$3$N2aDx$G!"\e(B
-tm \e$B$O\e(B APEL, MEL, SEMI, EMH, RMAIL-MIME, Gnus-MIME \e$B$J$I$KJ,$1$i$l$^$7$?!#\e(B
-\e$B$3$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B
-<p>
-\e$B8e$K!"\e(BAPEL \e$B$+$i\e(B <file>std11.el</file> \e$B$,0\$5$l!"$^$?!"\e(B
-<file>mailcap.el</file>, <file>eword-decode.el</file> \e$B$*$h$S\e(B
-<file>eword-encode.el</file> \e$B$,\e(B SEMI \e$B$+$i0\$5$l!"\e(Bpackage \e$B$NL>A0$,\e(B FLIM
-\e$B$H$J$j$^$9!#\e(B
-<p>
-\e$B$3$ND>A0$+$iEDCf\e(B \e$BE/\e(B \e$B;a$,$h$j\e(B RFC \e$B$KCi<B$J<BAu$r=q$-;O$a!"$3$l$O!"8=:_!"\e(B
-FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
-
-
-<h1> Concept Index
-<node> Concept Index
-
-<cindex>
-
-
-<h1> Function Index
-<node> Function Index
-
-<findex>
-
-
-<h1> Variable Index
-<node> Variable Index
-
-<vindex>
-
-</body>
+++ /dev/null
-\input texinfo.tex
-@setfilename mime-en.info
-@settitle{FLIM 1.9 Manual about MIME Features}
-@titlepage
-@title FLIM 1.9 Manual about MIME Features
-@author MORIOKA Tomohiko <morioka@@jaist.ac.jp>
-@subtitle 1998/07/01
-@end titlepage
-@node Top, Introduction, (dir), (dir)
-@top FLIM 1.9 Manual about MIME Features
-
-@ifinfo
-
-This file documents MIME features of FLIM, a Internet message
-parsing/encoding library for GNU Emacs.
-@end ifinfo
-
-@menu
-* Introduction:: What is FLIM?
-* How to use:: How to use MIME features
-* Entity:: Message and Entity
-* Content-Type:: Information of Content-Type field
-* Content-Disposition:: Information of Content-Disposition field
-* Content-Transfer-Encoding:: Encoding Method
-* encoded-word:: Network representation of header
-* custom:: Various Customization
-* Appendix::
-* Concept Index::
-* Function Index::
-* Variable Index::
-@end menu
-
-@node Introduction, How to use, Top, Top
-@chapter What is FLIM?
-
-FLIM is a library to provide basic features about message
-representation or encoding.
-
-
-@node How to use, Entity, Introduction, Top
-@chapter How to use MIME features
-
-Please eval following to use MIME features provided by FLIM:
-
-@lisp
-(require 'mime)
-@end lisp
-
-
-
-@node Entity, Content-Type, How to use, Top
-@chapter Message and Entity
-@cindex node-id
-@cindex entity-number
-@cindex mime-entity
-@cindex entity
-
-According to RFC 2045 (@ref{RFC 2045}), `The term ``entity'', refers
-specifically to the MIME-defined header fields and contents of either a
-message or one of the parts in the body of a multipart entity.' In this
-document, the term @strong{entity} indicates all of header fields and
-body.@refill
-
-The definition of RFC 2045 indicates that a MIME message is a tree. An
-message is a tree, each node is an entity, like following figure.
-Namely MIME extends message to tree structure.@refill
-
-FLIM uses @strong{mime-entity} structure to represent information of
-entity. In this document, it is called simply `mime-entity'.@refill
-
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-@example
-
- \e$B(#(!(!(!($\e(B
- \e$B("\e(B nil \e$B("\e(B
- \e$B(&(!(((!(%\e(B
- \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
- \e$B(#(*($\e(B \e$B(#(*($\e(B \e$B(#(*($\e(B
- \e$B("#0("\e(B \e$B("#1("\e(B \e$B("#2("\e(B
- \e$B(&(((%\e(B \e$B(&(((%\e(B \e$B(&(((%\e(B
- \e$B("\e(B \e$B(#(!(!(!(!(+(!(!(!(!($\e(B \e$B("\e(B
- \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
- \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
- \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-@end example
-
-@noindent
-\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B @strong{entity-number} \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B @code{(1 2 3)} \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B @strong{node-id} \e$B$rMQ$$$^$9!#\e(Bnode-id \e$B$O$A$g\e(B
-\e$B$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number 1.2.3 \e$B$KBP1~$9$k\e(B
-node-id \e$B$O\e(B @code{(3 2 1)} \e$B$G$9!#\e(B@refill
-
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B @code{mime-message-structure} \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B
-@code{mime-message-structure} \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
-
-
-@menu
-* Entity creation:: Functions to create mime-entity
-* Entity hierarchy:: Features about message tree
-* Entity Attributes:: Functions about attributes of mime-entity
-* Entity-header:: Information of entity header
-* Entity-content:: Contents of Entity
-* Entity buffer:: Entity as buffer representation
-* mm-backend:: Entity representations and implementations
-@end menu
-
-@node Entity creation, Entity hierarchy, Entity, Entity
-@section Functions to create mime-entity
-
-@defun mime-open-entity &optional type location
-
-Open an entity and return it.@refill
-
-@var{type} is representation-type. (cf. @ref{mm-backend}) @refill
-
-@var{location} is location of entity. Specification of it is depended
-on representation-type.
-@end defun
-
-
-@defun mime-parse-buffer &optional buffer type
-
-Parse @var{buffer} as message, and set the result to buffer local
-variable @code{mime-message-structure} of @var{buffer} as
-mime-entity.@refill
-
-If @var{buffer} is omitted, current buffer is used.@refill
-
-@var{type} is representation-type of created
-mime-entity. (cf. @ref{mm-backend}) Default value is @var{buffer}.
-@end defun
-
-
-
-@node Entity hierarchy, Entity Attributes, Entity creation, Entity
-@section Features about message tree
-
-@defvar mime-message-structure
-
-Buffer local variable to store mime-entity structure of message.
-@end defvar
-
-
-@defun mime-entity-children entity
-
-Return list of entities included in the @var{entity}.
-@end defun
-
-
-@defun mime-entity-parent entity &optional message
-
-Return parent entity of the @var{entity}.@refill
-
-If @var{message} is specified, it is regarded as root instead of
-@code{mime-message-structure}.
-@end defun
-
-
-@defun mime-root-entity-p entity
-
-Return non-@code{nil} if @var{entity} is root entity (message).
-@end defun
-
-
-@defun mime-entity-node-id entity
-
-Return node-id of @var{entity}.
-@end defun
-
-
-@defun mime-entity-number entity
-
-Return entity-number of @var{entity}.
-@end defun
-
-
-@defun mime-find-entity-from-number entity-number &optional message
-
-Return entity from @var{entity-number} in @var{message}.@refill
-
-If @var{message} is not specified, @code{mime-message-structure} is
-used.
-@end defun
-
-
-@defun mime-find-entity-from-node-id entity-node-id &optional message
-
-Return entity from @var{entity-node-id} in @var{message}.@refill
-
-If @var{message} is not specified, @code{mime-message-structure} is
-used.
-@end defun
-
-
-
-@node Entity Attributes, Entity-header, Entity hierarchy, Entity
-@section Functions about attributes of mime-entity
-
-@defun mime-entity-content-type entity
-
-Return content-type of @var{entity}. (cf. @ref{mime-content-type})
-@end defun
-
-
-@defun mime-entity-content-disposition entity
-
-Return content-disposition of
-@var{entity}. (cf. @ref{mime-content-disposition})
-@end defun
-
-
-@defun mime-entity-filename entity
-
-Return file name of @var{entity}.
-@end defun
-
-
-@defun mime-entity-encoding entity &optional default-encoding
-
-Return content-transfer-encoding of @var{entity}.
-(cf. @ref{Content-Transfer-Encoding}) @refill
-
-If the @var{entity} does not have Content-Transfer-Encoding field, this
-function returns @var{default-encoding}. If it is nil, @code{"7bit"} is
-used as default value.
-@end defun
-
-
-@defun mime-entity-cooked-p entity
-
-Return non-nil if contents of @var{entity} has been already
-code-converted.
-@end defun
-
-
-
-@node Entity-header, Entity-content, Entity Attributes, Entity
-@section Information of entity header
-
-@defun mime-fetch-field field-name &optional entity
-
-Return field-body of @var{field-name} field in header of
-@var{entity}.@refill
-
-The results is network representation.@refill
-
-If @var{entity} is omitted, @code{mime-message-structure} is used as
-default value.@refill
-
-If @var{field-name} field is not found, this function returns
-@code{nil}.
-@end defun
-
-
-@defun mime-read-field field-name &optional entity
-
-Parse @var{field-name} field in header of @var{entity}, and return the
-result.@refill
-
-Format of result is depended on kind of field. For non-structured
-field, this function returns string. For structured field, it returns
-list corresponding with structure of the field.@refill
-
-Strings in the result will be converted to internal representation of
-Emacs.@refill
-
-If @var{entity} is omitted, @code{mime-message-structure} is used as
-default value.@refill
-
-If @var{field-name} field is not found, this function returns
-@code{nil}.
-@end defun
-
-
-@defun mime-insert-decoded-header entity &optional invisible-fields visible-fields
-
-Insert before point a decoded contents of header of @var{entity}.@refill
-
-@var{invisible-fields} is list of regexps to match field-name to hide.
-@var{visible-fields} is list of regexps to match field-name to
-hide.@refill
-
-If a field-name is matched with some elements of @var{invisible-fields}
-and matched with none of @var{visible-fields}, this function don't
-insert the field.
-@end defun
-
-
-
-@node Entity-content, Entity buffer, Entity-header, Entity
-@section Contents of Entity
-
-@defun mime-entity-content entity
-
-Return content of @var{entity} as byte sequence.
-@end defun
-
-
-@defun mime-write-entity-content entity filename
-
-Write content of @var{entity} into @var{filename}.
-@end defun
-
-
-@defun mime-write-entity entity filename
-
-Write representation of @var{entity} into @var{filename}.
-@end defun
-
-
-@defun mime-write-entity-body entity filename
-
-Write body of @var{entity} into @var{filename}.
-@end defun
-
-
-
-@node Entity buffer, mm-backend, Entity-content, Entity
-@section Entity as buffer representation
-
-@defun mime-entity-buffer entity
-
-Return buffer, which contains @var{entity}.
-@end defun
-
-
-@defun mime-entity-point-min entity
-
-Return the start point of @var{entity} in the buffer which contains
-@var{entity}.
-@end defun
-
-
-@defun mime-entity-point-max entity
-
-Return the end point of @var{entity} in the buffer which contains
-@var{entity}.
-@end defun
-
-
-@defun mime-entity-header-start entity
-
-Return the start point of header of @var{entity} in the buffer which
-contains @var{entity}.
-@end defun
-
-
-@defun mime-entity-header-end entity
-
-Return the end point of header of @var{entity} in the buffer which
-contains @var{entity}.
-@end defun
-
-
-@defun mime-entity-body-start entity
-
-Return the start point of body of @var{entity} in the buffer which
-contains @var{entity}.
-@end defun
-
-
-@defun mime-entity-body-end entity
-
-Return the end point of body of @var{entity} in the buffer which
-contains @var{entity}.
-@end defun
-
-
-
-@node mm-backend, , Entity buffer, Entity
-@section Entity representations and implementations
-@cindex mm-backend
-@cindex entity \e$B=hM}\e(B method
-@cindex representation-type
-
-Entity \e$B$OCj>]2=$5$l$?%G!<%?I=8=$G!"<B:]$N%G!<%?I=8=$H$7$F$OMQES$K1~$8$F\e(B
-\e$B$5$^$6$^$J$b$N$,MxMQ$G$-$k$h$&$K@_7W$5$l$F$$$^$9!#\e(B@refill
-
-\e$B$3$3$G!"\e(Bentity \e$B$,$I$&$$$&<oN`$NI=8=$r9T$C$F$$$k$+$r<($9$N$,\e(B
-@strong{representation-type} \e$B$G!"\e(Bentity \e$B$r@8@.$9$k;~$K$O$3$l$r;XDj$7$^$9!#\e(B
-(cf. @ref{Entity Creation}) @refill
-
-\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
-\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B representation-type
-\e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]$N=hM}$r9T$&4X?t$r8F\e(B
-\e$B$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B @strong{entity \e$B=hM}\e(Bmethod} \e$B$H8F$S$^$9!#$^$?!"\e(B
-representation-type \e$BKh$K$3$N$h$&$J4X?t$r$^$H$a$?$b$N$r\e(B
-@strong{mm-backend} \e$B$H8F$S$^$9!#\e(B@refill
-
-mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$H$$$&\e(B
-\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
-representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$rIU$1$?$b$N$K$J$C$F\e(B
-\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
-\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
-
-
-@menu
-* Request for entity:: Message-passing for entity
-* mm-backend module:: How to make mm-backend
-@end menu
-
-@node Request for entity, mm-backend module, mm-backend, mm-backend
-@subsection Message-passing for entity
-
-@defun mime-entity-send entity message &rest args
-
-@var{entity} \e$B$K\e(B @var{message} \e$B$rAw$k!#\e(B@refill
-
-@var{args} \e$B$O\e(B @var{message} \e$B$N0z?t$G$"$k!#\e(B
-@end defun
-
-
-
-@node mm-backend module, , Request for entity, mm-backend
-@subsection How to make mm-backend
-
-\e$B!J$9$_$^$;$s!#$=$N$&$A=q$-$^$9\e(B (^_^;\e$B!K\e(B@refill
-
-\e$B!J$H$j$"$($:!"\e(Bmm*.el \e$B$r;29M$K$7$F$/$@$5$$!K\e(B
-
-
-@node Content-Type, Content-Disposition, Entity, Top
-@chapter Information of Content-Type field
-@cindex mime-content-type
-@cindex Content-Type field
-
-@strong{Content-Type field} is a field to indicate kind of contents or
-data format, such as media-type (@ref{media-type}) and MIME charset. It
-is defined in RFC 2045 (@ref{RFC 2045}).
-
-@noindent
-@strong{[Memo]}
-@quotation
-
-Historically, Content-Type field was proposed in RFC 1049. In it,
-Content-Type did not distinguish type and subtype, and there are no
-mechanism to represent kind of character code like MIME charset.
-@end quotation
-
-
-FLIM provides parser for Content-Type field and structure
-@strong{mime-content-type} to store information of
-Content-Type field.
-
-
-@menu
-* Content-Type field:: Format of Content-Type field
-* mime-content-type:: mime-content-type structure
-* Content-Type parser:: Parser
-* Content-Type utility:: Utility functions
-@end menu
-
-@node Content-Type field, mime-content-type, Content-Type, Content-Type
-@section Format of Content-Type field
-@cindex parameter
-@cindex subtype
-@cindex type
-
-Content-Type \e$BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'\e(B
-
-@quotation
-``Content-Type'' ``:'' @strong{type} ``/''
-@strong{subtype} *( ``;'' @strong{parameter} )
-@end quotation
-
-\e$BNc$($P!"\e(B
-
-@quotation
-@example
-Content-Type: image/jpeg
-@end example
-@end quotation
-
-@noindent
-\e$B$d\e(B
-
-@quotation
-@example
-Content-Type: text/plain; charset=iso-2022-jp
-@end example
-@end quotation
-
-@noindent
-\e$B$J$I$N$h$&$KMQ$$$i$l$^$9!#\e(B
-
-\e$B$3$3$G!"\e(B`type' \e$B$H\e(B `subtype' \e$B$O\e(B entity \e$B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7\e(B
-\e$B$F!"\e(B`media-type' \e$B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k\e(B `image/jpeg' \e$B$d\e(B
-`text/plain' \e$B$O\e(B media-type \e$B$N#1$D$G$9!#\e(B
-
-@noindent
-@strong{[Memo]}
-@quotation
-
-Content-Type \e$BMs$N$J$$\e(B entity \e$B$O\e(B
-
-@quotation
-@example
-Content-Type: text/plain; charset=us-ascii
-@end example
-@end quotation
-
-@noindent
-\e$B$H$7$F2r<a$5$l$k!#\e(B(cf. @ref{us-ascii})
-@end quotation
-
-
-
-@node mime-content-type, Content-Type parser, Content-Type field, Content-Type
-@section mime-content-type structure
-
-@deffn{Structure} mime-content-type
-
-Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B@refill
-
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B @code{mime-content-type-\e$BMWAGL>\e(B} \e$B$H$$$&L>A0$N;2\e(B
-\e$B>H4X?t$rMQ$$$k!#\e(B@refill
-
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-@table @var
-@item primary-type
-media-type \e$B$N<g7?\e(B (symbol).
-
-@item subtype
-media-type \e$B$NI{7?\e(B (symbol).
-
-@item parameters
-Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-
-@end table
-@end deffn
-
-
-@defun make-mime-content-type type subtype
- &optional parameters
-
-content-type \e$B$N@8@.;R!#\e(B
-@end defun
-
-
-@defun mime-content-type-parameter content-type parameter
-
-@var{content-type} \e$B$N\e(B @var{parameter} \e$B$NCM$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Type parser, Content-Type utility, mime-content-type, Content-Type
-@section Parser
-
-@defun mime-parse-Content-Type string
-
-@var{string} \e$B$r\e(B content-type \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-Content-Type
-
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Type \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B@refill
-
-Content-Type \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Type utility, , Content-Type parser, Content-Type
-@section Utility functions
-
-@defun mime-type/subtype-string type &optional subtype
-
-Return type/subtype string from @var{type} and @var{subtype}.
-@end defun
-
-
-
-@node Content-Disposition, Content-Transfer-Encoding, Content-Type, Top
-@chapter Information of Content-Disposition field
-@cindex mime-content-disposition
-@cindex RFC 2183
-@cindex Standards Track
-@cindex Content-Disposition \e$BMs\e(B
-
-@strong{Content-Disposition \e$BMs\e(B} \e$B$O\e(B entity \e$B$NI=<($d\e(B file \e$BL>$J$I\e(B
-\e$B$NB0@-$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#\e(B
-
-
-@noindent
-[RFC 2183]
-@quotation
-S. Dorner, K. Moore and R. Troost, ``Communicating Presentation
-Information in Internet Messages: The Content-Disposition Header'',
-August 1997, Standards Track.
-@end quotation
-
-FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Disposition
-\e$BMs$N2r@O7k2L$r3JG<$9$k9=B$BN\e(B
-@strong{mime-content-disposition} \e$B$rDs6!$7$^$9!#\e(B
-
-
-@menu
-* mime-content-disposition:: mime-content-disposition structure
-* Content-Disposition parser:: Parser for Content-Disposition field
-@end menu
-
-@node mime-content-disposition, Content-Disposition parser, Content-Disposition, Content-Disposition
-@section mime-content-disposition structure
-
-@deffn{Structure} mime-content-disposition
-
-Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B@refill
-
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B @code{mime-content-disposition-\e$BMWAGL>\e(B} \e$B$H$$$&L>\e(B
-\e$BA0$N;2>H4X?t$rMQ$$$k!#\e(B@refill
-
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-@table @var
-@item disposition-type
-disposition-type (symbol).
-
-@item parameters
-Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-
-@end table
-@end deffn
-
-
-@defun mime-content-disposition-parameter content-disposition parameter
-
-@var{content-disposition} \e$B$N\e(B @var{parameter} \e$B$NCM$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-content-disposition-filename content-disposition
-
-@var{content-disposition} \e$B$N\e(B filename \e$B$NCM$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Disposition parser, , mime-content-disposition, Content-Disposition
-@section Parser for Content-Disposition field
-
-@defun mime-parse-Content-Disposition string
-
-@var{string} \e$B$r\e(B content-disposition \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-Content-Disposition
-
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Disposition \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-@refill
-
-Content-Disposition \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Transfer-Encoding, encoded-word, Content-Disposition, Top
-@chapter Encoding Method
-@cindex Content-Transfer-Encoding \e$BMs\e(B
-
-@strong{Content-Transfer-Encoding \e$BMs\e(B} \e$B$O\e(B entity \e$B$NId9f2=K!$r5-=R$9$k$?$a\e(B
-\e$B$N$b$N$G$9!#\e(B@refill
-
-FLIM \e$B$G$O\e(B Content-Transfer-Encoding \e$BMs$r9=J82r@O$9$k4X?t$rDs6!$7$^$9!#$3\e(B
-\e$B$l$i$N4X?t$O\e(B Content-Transfer-Encoding \e$BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#\e(B
-@refill
-
-\e$B$^$?!"\e(BContent-Transfer-Encoding \e$B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs\e(B
-\e$B6!$5$l$^$9!#\e(B
-
-
-@menu
-* Content-Transfer-Encoding parser:: Parser
-* Region encoder/decoder:: Region encoding/decoding
-* String encoder/decoder:: String encoding/decoding
-* File encoder/decoder:: File encoding/decoding
-@end menu
-
-@node Content-Transfer-Encoding parser, Region encoder/decoder, Content-Transfer-Encoding, Content-Transfer-Encoding
-@section Parser
-
-@defun mime-parse-Content-Transfer-Encoding string
-
-@var{string} \e$B$r\e(B content-transfer-encoding \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-Content-Transfer-Encoding &optional default-encoding
-
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Transfer-Encoding \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$r\e(B
-\e$BJV$9!#\e(B@refill
-
-Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B@var{default-encoding} \e$B$r\e(B
-\e$BJV$9!#\e(B
-@end defun
-
-
-
-@node Region encoder/decoder, String encoder/decoder, Content-Transfer-Encoding parser, Content-Transfer-Encoding
-@section Region encoding/decoding
-
-@defun mime-encode-region start end encoding
-
-Encode region @var{start} to @var{end} of current buffer using
-@var{encoding}.
-@end defun
-
-
-@defun mime-decode-region start end encoding
-
-Decode region @var{start} to @var{end} of current buffer using
-@var{encoding}.
-@end defun
-
-
-@defvar mime-encoding-method-alist
-
-Alist of encoding vs. corresponding method to encode region.@refill
-
-Each element looks like @code{(STRING . FUNCTION)} or @code{(STRING
-. nil)}. @var{string} is content-transfer-encoding. @code{function} is
-region encoder and @code{nil} means not to encode.
-@end defvar
-
-
-@defvar mime-decoding-method-alist
-
-Alist of encoding vs. corresponding method to decode region.@refill
-
-Each element looks like @code{(STRING . FUNCTION)} or @code{(STRING
-. nil)}. @var{string} is content-transfer-encoding. @code{function} is
-region decoder and @code{nil} means not to decode.
-@end defvar
-
-
-
-@node String encoder/decoder, File encoder/decoder, Region encoder/decoder, Content-Transfer-Encoding
-@section String encoding/decoding
-
-@defun mime-decode-string string encoding
-
-@var{string} \e$B$r\e(B @var{encoding} \e$B$H$7$FI|9f$7$?7k2L$rJV$7$^$9!#\e(B
-@end defun
-
-
-@defvar mime-string-decoding-method-alist
-
-Alist of encoding vs. corresponding method to decode string.@refill
-
-Each element looks like @code{(STRING . FUNCTION)}. STRING is
-content-transfer-encoding. FUNCTION is string decoder.
-@end defvar
-
-
-
-@node File encoder/decoder, , String encoder/decoder, Content-Transfer-Encoding
-@section File encoding/decoding
-
-@defun mime-insert-encoded-file filename encoding
-
-Insert file @var{FILENAME} encoded by @var{ENCODING} format.
-@end defun
-
-
-@defun mime-write-decoded-region start end filename encoding
-
-Decode and write current region encoded by @var{encoding} into
-@var{filename}.@refill
-
-@var{start} and @var{end} are buffer positions.
-@end defun
-
-
-@defvar mime-file-encoding-method-alist
-
-Alist of encoding vs. corresponding method to insert encoded
-file.@refill
-
-Each element looks like @code{(STRING . FUNCTION)}. STRING is
-content-transfer-encoding. FUNCTION is function to insert encoded file.
-@end defvar
-
-
-@defvar mime-file-decoding-method-alist
-
-Alist of encoding vs. corresponding method to write decoded region to
-file.@refill
-
-Each element looks like @code{(STRING . FUNCTION)}. STRING is
-content-transfer-encoding. FUNCTION is function to write decoded region
-to file.
-@end defvar
-
-
-
-@node encoded-word, custom, Content-Transfer-Encoding, Top
-@chapter Network representation of header
-@cindex RFC 2047
-@cindex Standards Track
-@cindex RFC 2047
-
-encoded-word \e$B$O\e(B header \e$B$GHs\e(B ASCII (@ref{ASCII}) \e$BJ8;z$rI=8=$9$k$?$a$N7A<0\e(B
-\e$B$G!"\e(B@strong{RFC 2047} \e$B$GDj5A$5$l$F$$$^$9!#\e(B@refill
-
-
-@noindent
-[RFC 2047]
-@quotation
-K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three:
-Message Header Extensions for Non-ASCII Text'', November 1996, Standards
-Track (obsolete RFC 1521,1522,1590).
-@end quotation
-
-\e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B ASCII
-(@ref{ASCII}) \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B@refill
-
-FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
-
-
-@menu
-* Header encoder/decoder:: Header encoding/decoding
-@end menu
-
-@node Header encoder/decoder, , encoded-word, encoded-word
-@section Header encoding/decoding
-
-@defun eword-encode-header &optional code-conversion separator
-
-Decode MIME encoded-words in header fields.@refill
-
-If @var{code-conversion} is @code{nil}, it decodes only encoded-words.
-If it is mime-charset, it decodes non-ASCII bit patterns as the
-mime-charset. Otherwise it decodes non-ASCII bit patterns as the
-default-mime-charset.@refill
-
-If @var{separator} is not nil, it is used as header separator.
-@end defun
-
-
-@defun eword-encode-header &optional code-conversion
-
-Encode header fields to network representation, such as MIME
-encoded-word.@refill
-
-It refer variable @code{eword-field-encoding-method-alist}.
-@end defun
-
-
-
-@node custom, Appendix, encoded-word, Top
-@chapter Various Customization
-
-@deffn{group} mime
-
-MIME \e$B4XO"5!G=$K4X$9$k\e(B group.@refill
-
-@code{mail} \e$B$H\e(B @code{news} \e$B$KB0$9$k!#\e(B
-@end deffn
-
-
-@defvar default-mime-charset
-
-\e$BE,@Z$J\e(B MIME charset (@ref{MIME charset}) \e$B$,8+$D$+$i$J$+$C$?>l9g$KMQ$$$i\e(B
-\e$B$l$k\e(BMIME charset.@refill
-
-\e$BK\Mh$O\e(B APEL \e$B$NJQ?t$G$"$k!#\e(B
-@end defvar
-
-
-@defvar mime-temp-directory
-
-MIME \e$B5!G=$K4X$9$k<BAu$,0l;~E*$K;HMQ$9$k\e(B file \e$B$r:n@.$9$k\e(B
-directory.@refill
-
-\e$B4D6-JQ?t\e(B @code{MIME_TMP_DIR}, @code{TM_TMP_DIR}, @code{TMPDIR},
-@code{TMP} \e$B$b$7$/$O\e(B @code{TEMP} \e$B$,@_Dj$5$l$F$$$?>l9g!"$=$l$r=i4|CM$H$7$F\e(B
-\e$BMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B@code{"/tmp/"} \e$B$rMQ$$$k!#\e(B
-@end defvar
-
-
-
-@node Appendix, Concept Index, custom, Top
-@chapter Appendix
-
-
-@menu
-* Glossary::
-* Bug report:: How to report bugs
-* CVS:: CVS based development
-* History:: History of FLIM
-@end menu
-
-@node Glossary, Bug report, Appendix, Appendix
-@section Glossary
-
-
-@menu
-* 7bit::
-* 8bit::
-* ASCII::
-* Base64::
-* binary::
-* coded character set:: Coded character set, Character code
-* media-type::
-* message::
-* MIME::
-* MIME charset::
-* MTA::
-* MUA::
-* Quoted-Printable::
-* RFC 822::
-* RFC 1036::
-* RFC 2045::
-* RFC 2046::
-* RFC 2048::
-* RFC 2049::
-* plain text::
-* us-ascii::
-@end menu
-
-@node 7bit, 8bit, Glossary, Glossary
-@subsection 7bit
-@cindex 7bit (textual) string
-@cindex 7bit data
-@cindex 7bit
-
-@strong{7bit} means any integer between 0 .. 127.@refill
-
-Any data represented by 7bit integers is called @strong{7bit data}.@refill
-
-Textual string consisted of Control characters between 0 .. 31 and 127,
-and space represented by 32, and graphic characters between 33 .. 236
-are called @strong{7bit (textual) string}.@refill
-
-Conventional Internet MTA (@ref{MTA}) can translate 7bit data, so it is
-no need to translate by Quoted-Printable (@ref{Quoted-Printable}) or
-Base64 (@ref{Base64}) for 7bit data.@refill
-
-However if there are too long lines, it can not translate by 7bit MTA
-even if it is 7bit data. RFC 821 (@ref{RFC 821}) and RFC 2045 (@ref{RFC 2045}) require lines in 7bit data must be less than 998 bytes. So if a
-``7bit data'' has a line more than 999 bytes, it is regarded as binary
-(@ref{binary}). For example, Postscript file should be encoded by
-Quoted-Printable.
-
-
-@node 8bit, ASCII, 7bit, Glossary
-@subsection 8bit
-@cindex 8bit (textual) string
-@cindex 8bit data
-@cindex 8bit
-
-@strong{8bit} means any integer between 0 .. 255.@refill
-
-Any data represented by 8bit integers is called @strong{8bit data}.@refill
-
-Textual string consisted of Control characters between 0 .. 31, 127, and
-128 .. 159, and space represented by 32, and graphic characters between
-33 .. 236 and 160 .. 255 are called @strong{8bit (textual) string}.@refill
-
-For example, iso-8859-1 (@ref{iso-8859-1}) or euc-kr (@ref{euc-kr}) are
-coded-character-set represented by 8bit textual string.@refill
-
-Traditional Internet MTA (@ref{MTA}) can translate only 7bit
-(@ref{7bit}) data, so if a 8bit data will be translated such MTA, it
-must be encoded by Quoted-Printable (@ref{Quoted-Printable}) or Base64
-(@ref{Base64}).@refill
-
-However 8bit MTA are increasing today.@refill
-
-However if there are too long lines, it can not translate by 8bit MTA
-even if it is 8bit data. RFC 2045 (@ref{RFC 2045}) require lines in
-8bit data must be less than 998 bytes. So if a ``8bit data'' has a line
-more than 999 bytes, it is regarded as binary (@ref{binary}), so it must
-be encoded by Base64 or Quoted-Printable.
-
-
-@node ASCII, Base64, 8bit, Glossary
-@subsection ASCII
-@cindex ANSI X3.4:1986
-@cindex ASCII
-@cindex ASCII
-
-@strong{ASCII} is a 94-character set contains primary latin characters
-(A-Z, a-z), numbers and some characters. It is a standard of the United
-States of America. It is a variant of ISO 646 (@ref{ISO 646}).
-
-
-@noindent
-[ASCII]
-@quotation
-``Coded Character Set -- 7-Bit American Standard Code for Information
-Interchange'', ANSI X3.4:1986.
-@end quotation
-
-
-
-@node Base64, binary, ASCII, Glossary
-@subsection Base64
-@cindex pad
-@cindex Base64
-
-@strong{Base64} is a transfer encoding method of MIME (@ref{MIME})
-defined in RFC 2045 (@ref{RFC 2045}).@refill
-
-The encoding process represents 24-bit groups of input bits as output
-strings of 4 encoded characters. Encoded characters represent integer 0
-.. 63 or @strong{pad}. Base64 data must be 4 * n bytes, so pad is used
-to adjust size.@refill
-
-These 65 characters are subset of all versions of ISO 646, including
-US-ASCII, and all versions of EBCDIC. So it is safe even if it is
-translated by non-Internet gateways.
-
-
-@node binary, coded character set, Base64, Glossary
-@subsection binary
-@cindex binary
-
-Any byte stream is called @strong{binary}.@refill
-
-It does not require structureof lines. It differs from from 8bit
-(@ref{8bit}).@refill
-
-In addition, if line structured data contain too long line (more than
-998 bytes), it is regarded as binary.
-
-
-@node coded character set, media-type, binary, Glossary
-@subsection Coded character set, Character code
-
-A set of unambiguous rules that establishes a character set and the
-one-to-one relationship between the characters of the set and their
-bit combinations.
-
-
-@node media-type, message, coded character set, Glossary
-@subsection media-type
-@cindex x-token
-@cindex message
-@cindex multipart
-@cindex application
-@cindex video
-@cindex audio
-@cindex image
-@cindex text
-@cindex subtype
-@cindex type
-@cindex media-type
-
-@strong{media-type} specifies the nature of the data in the body of MIME
-(@ref{MIME}) entity (@ref{entity}). It consists of @strong{type} and
-@strong{subtype}. It is defined in RFC 2046 (@ref{RFC 2046}).@refill
-
-Currently there are following standard primary-types:
-
-@itemize @bullet
-@item
-@strong{text}
-@item
-@strong{image}
-@item
-@strong{audio}
-@item
-@strong{video}
-@item
-@strong{application}
-@item
-@strong{multipart} (@ref{multipart})
-@item
-@strong{message}
-@end itemize
-
-
-And there are various subtypes, for example, application/octet-stream,
-audio/basic, image/jpeg, multipart/mixed (@ref{multipart/mixed}),
-text/plain (@ref{text/plain}), video/mpeg... @refill
-
-You can refer registered media types at MEDIA TYPES
-(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types).@refill
-
-In addition, you can use private type or subtype using @strong{x-token},
-which as the prefix `x-'. However you can not use them in
-public.@refill
-
-(cf. @ref{Content-Type field})
-
-
-
-@node message, MIME, media-type, Glossary
-@subsection message
-
-In this document, it means mail defined in RFC 822 (@ref{RFC 822}) and
-news message defined in RFC 1036 (@ref{RFC 1036}).
-
-
-@node MIME, MIME charset, message, Glossary
-@subsection MIME
-@cindex Multipurpose Internet Mail Extensions
-
-MIME stands for @strong{Multipurpose Internet Mail Extensions}, it is an
-extension for RFC 822 (@ref{RFC 822}).@refill
-
-According to RFC 2045:@refill
-
-STD 11, RFC 822, defines a message representation protocol specifying
-considerable detail about US-ASCII message headers, and leaves the
-message content, or message body, as flat US-ASCII text. This set of
-documents, collectively called the Multipurpose Internet Mail
-Extensions, or MIME, redefines the format of messages to allow for
-
-@enumerate
-@item
-textual message bodies in character sets other than US-ASCII,
-@item
-an extensible set of different formats for non-textual message
-bodies,
-@item
-multi-part message bodies, and
-@item
-textual header information in character sets other than US-ASCII.
-@end enumerate
-
-
-It is defined in RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}),
-RFC 2047 (@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}) and RFC 2049
-(@ref{RFC 2049}).
-
-
-@node MIME charset, MTA, MIME, Glossary
-@subsection MIME charset
-
-Coded character set (@ref{coded character set}) used in Content-Type
-field (@ref{Content-Type field}) or charset parameter of encoded-word
-(@ref{encoded-word}).@refill
-
-It is defined in RFC 2045 (@ref{RFC 2045}).@refill
-
-iso-2022-jp (@ref{iso-2022-jp}) or euc-kr (@ref{euc-kr}) are kinds of
-it. (In this document, MIME charsets are written by small letters to
-distinguish graphic character set (@ref{graphic character set}). For
-example, ISO 8859-1 is a graphic character set, and iso-8859-1 is a MIME
-charset)
-
-
-@node MTA, MUA, MIME charset, Glossary
-@subsection MTA
-@cindex Message Transfer Agent
-
-@strong{Message Transfer Agent}. It means mail transfer programs
-(ex. sendmail) and news servers.@refill
-
-(cf. @ref{MUA})
-
-
-
-@node MUA, Quoted-Printable, MTA, Glossary
-@subsection MUA
-@cindex Message User Agent
-
-@strong{Message User Agent}. It means mail readers and news
-readers.@refill
-
-(cf. @ref{MTA})
-
-
-
-@node Quoted-Printable, RFC 822, MUA, Glossary
-@subsection Quoted-Printable
-@cindex Quoted-Printable
-
-@strong{Quoted-Printable} is a transfer encoding method of MIME
-(@ref{MIME}) defined in RFC 2045 (@ref{RFC 2045}).@refill
-
-If the data being encoded are mostly US-ASCII text, the encoded form of
-the data remains largely recognizable by humans.@refill
-
-(cf. @ref{Base64})
-
-
-
-@node RFC 822, RFC 1036, Quoted-Printable, Glossary
-@subsection RFC 822
-@cindex RFC 822
-@cindex STD 11
-@cindex Internet mail
-@cindex Internet message
-@cindex message header
-
-A RFC defines format of Internet mail message, mainly @strong{message header}.
-
-@noindent
-@strong{[Memo]}
-@quotation
-
-news message is based on RFC 822, so @strong{Internet message} may be
-more suitable than @strong{Internet mail} .
-@end quotation
-
-
-
-@noindent
-[RFC 822]
-@quotation
-D. Crocker, ``Standard for the Format of ARPA Internet Text Messages'',
-August 1982, STD 11.
-@end quotation
-
-
-
-@node RFC 1036, RFC 2045, RFC 822, Glossary
-@subsection RFC 1036
-@cindex RFC 1036
-@cindex USENET
-
-A RFC defines format of USENET message. It is a subset of RFC 822
-(@ref{RFC 822}). It is not Internet standard, but a lot of netnews
-excepting Usenet uses it.
-
-
-@noindent
-[USENET: RFC 1036]
-@quotation
-M. Horton and R. Adams, ``Standard for Interchange of USENET Messages'',
-December 1987, (obsolete RFC 850).
-@end quotation
-
-
-
-@node RFC 2045, RFC 2046, RFC 1036, Glossary
-@subsection RFC 2045
-@cindex RFC 2045
-@cindex Standards Track
-
-
-@noindent
-[RFC 2045]
-@quotation
-N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies'', November 1996,
-Standards Track (obsolete RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node RFC 2046, RFC 2048, RFC 2045, Glossary
-@subsection RFC 2046
-@cindex RFC 2046
-@cindex Standards Track
-
-
-@noindent
-[RFC 2046]
-@quotation
-N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
-(MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete
-RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node RFC 2048, RFC 2049, RFC 2046, Glossary
-@subsection RFC 2048
-@cindex RFC 2048
-@cindex Standards Track
-
-
-@noindent
-[RFC 2048]
-@quotation
-N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail
-Extensions (MIME) Part Four: Registration Procedures'', November 1996,
-Standards Track (obsolete RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node RFC 2049, plain text, RFC 2048, Glossary
-@subsection RFC 2049
-@cindex RFC 2049
-@cindex Standards Track
-
-
-@noindent
-[RFC 2049]
-@quotation
-N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
-(MIME) Part Five: Conformance Criteria and Examples'', November 1996,
-Standards Track (obsolete RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node plain text, us-ascii, RFC 2049, Glossary
-@subsection plain text
-
-A textual data represented by only coded character set (@ref{coded character set}). It does not have information about font or
-typesetting. (cf. @ref{text/plain})
-
-
-
-@node us-ascii, , plain text, Glossary
-@subsection us-ascii
-@cindex ASCII
-@cindex us-ascii
-
-A MIME charset (@ref{MIME charset}) for primary Latin script mainly
-written by English or other languages.@refill
-
-It is a 7bit coded character set (@ref{coded character set}) based on
-ISO 2022 (@ref{ISO 2022}), it contains only ASCII (@ref{ASCII}) and code
-extension (@ref{code extension}) is not allowed.@refill
-
-It is standard coded character set of Internet mail. If MIME charset is
-not specified, @strong{us-ascii} is used as default.@refill
-
-In addition, @strong{ASCII} of RFC 822 (@ref{RFC 822}) should be
-interpreted as us-ascii.
-
-
-@node Bug report, CVS, Glossary, Appendix
-@section How to report bugs
-@cindex good bug report
-
-If you write bug-reports and/or suggestions for improvement, please
-send them to the tm Mailing List:
-
-@itemize @bullet
-@item
- Japanese <bug-tm-ja@@chamonix.jaist.ac.jp>
-@item
- English <bug-tm-en@@chamonix.jaist.ac.jp>
-@end itemize
-
-
-Notice that, we do not welcome bug reports about too old version. Bugs
-in old version might be fixed. So please try latest version at
-first.@refill
-
-You should write @strong{good bug report}. If you write only ``FLIM
-does not work'', we can not find such situations. At least, you should
-write name, type, variants and version of OS, emacs, APEL, FLIM, SEMI
-and MUA, and setting. In addition, if error occurs, to send backtrace
-is very important. (cf. @ref{(emacs)Bugs}) @refill
-
-Bug may not appear only your environment, but also in a lot of
-environment (otherwise it might not bug). Therefor if you send mail
-to author directly, we must write a lot of mails. So please send mail
-to address for tm bugs instead of author.
-
-Via the tm ML, you can report FLIM bugs, obtain the latest release of
-FLIM, and discuss future enhancements to FLIM. To join the tm ML,
-send empty e-mail to:
-
-@itemize @bullet
-@item
- Japanese <tm-ja-help@@chamonix.jaist.ac.jp>
-@item
- English <tm-en-help@@chamonix.jaist.ac.jp>
-@end itemize
-
-
-
-@node CVS, History, Bug report, Appendix
-@section CVS based development
-
-FLIM \e$B$N\e(B file \e$B$O\e(B CVS \e$B$r;H$C$F4IM}$5$l$F$$$^$9!#$3$N$?$a!"0J2<$NJ}K!$G:G\e(B
-\e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
-
-@example
-(0) cvs login
-
- % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
- login
-
- CVS password: [CR] # NULL string
-
-(1) checkout
-
- % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
- checkout [-r TAG] flim
-@end example
-
-
-CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
-
-@itemize @bullet
-@item
- <cvs@@chamonix.jaist.ac.jp>
-@end itemize
-
-@noindent
-\e$B$^$G!"\e(Baccount \e$BL>$H\e(B UNIX \e$B$N\e(B passwd \e$B$HF1$87A<0$N\e(B crypt \e$B2=$5$l$?\e(B password
-\e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
-
-
-@node History, , CVS, Appendix
-@section History of FLIM
-
-FLIM \e$B$N\e(B code \e$B$N:G8E$NItJ,$O\e(B \e$B1]JB\e(B \e$B;LCR\e(B \e$B;a$,=q$$$?\e(B @file{mime.el}\e$B$K5/8;$7\e(B
-\e$B$^$9!#$3$N>.$5$J\e(B program \e$B$O\e(B Nemacs \e$B$GF0:n$9$k\e(B iso-2022-jp \e$B$N\e(B B-encoding
-\e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B@refill
-
-\e$B$=$N8e!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B @file{mime.el} \e$B$r85$K\e(B@file{tiny-mime.el} \e$B$H$$$&%W%m\e(B
-\e$B%0%i%`$r=q$-$^$9!#$3$l$O!"\e(BNemacs \e$B$H\e(B Mule \e$B$GF0:n$9$k\e(B encoded-word \e$B$NId9f\e(B
-\e$B2=!&I|9f2=%W%m%0%i%`$G$7$?!#\e(B@file{tiny-mime.el} \e$B$O\e(B B-encoding \e$B$@$1$G$J$/\e(B
-Q-encoding \e$B$b\e(Bsupport \e$B$7!"$^$?!"\e(BMULE \e$B$G07$&$3$H$,$G$-$k$5$^$6$^$J\e(B MIME
-charset (@ref{MIME charset}) \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(B
-Nemacs \e$B$H\e(B Mule \e$B$NAPJ}$r\e(B support \e$B$9$k$?$a$KMQ$$$i$l$?%F%/%K%C%/$O8e$K\e(B emu
-package \e$B$K$^$H$a$i$l$^$9!#\e(B@refill
-
-\e$B$3$N:"!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B @file{tiny-mime.el} \e$B$r$5$^$6$^$J\e(B MUA \e$B$G;H$&$?$a$N@_\e(B
-\e$BDj=8$bG[I[$7$F$$$^$7$?$,!"$=$l$i$O8e$K\e(B@file{tiny-mime.el} \e$B$H$H$b$K#1$D$N\e(B
-package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$$&L>A0$GG[I[$5$l$^$9!#\e(B@refill
-
-\e$B<i2,\e(B \e$BCNI'\e(B \e$B$O$d$,$F!"\e(BMIME message \e$B$r1\Mw$9$k$?$a$N%W%m%0%i%`$G$"$k\e(B
-@file{tm-body.el} \e$B$r=q$-$^$9!#$3$l$O!"$9$0$K\e(B@file{tm-view.el} \e$B$H$$$&L>A0\e(B
-\e$B$KJQ$o$j$^$7$?$,!"$d$,$F!"$3$l$,\e(B@file{tiny-mime.el} \e$B$KBe$o$C$F!"\e(Btm \e$B$NCf\e(B
-\e$B3K$H$J$j$^$9!#\e(B@refill
-
-@file{tm-view.el} \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,$"$j$^$9!#\e(B
-\e$B$3$NL\E*$N$?$a$K!"\e(BMEL \e$B$,@0Hw$5$l$O$8$a$^$7$?!#\e(BBase64 \e$B$K4X$7$F$O\e(B
-@file{tiny-mime.el} \e$B$N\e(B code \e$B$,0\$5$l!"$^$?!"?7$?$K\e(BQuoted-Printable \e$B$N\e(B
-code \e$B$,DI2C$5$l$^$7$?!#$3$l$i$,\e(B@file{mel-b.el} \e$B$H\e(B @file{mel-q.el} \e$B$K$J$j\e(B
-\e$B$^$7$?!#\e(B@refill
-
-\e$B$^$?!"8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B uuencode \e$BMQ$N\e(B @file{mel-u.el} \e$B$,DI2C$5$l!"\e(B
-\e$B$=$N8e$K!">.NS\e(B \e$B=$J?\e(B \e$B;a$K$h$C$F\e(B x-gzip64 \e$BMQ$N\e(B@file{mel-g.el} \e$B$,DI2C$5$l$^\e(B
-\e$B$7$?!#\e(B@refill
-
-tm \e$B$G$O8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B @file{tiny-mime.el} \e$B$N:F<BAu$,9T$o$l!"$3\e(B
-\e$B$N2aDx$G!"\e(BSTD 11 \e$B$N\e(B parser \e$B$,=q$+$l$^$7$?!#$3$l$O!"8=:_$N\e(B
-@file{std11.el} \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B @file{tiny-mime.el} \e$B$OI|\e(B
-\e$B9f2=$r9T$&\e(B @file{tm-ew-d.el} \e$B$HId9f2=$r9T$&\e(B @file{tm-ew-e.el} \e$B$KJ,$1$i$l\e(B
-\e$B$^$7$?!#$3$NN><T$,8=:_$N\e(B @file{eword-decode.el} \e$B$H\e(B
-@file{eword-encode.el} \e$B$N@hAD$KEv$?$j$^$9!#\e(B@refill
-
-\e$B8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$i$K$h$C$F\e(B tm \e$B$NA4LL=q$-49$(:n6H$,9T$o$l!"$3$N2aDx$G!"\e(Btm
-\e$B$O\e(B APEL, MEL, SEMI, EMH, RMAIL-MIME, Gnus-MIME \e$B$J$I$KJ,$1$i$l$^$7$?!#$3\e(B
-\e$B$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B@refill
-
-\e$B8e$K!"\e(BAPEL \e$B$+$i\e(B @file{std11.el} \e$B$,0\$5$l!"$^$?!"\e(B@file{mailcap.el},
-@file{eword-decode.el} \e$B$*$h$S\e(B @file{eword-encode.el} \e$B$,\e(B SEMI \e$B$+$i0\$5$l!"\e(B
-package \e$B$NL>A0$,\e(B FLIM\e$B$H$J$j$^$9!#\e(B@refill
-
-\e$B$3$ND>A0$+$iEDCf\e(B \e$BE/\e(B \e$B;a$,$h$j\e(B RFC \e$B$KCi<B$J<BAu$r=q$-;O$a!"$3$l$O!"8=:_!"\e(B
-FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
-
-
-@node Concept Index, Function Index, Appendix, Top
-@chapter Concept Index
-
-@printindex cp
-
-@node Function Index, Variable Index, Concept Index, Top
-@chapter Function Index
-
-@printindex fn
-
-@node Variable Index, , Function Index, Top
-@chapter Variable Index
-
-@printindex vr
-@bye
+++ /dev/null
-<!doctype sinfo system>
-<head>
-<title>FLIM 1.9 MIME \e$B5!G=@bL@=q\e(B
-<author>\e$B<i2,\e(B \e$BCNI'\e(B <mail>morioka@jaist.ac.jp</mail>
-<date>1998/07/01
-
-<toc>
-</head>
-
-<body>
-
-<abstract>
-<p>
-This file documents MIME features of FLIM, a Internet message
-parsing/encoding library for GNU Emacs.
-<p>
-GNU Emacs \e$BMQ$N\e(B Internet Message \e$B$N2r@O$dId9f2=$K4X$9$k\e(B library \e$B$G$"$k\e(B
-FLIM \e$B$N\e(B MIME \e$B5!G=$K4X$7$F@bL@$7$^$9!#\e(B
-</abstract>
-
-
-<h1> FLIM \e$B$C$F2?!)\e(B
-<node> Introduction
-<p>
-FLIM \e$B$O\e(B Internet Message \e$B$NI=8=$dId9f2=$K4X$9$k4pACE*$J5!G=$rDs6!$9$k\e(B
-\e$B$?$a$N\e(B library \e$B$G$9!#\e(B
-
-
-<h1> FLIM \e$B$N\e(B MIME \e$B5!G=$N;H$$J}\e(B
-<node> How to use
-<p>
-FLIM \e$B$NDs6!$9$k\e(B MIME \e$B5!G=$r;H$&$?$a$K$O\e(B
-
-<lisp>
-(require 'mime)
-</lisp>
-
-<noindent>\e$B$rI>2A$7$F$/$@$5$$!#\e(B
-
-
-<h1> Message \e$B$H\e(B Entity
-<node> Entity
-<p>
-<dref>RFC 2045</dref> \e$B$K$h$l$P!"!V\e(BEntity \e$B$H$$$&8l$O!"\e(Bmessage, \e$B$b$7$/$O!"\e(B
-multipart entity \e$B$N\e(B body \e$BCf$N#1$D$NItJ,$N!"\e(BMIME \e$B$GDj5A$5$l$?\e(B header
-field \e$B$HFbMF$r;X$9!W$H$J$C$F$$$^$9!#$3$3$G$O!"\e(BMIME \e$B$GDj5A$5$l$?\e(B header
-field \e$B0J30$NA4$F$N\e(B header \e$B$H\e(B body \e$B$r;X$98l$H$7$F\e(B
-<concept>entity</concept>\e$B$rMQ$$$k$3$H$K$7$^$9!#\e(B
-<p>
-RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$rC10L$H$9$kLZ9=B$$G$"$k$3$H$r\e(B
-\e$B<($7$F$$$^$9!#\e(Bmessage \e$B$O2<?^$G<($9$h$&$JLZ$H$J$j!"\e(Bentity \e$B$O$3$NLZ$K$*$1\e(B
-\e$B$k@a$H$J$j$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B
-<p>
-FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B<concept>mime-entity</concept> \e$B9=\e(B
-\e$BB$BN$rMQ$$$^$9!#0J2<$G$OC1$K\e(B mime-entity \e$B$H8F$V$3$H$K$7$^$9!#\e(B
-<p>
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-<verb>
-
- \e$B(#(!(!(!($\e(B
- \e$B("\e(B nil \e$B("\e(B
- \e$B(&(!(((!(%\e(B
- \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
- \e$B(#(*($\e(B \e$B(#(*($\e(B \e$B(#(*($\e(B
- \e$B("#0("\e(B \e$B("#1("\e(B \e$B("#2("\e(B
- \e$B(&(((%\e(B \e$B(&(((%\e(B \e$B(&(((%\e(B
- \e$B("\e(B \e$B(#(!(!(!(!(+(!(!(!(!($\e(B \e$B("\e(B
- \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
- \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
- \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-
-</verb>
-<p>
-<noindent>\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B <concept>entity-number</concept> \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B <code>(1 2 3)</code> \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-<p>
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B <concept>node-id</concept> \e$B$rMQ$$$^$9!#\e(B
-node-id \e$B$O$A$g$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number
-1.2.3 \e$B$KBP1~$9$k\e(B node-id \e$B$O\e(B <code>(3 2 1)</code> \e$B$G$9!#\e(B
-<p>
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B <code>mime-message-structure</code> \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B
-<code>mime-message-structure</code> \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
-
-
-<h2> Entity \e$B$N@8@.\e(B
-<node> Entity creation
-<p>
-<defun name="mime-open-entity">
- <opts> type location
-<p>
-Open an entity and return it.
-<p>
-<var>type</var> is representation-type. <cf node="mm-backend">
-<p>
-<var>location</var> is location of entity. Specification of it is
-depended on representation-type.
-</defun>
-
-<defun name="mime-parse-buffer">
- <opts> buffer type
-<p>
-<var>buffer</var> \e$B$r\e(B message \e$B$H$7$F9=J82r@O$7!"$=$N7k2L$N\e(B mime-entity
-\e$B$r\e(B <var>buffer</var> \e$B$N\e(B<code>mime-message-structure</code> \e$B$K3JG<$9$k!#\e(B
-<p>
-<var>buffer</var> \e$B$,>JN,$5$l$?>l9g!"8=:_$N\e(B buffer \e$B$r9=J82r@O$9$k!#\e(B
-<p>
-<var>type</var> \e$B$,;XDj$5$l$?>l9g!"$=$NCM$r@8@.$5$l$k\e(B mime-entity \e$B$NI=\e(B
-\e$B>]7?$H$7$FMQ$$$k!#>JN,$5$l$?>l9g$O\e(B <var>buffer</var> \e$B$H$J$k!#\e(B<cf
-node="mm-backend">
-</defun>
-
-
-<h2> Entity \e$B3,AX\e(B
-<node> Entity hierarchy
-<p>
-<defvar name="mime-message-structure">
-<p>
-\e$B8=:_$N\e(B buffer \e$B$K$*$1$k\e(B message \e$BA4BN$N\e(B mime-entity \e$B9=B$BN$r3JG<$9$k\e(B
-buffer local \e$BJQ?t!#\e(B
-</defvar>
-
-<defun name="mime-entity-children">
- <args> entity
-<p>
-<var>entity</var> \e$B$K4^$^$l$k\e(B entity \e$B$N\e(B list \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-parent">
- <args> entity <opts> message
-<p>
-<var>entity</var> \e$B$N?F$N\e(B entity \e$B$rJV$9!#\e(B
-<p>
-<var>message</var> \e$B$,;XDj$5$l$?>l9g!"$3$l$r:,$H8+Jo$9!#\e(B
-</defun>
-
-<defun name="mime-root-entity-p">
- <args> entity
-<p>
-<var>entity</var> \e$B$,:,!JB($A!"\e(Bmessage \e$BA4BN!K$G$"$k>l9g$K!"\e(B
-\e$BHs\e(B-<code>nil</code> \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-node-id">
- <args> entity
-<p>
-<var>entity</var> \e$B$N\e(B node-id \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-number">
- <args> entity
-<p>
-<var>entity</var> \e$B$N\e(B entity-number \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-find-entity-from-number">
- <args> entity-number <opts> message
-<p>
-Return entity from <var>entity-number</var> in <var>message</var>.
-<p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
-</defun>
-
-<defun name="mime-find-entity-from-node-id">
- <args> entity-node-id <opts> message
-<p>
-Return entity from <var>entity-node-id</var> in <var>message</var>.
-<p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
-</defun>
-
-
-<h2> Entity \e$B$NB0@-\e(B
-<node> Entity Attributes
-<p>
-<defun name="mime-entity-content-type">
- <args> entity
-<p>
-<var>entity</var> \e$B$N\e(B content-type \e$B$rJV$9!#\e(B<cf
-node="mime-content-type">
-</defun>
-
-<defun name="mime-entity-content-disposition">
- <args> entity
-<p>
-<var>entity</var> \e$B$N\e(B content-disposition \e$B$rJV$9!#\e(B<cf
-node="mime-content-disposition">
-</defun>
-
-<defun name="mime-entity-filename">
- <args> entity
-<p>
-<var>entity</var> \e$B$N\e(B file \e$BL>$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-encoding">
- <args> entity <opts> default-encoding
-<p>
-<var>entity</var> \e$B$N\e(B content-transfer-encoding \e$B$rJV$9!#\e(B<cf
-node="Content-Transfer-Encoding">
-<p>
-\e$B$b$7!"\e(B<var>entity</var> \e$B$K\e(B Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l\e(B
-\e$B9g$O!"\e(B<var>default-encoding</var> \e$B$rJV$9!#$3$l$,;XDj$5$l$J$$>l9g$O!"\e(B
-<code>"7bit"</code> \e$B$rMQ$$$k!#\e(B
-</defun>
-
-<defun name="mime-entity-cooked-p">
- <args> entity
-<p>
-Return non-nil if contents of <var>entity</var> has been already
-code-converted.
-</defun>
-
-
-<h2> Entity header \e$B$N>pJs\e(B
-<node> Entity-header
-<p>
-<defun name="mime-fetch-field">
- <args> field-name <opts> entity
-<p>
-<var>entity</var> \e$B$N\e(B header \e$BCf$N\e(B <var>field-name</var> \e$BMs$N\e(B body \e$B$rJV$9!#\e(B
-<p>
-\e$B7k2L$NJ8;zNs$O\e(B network \e$BI=8=$N$^$^$G$"$k!#\e(B
-<p>
-<var>entity</var> \e$B$,>JN,$5$l$?>l9g$O!"\e(B
-<code>mime-message-structure</code> \e$B$NCM$rMQ$$$k!#\e(B
-<p>
-<var>field-name</var> \e$BMs$,B8:_$7$J$$>l9g$O\e(B <code>nil</code> \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-field">
- <args> field-name <opts> entity
-<p>
-<var>entity</var> \e$B$N\e(B header \e$BCf$N\e(B <var>field-name</var> \e$BMs$r9=J82r@O$7$?\e(B
-\e$B7k2L$rJV$9!#\e(B
-<p>
-\e$B7k2L$N7A<0$OMsKh$K0[$J$k!#Hs9=B$2=Ms$N>l9g$OJ8;zNs$rJV$7!"9=B$2=Ms$N>l9g\e(B
-\e$B$O$=$N7A<0$K=>$C$?\e(B list \e$B$rJV$9!#\e(B
-<p>
-\e$B7k2LCf$NJ8;zNs$O\e(B Emacs \e$B$NFbItI=8=$KJQ49$5$l$k!#\e(B
-<p>
-<var>entity</var> \e$B$,>JN,$5$l$?>l9g$O!"\e(B
-<code>mime-message-structure</code> \e$B$NCM$rMQ$$$k!#\e(B
-<p>
-<var>field-name</var> \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-insert-decoded-header">
- <args> entity <opts> invisible-fields visible-fields
-<p>
-\e$B8=:_0LCV$K\e(B <var>entity</var> \e$B$NI|9f$7$?\e(B header \e$B$rA^F~$9$k!#\e(B
-<p>
-<var>invisible-fields</var> \e$B$H\e(B <var>visible-fields</var> \e$B$O@55,I=8=$N\e(B
-list \e$B$G!"$=$l$>$l!"I=<($7$?$/$J$$\e(B field \e$BL>$HI=<($7$?$$MsL>$rI=8=$7$?$b$N\e(B
-\e$B$G$"$k!#\e(B
-<p>
-<var>invisible-fields</var> \e$B$NMWAG$N$I$l$+$K\e(B match \e$B$7!"$+$D!"\e(B
-<var>visible-fields</var> \e$B$NMWAG$N$I$l$K$b\e(B match \e$B$7$J$$Ms$OI=<($5$l$J$$!#\e(B
-</defun>
-
-
-<h2> Entity \e$B$NFbMF\e(B
-<node> Entity-content
-<p>
-<defun name="mime-entity-content">
- <args> entity
-<p>
-<var>entity</var> \e$B$NFbMF$N\e(B byte \e$BNs$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-write-entity-content">
- <args> entity filename
-<p>
-Write content of <var>entity</var> into <var>filename</var>.
-</defun>
-
-<defun name="mime-write-entity">
- <args> entity filename
-<p>
-Write representation of <var>entity</var> into <var>filename</var>.
-</defun>
-
-<defun name="mime-write-entity-body">
- <args> entity filename
-<p>
-Write body of <var>entity</var> into <var>filename</var>.
-</defun>
-
-
-<h2> Entity \e$B$N\e(B buffer \e$B$K$h$kI=8=\e(B
-<node> Entity buffer
-<p>
-<defun name="mime-entity-buffer">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-point-min">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(B<var>entity</var> \e$B$,@j$a$k\e(B
-\e$BNN0h$N@hF,0LCV$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-point-max">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(B<var>entity</var> \e$B$,@j$a$k\e(B
-\e$BNN0h$NKvHx0LCV$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-header-start">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bheader \e$B$,@j$a$kNN0h$N@hF,\e(B
-\e$B0LCV$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-header-end">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bheader \e$B$,@j$a$kNN0h$NKvHx\e(B
-\e$B0LCV$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-body-start">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bbody \e$B$,@j$a$kNN0h$N@hF,0L\e(B
-\e$BCV$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-entity-body-end">
- <args> entity
-<p>
-<var>entity</var> \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bbody \e$B$,@j$a$kNN0h$NKvHx0L\e(B
-\e$BCV$rJV$9!#\e(B
-</defun>
-
-
-<h2> Entity \e$B$NI=8=$H<B8=\e(B
-<node> mm-backend
-<p>
-Entity \e$B$OCj>]2=$5$l$?%G!<%?I=8=$G!"<B:]$N%G!<%?I=8=$H$7$F$OMQES$K1~$8$F\e(B
-\e$B$5$^$6$^$J$b$N$,MxMQ$G$-$k$h$&$K@_7W$5$l$F$$$^$9!#\e(B
-<p>
-\e$B$3$3$G!"\e(Bentity \e$B$,$I$&$$$&<oN`$NI=8=$r9T$C$F$$$k$+$r<($9$N$,\e(B
-<concept>representation-type</concept> \e$B$G!"\e(Bentity \e$B$r@8@.$9$k;~$K$O$3$l$r\e(B
-\e$B;XDj$7$^$9!#\e(B<cf node="Entity Creation">
-<p>
-\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
-\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B
-representation-type \e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]\e(B
-\e$B$N=hM}$r9T$&4X?t$r8F$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B <concept>entity \e$B=hM}\e(B
-method</concept> \e$B$H8F$S$^$9!#$^$?!"\e(Brepresentation-type \e$BKh$K$3$N$h$&$J4X\e(B
-\e$B?t$r$^$H$a$?$b$N$r\e(B <concept>mm-backend</concept> \e$B$H8F$S$^$9!#\e(B
-<p>
-mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$H$$$&\e(B
-\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
-representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$rIU$1$?$b$N$K$J$C$F\e(B
-\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
-\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
-
-
-<h3> Entity \e$B$X$NJX$j\e(B
-<node> Request for entity
-<p>
-<defun name="mime-entity-send">
- <args> entity message <rest> args
-<p>
-<var>entity</var> \e$B$K\e(B <var>message</var> \e$B$rAw$k!#\e(B
-<p>
-<var>args</var> \e$B$O\e(B <var>message</var> \e$B$N0z?t$G$"$k!#\e(B
-</defun>
-
-
-<h3> mm-backend \e$B$N:n$jJ}\e(B
-<node> mm-backend module
-<p>
-\e$B!J$9$_$^$;$s!#$=$N$&$A=q$-$^$9\e(B (^_^;\e$B!K\e(B
-<p>
-\e$B!J$H$j$"$($:!"\e(Bmm*.el \e$B$r;29M$K$7$F$/$@$5$$!K\e(B
-
-
-<h1> Content-Type \e$BMs$N>pJs\e(B
-<node> Content-Type
-<p>
-<concept>Content-Type \e$BMs\e(B</concept> \e$B$O\e(B <dref>media-type</dref> \e$B$d\e(B MIME
-charset \e$B$H$$$C$?\e(B <dref>entity</dref> \e$B$NFbMF$N<oN`$dI=8=7A<0$J$I$r5-=R\e(B
-\e$B$9$k$?$a$N$b$N$G!"\e(B<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$^$9!#\e(B
-
-<memo>
-<p>
-\e$BNr;KE*$K$O\e(B RFC 1049 \e$B$G\e(B Content-Type \e$BMs$,Ds0F$5$l$F$$$k!#C"$7!"\e(BMIME \e$B$N\e(B
-media-type \e$B$N$h$&$J\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$/!"\e(BMIME charset \e$B$N$h$&\e(B
-\e$B$JJ8;zId9f$N<oN`$rI=8=$9$k$3$H$b$G$-$J$$!#\e(B
-</memo>
-
-<p>
-FLIM \e$B$O\e(B Content-Type \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Type \e$BMs$N2r@O7k2L$r\e(B
-\e$B3JG<$9$k9=B$BN\e(B <concept>mime-content-type</concept> \e$B$rDs6!$7$^$9!#\e(B
-
-
-<h2> Content-Type \e$BMs$N7A<0\e(B
-<node> Content-Type field
-<p>
-Content-Type \e$BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'\e(B
-
-<quote>
-``Content-Type'' ``:'' <concept>type</concept> ``/''
-<concept>subtype</concept> *( ``;'' <concept>parameter</concept> )
-</quote>
-<p>
-\e$BNc$($P!"\e(B
-
-<quote>
-<verb>
-Content-Type: image/jpeg
-</verb>
-</quote>
-
-<noindent>
-\e$B$d\e(B
-
-<quote>
-<verb>
-Content-Type: text/plain; charset=iso-2022-jp
-</verb>
-</quote>
-
-<noindent>
-\e$B$J$I$N$h$&$KMQ$$$i$l$^$9!#\e(B
-<p>
-\e$B$3$3$G!"\e(B`type' \e$B$H\e(B `subtype' \e$B$O\e(B entity \e$B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7\e(B
-\e$B$F!"\e(B`media-type' \e$B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k\e(B `image/jpeg' \e$B$d\e(B
-`text/plain' \e$B$O\e(B media-type \e$B$N#1$D$G$9!#\e(B
-
-<memo>
-<p>
-Content-Type \e$BMs$N$J$$\e(B entity \e$B$O\e(B
-
-<quote>
-<verb>
-Content-Type: text/plain; charset=us-ascii
-</verb>
-</quote>
-
-<noindent>
-\e$B$H$7$F2r<a$5$l$k!#\e(B<cf node="us-ascii">
-</memo>
-
-
-<h2> mime-content-type \e$B9=B$BN\e(B
-<node> mime-content-type
-<p>
-<define type="Structure" name="mime-content-type">
-<p>
-Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B
-<p>
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B <code>mime-content-type-\e$BMWAGL>\e(B</code> \e$B$H$$$&L>\e(B
-\e$BA0$N;2>H4X?t$rMQ$$$k!#\e(B
-<p>
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-<vl>
-<dt>primary-type<dd>media-type \e$B$N<g7?\e(B (symbol).
-</dd>
-<dt>subtype<dd>media-type \e$B$NI{7?\e(B (symbol).
-</dd>
-<dt>parameters<dd>Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-</dd>
-</vl>
-</define>
-
-<defun name="make-mime-content-type">
- <args> type subtype
- <opts> parameters
-<p>content-type \e$B$N@8@.;R!#\e(B
-</defun>
-
-<defun name="mime-content-type-parameter">
-<args> content-type parameter
-<p>
-<var>content-type</var> \e$B$N\e(B <var>parameter</var> \e$B$NCM$rJV$9!#\e(B
-</defun>
-
-
-<h2> Content-Type \e$BMs$N2r@O4o\e(B
-<node> Content-Type parser
-<p>
-<defun name="mime-parse-Content-Type">
- <args> string
-<p>
-<var>string</var> \e$B$r\e(B content-type \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-Content-Type">
-<p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Type \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-<p>
-Content-Type \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-</defun>
-
-
-<h2> Content-Type \e$B$K4X$9$kM-MQ$J4X?t\e(B
-<node> Content-Type utility
-<p>
-<defun name="mime-type/subtype-string">
- <args> type <opts> subtype
-<p>
-<var>type</var> \e$B$H\e(B <var>subtype</var> \e$B$+$i\e(B type/subtype \e$B7A<0$NJ8;zNs$rJV\e(B
-\e$B$9!#\e(B
-</defun>
-
-
-<h1> Content-Disposition \e$BMs$N>pJs\e(B
-<node> Content-Disposition
-<p>
-<concept>Content-Disposition \e$BMs\e(B</concept> \e$B$O\e(B entity \e$B$NI=<($d\e(B file \e$BL>$J$I\e(B
-\e$B$NB0@-$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#\e(B
-
-<rfc number="2183" type="Standards Track"
- author="S. Dorner, K. Moore and R. Troost"
- title="Communicating Presentation Information in
- Internet Messages: The Content-Disposition Header"
- date="August 1997">
-<p>
-FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Disposition
-\e$BMs$N2r@O7k2L$r3JG<$9$k9=B$BN\e(B
-<concept>mime-content-disposition</concept> \e$B$rDs6!$7$^$9!#\e(B
-
-
-<h2> mime-content-disposition \e$B9=B$BN\e(B
-<node> mime-content-disposition
-<p>
-<define type="Structure" name="mime-content-disposition">
-<p>
-Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B
-<p>
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B <code>mime-content-disposition-\e$BMWAGL>\e(B</code> \e$B$H\e(B
-\e$B$$$&L>A0$N;2>H4X?t$rMQ$$$k!#\e(B
-<p>
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-<vl>
-<dt>disposition-type<dd>disposition-type (symbol).
-</dd>
-<dt>parameters<dd>Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-</dd>
-</vl>
-</define>
-
-<defun name="mime-content-disposition-parameter">
-<args> content-disposition parameter
-<p>
-<var>content-disposition</var> \e$B$N\e(B <var>parameter</var> \e$B$NCM$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-content-disposition-filename">
-<args> content-disposition
-<p>
-<var>content-disposition</var> \e$B$N\e(B filename \e$B$NCM$rJV$9!#\e(B
-</defun>
-
-
-<h2> Content-Disposition \e$BMs$N2r@O4o\e(B
-<node> Content-Disposition parser
-<p>
-<defun name="mime-parse-Content-Disposition">
- <args> string
-<p>
-<var>string</var> \e$B$r\e(B content-disposition \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-Content-Disposition">
-<p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Disposition \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-<p>
-Content-Disposition \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-</defun>
-
-
-<h1> \e$BId9f2=K!\e(B
-<node> Content-Transfer-Encoding
-<p>
-<concept>Content-Transfer-Encoding \e$BMs\e(B</concept> \e$B$O\e(B entity \e$B$NId9f2=K!$r5-\e(B
-\e$B=R$9$k$?$a$N$b$N$G$9!#\e(B
-<p>
-FLIM \e$B$G$O\e(B Content-Transfer-Encoding \e$BMs$r9=J82r@O$9$k4X?t$rDs6!$7$^$9!#$3\e(B
-\e$B$l$i$N4X?t$O\e(B Content-Transfer-Encoding \e$BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#\e(B
-<p>
-\e$B$^$?!"\e(BContent-Transfer-Encoding \e$B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs\e(B
-\e$B6!$5$l$^$9!#\e(B
-
-
-<h2> Content-Transfer-Encoding \e$BMs$N2r@O4o\e(B
-<node> Content-Transfer-Encoding parser
-<p>
-<defun name="mime-parse-Content-Transfer-Encoding">
- <args> string
-<p>
-<var>string</var> \e$B$r\e(B content-transfer-encoding \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-</defun>
-
-<defun name="mime-read-Content-Transfer-Encoding">
- <opts>default-encoding
-<p>
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Transfer-Encoding \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$r\e(B
-\e$BJV$9!#\e(B
-<p>
-Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B
-<var>default-encoding</var> \e$B$rJV$9!#\e(B
-</defun>
-
-
-<h2> \e$BNN0h$NId9f2=!&I|9f2=\e(B
-<node> Region encoder/decoder
-<p>
-<defun name="mime-encode-region">
- <args> start end encoding
-<p>
-Encode region <var>start</var> to <var>end</var> of current buffer
-using <var>encoding</var>.
-</defun>
-
-<defun name="mime-decode-region">
- <args> start end encoding
-<p>
-Decode region <var>start</var> to <var>end</var> of current buffer
-using <var>encoding</var>.
-</defun>
-
-<defvar name="mime-encoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to encode region.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code> or
-<code>(STRING . nil)</code>. <var>string</var> is
-content-transfer-encoding. <code>function</code> is region encoder
-and <code>nil</code> means not to encode.
-</defvar>
-
-<defvar name="mime-decoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to decode region.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code> or
-<code>(STRING . nil)</code>. <var>string</var> is
-content-transfer-encoding. <code>function</code> is region decoder
-and <code>nil</code> means not to decode.
-</defvar>
-
-
-<h2> \e$BJ8;zNs$NId9f2=!&I|9f2=\e(B
-<node> String encoder/decoder
-<p>
-<defun name="mime-decode-string">
- <args> string encoding
-<p>
-<var>string</var> \e$B$r\e(B <var>encoding</var> \e$B$H$7$FI|9f$7$?7k2L$rJV$7$^$9!#\e(B
-</defun>
-
-<defvar name="mime-string-decoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to decode string.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code>.
-STRING is content-transfer-encoding.
-FUNCTION is string decoder.
-</defvar>
-
-
-<h2> File \e$B$NId9f2=!&I|9f2=\e(B
-<node> File encoder/decoder
-<p>
-<defun name="mime-insert-encoded-file">
- <args> filename encoding
-<p>
-Insert file <var>FILENAME</var> encoded by <var>ENCODING</var> format.
-</defun>
-
-<defun name="mime-write-decoded-region">
- <args> start end filename encoding
-<p>
-Decode and write current region encoded by <var>encoding</var> into
-<var>filename</var>.
-<p>
-<var>start</var> and <var>end</var> are buffer positions.
-</defun>
-
-<defvar name="mime-file-encoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to insert encoded file.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code>. STRING is
-content-transfer-encoding. FUNCTION is function to insert encoded
-file.
-</defvar>
-
-<defvar name="mime-file-decoding-method-alist">
-<p>
-Alist of encoding vs. corresponding method to write decoded region to
-file.
-<p>
-Each element looks like <code>(STRING . FUNCTION)</code>. STRING is
-content-transfer-encoding. FUNCTION is function to write decoded
-region to file.
-</defvar>
-
-
-<h1> Header \e$B$N\e(B network \e$BI=8=\e(B
-<node> encoded-word
-<p>
-encoded-word \e$B$O\e(B header \e$B$GHs\e(B <dref>ASCII</dref> \e$BJ8;z$rI=8=$9$k$?$a$N7A\e(B
-\e$B<0$G!"\e(B<concept>RFC 2047</concept> \e$B$GDj5A$5$l$F$$$^$9!#\e(B
-<p>
-<rfc number="2047" type="Standards Track" author="K. Moore"
- title="MIME (Multipurpose Internet Mail Extensions) Part
- Three: Message Header Extensions for Non-ASCII Text"
- date="November 1996" obsolete="1521,1522,1590">
-<p>
-\e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B
-<dref>ASCII</dref> \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B
-<p>
-FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
-
-
-<h2> Header \e$B$NId9f2=!&I|9f2=\e(B
-<node> Header encoder/decoder
-<p>
-<defun name="eword-encode-header">
- <opts> code-conversion separator
-<p>
-Decode MIME encoded-words in header fields.
-<p>
-If <var>code-conversion</var> is <code>nil</code>, it decodes only
-encoded-words. If it is mime-charset, it decodes non-ASCII bit
-patterns as the mime-charset. Otherwise it decodes non-ASCII bit
-patterns as the default-mime-charset.
-<p>
-If <var>separator</var> is not nil, it is used as header separator.
-</defun>
-
-<defun name="eword-encode-header">
- <opts> code-conversion
-<p>
-Encode header fields to network representation, such as MIME
-encoded-word.
-<p>
-It refer variable <code>eword-field-encoding-method-alist</code>.
-</defun>
-
-
-<h1> \e$B0lHL@_Dj\e(B
-<node> custom
-<p>
-<define type="group" name="mime">
-<p>
-MIME \e$B4XO"5!G=$K4X$9$k\e(B group.
-<p>
-<code>mail</code> \e$B$H\e(B <code>news</code> \e$B$KB0$9$k!#\e(B
-</define>
-
-<defvar name="default-mime-charset">
-<p>
-\e$BE,@Z$J\e(B <dref>MIME charset</dref> \e$B$,8+$D$+$i$J$+$C$?>l9g$KMQ$$$i$l$k\e(B
-MIME charset.
-<p>
-\e$BK\Mh$O\e(B APEL \e$B$NJQ?t$G$"$k!#\e(B
-</defvar>
-
-<defvar name="mime-temp-directory">
-<p>
-MIME \e$B5!G=$K4X$9$k<BAu$,0l;~E*$K;HMQ$9$k\e(B file \e$B$r:n@.$9$k\e(B directory.
-<p>
-\e$B4D6-JQ?t\e(B <code>MIME_TMP_DIR</code>, <code>TM_TMP_DIR</code>,
-<code>TMPDIR</code>, <code>TMP</code> \e$B$b$7$/$O\e(B <code>TEMP</code> \e$B$,@_Dj\e(B
-\e$B$5$l$F$$$?>l9g!"$=$l$r=i4|CM$H$7$FMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B
-<code>"/tmp/"</code> \e$B$rMQ$$$k!#\e(B
-</defvar>
-
-
-<h1> \e$BIUO?\e(B
-<node> Appendix
-
-<h2> \e$BMQ8l\e(B
-<node> Glossary
-
-<h3> 7bit
-<node> 7bit
-<p>
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 127 \e$B$N@0?t$r;X$9!#\e(B
-<p>
-0 \e$B$+$i\e(B 127 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``7bit \e$B$N\e(B data'' \e$B$H8F\e(B
-\e$B$V!#\e(B
-<p>
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31 \e$B$*$h$S\e(B 127 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=8=$5$l$k6uGr\e(B
-\e$B$H\e(B 33 \e$B$+$i\e(B 126 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r\e(B ``7bit \e$B$NJ8\e(B
-\e$B;zNs\e(B'' \e$B$H8F$V!J$3$l$O\e(B <dref>ISO 2022</dref> \e$B$N!V\e(B7 \e$BC10L7O!W$HF1MM!K!#\e(B
-<p>
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B <dref>MTA</dref> \e$B$O\e(B 7bit \e$B$N\e(B data \e$B$rE>Aw$G$-$k$N$G!"\e(B
-7bit \e$B$N\e(B data \e$B$O\e(B <dref>Quoted-Printable</dref> \e$B$d\e(B <dref>Base64</dref>
-\e$B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$k!#\e(B
-<p>
-\e$B$7$+$7!"\e(B7bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($J$$!#$J$<$J$i!"#19T\e(B
-\e$B$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+\e(B
-\e$B$i$G$"$k!#$A$J$_$K!"\e(B<dref>RFC 821</dref> \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998
-byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$k!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-\e(B
-\e$B$N$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B
-encode\e$B$9$kI,MQ$,$"$k!#\e(B
-
-
-<h3> 8bit
-<node> 8bit
-<p>
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 255 \e$B$N@0?t$r;X$9!#\e(B
-<p>
-0 \e$B$+$i\e(B 255 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``8bit \e$B$N\e(B data'' \e$B$H8F\e(B
-\e$B$V!#\e(B
-<p>
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31, 127 \e$B$*$h$S\e(B 128 \e$B$+$i\e(B 159 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$G\e(B
-\e$BI=8=$5$l$k6uGr$H\e(B 33 \e$B$+$i\e(B 126 \e$B$H\e(B 160 \e$B$+$i\e(B 255 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i\e(B
-\e$B$J$kJ8;zNs$N$3$H$r\e(B ``8bit \e$B$NJ8;zNs\e(B'' \e$B$H8F$V!J$3$l$O\e(B <dref>ISO
-2022</dref> \e$B$N!V\e(B8 \e$BC10L7O!W$HF1MM!K!#\e(B
-<p>
-<dref>iso-8859-1</dref> \e$B$d\e(B <dref>euc-kr</dref> \e$B$H$$$C$?Id9f2=J8;z=89g\e(B
-\e$B$O\e(B 8bit \e$B$NJ8;zNs$G$"$k!#\e(B
-<p>
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B <dref>MTA</dref> \e$B$O\e(B <dref>7bit</dref> \e$B$N\e(B data \e$B$7\e(B
-\e$B$+E>Aw$G$-$J$$$N$G!"$=$&$7$?\e(B MTA \e$B$r7PM3$9$k>l9g!"\e(B
-<dref>Quoted-Printable</dref> \e$B$d\e(B <dref>Base64</dref> \e$B$H$$$C$?JQ49$r9T\e(B
-\e$B$o$J$/$F$O$J$i$J$$!#\e(B
-<p>
-\e$B$7$+$7!":G6a$G$O\e(B 8bit \e$B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k\e(B MTA \e$B$bEP>l$7\e(B
-\e$B$F$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$?!#\e(B
-<p>
-\e$B$7$+$7!"\e(B8bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($J$$!#$J$<$J$i!"#19T\e(B
-\e$B$ND9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+\e(B
-\e$B$i$G$"$k!#$A$J$_$K!"\e(B<dref>RFC 821</dref> \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998
-byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$k!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-\e(B
-\e$B$N$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B
-encode\e$B$9$kI,MQ$,$"$k!#\e(B
-<p>
-\e$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,\e(B 999 byte \e$B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k\e(B
-data \e$B$O\e(B <a node="binary"><concept>binary</concept></a> \e$B$H8F$V$3$H$K$9\e(B
-\e$B$k!#\e(B
-<p>
-\e$B$A$J$_$K!"\e(B7bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B 8bit \e$B$G$bI=8=$G$-$k!#$h$C$F!"\e(B
-``8bit'' \e$B$H8@$C$?>l9g!"#19T$,\e(B 998 byte \e$B0J2<$NG$0U$N\e(B data \e$B$r;X$9$3$H$,\e(B
-\e$B$"$k!#\e(B
-
-
-<h3> ASCII
-<node> ASCII
-<p>
-\e$B%"%a%j%+O"K.$G;H$o$l$kJ8;z$rId9f2=$7$?\e(B<dref>\e$BId9f2=J8;z=89g\e(B</dref>\e$B!#\e(B
-A-Z, a-z \e$B$N\e(B Latin \e$BJ8;z$H?t;z!"4v$D$+$N5-9f$+$i$J$k!#\e(BISO 646 \e$B$N0l$D$G!"\e(B
-\e$B8=:_$O9q:]4p=`HG\e(B (IRV) \e$B$K$J$C$F$$$k!#\e(B
-
-<standard abbrev="ASCII" title-en="Coded Character Set -- 7-Bit
- American Standard Code for Information Interchange"
- number="ANSI X3.4" year="1986">
-
-
-<h3> Base64
-<node> Base64
-<p>
-<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k\e(B <dref>MIME</dref> \e$B$K$*$1$k\e(B <a
-node="binary">binary data</a> \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
-<p>
-\e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B
-<dref>ASCII</dref> 4 \e$BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"\e(B4 \e$BJ8;z$K$J$i$J$1$l$P\e(B
-<concept>pad</concept> \e$B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K\e(B
-<p>
-\e$B$3$N\e(B 65 \e$B<oN`$NJ8;z$O\e(B ASCII \e$B$H\e(B EBCDIC \e$B$N6&DLItJ,$+$iA*$P$l$F$*$j!"\e(B
-Internet \e$B0J30$N\e(B network \e$B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5\e(B
-\e$B$l$F$$$k!#\e(B
-
-
-<h3> binary
-<node> binary
-<p>
-\e$BG$0U$N\e(B byte \e$BNs$r\e(B <concept>binary</concept> \e$B$H8F$V!#\e(B
-<p>
-<dref>8bit</dref> \e$B$H0[$J$k$N$O\e(B data \e$B$K9T$N9=B$$r2>Dj$7$J$$$3$H$G$"$k!#\e(B
-<p>
-\e$B$^$?!"9T$N9=B$$,$"$C$F$b!"\e(B999 byte \e$B0J>e$+$i$J$k9T$,$"$k>l9g$b\e(B binary
-\e$B$H8F$V$3$H$K$9$k!#\e(B
-<p>
-\e$B$A$J$_$K!"\e(B<dref>7bit</dref> \e$B$d\e(B 8bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B binary \e$B$G$bI=\e(B
-\e$B8=$G$-$k!#$h$C$F!"\e(B<concept>binary data</concept> \e$B$H8@$C$?>l9g!"G$0U$N\e(B
-data \e$B$r;X$9$3$H$,$"$k!#\e(B
-
-
-<h3> Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
-<node> Coded character set
-<p>
-\e$BJ8;z$H\e(B byte \e$BNs$H#1BP#1$KBP1~IU$1$k[#Kf$G$J$$5,B'$N=89g!#\e(B
-
-
-<h3> media-type
-<node> media-type
-<p>
-<dref>MIME</dref> \e$B$K$*$1$k\e(B <dref>entity</dref> \e$B$N<oN`!#\e(B
-<concept>primary-type</concept> \e$B$H\e(B <concept>subtype</concept> \e$B$+$i$J$k!#\e(B
-<dref>RFC 2046</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
-<p>
-primary-type \e$B$OI8=`$G$O\e(B
-
-<ul>
-<li><concept>text</concept>
-</li>
-<li><concept>image</concept>
-</li>
-<li><concept>audio</concept>
-</li>
-<li><concept>video</concept>
-</li>
-<li><concept>application</concept>
-</li>
-<li><a node="multipart"><concept>multipart</concept></a>
-</li>
-<li><concept>message</concept>
-</ul>
-
-<noindent>
-\e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B application/octet-stream, audio/basic,
-image/jpeg, <dref>multipart/mixed</dref>, <dref>text/plain</dref>,
-video/mpeg \e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
-
-<memo title="\e$BCm0U\e(B">
-<p>
-\e$B$3$3$G$O!"\e(Btext/plain \e$B$J$I$N\e(B type/subtype \e$B$NAH$r$7$P$7$P\e(B
-<concept>primary-type/subtype</concept> \e$B$H=q$/!#\e(B
-</memo>
-
-<p>
-media-type \e$B$O!"\e(BRFC 2046 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G\e(B
-\e$B$-$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B <a
-href="ftp://ftp.isi.edu/in-notes/iana/assignments/media-types">MEDIA
-TYPES</a> \e$B$G;2>H$G$-$k!#\e(B
-<p>
-\e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B
-<concept>x-token</concept> \e$B$rMQ$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b$N$r\e(B
-\e$B;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"EvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J\e(B
-media-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3\e(B
-\e$B$H!#\e(B
-<p>
-<cf node="Content-Type">
-
-
-<h3> message
-<node> message
-<p>
-\e$B$3$3$G$O\e(B mail \e$B$H\e(B news \e$B5-;v$NAm>N$H$7$FMQ$$$k!#\e(B
-
-
-<h3> MIME
-<node> MIME
-<p>
-<concept>Multipurpose Internet Mail Extensions</concept> \e$B$NN,$G!"\e(B
-Internet \e$B$N\e(B mail \e$B$d\e(B news \e$B$G\e(B <a node="us-ascii">us-ascii plain text</a>
-\e$B0J30$NJ8;z$r;H$&$?$a$N\e(B <dref>RFC 822</dref> \e$B$KBP$9$k3HD%!#\e(B
-<p>
-RFC 2045 \e$B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'\e(B
-<p>
-STD 11, RFC 822 \e$B$O!"\e(BUS-ASCII message header \e$B$K4X$7$FHs>o$K>\:Y$K5,Dj$7\e(B
-\e$B$?\e(B message \e$BI=8=\e(B protocol \e$B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K\e(B flat \e$B$J\e(B
-US-ASCII text \e$B$N$_$KN1$^$j!"\e(Bmessage \e$B$NFbMF$d\e(B message body \e$B$K4X$9$k5,Dj\e(B
-\e$B$O$J$5$l$F$$$J$$!#\e(BMultipurpose Internet Mail Extensions, \e$B$"$k$$$O\e(B MIME
-\e$B$HAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K\e(B message \e$B$N\e(B
-\e$B7A<0$r:FDj5A$7$?!'\e(B
-
-<ol>
-<li>\e$BJ8=q\e(B message body \e$B$K$*$1$k\e(B US-ASCII \e$B0J30$NJ8;z=89g\e(B
-</li>
-<li>\e$BHsJ8=q\e(B message body
-</li>
-<li>\e$BJ#?t$NItJ,$+$i$J$k\e(B message body
-</li>
-<li>US-ASCII \e$B0J30$NJ8;z=89g$+$i$J$kJ8=q\e(B header \e$B>pJs\e(B
-</ol>
-
-<p>
-<dref>RFC 2045</dref>, <dref>RFC 2046</dref>, <a
-node="encoded-word">RFC 2047</a>, <dref>RFC 2048</dref>, <dref>RFC
-2049</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
-
-
-<h3> MIME charset
-<node> MIME charset
-<p>
-<dref>Content-Type</dref> \e$BMs$d\e(B <dref>encoded-word</dref> \e$B$N\e(B charset
-parameter \e$B$GMQ$$$i$l$kEPO?$5$l$?\e(B<a node="Coded character set">\e$BId9f2=J8\e(B
-\e$B;z=89g\e(B</a>\e$B!#\e(B
-<p>
-<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k!#\e(B
-<p>
-iso-2022-jp \e$B$d\e(B euc-kr \e$B$O$=$N#1$D!#\e(B
-
-
-<h3> MTA
-<node> MTA
-<p>
-<concept>Message Transfer Agent</concept> \e$B$NN,$G!"\e(Bqmail \e$B$d\e(B sendmail \e$B$J\e(B
-\e$B$I$N\e(B mail \e$BG[Aw\e(B program \e$B$H\e(B inn \e$B$J$I$N\e(B news server \e$B$NAm>N!#\e(B
-<p>
-<cf node="MUA">
-
-
-<h3> MUA
-<node> MUA
-<p>
-<concept>Message User Agent</concept> \e$B$NN,$G!"\e(Bmail reader \e$B$H\e(B news
-reader \e$B$NAm>N!#\e(B
-<p>
-<cf node="MTA">
-
-
-<h3> Quoted-Printable
-<node> Quoted-Printable
-<p>
-<dref>RFC 2045</dref> \e$B$GDj5A$5$l$F$$$k\e(B <dref>MIME</dref> \e$B$K$*$1$k\e(B
-<dref>binary data</dref> \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B
-<p>
-`=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16
-\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(B<dref>ASCII</dref> \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B
-<dref>Base64</dref> \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B
-<p>
-\e$B$7$+$7$J$,$i!"\e(BEBCDIC \e$B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"\e(BEBCDIC \e$B$rMxMQ$7\e(B
-\e$B$F$$$k\e(B network \e$B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"\e(BBase64 \e$B$KHf$Y$F0BA4@-$O\e(B
-\e$BDc$$!#\e(B
-
-
-<h3> RFC 822
-<node> RFC 822
-<p>
-Internet mail \e$B$N<g$K\e(B <concept>message header</concept> \e$B$K4X$9$k7A<0$K\e(B
-\e$B4X$9$kI8=`$rDj$a$F$$$k\e(B RFC.
-
-<memo>
-<p>
-news message \e$B$b$3$l$K=`$8$F$$$k$N$G!"\e(B<concept>Internet mail</concept>
-\e$B$H=q$/$h$j$b!"\e(B<concept>Internet message</concept> \e$B$H=q$$$?J}$,NI$$$+$b\e(B
-\e$B$7$l$J$$!#\e(B
-</memo>
-
-<rfc number="822" type="STD 11" author="D. Crocker" title="Standard
- for the Format of ARPA Internet Text Messages"
- date="August 1982">
-
-
-<h3> RFC 1036
-<node> RFC 1036
-<p>
-USENET \e$B$G$N\e(B message \e$B$N7A<0$rDj$a$?\e(B RFC. <dref>RFC 822</dref> \e$B$N\e(B
-subset \e$B$K$J$C$F$$$k!#\e(BInternet \e$B$NI8=`$G$O$J$$$,!"\e(BUSENET \e$B0J30$N\e(B netnews
-\e$B$G$b$3$l$K=`$8$F$$$k$b$N$,B?$$!#\e(B
-
-<rfc name="USENET" number="1036" author="M. Horton and R. Adams"
- title="Standard for Interchange of USENET Messages"
- date="December 1987" obsolete="850">
-
-
-<h3> RFC 2045
-<node> RFC 2045
-<p>
-<rfc number="2045" type="Standards Track" author="N. Freed and
- N. Borenstein" title="Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message
- Bodies" date="November 1996" obsolete="1521, 1522,
- 1590">
-
-
-<h3> RFC 2046
-<node> RFC 2046
-<p>
-<rfc number="2046" type="Standards Track" author="N. Freed and
- N. Borenstein" title="Multipurpose Internet Mail
- Extensions (MIME) Part Two: Media Types"
- date="November 1996" obsolete="1521, 1522, 1590">
-
-
-<h3> RFC 2048
-<node> RFC 2048
-<p>
-<rfc number="2048" type="Standards Track" author="N. Freed, J. Klensin
- and J. Postel" title="Multipurpose Internet Mail
- Extensions (MIME) Part Four: Registration Procedures"
- date="November 1996" obsolete="1521, 1522, 1590">
-
-
-<h3> RFC 2049
-<node> RFC 2049
-<p>
-<rfc number="2049" type="Standards Track" author="N. Freed and
- N. Borenstein" title="Multipurpose Internet Mail
- Extensions (MIME) Part Five: Conformance Criteria and
- Examples" date="November 1996" obsolete="1521, 1522,
- 1590">
-
-
-<h3> plain text
-<node> plain text
-<p>
-\e$B=qBN$dAHHG$K4X$9$k>pJs$r;}$?$J$$\e(B<a node="Coded character set">\e$BJ8;zId9f\e(B
-</a>\e$B$N$_$GI=8=$5$l$k\e(B text \e$B>pJs!#\e(B<cf node="text/plain">
-
-
-<h3> us-ascii
-<node> us-ascii
-<p>
-\e$B%"%a%j%+O"K.$J$I$G;H$o$l$k1Q8l$J$I$rI=8=$9$k$?$a$N\e(B <dref>MIME
-charset</dref> \e$B$N#1$D!#\e(B
-<p>
-<dref>ASCII</dref> \e$B$N$_$+$i$J$j\e(B ISO 2022 \e$B$K$h$kId9f3HD%$O5v$5$l$J$$!#\e(B
-<p>
-Internet message \e$B$K$*$1$kI8=`$N\e(B<a node="Coded character set">\e$BId9f2=J8\e(B
-\e$B;z=89g\e(B</a>\e$B$G$"$j!"L@<(E*$K\e(B MIME charset \e$B$,<($5$l$J$$>l9g$O86B'$H$7$F\e(B
-<concept>us-ascii</concept> \e$B$,;H$o$l$k!#\e(B
-<p>
-\e$B$^$?!"\e(B<dref>RFC 822</dref> \e$B$K$*$1$k\e(B <concept>ASCII</concept>
-\e$B$O\e(B us-ascii \e$B$G$"$k!#\e(B
-
-
-<h2> bug \e$BJs9p$N;EJ}\e(B
-<node> Bug report
-<p>
-FLIM \e$B$N%P%0$r8+$D$1$?$i!"0J2<$N\e(B address \e$B$K\e(B mail \e$B$rAw$C$F$/$@$5$$!'\e(B
-
-<ul>
-<li> \e$BF|K\8l\e(B <mail>bug-tm-ja@chamonix.jaist.ac.jp</mail>
-<li> \e$B1Q8l\e(B <mail>bug-tm-en@chamonix.jaist.ac.jp</mail>
-</ul>
-
-<p>
-\e$BC"$7!"$"$^$j$K$b8E$$HG$K4X$9$kJs9p$O4?7^$5$l$^$;$s!#8E$$HG$N\e(B bug \e$B$O!"\e(B
-\e$B?7$7$$HG$G$O<#$C$F$$$k$+$b$7$l$^$;$s!#$^$:!":G?7HG$G3NG'$7$F$_$^$7$g$&!#\e(B
-<p>
-\e$B$=$l$+$i!"E,@Z$JJs9p$r$7$^$7$g$&!#C1$K!V$&$^$/F0$+$J$$!W$H8@$o$l$F$b$I\e(B
-\e$B$&$$$&>u67$J$N$+$O$5$C$Q$jH=$j$^$;$s!#:GDc8B!"\e(BOS, emacs, APEL, FLIM,
-SEMI, \e$B;H$C$F$$$k\e(B MUA \e$B$N<oN`$*$h$SHG!"@_Dj$r=q$/I,MW$,$"$j$^$9!#$^$?!"\e(B
-error \e$B$,5/$C$F$$$k>l9g$O\e(B backtrace \e$B$rAw$k$3$H$b=EMW$G$9!#\e(B<cf
-file="emacs" node="Bugs">
-<p>
-\e$B$^$?!"\e(Bbug \e$B$OBgDqJ#?t$N?M$,Ax6x$9$k$b$N$G$9!J$=$&$G$J$1$l$P!"\e(Bbug \e$B$G$O$J\e(B
-\e$B$$2DG=@-$,$"$j$^$9!K!#$@$+$i!":n<T$KD>@\\e(B mail \e$B$rAw$k$H:n<T$OF1$8\e(B mail
-\e$B$r2?DL$b=q$/1)L\$K$J$j$^$9!#$@$+$i!"I,$:\e(B bug \e$BJs9p$O>e5-$N\e(B address \e$B$KAw$C\e(B
-\e$B$F$/$@$5$$!#\e(B
-
-<p>
-tm ML \e$B$G$O\e(B FLIM \e$B$N%P%0>pJs$N8r49$d:G?7HG$NG[I[!"\e(BFLIM \e$B$N2~NI$K4X$9$k5D\e(B
-\e$BO@$r9T$J$C$F$$$^$9!#\e(Btm ML \e$B$K;22C$7$?$$J}$O\e(B
-
-<ul>
-<li> \e$BF|K\8l\e(B <mail>tm-ja-help@chamonix.jaist.ac.jp</mail>
-<li> \e$B1Q8l\e(B <mail>tm-en-help@chamonix.jaist.ac.jp</mail>
-</ul>
-
-<noindent>
-\e$B$K6u$N\e(B mail \e$B$rAw$C$F2<$5$$!#\e(B
-
-
-<h2> CVS \e$B$K$h$k3+H/\e(B
-<node> CVS
-<p>
-FLIM \e$B$N\e(B file \e$B$O\e(B CVS \e$B$r;H$C$F4IM}$5$l$F$$$^$9!#$3$N$?$a!"0J2<$NJ}K!$G:G\e(B
-\e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
-
-<verb>
-(0) cvs login
-
- % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
- login
-
- CVS password: [CR] # NULL string
-
-(1) checkout
-
- % cvs -d :pserver:anonymous@chamonix.jaist.ac.jp:/hare/cvs/root \
- checkout [-r TAG] flim
-</verb>
-
-<p>
-CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
-
-<ul>
-<li> <mail>cvs@chamonix.jaist.ac.jp</mail>
-</ul>
-
-<noindent>
-\e$B$^$G!"\e(Baccount \e$BL>$H\e(B UNIX \e$B$N\e(B passwd \e$B$HF1$87A<0$N\e(B crypt \e$B2=$5$l$?\e(B password
-\e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
-
-
-<h2> \e$BNr;K\e(B
-<node> History
-<p>
-FLIM \e$B$N\e(B code \e$B$N:G8E$NItJ,$O\e(B \e$B1]JB\e(B \e$B;LCR\e(B \e$B;a$,=q$$$?\e(B <file>mime.el</file>
-\e$B$K5/8;$7$^$9!#$3$N>.$5$J\e(B program \e$B$O\e(B Nemacs \e$B$GF0:n$9$k\e(B iso-2022-jp \e$B$N\e(B
-B-encoding \e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B
-<p>
-\e$B$=$N8e!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>mime.el</file> \e$B$r85$K\e(B
-<file>tiny-mime.el</file> \e$B$H$$$&%W%m%0%i%`$r=q$-$^$9!#$3$l$O!"\e(BNemacs
-\e$B$H\e(B Mule \e$B$GF0:n$9$k\e(B encoded-word \e$B$NId9f2=!&I|9f2=%W%m%0%i%`$G$7$?!#\e(B
-<file>tiny-mime.el</file> \e$B$O\e(B B-encoding \e$B$@$1$G$J$/\e(B Q-encoding \e$B$b\e(B
-support \e$B$7!"$^$?!"\e(BMULE \e$B$G07$&$3$H$,$G$-$k$5$^$6$^$J\e(B <dref>MIME
-charset</dref> \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(BNemacs \e$B$H\e(B Mule \e$B$N\e(B
-\e$BAPJ}$r\e(B support \e$B$9$k$?$a$KMQ$$$i$l$?%F%/%K%C%/$O8e$K\e(B emu package \e$B$K$^$H\e(B
-\e$B$a$i$l$^$9!#\e(B
-<p>
-\e$B$3$N:"!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B <file>tiny-mime.el</file> \e$B$r$5$^$6$^$J\e(B MUA \e$B$G;H$&\e(B
-\e$B$?$a$N@_Dj=8$bG[I[$7$F$$$^$7$?$,!"$=$l$i$O8e$K\e(B
-<file>tiny-mime.el</file> \e$B$H$H$b$K#1$D$N\e(B package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$\e(B
-\e$B$&L>A0$GG[I[$5$l$^$9!#\e(B
-<p>
-\e$B<i2,\e(B \e$BCNI'\e(B \e$B$O$d$,$F!"\e(BMIME message \e$B$r1\Mw$9$k$?$a$N%W%m%0%i%`$G$"$k\e(B
-<file>tm-body.el</file> \e$B$r=q$-$^$9!#$3$l$O!"$9$0$K\e(B
-<file>tm-view.el</file> \e$B$H$$$&L>A0$KJQ$o$j$^$7$?$,!"$d$,$F!"$3$l$,\e(B
-<file>tiny-mime.el</file> \e$B$KBe$o$C$F!"\e(Btm \e$B$NCf3K$H$J$j$^$9!#\e(B
-<p>
-<file>tm-view.el</file> \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,\e(B
-\e$B$"$j$^$9!#$3$NL\E*$N$?$a$K!"\e(BMEL \e$B$,@0Hw$5$l$O$8$a$^$7$?!#\e(BBase64 \e$B$K4X$7\e(B
-\e$B$F$O\e(B <file>tiny-mime.el</file> \e$B$N\e(B code \e$B$,0\$5$l!"$^$?!"?7$?$K\e(B
-Quoted-Printable \e$B$N\e(B code \e$B$,DI2C$5$l$^$7$?!#$3$l$i$,\e(B
-<file>mel-b.el</file> \e$B$H\e(B <file>mel-q.el</file> \e$B$K$J$j$^$7$?!#\e(B
-<p>
-\e$B$^$?!"8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B uuencode \e$BMQ$N\e(B <file>mel-u.el</file> \e$B$,\e(B
-\e$BDI2C$5$l!"$=$N8e$K!">.NS\e(B \e$B=$J?\e(B \e$B;a$K$h$C$F\e(B x-gzip64 \e$BMQ$N\e(B
-<file>mel-g.el</file> \e$B$,DI2C$5$l$^$7$?!#\e(B
-<p>
-tm \e$B$G$O8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B <file>tiny-mime.el</file> \e$B$N:F<BAu$,9T\e(B
-\e$B$o$l!"$3$N2aDx$G!"\e(BSTD 11 \e$B$N\e(B parser \e$B$,=q$+$l$^$7$?!#$3$l$O!"8=:_$N\e(B
-<file>std11.el</file> \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B
-<file>tiny-mime.el</file> \e$B$OI|9f2=$r9T$&\e(B <file>tm-ew-d.el</file> \e$B$HId\e(B
-\e$B9f2=$r9T$&\e(B <file>tm-ew-e.el</file> \e$B$KJ,$1$i$l$^$7$?!#$3$NN><T$,8=:_$N\e(B
-<file>eword-decode.el</file> \e$B$H\e(B <file>eword-encode.el</file> \e$B$N@hAD$K\e(B
-\e$BEv$?$j$^$9!#\e(B
-<p>
-\e$B8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$i$K$h$C$F\e(B tm \e$B$NA4LL=q$-49$(:n6H$,9T$o$l!"$3$N2aDx$G!"\e(B
-tm \e$B$O\e(B APEL, MEL, SEMI, EMH, RMAIL-MIME, Gnus-MIME \e$B$J$I$KJ,$1$i$l$^$7$?!#\e(B
-\e$B$3$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B
-<p>
-\e$B8e$K!"\e(BAPEL \e$B$+$i\e(B <file>std11.el</file> \e$B$,0\$5$l!"$^$?!"\e(B
-<file>mailcap.el</file>, <file>eword-decode.el</file> \e$B$*$h$S\e(B
-<file>eword-encode.el</file> \e$B$,\e(B SEMI \e$B$+$i0\$5$l!"\e(Bpackage \e$B$NL>A0$,\e(B FLIM
-\e$B$H$J$j$^$9!#\e(B
-<p>
-\e$B$3$ND>A0$+$iEDCf\e(B \e$BE/\e(B \e$B;a$,$h$j\e(B RFC \e$B$KCi<B$J<BAu$r=q$-;O$a!"$3$l$O!"8=:_!"\e(B
-FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
-
-
-<h1> \e$B35G0:w0z\e(B
-<node> Concept Index
-
-<cindex>
-
-
-<h1> \e$B4X?t:w0z\e(B
-<node> Function Index
-
-<findex>
-
-
-<h1> \e$BJQ?t:w0z\e(B
-<node> Variable Index
-
-<vindex>
-
-</body>
+++ /dev/null
-\input texinfo.tex
-@setfilename mime-ja.info
-@settitle{FLIM 1.9 MIME \e$B5!G=@bL@=q\e(B}
-@titlepage
-@title FLIM 1.9 MIME \e$B5!G=@bL@=q\e(B
-@author \e$B<i2,\e(B \e$BCNI'\e(B <morioka@@jaist.ac.jp>
-@subtitle 1998/07/01
-@end titlepage
-@node Top, Introduction, (dir), (dir)
-@top FLIM 1.9 MIME \e$B5!G=@bL@=q\e(B
-
-@ifinfo
-
-This file documents MIME features of FLIM, a Internet message
-parsing/encoding library for GNU Emacs.@refill
-
-GNU Emacs \e$BMQ$N\e(B Internet Message \e$B$N2r@O$dId9f2=$K4X$9$k\e(B library \e$B$G$"$k\e(B
-FLIM \e$B$N\e(B MIME \e$B5!G=$K4X$7$F@bL@$7$^$9!#\e(B
-@end ifinfo
-
-@menu
-* Introduction:: FLIM \e$B$C$F2?!)\e(B
-* How to use:: FLIM \e$B$N\e(B MIME \e$B5!G=$N;H$$J}\e(B
-* Entity:: Message \e$B$H\e(B Entity
-* Content-Type:: Content-Type \e$BMs$N>pJs\e(B
-* Content-Disposition:: Content-Disposition \e$BMs$N>pJs\e(B
-* Content-Transfer-Encoding:: \e$BId9f2=K!\e(B
-* encoded-word:: Header \e$B$N\e(B network \e$BI=8=\e(B
-* custom:: \e$B0lHL@_Dj\e(B
-* Appendix:: \e$BIUO?\e(B
-* Concept Index:: \e$B35G0:w0z\e(B
-* Function Index:: \e$B4X?t:w0z\e(B
-* Variable Index:: \e$BJQ?t:w0z\e(B
-@end menu
-
-@node Introduction, How to use, Top, Top
-@chapter FLIM \e$B$C$F2?!)\e(B
-
-FLIM \e$B$O\e(B Internet Message \e$B$NI=8=$dId9f2=$K4X$9$k4pACE*$J5!G=$rDs6!$9$k\e(B
-\e$B$?$a$N\e(B library \e$B$G$9!#\e(B
-
-
-@node How to use, Entity, Introduction, Top
-@chapter FLIM \e$B$N\e(B MIME \e$B5!G=$N;H$$J}\e(B
-
-FLIM \e$B$NDs6!$9$k\e(B MIME \e$B5!G=$r;H$&$?$a$K$O\e(B
-
-@lisp
-(require 'mime)
-@end lisp
-
-@noindent
-\e$B$rI>2A$7$F$/$@$5$$!#\e(B
-
-
-@node Entity, Content-Type, How to use, Top
-@chapter Message \e$B$H\e(B Entity
-@cindex node-id
-@cindex entity-number
-@cindex mime-entity
-@cindex entity
-
-RFC 2045 (@ref{RFC 2045}) \e$B$K$h$l$P!"!V\e(BEntity \e$B$H$$$&8l$O!"\e(Bmessage, \e$B$b$7$/\e(B
-\e$B$O!"\e(Bmultipart entity \e$B$N\e(B body \e$BCf$N#1$D$NItJ,$N!"\e(BMIME \e$B$GDj5A$5$l$?\e(B header
-field \e$B$HFbMF$r;X$9!W$H$J$C$F$$$^$9!#$3$3$G$O!"\e(BMIME \e$B$GDj5A$5$l$?\e(B header
-field \e$B0J30$NA4$F$N\e(B header \e$B$H\e(B body \e$B$r;X$98l$H$7$F\e(B @strong{entity}\e$B$rMQ$$$k\e(B
-\e$B$3$H$K$7$^$9!#\e(B@refill
-
-RFC 2045 \e$B$NDj5A$O!"\e(BMIME message \e$B$,\e(B entity \e$B$rC10L$H$9$kLZ9=B$$G$"$k$3$H$r\e(B
-\e$B<($7$F$$$^$9!#\e(Bmessage \e$B$O2<?^$G<($9$h$&$JLZ$H$J$j!"\e(Bentity \e$B$O$3$NLZ$K$*$1\e(B
-\e$B$k@a$H$J$j$^$9!#$D$^$j!"\e(BMIME \e$B$O\e(B message \e$B$rLZ9=B$$K3HD%$7$?Lu$G$9!#\e(B
-@refill
-
-FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B@strong{mime-entity} \e$B9=B$BN$rMQ$$$^\e(B
-\e$B$9!#0J2<$G$OC1$K\e(B mime-entity \e$B$H8F$V$3$H$K$7$^$9!#\e(B@refill
-
-\e$BA0=R$N$h$&$K!"\e(Bmessage \e$BCf$N3F\e(B entity \e$B$OLZ$N@a$KEv$?$j$^$9$,!"$3$NLZ$K$O\e(B
-\e$B?<$5$HF1$8?<$5$NCf$N=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"\e(B
-@example
-
- \e$B(#(!(!(!($\e(B
- \e$B("\e(B nil \e$B("\e(B
- \e$B(&(!(((!(%\e(B
- \e$B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($\e(B
- \e$B(#(*($\e(B \e$B(#(*($\e(B \e$B(#(*($\e(B
- \e$B("#0("\e(B \e$B("#1("\e(B \e$B("#2("\e(B
- \e$B(&(((%\e(B \e$B(&(((%\e(B \e$B(&(((%\e(B
- \e$B("\e(B \e$B(#(!(!(!(!(+(!(!(!(!($\e(B \e$B("\e(B
- \e$B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($\e(B
- \e$B("\e(B \e$B#0\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#0("("\e(B \e$B#1\e(B.\e$B#1("("\e(B \e$B#1\e(B.\e$B#2("("\e(B \e$B#2\e(B.\e$B#0("\e(B
- \e$B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%\e(B
-@end example
-
-@noindent
-\e$B$N$h$&$K?<$5\e(B n \e$B$N@a$K$OD9$5\e(B n \e$B$N@0?tNs$N@aHV9f$,?6$l$^$9!#$3$l\e(B
-\e$B$r\e(B @strong{entity-number} \e$B$H8F$S$^$9!#\e(Bentity-number \e$B$O\e(B S \e$B<0$H\e(B
-\e$B$7$F$O\e(B @code{(1 2 3)} \e$B$N$h$&$J@0?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#\e(B
-
-mime-entity \e$B$G$O!"$3$l$HF1MM$N\e(B @strong{node-id} \e$B$rMQ$$$^$9!#\e(Bnode-id \e$B$O$A$g\e(B
-\e$B$&$I\e(B entity-number \e$B$r5U$K$7$?%j%9%H$G!"\e(Bentity-number 1.2.3 \e$B$KBP1~$9$k\e(B
-node-id \e$B$O\e(B @code{(3 2 1)} \e$B$G$9!#\e(B@refill
-
-\e$BA0=R$N$h$&$K!"\e(BMIME message \e$B$O\e(B entity \e$B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"\e(B
-\e$B$3$N:,$G$"$k\e(B message \e$BA4BN$b\e(B mime-entity \e$B$GI=8=$9$k$3$H$,$G$-!"\e(Bbuffer
-local \e$BJQ?t\e(B @code{mime-message-structure} \e$B$K3JG<$9$k$3$H$K$7$^$9!#\e(B
-\e$B$=$7$F!"\e(Bentity-number \e$B$d\e(B node-id \e$B$rMQ$$$k$3$H$G\e(B
-@code{mime-message-structure} \e$B$K$*$1$k\e(B entity \e$B$NAjBPE*$J0LCV4X78$r\e(B
-\e$B07$&$3$H$,$G$-$^$9!#\e(B
-
-
-@menu
-* Entity creation:: Entity \e$B$N@8@.\e(B
-* Entity hierarchy:: Entity \e$B3,AX\e(B
-* Entity Attributes:: Entity \e$B$NB0@-\e(B
-* Entity-header:: Entity header \e$B$N>pJs\e(B
-* Entity-content:: Entity \e$B$NFbMF\e(B
-* Entity buffer:: Entity \e$B$N\e(B buffer \e$B$K$h$kI=8=\e(B
-* mm-backend:: Entity \e$B$NI=8=$H<B8=\e(B
-@end menu
-
-@node Entity creation, Entity hierarchy, Entity, Entity
-@section Entity \e$B$N@8@.\e(B
-
-@defun mime-open-entity &optional type location
-
-Open an entity and return it.@refill
-
-@var{type} is representation-type. (cf. @ref{mm-backend}) @refill
-
-@var{location} is location of entity. Specification of it is depended
-on representation-type.
-@end defun
-
-
-@defun mime-parse-buffer &optional buffer type
-
-@var{buffer} \e$B$r\e(B message \e$B$H$7$F9=J82r@O$7!"$=$N7k2L$N\e(B mime-entity \e$B$r\e(B
-@var{buffer} \e$B$N\e(B@code{mime-message-structure} \e$B$K3JG<$9$k!#\e(B@refill
-
-@var{buffer} \e$B$,>JN,$5$l$?>l9g!"8=:_$N\e(B buffer \e$B$r9=J82r@O$9$k!#\e(B@refill
-
-@var{type} \e$B$,;XDj$5$l$?>l9g!"$=$NCM$r@8@.$5$l$k\e(B mime-entity \e$B$NI=>]7?$H$7\e(B
-\e$B$FMQ$$$k!#>JN,$5$l$?>l9g$O\e(B @var{buffer} \e$B$H$J$k!#\e(B(cf. @ref{mm-backend})
-@end defun
-
-
-
-@node Entity hierarchy, Entity Attributes, Entity creation, Entity
-@section Entity \e$B3,AX\e(B
-
-@defvar mime-message-structure
-
-\e$B8=:_$N\e(B buffer \e$B$K$*$1$k\e(B message \e$BA4BN$N\e(B mime-entity \e$B9=B$BN$r3JG<$9$k\e(Bbuffer
-local \e$BJQ?t!#\e(B
-@end defvar
-
-
-@defun mime-entity-children entity
-
-@var{entity} \e$B$K4^$^$l$k\e(B entity \e$B$N\e(B list \e$B$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-parent entity &optional message
-
-@var{entity} \e$B$N?F$N\e(B entity \e$B$rJV$9!#\e(B@refill
-
-@var{message} \e$B$,;XDj$5$l$?>l9g!"$3$l$r:,$H8+Jo$9!#\e(B
-@end defun
-
-
-@defun mime-root-entity-p entity
-
-@var{entity} \e$B$,:,!JB($A!"\e(Bmessage \e$BA4BN!K$G$"$k>l9g$K!"Hs\e(B-@code{nil} \e$B$rJV\e(B
-\e$B$9!#\e(B
-@end defun
-
-
-@defun mime-entity-node-id entity
-
-@var{entity} \e$B$N\e(B node-id \e$B$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-number entity
-
-@var{entity} \e$B$N\e(B entity-number \e$B$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-find-entity-from-number entity-number &optional message
-
-Return entity from @var{entity-number} in @var{message}.@refill
-
-If @var{message} is not specified, @code{mime-message-structure} is
-used.
-@end defun
-
-
-@defun mime-find-entity-from-node-id entity-node-id &optional message
-
-Return entity from @var{entity-node-id} in @var{message}.@refill
-
-If @var{message} is not specified, @code{mime-message-structure} is
-used.
-@end defun
-
-
-
-@node Entity Attributes, Entity-header, Entity hierarchy, Entity
-@section Entity \e$B$NB0@-\e(B
-
-@defun mime-entity-content-type entity
-
-@var{entity} \e$B$N\e(B content-type \e$B$rJV$9!#\e(B(cf. @ref{mime-content-type})
-@end defun
-
-
-@defun mime-entity-content-disposition entity
-
-@var{entity} \e$B$N\e(B content-disposition \e$B$rJV$9!#\e(B
-(cf. @ref{mime-content-disposition})
-@end defun
-
-
-@defun mime-entity-filename entity
-
-@var{entity} \e$B$N\e(B file \e$BL>$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-encoding entity &optional default-encoding
-
-@var{entity} \e$B$N\e(B content-transfer-encoding \e$B$rJV$9!#\e(B
-(cf. @ref{Content-Transfer-Encoding}) @refill
-
-\e$B$b$7!"\e(B@var{entity} \e$B$K\e(B Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O!"\e(B
-@var{default-encoding} \e$B$rJV$9!#$3$l$,;XDj$5$l$J$$>l9g$O!"\e(B@code{"7bit"}
-\e$B$rMQ$$$k!#\e(B
-@end defun
-
-
-@defun mime-entity-cooked-p entity
-
-Return non-nil if contents of @var{entity} has been already
-code-converted.
-@end defun
-
-
-
-@node Entity-header, Entity-content, Entity Attributes, Entity
-@section Entity header \e$B$N>pJs\e(B
-
-@defun mime-fetch-field field-name &optional entity
-
-@var{entity} \e$B$N\e(B header \e$BCf$N\e(B @var{field-name} \e$BMs$N\e(B body \e$B$rJV$9!#\e(B@refill
-
-\e$B7k2L$NJ8;zNs$O\e(B network \e$BI=8=$N$^$^$G$"$k!#\e(B@refill
-
-@var{entity} \e$B$,>JN,$5$l$?>l9g$O!"\e(B@code{mime-message-structure} \e$B$NCM$rMQ\e(B
-\e$B$$$k!#\e(B@refill
-
-@var{field-name} \e$BMs$,B8:_$7$J$$>l9g$O\e(B @code{nil} \e$B$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-field field-name &optional entity
-
-@var{entity} \e$B$N\e(B header \e$BCf$N\e(B @var{field-name} \e$BMs$r9=J82r@O$7$?7k2L$rJV$9!#\e(B
-@refill
-
-\e$B7k2L$N7A<0$OMsKh$K0[$J$k!#Hs9=B$2=Ms$N>l9g$OJ8;zNs$rJV$7!"9=B$2=Ms$N>l9g\e(B
-\e$B$O$=$N7A<0$K=>$C$?\e(B list \e$B$rJV$9!#\e(B@refill
-
-\e$B7k2LCf$NJ8;zNs$O\e(B Emacs \e$B$NFbItI=8=$KJQ49$5$l$k!#\e(B@refill
-
-@var{entity} \e$B$,>JN,$5$l$?>l9g$O!"\e(B@code{mime-message-structure} \e$B$NCM$rMQ\e(B
-\e$B$$$k!#\e(B@refill
-
-@var{field-name} \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-insert-decoded-header entity &optional invisible-fields visible-fields
-
-\e$B8=:_0LCV$K\e(B @var{entity} \e$B$NI|9f$7$?\e(B header \e$B$rA^F~$9$k!#\e(B@refill
-
-@var{invisible-fields} \e$B$H\e(B @var{visible-fields} \e$B$O@55,I=8=$N\e(Blist \e$B$G!"$=$l\e(B
-\e$B$>$l!"I=<($7$?$/$J$$\e(B field \e$BL>$HI=<($7$?$$MsL>$rI=8=$7$?$b$N$G$"$k!#\e(B
-@refill
-
-@var{invisible-fields} \e$B$NMWAG$N$I$l$+$K\e(B match \e$B$7!"$+$D!"\e(B
-@var{visible-fields} \e$B$NMWAG$N$I$l$K$b\e(B match \e$B$7$J$$Ms$OI=<($5$l$J$$!#\e(B
-@end defun
-
-
-
-@node Entity-content, Entity buffer, Entity-header, Entity
-@section Entity \e$B$NFbMF\e(B
-
-@defun mime-entity-content entity
-
-@var{entity} \e$B$NFbMF$N\e(B byte \e$BNs$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-write-entity-content entity filename
-
-Write content of @var{entity} into @var{filename}.
-@end defun
-
-
-@defun mime-write-entity entity filename
-
-Write representation of @var{entity} into @var{filename}.
-@end defun
-
-
-@defun mime-write-entity-body entity filename
-
-Write body of @var{entity} into @var{filename}.
-@end defun
-
-
-
-@node Entity buffer, mm-backend, Entity-content, Entity
-@section Entity \e$B$N\e(B buffer \e$B$K$h$kI=8=\e(B
-
-@defun mime-entity-buffer entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-point-min entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(B@var{entity} \e$B$,@j$a$kNN0h$N@hF,\e(B
-\e$B0LCV$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-point-max entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(B@var{entity} \e$B$,@j$a$kNN0h$NKvHx\e(B
-\e$B0LCV$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-header-start entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bheader \e$B$,@j$a$kNN0h$N@hF,0LCV$r\e(B
-\e$BJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-header-end entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bheader \e$B$,@j$a$kNN0h$NKvHx0LCV$r\e(B
-\e$BJV$9!#\e(B
-@end defun
-
-
-@defun mime-entity-body-start entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bbody \e$B$,@j$a$kNN0h$N@hF,0LCV$rJV\e(B
-\e$B$9!#\e(B
-@end defun
-
-
-@defun mime-entity-body-end entity
-
-@var{entity} \e$B$,B8:_$9$k\e(B buffer \e$B$K$*$1$k!"\e(Bbody \e$B$,@j$a$kNN0h$NKvHx0LCV$rJV\e(B
-\e$B$9!#\e(B
-@end defun
-
-
-
-@node mm-backend, , Entity buffer, Entity
-@section Entity \e$B$NI=8=$H<B8=\e(B
-@cindex mm-backend
-@cindex entity \e$B=hM}\e(B method
-@cindex representation-type
-
-Entity \e$B$OCj>]2=$5$l$?%G!<%?I=8=$G!"<B:]$N%G!<%?I=8=$H$7$F$OMQES$K1~$8$F\e(B
-\e$B$5$^$6$^$J$b$N$,MxMQ$G$-$k$h$&$K@_7W$5$l$F$$$^$9!#\e(B@refill
-
-\e$B$3$3$G!"\e(Bentity \e$B$,$I$&$$$&<oN`$NI=8=$r9T$C$F$$$k$+$r<($9$N$,\e(B
-@strong{representation-type} \e$B$G!"\e(Bentity \e$B$r@8@.$9$k;~$K$O$3$l$r;XDj$7$^$9!#\e(B
-(cf. @ref{Entity Creation}) @refill
-
-\e$BA0@a$^$G$K=R$Y$FMh$?\e(B entity \e$B$KBP$9$k=hM}$O!"\e(Bentity \e$B$KBP$7$F$=$N=hM}$r0M\e(B
-\e$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#\e(BEntity \e$B$O<+J,$N\e(B representation-type
-\e$B$rCN$C$F$*$j!"$=$N\e(B representation-type \e$B$K1~$8$F<B:]$N=hM}$r9T$&4X?t$r8F\e(B
-\e$B$S=P$7$^$9!#$3$N$h$&$J4X?t$r\e(B @strong{entity \e$B=hM}\e(Bmethod} \e$B$H8F$S$^$9!#$^$?!"\e(B
-representation-type \e$BKh$K$3$N$h$&$J4X?t$r$^$H$a$?$b$N$r\e(B
-@strong{mm-backend} \e$B$H8F$S$^$9!#\e(B@refill
-
-mm-backend \e$B$O\e(B representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$H$$$&\e(B
-\e$B@\F,<-$rIU$1$?4X?tL>$+$i$J$k\e(B module \e$B$G!"$=$N\e(B module \e$BL>$OF1MM$K\e(B
-representation-type \e$B$NL>A0$N@hF,$K\e(B @code{mm} \e$B$rIU$1$?$b$N$K$J$C$F\e(B
-\e$B$$$^$9!#$3$N\e(B module \e$B$O\e(B representation-type \e$B$N\e(B entity \e$B$,:G=i$K@8@.$5$l$k\e(B
-\e$B;~$K<+F0E*$K\e(B require \e$B$5$l$^$9!#\e(B
-
-
-@menu
-* Request for entity:: Entity \e$B$X$NJX$j\e(B
-* mm-backend module:: mm-backend \e$B$N:n$jJ}\e(B
-@end menu
-
-@node Request for entity, mm-backend module, mm-backend, mm-backend
-@subsection Entity \e$B$X$NJX$j\e(B
-
-@defun mime-entity-send entity message &rest args
-
-@var{entity} \e$B$K\e(B @var{message} \e$B$rAw$k!#\e(B@refill
-
-@var{args} \e$B$O\e(B @var{message} \e$B$N0z?t$G$"$k!#\e(B
-@end defun
-
-
-
-@node mm-backend module, , Request for entity, mm-backend
-@subsection mm-backend \e$B$N:n$jJ}\e(B
-
-\e$B!J$9$_$^$;$s!#$=$N$&$A=q$-$^$9\e(B (^_^;\e$B!K\e(B@refill
-
-\e$B!J$H$j$"$($:!"\e(Bmm*.el \e$B$r;29M$K$7$F$/$@$5$$!K\e(B
-
-
-@node Content-Type, Content-Disposition, Entity, Top
-@chapter Content-Type \e$BMs$N>pJs\e(B
-@cindex mime-content-type
-@cindex Content-Type \e$BMs\e(B
-
-@strong{Content-Type \e$BMs\e(B} \e$B$O\e(B media-type (@ref{media-type}) \e$B$d\e(B MIME
-charset \e$B$H$$$C$?\e(B entity (@ref{entity}) \e$B$NFbMF$N<oN`$dI=8=7A<0$J$I$r5-=R\e(B
-\e$B$9$k$?$a$N$b$N$G!"\e(BRFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$^$9!#\e(B
-
-@noindent
-@strong{[Memo]}
-@quotation
-
-\e$BNr;KE*$K$O\e(B RFC 1049 \e$B$G\e(B Content-Type \e$BMs$,Ds0F$5$l$F$$$k!#C"$7!"\e(BMIME \e$B$N\e(B
-media-type \e$B$N$h$&$J\e(B type \e$B$H\e(B subtype \e$B$N6hJL$O$J$/!"\e(BMIME charset \e$B$N$h$&$J\e(B
-\e$BJ8;zId9f$N<oN`$rI=8=$9$k$3$H$b$G$-$J$$!#\e(B
-@end quotation
-
-
-FLIM \e$B$O\e(B Content-Type \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Type \e$BMs$N2r@O7k2L$r\e(B
-\e$B3JG<$9$k9=B$BN\e(B @strong{mime-content-type} \e$B$rDs6!$7$^$9!#\e(B
-
-
-@menu
-* Content-Type field:: Content-Type \e$BMs$N7A<0\e(B
-* mime-content-type:: mime-content-type \e$B9=B$BN\e(B
-* Content-Type parser:: Content-Type \e$BMs$N2r@O4o\e(B
-* Content-Type utility:: Content-Type \e$B$K4X$9$kM-MQ$J4X?t\e(B
-@end menu
-
-@node Content-Type field, mime-content-type, Content-Type, Content-Type
-@section Content-Type \e$BMs$N7A<0\e(B
-@cindex parameter
-@cindex subtype
-@cindex type
-
-Content-Type \e$BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'\e(B
-
-@quotation
-``Content-Type'' ``:'' @strong{type} ``/''
-@strong{subtype} *( ``;'' @strong{parameter} )
-@end quotation
-
-\e$BNc$($P!"\e(B
-
-@quotation
-@example
-Content-Type: image/jpeg
-@end example
-@end quotation
-
-@noindent
-\e$B$d\e(B
-
-@quotation
-@example
-Content-Type: text/plain; charset=iso-2022-jp
-@end example
-@end quotation
-
-@noindent
-\e$B$J$I$N$h$&$KMQ$$$i$l$^$9!#\e(B
-
-\e$B$3$3$G!"\e(B`type' \e$B$H\e(B `subtype' \e$B$O\e(B entity \e$B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7\e(B
-\e$B$F!"\e(B`media-type' \e$B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k\e(B `image/jpeg' \e$B$d\e(B
-`text/plain' \e$B$O\e(B media-type \e$B$N#1$D$G$9!#\e(B
-
-@noindent
-@strong{[Memo]}
-@quotation
-
-Content-Type \e$BMs$N$J$$\e(B entity \e$B$O\e(B
-
-@quotation
-@example
-Content-Type: text/plain; charset=us-ascii
-@end example
-@end quotation
-
-@noindent
-\e$B$H$7$F2r<a$5$l$k!#\e(B(cf. @ref{us-ascii})
-@end quotation
-
-
-
-@node mime-content-type, Content-Type parser, Content-Type field, Content-Type
-@section mime-content-type \e$B9=B$BN\e(B
-
-@deffn{Structure} mime-content-type
-
-Content-Type \e$BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#\e(B@refill
-
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B @code{mime-content-type-\e$BMWAGL>\e(B} \e$B$H$$$&L>A0$N;2\e(B
-\e$B>H4X?t$rMQ$$$k!#\e(B@refill
-
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-@table @var
-@item primary-type
-media-type \e$B$N<g7?\e(B (symbol).
-
-@item subtype
-media-type \e$B$NI{7?\e(B (symbol).
-
-@item parameters
-Content-Type \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-
-@end table
-@end deffn
-
-
-@defun make-mime-content-type type subtype
- &optional parameters
-
-content-type \e$B$N@8@.;R!#\e(B
-@end defun
-
-
-@defun mime-content-type-parameter content-type parameter
-
-@var{content-type} \e$B$N\e(B @var{parameter} \e$B$NCM$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Type parser, Content-Type utility, mime-content-type, Content-Type
-@section Content-Type \e$BMs$N2r@O4o\e(B
-
-@defun mime-parse-Content-Type string
-
-@var{string} \e$B$r\e(B content-type \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-Content-Type
-
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Type \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B@refill
-
-Content-Type \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Type utility, , Content-Type parser, Content-Type
-@section Content-Type \e$B$K4X$9$kM-MQ$J4X?t\e(B
-
-@defun mime-type/subtype-string type &optional subtype
-
-@var{type} \e$B$H\e(B @var{subtype} \e$B$+$i\e(B type/subtype \e$B7A<0$NJ8;zNs$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Disposition, Content-Transfer-Encoding, Content-Type, Top
-@chapter Content-Disposition \e$BMs$N>pJs\e(B
-@cindex mime-content-disposition
-@cindex RFC 2183
-@cindex Standards Track
-@cindex Content-Disposition \e$BMs\e(B
-
-@strong{Content-Disposition \e$BMs\e(B} \e$B$O\e(B entity \e$B$NI=<($d\e(B file \e$BL>$J$I\e(B
-\e$B$NB0@-$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#\e(B
-
-
-@noindent
-[RFC 2183]
-@quotation
-S. Dorner, K. Moore and R. Troost, ``Communicating Presentation
-Information in Internet Messages: The Content-Disposition Header'',
-August 1997, Standards Track.
-@end quotation
-
-FLIM \e$B$O\e(B Content-Disposition \e$BMs$r9=J82r@O$9$k4X?t$H\e(B Content-Disposition
-\e$BMs$N2r@O7k2L$r3JG<$9$k9=B$BN\e(B
-@strong{mime-content-disposition} \e$B$rDs6!$7$^$9!#\e(B
-
-
-@menu
-* mime-content-disposition:: mime-content-disposition \e$B9=B$BN\e(B
-* Content-Disposition parser:: Content-Disposition \e$BMs$N2r@O4o\e(B
-@end menu
-
-@node mime-content-disposition, Content-Disposition parser, Content-Disposition, Content-Disposition
-@section mime-content-disposition \e$B9=B$BN\e(B
-
-@deffn{Structure} mime-content-disposition
-
-Content-Disposition \e$BMs$N2r@O7k2L$r<}$a$k$?$a$N9=B$BN!#\e(B@refill
-
-\e$B$3$N9=B$BN$r;2>H$9$k$K$O\e(B @code{mime-content-disposition-\e$BMWAGL>\e(B} \e$B$H$$$&L>\e(B
-\e$BA0$N;2>H4X?t$rMQ$$$k!#\e(B@refill
-
-\e$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'\e(B
-
-@table @var
-@item disposition-type
-disposition-type (symbol).
-
-@item parameters
-Content-Disposition \e$BMs$N\e(B parameter (\e$BO"A[\e(B list).
-
-@end table
-@end deffn
-
-
-@defun mime-content-disposition-parameter content-disposition parameter
-
-@var{content-disposition} \e$B$N\e(B @var{parameter} \e$B$NCM$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-content-disposition-filename content-disposition
-
-@var{content-disposition} \e$B$N\e(B filename \e$B$NCM$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Disposition parser, , mime-content-disposition, Content-Disposition
-@section Content-Disposition \e$BMs$N2r@O4o\e(B
-
-@defun mime-parse-Content-Disposition string
-
-@var{string} \e$B$r\e(B content-disposition \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-Content-Disposition
-
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Disposition \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$rJV$9!#\e(B
-@refill
-
-Content-Disposition \e$BMs$,B8:_$7$J$$>l9g$O\e(B nil \e$B$rJV$9!#\e(B
-@end defun
-
-
-
-@node Content-Transfer-Encoding, encoded-word, Content-Disposition, Top
-@chapter \e$BId9f2=K!\e(B
-@cindex Content-Transfer-Encoding \e$BMs\e(B
-
-@strong{Content-Transfer-Encoding \e$BMs\e(B} \e$B$O\e(B entity \e$B$NId9f2=K!$r5-=R$9$k$?$a\e(B
-\e$B$N$b$N$G$9!#\e(B@refill
-
-FLIM \e$B$G$O\e(B Content-Transfer-Encoding \e$BMs$r9=J82r@O$9$k4X?t$rDs6!$7$^$9!#$3\e(B
-\e$B$l$i$N4X?t$O\e(B Content-Transfer-Encoding \e$BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#\e(B
-@refill
-
-\e$B$^$?!"\e(BContent-Transfer-Encoding \e$B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs\e(B
-\e$B6!$5$l$^$9!#\e(B
-
-
-@menu
-* Content-Transfer-Encoding parser:: Content-Transfer-Encoding \e$BMs$N2r@O4o\e(B
-* Region encoder/decoder:: \e$BNN0h$NId9f2=!&I|9f2=\e(B
-* String encoder/decoder:: \e$BJ8;zNs$NId9f2=!&I|9f2=\e(B
-* File encoder/decoder:: File \e$B$NId9f2=!&I|9f2=\e(B
-@end menu
-
-@node Content-Transfer-Encoding parser, Region encoder/decoder, Content-Transfer-Encoding, Content-Transfer-Encoding
-@section Content-Transfer-Encoding \e$BMs$N2r@O4o\e(B
-
-@defun mime-parse-Content-Transfer-Encoding string
-
-@var{string} \e$B$r\e(B content-transfer-encoding \e$B$H$7$F2r@O$7$?7k2L$rJV$9!#\e(B
-@end defun
-
-
-@defun mime-read-Content-Transfer-Encoding &optional default-encoding
-
-\e$B8=:_$N\e(B buffer \e$B$N\e(B Content-Transfer-Encoding \e$BMs$rFI$_<h$j!"2r@O$7$?7k2L$r\e(B
-\e$BJV$9!#\e(B@refill
-
-Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B@var{default-encoding} \e$B$r\e(B
-\e$BJV$9!#\e(B
-@end defun
-
-
-
-@node Region encoder/decoder, String encoder/decoder, Content-Transfer-Encoding parser, Content-Transfer-Encoding
-@section \e$BNN0h$NId9f2=!&I|9f2=\e(B
-
-@defun mime-encode-region start end encoding
-
-Encode region @var{start} to @var{end} of current buffer using
-@var{encoding}.
-@end defun
-
-
-@defun mime-decode-region start end encoding
-
-Decode region @var{start} to @var{end} of current buffer using
-@var{encoding}.
-@end defun
-
-
-@defvar mime-encoding-method-alist
-
-Alist of encoding vs. corresponding method to encode region.@refill
-
-Each element looks like @code{(STRING . FUNCTION)} or @code{(STRING
-. nil)}. @var{string} is content-transfer-encoding. @code{function} is
-region encoder and @code{nil} means not to encode.
-@end defvar
-
-
-@defvar mime-decoding-method-alist
-
-Alist of encoding vs. corresponding method to decode region.@refill
-
-Each element looks like @code{(STRING . FUNCTION)} or @code{(STRING
-. nil)}. @var{string} is content-transfer-encoding. @code{function} is
-region decoder and @code{nil} means not to decode.
-@end defvar
-
-
-
-@node String encoder/decoder, File encoder/decoder, Region encoder/decoder, Content-Transfer-Encoding
-@section \e$BJ8;zNs$NId9f2=!&I|9f2=\e(B
-
-@defun mime-decode-string string encoding
-
-@var{string} \e$B$r\e(B @var{encoding} \e$B$H$7$FI|9f$7$?7k2L$rJV$7$^$9!#\e(B
-@end defun
-
-
-@defvar mime-string-decoding-method-alist
-
-Alist of encoding vs. corresponding method to decode string.@refill
-
-Each element looks like @code{(STRING . FUNCTION)}. STRING is
-content-transfer-encoding. FUNCTION is string decoder.
-@end defvar
-
-
-
-@node File encoder/decoder, , String encoder/decoder, Content-Transfer-Encoding
-@section File \e$B$NId9f2=!&I|9f2=\e(B
-
-@defun mime-insert-encoded-file filename encoding
-
-Insert file @var{FILENAME} encoded by @var{ENCODING} format.
-@end defun
-
-
-@defun mime-write-decoded-region start end filename encoding
-
-Decode and write current region encoded by @var{encoding} into
-@var{filename}.@refill
-
-@var{start} and @var{end} are buffer positions.
-@end defun
-
-
-@defvar mime-file-encoding-method-alist
-
-Alist of encoding vs. corresponding method to insert encoded
-file.@refill
-
-Each element looks like @code{(STRING . FUNCTION)}. STRING is
-content-transfer-encoding. FUNCTION is function to insert encoded file.
-@end defvar
-
-
-@defvar mime-file-decoding-method-alist
-
-Alist of encoding vs. corresponding method to write decoded region to
-file.@refill
-
-Each element looks like @code{(STRING . FUNCTION)}. STRING is
-content-transfer-encoding. FUNCTION is function to write decoded region
-to file.
-@end defvar
-
-
-
-@node encoded-word, custom, Content-Transfer-Encoding, Top
-@chapter Header \e$B$N\e(B network \e$BI=8=\e(B
-@cindex RFC 2047
-@cindex Standards Track
-@cindex RFC 2047
-
-encoded-word \e$B$O\e(B header \e$B$GHs\e(B ASCII (@ref{ASCII}) \e$BJ8;z$rI=8=$9$k$?$a$N7A<0\e(B
-\e$B$G!"\e(B@strong{RFC 2047} \e$B$GDj5A$5$l$F$$$^$9!#\e(B@refill
-
-
-@noindent
-[RFC 2047]
-@quotation
-K. Moore, ``MIME (Multipurpose Internet Mail Extensions) Part Three:
-Message Header Extensions for Non-ASCII Text'', November 1996, Standards
-Track (obsolete RFC 1521,1522,1590).
-@end quotation
-
-\e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B ASCII
-(@ref{ASCII}) \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B@refill
-
-FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
-
-
-@menu
-* Header encoder/decoder:: Header \e$B$NId9f2=!&I|9f2=\e(B
-@end menu
-
-@node Header encoder/decoder, , encoded-word, encoded-word
-@section Header \e$B$NId9f2=!&I|9f2=\e(B
-
-@defun eword-encode-header &optional code-conversion separator
-
-Decode MIME encoded-words in header fields.@refill
-
-If @var{code-conversion} is @code{nil}, it decodes only encoded-words.
-If it is mime-charset, it decodes non-ASCII bit patterns as the
-mime-charset. Otherwise it decodes non-ASCII bit patterns as the
-default-mime-charset.@refill
-
-If @var{separator} is not nil, it is used as header separator.
-@end defun
-
-
-@defun eword-encode-header &optional code-conversion
-
-Encode header fields to network representation, such as MIME
-encoded-word.@refill
-
-It refer variable @code{eword-field-encoding-method-alist}.
-@end defun
-
-
-
-@node custom, Appendix, encoded-word, Top
-@chapter \e$B0lHL@_Dj\e(B
-
-@deffn{group} mime
-
-MIME \e$B4XO"5!G=$K4X$9$k\e(B group.@refill
-
-@code{mail} \e$B$H\e(B @code{news} \e$B$KB0$9$k!#\e(B
-@end deffn
-
-
-@defvar default-mime-charset
-
-\e$BE,@Z$J\e(B MIME charset (@ref{MIME charset}) \e$B$,8+$D$+$i$J$+$C$?>l9g$KMQ$$$i\e(B
-\e$B$l$k\e(BMIME charset.@refill
-
-\e$BK\Mh$O\e(B APEL \e$B$NJQ?t$G$"$k!#\e(B
-@end defvar
-
-
-@defvar mime-temp-directory
-
-MIME \e$B5!G=$K4X$9$k<BAu$,0l;~E*$K;HMQ$9$k\e(B file \e$B$r:n@.$9$k\e(B
-directory.@refill
-
-\e$B4D6-JQ?t\e(B @code{MIME_TMP_DIR}, @code{TM_TMP_DIR}, @code{TMPDIR},
-@code{TMP} \e$B$b$7$/$O\e(B @code{TEMP} \e$B$,@_Dj$5$l$F$$$?>l9g!"$=$l$r=i4|CM$H$7$F\e(B
-\e$BMQ$$$k!#2?$b@_Dj$5$l$F$$$J$$>l9g!"\e(B@code{"/tmp/"} \e$B$rMQ$$$k!#\e(B
-@end defvar
-
-
-
-@node Appendix, Concept Index, custom, Top
-@chapter \e$BIUO?\e(B
-
-
-@menu
-* Glossary:: \e$BMQ8l\e(B
-* Bug report:: bug \e$BJs9p$N;EJ}\e(B
-* CVS:: CVS \e$B$K$h$k3+H/\e(B
-* History:: \e$BNr;K\e(B
-@end menu
-
-@node Glossary, Bug report, Appendix, Appendix
-@section \e$BMQ8l\e(B
-
-
-@menu
-* 7bit::
-* 8bit::
-* ASCII::
-* Base64::
-* binary::
-* Coded character set:: Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
-* media-type::
-* message::
-* MIME::
-* MIME charset::
-* MTA::
-* MUA::
-* Quoted-Printable::
-* RFC 822::
-* RFC 1036::
-* RFC 2045::
-* RFC 2046::
-* RFC 2048::
-* RFC 2049::
-* plain text::
-* us-ascii::
-@end menu
-
-@node 7bit, 8bit, Glossary, Glossary
-@subsection 7bit
-
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 127 \e$B$N@0?t$r;X$9!#\e(B@refill
-
-0 \e$B$+$i\e(B 127 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``7bit \e$B$N\e(B data'' \e$B$H8F$V!#\e(B
-@refill
-
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31 \e$B$*$h$S\e(B 127 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=8=$5$l$k6uGr$H\e(B
-33 \e$B$+$i\e(B 126 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$kJ8;zNs$N$3$H$r\e(B ``7bit \e$B$NJ8;zNs\e(B''
-\e$B$H8F$V!J$3$l$O\e(B ISO 2022 (@ref{ISO 2022}) \e$B$N!V\e(B7 \e$BC10L7O!W$HF1MM!K!#\e(B
-
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B MTA (@ref{MTA}) \e$B$O\e(B 7bit \e$B$N\e(B data \e$B$rE>Aw$G$-$k$N$G!"\e(B
-7bit \e$B$N\e(B data \e$B$O\e(B Quoted-Printable (@ref{Quoted-Printable}) \e$B$d\e(B Base64
-(@ref{Base64}) \e$B$H$$$C$?JQ49$r9T$o$J$/$F$b$=$N$^$^E>Aw$G$-$k!#\e(B@refill
-
-\e$B$7$+$7!"\e(B7bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($J$$!#$J$<$J$i!"#19T$N\e(B
-\e$BD9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i$G\e(B
-\e$B$"$k!#$A$J$_$K!"\e(BRFC 821 (@ref{RFC 821}) \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998
-byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$k!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N\e(B
-\e$B$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B
-encode\e$B$9$kI,MQ$,$"$k!#\e(B
-
-
-@node 8bit, ASCII, 7bit, Glossary
-@subsection 8bit
-@cindex binary
-
-\e$B$3$3$G$O\e(B 0 \e$B$+$i\e(B 255 \e$B$N@0?t$r;X$9!#\e(B@refill
-
-0 \e$B$+$i\e(B 255 \e$B$N@0?t$NNs$GI=8=$G$-$k$h$&$J\e(B data \e$B$r\e(B ``8bit \e$B$N\e(B data'' \e$B$H8F$V!#\e(B
-@refill
-
-\e$B$^$?!"\e(B0 \e$B$+$i\e(B 31, 127 \e$B$*$h$S\e(B 128 \e$B$+$i\e(B 159 \e$B$GI=8=$5$l$k@)8fJ8;z$H\e(B 32 \e$B$GI=\e(B
-\e$B8=$5$l$k6uGr$H\e(B 33 \e$B$+$i\e(B 126 \e$B$H\e(B 160 \e$B$+$i\e(B 255 \e$B$GI=8=$5$l$k?^7AJ8;z$+$i$J$k\e(B
-\e$BJ8;zNs$N$3$H$r\e(B ``8bit \e$B$NJ8;zNs\e(B'' \e$B$H8F$V!J$3$l$O\e(B ISO 2022 (@ref{ISO 2022}) \e$B$N!V\e(B8 \e$BC10L7O!W$HF1MM!K!#\e(B@refill
-
-iso-8859-1 (@ref{iso-8859-1}) \e$B$d\e(B euc-kr (@ref{euc-kr}) \e$B$H$$$C$?Id9f2=J8\e(B
-\e$B;z=89g$O\e(B 8bit \e$B$NJ8;zNs$G$"$k!#\e(B@refill
-
-\e$BEAE}E*$J\e(B Internet \e$B$N\e(B MTA (@ref{MTA}) \e$B$O\e(B 7bit (@ref{7bit}) \e$B$N\e(B data \e$B$7$+E>\e(B
-\e$BAw$G$-$J$$$N$G!"$=$&$7$?\e(B MTA \e$B$r7PM3$9$k>l9g!"\e(BQuoted-Printable
-(@ref{Quoted-Printable}) \e$B$d\e(B Base64 (@ref{Base64}) \e$B$H$$$C$?JQ49$r9T$o$J$/\e(B
-\e$B$F$O$J$i$J$$!#\e(B@refill
-
-\e$B$7$+$7!":G6a$G$O\e(B 8bit \e$B$NJ8;zNs$r$=$N$^$^DL$9$3$H$,$G$-$k\e(B MTA \e$B$bEP>l$7$F\e(B
-\e$B$-$?$N$G!"$=$N$^$^Aw$k$3$H$,$G$-$k>l9g$bA}$($F$-$?!#\e(B@refill
-
-\e$B$7$+$7!"\e(B8bit \e$B$G$"$l$P$I$s$J\e(B data \e$B$G$bNI$$$H$O$$$($J$$!#$J$<$J$i!"#19T$N\e(B
-\e$BD9$5$,$"$^$j$KD9$$$H!"\e(BMTA \e$B$O$=$N\e(B message \e$B$rE>Aw$9$k$3$H$,$G$-$J$$$+$i$G\e(B
-\e$B$"$k!#$A$J$_$K!"\e(BRFC 821 (@ref{RFC 821}) \e$B$O#19T$O2~9TJ8;z$r=|$$$F\e(B 998
-byte \e$B0JFb$G$"$k$3$H$r5a$a$F$$$k!#$h$C$F!"$3$l0J>e$N9T$,4^$^$l$k2DG=@-$N\e(B
-\e$B$"$k\e(B data, \e$BNc$($P!"\e(BPostscript \e$B$N\e(B data \e$B$J$I$O\e(B Quoted-Printable \e$BEy$G\e(B
-encode\e$B$9$kI,MQ$,$"$k!#\e(B@refill
-
-\e$B$^$?!"$3$&$7$?M}M3$+$i!"#19T$,\e(B 999 byte \e$B0J>e$N9T$,B8:_$9$k2DG=@-$N$"$k\e(B
-data \e$B$O\e(B @strong{binary} (@ref{binary}) \e$B$H8F$V$3$H$K$9$k!#\e(B@refill
-
-\e$B$A$J$_$K!"\e(B7bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B 8bit \e$B$G$bI=8=$G$-$k!#$h$C$F!"\e(B
-``8bit'' \e$B$H8@$C$?>l9g!"#19T$,\e(B 998 byte \e$B0J2<$NG$0U$N\e(B data \e$B$r;X$9$3$H$,\e(B
-\e$B$"$k!#\e(B
-
-
-@node ASCII, Base64, 8bit, Glossary
-@subsection ASCII
-@cindex ANSI X3.4:1986
-@cindex ASCII
-
-\e$B%"%a%j%+O"K.$G;H$o$l$kJ8;z$rId9f2=$7$?Id9f2=J8;z=89g\e(B (@ref{\e$BId9f2=J8;z=8\e(B \e$B9g\e(B})\e$B!#\e(BA-Z, a-z \e$B$N\e(B Latin \e$BJ8;z$H?t;z!"4v$D$+$N5-9f$+$i$J$k!#\e(BISO 646 \e$B$N0l$D\e(B
-\e$B$G!"8=:_$O9q:]4p=`HG\e(B (IRV) \e$B$K$J$C$F$$$k!#\e(B
-
-
-@noindent
-[ASCII]
-@quotation
-``Coded Character Set -- 7-Bit American Standard Code for Information
-Interchange'', ANSI X3.4:1986.
-@end quotation
-
-
-
-@node Base64, binary, ASCII, Glossary
-@subsection Base64
-@cindex pad
-
-RFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B
-binary data (@ref{binary}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
-
-\e$B!X\e(B64 \e$B?J?t!Y$H$$$&0UL#$G!"\e(B3 byte \e$B$N\e(B data \e$B$r\e(B 0 \e$B$+$i\e(B 63 \e$B$N?t$rI=$9\e(B ASCII
-(@ref{ASCII}) 4 \e$BJ8;z$KJQ49$9$kJ}K!!#!J$b$7!"\e(B4 \e$BJ8;z$K$J$i$J$1$l$P\e(B
-@strong{pad} \e$B$H8F$P$l$k5M$aJ*$r$7$FD9$5$rD4@0$9$k!K\e(B@refill
-
-\e$B$3$N\e(B 65 \e$B<oN`$NJ8;z$O\e(B ASCII \e$B$H\e(B EBCDIC \e$B$N6&DLItJ,$+$iA*$P$l$F$*$j!"\e(B
-Internet \e$B0J30$N\e(B network \e$B$r7PM3$9$k>l9g$G$b0BA4$KE>Aw$G$-$k$h$&$K@_7W$5\e(B
-\e$B$l$F$$$k!#\e(B
-
-
-@node binary, Coded character set, Base64, Glossary
-@subsection binary
-@cindex binary data
-@cindex binary
-
-\e$BG$0U$N\e(B byte \e$BNs$r\e(B @strong{binary} \e$B$H8F$V!#\e(B@refill
-
-8bit (@ref{8bit}) \e$B$H0[$J$k$N$O\e(B data \e$B$K9T$N9=B$$r2>Dj$7$J$$$3$H$G$"$k!#\e(B
-
-\e$B$^$?!"9T$N9=B$$,$"$C$F$b!"\e(B999 byte \e$B0J>e$+$i$J$k9T$,$"$k>l9g$b\e(B binary \e$B$H\e(B
-\e$B8F$V$3$H$K$9$k!#\e(B@refill
-
-\e$B$A$J$_$K!"\e(B7bit (@ref{7bit}) \e$B$d\e(B 8bit \e$B$GI=8=$G$-$k\e(B data \e$B$O\e(B binary \e$B$G$bI=8=\e(B
-\e$B$G$-$k!#$h$C$F!"\e(B@strong{binary data} \e$B$H8@$C$?>l9g!"G$0U$N\e(B data \e$B$r;X$9$3\e(B
-\e$B$H$,$"$k!#\e(B
-
-
-@node Coded character set, media-type, binary, Glossary
-@subsection Coded character set\e$B!JId9f2=J8;z=89g!K\e(B, Character code\e$B!JJ8;zId9f!K\e(B
-
-\e$BJ8;z$H\e(B byte \e$BNs$H#1BP#1$KBP1~IU$1$k[#Kf$G$J$$5,B'$N=89g!#\e(B
-
-
-@node media-type, message, Coded character set, Glossary
-@subsection media-type
-@cindex x-token
-@cindex primary-type/subtype
-@cindex message
-@cindex multipart
-@cindex application
-@cindex video
-@cindex audio
-@cindex image
-@cindex text
-@cindex subtype
-@cindex primary-type
-
-MIME (@ref{MIME}) \e$B$K$*$1$k\e(B entity (@ref{entity}) \e$B$N<oN`!#\e(B
-@strong{primary-type} \e$B$H\e(B @strong{subtype} \e$B$+$i$J$k!#\e(BRFC 2046 (@ref{RFC 2046}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
-
-primary-type \e$B$OI8=`$G$O\e(B
-
-@itemize @bullet
-@item
-@strong{text}
-@item
-@strong{image}
-@item
-@strong{audio}
-@item
-@strong{video}
-@item
-@strong{application}
-@item
-@strong{multipart} (@ref{multipart})
-@item
-@strong{message}
-@end itemize
-
-@noindent
-\e$B$,Dj5A$5$l!"$=$l$>$l$K$O\e(B application/octet-stream, audio/basic,
-image/jpeg, multipart/mixed (@ref{multipart/mixed}), text/plain
-(@ref{text/plain}), video/mpeg \e$B$J$I$N$5$^$6$^$J\e(B subtype \e$B$,Dj5A$5$l$F$$$k!#\e(B
-
-@noindent
-@strong{[\e$BCm0U\e(B]}
-@quotation
-
-\e$B$3$3$G$O!"\e(Btext/plain \e$B$J$I$N\e(B type/subtype \e$B$NAH$r$7$P$7$P\e(B
-@strong{primary-type/subtype} \e$B$H=q$/!#\e(B
-@end quotation
-
-
-media-type \e$B$O!"\e(BRFC 2046 \e$B$GDj5A$5$l$F$$$k$b$N$K2C$($F!"EPO?$9$k$3$H$b$G$-\e(B
-\e$B$k!#8=:_!"EPO?$5$l$F$$$k$b$N$O\e(B MEDIA TYPES
-(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types) \e$B$G;2>H$G$-$k!#\e(B
-
-\e$B$^$?!"\e(Btype \e$B$b$7$/$O\e(B subtype \e$B$K!"A0$K\e(B `x-' \e$B$rIU$1$?\e(B @strong{x-token} \e$B$rMQ\e(B
-\e$B$$$k$3$H$K$h$j!"EPO?$5$l$F$$$J$$$b$N$r;dE*$KMQ$$$k$3$H$b$G$-$k!#$7$+$7!"\e(B
-\e$BEvA3$N$3$H$J$,$i!"$3$&$7$?;dE*$J\e(B media-type \e$B$ONJ2r$rF@$?<T$N4V$G$7$+2r<a\e(B
-\e$B$G$-$J$$$N$GMxMQ$K$OCm0U$9$k$3$H!#\e(B@refill
-
-(cf. @ref{Content-Type})
-
-
-
-@node message, MIME, media-type, Glossary
-@subsection message
-
-\e$B$3$3$G$O\e(B mail \e$B$H\e(B news \e$B5-;v$NAm>N$H$7$FMQ$$$k!#\e(B
-
-
-@node MIME, MIME charset, message, Glossary
-@subsection MIME
-@cindex Multipurpose Internet Mail Extensions
-
-@strong{Multipurpose Internet Mail Extensions} \e$B$NN,$G!"\e(BInternet \e$B$N\e(B mail
-\e$B$d\e(B news \e$B$G\e(B us-ascii plain text (@ref{us-ascii}) \e$B0J30$NJ8;z$r;H$&$?$a$N\e(B
-RFC 822 (@ref{RFC 822}) \e$B$KBP$9$k3HD%!#\e(B@refill
-
-RFC 2045 \e$B$OKAF,$G<!$N$h$&$K=R$Y$F$$$k!'\e(B@refill
-
-STD 11, RFC 822 \e$B$O!"\e(BUS-ASCII message header \e$B$K4X$7$FHs>o$K>\:Y$K5,Dj$7\e(B
-\e$B$?\e(B message \e$BI=8=\e(B protocol \e$B$rDj5A$7$F$$$k!#$7$+$7!"$=$l$OC1$K\e(B flat \e$B$J\e(B
-US-ASCII text \e$B$N$_$KN1$^$j!"\e(Bmessage \e$B$NFbMF$d\e(B message body \e$B$K4X$9$k5,Dj\e(B
-\e$B$O$J$5$l$F$$$J$$!#\e(BMultipurpose Internet Mail Extensions, \e$B$"$k$$$O\e(B MIME
-\e$B$HAm>N$5$l$k!"$3$N0lO"$NJ8=q$O!"0J2<$N;v$r2DG=$H$9$k$?$a$K\e(B message \e$B$N\e(B
-\e$B7A<0$r:FDj5A$7$?!'\e(B
-
-@enumerate
-@item
-\e$BJ8=q\e(B message body \e$B$K$*$1$k\e(B US-ASCII \e$B0J30$NJ8;z=89g\e(B
-@item
-\e$BHsJ8=q\e(B message body
-@item
-\e$BJ#?t$NItJ,$+$i$J$k\e(B message body
-@item
-US-ASCII \e$B0J30$NJ8;z=89g$+$i$J$kJ8=q\e(B header \e$B>pJs\e(B
-@end enumerate
-
-
-RFC 2045 (@ref{RFC 2045}), RFC 2046 (@ref{RFC 2046}), RFC 2047
-(@ref{encoded-word}), RFC 2048 (@ref{RFC 2048}), RFC 2049 (@ref{RFC 2049}) \e$B$GDj5A$5$l$F$$$k!#\e(B
-
-
-@node MIME charset, MTA, MIME, Glossary
-@subsection MIME charset
-
-Content-Type (@ref{Content-Type}) \e$BMs$d\e(B encoded-word (@ref{encoded-word})
-\e$B$N\e(B charset parameter \e$B$GMQ$$$i$l$kEPO?$5$l$?Id9f2=J8;z=89g\e(B(@ref{Coded character set})\e$B!#\e(B@refill
-
-RFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$k!#\e(B@refill
-
-iso-2022-jp \e$B$d\e(B euc-kr \e$B$O$=$N#1$D!#\e(B
-
-
-@node MTA, MUA, MIME charset, Glossary
-@subsection MTA
-@cindex Message Transfer Agent
-
-@strong{Message Transfer Agent} \e$B$NN,$G!"\e(Bqmail \e$B$d\e(B sendmail \e$B$J$I$N\e(B mail \e$BG[\e(B
-\e$BAw\e(B program \e$B$H\e(B inn \e$B$J$I$N\e(B news server \e$B$NAm>N!#\e(B@refill
-
-(cf. @ref{MUA})
-
-
-
-@node MUA, Quoted-Printable, MTA, Glossary
-@subsection MUA
-@cindex Message User Agent
-
-@strong{Message User Agent} \e$B$NN,$G!"\e(Bmail reader \e$B$H\e(B news reader \e$B$NAm>N!#\e(B
-@refill
-
-(cf. @ref{MTA})
-
-
-
-@node Quoted-Printable, RFC 822, MUA, Glossary
-@subsection Quoted-Printable
-
-RFC 2045 (@ref{RFC 2045}) \e$B$GDj5A$5$l$F$$$k\e(B MIME (@ref{MIME}) \e$B$K$*$1$k\e(B
-binary data (@ref{binary data}) \e$B$N\e(B network \e$B$G$NJQ49K!$N#1$D!#\e(B@refill
-
-`=' \e$B$d@)8fJ8;z$d\e(B 128 \e$B0J>e$NJ8;z$J$I$O\e(B `=AF' \e$B$N$h$&$K\e(B `=' \e$B$N8e$KB3$/\e(B 16
-\e$B?J?t$GI=8=$9$k!#$3$N$?$a!"\e(BASCII (@ref{ASCII}) \e$BJ8;zCf?4$N\e(B data \e$B$G$O\e(B
-Base64 (@ref{Base64}) \e$B$KHf$Y$k$H2DFI@-$,9b$/$J$k2DG=@-$,$"$k!#\e(B@refill
-
-\e$B$7$+$7$J$,$i!"\e(BEBCDIC \e$B$K$OB8:_$7$J$$J8;z$rMxMQ$9$k>l9g!"\e(BEBCDIC \e$B$rMxMQ$7\e(B
-\e$B$F$$$k\e(B network \e$B$G$O0BA4$KE>Aw$9$k$3$H$,$G$-$:!"\e(BBase64 \e$B$KHf$Y$F0BA4@-$O\e(B
-\e$BDc$$!#\e(B
-
-
-@node RFC 822, RFC 1036, Quoted-Printable, Glossary
-@subsection RFC 822
-@cindex RFC 822
-@cindex STD 11
-@cindex Internet message
-@cindex Internet mail
-@cindex message header
-
-Internet mail \e$B$N<g$K\e(B @strong{message header} \e$B$K4X$9$k7A<0$K\e(B
-\e$B4X$9$kI8=`$rDj$a$F$$$k\e(B RFC.
-
-@noindent
-@strong{[Memo]}
-@quotation
-
-news message \e$B$b$3$l$K=`$8$F$$$k$N$G!"\e(B@strong{Internet mail} \e$B$H=q$/$h$j$b!"\e(B
-@strong{Internet message} \e$B$H=q$$$?J}$,NI$$$+$b$7$l$J$$!#\e(B
-@end quotation
-
-
-
-@noindent
-[RFC 822]
-@quotation
-D. Crocker, ``Standard for the Format of ARPA Internet Text Messages'',
-August 1982, STD 11.
-@end quotation
-
-
-
-@node RFC 1036, RFC 2045, RFC 822, Glossary
-@subsection RFC 1036
-@cindex RFC 1036
-@cindex USENET
-
-USENET \e$B$G$N\e(B message \e$B$N7A<0$rDj$a$?\e(B RFC. RFC 822 (@ref{RFC 822}) \e$B$N\e(B
-subset \e$B$K$J$C$F$$$k!#\e(BInternet \e$B$NI8=`$G$O$J$$$,!"\e(BUSENET \e$B0J30$N\e(B netnews \e$B$G\e(B
-\e$B$b$3$l$K=`$8$F$$$k$b$N$,B?$$!#\e(B
-
-
-@noindent
-[USENET: RFC 1036]
-@quotation
-M. Horton and R. Adams, ``Standard for Interchange of USENET Messages'',
-December 1987, (obsolete RFC 850).
-@end quotation
-
-
-
-@node RFC 2045, RFC 2046, RFC 1036, Glossary
-@subsection RFC 2045
-@cindex RFC 2045
-@cindex Standards Track
-
-
-@noindent
-[RFC 2045]
-@quotation
-N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies'', November 1996,
-Standards Track (obsolete RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node RFC 2046, RFC 2048, RFC 2045, Glossary
-@subsection RFC 2046
-@cindex RFC 2046
-@cindex Standards Track
-
-
-@noindent
-[RFC 2046]
-@quotation
-N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
-(MIME) Part Two: Media Types'', November 1996, Standards Track (obsolete
-RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node RFC 2048, RFC 2049, RFC 2046, Glossary
-@subsection RFC 2048
-@cindex RFC 2048
-@cindex Standards Track
-
-
-@noindent
-[RFC 2048]
-@quotation
-N. Freed, J. Klensin and J. Postel, ``Multipurpose Internet Mail
-Extensions (MIME) Part Four: Registration Procedures'', November 1996,
-Standards Track (obsolete RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node RFC 2049, plain text, RFC 2048, Glossary
-@subsection RFC 2049
-@cindex RFC 2049
-@cindex Standards Track
-
-
-@noindent
-[RFC 2049]
-@quotation
-N. Freed and N. Borenstein, ``Multipurpose Internet Mail Extensions
-(MIME) Part Five: Conformance Criteria and Examples'', November 1996,
-Standards Track (obsolete RFC 1521, 1522, 1590).
-@end quotation
-
-
-
-@node plain text, us-ascii, RFC 2049, Glossary
-@subsection plain text
-
-\e$B=qBN$dAHHG$K4X$9$k>pJs$r;}$?$J$$J8;zId9f\e(B(@ref{Coded character set})\e$B$N$_\e(B
-\e$B$GI=8=$5$l$k\e(B text \e$B>pJs!#\e(B(cf. @ref{text/plain})
-
-
-
-@node us-ascii, , plain text, Glossary
-@subsection us-ascii
-@cindex ASCII
-@cindex us-ascii
-
-\e$B%"%a%j%+O"K.$J$I$G;H$o$l$k1Q8l$J$I$rI=8=$9$k$?$a$N\e(B MIME charset
-(@ref{MIME charset}) \e$B$N#1$D!#\e(B@refill
-
-ASCII (@ref{ASCII}) \e$B$N$_$+$i$J$j\e(B ISO 2022 \e$B$K$h$kId9f3HD%$O5v$5$l$J$$!#\e(B
-
-Internet message \e$B$K$*$1$kI8=`$NId9f2=J8;z=89g\e(B(@ref{Coded character set})
-\e$B$G$"$j!"L@<(E*$K\e(B MIME charset \e$B$,<($5$l$J$$>l9g$O86B'$H$7$F\e(B
-@strong{us-ascii} \e$B$,;H$o$l$k!#\e(B@refill
-
-\e$B$^$?!"\e(BRFC 822 (@ref{RFC 822}) \e$B$K$*$1$k\e(B @strong{ASCII} \e$B$O\e(B us-ascii \e$B$G$"$k!#\e(B
-
-
-@node Bug report, CVS, Glossary, Appendix
-@section bug \e$BJs9p$N;EJ}\e(B
-
-FLIM \e$B$N%P%0$r8+$D$1$?$i!"0J2<$N\e(B address \e$B$K\e(B mail \e$B$rAw$C$F$/$@$5$$!'\e(B
-
-@itemize @bullet
-@item
- \e$BF|K\8l\e(B <bug-tm-ja@@chamonix.jaist.ac.jp>
-@item
- \e$B1Q8l\e(B <bug-tm-en@@chamonix.jaist.ac.jp>
-@end itemize
-
-
-\e$BC"$7!"$"$^$j$K$b8E$$HG$K4X$9$kJs9p$O4?7^$5$l$^$;$s!#8E$$HG$N\e(B bug \e$B$O!"?7\e(B
-\e$B$7$$HG$G$O<#$C$F$$$k$+$b$7$l$^$;$s!#$^$:!":G?7HG$G3NG'$7$F$_$^$7$g$&!#\e(B
-@refill
-
-\e$B$=$l$+$i!"E,@Z$JJs9p$r$7$^$7$g$&!#C1$K!V$&$^$/F0$+$J$$!W$H8@$o$l$F$b$I$&\e(B
-\e$B$$$&>u67$J$N$+$O$5$C$Q$jH=$j$^$;$s!#:GDc8B!"\e(BOS, emacs, APEL, FLIM, SEMI,
-\e$B;H$C$F$$$k\e(B MUA \e$B$N<oN`$*$h$SHG!"@_Dj$r=q$/I,MW$,$"$j$^$9!#$^$?!"\e(Berror \e$B$,\e(B
-\e$B5/$C$F$$$k>l9g$O\e(B backtrace \e$B$rAw$k$3$H$b=EMW$G$9!#\e(B(cf. @ref{(emacs)Bugs})
-
-\e$B$^$?!"\e(Bbug \e$B$OBgDqJ#?t$N?M$,Ax6x$9$k$b$N$G$9!J$=$&$G$J$1$l$P!"\e(Bbug \e$B$G$O$J\e(B
-\e$B$$2DG=@-$,$"$j$^$9!K!#$@$+$i!":n<T$KD>@\\e(B mail \e$B$rAw$k$H:n<T$OF1$8\e(B mail
-\e$B$r2?DL$b=q$/1)L\$K$J$j$^$9!#$@$+$i!"I,$:\e(B bug \e$BJs9p$O>e5-$N\e(B address \e$B$KAw$C\e(B
-\e$B$F$/$@$5$$!#\e(B
-
-tm ML \e$B$G$O\e(B FLIM \e$B$N%P%0>pJs$N8r49$d:G?7HG$NG[I[!"\e(BFLIM \e$B$N2~NI$K4X$9$k5D\e(B
-\e$BO@$r9T$J$C$F$$$^$9!#\e(Btm ML \e$B$K;22C$7$?$$J}$O\e(B
-
-@itemize @bullet
-@item
- \e$BF|K\8l\e(B <tm-ja-help@@chamonix.jaist.ac.jp>
-@item
- \e$B1Q8l\e(B <tm-en-help@@chamonix.jaist.ac.jp>
-@end itemize
-
-@noindent
-\e$B$K6u$N\e(B mail \e$B$rAw$C$F2<$5$$!#\e(B
-
-
-@node CVS, History, Bug report, Appendix
-@section CVS \e$B$K$h$k3+H/\e(B
-
-FLIM \e$B$N\e(B file \e$B$O\e(B CVS \e$B$r;H$C$F4IM}$5$l$F$$$^$9!#$3$N$?$a!"0J2<$NJ}K!$G:G\e(B
-\e$B?7$N\e(B FLIM \e$B$rF~<j$9$k$3$H$,$G$-$^$9!'\e(B
-
-@example
-(0) cvs login
-
- % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
- login
-
- CVS password: [CR] # NULL string
-
-(1) checkout
-
- % cvs -d :pserver:anonymous@@chamonix.jaist.ac.jp:/hare/cvs/root \
- checkout [-r TAG] flim
-@end example
-
-
-CVS \e$B$rMQ$$$?3+H/$K;22C$7$?$$J}$O\e(B
-
-@itemize @bullet
-@item
- <cvs@@chamonix.jaist.ac.jp>
-@end itemize
-
-@noindent
-\e$B$^$G!"\e(Baccount \e$BL>$H\e(B UNIX \e$B$N\e(B passwd \e$B$HF1$87A<0$N\e(B crypt \e$B2=$5$l$?\e(B password
-\e$B$r1h$($F8fO"Mm$/$@$5$$!#\e(B
-
-
-@node History, , CVS, Appendix
-@section \e$BNr;K\e(B
-
-FLIM \e$B$N\e(B code \e$B$N:G8E$NItJ,$O\e(B \e$B1]JB\e(B \e$B;LCR\e(B \e$B;a$,=q$$$?\e(B @file{mime.el}\e$B$K5/8;$7\e(B
-\e$B$^$9!#$3$N>.$5$J\e(B program \e$B$O\e(B Nemacs \e$B$GF0:n$9$k\e(B iso-2022-jp \e$B$N\e(B B-encoding
-\e$B@lMQ$N\e(B encoded-word \e$B$NI|9f2=%W%m%0%i%`$G$7$?!#\e(B@refill
-
-\e$B$=$N8e!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B @file{mime.el} \e$B$r85$K\e(B@file{tiny-mime.el} \e$B$H$$$&%W%m\e(B
-\e$B%0%i%`$r=q$-$^$9!#$3$l$O!"\e(BNemacs \e$B$H\e(B Mule \e$B$GF0:n$9$k\e(B encoded-word \e$B$NId9f\e(B
-\e$B2=!&I|9f2=%W%m%0%i%`$G$7$?!#\e(B@file{tiny-mime.el} \e$B$O\e(B B-encoding \e$B$@$1$G$J$/\e(B
-Q-encoding \e$B$b\e(Bsupport \e$B$7!"$^$?!"\e(BMULE \e$B$G07$&$3$H$,$G$-$k$5$^$6$^$J\e(B MIME
-charset (@ref{MIME charset}) \e$B$rF1;~$K;H$&$3$H$,$G$-$^$7$?!#$3$N;~!"\e(B
-Nemacs \e$B$H\e(B Mule \e$B$NAPJ}$r\e(B support \e$B$9$k$?$a$KMQ$$$i$l$?%F%/%K%C%/$O8e$K\e(B emu
-package \e$B$K$^$H$a$i$l$^$9!#\e(B@refill
-
-\e$B$3$N:"!"<i2,\e(B \e$BCNI'\e(B \e$B$O\e(B @file{tiny-mime.el} \e$B$r$5$^$6$^$J\e(B MUA \e$B$G;H$&$?$a$N@_\e(B
-\e$BDj=8$bG[I[$7$F$$$^$7$?$,!"$=$l$i$O8e$K\e(B@file{tiny-mime.el} \e$B$H$H$b$K#1$D$N\e(B
-package \e$B$K$^$H$a$i$l!"\e(Btm \e$B$H$$$&L>A0$GG[I[$5$l$^$9!#\e(B@refill
-
-\e$B<i2,\e(B \e$BCNI'\e(B \e$B$O$d$,$F!"\e(BMIME message \e$B$r1\Mw$9$k$?$a$N%W%m%0%i%`$G$"$k\e(B
-@file{tm-body.el} \e$B$r=q$-$^$9!#$3$l$O!"$9$0$K\e(B@file{tm-view.el} \e$B$H$$$&L>A0\e(B
-\e$B$KJQ$o$j$^$7$?$,!"$d$,$F!"$3$l$,\e(B@file{tiny-mime.el} \e$B$KBe$o$C$F!"\e(Btm \e$B$NCf\e(B
-\e$B3K$H$J$j$^$9!#\e(B@refill
-
-@file{tm-view.el} \e$B$OEvA3!"\e(BContent-Transfer-Encoding \e$B$r07$&I,MW$,$"$j$^$9!#\e(B
-\e$B$3$NL\E*$N$?$a$K!"\e(BMEL \e$B$,@0Hw$5$l$O$8$a$^$7$?!#\e(BBase64 \e$B$K4X$7$F$O\e(B
-@file{tiny-mime.el} \e$B$N\e(B code \e$B$,0\$5$l!"$^$?!"?7$?$K\e(BQuoted-Printable \e$B$N\e(B
-code \e$B$,DI2C$5$l$^$7$?!#$3$l$i$,\e(B@file{mel-b.el} \e$B$H\e(B @file{mel-q.el} \e$B$K$J$j\e(B
-\e$B$^$7$?!#\e(B@refill
-
-\e$B$^$?!"8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B uuencode \e$BMQ$N\e(B @file{mel-u.el} \e$B$,DI2C$5$l!"\e(B
-\e$B$=$N8e$K!">.NS\e(B \e$B=$J?\e(B \e$B;a$K$h$C$F\e(B x-gzip64 \e$BMQ$N\e(B@file{mel-g.el} \e$B$,DI2C$5$l$^\e(B
-\e$B$7$?!#\e(B@refill
-
-tm \e$B$G$O8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$K$h$C$F\e(B @file{tiny-mime.el} \e$B$N:F<BAu$,9T$o$l!"$3\e(B
-\e$B$N2aDx$G!"\e(BSTD 11 \e$B$N\e(B parser \e$B$,=q$+$l$^$7$?!#$3$l$O!"8=:_$N\e(B
-@file{std11.el} \e$B$KEv$?$j$^$9!#$^$?!"$3$N2aDx$G\e(B @file{tiny-mime.el} \e$B$OI|\e(B
-\e$B9f2=$r9T$&\e(B @file{tm-ew-d.el} \e$B$HId9f2=$r9T$&\e(B @file{tm-ew-e.el} \e$B$KJ,$1$i$l\e(B
-\e$B$^$7$?!#$3$NN><T$,8=:_$N\e(B @file{eword-decode.el} \e$B$H\e(B
-@file{eword-encode.el} \e$B$N@hAD$KEv$?$j$^$9!#\e(B@refill
-
-\e$B8e$K!"<i2,\e(B \e$BCNI'\e(B \e$B$i$K$h$C$F\e(B tm \e$B$NA4LL=q$-49$(:n6H$,9T$o$l!"$3$N2aDx$G!"\e(Btm
-\e$B$O\e(B APEL, MEL, SEMI, EMH, RMAIL-MIME, Gnus-MIME \e$B$J$I$KJ,$1$i$l$^$7$?!#$3\e(B
-\e$B$N$&$A$N\e(B MEL \e$B$,\e(B FLIM \e$B$ND>@\$N@hAD$KEv$?$j$^$9!#\e(B@refill
-
-\e$B8e$K!"\e(BAPEL \e$B$+$i\e(B @file{std11.el} \e$B$,0\$5$l!"$^$?!"\e(B@file{mailcap.el},
-@file{eword-decode.el} \e$B$*$h$S\e(B @file{eword-encode.el} \e$B$,\e(B SEMI \e$B$+$i0\$5$l!"\e(B
-package \e$B$NL>A0$,\e(B FLIM\e$B$H$J$j$^$9!#\e(B@refill
-
-\e$B$3$ND>A0$+$iEDCf\e(B \e$BE/\e(B \e$B;a$,$h$j\e(B RFC \e$B$KCi<B$J<BAu$r=q$-;O$a!"$3$l$O!"8=:_!"\e(B
-FLIM \e$B$N;^$G$"$k\e(B ``FLIM-FLAM'' \e$B$H$J$C$F$$$^$9!#\e(B
-
-
-@node Concept Index, Function Index, Appendix, Top
-@chapter \e$B35G0:w0z\e(B
-
-@printindex cp
-
-@node Function Index, Variable Index, Concept Index, Top
-@chapter \e$B4X?t:w0z\e(B
-
-@printindex fn
-
-@node Variable Index, , Function Index, Top
-@chapter \e$BJQ?t:w0z\e(B
-
-@printindex vr
-@bye
+++ /dev/null
-;;; mime-lib.el --- MIME library module
-
-;; Copyright (C) 1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of FLIM (Faithful Library about Internet Message).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime)
-
-(provide 'mime-lib)
-
-;;; mime-lib.el ends here
+++ /dev/null
-;;; mime-parse.el --- MIME message parser
-
-;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: parse, MIME, multimedia, mail, news
-
-;; This file is part of SEMI (Spadework for Emacs MIME Interfaces).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'emu)
-(require 'std11)
-(require 'mime-def)
-
-(eval-when-compile (require 'cl))
-
-
-;;; @ field parser
-;;;
-
-(defconst mime/content-parameter-value-regexp
- (concat "\\("
- std11-quoted-string-regexp
- "\\|[^; \t\n]*\\)"))
-
-(defconst mime::parameter-regexp
- (concat "^[ \t]*\;[ \t]*\\(" mime-token-regexp "\\)"
- "[ \t]*=[ \t]*\\(" mime/content-parameter-value-regexp "\\)"))
-
-(defun mime-parse-parameter (str)
- (if (string-match mime::parameter-regexp str)
- (let ((e (match-end 2)))
- (cons
- (cons (downcase (substring str (match-beginning 1) (match-end 1)))
- (std11-strip-quoted-string
- (substring str (match-beginning 2) e))
- )
- (substring str e)
- ))))
-
-
-;;; @ Content-Type
-;;;
-
-;;;###autoload
-(defun mime-parse-Content-Type (string)
- "Parse STRING as field-body of Content-Type field.
-Return value is
- (PRIMARY-TYPE SUBTYPE (NAME1 . VALUE1)(NAME2 . VALUE2) ...)
-or nil. PRIMARY-TYPE and SUBTYPE are symbol and NAME_n and VALUE_n
-are string."
- (setq string (std11-unfold-string string))
- (if (string-match `,(concat "^\\(" mime-token-regexp
- "\\)/\\(" mime-token-regexp "\\)") string)
- (let* ((type (downcase
- (substring string (match-beginning 1) (match-end 1))))
- (subtype (downcase
- (substring string (match-beginning 2) (match-end 2))))
- ret dest)
- (setq string (substring string (match-end 0)))
- (while (setq ret (mime-parse-parameter string))
- (setq dest (cons (car ret) dest)
- string (cdr ret))
- )
- (make-mime-content-type (intern type)(intern subtype)
- (nreverse dest))
- )))
-
-;;;###autoload
-(defun mime-read-Content-Type ()
- "Read field-body of Content-Type field from current-buffer,
-and return parsed it. Format of return value is as same as
-`mime-parse-Content-Type'."
- (let ((str (std11-field-body "Content-Type")))
- (if str
- (mime-parse-Content-Type str)
- )))
-
-
-;;; @ Content-Disposition
-;;;
-
-(defconst mime-disposition-type-regexp mime-token-regexp)
-
-;;;###autoload
-(defun mime-parse-Content-Disposition (string)
- "Parse STRING as field-body of Content-Disposition field."
- (setq string (std11-unfold-string string))
- (if (string-match `,(concat "^" mime-disposition-type-regexp) string)
- (let* ((e (match-end 0))
- (type (downcase (substring string 0 e)))
- ret dest)
- (setq string (substring string e))
- (while (setq ret (mime-parse-parameter string))
- (setq dest (cons (car ret) dest)
- string (cdr ret))
- )
- (cons (cons 'type (intern type))
- (nreverse dest))
- )))
-
-;;;###autoload
-(defun mime-read-Content-Disposition ()
- "Read field-body of Content-Disposition field from current-buffer,
-and return parsed it."
- (let ((str (std11-field-body "Content-Disposition")))
- (if str
- (mime-parse-Content-Disposition str)
- )))
-
-
-;;; @ Content-Transfer-Encoding
-;;;
-
-;;;###autoload
-(defun mime-parse-Content-Transfer-Encoding (string)
- "Parse STRING as field-body of Content-Transfer-Encoding field."
- (if (string-match "[ \t\n\r]+$" string)
- (setq string (match-string 0 string))
- )
- (downcase string))
-
-;;;###autoload
-(defun mime-read-Content-Transfer-Encoding (&optional default-encoding)
- "Read field-body of Content-Transfer-Encoding field from
-current-buffer, and return it.
-If is is not found, return DEFAULT-ENCODING."
- (let ((str (std11-field-body "Content-Transfer-Encoding")))
- (if str
- (mime-parse-Content-Transfer-Encoding str)
- default-encoding)))
-
-
-;;; @ message parser
-;;;
-
-(defun mime-parse-multipart (entity)
- (goto-char (point-min))
- (let* ((representation-type
- (mime-entity-representation-type-internal entity))
- (content-type (mime-entity-content-type-internal entity))
- (dash-boundary
- (concat "--" (mime-content-type-parameter content-type "boundary")))
- (delimiter (concat "\n" (regexp-quote dash-boundary)))
- (close-delimiter (concat delimiter "--[ \t]*$"))
- (rsep (concat delimiter "[ \t]*\n"))
- (dc-ctl
- (if (eq (mime-content-type-subtype content-type) 'digest)
- (make-mime-content-type 'message 'rfc822)
- (make-mime-content-type 'text 'plain)
- ))
- (header-end (mime-entity-header-end-internal entity))
- (body-end (mime-entity-body-end-internal entity)))
- (save-restriction
- (goto-char body-end)
- (narrow-to-region header-end
- (if (re-search-backward close-delimiter nil t)
- (match-beginning 0)
- body-end))
- (goto-char header-end)
- (if (re-search-forward rsep nil t)
- (let ((cb (match-end 0))
- ce ncb ret children
- (node-id (mime-entity-node-id-internal entity))
- (i 0))
- (while (re-search-forward rsep nil t)
- (setq ce (match-beginning 0))
- (setq ncb (match-end 0))
- (save-restriction
- (narrow-to-region cb ce)
- (setq ret (mime-parse-message representation-type dc-ctl
- entity (cons i node-id)))
- )
- (setq children (cons ret children))
- (goto-char (setq cb ncb))
- (setq i (1+ i))
- )
- (setq ce (point-max))
- (save-restriction
- (narrow-to-region cb ce)
- (setq ret (mime-parse-message representation-type dc-ctl
- entity (cons i node-id)))
- )
- (setq children (cons ret children))
- (mime-entity-set-children-internal entity (nreverse children))
- )
- (mime-entity-set-content-type-internal
- entity (make-mime-content-type 'message 'x-broken))
- nil)
- )))
-
-(defun mime-parse-encapsulated (entity)
- (mime-entity-set-children-internal
- entity
- (save-restriction
- (narrow-to-region (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity))
- (list (mime-parse-message
- (mime-entity-representation-type-internal entity) nil
- entity (cons 0 (mime-entity-node-id-internal entity))))
- )))
-
-(defun mime-parse-message (representation-type &optional default-ctl
- parent node-id)
- (let ((header-start (point-min))
- header-end
- body-start
- (body-end (point-max))
- content-type)
- (goto-char header-start)
- (if (re-search-forward "^$" nil t)
- (setq header-end (match-end 0)
- body-start (if (= header-end body-end)
- body-end
- (1+ header-end)))
- (setq header-end (point-min)
- body-start (point-min)))
- (save-restriction
- (narrow-to-region header-start header-end)
- (setq content-type (or (let ((str (std11-fetch-field "Content-Type")))
- (if str
- (mime-parse-Content-Type str)
- ))
- default-ctl))
- )
- (make-mime-entity-internal representation-type
- (current-buffer)
- content-type nil parent node-id
- (current-buffer)
- header-start header-end
- body-start body-end)
- ))
-
-
-;;; @ for buffer
-;;;
-
-;;;###autoload
-(defun mime-parse-buffer (&optional buffer representation-type)
- "Parse BUFFER as a MIME message.
-If buffer is omitted, it parses current-buffer."
- (save-excursion
- (if buffer (set-buffer buffer))
- (setq mime-message-structure
- (mime-parse-message (or representation-type 'buffer) nil))
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mime-parse)
-
-;;; mime-parse.el ends here
+++ /dev/null
-;;; mime.el --- MIME library module
-
-;; Copyright (C) 1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of FLIM (Faithful Library about Internet Message).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'alist)
-(require 'std11)
-(require 'mime-def)
-(require 'eword-decode)
-
-(autoload 'eword-encode-field "eword-encode"
- "Encode header field STRING, and return the result.")
-(autoload 'eword-encode-header "eword-encode"
- "Encode header fields to network representation, such as MIME encoded-word.")
-
-
-(autoload 'mime-parse-Content-Type "mime-parse"
- "Parse STRING as field-body of Content-Type field.")
-(autoload 'mime-read-Content-Type "mime-parse"
- "Read field-body of Content-Type field from current-buffer,
-and return parsed it.")
-
-(autoload 'mime-parse-Content-Disposition "mime-parse"
- "Parse STRING as field-body of Content-Disposition field.")
-(autoload 'mime-read-Content-Disposition "mime-parse"
- "Read field-body of Content-Disposition field from current-buffer,
-and return parsed it.")
-
-(autoload 'mime-parse-Content-Transfer-Encoding "mime-parse"
- "Parse STRING as field-body of Content-Transfer-Encoding field.")
-(autoload 'mime-read-Content-Transfer-Encoding "mime-parse"
- "Read field-body of Content-Transfer-Encoding field from
-current-buffer, and return it.")
-
-(autoload 'mime-parse-buffer "mime-parse"
- "Parse BUFFER as a MIME message.")
-
-
-;;; @ Entity Representation and Implementation
-;;;
-
-(defsubst mime-find-function (service type)
- (let ((imps (cdr (assq type mime-entity-implementation-alist))))
- (if imps
- (cdr (assq service imps))
- (require (intern (format "mm%s" type)))
- (cdr (assq service
- (cdr (assq type mime-entity-implementation-alist))))
- )))
-
-(defsubst mime-entity-function (entity service)
- (mime-find-function service
- (mime-entity-representation-type-internal entity)))
-
-(defsubst mime-entity-send (entity service &rest args)
- (apply (mime-find-function
- service (mime-entity-representation-type-internal entity))
- entity
- args))
-
-(defsubst mm-arglist-to-arguments (arglist)
- (let (dest)
- (while arglist
- (let ((arg (car arglist)))
- (or (memq arg '(&optional &rest))
- (setq dest (cons arg dest)))
- )
- (setq arglist (cdr arglist)))
- (nreverse dest)))
-
-(defmacro mm-define-generic (name args &optional doc)
- (if doc
- `(defun ,(intern (format "mime-%s" name)) ,args
- ,doc
- (mime-entity-send ,(car args) ',name
- ,@(mm-arglist-to-arguments (cdr args)))
- )
- `(defun ,(intern (format "mime-%s" name)) ,args
- (mime-entity-send ,(car args) ',name
- ,@(mm-arglist-to-arguments (cdr args)))
- )))
-
-(put 'mm-define-generic 'lisp-indent-function 'defun)
-
-(defun mime-open-entity (type location)
- "Open an entity and return it.
-TYPE is representation-type.
-LOCATION is location of entity. Specification of it is depended on
-representation-type."
- (let ((entity (make-mime-entity-internal type location)))
- (mime-entity-send entity 'initialize-instance)
- entity))
-
-(mm-define-generic entity-cooked-p (entity)
- "Return non-nil if contents of ENTITY has been already code-converted.")
-
-
-;;; @ Entity as node of message
-;;;
-
-(defun mime-entity-children (entity)
- (or (mime-entity-children-internal entity)
- (mime-entity-send entity 'entity-children)))
-
-(defalias 'mime-entity-node-id 'mime-entity-node-id-internal)
-
-(defun mime-entity-number (entity)
- "Return entity-number of ENTITY."
- (reverse (mime-entity-node-id-internal entity)))
-
-(defun mime-find-entity-from-number (entity-number &optional message)
- "Return entity from ENTITY-NUMBER in MESSAGE.
-If MESSAGE is not specified, `mime-message-structure' is used."
- (or message
- (setq message mime-message-structure))
- (let ((sn (car entity-number)))
- (if (null sn)
- message
- (let ((rc (nth sn (mime-entity-children message))))
- (if rc
- (mime-find-entity-from-number (cdr entity-number) rc)
- ))
- )))
-
-(defun mime-find-entity-from-node-id (entity-node-id &optional message)
- "Return entity from ENTITY-NODE-ID in MESSAGE.
-If MESSAGE is not specified, `mime-message-structure' is used."
- (mime-find-entity-from-number (reverse entity-node-id) message))
-
-(defun mime-entity-parent (entity &optional message)
- "Return mother entity of ENTITY.
-If MESSAGE is specified, it is regarded as root entity."
- (if (equal entity message)
- nil
- (mime-entity-parent-internal entity)))
-
-(defun mime-root-entity-p (entity &optional message)
- "Return t if ENTITY is root-entity (message).
-If MESSAGE is specified, it is regarded as root entity."
- (null (mime-entity-parent entity message)))
-
-
-;;; @ Entity Buffer
-;;;
-
-(defun mime-entity-buffer (entity)
- (or (mime-entity-buffer-internal entity)
- (mime-entity-send entity 'entity-buffer)))
-
-(mm-define-generic entity-point-min (entity)
- "Return the start point of ENTITY in the buffer which contains ENTITY.")
-
-(mm-define-generic entity-point-max (entity)
- "Return the end point of ENTITY in the buffer which contains ENTITY.")
-
-(defun mime-entity-header-start (entity)
- (or (mime-entity-header-start-internal entity)
- (mime-entity-send entity 'entity-header-start)))
-
-(defun mime-entity-header-end (entity)
- (or (mime-entity-header-end-internal entity)
- (mime-entity-send entity 'entity-header-end)))
-
-(defun mime-entity-body-start (entity)
- (or (mime-entity-body-start-internal entity)
- (mime-entity-send entity 'entity-body-start)))
-
-(defun mime-entity-body-end (entity)
- (or (mime-entity-body-end-internal entity)
- (mime-entity-send entity 'entity-body-end)))
-
-
-;;; @ Entity Header
-;;;
-
-(defun mime-fetch-field (field-name &optional entity)
- (or (symbolp field-name)
- (setq field-name (intern (capitalize (capitalize field-name)))))
- (or entity
- (setq entity mime-message-structure))
- (let* ((header (mime-entity-original-header-internal entity))
- (field-body (cdr (assq field-name header))))
- (or field-body
- (progn
- (if (setq field-body
- (mime-entity-send entity 'fetch-field
- (symbol-name field-name)))
- (mime-entity-set-original-header-internal
- entity (put-alist field-name field-body header))
- )
- field-body))))
-
-(defalias 'mime-entity-content-type 'mime-entity-content-type-internal)
-
-(defun mime-entity-content-disposition (entity)
- (or (mime-entity-content-disposition-internal entity)
- (let ((ret (mime-fetch-field 'Content-Disposition entity)))
- (if ret
- (let ((disposition (mime-parse-Content-Disposition ret)))
- (when disposition
- (mime-entity-set-content-disposition-internal
- entity disposition)
- disposition))))))
-
-(defun mime-entity-encoding (entity &optional default-encoding)
- (or (mime-entity-encoding-internal entity)
- (let ((encoding
- (or (let ((ret (mime-fetch-field
- 'Content-Transfer-Encoding entity)))
- (and ret (mime-parse-Content-Transfer-Encoding ret)))
- default-encoding "7bit")))
- (mime-entity-set-encoding-internal entity encoding)
- encoding)))
-
-(defun mime-read-field (field-name &optional entity)
- (or (symbolp field-name)
- (setq field-name (capitalize (capitalize field-name))))
- (or entity
- (setq entity mime-message-structure))
- (cond ((eq field-name 'Content-Type)
- (mime-entity-content-type entity)
- )
- ((eq field-name 'Content-Disposition)
- (mime-entity-content-disposition entity)
- )
- ((eq field-name 'Content-Transfer-Encoding)
- (mime-entity-encoding entity)
- )
- (t
- (let* ((header (mime-entity-parsed-header-internal entity))
- (field (cdr (assq field-name header))))
- (or field
- (let ((field-body (mime-fetch-field field-name entity)))
- (when field-body
- (cond ((memq field-name '(From Resent-From
- To Resent-To
- Cc Resent-Cc
- Bcc Resent-Bcc
- Reply-To Resent-Reply-To))
- (setq field (std11-parse-addresses
- (eword-lexical-analyze field-body)))
- )
- ((memq field-name '(Sender Resent-Sender))
- (setq field (std11-parse-address
- (eword-lexical-analyze field-body)))
- )
- ((memq field-name eword-decode-ignored-field-list)
- (setq field field-body))
- ((memq field-name eword-decode-structured-field-list)
- (setq field (eword-decode-structured-field-body
- field-body)))
- (t
- (setq field (ew-decode-field (symbol-name field-name)
- field-body))
- ))
- (mime-entity-set-parsed-header-internal
- entity (put-alist field-name field header))
- field)))))))
-
-(mm-define-generic insert-decoded-header (entity &optional invisible-fields
- visible-fields)
- "Insert before point a decoded header of ENTITY.")
-
-
-;;; @ Entity Attributes
-;;;
-
-(defun mime-entity-uu-filename (entity)
- (if (member (mime-entity-encoding entity) mime-uuencode-encoding-name-list)
- (save-excursion
- (set-buffer (mime-entity-buffer entity))
- (goto-char (mime-entity-body-start entity))
- (if (re-search-forward "^begin [0-9]+ "
- (mime-entity-body-end entity) t)
- (if (looking-at ".+$")
- (buffer-substring (match-beginning 0)(match-end 0))
- )))))
-
-(defun mime-entity-filename (entity)
- "Return filename of ENTITY."
- (or (mime-entity-uu-filename entity)
- (mime-content-disposition-filename
- (mime-entity-content-disposition entity))
- (cdr (let ((param (mime-content-type-parameters
- (mime-entity-content-type entity))))
- (or (assoc "name" param)
- (assoc "x-name" param))
- ))))
-
-
-(defsubst mime-entity-media-type (entity)
- (mime-content-type-primary-type (mime-entity-content-type entity)))
-(defsubst mime-entity-media-subtype (entity)
- (mime-content-type-subtype (mime-entity-content-type entity)))
-(defsubst mime-entity-parameters (entity)
- (mime-content-type-parameters (mime-entity-content-type entity)))
-(defsubst mime-entity-type/subtype (entity-info)
- (mime-type/subtype-string (mime-entity-media-type entity-info)
- (mime-entity-media-subtype entity-info)))
-
-
-;;; @ Entity Content
-;;;
-
-(mm-define-generic entity-content (entity)
- "Return content of ENTITY as byte sequence (string).")
-
-(mm-define-generic write-entity-content (entity filename)
- "Write content of ENTITY into FILENAME.")
-
-(mm-define-generic write-entity (entity filename)
- "Write header and body of ENTITY into FILENAME.")
-
-(mm-define-generic write-entity-body (entity filename)
- "Write body of ENTITY into FILENAME.")
-
-
-;;; @ end
-;;;
-
-(provide 'mime)
-
-;;; mime.el ends here
+++ /dev/null
-;;; mmbuffer.el --- MIME entity module for binary buffer
-
-;; Copyright (C) 1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of FLIM (Faithful Library about Internet Message).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mime)
-(require 'mime-parse)
-
-(mm-define-backend buffer)
-
-(mm-define-method initialize-instance ((entity buffer))
- (mime-entity-set-buffer-internal
- entity (mime-entity-location-internal entity))
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (setq mime-message-structure entity)
- (let ((header-start (point-min))
- header-end
- body-start
- (body-end (point-max)))
- (goto-char header-start)
- (if (re-search-forward "^$" nil t)
- (setq header-end (match-end 0)
- body-start (if (= header-end body-end)
- body-end
- (1+ header-end)))
- (setq header-end (point-min)
- body-start (point-min)))
- (save-restriction
- (narrow-to-region header-start header-end)
- (mime-entity-set-content-type-internal
- entity
- (let ((str (std11-fetch-field "Content-Type")))
- (if str
- (mime-parse-Content-Type str)
- )))
- )
- (mime-entity-set-header-start-internal entity header-start)
- (mime-entity-set-header-end-internal entity header-end)
- (mime-entity-set-body-start-internal entity body-start)
- (mime-entity-set-body-end-internal entity body-end)
- )))
-
-(mm-define-method entity-point-min ((entity buffer))
- (mime-entity-header-start-internal entity))
-
-(mm-define-method entity-point-max ((entity buffer))
- (mime-entity-body-end-internal entity))
-
-(mm-define-method fetch-field ((entity buffer) field-name)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (save-restriction
- (narrow-to-region (mime-entity-header-start-internal entity)
- (mime-entity-header-end-internal entity))
- (std11-fetch-field field-name)
- )))
-
-(mm-define-method entity-cooked-p ((entity buffer)) nil)
-
-(mm-define-method entity-children ((entity buffer))
- (let* ((content-type (mime-entity-content-type entity))
- (primary-type (mime-content-type-primary-type content-type)))
- (cond ((eq primary-type 'multipart)
- (mime-parse-multipart entity)
- )
- ((and (eq primary-type 'message)
- (memq (mime-content-type-subtype content-type)
- '(rfc822 news external-body)
- ))
- (mime-parse-encapsulated entity)
- ))
- ))
-
-(mm-define-method entity-content ((entity buffer))
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (mime-decode-string
- (buffer-substring (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity))
- (mime-entity-encoding entity))))
-
-(mm-define-method write-entity-content ((entity buffer) filename)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (mime-write-decoded-region (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity)
- filename
- (or (mime-entity-encoding entity) "7bit"))
- ))
-
-(mm-define-method write-entity ((entity buffer) filename)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (write-region-as-binary (mime-entity-header-start-internal entity)
- (mime-entity-body-end-internal entity)
- filename)
- ))
-
-(mm-define-method write-entity-body ((entity buffer) filename)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (write-region-as-binary (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity)
- filename)
- ))
-
-(defun mime-visible-field-p (field-name visible-fields invisible-fields)
- (or (catch 'found
- (while visible-fields
- (let ((regexp (car visible-fields)))
- (if (string-match regexp field-name)
- (throw 'found t)
- ))
- (setq visible-fields (cdr visible-fields))
- ))
- (catch 'found
- (while invisible-fields
- (let ((regexp (car invisible-fields)))
- (if (string-match regexp field-name)
- (throw 'found nil)
- ))
- (setq invisible-fields (cdr invisible-fields))
- )
- t)))
-
-(mm-define-method insert-decoded-header ((entity buffer)
- &optional invisible-fields
- visible-fields)
- (save-restriction
- (narrow-to-region (point)(point))
- (let ((the-buf (current-buffer))
- (src-buf (mime-entity-buffer-internal entity))
- (h-end (mime-entity-header-end-internal entity))
- beg p end field-name len field-body decoded)
- (save-excursion
- (set-buffer src-buf)
- (goto-char (mime-entity-header-start-internal entity))
- (save-restriction
- (narrow-to-region (point) h-end)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq beg (match-beginning 0)
- p (match-end 0)
- field-name (buffer-substring beg (1- p))
- len (string-width field-name)
- end (std11-field-end))
- (when (mime-visible-field-p field-name
- visible-fields invisible-fields)
- (save-excursion
- (set-buffer the-buf)
- (setq field-body (ew-lf-crlf-to-crlf
- (save-excursion
- (set-buffer src-buf)
- (buffer-substring p end))))
- (setq decoded (ew-decode-field field-name field-body))
- (unless (equal field-body decoded)
- (setq decoded (ew-crlf-refold
- decoded
- (1+ (string-width field-name))
- fill-column)))
- (insert field-name)
- (insert ":")
- (insert (ew-crlf-to-lf decoded))
- (insert "\n")
- ))))))))
-
-
-;;; @ end
-;;;
-
-(provide 'mmbuffer)
-
-;;; mmbuffer.el ends here
+++ /dev/null
-;;; mmcooked.el --- MIME entity implementation for binary buffer
-
-;; Copyright (C) 1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: MIME, multimedia, mail, news
-
-;; This file is part of FLIM (Faithful Library about Internet Message).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(require 'mmbuffer)
-
-(mm-define-backend cooked (buffer))
-
-(mm-define-method entity-cooked-p ((entity cooked)) t)
-
-(mm-define-method write-entity-content ((entity cooked) filename)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (let ((encoding (or (mime-entity-encoding entity) "7bit")))
- (if (member encoding '("7bit" "8bit" "binary"))
- (write-region (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity) filename)
- (mime-write-decoded-region (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity)
- filename encoding)
- ))))
-
-(mm-define-method write-entity ((entity cooked) filename)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (write-region (mime-entity-header-start-internal entity)
- (mime-entity-body-end-internal entity)
- filename)
- ))
-
-(mm-define-method write-entity-body ((entity cooked) filename)
- (save-excursion
- (set-buffer (mime-entity-buffer-internal entity))
- (write-region (mime-entity-body-start-internal entity)
- (mime-entity-body-end-internal entity)
- filename)
- ))
-
-(mm-define-method insert-decoded-header ((entity cooked)
- &optional invisible-fields
- visible-fields)
- (let (default-mime-charset)
- (funcall (mime-find-function 'insert-decoded-header 'buffer)
- entity invisible-fields visible-fields)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'mmcooked)
-
-;;; mmcooked.el ends here
+++ /dev/null
-(provide 'natset)
-
-;;; pacage for set of natural number.
-;; (natural number includes zero.)
-
-;;; predicates
-
-(defun natset-empty-p (ns)
- "Returns t if NS is empty."
- (equal ns ()))
-
-(defun natset-full-p (ns)
- "Returns t if NS is full."
- (equal ns '(0)))
-
-(defun natset-closed-p (ns)
- "Returns t if NS is closed."
- (= (logand (length ns) 1) 0))
-
-(defun natset-open-p (ns)
- "Returns t if NS is open."
- (= (logand (length ns) 1) 1))
-
-(defun natset-has-p (ns i)
- "Returns t if I is in NS."
- (not (natset-empty-p (natset-intersection (natset-single i) ns))))
-
-(defun natset-has-intersection-p (ns1 ns2)
- "Returns t if the intersection of NS1 and NS2 is not empty."
- (not (natset-empty-p (natset-intersection ns1 ns2))))
-
-(defun natset-include-p (ns1 ns2)
- "Returns t if NS1 includes NS2."
- (equal ns1 (natset-union ns1 ns2)))
-
-;;; accessor
-
-(defun natset-start (ns)
- "Returns start element in NS."
- (if (natset-empty-p ns)
- (error "natset empty" ns))
- (car ns))
-
-;;; primitive constructor
-
-(defun natset-empty ()
- "Returns a empty set.
-{}"
- ())
-
-(defun natset-full ()
- "Returns a full set.
-{i | 0 <= i}"
- '(0))
-
-(defun natset-single (&rest elts)
- "Returns a set contains singleton elements.
-{i | i in ELTS}"
- (let ((ns (natset-empty)))
- (while elts
- (setq ns (natset-union ns (natset-seg (car elts) (car elts)))
- elts (cdr elts)))
- ns))
-
-(defun natset-seg (start &optional end)
- "Returns a set contains one segment.
-{i | START <= i and i <= END}
-
-If END is nil, Return the set {i | START <= i}"
- (if end
- (list start (1+ end))
- (list start)))
-
-;;; complex constructor
-
-(defun natset-start-set (ns)
- "Returns a set contains start boundaries for NS.
-{i | NS does not contains i-1 and NS contains i}"
- (let ((res ()))
- (while ns
- (setq res (cons (1+ (car ns)) (cons (car ns) res))
- ns (cddr ns)))
- (nreverse res)))
-
-(defun natset-end-set (ns)
- "Returns a set contains end boundaries for NS.
-{i | NS contains i-1 and NS does not contains i}"
- (let ((res ()))
- (setq ns (cdr ns))
- (while ns
- (setq res (cons (1+ (car ns)) (cons (car ns) res))
- ns (cddr ns)))
- (nreverse res)))
-
-(defun natset-boundary-set (ns)
- "Returns a set contains start and end boundaries for NS.
-{i | NS contains i-1 xor NS does not contains i}"
- (natset-union (natset-start-set ns) (natset-end-set ns)))
-
-(defun natset-minmax (ns)
- "Returns a set contains a range from minimum to maximam of NS.
-{i | There exists j, k in NS, j <= i <= k}"
- (cond
- ((null ns) ())
- ((natset-open-p ns) (list (car ns)))
- (t
- (list (car ns) (nth (1- (length ns)) ns)))))
-
-;;; set operation
-
-(defun natset-negate (ns)
- "Returns negated set.
-{i | 0 <= i and NS does not contains i}"
- (if (and (consp ns) (= (car ns) 0))
- (cdr ns)
- (cons 0 ns)))
-
-(defun natset-union (&rest nss)
- "Returns unioned set.
-{i | There exists ns in NSS s.t ns contains i}"
- (let ((ns (natset-empty)))
- (while nss
- (setq ns (natset-union2 ns (car nss))
- nss (cdr nss)))
- ns))
-
-(defun natset-intersection (&rest nss)
- "Returns intersectioned set.
-{i | For all ns in NSS, ns contains i}"
- (natset-negate (apply 'natset-union (mapcar 'natset-negate nss))))
-
-(defun natset-sub (ns &rest nss)
- "Returns subtracted set.
-{i | NS contains i and for all ns in NSS, ns does not contains i}"
- (setq ns (natset-intersection ns (natset-negate (apply 'natset-union nss)))))
-
-;;; enumeration
-
-(defun natset-enum (ns)
- (if (natset-open-p ns)
- (error "natset open" ns))
- (let ((res ()) i j)
- (while ns
- (setq i (car ns)
- j (cadr ns)
- ns (cddr ns))
- (while (< i j)
- (setq res (cons i res)
- i (1+ i))))
- (nreverse res)))
-
-;;; code generation
-
-(defun natset-take-seg (ns)
- (cond
- ((null ns) (error "NS empty" ns))
- ((null (cdr ns)) (cons ns ()))
- (t (cons (list (car ns) (cadr ns)) (cddr ns)))))
-
-(defun natset-valid-filter (ns valid)
- "Returns a filtered set R.
-R includes intersection between VALID and NS.
-R does not include intersecton between VALID and negated NS.
-Element does not contained in VALID is unspecified."
- (let* ((res (natset-intersection valid ns))
- (len (length res))
- (u-set (natset-negate valid))
- tmp1 tmp2 tmpl)
- (while u-set
- (setq tmp1 (natset-take-seg u-set))
- (setq tmp2 (natset-union (car tmp1) res)
- tmpl (length tmp2))
- (if (or (< tmpl len) (and (= tmpl len) (equal 0 (car tmp2))))
- (setq res tmp2
- len (length tmp2)))
- (setq u-set (cdr tmp1)))
- res))
-
-(defun natset-gen-pred-exp (ns var &optional valid)
- "Returns a expression to test value of variable VAR is in NS or not.
-
-If VALID is not nil, the condition value of VAR is in VALID is assumed.
-It is impossible to set VALID to empty set because empty set is represented as nil."
- (if valid (setq ns (natset-valid-filter ns valid)))
- (cond
- ((null ns) nil)
- ((= (car ns) 0) (natset-gen-pred-exp-internal (cdr ns) var nil 0))
- (t (natset-gen-pred-exp-internal ns var t 0))))
-
-(defun natset-gen-ccl-branch (reg fail &rest clauses)
- (let* ((natsets (mapcar 'car clauses)))
- (let ((range (apply 'natset-union natsets)) tmp)
- (unless (natset-empty-p range)
- (setq natsets (cons (natset-negate range)
- natsets)
- clauses (cons (cons (car natsets)
- fail)
- clauses)))
- (setq range (natset-full)
- tmp natsets)
- (while tmp
- (setcar tmp
- (natset-intersection
- (car tmp)
- range))
- (setq range (natset-sub range (car tmp))
- tmp (cdr tmp))))
- (let ((b (natset-enum
- (natset-sub
- (apply
- 'natset-union
- (mapcar
- 'natset-boundary-set
- natsets))
- (natset-single 0)))))
- (natset-gen-ccl-branch-internal reg 0 b clauses))))
-
-(defun natset-gen-ccl-branch-internal (reg s b clauses)
- (cond
- ((null b)
- (cdr (natset-assoc s clauses)))
- ((null (cdr b))
- `(if (,reg < ,(car b))
- ,(cdr (natset-assoc s clauses))
- ,(cdr (natset-assoc (car b) clauses))))
- (t
- (let* ((div (natset-divide (length b)))
- (l (append b ()))
- (g (nthcdr (1- div) l))
- (m (cadr g)))
- (setq g (prog1 (cddr g) (setcdr g ())))
- `(if (,reg < ,m)
- ,(natset-gen-ccl-branch-internal reg s l clauses)
- ,(natset-gen-ccl-branch-internal reg m g clauses))))))
-
-(defun natset-assoc (key alist)
- (catch 'return
- (while alist
- (when (natset-has-p (caar alist) key)
- (throw 'return (car alist)))
- (setq alist (cdr alist)))
- nil))
-
-;;; internal primitive
-
-(defun natset-union2 (ns1 ns2)
- (let (res start (end t))
- (while (and end (or (consp ns1) (consp ns2)))
- (if (and (consp ns1) (or (null ns2) (<= (car ns1) (car ns2))))
- (setq start (car ns1)
- end (cadr ns1)
- ns1 (cddr ns1))
- (setq start (car ns2)
- end (cadr ns2)
- ns2 (cddr ns2)))
- (while (and end
- (or (and (consp ns1) (<= (car ns1) end))
- (and (consp ns2) (<= (car ns2) end))))
- (if (and (consp ns1) (<= (car ns1) end))
- (progn
- (if (or (null (cadr ns1)) (< end (cadr ns1))) (setq end (cadr ns1)))
- (setq ns1 (cddr ns1)))
- (progn
- (if (or (null (cadr ns2)) (< end (cadr ns2))) (setq end (cadr ns2)))
- (setq ns2 (cddr ns2)))))
- (setq res (cons start res))
- (if end (setq res (cons end res))))
- (nreverse res)))
-
-; n is greater or equal 2.
-; returns one of 1 .. n-1
-; (In reality, returns greatest 2^i - 1)
-(defun natset-divide (n)
- (let ((l 2) tmp)
- (while (< (setq tmp (lsh l 1)) n)
- (setq l tmp))
- (1- l)))
-
-(defun natset-gen-pred-exp-internal (ns var bool base)
- (cond
- ((null ns) (not bool))
- ((null (cdr ns))
- (if (<= (car ns) base)
- bool
- (if bool `(<= ,(car ns) ,var) `(< ,var ,(car ns)))))
- (t
- (let* ((div (natset-divide (length ns)))
- (l (append ns ()))
- (g (nthcdr (1- div) l))
- (m (cadr g))
- )
- (setq g (prog1 (cddr g) (setcdr g ())))
- `(if (< ,var ,m)
- ,(natset-gen-pred-exp-internal l var bool base)
- ,(natset-gen-pred-exp-internal
- g var (if (= (logand div 1) 1) bool (not bool)) m))))))
+++ /dev/null
-;;; regular expression
-
-;;; core
-;; rx ::= [] {}
-;; | () {""}
-;; | (* . rx) closure
-;; | (| . rxs) alternative
-;; | (rx . rx) concatination
-;; | (cc c1 c2 c3 ...) character class (natset)
-;;; sugar
-;; | (+ . rx) positive closure
-;; | "..." string
-;; | c character
-;; | (non-ascii) (cc 128)
-;; | [ range ... ]
-;; | [ ^ range ... ]
-;;; internal
-;; | pc primitive character class
-;; | (act . int) action
-
-;; range ::= c
-;; | "..."
-;; | (c1 c2) [c1 c2]
-;; | (c1 . c2) [c1 c2)
-;; | (c) [c1 inf)
-;; | non-ascii
-
-(require 'natset)
-(require 'automata)
-(provide 'rx)
-
-(defun rx-empty-p (rx) (equal rx []))
-(defun rx-null-p (rx) (equal rx ()))
-(defun rx-act-p (rx) (and (consp rx) (eq (car rx) 'act)))
-(defun rx-cc-p (rx) (and (consp rx) (eq (car rx) 'cc)))
-(defalias 'rx-pc-p 'integerp)
-
-(defun rx-clo-p (rx) (and (consp rx) (eq (car rx) '*)))
-(defun rx-alt-p (rx) (and (consp rx) (eq (car rx) '|)))
-(defun rx-con-p (rx) (and (consp rx) (or (null (car rx)) (not (symbolp (car rx))))))
-
-(defun rx-clo (rx)
- (cond
- ((rx-empty-p rx) ())
- ((rx-null-p rx) rx)
- ((rx-act-p rx) rx)
- ((rx-clo-p rx) rx)
- (t (cons '* rx))))
-(defun rx-alt (rxs)
- (cond
- ((null rxs) [])
- ((null (cdr rxs)) (car rxs))
- (t (cons '| rxs))))
-(defun rx-alt2 (r1 r2)
- (cond
- ((rx-empty-p r1) r2)
- ((rx-empty-p r2) r1)
- ((equal r1 r2) r1)
- (t (list '| r1 r2))))
-(defun rx-con (r1 r2)
- (cond
- ((rx-empty-p r1) [])
- ((rx-empty-p r2) [])
- ((rx-null-p r1) r2)
- ((rx-null-p r2) r1)
- ((and (rx-act-p r1) (rx-act-p r2)) r2)
- (t (cons r1 r2))))
-(defun rx-act (obj) (cons 'act obj))
-(defun rx-cc (cs) (cons 'cc cs))
-
-;;; regular expression preprocessing
-
-(defun rx-range-to-ns (range)
- (cond
- ((char-or-char-int-p range)
- (natset-single (char-int range)))
- ((stringp range)
- (let ((ns (natset-empty)) (chars (string-to-int-list range)))
- (while chars
- (setq ns (natset-union ns (natset-single (car chars)))
- chars (cdr chars)))
- ns))
- ((eq range 'non-ascii)
- (natset-seg 128))
- ((and (consp range)
- (null (cdr range))
- (char-or-char-int-p (car range)))
- (natset-seg (car range)))
- ((and (consp range)
- (consp (cdr range))
- (null (cddr range))
- (char-or-char-int-p (car range))
- (char-or-char-int-p (cadr range)))
- (natset-seg (char-int (car range)) (char-int (cadr range))))
- ((and (consp range)
- (char-or-char-int-p (car range))
- (char-or-char-int-p (cdr range)))
- (natset-seg (char-int (car range)) (1- (char-int (cdr range)))))
- (t (error "not range %s" range))))
-
-(defun rx-vcc-to-rx (vcc)
- (let ((l (append vcc ())) neg ns)
- (if (eq (car l) '^)
- (setq l (cdr l)
- neg t))
- (setq l (mapcar 'rx-range-to-ns l))
- (setq ns (natset-empty))
- (while l
- (setq ns (natset-union ns (car l))
- l (cdr l)))
- (if neg (setq ns (natset-negate ns)))
- (if (natset-empty-p ns)
- []
- (rx-cc ns))))
-
-(defun rx-desugar (rx)
- (cond
- ((stringp rx) (rx-desugar (string-to-int-list rx)))
- ((vectorp rx) (rx-vcc-to-rx rx))
- ((char-or-char-int-p rx) (rx-cc (natset-single (char-int rx))))
- ((and (consp rx) (eq (car rx) '+)) (let ((r (rx-desugar (cdr rx)))) (rx-con r (rx-clo r))))
- ((and (consp rx) (eq (car rx) 'non-ascii)) (rx-cc (natset-seg 128)))
- ((and (consp rx) (eq (car rx) 'any)) (rx-cc (natset-full)))
- ((rx-empty-p rx) rx)
- ((rx-null-p rx) rx)
- ((rx-act-p rx) rx)
- ((rx-cc-p rx) rx)
- ((rx-clo-p rx) (rx-clo (rx-desugar (cdr rx))))
- ((rx-alt-p rx) (rx-alt (mapcar 'rx-desugar (cdr rx))))
- ((rx-con-p rx) (rx-con (rx-desugar (car rx)) (rx-desugar (cdr rx))))
- (t (error "not rx %s" rx))))
-
-(defun rx-collect-cc (rx &optional cs)
- (cond
- ((rx-empty-p rx) cs)
- ((rx-null-p rx) cs)
- ((rx-act-p rx) cs)
- ((rx-cc-p rx) (append (cdr rx) cs))
- ((rx-clo-p rx) (rx-collect-cc (cdr rx) cs))
- ((rx-alt-p rx)
- (setq rx (cdr rx))
- (while (consp rx)
- (setq cs (rx-collect-cc (car rx) cs)
- rx (cdr rx)))
- cs)
- ((rx-con-p rx) (rx-collect-cc (car rx) (rx-collect-cc (cdr rx) cs)))
- (t (error "not rx %s" rx))))
-
-(defun rx-cc-to-pc (rx cs)
- (cond
- ((rx-empty-p rx) rx)
- ((rx-null-p rx) rx)
- ((rx-act-p rx) rx)
- ((rx-cc-p rx)
- (setq rx (cdr rx))
- (let (res)
- (while (and (consp rx) (consp (cdr rx)))
- (let ((start (car rx)) (end (cadr rx)))
- (setq res (rx-filter (lambda (c) (and (<= start c) (< c end))) cs res)
- rx (cddr rx))))
- (if (consp rx)
- (let ((start (car rx)))
- (setq res (rx-filter (lambda (c) (<= start c)) cs res))))
- (rx-alt (rx-sort-int res))))
- ((rx-clo-p rx) (rx-clo (rx-cc-to-pc (cdr rx) cs)))
- ((rx-alt-p rx) (rx-alt (mapcar (lambda (r) (rx-cc-to-pc r cs)) (cdr rx))))
- ((rx-con-p rx) (rx-con (rx-cc-to-pc (car rx) cs) (rx-cc-to-pc (cdr rx) cs)))
- (t (error "not rx %s" rx))))
-
-(defun rx-categolize-char (rx)
- (let ((cs (rx-sort-int (rx-collect-cc rx))))
- (cons
- (rx-cc-to-pc rx cs)
- cs)))
-
-;;; simplification
-
-(defun rx-nullable-p (rx)
- (cond
- ((rx-empty-p rx) nil)
- ((rx-null-p rx) t)
- ((rx-act-p rx) t)
- ((rx-pc-p rx) nil)
- ((rx-clo-p rx) t)
- ((rx-alt-p rx)
- (setq rx (cdr rx))
- (while (and (consp rx) (not (rx-nullable-p (car rx))))
- (setq rx (cdr rx)))
- (consp rx))
- ((rx-con-p rx)
- (and (rx-nullable-p (car rx)) (rx-nullable-p (cdr rx))))
- (t (error "not rx %s" rx))))
-
-(defun rx-simplify (rx)
- (cond
- ((rx-empty-p rx) rx)
- ((rx-null-p rx) rx)
- ((rx-act-p rx) rx)
- ((rx-pc-p rx) rx)
- ((rx-clo-p rx)
- (rx-clo (rx-simplify (cdr rx))))
- ((rx-alt-p rx)
- (let ((in (cdr rx)) (out ())
- already-simplified-list already-simplified)
- (while (consp in)
- (setq rx (car in)
- in (cdr in)
- already-simplified (car already-simplified-list)
- already-simplified-list (cdr already-simplified-list))
- (if (rx-alt-p rx)
- (setq in (append (cdr rx) in))
- (progn
- (setq rx (if already-simplified rx (rx-simplify rx)))
- (cond
- ((rx-empty-p rx)) ; [] is identity element for alternation.
- ((rx-alt-p rx)
- (setq in (append (cdr rx) in)
- already-simplified-list (append (make-list (length (cdr rx)) nil) already-simplified-list)))
- ((not (member rx out))
- (setq out (cons rx out)))))))
- (rx-alt (rx-sort-rx (reverse out)))))
- ((rx-con-p rx)
- (catch 'return
- (let ((in (list (car rx) (cdr rx))) (out ())
- already-simplified-list already-simplified)
- (while (consp in)
- (setq rx (car in)
- in (cdr in)
- already-simplified (car already-simplified-list)
- already-simplified-list (cdr already-simplified-list))
- (if (rx-con-p rx)
- (setq in (rx-cons* (car rx) (cdr rx) in))
- (progn
- (setq rx (if already-simplified rx (rx-simplify rx)))
- (cond
- ((rx-empty-p rx) ; [] is zero element for concatination.
- (throw 'return []))
- ((rx-null-p rx)) ; () is identity element for concatination.
- ((rx-con-p rx)
- (setq in (rx-cons* (car rx) (cdr rx) in))
- already-simplified-list (rx-cons* t t already-simplified-list))
- (t
- (setq out (cons rx out)))))))
- (if (= (length out) 1)
- (car out)
- (nreverse out)))))
- (t (error "not rx %s" rx))))
-
-;;; head property
-
-(defun rx-head-pcs (rx &optional res)
- (cond
- ((rx-empty-p rx) res)
- ((rx-null-p rx) res)
- ((rx-act-p rx) res)
- ((rx-pc-p rx) (if (member rx res) res (cons rx res)))
- ((rx-clo-p rx) (rx-head-pcs (cdr rx) res))
- ((rx-alt-p rx)
- (setq rx (cdr rx))
- (while (consp rx)
- (setq res (rx-head-pcs (car rx) res)
- rx (cdr rx)))
- res)
- ((rx-con-p rx)
- (setq res (rx-head-pcs (car rx) res))
- (if (rx-nullable-p (car rx))
- (setq res (rx-head-pcs (cdr rx) res)))
- res)
- (t (error "not rx %s" rx))))
-
-(defun rx-head-act (rx &optional res)
- (cond
- ((rx-empty-p rx) res)
- ((rx-null-p rx) res)
- ((rx-act-p rx) (rx-better-act rx res))
- ((rx-pc-p rx) res)
- ((rx-clo-p rx) (rx-head-act (cdr rx) res))
- ((rx-alt-p rx)
- (setq rx (cdr rx))
- (while (consp rx)
- (setq res (rx-head-act (car rx) res)
- rx (cdr rx)))
- res)
- ((rx-con-p rx)
- (setq res (rx-head-act (car rx) res))
- (if (rx-nullable-p (car rx))
- (setq res (rx-head-act (cdr rx) res)))
- res)
- (t (error "not rx %s" rx))))
-
-;;; stepping
-
-(defun rx-step-internal (rx pc)
- (cond
- ((rx-empty-p rx) [])
- ((rx-null-p rx) [])
- ((rx-act-p rx) [])
- ((rx-pc-p rx) (if (= rx pc) () []))
- ((rx-clo-p rx) (rx-con (rx-step-internal (cdr rx) pc) rx))
- ((rx-alt-p rx) (rx-alt (mapcar (lambda (r) (rx-step-internal r pc)) (cdr rx))))
- ((rx-con-p rx)
- (if (rx-nullable-p (car rx))
- (rx-alt2
- (rx-con (rx-step-internal (car rx) pc) (cdr rx))
- (rx-step-internal (cdr rx) pc))
- (rx-con (rx-step-internal (car rx) pc) (cdr rx))))
- (t (error "not rx %s" rx))))
-
-(defun rx-step (rx &rest pcs)
- (while (consp pcs)
- (setq rx (rx-simplify (rx-step-internal rx (car pcs)))
- pcs (cdr pcs)))
- rx)
-
-;;; utilities
-
-(defun rx-better-act (a1 a2)
- (cond
- ((null a2) a1)
- ((< (cdr a1) (cdr a2)) a1)
- (t a2)))
-
-(defun rx-cons* (elt &rest lst)
- (if (null lst)
- elt
- (cons elt (apply 'rx-cons* (car lst) (cdr lst)))))
-
-(defun rx-filter (fun lst &optional rest)
- (if (null lst)
- rest
- (if (funcall fun (car lst))
- (cons (car lst) (rx-filter fun (cdr lst) rest))
- (rx-filter fun (cdr lst) rest))))
-
-(defun rx-cmp-index (rx)
- (cond
- ((rx-null-p rx) (list 0))
- ((rx-act-p rx) (list 1 (cdr rx)))
- ((rx-empty-p rx) (list 2))
- ((rx-clo-p rx) (list 3 (cdr rx)))
- ((rx-alt-p rx) (cons 4 (cdr rx)))
- ((rx-con-p rx) (list 5 (car rx) (cdr rx)))
- ((rx-pc-p rx) (list 6 rx))
- (t (error "not rx %s" rx))))
-
-(defun rx-cmp-int (i1 i2)
- (cond
- ((< i1 i2) -1)
- ((> i1 i2) 1)
- (t 0)))
-
-(defun rx-cmp-rx (r1 r2)
- (let ((i1 (rx-cmp-index r1)) (i2 (rx-cmp-index r2)))
- (cond
- ((< (car i1) (car i2)) -1)
- ((> (car i1) (car i2)) 1)
- (t (setq i1 (cdr i1)
- i2 (cdr i2))
- (catch 'result
- (while (and (consp i1) (consp i2))
- (let ((r (if (and (integerp (car i1)) (integerp (car i2)))
- (rx-cmp-int (car i1) (car i2))
- (rx-cmp-rx (car i1) (car i2)))))
- (if (not (zerop r))
- (throw 'result r)
- (setq i1 (cdr i1)
- i2 (cdr i2)))))
- (if (null i1) (if (null i2) 0 -1) 1))))))
-
-(defun rx-sort-rx (l &optional res)
- (if (null l)
- res
- (let ((e (car l)) lt gt cmp)
- (setq l (cdr l))
- (while (consp l)
- (setq cmp (rx-cmp-rx (car l) e))
- (cond
- ((< cmp 0) (setq lt (cons (car l) lt)))
- ((< 0 cmp) (setq gt (cons (car l) gt))))
- (setq l (cdr l)))
- (rx-sort-rx lt (cons e (rx-sort-rx gt res))))))
-
-(defun rx-sort-int (l &optional res)
- (if (null l)
- res
- (let ((e (car l)) lt gt)
- (setq l (cdr l))
- (while (consp l)
- (cond
- ((< (car l) e) (setq lt (cons (car l) lt)))
- ((< e (car l)) (setq gt (cons (car l) gt))))
- (setq l (cdr l)))
- (rx-sort-int lt (cons e (rx-sort-int gt res))))))
-
+++ /dev/null
-;;; std11.el --- STD 11 functions for GNU Emacs
-
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
-
-;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Keywords: mail, news, RFC 822, STD 11
-
-;; This file is part of MU (Message Utilities).
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 2, or (at
-;; your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
-
-;;; Code:
-
-(autoload 'buffer-substring-no-properties "emu")
-(autoload 'member "emu")
-
-
-;;; @ field
-;;;
-
-(defconst std11-field-name-regexp "[!-9;-~]+")
-(defconst std11-field-head-regexp
- (concat "^" std11-field-name-regexp ":"))
-(defconst std11-next-field-head-regexp
- (concat "\n" std11-field-name-regexp ":"))
-
-(defun std11-field-end ()
- "Move to end of field and return this point. [std11.el]"
- (if (re-search-forward std11-next-field-head-regexp nil t)
- (goto-char (match-beginning 0))
- (if (re-search-forward "^$" nil t)
- (goto-char (1- (match-beginning 0)))
- (end-of-line)
- ))
- (point)
- )
-
-(defsubst std11-fetch-field (name)
- "Return the value of the header field NAME.
-The buffer is expected to be narrowed to just the headers of the message."
- (save-excursion
- (goto-char (point-min))
- (let ((case-fold-search t))
- (if (re-search-forward (concat "^" name ":[ \t]*") nil t)
- (buffer-substring-no-properties (match-end 0) (std11-field-end))
- ))))
-
-(defun std11-field-body (name &optional boundary)
- "Return the value of the header field NAME.
-If BOUNDARY is not nil, it is used as message header separator."
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (std11-fetch-field name)
- )))
-
-(defun std11-find-field-body (field-names &optional boundary)
- "Return the first found field-body specified by FIELD-NAMES
-of the message header in current buffer. If BOUNDARY is not nil, it is
-used as message header separator. [std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (let ((case-fold-search t)
- field-name)
- (catch 'tag
- (while (setq field-name (car field-names))
- (goto-char (point-min))
- (if (re-search-forward (concat "^" field-name ":[ \t]*") nil t)
- (throw 'tag
- (buffer-substring-no-properties
- (match-end 0) (std11-field-end)))
- )
- (setq field-names (cdr field-names))
- ))))))
-
-(defun std11-field-bodies (field-names &optional default-value boundary)
- "Return list of each field-bodies of FIELD-NAMES of the message header
-in current buffer. If BOUNDARY is not nil, it is used as message
-header separator. [std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (let* ((case-fold-search t)
- (dest (make-list (length field-names) default-value))
- (s-rest field-names)
- (d-rest dest)
- field-name)
- (while (setq field-name (car s-rest))
- (goto-char (point-min))
- (if (re-search-forward (concat "^" field-name ":[ \t]*") nil t)
- (setcar d-rest
- (buffer-substring-no-properties
- (match-end 0) (std11-field-end)))
- )
- (setq s-rest (cdr s-rest)
- d-rest (cdr d-rest))
- )
- dest))))
-
-
-;;; @ unfolding
-;;;
-
-(defun std11-unfold-string (string)
- "Unfold STRING as message header field. [std11.el]"
- (let ((dest ""))
- (while (string-match "\n\\([ \t]\\)" string)
- (setq dest (concat dest
- (substring string 0 (match-beginning 0))
- (match-string 1 string)
- ))
- (setq string (substring string (match-end 0)))
- )
- (concat dest string)
- ))
-
-
-;;; @ header
-;;;
-
-(defun std11-narrow-to-header (&optional boundary)
- "Narrow to the message header.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (narrow-to-region
- (goto-char (point-min))
- (if (re-search-forward
- (concat "^\\(" (regexp-quote (or boundary "")) "\\)?$")
- nil t)
- (match-beginning 0)
- (point-max)
- )))
-
-(defun std11-header-string (regexp &optional boundary)
- "Return string of message header fields matched by REGEXP.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (let ((case-fold-search t))
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let (field header)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq field
- (buffer-substring (match-beginning 0) (std11-field-end)))
- (if (string-match regexp field)
- (setq header (concat header field "\n"))
- ))
- header)
- ))))
-
-(defun std11-header-string-except (regexp &optional boundary)
- "Return string of message header fields not matched by REGEXP.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (let ((case-fold-search t))
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let (field header)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq field
- (buffer-substring (match-beginning 0) (std11-field-end)))
- (if (not (string-match regexp field))
- (setq header (concat header field "\n"))
- ))
- header)
- ))))
-
-(defun std11-collect-field-names (&optional boundary)
- "Return list of all field-names of the message header in current buffer.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
- (save-excursion
- (save-restriction
- (std11-narrow-to-header boundary)
- (goto-char (point-min))
- (let (dest name)
- (while (re-search-forward std11-field-head-regexp nil t)
- (setq name (buffer-substring-no-properties
- (match-beginning 0)(1- (match-end 0))))
- (or (member name dest)
- (setq dest (cons name dest))
- )
- )
- dest))))
-
-
-;;; @ quoted-string
-;;;
-
-(defun std11-wrap-as-quoted-pairs (string specials)
- (let (dest
- (i 0)
- (b 0)
- (len (length string))
- )
- (while (< i len)
- (let ((chr (aref string i)))
- (if (memq chr specials)
- (setq dest (concat dest (substring string b i) "\\")
- b i)
- ))
- (setq i (1+ i))
- )
- (concat dest (substring string b))
- ))
-
-(defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
-
-(defun std11-wrap-as-quoted-string (string)
- "Wrap STRING as RFC 822 quoted-string. [std11.el]"
- (concat "\""
- (std11-wrap-as-quoted-pairs string std11-non-qtext-char-list)
- "\""))
-
-(defun std11-strip-quoted-pair (string)
- "Strip quoted-pairs in STRING. [std11.el]"
- (let (dest
- (b 0)
- (i 0)
- (len (length string))
- )
- (while (< i len)
- (let ((chr (aref string i)))
- (if (eq chr ?\\)
- (setq dest (concat dest (substring string b i))
- b (1+ i)
- i (+ i 2))
- (setq i (1+ i))
- )))
- (concat dest (substring string b))
- ))
-
-(defun std11-strip-quoted-string (string)
- "Strip quoted-string STRING. [std11.el]"
- (let ((len (length string)))
- (or (and (>= len 2)
- (let ((max (1- len)))
- (and (eq (aref string 0) ?\")
- (eq (aref string max) ?\")
- (std11-strip-quoted-pair (substring string 1 max))
- )))
- string)))
-
-
-;;; @ lexical analyze
-;;;
-
-(defconst std11-space-chars " \t\n")
-(defconst std11-spaces-regexp (` (, (concat "[" std11-space-chars "]+"))))
-(defconst std11-special-char-list '(?\] ?\[
- ?\( ?\) ?< ?> ?@
- ?, ?\; ?: ?\\ ?\"
- ?.))
-(defconst std11-atom-regexp
- (` (, (concat "^[^" std11-special-char-list std11-space-chars "]+"))))
-
-(defun std11-analyze-spaces (string)
- (if (and (string-match std11-spaces-regexp string)
- (= (match-beginning 0) 0))
- (let ((end (match-end 0)))
- (cons (cons 'spaces (substring string 0 end))
- (substring string end)
- ))))
-
-(defun std11-analyze-special (str)
- (if (and (> (length str) 0)
- (memq (aref str 0) std11-special-char-list))
- (cons (cons 'specials (substring str 0 1))
- (substring str 1)
- )))
-
-(defun std11-analyze-atom (str)
- (if (string-match std11-atom-regexp str)
- (let ((end (match-end 0)))
- (cons (cons 'atom (substring str 0 end))
- (substring str end)
- ))))
-
-(defun std11-check-enclosure (str open close &optional recursive from)
- (let ((len (length str))
- (i (or from 0))
- )
- (if (and (> len i)
- (eq (aref str i) open))
- (let (p chr)
- (setq i (1+ i))
- (catch 'tag
- (while (< i len)
- (setq chr (aref str i))
- (cond ((eq chr ?\\)
- (setq i (1+ i))
- (if (>= i len)
- (throw 'tag nil)
- )
- (setq i (1+ i))
- )
- ((eq chr close)
- (throw 'tag (1+ i))
- )
- ((eq chr open)
- (if (and recursive
- (setq p (std11-check-enclosure
- str open close recursive i))
- )
- (setq i p)
- (throw 'tag nil)
- ))
- (t
- (setq i (1+ i))
- ))
- ))))))
-
-(defun std11-analyze-quoted-string (str)
- (let ((p (std11-check-enclosure str ?\" ?\")))
- (if p
- (cons (cons 'quoted-string (substring str 1 (1- p)))
- (substring str p))
- )))
-
-(defun std11-analyze-domain-literal (str)
- (let ((p (std11-check-enclosure str ?\[ ?\])))
- (if p
- (cons (cons 'domain-literal (substring str 1 (1- p)))
- (substring str p))
- )))
-
-(defun std11-analyze-comment (str)
- (let ((p (std11-check-enclosure str ?\( ?\) t)))
- (if p
- (cons (cons 'comment (substring str 1 (1- p)))
- (substring str p))
- )))
-
-(defun std11-lexical-analyze (str)
- (let (dest ret)
- (while (not (string-equal str ""))
- (setq ret
- (or (std11-analyze-quoted-string str)
- (std11-analyze-domain-literal str)
- (std11-analyze-comment str)
- (std11-analyze-spaces str)
- (std11-analyze-special str)
- (std11-analyze-atom str)
- '((error) . "")
- ))
- (setq dest (cons (car ret) dest))
- (setq str (cdr ret))
- )
- (nreverse dest)
- ))
-
-
-;;; @ parser
-;;;
-
-(defun std11-ignored-token-p (token)
- (let ((type (car token)))
- (or (eq type 'spaces)(eq type 'comment))
- ))
-
-(defun std11-parse-token (lal)
- (let (token itl)
- (while (and lal
- (progn
- (setq token (car lal))
- (std11-ignored-token-p token)
- ))
- (setq lal (cdr lal))
- (setq itl (cons token itl))
- )
- (cons (nreverse (cons token itl))
- (cdr lal))
- ))
-
-(defun std11-parse-ascii-token (lal)
- (let (token itl parsed token-value)
- (while (and lal
- (setq token (car lal))
- (or (std11-ignored-token-p token)
- (if (and (setq token-value (cdr token))
- (find-non-ascii-charset-string token-value)
- )
- (setq token nil)
- )))
- (setq lal (cdr lal))
- (setq itl (cons token itl))
- )
- (if (and token
- (setq parsed (nreverse (cons token itl)))
- )
- (cons parsed (cdr lal))
- )))
-
-(defun std11-parse-token-or-comment (lal)
- (let (token itl)
- (while (and lal
- (progn
- (setq token (car lal))
- (eq (car token) 'spaces)
- ))
- (setq lal (cdr lal))
- (setq itl (cons token itl))
- )
- (cons (nreverse (cons token itl))
- (cdr lal))
- ))
-
-(defun std11-parse-word (lal)
- (let ((ret (std11-parse-ascii-token lal)))
- (if ret
- (let ((elt (car ret))
- (rest (cdr ret))
- )
- (if (or (assq 'atom elt)
- (assq 'quoted-string elt))
- (cons (cons 'word elt) rest)
- )))))
-
-(defun std11-parse-word-or-comment (lal)
- (let ((ret (std11-parse-token-or-comment lal)))
- (if ret
- (let ((elt (car ret))
- (rest (cdr ret))
- )
- (cond ((or (assq 'atom elt)
- (assq 'quoted-string elt))
- (cons (cons 'word elt) rest)
- )
- ((assq 'comment elt)
- (cons (cons 'comment-word elt) rest)
- ))
- ))))
-
-(defun std11-parse-phrase (lal)
- (let (ret phrase)
- (while (setq ret (std11-parse-word-or-comment lal))
- (setq phrase (append phrase (cdr (car ret))))
- (setq lal (cdr ret))
- )
- (if phrase
- (cons (cons 'phrase phrase) lal)
- )))
-
-(defun std11-parse-local-part (lal)
- (let ((ret (std11-parse-word lal)))
- (if ret
- (let ((local-part (cdr (car ret))) dot)
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq dot (car ret))
- (string-equal (cdr (assq 'specials dot)) ".")
- (setq ret (std11-parse-word (cdr ret)))
- (setq local-part
- (append local-part dot (cdr (car ret)))
- )
- (setq lal (cdr ret))
- ))
- (cons (cons 'local-part local-part) lal)
- ))))
-
-(defun std11-parse-sub-domain (lal)
- (let ((ret (std11-parse-ascii-token lal)))
- (if ret
- (let ((sub-domain (car ret)))
- (if (or (assq 'atom sub-domain)
- (assq 'domain-literal sub-domain)
- )
- (cons (cons 'sub-domain sub-domain)
- (cdr ret)
- )
- )))))
-
-(defun std11-parse-domain (lal)
- (let ((ret (std11-parse-sub-domain lal)))
- (if ret
- (let ((domain (cdr (car ret))) dot)
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq dot (car ret))
- (string-equal (cdr (assq 'specials dot)) ".")
- (setq ret (std11-parse-sub-domain (cdr ret)))
- (setq domain
- (append domain dot (cdr (car ret)))
- )
- (setq lal (cdr ret))
- ))
- (cons (cons 'domain domain) lal)
- ))))
-
-(defun std11-parse-at-domain (lal)
- (let ((ret (std11-parse-ascii-token lal)) at-sign)
- (if (and ret
- (setq at-sign (car ret))
- (string-equal (cdr (assq 'specials at-sign)) "@")
- (setq ret (std11-parse-domain (cdr ret)))
- )
- (cons (cons 'at-domain (append at-sign (cdr (car ret))))
- (cdr ret))
- )))
-
-(defun std11-parse-addr-spec (lal)
- (let ((ret (std11-parse-local-part lal))
- addr)
- (if (and ret
- (prog1
- (setq addr (cdr (car ret)))
- (setq lal (cdr ret))
- (and (setq ret (std11-parse-at-domain lal))
- (setq addr (append addr (cdr (car ret))))
- (setq lal (cdr ret))
- )))
- (cons (cons 'addr-spec addr) lal)
- )))
-
-(defun std11-parse-route (lal)
- (let ((ret (std11-parse-at-domain lal))
- route comma colon)
- (if (and ret
- (progn
- (setq route (cdr (car ret)))
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq comma (car ret))
- (string-equal (cdr (assq 'specials comma)) ",")
- (setq ret (std11-parse-at-domain (cdr ret)))
- )
- (setq route (append route comma (cdr (car ret))))
- (setq lal (cdr ret))
- )
- (and (setq ret (std11-parse-ascii-token lal))
- (setq colon (car ret))
- (string-equal (cdr (assq 'specials colon)) ":")
- (setq route (append route colon))
- )
- ))
- (cons (cons 'route route)
- (cdr ret)
- )
- )))
-
-(defun std11-parse-route-addr (lal)
- (let ((ret (std11-parse-ascii-token lal))
- < route addr-spec >)
- (if (and ret
- (setq < (car ret))
- (string-equal (cdr (assq 'specials <)) "<")
- (setq lal (cdr ret))
- (progn (and (setq ret (std11-parse-route lal))
- (setq route (cdr (car ret)))
- (setq lal (cdr ret))
- )
- (setq ret (std11-parse-addr-spec lal))
- )
- (setq addr-spec (cdr (car ret)))
- (setq lal (cdr ret))
- (setq ret (std11-parse-ascii-token lal))
- (setq > (car ret))
- (string-equal (cdr (assq 'specials >)) ">")
- )
- (cons (cons 'route-addr (append route addr-spec))
- (cdr ret)
- )
- )))
-
-(defun std11-parse-phrase-route-addr (lal)
- (let ((ret (std11-parse-phrase lal)) phrase)
- (if ret
- (progn
- (setq phrase (cdr (car ret)))
- (setq lal (cdr ret))
- ))
- (if (setq ret (std11-parse-route-addr lal))
- (cons (list 'phrase-route-addr
- phrase
- (cdr (car ret)))
- (cdr ret))
- )))
-
-(defun std11-parse-mailbox (lal)
- (let ((ret (or (std11-parse-phrase-route-addr lal)
- (std11-parse-addr-spec lal)))
- mbox comment)
- (if (and ret
- (prog1
- (setq mbox (car ret))
- (setq lal (cdr ret))
- (if (and (setq ret (std11-parse-token-or-comment lal))
- (setq comment (cdr (assq 'comment (car ret))))
- )
- (setq lal (cdr ret))
- )))
- (cons (list 'mailbox mbox comment)
- lal)
- )))
-
-(defun std11-parse-group (lal)
- (let ((ret (std11-parse-phrase lal))
- phrase colon comma mbox semicolon)
- (if (and ret
- (setq phrase (cdr (car ret)))
- (setq lal (cdr ret))
- (setq ret (std11-parse-ascii-token lal))
- (setq colon (car ret))
- (string-equal (cdr (assq 'specials colon)) ":")
- (setq lal (cdr ret))
- (progn
- (and (setq ret (std11-parse-mailbox lal))
- (setq mbox (list (car ret)))
- (setq lal (cdr ret))
- (progn
- (while (and (setq ret (std11-parse-ascii-token lal))
- (setq comma (car ret))
- (string-equal
- (cdr (assq 'specials comma)) ",")
- (setq lal (cdr ret))
- (setq ret (std11-parse-mailbox lal))
- (setq mbox (cons (car ret) mbox))
- (setq lal (cdr ret))
- )
- )))
- (and (setq ret (std11-parse-ascii-token lal))
- (setq semicolon (car ret))
- (string-equal (cdr (assq 'specials semicolon)) ";")
- )))
- (cons (list 'group phrase (nreverse mbox))
- (cdr ret)
- )
- )))
-
-(defun std11-parse-address (lal)
- (or (std11-parse-group lal)
- (std11-parse-mailbox lal)
- ))
-
-(defun std11-parse-addresses (lal)
- (let ((ret (std11-parse-address lal)))
- (if ret
- (let ((dest (list (car ret))))
- (setq lal (cdr ret))
- (while (and (setq ret (std11-parse-ascii-token lal))
- (string-equal (cdr (assq 'specials (car ret))) ",")
- (setq ret (std11-parse-address (cdr ret)))
- )
- (setq dest (cons (car ret) dest))
- (setq lal (cdr ret))
- )
- (nreverse dest)
- ))))
-
-(defun std11-parse-msg-id (lal)
- (let ((ret (std11-parse-ascii-token lal))
- < addr-spec >)
- (if (and ret
- (setq < (car ret))
- (string-equal (cdr (assq 'specials <)) "<")
- (setq lal (cdr ret))
- (setq ret (std11-parse-addr-spec lal))
- (setq addr-spec (car ret))
- (setq lal (cdr ret))
- (setq ret (std11-parse-ascii-token lal))
- (setq > (car ret))
- (string-equal (cdr (assq 'specials >)) ">")
- )
- (cons (cons 'msg-id (cdr addr-spec))
- (cdr ret))
- )))
-
-
-;;; @ composer
-;;;
-
-(defun std11-addr-to-string (seq)
- "Return string from lexical analyzed list SEQ
-represents addr-spec of RFC 822. [std11.el]"
- (mapconcat (function
- (lambda (token)
- (let ((name (car token)))
- (cond
- ((eq name 'spaces) "")
- ((eq name 'comment) "")
- ((eq name 'quoted-string)
- (concat "\"" (cdr token) "\""))
- (t (cdr token)))
- )))
- seq "")
- )
-
-(defun std11-address-string (address)
- "Return string of address part from parsed ADDRESS of RFC 822.
-\[std11.el]"
- (cond ((eq (car address) 'group)
- (mapconcat (function std11-address-string)
- (car (cdr address))
- ", ")
- )
- ((eq (car address) 'mailbox)
- (let ((addr (nth 1 address)))
- (std11-addr-to-string
- (if (eq (car addr) 'phrase-route-addr)
- (nth 2 addr)
- (cdr addr)
- )
- )))))
-
-(defun std11-full-name-string (address)
- "Return string of full-name part from parsed ADDRESS of RFC 822.
-\[std11.el]"
- (cond ((eq (car address) 'group)
- (mapconcat (function
- (lambda (token)
- (cdr token)
- ))
- (nth 1 address) "")
- )
- ((eq (car address) 'mailbox)
- (let ((addr (nth 1 address))
- (comment (nth 2 address))
- phrase)
- (if (eq (car addr) 'phrase-route-addr)
- (setq phrase
- (mapconcat
- (function
- (lambda (token)
- (let ((type (car token)))
- (cond ((eq type 'quoted-string)
- (std11-strip-quoted-pair (cdr token))
- )
- ((eq type 'comment)
- (concat
- "("
- (std11-strip-quoted-pair (cdr token))
- ")")
- )
- (t
- (cdr token)
- )))))
- (nth 1 addr) ""))
- )
- (cond ((> (length phrase) 0) phrase)
- (comment (std11-strip-quoted-pair comment))
- )
- ))))
-
-(defun std11-msg-id-string (msg-id)
- "Return string from parsed MSG-ID of RFC 822."
- (concat "<" (std11-addr-to-string (cdr msg-id)) ">")
- )
-
-(defun std11-fill-msg-id-list-string (string &optional column)
- "Fill list of msg-id in STRING, and return the result."
- (or column
- (setq column 12))
- (let ((lal (std11-lexical-analyze string))
- dest)
- (let ((ret (std11-parse-msg-id lal)))
- (if ret
- (let* ((str (std11-msg-id-string (car ret)))
- (len (length str)))
- (setq lal (cdr ret))
- (if (> (+ len column) 76)
- (setq dest (concat dest "\n " str)
- column (1+ len))
- (setq dest str
- column (+ column len))
- ))
- (setq dest (concat dest (cdr (car lal)))
- lal (cdr lal))
- ))
- (while lal
- (let ((ret (std11-parse-msg-id lal)))
- (if ret
- (let* ((str (std11-msg-id-string (car ret)))
- (len (1+ (length str))))
- (setq lal (cdr ret))
- (if (> (+ len column) 76)
- (setq dest (concat dest "\n " str)
- column len)
- (setq dest (concat dest " " str)
- column (+ column len))
- ))
- (setq dest (concat dest (cdr (car lal)))
- lal (cdr lal))
- )))
- dest))
-
-
-;;; @ parser with lexical analyzer
-;;;
-
-(defun std11-parse-address-string (string)
- "Parse STRING as mail address. [std11.el]"
- (std11-parse-address (std11-lexical-analyze string))
- )
-
-(defun std11-parse-addresses-string (string)
- "Parse STRING as mail address list. [std11.el]"
- (std11-parse-addresses (std11-lexical-analyze string))
- )
-
-(defun std11-extract-address-components (string)
- "Extract full name and canonical address from STRING.
-Returns a list of the form (FULL-NAME CANONICAL-ADDRESS).
-If no name can be extracted, FULL-NAME will be nil. [std11.el]"
- (let* ((structure (car (std11-parse-address-string
- (std11-unfold-string string))))
- (phrase (std11-full-name-string structure))
- (address (std11-address-string structure))
- )
- (list phrase address)
- ))
-
-
-;;; @ end
-;;;
-
-(provide 'std11)
-
-;;; std11.el ends here