Skip to main content

anyxml_encoding/
ebcdic.rs

1use crate::{DecodeError, Decoder, EncodeError, Encoder};
2
3macro_rules! impl_ebcdic_encoder_and_decoder {
4    ( $name:ident, $namelit:literal, $encoder:ident, $decoder:ident, $etable:ident, $dtable:ident ) => {
5        #[doc = concat!("Encoding name for ", $namelit, ".")]
6        pub const $name: &str = $namelit;
7        #[doc = concat!("Encoder for ", $namelit, ".")]
8        #[allow(non_camel_case_types)]
9        pub struct $encoder;
10        impl Encoder for $encoder {
11            fn name(&self) -> &'static str {
12                $name
13            }
14
15            fn encode(
16                &mut self,
17                src: &str,
18                dst: &mut [u8],
19                finish: bool,
20            ) -> Result<(usize, usize), EncodeError> {
21                if src.is_empty() {
22                    return if finish {
23                        Ok((0, 0))
24                    } else {
25                        Err(EncodeError::InputIsEmpty)
26                    };
27                }
28
29                if dst.is_empty() {
30                    return Err(EncodeError::OutputTooShort);
31                }
32
33                let (mut read, mut write) = (0, 0);
34                for c in src.chars() {
35                    let b = c as u32;
36                    read += c.len_utf8();
37                    let pos = $etable
38                        .binary_search_by_key(&b, |k| k.0 as u32)
39                        .map_err(|_| EncodeError::Unmappable { read, write, c })?;
40                    dst[write] = $etable[pos].1;
41                    write += 1;
42                    if write == dst.len() {
43                        break;
44                    }
45                }
46                Ok((read, write))
47            }
48        }
49
50        #[doc = concat!("Decoder for ", $namelit, ".")]
51        #[allow(non_camel_case_types)]
52        pub struct $decoder;
53        impl Decoder for $decoder {
54            fn name(&self) -> &'static str {
55                $name
56            }
57
58            fn decode(
59                &mut self,
60                src: &[u8],
61                dst: &mut String,
62                finish: bool,
63            ) -> Result<(usize, usize), DecodeError> {
64                if src.is_empty() {
65                    return if finish {
66                        Ok((0, 0))
67                    } else {
68                        Err(DecodeError::InputIsEmpty)
69                    };
70                }
71                let len = dst.capacity() - dst.len();
72                if len < 4 {
73                    return Err(DecodeError::OutputTooShort);
74                }
75
76                let (mut read, mut write) = (0, 0);
77                for &b in src {
78                    let c = $dtable[b as usize];
79                    let l = c.len_utf8();
80                    if write + l > len {
81                        break;
82                    }
83                    read += 1;
84                    if c == char::REPLACEMENT_CHARACTER {
85                        return Err(DecodeError::Malformed {
86                            read,
87                            write,
88                            length: 1,
89                            offset: 0,
90                        });
91                    }
92                    dst.push(c);
93                    write += l;
94                }
95                Ok((read, write))
96            }
97        }
98    };
99}
100
101// The IBMxxx table is based on information from the CDRA Repository published by IBM.
102// According to RFC1345, there is supposed to be a character set named EBCDIC-xxx, but
103// it appears to be somewhat lacking in control characters. Since I cannot reach the
104// source presented in RFC1345, I only support IBMxxx, which has a reliable source of
105// information.
106
107impl_ebcdic_encoder_and_decoder!(
108    IBM037,
109    "IBM037",
110    IBM037Encoder,
111    IBM037Decoder,
112    IBM_37_ENCODE_TABLE,
113    IBM_37_DECODE_TABLE
114);
115const IBM_37_DECODE_TABLE: [char; 256] = [
116    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
117    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
118    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
119    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
120    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
121    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
122    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
123    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
124    '\u{a2}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
125    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{24}',
126    '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
127    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
128    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
129    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
130    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
131    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
132    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
133    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
134    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
135    '\u{dd}', '\u{de}', '\u{ae}', '\u{5e}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
136    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5b}', '\u{5d}', '\u{af}', '\u{a8}', '\u{b4}',
137    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
138    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
139    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
140    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
141    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
142    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
143    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
144    '\u{da}', '\u{9f}',
145];
146const IBM_37_ENCODE_TABLE: &[(u16, u8)] = &[
147    (0, 0),
148    (1, 1),
149    (2, 2),
150    (3, 3),
151    (4, 55),
152    (5, 45),
153    (6, 46),
154    (7, 47),
155    (8, 22),
156    (9, 5),
157    (10, 37),
158    (11, 11),
159    (12, 12),
160    (13, 13),
161    (14, 14),
162    (15, 15),
163    (16, 16),
164    (17, 17),
165    (18, 18),
166    (19, 19),
167    (20, 60),
168    (21, 61),
169    (22, 50),
170    (23, 38),
171    (24, 24),
172    (25, 25),
173    (26, 63),
174    (27, 39),
175    (28, 28),
176    (29, 29),
177    (30, 30),
178    (31, 31),
179    (32, 64),
180    (33, 90),
181    (34, 127),
182    (35, 123),
183    (36, 91),
184    (37, 108),
185    (38, 80),
186    (39, 125),
187    (40, 77),
188    (41, 93),
189    (42, 92),
190    (43, 78),
191    (44, 107),
192    (45, 96),
193    (46, 75),
194    (47, 97),
195    (48, 240),
196    (49, 241),
197    (50, 242),
198    (51, 243),
199    (52, 244),
200    (53, 245),
201    (54, 246),
202    (55, 247),
203    (56, 248),
204    (57, 249),
205    (58, 122),
206    (59, 94),
207    (60, 76),
208    (61, 126),
209    (62, 110),
210    (63, 111),
211    (64, 124),
212    (65, 193),
213    (66, 194),
214    (67, 195),
215    (68, 196),
216    (69, 197),
217    (70, 198),
218    (71, 199),
219    (72, 200),
220    (73, 201),
221    (74, 209),
222    (75, 210),
223    (76, 211),
224    (77, 212),
225    (78, 213),
226    (79, 214),
227    (80, 215),
228    (81, 216),
229    (82, 217),
230    (83, 226),
231    (84, 227),
232    (85, 228),
233    (86, 229),
234    (87, 230),
235    (88, 231),
236    (89, 232),
237    (90, 233),
238    (91, 186),
239    (92, 224),
240    (93, 187),
241    (94, 176),
242    (95, 109),
243    (96, 121),
244    (97, 129),
245    (98, 130),
246    (99, 131),
247    (100, 132),
248    (101, 133),
249    (102, 134),
250    (103, 135),
251    (104, 136),
252    (105, 137),
253    (106, 145),
254    (107, 146),
255    (108, 147),
256    (109, 148),
257    (110, 149),
258    (111, 150),
259    (112, 151),
260    (113, 152),
261    (114, 153),
262    (115, 162),
263    (116, 163),
264    (117, 164),
265    (118, 165),
266    (119, 166),
267    (120, 167),
268    (121, 168),
269    (122, 169),
270    (123, 192),
271    (124, 79),
272    (125, 208),
273    (126, 161),
274    (127, 7),
275    (128, 32),
276    (129, 33),
277    (130, 34),
278    (131, 35),
279    (132, 36),
280    (133, 21),
281    (134, 6),
282    (135, 23),
283    (136, 40),
284    (137, 41),
285    (138, 42),
286    (139, 43),
287    (140, 44),
288    (141, 9),
289    (142, 10),
290    (143, 27),
291    (144, 48),
292    (145, 49),
293    (146, 26),
294    (147, 51),
295    (148, 52),
296    (149, 53),
297    (150, 54),
298    (151, 8),
299    (152, 56),
300    (153, 57),
301    (154, 58),
302    (155, 59),
303    (156, 4),
304    (157, 20),
305    (158, 62),
306    (159, 255),
307    (160, 65),
308    (161, 170),
309    (162, 74),
310    (163, 177),
311    (164, 159),
312    (165, 178),
313    (166, 106),
314    (167, 181),
315    (168, 189),
316    (169, 180),
317    (170, 154),
318    (171, 138),
319    (172, 95),
320    (173, 202),
321    (174, 175),
322    (175, 188),
323    (176, 144),
324    (177, 143),
325    (178, 234),
326    (179, 250),
327    (180, 190),
328    (181, 160),
329    (182, 182),
330    (183, 179),
331    (184, 157),
332    (185, 218),
333    (186, 155),
334    (187, 139),
335    (188, 183),
336    (189, 184),
337    (190, 185),
338    (191, 171),
339    (192, 100),
340    (193, 101),
341    (194, 98),
342    (195, 102),
343    (196, 99),
344    (197, 103),
345    (198, 158),
346    (199, 104),
347    (200, 116),
348    (201, 113),
349    (202, 114),
350    (203, 115),
351    (204, 120),
352    (205, 117),
353    (206, 118),
354    (207, 119),
355    (208, 172),
356    (209, 105),
357    (210, 237),
358    (211, 238),
359    (212, 235),
360    (213, 239),
361    (214, 236),
362    (215, 191),
363    (216, 128),
364    (217, 253),
365    (218, 254),
366    (219, 251),
367    (220, 252),
368    (221, 173),
369    (222, 174),
370    (223, 89),
371    (224, 68),
372    (225, 69),
373    (226, 66),
374    (227, 70),
375    (228, 67),
376    (229, 71),
377    (230, 156),
378    (231, 72),
379    (232, 84),
380    (233, 81),
381    (234, 82),
382    (235, 83),
383    (236, 88),
384    (237, 85),
385    (238, 86),
386    (239, 87),
387    (240, 140),
388    (241, 73),
389    (242, 205),
390    (243, 206),
391    (244, 203),
392    (245, 207),
393    (246, 204),
394    (247, 225),
395    (248, 112),
396    (249, 221),
397    (250, 222),
398    (251, 219),
399    (252, 220),
400    (253, 141),
401    (254, 142),
402    (255, 223),
403];
404
405impl_ebcdic_encoder_and_decoder!(
406    IBM273,
407    "IBM273",
408    IBM273Encoder,
409    IBM273Decoder,
410    IBM_273_ENCODE_TABLE,
411    IBM_273_DECODE_TABLE
412);
413const IBM_273_DECODE_TABLE: [char; 256] = [
414    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
415    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
416    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
417    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
418    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
419    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
420    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
421    '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
422    '\u{c4}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
423    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{7e}', '\u{dc}', '\u{24}',
424    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{5b}', '\u{c0}',
425    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
426    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
427    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
428    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
429    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
430    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
431    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{df}', '\u{73}', '\u{74}',
432    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
433    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
434    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
435    '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
436    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{fc}',
437    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
438    '\u{b9}', '\u{fb}', '\u{7d}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{d6}', '\u{f7}', '\u{53}',
439    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
440    '\u{5c}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
441    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{5d}', '\u{d9}',
442    '\u{da}', '\u{9f}',
443];
444const IBM_273_ENCODE_TABLE: &[(u16, u8)] = &[
445    (0, 0),
446    (1, 1),
447    (2, 2),
448    (3, 3),
449    (4, 55),
450    (5, 45),
451    (6, 46),
452    (7, 47),
453    (8, 22),
454    (9, 5),
455    (10, 37),
456    (11, 11),
457    (12, 12),
458    (13, 13),
459    (14, 14),
460    (15, 15),
461    (16, 16),
462    (17, 17),
463    (18, 18),
464    (19, 19),
465    (20, 60),
466    (21, 61),
467    (22, 50),
468    (23, 38),
469    (24, 24),
470    (25, 25),
471    (26, 63),
472    (27, 39),
473    (28, 28),
474    (29, 29),
475    (30, 30),
476    (31, 31),
477    (32, 64),
478    (33, 79),
479    (34, 127),
480    (35, 123),
481    (36, 91),
482    (37, 108),
483    (38, 80),
484    (39, 125),
485    (40, 77),
486    (41, 93),
487    (42, 92),
488    (43, 78),
489    (44, 107),
490    (45, 96),
491    (46, 75),
492    (47, 97),
493    (48, 240),
494    (49, 241),
495    (50, 242),
496    (51, 243),
497    (52, 244),
498    (53, 245),
499    (54, 246),
500    (55, 247),
501    (56, 248),
502    (57, 249),
503    (58, 122),
504    (59, 94),
505    (60, 76),
506    (61, 126),
507    (62, 110),
508    (63, 111),
509    (64, 181),
510    (65, 193),
511    (66, 194),
512    (67, 195),
513    (68, 196),
514    (69, 197),
515    (70, 198),
516    (71, 199),
517    (72, 200),
518    (73, 201),
519    (74, 209),
520    (75, 210),
521    (76, 211),
522    (77, 212),
523    (78, 213),
524    (79, 214),
525    (80, 215),
526    (81, 216),
527    (82, 217),
528    (83, 226),
529    (84, 227),
530    (85, 228),
531    (86, 229),
532    (87, 230),
533    (88, 231),
534    (89, 232),
535    (90, 233),
536    (91, 99),
537    (92, 236),
538    (93, 252),
539    (94, 95),
540    (95, 109),
541    (96, 121),
542    (97, 129),
543    (98, 130),
544    (99, 131),
545    (100, 132),
546    (101, 133),
547    (102, 134),
548    (103, 135),
549    (104, 136),
550    (105, 137),
551    (106, 145),
552    (107, 146),
553    (108, 147),
554    (109, 148),
555    (110, 149),
556    (111, 150),
557    (112, 151),
558    (113, 152),
559    (114, 153),
560    (115, 162),
561    (116, 163),
562    (117, 164),
563    (118, 165),
564    (119, 166),
565    (120, 167),
566    (121, 168),
567    (122, 169),
568    (123, 67),
569    (124, 187),
570    (125, 220),
571    (126, 89),
572    (127, 7),
573    (128, 32),
574    (129, 33),
575    (130, 34),
576    (131, 35),
577    (132, 36),
578    (133, 21),
579    (134, 6),
580    (135, 23),
581    (136, 40),
582    (137, 41),
583    (138, 42),
584    (139, 43),
585    (140, 44),
586    (141, 9),
587    (142, 10),
588    (143, 27),
589    (144, 48),
590    (145, 49),
591    (146, 26),
592    (147, 51),
593    (148, 52),
594    (149, 53),
595    (150, 54),
596    (151, 8),
597    (152, 56),
598    (153, 57),
599    (154, 58),
600    (155, 59),
601    (156, 4),
602    (157, 20),
603    (158, 62),
604    (159, 255),
605    (160, 65),
606    (161, 170),
607    (162, 176),
608    (163, 177),
609    (164, 159),
610    (165, 178),
611    (166, 204),
612    (167, 124),
613    (168, 189),
614    (169, 180),
615    (170, 154),
616    (171, 138),
617    (172, 186),
618    (173, 202),
619    (174, 175),
620    (175, 188),
621    (176, 144),
622    (177, 143),
623    (178, 234),
624    (179, 250),
625    (180, 190),
626    (181, 160),
627    (182, 182),
628    (183, 179),
629    (184, 157),
630    (185, 218),
631    (186, 155),
632    (187, 139),
633    (188, 183),
634    (189, 184),
635    (190, 185),
636    (191, 171),
637    (192, 100),
638    (193, 101),
639    (194, 98),
640    (195, 102),
641    (196, 74),
642    (197, 103),
643    (198, 158),
644    (199, 104),
645    (200, 116),
646    (201, 113),
647    (202, 114),
648    (203, 115),
649    (204, 120),
650    (205, 117),
651    (206, 118),
652    (207, 119),
653    (208, 172),
654    (209, 105),
655    (210, 237),
656    (211, 238),
657    (212, 235),
658    (213, 239),
659    (214, 224),
660    (215, 191),
661    (216, 128),
662    (217, 253),
663    (218, 254),
664    (219, 251),
665    (220, 90),
666    (221, 173),
667    (222, 174),
668    (223, 161),
669    (224, 68),
670    (225, 69),
671    (226, 66),
672    (227, 70),
673    (228, 192),
674    (229, 71),
675    (230, 156),
676    (231, 72),
677    (232, 84),
678    (233, 81),
679    (234, 82),
680    (235, 83),
681    (236, 88),
682    (237, 85),
683    (238, 86),
684    (239, 87),
685    (240, 140),
686    (241, 73),
687    (242, 205),
688    (243, 206),
689    (244, 203),
690    (245, 207),
691    (246, 106),
692    (247, 225),
693    (248, 112),
694    (249, 221),
695    (250, 222),
696    (251, 219),
697    (252, 208),
698    (253, 141),
699    (254, 142),
700    (255, 223),
701];
702
703impl_ebcdic_encoder_and_decoder!(
704    IBM274,
705    "IBM274",
706    IBM274Encoder,
707    IBM274Decoder,
708    IBM_274_ENCODE_TABLE,
709    IBM_274_DECODE_TABLE
710);
711const IBM_274_DECODE_TABLE: [char; 256] = [
712    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
713    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
714    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
715    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
716    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
717    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
718    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
719    '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
720    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
721    '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
722    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
723    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
724    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
725    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
726    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
727    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
728    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
729    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
730    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
731    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
732    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
733    '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
734    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
735    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
736    '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
737    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
738    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
739    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
740    '\u{da}', '\u{9f}',
741];
742const IBM_274_ENCODE_TABLE: &[(u16, u8)] = &[
743    (0, 0),
744    (1, 1),
745    (2, 2),
746    (3, 3),
747    (4, 55),
748    (5, 45),
749    (6, 46),
750    (7, 47),
751    (8, 22),
752    (9, 5),
753    (10, 37),
754    (11, 11),
755    (12, 12),
756    (13, 13),
757    (14, 14),
758    (15, 15),
759    (16, 16),
760    (17, 17),
761    (18, 18),
762    (19, 19),
763    (20, 60),
764    (21, 61),
765    (22, 50),
766    (23, 38),
767    (24, 24),
768    (25, 25),
769    (26, 63),
770    (27, 39),
771    (28, 28),
772    (29, 29),
773    (30, 30),
774    (31, 31),
775    (32, 64),
776    (33, 79),
777    (34, 127),
778    (35, 123),
779    (36, 91),
780    (37, 108),
781    (38, 80),
782    (39, 125),
783    (40, 77),
784    (41, 93),
785    (42, 92),
786    (43, 78),
787    (44, 107),
788    (45, 96),
789    (46, 75),
790    (47, 97),
791    (48, 240),
792    (49, 241),
793    (50, 242),
794    (51, 243),
795    (52, 244),
796    (53, 245),
797    (54, 246),
798    (55, 247),
799    (56, 248),
800    (57, 249),
801    (58, 122),
802    (59, 94),
803    (60, 76),
804    (61, 126),
805    (62, 110),
806    (63, 111),
807    (64, 68),
808    (65, 193),
809    (66, 194),
810    (67, 195),
811    (68, 196),
812    (69, 197),
813    (70, 198),
814    (71, 199),
815    (72, 200),
816    (73, 201),
817    (74, 209),
818    (75, 210),
819    (76, 211),
820    (77, 212),
821    (78, 213),
822    (79, 214),
823    (80, 215),
824    (81, 216),
825    (82, 217),
826    (83, 226),
827    (84, 227),
828    (85, 228),
829    (86, 229),
830    (87, 230),
831    (88, 231),
832    (89, 232),
833    (90, 233),
834    (91, 74),
835    (92, 72),
836    (93, 90),
837    (94, 95),
838    (95, 109),
839    (96, 121),
840    (97, 129),
841    (98, 130),
842    (99, 131),
843    (100, 132),
844    (101, 133),
845    (102, 134),
846    (103, 135),
847    (104, 136),
848    (105, 137),
849    (106, 145),
850    (107, 146),
851    (108, 147),
852    (109, 148),
853    (110, 149),
854    (111, 150),
855    (112, 151),
856    (113, 152),
857    (114, 153),
858    (115, 162),
859    (116, 163),
860    (117, 164),
861    (118, 165),
862    (119, 166),
863    (120, 167),
864    (121, 168),
865    (122, 169),
866    (123, 81),
867    (124, 187),
868    (125, 84),
869    (126, 189),
870    (127, 7),
871    (128, 32),
872    (129, 33),
873    (130, 34),
874    (131, 35),
875    (132, 36),
876    (133, 21),
877    (134, 6),
878    (135, 23),
879    (136, 40),
880    (137, 41),
881    (138, 42),
882    (139, 43),
883    (140, 44),
884    (141, 9),
885    (142, 10),
886    (143, 27),
887    (144, 48),
888    (145, 49),
889    (146, 26),
890    (147, 51),
891    (148, 52),
892    (149, 53),
893    (150, 54),
894    (151, 8),
895    (152, 56),
896    (153, 57),
897    (154, 58),
898    (155, 59),
899    (156, 4),
900    (157, 20),
901    (158, 62),
902    (159, 255),
903    (160, 65),
904    (161, 170),
905    (162, 176),
906    (163, 177),
907    (164, 159),
908    (165, 178),
909    (166, 221),
910    (167, 181),
911    (168, 161),
912    (169, 180),
913    (170, 154),
914    (171, 138),
915    (172, 186),
916    (173, 202),
917    (174, 175),
918    (175, 188),
919    (176, 144),
920    (177, 143),
921    (178, 234),
922    (179, 250),
923    (180, 190),
924    (181, 160),
925    (182, 182),
926    (183, 179),
927    (184, 157),
928    (185, 218),
929    (186, 155),
930    (187, 139),
931    (188, 183),
932    (189, 184),
933    (190, 185),
934    (191, 171),
935    (192, 100),
936    (193, 101),
937    (194, 98),
938    (195, 102),
939    (196, 99),
940    (197, 103),
941    (198, 158),
942    (199, 104),
943    (200, 116),
944    (201, 113),
945    (202, 114),
946    (203, 115),
947    (204, 120),
948    (205, 117),
949    (206, 118),
950    (207, 119),
951    (208, 172),
952    (209, 105),
953    (210, 237),
954    (211, 238),
955    (212, 235),
956    (213, 239),
957    (214, 236),
958    (215, 191),
959    (216, 128),
960    (217, 253),
961    (218, 254),
962    (219, 251),
963    (220, 252),
964    (221, 173),
965    (222, 174),
966    (223, 89),
967    (224, 124),
968    (225, 69),
969    (226, 66),
970    (227, 70),
971    (228, 67),
972    (229, 71),
973    (230, 156),
974    (231, 224),
975    (232, 208),
976    (233, 192),
977    (234, 82),
978    (235, 83),
979    (236, 88),
980    (237, 85),
981    (238, 86),
982    (239, 87),
983    (240, 140),
984    (241, 73),
985    (242, 205),
986    (243, 206),
987    (244, 203),
988    (245, 207),
989    (246, 204),
990    (247, 225),
991    (248, 112),
992    (249, 106),
993    (250, 222),
994    (251, 219),
995    (252, 220),
996    (253, 141),
997    (254, 142),
998    (255, 223),
999];
1000
1001impl_ebcdic_encoder_and_decoder!(
1002    IBM275,
1003    "IBM275",
1004    IBM275Encoder,
1005    IBM275Decoder,
1006    IBM_275_ENCODE_TABLE,
1007    IBM_275_DECODE_TABLE
1008);
1009const IBM_275_DECODE_TABLE: [char; 256] = [
1010    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1011    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1012    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1013    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1014    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1015    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1016    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1017    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{60}', '\u{e5}', '\u{a6}', '\u{f1}',
1018    '\u{c9}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7d}', '\u{ea}',
1019    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{24}', '\u{c7}',
1020    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1021    '\u{c1}', '\u{40}', '\u{c5}', '\u{5d}', '\u{d1}', '\u{e7}', '\u{2c}', '\u{25}', '\u{5f}',
1022    '\u{3e}', '\u{3f}', '\u{f8}', '\u{5b}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1023    '\u{cf}', '\u{cc}', '\u{e3}', '\u{3a}', '\u{d5}', '\u{c3}', '\u{27}', '\u{3d}', '\u{22}',
1024    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1025    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1026    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1027    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
1028    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1029    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1030    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1031    '\u{d7}', '\u{f5}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1032    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{7b}', '\u{e9}',
1033    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1034    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1035    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1036    '\u{d6}', '\u{d2}', '\u{d3}', '\u{23}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1037    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1038    '\u{da}', '\u{9f}',
1039];
1040const IBM_275_ENCODE_TABLE: &[(u16, u8)] = &[
1041    (0, 0),
1042    (1, 1),
1043    (2, 2),
1044    (3, 3),
1045    (4, 55),
1046    (5, 45),
1047    (6, 46),
1048    (7, 47),
1049    (8, 22),
1050    (9, 5),
1051    (10, 37),
1052    (11, 11),
1053    (12, 12),
1054    (13, 13),
1055    (14, 14),
1056    (15, 15),
1057    (16, 16),
1058    (17, 17),
1059    (18, 18),
1060    (19, 19),
1061    (20, 60),
1062    (21, 61),
1063    (22, 50),
1064    (23, 38),
1065    (24, 24),
1066    (25, 25),
1067    (26, 63),
1068    (27, 39),
1069    (28, 28),
1070    (29, 29),
1071    (30, 30),
1072    (31, 31),
1073    (32, 64),
1074    (33, 79),
1075    (34, 127),
1076    (35, 239),
1077    (36, 90),
1078    (37, 108),
1079    (38, 80),
1080    (39, 125),
1081    (40, 77),
1082    (41, 93),
1083    (42, 92),
1084    (43, 78),
1085    (44, 107),
1086    (45, 96),
1087    (46, 75),
1088    (47, 97),
1089    (48, 240),
1090    (49, 241),
1091    (50, 242),
1092    (51, 243),
1093    (52, 244),
1094    (53, 245),
1095    (54, 246),
1096    (55, 247),
1097    (56, 248),
1098    (57, 249),
1099    (58, 122),
1100    (59, 94),
1101    (60, 76),
1102    (61, 126),
1103    (62, 110),
1104    (63, 111),
1105    (64, 102),
1106    (65, 193),
1107    (66, 194),
1108    (67, 195),
1109    (68, 196),
1110    (69, 197),
1111    (70, 198),
1112    (71, 199),
1113    (72, 200),
1114    (73, 201),
1115    (74, 209),
1116    (75, 210),
1117    (76, 211),
1118    (77, 212),
1119    (78, 213),
1120    (79, 214),
1121    (80, 215),
1122    (81, 216),
1123    (82, 217),
1124    (83, 226),
1125    (84, 227),
1126    (85, 228),
1127    (86, 229),
1128    (87, 230),
1129    (88, 231),
1130    (89, 232),
1131    (90, 233),
1132    (91, 113),
1133    (92, 224),
1134    (93, 104),
1135    (94, 95),
1136    (95, 109),
1137    (96, 70),
1138    (97, 129),
1139    (98, 130),
1140    (99, 131),
1141    (100, 132),
1142    (101, 133),
1143    (102, 134),
1144    (103, 135),
1145    (104, 136),
1146    (105, 137),
1147    (106, 145),
1148    (107, 146),
1149    (108, 147),
1150    (109, 148),
1151    (110, 149),
1152    (111, 150),
1153    (112, 151),
1154    (113, 152),
1155    (114, 153),
1156    (115, 162),
1157    (116, 163),
1158    (117, 164),
1159    (118, 165),
1160    (119, 166),
1161    (120, 167),
1162    (121, 168),
1163    (122, 169),
1164    (123, 207),
1165    (124, 187),
1166    (125, 81),
1167    (126, 161),
1168    (127, 7),
1169    (128, 32),
1170    (129, 33),
1171    (130, 34),
1172    (131, 35),
1173    (132, 36),
1174    (133, 21),
1175    (134, 6),
1176    (135, 23),
1177    (136, 40),
1178    (137, 41),
1179    (138, 42),
1180    (139, 43),
1181    (140, 44),
1182    (141, 9),
1183    (142, 10),
1184    (143, 27),
1185    (144, 48),
1186    (145, 49),
1187    (146, 26),
1188    (147, 51),
1189    (148, 52),
1190    (149, 53),
1191    (150, 54),
1192    (151, 8),
1193    (152, 56),
1194    (153, 57),
1195    (154, 58),
1196    (155, 59),
1197    (156, 4),
1198    (157, 20),
1199    (158, 62),
1200    (159, 255),
1201    (160, 65),
1202    (161, 170),
1203    (162, 176),
1204    (163, 177),
1205    (164, 159),
1206    (165, 178),
1207    (166, 72),
1208    (167, 181),
1209    (168, 189),
1210    (169, 180),
1211    (170, 154),
1212    (171, 138),
1213    (172, 186),
1214    (173, 202),
1215    (174, 175),
1216    (175, 188),
1217    (176, 144),
1218    (177, 143),
1219    (178, 234),
1220    (179, 250),
1221    (180, 190),
1222    (181, 160),
1223    (182, 182),
1224    (183, 179),
1225    (184, 157),
1226    (185, 218),
1227    (186, 155),
1228    (187, 139),
1229    (188, 183),
1230    (189, 184),
1231    (190, 185),
1232    (191, 171),
1233    (192, 100),
1234    (193, 101),
1235    (194, 98),
1236    (195, 124),
1237    (196, 99),
1238    (197, 103),
1239    (198, 158),
1240    (199, 91),
1241    (200, 116),
1242    (201, 74),
1243    (202, 114),
1244    (203, 115),
1245    (204, 120),
1246    (205, 117),
1247    (206, 118),
1248    (207, 119),
1249    (208, 172),
1250    (209, 105),
1251    (210, 237),
1252    (211, 238),
1253    (212, 235),
1254    (213, 123),
1255    (214, 236),
1256    (215, 191),
1257    (216, 128),
1258    (217, 253),
1259    (218, 254),
1260    (219, 251),
1261    (220, 252),
1262    (221, 173),
1263    (222, 174),
1264    (223, 89),
1265    (224, 68),
1266    (225, 69),
1267    (226, 66),
1268    (227, 121),
1269    (228, 67),
1270    (229, 71),
1271    (230, 156),
1272    (231, 106),
1273    (232, 84),
1274    (233, 208),
1275    (234, 82),
1276    (235, 83),
1277    (236, 88),
1278    (237, 85),
1279    (238, 86),
1280    (239, 87),
1281    (240, 140),
1282    (241, 73),
1283    (242, 205),
1284    (243, 206),
1285    (244, 203),
1286    (245, 192),
1287    (246, 204),
1288    (247, 225),
1289    (248, 112),
1290    (249, 221),
1291    (250, 222),
1292    (251, 219),
1293    (252, 220),
1294    (253, 141),
1295    (254, 142),
1296    (255, 223),
1297];
1298
1299impl_ebcdic_encoder_and_decoder!(
1300    IBM277,
1301    "IBM277",
1302    IBM277Encoder,
1303    IBM277Decoder,
1304    IBM_277_ENCODE_TABLE,
1305    IBM_277_DECODE_TABLE
1306);
1307const IBM_277_DECODE_TABLE: [char; 256] = [
1308    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1309    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1310    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1311    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1312    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1313    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1314    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1315    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1316    '\u{23}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
1317    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1318    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1319    '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f8}', '\u{2c}', '\u{25}', '\u{5f}',
1320    '\u{3e}', '\u{3f}', '\u{a6}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1321    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{c6}', '\u{d8}', '\u{27}', '\u{3d}', '\u{22}',
1322    '\u{40}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1323    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1324    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1325    '\u{ba}', '\u{7b}', '\u{b8}', '\u{5b}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1326    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1327    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1328    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1329    '\u{d7}', '\u{e6}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1330    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1331    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1332    '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1333    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1334    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1335    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1336    '\u{da}', '\u{9f}',
1337];
1338const IBM_277_ENCODE_TABLE: &[(u16, u8)] = &[
1339    (0, 0),
1340    (1, 1),
1341    (2, 2),
1342    (3, 3),
1343    (4, 55),
1344    (5, 45),
1345    (6, 46),
1346    (7, 47),
1347    (8, 22),
1348    (9, 5),
1349    (10, 37),
1350    (11, 11),
1351    (12, 12),
1352    (13, 13),
1353    (14, 14),
1354    (15, 15),
1355    (16, 16),
1356    (17, 17),
1357    (18, 18),
1358    (19, 19),
1359    (20, 60),
1360    (21, 61),
1361    (22, 50),
1362    (23, 38),
1363    (24, 24),
1364    (25, 25),
1365    (26, 63),
1366    (27, 39),
1367    (28, 28),
1368    (29, 29),
1369    (30, 30),
1370    (31, 31),
1371    (32, 64),
1372    (33, 79),
1373    (34, 127),
1374    (35, 74),
1375    (36, 103),
1376    (37, 108),
1377    (38, 80),
1378    (39, 125),
1379    (40, 77),
1380    (41, 93),
1381    (42, 92),
1382    (43, 78),
1383    (44, 107),
1384    (45, 96),
1385    (46, 75),
1386    (47, 97),
1387    (48, 240),
1388    (49, 241),
1389    (50, 242),
1390    (51, 243),
1391    (52, 244),
1392    (53, 245),
1393    (54, 246),
1394    (55, 247),
1395    (56, 248),
1396    (57, 249),
1397    (58, 122),
1398    (59, 94),
1399    (60, 76),
1400    (61, 126),
1401    (62, 110),
1402    (63, 111),
1403    (64, 128),
1404    (65, 193),
1405    (66, 194),
1406    (67, 195),
1407    (68, 196),
1408    (69, 197),
1409    (70, 198),
1410    (71, 199),
1411    (72, 200),
1412    (73, 201),
1413    (74, 209),
1414    (75, 210),
1415    (76, 211),
1416    (77, 212),
1417    (78, 213),
1418    (79, 214),
1419    (80, 215),
1420    (81, 216),
1421    (82, 217),
1422    (83, 226),
1423    (84, 227),
1424    (85, 228),
1425    (86, 229),
1426    (87, 230),
1427    (88, 231),
1428    (89, 232),
1429    (90, 233),
1430    (91, 158),
1431    (92, 224),
1432    (93, 159),
1433    (94, 95),
1434    (95, 109),
1435    (96, 121),
1436    (97, 129),
1437    (98, 130),
1438    (99, 131),
1439    (100, 132),
1440    (101, 133),
1441    (102, 134),
1442    (103, 135),
1443    (104, 136),
1444    (105, 137),
1445    (106, 145),
1446    (107, 146),
1447    (108, 147),
1448    (109, 148),
1449    (110, 149),
1450    (111, 150),
1451    (112, 151),
1452    (113, 152),
1453    (114, 153),
1454    (115, 162),
1455    (116, 163),
1456    (117, 164),
1457    (118, 165),
1458    (119, 166),
1459    (120, 167),
1460    (121, 168),
1461    (122, 169),
1462    (123, 156),
1463    (124, 187),
1464    (125, 71),
1465    (126, 220),
1466    (127, 7),
1467    (128, 32),
1468    (129, 33),
1469    (130, 34),
1470    (131, 35),
1471    (132, 36),
1472    (133, 21),
1473    (134, 6),
1474    (135, 23),
1475    (136, 40),
1476    (137, 41),
1477    (138, 42),
1478    (139, 43),
1479    (140, 44),
1480    (141, 9),
1481    (142, 10),
1482    (143, 27),
1483    (144, 48),
1484    (145, 49),
1485    (146, 26),
1486    (147, 51),
1487    (148, 52),
1488    (149, 53),
1489    (150, 54),
1490    (151, 8),
1491    (152, 56),
1492    (153, 57),
1493    (154, 58),
1494    (155, 59),
1495    (156, 4),
1496    (157, 20),
1497    (158, 62),
1498    (159, 255),
1499    (160, 65),
1500    (161, 170),
1501    (162, 176),
1502    (163, 177),
1503    (164, 90),
1504    (165, 178),
1505    (166, 112),
1506    (167, 181),
1507    (168, 189),
1508    (169, 180),
1509    (170, 154),
1510    (171, 138),
1511    (172, 186),
1512    (173, 202),
1513    (174, 175),
1514    (175, 188),
1515    (176, 144),
1516    (177, 143),
1517    (178, 234),
1518    (179, 250),
1519    (180, 190),
1520    (181, 160),
1521    (182, 182),
1522    (183, 179),
1523    (184, 157),
1524    (185, 218),
1525    (186, 155),
1526    (187, 139),
1527    (188, 183),
1528    (189, 184),
1529    (190, 185),
1530    (191, 171),
1531    (192, 100),
1532    (193, 101),
1533    (194, 98),
1534    (195, 102),
1535    (196, 99),
1536    (197, 91),
1537    (198, 123),
1538    (199, 104),
1539    (200, 116),
1540    (201, 113),
1541    (202, 114),
1542    (203, 115),
1543    (204, 120),
1544    (205, 117),
1545    (206, 118),
1546    (207, 119),
1547    (208, 172),
1548    (209, 105),
1549    (210, 237),
1550    (211, 238),
1551    (212, 235),
1552    (213, 239),
1553    (214, 236),
1554    (215, 191),
1555    (216, 124),
1556    (217, 253),
1557    (218, 254),
1558    (219, 251),
1559    (220, 252),
1560    (221, 173),
1561    (222, 174),
1562    (223, 89),
1563    (224, 68),
1564    (225, 69),
1565    (226, 66),
1566    (227, 70),
1567    (228, 67),
1568    (229, 208),
1569    (230, 192),
1570    (231, 72),
1571    (232, 84),
1572    (233, 81),
1573    (234, 82),
1574    (235, 83),
1575    (236, 88),
1576    (237, 85),
1577    (238, 86),
1578    (239, 87),
1579    (240, 140),
1580    (241, 73),
1581    (242, 205),
1582    (243, 206),
1583    (244, 203),
1584    (245, 207),
1585    (246, 204),
1586    (247, 225),
1587    (248, 106),
1588    (249, 221),
1589    (250, 222),
1590    (251, 219),
1591    (252, 161),
1592    (253, 141),
1593    (254, 142),
1594    (255, 223),
1595];
1596
1597impl_ebcdic_encoder_and_decoder!(
1598    IBM278,
1599    "IBM278",
1600    IBM278Encoder,
1601    IBM278Decoder,
1602    IBM_278_ENCODE_TABLE,
1603    IBM_278_DECODE_TABLE
1604);
1605const IBM_278_DECODE_TABLE: [char; 256] = [
1606    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1607    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1608    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1609    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1610    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1611    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1612    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1613    '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1614    '\u{a7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{60}', '\u{ea}',
1615    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1616    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{23}', '\u{c0}',
1617    '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
1618    '\u{3e}', '\u{3f}', '\u{f8}', '\u{5c}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1619    '\u{cf}', '\u{cc}', '\u{e9}', '\u{3a}', '\u{c4}', '\u{d6}', '\u{27}', '\u{3d}', '\u{22}',
1620    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1621    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1622    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1623    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1624    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1625    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5b}',
1626    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1627    '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1628    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1629    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1630    '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{c9}', '\u{f7}', '\u{53}',
1631    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1632    '\u{40}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1633    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1634    '\u{da}', '\u{9f}',
1635];
1636const IBM_278_ENCODE_TABLE: &[(u16, u8)] = &[
1637    (0, 0),
1638    (1, 1),
1639    (2, 2),
1640    (3, 3),
1641    (4, 55),
1642    (5, 45),
1643    (6, 46),
1644    (7, 47),
1645    (8, 22),
1646    (9, 5),
1647    (10, 37),
1648    (11, 11),
1649    (12, 12),
1650    (13, 13),
1651    (14, 14),
1652    (15, 15),
1653    (16, 16),
1654    (17, 17),
1655    (18, 18),
1656    (19, 19),
1657    (20, 60),
1658    (21, 61),
1659    (22, 50),
1660    (23, 38),
1661    (24, 24),
1662    (25, 25),
1663    (26, 63),
1664    (27, 39),
1665    (28, 28),
1666    (29, 29),
1667    (30, 30),
1668    (31, 31),
1669    (32, 64),
1670    (33, 79),
1671    (34, 127),
1672    (35, 99),
1673    (36, 103),
1674    (37, 108),
1675    (38, 80),
1676    (39, 125),
1677    (40, 77),
1678    (41, 93),
1679    (42, 92),
1680    (43, 78),
1681    (44, 107),
1682    (45, 96),
1683    (46, 75),
1684    (47, 97),
1685    (48, 240),
1686    (49, 241),
1687    (50, 242),
1688    (51, 243),
1689    (52, 244),
1690    (53, 245),
1691    (54, 246),
1692    (55, 247),
1693    (56, 248),
1694    (57, 249),
1695    (58, 122),
1696    (59, 94),
1697    (60, 76),
1698    (61, 126),
1699    (62, 110),
1700    (63, 111),
1701    (64, 236),
1702    (65, 193),
1703    (66, 194),
1704    (67, 195),
1705    (68, 196),
1706    (69, 197),
1707    (70, 198),
1708    (71, 199),
1709    (72, 200),
1710    (73, 201),
1711    (74, 209),
1712    (75, 210),
1713    (76, 211),
1714    (77, 212),
1715    (78, 213),
1716    (79, 214),
1717    (80, 215),
1718    (81, 216),
1719    (82, 217),
1720    (83, 226),
1721    (84, 227),
1722    (85, 228),
1723    (86, 229),
1724    (87, 230),
1725    (88, 231),
1726    (89, 232),
1727    (90, 233),
1728    (91, 181),
1729    (92, 113),
1730    (93, 159),
1731    (94, 95),
1732    (95, 109),
1733    (96, 81),
1734    (97, 129),
1735    (98, 130),
1736    (99, 131),
1737    (100, 132),
1738    (101, 133),
1739    (102, 134),
1740    (103, 135),
1741    (104, 136),
1742    (105, 137),
1743    (106, 145),
1744    (107, 146),
1745    (108, 147),
1746    (109, 148),
1747    (110, 149),
1748    (111, 150),
1749    (112, 151),
1750    (113, 152),
1751    (114, 153),
1752    (115, 162),
1753    (116, 163),
1754    (117, 164),
1755    (118, 165),
1756    (119, 166),
1757    (120, 167),
1758    (121, 168),
1759    (122, 169),
1760    (123, 67),
1761    (124, 187),
1762    (125, 71),
1763    (126, 220),
1764    (127, 7),
1765    (128, 32),
1766    (129, 33),
1767    (130, 34),
1768    (131, 35),
1769    (132, 36),
1770    (133, 21),
1771    (134, 6),
1772    (135, 23),
1773    (136, 40),
1774    (137, 41),
1775    (138, 42),
1776    (139, 43),
1777    (140, 44),
1778    (141, 9),
1779    (142, 10),
1780    (143, 27),
1781    (144, 48),
1782    (145, 49),
1783    (146, 26),
1784    (147, 51),
1785    (148, 52),
1786    (149, 53),
1787    (150, 54),
1788    (151, 8),
1789    (152, 56),
1790    (153, 57),
1791    (154, 58),
1792    (155, 59),
1793    (156, 4),
1794    (157, 20),
1795    (158, 62),
1796    (159, 255),
1797    (160, 65),
1798    (161, 170),
1799    (162, 176),
1800    (163, 177),
1801    (164, 90),
1802    (165, 178),
1803    (166, 204),
1804    (167, 74),
1805    (168, 189),
1806    (169, 180),
1807    (170, 154),
1808    (171, 138),
1809    (172, 186),
1810    (173, 202),
1811    (174, 175),
1812    (175, 188),
1813    (176, 144),
1814    (177, 143),
1815    (178, 234),
1816    (179, 250),
1817    (180, 190),
1818    (181, 160),
1819    (182, 182),
1820    (183, 179),
1821    (184, 157),
1822    (185, 218),
1823    (186, 155),
1824    (187, 139),
1825    (188, 183),
1826    (189, 184),
1827    (190, 185),
1828    (191, 171),
1829    (192, 100),
1830    (193, 101),
1831    (194, 98),
1832    (195, 102),
1833    (196, 123),
1834    (197, 91),
1835    (198, 158),
1836    (199, 104),
1837    (200, 116),
1838    (201, 224),
1839    (202, 114),
1840    (203, 115),
1841    (204, 120),
1842    (205, 117),
1843    (206, 118),
1844    (207, 119),
1845    (208, 172),
1846    (209, 105),
1847    (210, 237),
1848    (211, 238),
1849    (212, 235),
1850    (213, 239),
1851    (214, 124),
1852    (215, 191),
1853    (216, 128),
1854    (217, 253),
1855    (218, 254),
1856    (219, 251),
1857    (220, 252),
1858    (221, 173),
1859    (222, 174),
1860    (223, 89),
1861    (224, 68),
1862    (225, 69),
1863    (226, 66),
1864    (227, 70),
1865    (228, 192),
1866    (229, 208),
1867    (230, 156),
1868    (231, 72),
1869    (232, 84),
1870    (233, 121),
1871    (234, 82),
1872    (235, 83),
1873    (236, 88),
1874    (237, 85),
1875    (238, 86),
1876    (239, 87),
1877    (240, 140),
1878    (241, 73),
1879    (242, 205),
1880    (243, 206),
1881    (244, 203),
1882    (245, 207),
1883    (246, 106),
1884    (247, 225),
1885    (248, 112),
1886    (249, 221),
1887    (250, 222),
1888    (251, 219),
1889    (252, 161),
1890    (253, 141),
1891    (254, 142),
1892    (255, 223),
1893];
1894
1895impl_ebcdic_encoder_and_decoder!(
1896    IBM280,
1897    "IBM280",
1898    IBM280Encoder,
1899    IBM280Decoder,
1900    IBM_280_ENCODE_TABLE,
1901    IBM_280_DECODE_TABLE
1902);
1903const IBM_280_DECODE_TABLE: [char; 256] = [
1904    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1905    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1906    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1907    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1908    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1909    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1910    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1911    '\u{a0}', '\u{e2}', '\u{e4}', '\u{7b}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
1912    '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{5d}', '\u{ea}',
1913    '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{7e}', '\u{df}', '\u{e9}', '\u{24}',
1914    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1915    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f2}', '\u{2c}', '\u{25}', '\u{5f}',
1916    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1917    '\u{cf}', '\u{cc}', '\u{f9}', '\u{3a}', '\u{a3}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
1918    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1919    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
1920    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1921    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{ec}', '\u{73}', '\u{74}',
1922    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1923    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
1924    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1925    '\u{d7}', '\u{e0}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1926    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{a6}', '\u{f3}', '\u{f5}', '\u{e8}',
1927    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1928    '\u{b9}', '\u{fb}', '\u{fc}', '\u{60}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
1929    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1930    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1931    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1932    '\u{da}', '\u{9f}',
1933];
1934const IBM_280_ENCODE_TABLE: &[(u16, u8)] = &[
1935    (0, 0),
1936    (1, 1),
1937    (2, 2),
1938    (3, 3),
1939    (4, 55),
1940    (5, 45),
1941    (6, 46),
1942    (7, 47),
1943    (8, 22),
1944    (9, 5),
1945    (10, 37),
1946    (11, 11),
1947    (12, 12),
1948    (13, 13),
1949    (14, 14),
1950    (15, 15),
1951    (16, 16),
1952    (17, 17),
1953    (18, 18),
1954    (19, 19),
1955    (20, 60),
1956    (21, 61),
1957    (22, 50),
1958    (23, 38),
1959    (24, 24),
1960    (25, 25),
1961    (26, 63),
1962    (27, 39),
1963    (28, 28),
1964    (29, 29),
1965    (30, 30),
1966    (31, 31),
1967    (32, 64),
1968    (33, 79),
1969    (34, 127),
1970    (35, 177),
1971    (36, 91),
1972    (37, 108),
1973    (38, 80),
1974    (39, 125),
1975    (40, 77),
1976    (41, 93),
1977    (42, 92),
1978    (43, 78),
1979    (44, 107),
1980    (45, 96),
1981    (46, 75),
1982    (47, 97),
1983    (48, 240),
1984    (49, 241),
1985    (50, 242),
1986    (51, 243),
1987    (52, 244),
1988    (53, 245),
1989    (54, 246),
1990    (55, 247),
1991    (56, 248),
1992    (57, 249),
1993    (58, 122),
1994    (59, 94),
1995    (60, 76),
1996    (61, 126),
1997    (62, 110),
1998    (63, 111),
1999    (64, 181),
2000    (65, 193),
2001    (66, 194),
2002    (67, 195),
2003    (68, 196),
2004    (69, 197),
2005    (70, 198),
2006    (71, 199),
2007    (72, 200),
2008    (73, 201),
2009    (74, 209),
2010    (75, 210),
2011    (76, 211),
2012    (77, 212),
2013    (78, 213),
2014    (79, 214),
2015    (80, 215),
2016    (81, 216),
2017    (82, 217),
2018    (83, 226),
2019    (84, 227),
2020    (85, 228),
2021    (86, 229),
2022    (87, 230),
2023    (88, 231),
2024    (89, 232),
2025    (90, 233),
2026    (91, 144),
2027    (92, 72),
2028    (93, 81),
2029    (94, 95),
2030    (95, 109),
2031    (96, 221),
2032    (97, 129),
2033    (98, 130),
2034    (99, 131),
2035    (100, 132),
2036    (101, 133),
2037    (102, 134),
2038    (103, 135),
2039    (104, 136),
2040    (105, 137),
2041    (106, 145),
2042    (107, 146),
2043    (108, 147),
2044    (109, 148),
2045    (110, 149),
2046    (111, 150),
2047    (112, 151),
2048    (113, 152),
2049    (114, 153),
2050    (115, 162),
2051    (116, 163),
2052    (117, 164),
2053    (118, 165),
2054    (119, 166),
2055    (120, 167),
2056    (121, 168),
2057    (122, 169),
2058    (123, 68),
2059    (124, 187),
2060    (125, 84),
2061    (126, 88),
2062    (127, 7),
2063    (128, 32),
2064    (129, 33),
2065    (130, 34),
2066    (131, 35),
2067    (132, 36),
2068    (133, 21),
2069    (134, 6),
2070    (135, 23),
2071    (136, 40),
2072    (137, 41),
2073    (138, 42),
2074    (139, 43),
2075    (140, 44),
2076    (141, 9),
2077    (142, 10),
2078    (143, 27),
2079    (144, 48),
2080    (145, 49),
2081    (146, 26),
2082    (147, 51),
2083    (148, 52),
2084    (149, 53),
2085    (150, 54),
2086    (151, 8),
2087    (152, 56),
2088    (153, 57),
2089    (154, 58),
2090    (155, 59),
2091    (156, 4),
2092    (157, 20),
2093    (158, 62),
2094    (159, 255),
2095    (160, 65),
2096    (161, 170),
2097    (162, 176),
2098    (163, 123),
2099    (164, 159),
2100    (165, 178),
2101    (166, 205),
2102    (167, 124),
2103    (168, 189),
2104    (169, 180),
2105    (170, 154),
2106    (171, 138),
2107    (172, 186),
2108    (173, 202),
2109    (174, 175),
2110    (175, 188),
2111    (176, 74),
2112    (177, 143),
2113    (178, 234),
2114    (179, 250),
2115    (180, 190),
2116    (181, 160),
2117    (182, 182),
2118    (183, 179),
2119    (184, 157),
2120    (185, 218),
2121    (186, 155),
2122    (187, 139),
2123    (188, 183),
2124    (189, 184),
2125    (190, 185),
2126    (191, 171),
2127    (192, 100),
2128    (193, 101),
2129    (194, 98),
2130    (195, 102),
2131    (196, 99),
2132    (197, 103),
2133    (198, 158),
2134    (199, 104),
2135    (200, 116),
2136    (201, 113),
2137    (202, 114),
2138    (203, 115),
2139    (204, 120),
2140    (205, 117),
2141    (206, 118),
2142    (207, 119),
2143    (208, 172),
2144    (209, 105),
2145    (210, 237),
2146    (211, 238),
2147    (212, 235),
2148    (213, 239),
2149    (214, 236),
2150    (215, 191),
2151    (216, 128),
2152    (217, 253),
2153    (218, 254),
2154    (219, 251),
2155    (220, 252),
2156    (221, 173),
2157    (222, 174),
2158    (223, 89),
2159    (224, 192),
2160    (225, 69),
2161    (226, 66),
2162    (227, 70),
2163    (228, 67),
2164    (229, 71),
2165    (230, 156),
2166    (231, 224),
2167    (232, 208),
2168    (233, 90),
2169    (234, 82),
2170    (235, 83),
2171    (236, 161),
2172    (237, 85),
2173    (238, 86),
2174    (239, 87),
2175    (240, 140),
2176    (241, 73),
2177    (242, 106),
2178    (243, 206),
2179    (244, 203),
2180    (245, 207),
2181    (246, 204),
2182    (247, 225),
2183    (248, 112),
2184    (249, 121),
2185    (250, 222),
2186    (251, 219),
2187    (252, 220),
2188    (253, 141),
2189    (254, 142),
2190    (255, 223),
2191];
2192
2193impl_ebcdic_encoder_and_decoder!(
2194    IBM284,
2195    "IBM284",
2196    IBM284Encoder,
2197    IBM284Decoder,
2198    IBM_284_ENCODE_TABLE,
2199    IBM_284_DECODE_TABLE
2200);
2201const IBM_284_DECODE_TABLE: [char; 256] = [
2202    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2203    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2204    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2205    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2206    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2207    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2208    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2209    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{a6}',
2210    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2211    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
2212    '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2213    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{23}', '\u{f1}', '\u{2c}', '\u{25}', '\u{5f}',
2214    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2215    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{d1}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2216    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2217    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2218    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2219    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
2220    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2221    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2222    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{21}', '\u{af}', '\u{7e}', '\u{b4}',
2223    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2224    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2225    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2226    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2227    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2228    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2229    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2230    '\u{da}', '\u{9f}',
2231];
2232const IBM_284_ENCODE_TABLE: &[(u16, u8)] = &[
2233    (0, 0),
2234    (1, 1),
2235    (2, 2),
2236    (3, 3),
2237    (4, 55),
2238    (5, 45),
2239    (6, 46),
2240    (7, 47),
2241    (8, 22),
2242    (9, 5),
2243    (10, 37),
2244    (11, 11),
2245    (12, 12),
2246    (13, 13),
2247    (14, 14),
2248    (15, 15),
2249    (16, 16),
2250    (17, 17),
2251    (18, 18),
2252    (19, 19),
2253    (20, 60),
2254    (21, 61),
2255    (22, 50),
2256    (23, 38),
2257    (24, 24),
2258    (25, 25),
2259    (26, 63),
2260    (27, 39),
2261    (28, 28),
2262    (29, 29),
2263    (30, 30),
2264    (31, 31),
2265    (32, 64),
2266    (33, 187),
2267    (34, 127),
2268    (35, 105),
2269    (36, 91),
2270    (37, 108),
2271    (38, 80),
2272    (39, 125),
2273    (40, 77),
2274    (41, 93),
2275    (42, 92),
2276    (43, 78),
2277    (44, 107),
2278    (45, 96),
2279    (46, 75),
2280    (47, 97),
2281    (48, 240),
2282    (49, 241),
2283    (50, 242),
2284    (51, 243),
2285    (52, 244),
2286    (53, 245),
2287    (54, 246),
2288    (55, 247),
2289    (56, 248),
2290    (57, 249),
2291    (58, 122),
2292    (59, 94),
2293    (60, 76),
2294    (61, 126),
2295    (62, 110),
2296    (63, 111),
2297    (64, 124),
2298    (65, 193),
2299    (66, 194),
2300    (67, 195),
2301    (68, 196),
2302    (69, 197),
2303    (70, 198),
2304    (71, 199),
2305    (72, 200),
2306    (73, 201),
2307    (74, 209),
2308    (75, 210),
2309    (76, 211),
2310    (77, 212),
2311    (78, 213),
2312    (79, 214),
2313    (80, 215),
2314    (81, 216),
2315    (82, 217),
2316    (83, 226),
2317    (84, 227),
2318    (85, 228),
2319    (86, 229),
2320    (87, 230),
2321    (88, 231),
2322    (89, 232),
2323    (90, 233),
2324    (91, 74),
2325    (92, 224),
2326    (93, 90),
2327    (94, 186),
2328    (95, 109),
2329    (96, 121),
2330    (97, 129),
2331    (98, 130),
2332    (99, 131),
2333    (100, 132),
2334    (101, 133),
2335    (102, 134),
2336    (103, 135),
2337    (104, 136),
2338    (105, 137),
2339    (106, 145),
2340    (107, 146),
2341    (108, 147),
2342    (109, 148),
2343    (110, 149),
2344    (111, 150),
2345    (112, 151),
2346    (113, 152),
2347    (114, 153),
2348    (115, 162),
2349    (116, 163),
2350    (117, 164),
2351    (118, 165),
2352    (119, 166),
2353    (120, 167),
2354    (121, 168),
2355    (122, 169),
2356    (123, 192),
2357    (124, 79),
2358    (125, 208),
2359    (126, 189),
2360    (127, 7),
2361    (128, 32),
2362    (129, 33),
2363    (130, 34),
2364    (131, 35),
2365    (132, 36),
2366    (133, 21),
2367    (134, 6),
2368    (135, 23),
2369    (136, 40),
2370    (137, 41),
2371    (138, 42),
2372    (139, 43),
2373    (140, 44),
2374    (141, 9),
2375    (142, 10),
2376    (143, 27),
2377    (144, 48),
2378    (145, 49),
2379    (146, 26),
2380    (147, 51),
2381    (148, 52),
2382    (149, 53),
2383    (150, 54),
2384    (151, 8),
2385    (152, 56),
2386    (153, 57),
2387    (154, 58),
2388    (155, 59),
2389    (156, 4),
2390    (157, 20),
2391    (158, 62),
2392    (159, 255),
2393    (160, 65),
2394    (161, 170),
2395    (162, 176),
2396    (163, 177),
2397    (164, 159),
2398    (165, 178),
2399    (166, 73),
2400    (167, 181),
2401    (168, 161),
2402    (169, 180),
2403    (170, 154),
2404    (171, 138),
2405    (172, 95),
2406    (173, 202),
2407    (174, 175),
2408    (175, 188),
2409    (176, 144),
2410    (177, 143),
2411    (178, 234),
2412    (179, 250),
2413    (180, 190),
2414    (181, 160),
2415    (182, 182),
2416    (183, 179),
2417    (184, 157),
2418    (185, 218),
2419    (186, 155),
2420    (187, 139),
2421    (188, 183),
2422    (189, 184),
2423    (190, 185),
2424    (191, 171),
2425    (192, 100),
2426    (193, 101),
2427    (194, 98),
2428    (195, 102),
2429    (196, 99),
2430    (197, 103),
2431    (198, 158),
2432    (199, 104),
2433    (200, 116),
2434    (201, 113),
2435    (202, 114),
2436    (203, 115),
2437    (204, 120),
2438    (205, 117),
2439    (206, 118),
2440    (207, 119),
2441    (208, 172),
2442    (209, 123),
2443    (210, 237),
2444    (211, 238),
2445    (212, 235),
2446    (213, 239),
2447    (214, 236),
2448    (215, 191),
2449    (216, 128),
2450    (217, 253),
2451    (218, 254),
2452    (219, 251),
2453    (220, 252),
2454    (221, 173),
2455    (222, 174),
2456    (223, 89),
2457    (224, 68),
2458    (225, 69),
2459    (226, 66),
2460    (227, 70),
2461    (228, 67),
2462    (229, 71),
2463    (230, 156),
2464    (231, 72),
2465    (232, 84),
2466    (233, 81),
2467    (234, 82),
2468    (235, 83),
2469    (236, 88),
2470    (237, 85),
2471    (238, 86),
2472    (239, 87),
2473    (240, 140),
2474    (241, 106),
2475    (242, 205),
2476    (243, 206),
2477    (244, 203),
2478    (245, 207),
2479    (246, 204),
2480    (247, 225),
2481    (248, 112),
2482    (249, 221),
2483    (250, 222),
2484    (251, 219),
2485    (252, 220),
2486    (253, 141),
2487    (254, 142),
2488    (255, 223),
2489];
2490
2491impl_ebcdic_encoder_and_decoder!(
2492    IBM285,
2493    "IBM285",
2494    IBM285Encoder,
2495    IBM285Decoder,
2496    IBM_285_ENCODE_TABLE,
2497    IBM_285_DECODE_TABLE
2498);
2499const IBM_285_DECODE_TABLE: [char; 256] = [
2500    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2501    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2502    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2503    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2504    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2505    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2506    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2507    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
2508    '\u{24}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2509    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{a3}',
2510    '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2511    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
2512    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2513    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2514    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2515    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2516    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2517    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{af}', '\u{73}', '\u{74}',
2518    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2519    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{5b}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2520    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{5d}', '\u{7e}', '\u{a8}', '\u{b4}',
2521    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2522    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2523    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2524    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2525    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2526    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2527    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2528    '\u{da}', '\u{9f}',
2529];
2530const IBM_285_ENCODE_TABLE: &[(u16, u8)] = &[
2531    (0, 0),
2532    (1, 1),
2533    (2, 2),
2534    (3, 3),
2535    (4, 55),
2536    (5, 45),
2537    (6, 46),
2538    (7, 47),
2539    (8, 22),
2540    (9, 5),
2541    (10, 37),
2542    (11, 11),
2543    (12, 12),
2544    (13, 13),
2545    (14, 14),
2546    (15, 15),
2547    (16, 16),
2548    (17, 17),
2549    (18, 18),
2550    (19, 19),
2551    (20, 60),
2552    (21, 61),
2553    (22, 50),
2554    (23, 38),
2555    (24, 24),
2556    (25, 25),
2557    (26, 63),
2558    (27, 39),
2559    (28, 28),
2560    (29, 29),
2561    (30, 30),
2562    (31, 31),
2563    (32, 64),
2564    (33, 90),
2565    (34, 127),
2566    (35, 123),
2567    (36, 74),
2568    (37, 108),
2569    (38, 80),
2570    (39, 125),
2571    (40, 77),
2572    (41, 93),
2573    (42, 92),
2574    (43, 78),
2575    (44, 107),
2576    (45, 96),
2577    (46, 75),
2578    (47, 97),
2579    (48, 240),
2580    (49, 241),
2581    (50, 242),
2582    (51, 243),
2583    (52, 244),
2584    (53, 245),
2585    (54, 246),
2586    (55, 247),
2587    (56, 248),
2588    (57, 249),
2589    (58, 122),
2590    (59, 94),
2591    (60, 76),
2592    (61, 126),
2593    (62, 110),
2594    (63, 111),
2595    (64, 124),
2596    (65, 193),
2597    (66, 194),
2598    (67, 195),
2599    (68, 196),
2600    (69, 197),
2601    (70, 198),
2602    (71, 199),
2603    (72, 200),
2604    (73, 201),
2605    (74, 209),
2606    (75, 210),
2607    (76, 211),
2608    (77, 212),
2609    (78, 213),
2610    (79, 214),
2611    (80, 215),
2612    (81, 216),
2613    (82, 217),
2614    (83, 226),
2615    (84, 227),
2616    (85, 228),
2617    (86, 229),
2618    (87, 230),
2619    (88, 231),
2620    (89, 232),
2621    (90, 233),
2622    (91, 177),
2623    (92, 224),
2624    (93, 187),
2625    (94, 186),
2626    (95, 109),
2627    (96, 121),
2628    (97, 129),
2629    (98, 130),
2630    (99, 131),
2631    (100, 132),
2632    (101, 133),
2633    (102, 134),
2634    (103, 135),
2635    (104, 136),
2636    (105, 137),
2637    (106, 145),
2638    (107, 146),
2639    (108, 147),
2640    (109, 148),
2641    (110, 149),
2642    (111, 150),
2643    (112, 151),
2644    (113, 152),
2645    (114, 153),
2646    (115, 162),
2647    (116, 163),
2648    (117, 164),
2649    (118, 165),
2650    (119, 166),
2651    (120, 167),
2652    (121, 168),
2653    (122, 169),
2654    (123, 192),
2655    (124, 79),
2656    (125, 208),
2657    (126, 188),
2658    (127, 7),
2659    (128, 32),
2660    (129, 33),
2661    (130, 34),
2662    (131, 35),
2663    (132, 36),
2664    (133, 21),
2665    (134, 6),
2666    (135, 23),
2667    (136, 40),
2668    (137, 41),
2669    (138, 42),
2670    (139, 43),
2671    (140, 44),
2672    (141, 9),
2673    (142, 10),
2674    (143, 27),
2675    (144, 48),
2676    (145, 49),
2677    (146, 26),
2678    (147, 51),
2679    (148, 52),
2680    (149, 53),
2681    (150, 54),
2682    (151, 8),
2683    (152, 56),
2684    (153, 57),
2685    (154, 58),
2686    (155, 59),
2687    (156, 4),
2688    (157, 20),
2689    (158, 62),
2690    (159, 255),
2691    (160, 65),
2692    (161, 170),
2693    (162, 176),
2694    (163, 91),
2695    (164, 159),
2696    (165, 178),
2697    (166, 106),
2698    (167, 181),
2699    (168, 189),
2700    (169, 180),
2701    (170, 154),
2702    (171, 138),
2703    (172, 95),
2704    (173, 202),
2705    (174, 175),
2706    (175, 161),
2707    (176, 144),
2708    (177, 143),
2709    (178, 234),
2710    (179, 250),
2711    (180, 190),
2712    (181, 160),
2713    (182, 182),
2714    (183, 179),
2715    (184, 157),
2716    (185, 218),
2717    (186, 155),
2718    (187, 139),
2719    (188, 183),
2720    (189, 184),
2721    (190, 185),
2722    (191, 171),
2723    (192, 100),
2724    (193, 101),
2725    (194, 98),
2726    (195, 102),
2727    (196, 99),
2728    (197, 103),
2729    (198, 158),
2730    (199, 104),
2731    (200, 116),
2732    (201, 113),
2733    (202, 114),
2734    (203, 115),
2735    (204, 120),
2736    (205, 117),
2737    (206, 118),
2738    (207, 119),
2739    (208, 172),
2740    (209, 105),
2741    (210, 237),
2742    (211, 238),
2743    (212, 235),
2744    (213, 239),
2745    (214, 236),
2746    (215, 191),
2747    (216, 128),
2748    (217, 253),
2749    (218, 254),
2750    (219, 251),
2751    (220, 252),
2752    (221, 173),
2753    (222, 174),
2754    (223, 89),
2755    (224, 68),
2756    (225, 69),
2757    (226, 66),
2758    (227, 70),
2759    (228, 67),
2760    (229, 71),
2761    (230, 156),
2762    (231, 72),
2763    (232, 84),
2764    (233, 81),
2765    (234, 82),
2766    (235, 83),
2767    (236, 88),
2768    (237, 85),
2769    (238, 86),
2770    (239, 87),
2771    (240, 140),
2772    (241, 73),
2773    (242, 205),
2774    (243, 206),
2775    (244, 203),
2776    (245, 207),
2777    (246, 204),
2778    (247, 225),
2779    (248, 112),
2780    (249, 221),
2781    (250, 222),
2782    (251, 219),
2783    (252, 220),
2784    (253, 141),
2785    (254, 142),
2786    (255, 223),
2787];
2788
2789impl_ebcdic_encoder_and_decoder!(
2790    IBM290,
2791    "IBM290",
2792    IBM290Encoder,
2793    IBM290Decoder,
2794    IBM_290_ENCODE_TABLE,
2795    IBM_290_DECODE_TABLE
2796);
2797const IBM_290_DECODE_TABLE: [char; 256] = [
2798    '\u{0}',
2799    '\u{1}',
2800    '\u{2}',
2801    '\u{3}',
2802    '\u{9c}',
2803    '\u{9}',
2804    '\u{86}',
2805    '\u{7f}',
2806    '\u{97}',
2807    '\u{8d}',
2808    '\u{8e}',
2809    '\u{b}',
2810    '\u{c}',
2811    '\u{d}',
2812    '\u{e}',
2813    '\u{f}',
2814    '\u{10}',
2815    '\u{11}',
2816    '\u{12}',
2817    '\u{13}',
2818    '\u{9d}',
2819    '\u{85}',
2820    '\u{8}',
2821    '\u{87}',
2822    '\u{18}',
2823    '\u{19}',
2824    '\u{92}',
2825    '\u{8f}',
2826    '\u{1c}',
2827    '\u{1d}',
2828    '\u{1e}',
2829    '\u{1f}',
2830    '\u{80}',
2831    '\u{81}',
2832    '\u{82}',
2833    '\u{83}',
2834    '\u{84}',
2835    '\u{a}',
2836    '\u{17}',
2837    '\u{1b}',
2838    '\u{88}',
2839    '\u{89}',
2840    '\u{8a}',
2841    '\u{8b}',
2842    '\u{8c}',
2843    '\u{5}',
2844    '\u{6}',
2845    '\u{7}',
2846    '\u{90}',
2847    '\u{91}',
2848    '\u{16}',
2849    '\u{93}',
2850    '\u{94}',
2851    '\u{95}',
2852    '\u{96}',
2853    '\u{4}',
2854    '\u{98}',
2855    '\u{99}',
2856    '\u{9a}',
2857    '\u{9b}',
2858    '\u{14}',
2859    '\u{15}',
2860    '\u{9e}',
2861    '\u{1a}',
2862    '\u{20}',
2863    '\u{ff61}',
2864    '\u{ff62}',
2865    '\u{ff63}',
2866    '\u{ff64}',
2867    '\u{ff65}',
2868    '\u{ff66}',
2869    '\u{ff67}',
2870    '\u{ff68}',
2871    '\u{ff69}',
2872    '\u{a3}',
2873    '\u{2e}',
2874    '\u{3c}',
2875    '\u{28}',
2876    '\u{2b}',
2877    '\u{7c}',
2878    '\u{26}',
2879    '\u{ff6a}',
2880    '\u{ff6b}',
2881    '\u{ff6c}',
2882    '\u{ff6d}',
2883    '\u{ff6e}',
2884    '\u{ff6f}',
2885    char::REPLACEMENT_CHARACTER,
2886    '\u{ff70}',
2887    char::REPLACEMENT_CHARACTER,
2888    '\u{21}',
2889    '\u{a5}',
2890    '\u{2a}',
2891    '\u{29}',
2892    '\u{3b}',
2893    '\u{ac}',
2894    '\u{2d}',
2895    '\u{2f}',
2896    '\u{61}',
2897    '\u{62}',
2898    '\u{63}',
2899    '\u{64}',
2900    '\u{65}',
2901    '\u{66}',
2902    '\u{67}',
2903    '\u{68}',
2904    char::REPLACEMENT_CHARACTER,
2905    '\u{2c}',
2906    '\u{25}',
2907    '\u{5f}',
2908    '\u{3e}',
2909    '\u{3f}',
2910    '\u{5b}',
2911    '\u{69}',
2912    '\u{6a}',
2913    '\u{6b}',
2914    '\u{6c}',
2915    '\u{6d}',
2916    '\u{6e}',
2917    '\u{6f}',
2918    '\u{70}',
2919    '\u{60}',
2920    '\u{3a}',
2921    '\u{23}',
2922    '\u{40}',
2923    '\u{27}',
2924    '\u{3d}',
2925    '\u{22}',
2926    '\u{5d}',
2927    '\u{ff71}',
2928    '\u{ff72}',
2929    '\u{ff73}',
2930    '\u{ff74}',
2931    '\u{ff75}',
2932    '\u{ff76}',
2933    '\u{ff77}',
2934    '\u{ff78}',
2935    '\u{ff79}',
2936    '\u{ff7a}',
2937    '\u{71}',
2938    '\u{ff7b}',
2939    '\u{ff7c}',
2940    '\u{ff7d}',
2941    '\u{ff7e}',
2942    '\u{ff7f}',
2943    '\u{ff80}',
2944    '\u{ff81}',
2945    '\u{ff82}',
2946    '\u{ff83}',
2947    '\u{ff84}',
2948    '\u{ff85}',
2949    '\u{ff86}',
2950    '\u{ff87}',
2951    '\u{ff88}',
2952    '\u{ff89}',
2953    '\u{72}',
2954    char::REPLACEMENT_CHARACTER,
2955    '\u{ff8a}',
2956    '\u{ff8b}',
2957    '\u{ff8c}',
2958    '\u{7e}',
2959    '\u{203e}',
2960    '\u{ff8d}',
2961    '\u{ff8e}',
2962    '\u{ff8f}',
2963    '\u{ff90}',
2964    '\u{ff91}',
2965    '\u{ff92}',
2966    '\u{ff93}',
2967    '\u{ff94}',
2968    '\u{ff95}',
2969    '\u{73}',
2970    '\u{ff96}',
2971    '\u{ff97}',
2972    '\u{ff98}',
2973    '\u{ff99}',
2974    '\u{5e}',
2975    '\u{a2}',
2976    '\u{5c}',
2977    '\u{74}',
2978    '\u{75}',
2979    '\u{76}',
2980    '\u{77}',
2981    '\u{78}',
2982    '\u{79}',
2983    '\u{7a}',
2984    '\u{ff9a}',
2985    '\u{ff9b}',
2986    '\u{ff9c}',
2987    '\u{ff9d}',
2988    '\u{ff9e}',
2989    '\u{ff9f}',
2990    '\u{7b}',
2991    '\u{41}',
2992    '\u{42}',
2993    '\u{43}',
2994    '\u{44}',
2995    '\u{45}',
2996    '\u{46}',
2997    '\u{47}',
2998    '\u{48}',
2999    '\u{49}',
3000    char::REPLACEMENT_CHARACTER,
3001    char::REPLACEMENT_CHARACTER,
3002    char::REPLACEMENT_CHARACTER,
3003    char::REPLACEMENT_CHARACTER,
3004    char::REPLACEMENT_CHARACTER,
3005    char::REPLACEMENT_CHARACTER,
3006    '\u{7d}',
3007    '\u{4a}',
3008    '\u{4b}',
3009    '\u{4c}',
3010    '\u{4d}',
3011    '\u{4e}',
3012    '\u{4f}',
3013    '\u{50}',
3014    '\u{51}',
3015    '\u{52}',
3016    char::REPLACEMENT_CHARACTER,
3017    char::REPLACEMENT_CHARACTER,
3018    char::REPLACEMENT_CHARACTER,
3019    char::REPLACEMENT_CHARACTER,
3020    char::REPLACEMENT_CHARACTER,
3021    char::REPLACEMENT_CHARACTER,
3022    '\u{24}',
3023    char::REPLACEMENT_CHARACTER,
3024    '\u{53}',
3025    '\u{54}',
3026    '\u{55}',
3027    '\u{56}',
3028    '\u{57}',
3029    '\u{58}',
3030    '\u{59}',
3031    '\u{5a}',
3032    char::REPLACEMENT_CHARACTER,
3033    char::REPLACEMENT_CHARACTER,
3034    char::REPLACEMENT_CHARACTER,
3035    char::REPLACEMENT_CHARACTER,
3036    char::REPLACEMENT_CHARACTER,
3037    char::REPLACEMENT_CHARACTER,
3038    '\u{30}',
3039    '\u{31}',
3040    '\u{32}',
3041    '\u{33}',
3042    '\u{34}',
3043    '\u{35}',
3044    '\u{36}',
3045    '\u{37}',
3046    '\u{38}',
3047    '\u{39}',
3048    char::REPLACEMENT_CHARACTER,
3049    char::REPLACEMENT_CHARACTER,
3050    char::REPLACEMENT_CHARACTER,
3051    char::REPLACEMENT_CHARACTER,
3052    char::REPLACEMENT_CHARACTER,
3053    '\u{9f}',
3054];
3055const IBM_290_ENCODE_TABLE: &[(u16, u8)] = &[
3056    (0, 0),
3057    (1, 1),
3058    (2, 2),
3059    (3, 3),
3060    (4, 55),
3061    (5, 45),
3062    (6, 46),
3063    (7, 47),
3064    (8, 22),
3065    (9, 5),
3066    (10, 37),
3067    (11, 11),
3068    (12, 12),
3069    (13, 13),
3070    (14, 14),
3071    (15, 15),
3072    (16, 16),
3073    (17, 17),
3074    (18, 18),
3075    (19, 19),
3076    (20, 60),
3077    (21, 61),
3078    (22, 50),
3079    (23, 38),
3080    (24, 24),
3081    (25, 25),
3082    (26, 63),
3083    (27, 39),
3084    (28, 28),
3085    (29, 29),
3086    (30, 30),
3087    (31, 31),
3088    (32, 64),
3089    (33, 90),
3090    (34, 127),
3091    (35, 123),
3092    (36, 224),
3093    (37, 108),
3094    (38, 80),
3095    (39, 125),
3096    (40, 77),
3097    (41, 93),
3098    (42, 92),
3099    (43, 78),
3100    (44, 107),
3101    (45, 96),
3102    (46, 75),
3103    (47, 97),
3104    (48, 240),
3105    (49, 241),
3106    (50, 242),
3107    (51, 243),
3108    (52, 244),
3109    (53, 245),
3110    (54, 246),
3111    (55, 247),
3112    (56, 248),
3113    (57, 249),
3114    (58, 122),
3115    (59, 94),
3116    (60, 76),
3117    (61, 126),
3118    (62, 110),
3119    (63, 111),
3120    (64, 124),
3121    (65, 193),
3122    (66, 194),
3123    (67, 195),
3124    (68, 196),
3125    (69, 197),
3126    (70, 198),
3127    (71, 199),
3128    (72, 200),
3129    (73, 201),
3130    (74, 209),
3131    (75, 210),
3132    (76, 211),
3133    (77, 212),
3134    (78, 213),
3135    (79, 214),
3136    (80, 215),
3137    (81, 216),
3138    (82, 217),
3139    (83, 226),
3140    (84, 227),
3141    (85, 228),
3142    (86, 229),
3143    (87, 230),
3144    (88, 231),
3145    (89, 232),
3146    (90, 233),
3147    (91, 112),
3148    (92, 178),
3149    (93, 128),
3150    (94, 176),
3151    (95, 109),
3152    (96, 121),
3153    (97, 98),
3154    (98, 99),
3155    (99, 100),
3156    (100, 101),
3157    (101, 102),
3158    (102, 103),
3159    (103, 104),
3160    (104, 105),
3161    (105, 113),
3162    (106, 114),
3163    (107, 115),
3164    (108, 116),
3165    (109, 117),
3166    (110, 118),
3167    (111, 119),
3168    (112, 120),
3169    (113, 139),
3170    (114, 155),
3171    (115, 171),
3172    (116, 179),
3173    (117, 180),
3174    (118, 181),
3175    (119, 182),
3176    (120, 183),
3177    (121, 184),
3178    (122, 185),
3179    (123, 192),
3180    (124, 79),
3181    (125, 208),
3182    (126, 160),
3183    (127, 7),
3184    (128, 32),
3185    (129, 33),
3186    (130, 34),
3187    (131, 35),
3188    (132, 36),
3189    (133, 21),
3190    (134, 6),
3191    (135, 23),
3192    (136, 40),
3193    (137, 41),
3194    (138, 42),
3195    (139, 43),
3196    (140, 44),
3197    (141, 9),
3198    (142, 10),
3199    (143, 27),
3200    (144, 48),
3201    (145, 49),
3202    (146, 26),
3203    (147, 51),
3204    (148, 52),
3205    (149, 53),
3206    (150, 54),
3207    (151, 8),
3208    (152, 56),
3209    (153, 57),
3210    (154, 58),
3211    (155, 59),
3212    (156, 4),
3213    (157, 20),
3214    (158, 62),
3215    (159, 255),
3216    (162, 177),
3217    (163, 74),
3218    (165, 91),
3219    (172, 95),
3220    (8254, 161),
3221    (65377, 65),
3222    (65378, 66),
3223    (65379, 67),
3224    (65380, 68),
3225    (65381, 69),
3226    (65382, 70),
3227    (65383, 71),
3228    (65384, 72),
3229    (65385, 73),
3230    (65386, 81),
3231    (65387, 82),
3232    (65388, 83),
3233    (65389, 84),
3234    (65390, 85),
3235    (65391, 86),
3236    (65392, 88),
3237    (65393, 129),
3238    (65394, 130),
3239    (65395, 131),
3240    (65396, 132),
3241    (65397, 133),
3242    (65398, 134),
3243    (65399, 135),
3244    (65400, 136),
3245    (65401, 137),
3246    (65402, 138),
3247    (65403, 140),
3248    (65404, 141),
3249    (65405, 142),
3250    (65406, 143),
3251    (65407, 144),
3252    (65408, 145),
3253    (65409, 146),
3254    (65410, 147),
3255    (65411, 148),
3256    (65412, 149),
3257    (65413, 150),
3258    (65414, 151),
3259    (65415, 152),
3260    (65416, 153),
3261    (65417, 154),
3262    (65418, 157),
3263    (65419, 158),
3264    (65420, 159),
3265    (65421, 162),
3266    (65422, 163),
3267    (65423, 164),
3268    (65424, 165),
3269    (65425, 166),
3270    (65426, 167),
3271    (65427, 168),
3272    (65428, 169),
3273    (65429, 170),
3274    (65430, 172),
3275    (65431, 173),
3276    (65432, 174),
3277    (65433, 175),
3278    (65434, 186),
3279    (65435, 187),
3280    (65436, 188),
3281    (65437, 189),
3282    (65438, 190),
3283    (65439, 191),
3284];
3285
3286impl_ebcdic_encoder_and_decoder!(
3287    IBM297,
3288    "IBM297",
3289    IBM297Encoder,
3290    IBM297Decoder,
3291    IBM_297_ENCODE_TABLE,
3292    IBM_297_DECODE_TABLE
3293);
3294const IBM_297_DECODE_TABLE: [char; 256] = [
3295    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
3296    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
3297    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
3298    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
3299    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
3300    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
3301    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
3302    '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
3303    '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
3304    '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a7}', '\u{24}',
3305    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
3306    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
3307    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
3308    '\u{cf}', '\u{cc}', '\u{b5}', '\u{3a}', '\u{a3}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
3309    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
3310    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
3311    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
3312    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{60}', '\u{a8}', '\u{73}', '\u{74}',
3313    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
3314    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5d}',
3315    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
3316    '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
3317    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
3318    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
3319    '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
3320    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
3321    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
3322    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
3323    '\u{da}', '\u{9f}',
3324];
3325const IBM_297_ENCODE_TABLE: &[(u16, u8)] = &[
3326    (0, 0),
3327    (1, 1),
3328    (2, 2),
3329    (3, 3),
3330    (4, 55),
3331    (5, 45),
3332    (6, 46),
3333    (7, 47),
3334    (8, 22),
3335    (9, 5),
3336    (10, 37),
3337    (11, 11),
3338    (12, 12),
3339    (13, 13),
3340    (14, 14),
3341    (15, 15),
3342    (16, 16),
3343    (17, 17),
3344    (18, 18),
3345    (19, 19),
3346    (20, 60),
3347    (21, 61),
3348    (22, 50),
3349    (23, 38),
3350    (24, 24),
3351    (25, 25),
3352    (26, 63),
3353    (27, 39),
3354    (28, 28),
3355    (29, 29),
3356    (30, 30),
3357    (31, 31),
3358    (32, 64),
3359    (33, 79),
3360    (34, 127),
3361    (35, 177),
3362    (36, 91),
3363    (37, 108),
3364    (38, 80),
3365    (39, 125),
3366    (40, 77),
3367    (41, 93),
3368    (42, 92),
3369    (43, 78),
3370    (44, 107),
3371    (45, 96),
3372    (46, 75),
3373    (47, 97),
3374    (48, 240),
3375    (49, 241),
3376    (50, 242),
3377    (51, 243),
3378    (52, 244),
3379    (53, 245),
3380    (54, 246),
3381    (55, 247),
3382    (56, 248),
3383    (57, 249),
3384    (58, 122),
3385    (59, 94),
3386    (60, 76),
3387    (61, 126),
3388    (62, 110),
3389    (63, 111),
3390    (64, 68),
3391    (65, 193),
3392    (66, 194),
3393    (67, 195),
3394    (68, 196),
3395    (69, 197),
3396    (70, 198),
3397    (71, 199),
3398    (72, 200),
3399    (73, 201),
3400    (74, 209),
3401    (75, 210),
3402    (76, 211),
3403    (77, 212),
3404    (78, 213),
3405    (79, 214),
3406    (80, 215),
3407    (81, 216),
3408    (82, 217),
3409    (83, 226),
3410    (84, 227),
3411    (85, 228),
3412    (86, 229),
3413    (87, 230),
3414    (88, 231),
3415    (89, 232),
3416    (90, 233),
3417    (91, 144),
3418    (92, 72),
3419    (93, 181),
3420    (94, 95),
3421    (95, 109),
3422    (96, 160),
3423    (97, 129),
3424    (98, 130),
3425    (99, 131),
3426    (100, 132),
3427    (101, 133),
3428    (102, 134),
3429    (103, 135),
3430    (104, 136),
3431    (105, 137),
3432    (106, 145),
3433    (107, 146),
3434    (108, 147),
3435    (109, 148),
3436    (110, 149),
3437    (111, 150),
3438    (112, 151),
3439    (113, 152),
3440    (114, 153),
3441    (115, 162),
3442    (116, 163),
3443    (117, 164),
3444    (118, 165),
3445    (119, 166),
3446    (120, 167),
3447    (121, 168),
3448    (122, 169),
3449    (123, 81),
3450    (124, 187),
3451    (125, 84),
3452    (126, 189),
3453    (127, 7),
3454    (128, 32),
3455    (129, 33),
3456    (130, 34),
3457    (131, 35),
3458    (132, 36),
3459    (133, 21),
3460    (134, 6),
3461    (135, 23),
3462    (136, 40),
3463    (137, 41),
3464    (138, 42),
3465    (139, 43),
3466    (140, 44),
3467    (141, 9),
3468    (142, 10),
3469    (143, 27),
3470    (144, 48),
3471    (145, 49),
3472    (146, 26),
3473    (147, 51),
3474    (148, 52),
3475    (149, 53),
3476    (150, 54),
3477    (151, 8),
3478    (152, 56),
3479    (153, 57),
3480    (154, 58),
3481    (155, 59),
3482    (156, 4),
3483    (157, 20),
3484    (158, 62),
3485    (159, 255),
3486    (160, 65),
3487    (161, 170),
3488    (162, 176),
3489    (163, 123),
3490    (164, 159),
3491    (165, 178),
3492    (166, 221),
3493    (167, 90),
3494    (168, 161),
3495    (169, 180),
3496    (170, 154),
3497    (171, 138),
3498    (172, 186),
3499    (173, 202),
3500    (174, 175),
3501    (175, 188),
3502    (176, 74),
3503    (177, 143),
3504    (178, 234),
3505    (179, 250),
3506    (180, 190),
3507    (181, 121),
3508    (182, 182),
3509    (183, 179),
3510    (184, 157),
3511    (185, 218),
3512    (186, 155),
3513    (187, 139),
3514    (188, 183),
3515    (189, 184),
3516    (190, 185),
3517    (191, 171),
3518    (192, 100),
3519    (193, 101),
3520    (194, 98),
3521    (195, 102),
3522    (196, 99),
3523    (197, 103),
3524    (198, 158),
3525    (199, 104),
3526    (200, 116),
3527    (201, 113),
3528    (202, 114),
3529    (203, 115),
3530    (204, 120),
3531    (205, 117),
3532    (206, 118),
3533    (207, 119),
3534    (208, 172),
3535    (209, 105),
3536    (210, 237),
3537    (211, 238),
3538    (212, 235),
3539    (213, 239),
3540    (214, 236),
3541    (215, 191),
3542    (216, 128),
3543    (217, 253),
3544    (218, 254),
3545    (219, 251),
3546    (220, 252),
3547    (221, 173),
3548    (222, 174),
3549    (223, 89),
3550    (224, 124),
3551    (225, 69),
3552    (226, 66),
3553    (227, 70),
3554    (228, 67),
3555    (229, 71),
3556    (230, 156),
3557    (231, 224),
3558    (232, 208),
3559    (233, 192),
3560    (234, 82),
3561    (235, 83),
3562    (236, 88),
3563    (237, 85),
3564    (238, 86),
3565    (239, 87),
3566    (240, 140),
3567    (241, 73),
3568    (242, 205),
3569    (243, 206),
3570    (244, 203),
3571    (245, 207),
3572    (246, 204),
3573    (247, 225),
3574    (248, 112),
3575    (249, 106),
3576    (250, 222),
3577    (251, 219),
3578    (252, 220),
3579    (253, 141),
3580    (254, 142),
3581    (255, 223),
3582];
3583
3584impl_ebcdic_encoder_and_decoder!(
3585    IBM420,
3586    "IBM420",
3587    IBM420Encoder,
3588    IBM420Decoder,
3589    IBM_420_ENCODE_TABLE,
3590    IBM_420_DECODE_TABLE
3591);
3592const IBM_420_DECODE_TABLE: [char; 256] = [
3593    '\u{0}',
3594    '\u{1}',
3595    '\u{2}',
3596    '\u{3}',
3597    '\u{9c}',
3598    '\u{9}',
3599    '\u{86}',
3600    '\u{7f}',
3601    '\u{97}',
3602    '\u{8d}',
3603    '\u{8e}',
3604    '\u{b}',
3605    '\u{c}',
3606    '\u{d}',
3607    '\u{e}',
3608    '\u{f}',
3609    '\u{10}',
3610    '\u{11}',
3611    '\u{12}',
3612    '\u{13}',
3613    '\u{9d}',
3614    '\u{85}',
3615    '\u{8}',
3616    '\u{87}',
3617    '\u{18}',
3618    '\u{19}',
3619    '\u{92}',
3620    '\u{8f}',
3621    '\u{1c}',
3622    '\u{1d}',
3623    '\u{1e}',
3624    '\u{1f}',
3625    '\u{80}',
3626    '\u{81}',
3627    '\u{82}',
3628    '\u{83}',
3629    '\u{84}',
3630    '\u{a}',
3631    '\u{17}',
3632    '\u{1b}',
3633    '\u{88}',
3634    '\u{89}',
3635    '\u{8a}',
3636    '\u{8b}',
3637    '\u{8c}',
3638    '\u{5}',
3639    '\u{6}',
3640    '\u{7}',
3641    '\u{90}',
3642    '\u{91}',
3643    '\u{16}',
3644    '\u{93}',
3645    '\u{94}',
3646    '\u{95}',
3647    '\u{96}',
3648    '\u{4}',
3649    '\u{98}',
3650    '\u{99}',
3651    '\u{9a}',
3652    '\u{9b}',
3653    '\u{14}',
3654    '\u{15}',
3655    '\u{9e}',
3656    '\u{1a}',
3657    '\u{20}',
3658    '\u{a0}',
3659    '\u{651}',
3660    '\u{fe7d}',
3661    '\u{640}',
3662    '\u{200b}',
3663    '\u{621}',
3664    '\u{622}',
3665    '\u{fe82}',
3666    '\u{623}',
3667    '\u{a2}',
3668    '\u{2e}',
3669    '\u{3c}',
3670    '\u{28}',
3671    '\u{2b}',
3672    '\u{7c}',
3673    '\u{26}',
3674    '\u{fe84}',
3675    '\u{624}',
3676    char::REPLACEMENT_CHARACTER,
3677    char::REPLACEMENT_CHARACTER,
3678    '\u{626}',
3679    '\u{627}',
3680    '\u{fe8e}',
3681    '\u{628}',
3682    '\u{fe91}',
3683    '\u{21}',
3684    '\u{24}',
3685    '\u{2a}',
3686    '\u{29}',
3687    '\u{3b}',
3688    '\u{ac}',
3689    '\u{2d}',
3690    '\u{2f}',
3691    '\u{629}',
3692    '\u{62a}',
3693    '\u{fe97}',
3694    '\u{62b}',
3695    '\u{fe9b}',
3696    '\u{62c}',
3697    '\u{fe9f}',
3698    '\u{62d}',
3699    '\u{a6}',
3700    '\u{2c}',
3701    '\u{25}',
3702    '\u{5f}',
3703    '\u{3e}',
3704    '\u{3f}',
3705    '\u{fea3}',
3706    '\u{62e}',
3707    '\u{fea7}',
3708    '\u{62f}',
3709    '\u{630}',
3710    '\u{631}',
3711    '\u{632}',
3712    '\u{633}',
3713    '\u{feb3}',
3714    '\u{60c}',
3715    '\u{3a}',
3716    '\u{23}',
3717    '\u{40}',
3718    '\u{27}',
3719    '\u{3d}',
3720    '\u{22}',
3721    '\u{634}',
3722    '\u{61}',
3723    '\u{62}',
3724    '\u{63}',
3725    '\u{64}',
3726    '\u{65}',
3727    '\u{66}',
3728    '\u{67}',
3729    '\u{68}',
3730    '\u{69}',
3731    '\u{feb7}',
3732    '\u{635}',
3733    '\u{febb}',
3734    '\u{636}',
3735    '\u{febf}',
3736    '\u{637}',
3737    '\u{638}',
3738    '\u{6a}',
3739    '\u{6b}',
3740    '\u{6c}',
3741    '\u{6d}',
3742    '\u{6e}',
3743    '\u{6f}',
3744    '\u{70}',
3745    '\u{71}',
3746    '\u{72}',
3747    '\u{639}',
3748    '\u{feca}',
3749    '\u{fecb}',
3750    '\u{fecc}',
3751    '\u{63a}',
3752    '\u{fece}',
3753    '\u{fecf}',
3754    '\u{f7}',
3755    '\u{73}',
3756    '\u{74}',
3757    '\u{75}',
3758    '\u{76}',
3759    '\u{77}',
3760    '\u{78}',
3761    '\u{79}',
3762    '\u{7a}',
3763    '\u{fed0}',
3764    '\u{641}',
3765    '\u{fed3}',
3766    '\u{642}',
3767    '\u{fed7}',
3768    '\u{643}',
3769    '\u{fedb}',
3770    '\u{644}',
3771    '\u{fef5}',
3772    '\u{fef6}',
3773    '\u{fef7}',
3774    '\u{fef8}',
3775    char::REPLACEMENT_CHARACTER,
3776    char::REPLACEMENT_CHARACTER,
3777    '\u{fefb}',
3778    '\u{fefc}',
3779    '\u{fedf}',
3780    '\u{645}',
3781    '\u{fee3}',
3782    '\u{646}',
3783    '\u{fee7}',
3784    '\u{647}',
3785    '\u{61b}',
3786    '\u{41}',
3787    '\u{42}',
3788    '\u{43}',
3789    '\u{44}',
3790    '\u{45}',
3791    '\u{46}',
3792    '\u{47}',
3793    '\u{48}',
3794    '\u{49}',
3795    '\u{ad}',
3796    '\u{feeb}',
3797    char::REPLACEMENT_CHARACTER,
3798    '\u{feec}',
3799    char::REPLACEMENT_CHARACTER,
3800    '\u{648}',
3801    '\u{61f}',
3802    '\u{4a}',
3803    '\u{4b}',
3804    '\u{4c}',
3805    '\u{4d}',
3806    '\u{4e}',
3807    '\u{4f}',
3808    '\u{50}',
3809    '\u{51}',
3810    '\u{52}',
3811    '\u{649}',
3812    '\u{fef0}',
3813    '\u{64a}',
3814    '\u{fef2}',
3815    '\u{fef3}',
3816    '\u{660}',
3817    '\u{d7}',
3818    char::REPLACEMENT_CHARACTER,
3819    '\u{53}',
3820    '\u{54}',
3821    '\u{55}',
3822    '\u{56}',
3823    '\u{57}',
3824    '\u{58}',
3825    '\u{59}',
3826    '\u{5a}',
3827    '\u{661}',
3828    '\u{662}',
3829    char::REPLACEMENT_CHARACTER,
3830    '\u{663}',
3831    '\u{664}',
3832    '\u{665}',
3833    '\u{30}',
3834    '\u{31}',
3835    '\u{32}',
3836    '\u{33}',
3837    '\u{34}',
3838    '\u{35}',
3839    '\u{36}',
3840    '\u{37}',
3841    '\u{38}',
3842    '\u{39}',
3843    char::REPLACEMENT_CHARACTER,
3844    '\u{666}',
3845    '\u{667}',
3846    '\u{668}',
3847    '\u{669}',
3848    '\u{9f}',
3849];
3850const IBM_420_ENCODE_TABLE: &[(u16, u8)] = &[
3851    (0, 0),
3852    (1, 1),
3853    (2, 2),
3854    (3, 3),
3855    (4, 55),
3856    (5, 45),
3857    (6, 46),
3858    (7, 47),
3859    (8, 22),
3860    (9, 5),
3861    (10, 37),
3862    (11, 11),
3863    (12, 12),
3864    (13, 13),
3865    (14, 14),
3866    (15, 15),
3867    (16, 16),
3868    (17, 17),
3869    (18, 18),
3870    (19, 19),
3871    (20, 60),
3872    (21, 61),
3873    (22, 50),
3874    (23, 38),
3875    (24, 24),
3876    (25, 25),
3877    (26, 63),
3878    (27, 39),
3879    (28, 28),
3880    (29, 29),
3881    (30, 30),
3882    (31, 31),
3883    (32, 64),
3884    (33, 90),
3885    (34, 127),
3886    (35, 123),
3887    (36, 91),
3888    (37, 108),
3889    (38, 80),
3890    (39, 125),
3891    (40, 77),
3892    (41, 93),
3893    (42, 92),
3894    (43, 78),
3895    (44, 107),
3896    (45, 96),
3897    (46, 75),
3898    (47, 97),
3899    (48, 240),
3900    (49, 241),
3901    (50, 242),
3902    (51, 243),
3903    (52, 244),
3904    (53, 245),
3905    (54, 246),
3906    (55, 247),
3907    (56, 248),
3908    (57, 249),
3909    (58, 122),
3910    (59, 94),
3911    (60, 76),
3912    (61, 126),
3913    (62, 110),
3914    (63, 111),
3915    (64, 124),
3916    (65, 193),
3917    (66, 194),
3918    (67, 195),
3919    (68, 196),
3920    (69, 197),
3921    (70, 198),
3922    (71, 199),
3923    (72, 200),
3924    (73, 201),
3925    (74, 209),
3926    (75, 210),
3927    (76, 211),
3928    (77, 212),
3929    (78, 213),
3930    (79, 214),
3931    (80, 215),
3932    (81, 216),
3933    (82, 217),
3934    (83, 226),
3935    (84, 227),
3936    (85, 228),
3937    (86, 229),
3938    (87, 230),
3939    (88, 231),
3940    (89, 232),
3941    (90, 233),
3942    (95, 109),
3943    (97, 129),
3944    (98, 130),
3945    (99, 131),
3946    (100, 132),
3947    (101, 133),
3948    (102, 134),
3949    (103, 135),
3950    (104, 136),
3951    (105, 137),
3952    (106, 145),
3953    (107, 146),
3954    (108, 147),
3955    (109, 148),
3956    (110, 149),
3957    (111, 150),
3958    (112, 151),
3959    (113, 152),
3960    (114, 153),
3961    (115, 162),
3962    (116, 163),
3963    (117, 164),
3964    (118, 165),
3965    (119, 166),
3966    (120, 167),
3967    (121, 168),
3968    (122, 169),
3969    (124, 79),
3970    (127, 7),
3971    (128, 32),
3972    (129, 33),
3973    (130, 34),
3974    (131, 35),
3975    (132, 36),
3976    (133, 21),
3977    (134, 6),
3978    (135, 23),
3979    (136, 40),
3980    (137, 41),
3981    (138, 42),
3982    (139, 43),
3983    (140, 44),
3984    (141, 9),
3985    (142, 10),
3986    (143, 27),
3987    (144, 48),
3988    (145, 49),
3989    (146, 26),
3990    (147, 51),
3991    (148, 52),
3992    (149, 53),
3993    (150, 54),
3994    (151, 8),
3995    (152, 56),
3996    (153, 57),
3997    (154, 58),
3998    (155, 59),
3999    (156, 4),
4000    (157, 20),
4001    (158, 62),
4002    (159, 255),
4003    (160, 65),
4004    (162, 74),
4005    (166, 106),
4006    (172, 95),
4007    (173, 202),
4008    (215, 224),
4009    (247, 161),
4010    (1548, 121),
4011    (1563, 192),
4012    (1567, 208),
4013    (1569, 70),
4014    (1570, 71),
4015    (1571, 73),
4016    (1572, 82),
4017    (1574, 85),
4018    (1575, 86),
4019    (1576, 88),
4020    (1577, 98),
4021    (1578, 99),
4022    (1579, 101),
4023    (1580, 103),
4024    (1581, 105),
4025    (1582, 113),
4026    (1583, 115),
4027    (1584, 116),
4028    (1585, 117),
4029    (1586, 118),
4030    (1587, 119),
4031    (1588, 128),
4032    (1589, 139),
4033    (1590, 141),
4034    (1591, 143),
4035    (1592, 144),
4036    (1593, 154),
4037    (1594, 158),
4038    (1600, 68),
4039    (1601, 171),
4040    (1602, 173),
4041    (1603, 175),
4042    (1604, 177),
4043    (1605, 187),
4044    (1606, 189),
4045    (1607, 191),
4046    (1608, 207),
4047    (1609, 218),
4048    (1610, 220),
4049    (1617, 66),
4050    (1632, 223),
4051    (1633, 234),
4052    (1634, 235),
4053    (1635, 237),
4054    (1636, 238),
4055    (1637, 239),
4056    (1638, 251),
4057    (1639, 252),
4058    (1640, 253),
4059    (1641, 254),
4060    (8203, 69),
4061    (65149, 67),
4062    (65154, 72),
4063    (65156, 81),
4064    (65166, 87),
4065    (65169, 89),
4066    (65175, 100),
4067    (65179, 102),
4068    (65183, 104),
4069    (65187, 112),
4070    (65191, 114),
4071    (65203, 120),
4072    (65207, 138),
4073    (65211, 140),
4074    (65215, 142),
4075    (65226, 155),
4076    (65227, 156),
4077    (65228, 157),
4078    (65230, 159),
4079    (65231, 160),
4080    (65232, 170),
4081    (65235, 172),
4082    (65239, 174),
4083    (65243, 176),
4084    (65247, 186),
4085    (65251, 188),
4086    (65255, 190),
4087    (65259, 203),
4088    (65260, 205),
4089    (65264, 219),
4090    (65266, 221),
4091    (65267, 222),
4092    (65269, 178),
4093    (65270, 179),
4094    (65271, 180),
4095    (65272, 181),
4096    (65275, 184),
4097    (65276, 185),
4098];
4099
4100impl_ebcdic_encoder_and_decoder!(
4101    IBM423,
4102    "IBM423",
4103    IBM423Encoder,
4104    IBM423Decoder,
4105    IBM_423_ENCODE_TABLE,
4106    IBM_423_DECODE_TABLE
4107);
4108const IBM_423_DECODE_TABLE: [char; 256] = [
4109    '\u{0}',
4110    '\u{1}',
4111    '\u{2}',
4112    '\u{3}',
4113    '\u{9c}',
4114    '\u{9}',
4115    '\u{86}',
4116    '\u{7f}',
4117    '\u{97}',
4118    '\u{8d}',
4119    '\u{8e}',
4120    '\u{b}',
4121    '\u{c}',
4122    '\u{d}',
4123    '\u{e}',
4124    '\u{f}',
4125    '\u{10}',
4126    '\u{11}',
4127    '\u{12}',
4128    '\u{13}',
4129    '\u{9d}',
4130    '\u{85}',
4131    '\u{8}',
4132    '\u{87}',
4133    '\u{18}',
4134    '\u{19}',
4135    '\u{92}',
4136    '\u{8f}',
4137    '\u{1c}',
4138    '\u{1d}',
4139    '\u{1e}',
4140    '\u{1f}',
4141    '\u{80}',
4142    '\u{81}',
4143    '\u{82}',
4144    '\u{83}',
4145    '\u{84}',
4146    '\u{a}',
4147    '\u{17}',
4148    '\u{1b}',
4149    '\u{88}',
4150    '\u{89}',
4151    '\u{8a}',
4152    '\u{8b}',
4153    '\u{8c}',
4154    '\u{5}',
4155    '\u{6}',
4156    '\u{7}',
4157    '\u{90}',
4158    '\u{91}',
4159    '\u{16}',
4160    '\u{93}',
4161    '\u{94}',
4162    '\u{95}',
4163    '\u{96}',
4164    '\u{4}',
4165    '\u{98}',
4166    '\u{99}',
4167    '\u{9a}',
4168    '\u{9b}',
4169    '\u{14}',
4170    '\u{15}',
4171    '\u{9e}',
4172    '\u{1a}',
4173    '\u{20}',
4174    '\u{391}',
4175    '\u{392}',
4176    '\u{393}',
4177    '\u{394}',
4178    '\u{395}',
4179    '\u{396}',
4180    '\u{397}',
4181    '\u{398}',
4182    '\u{399}',
4183    '\u{5b}',
4184    '\u{2e}',
4185    '\u{3c}',
4186    '\u{28}',
4187    '\u{2b}',
4188    '\u{21}',
4189    '\u{26}',
4190    '\u{39a}',
4191    '\u{39b}',
4192    '\u{39c}',
4193    '\u{39d}',
4194    '\u{39e}',
4195    '\u{39f}',
4196    '\u{3a0}',
4197    '\u{3a1}',
4198    '\u{3a3}',
4199    '\u{5d}',
4200    '\u{24}',
4201    '\u{2a}',
4202    '\u{29}',
4203    '\u{3b}',
4204    '\u{5e}',
4205    '\u{2d}',
4206    '\u{2f}',
4207    '\u{3a4}',
4208    '\u{3a5}',
4209    '\u{3a6}',
4210    '\u{3a7}',
4211    '\u{3a8}',
4212    '\u{3a9}',
4213    char::REPLACEMENT_CHARACTER,
4214    char::REPLACEMENT_CHARACTER,
4215    '\u{7c}',
4216    '\u{2c}',
4217    '\u{25}',
4218    '\u{5f}',
4219    '\u{3e}',
4220    '\u{3f}',
4221    char::REPLACEMENT_CHARACTER,
4222    '\u{386}',
4223    '\u{388}',
4224    '\u{389}',
4225    '\u{a0}',
4226    '\u{38a}',
4227    '\u{38c}',
4228    '\u{38e}',
4229    '\u{38f}',
4230    '\u{60}',
4231    '\u{3a}',
4232    '\u{a3}',
4233    '\u{a7}',
4234    '\u{27}',
4235    '\u{3d}',
4236    '\u{22}',
4237    '\u{c4}',
4238    '\u{61}',
4239    '\u{62}',
4240    '\u{63}',
4241    '\u{64}',
4242    '\u{65}',
4243    '\u{66}',
4244    '\u{67}',
4245    '\u{68}',
4246    '\u{69}',
4247    '\u{3b1}',
4248    '\u{3b2}',
4249    '\u{3b3}',
4250    '\u{3b4}',
4251    '\u{3b5}',
4252    '\u{3b6}',
4253    '\u{d6}',
4254    '\u{6a}',
4255    '\u{6b}',
4256    '\u{6c}',
4257    '\u{6d}',
4258    '\u{6e}',
4259    '\u{6f}',
4260    '\u{70}',
4261    '\u{71}',
4262    '\u{72}',
4263    '\u{3b7}',
4264    '\u{3b8}',
4265    '\u{3b9}',
4266    '\u{3ba}',
4267    '\u{3bb}',
4268    '\u{3bc}',
4269    '\u{dc}',
4270    '\u{a8}',
4271    '\u{73}',
4272    '\u{74}',
4273    '\u{75}',
4274    '\u{76}',
4275    '\u{77}',
4276    '\u{78}',
4277    '\u{79}',
4278    '\u{7a}',
4279    '\u{3bd}',
4280    '\u{3be}',
4281    '\u{3bf}',
4282    '\u{3c0}',
4283    '\u{3c1}',
4284    '\u{3c3}',
4285    char::REPLACEMENT_CHARACTER,
4286    '\u{3ac}',
4287    '\u{3ad}',
4288    '\u{3ae}',
4289    '\u{3ca}',
4290    '\u{3af}',
4291    '\u{3cc}',
4292    '\u{3cd}',
4293    '\u{3cb}',
4294    '\u{3ce}',
4295    '\u{3c2}',
4296    '\u{3c4}',
4297    '\u{3c5}',
4298    '\u{3c6}',
4299    '\u{3c7}',
4300    '\u{3c8}',
4301    '\u{b8}',
4302    '\u{41}',
4303    '\u{42}',
4304    '\u{43}',
4305    '\u{44}',
4306    '\u{45}',
4307    '\u{46}',
4308    '\u{47}',
4309    '\u{48}',
4310    '\u{49}',
4311    '\u{ad}',
4312    '\u{3c9}',
4313    '\u{e2}',
4314    '\u{e0}',
4315    '\u{e4}',
4316    '\u{ea}',
4317    '\u{b4}',
4318    '\u{4a}',
4319    '\u{4b}',
4320    '\u{4c}',
4321    '\u{4d}',
4322    '\u{4e}',
4323    '\u{4f}',
4324    '\u{50}',
4325    '\u{51}',
4326    '\u{52}',
4327    '\u{b1}',
4328    '\u{e9}',
4329    '\u{e8}',
4330    '\u{eb}',
4331    '\u{ee}',
4332    '\u{ef}',
4333    '\u{b0}',
4334    char::REPLACEMENT_CHARACTER,
4335    '\u{53}',
4336    '\u{54}',
4337    '\u{55}',
4338    '\u{56}',
4339    '\u{57}',
4340    '\u{58}',
4341    '\u{59}',
4342    '\u{5a}',
4343    '\u{bd}',
4344    '\u{f6}',
4345    '\u{f4}',
4346    '\u{fb}',
4347    '\u{f9}',
4348    '\u{fc}',
4349    '\u{30}',
4350    '\u{31}',
4351    '\u{32}',
4352    '\u{33}',
4353    '\u{34}',
4354    '\u{35}',
4355    '\u{36}',
4356    '\u{37}',
4357    '\u{38}',
4358    '\u{39}',
4359    '\u{ff}',
4360    '\u{e7}',
4361    '\u{c7}',
4362    char::REPLACEMENT_CHARACTER,
4363    char::REPLACEMENT_CHARACTER,
4364    '\u{9f}',
4365];
4366const IBM_423_ENCODE_TABLE: &[(u16, u8)] = &[
4367    (0, 0),
4368    (1, 1),
4369    (2, 2),
4370    (3, 3),
4371    (4, 55),
4372    (5, 45),
4373    (6, 46),
4374    (7, 47),
4375    (8, 22),
4376    (9, 5),
4377    (10, 37),
4378    (11, 11),
4379    (12, 12),
4380    (13, 13),
4381    (14, 14),
4382    (15, 15),
4383    (16, 16),
4384    (17, 17),
4385    (18, 18),
4386    (19, 19),
4387    (20, 60),
4388    (21, 61),
4389    (22, 50),
4390    (23, 38),
4391    (24, 24),
4392    (25, 25),
4393    (26, 63),
4394    (27, 39),
4395    (28, 28),
4396    (29, 29),
4397    (30, 30),
4398    (31, 31),
4399    (32, 64),
4400    (33, 79),
4401    (34, 127),
4402    (36, 91),
4403    (37, 108),
4404    (38, 80),
4405    (39, 125),
4406    (40, 77),
4407    (41, 93),
4408    (42, 92),
4409    (43, 78),
4410    (44, 107),
4411    (45, 96),
4412    (46, 75),
4413    (47, 97),
4414    (48, 240),
4415    (49, 241),
4416    (50, 242),
4417    (51, 243),
4418    (52, 244),
4419    (53, 245),
4420    (54, 246),
4421    (55, 247),
4422    (56, 248),
4423    (57, 249),
4424    (58, 122),
4425    (59, 94),
4426    (60, 76),
4427    (61, 126),
4428    (62, 110),
4429    (63, 111),
4430    (65, 193),
4431    (66, 194),
4432    (67, 195),
4433    (68, 196),
4434    (69, 197),
4435    (70, 198),
4436    (71, 199),
4437    (72, 200),
4438    (73, 201),
4439    (74, 209),
4440    (75, 210),
4441    (76, 211),
4442    (77, 212),
4443    (78, 213),
4444    (79, 214),
4445    (80, 215),
4446    (81, 216),
4447    (82, 217),
4448    (83, 226),
4449    (84, 227),
4450    (85, 228),
4451    (86, 229),
4452    (87, 230),
4453    (88, 231),
4454    (89, 232),
4455    (90, 233),
4456    (91, 74),
4457    (93, 90),
4458    (94, 95),
4459    (95, 109),
4460    (96, 121),
4461    (97, 129),
4462    (98, 130),
4463    (99, 131),
4464    (100, 132),
4465    (101, 133),
4466    (102, 134),
4467    (103, 135),
4468    (104, 136),
4469    (105, 137),
4470    (106, 145),
4471    (107, 146),
4472    (108, 147),
4473    (109, 148),
4474    (110, 149),
4475    (111, 150),
4476    (112, 151),
4477    (113, 152),
4478    (114, 153),
4479    (115, 162),
4480    (116, 163),
4481    (117, 164),
4482    (118, 165),
4483    (119, 166),
4484    (120, 167),
4485    (121, 168),
4486    (122, 169),
4487    (124, 106),
4488    (127, 7),
4489    (128, 32),
4490    (129, 33),
4491    (130, 34),
4492    (131, 35),
4493    (132, 36),
4494    (133, 21),
4495    (134, 6),
4496    (135, 23),
4497    (136, 40),
4498    (137, 41),
4499    (138, 42),
4500    (139, 43),
4501    (140, 44),
4502    (141, 9),
4503    (142, 10),
4504    (143, 27),
4505    (144, 48),
4506    (145, 49),
4507    (146, 26),
4508    (147, 51),
4509    (148, 52),
4510    (149, 53),
4511    (150, 54),
4512    (151, 8),
4513    (152, 56),
4514    (153, 57),
4515    (154, 58),
4516    (155, 59),
4517    (156, 4),
4518    (157, 20),
4519    (158, 62),
4520    (159, 255),
4521    (160, 116),
4522    (163, 123),
4523    (167, 124),
4524    (168, 161),
4525    (173, 202),
4526    (176, 224),
4527    (177, 218),
4528    (180, 208),
4529    (184, 192),
4530    (189, 234),
4531    (196, 128),
4532    (199, 252),
4533    (214, 144),
4534    (220, 160),
4535    (224, 205),
4536    (226, 204),
4537    (228, 206),
4538    (231, 251),
4539    (232, 220),
4540    (233, 219),
4541    (234, 207),
4542    (235, 221),
4543    (238, 222),
4544    (239, 223),
4545    (244, 236),
4546    (246, 235),
4547    (249, 238),
4548    (251, 237),
4549    (252, 239),
4550    (255, 250),
4551    (902, 113),
4552    (904, 114),
4553    (905, 115),
4554    (906, 117),
4555    (908, 118),
4556    (910, 119),
4557    (911, 120),
4558    (913, 65),
4559    (914, 66),
4560    (915, 67),
4561    (916, 68),
4562    (917, 69),
4563    (918, 70),
4564    (919, 71),
4565    (920, 72),
4566    (921, 73),
4567    (922, 81),
4568    (923, 82),
4569    (924, 83),
4570    (925, 84),
4571    (926, 85),
4572    (927, 86),
4573    (928, 87),
4574    (929, 88),
4575    (931, 89),
4576    (932, 98),
4577    (933, 99),
4578    (934, 100),
4579    (935, 101),
4580    (936, 102),
4581    (937, 103),
4582    (940, 177),
4583    (941, 178),
4584    (942, 179),
4585    (943, 181),
4586    (945, 138),
4587    (946, 139),
4588    (947, 140),
4589    (948, 141),
4590    (949, 142),
4591    (950, 143),
4592    (951, 154),
4593    (952, 155),
4594    (953, 156),
4595    (954, 157),
4596    (955, 158),
4597    (956, 159),
4598    (957, 170),
4599    (958, 171),
4600    (959, 172),
4601    (960, 173),
4602    (961, 174),
4603    (962, 186),
4604    (963, 175),
4605    (964, 187),
4606    (965, 188),
4607    (966, 189),
4608    (967, 190),
4609    (968, 191),
4610    (969, 203),
4611    (970, 180),
4612    (971, 184),
4613    (972, 182),
4614    (973, 183),
4615    (974, 185),
4616];
4617
4618impl_ebcdic_encoder_and_decoder!(
4619    IBM424,
4620    "IBM424",
4621    IBM424Encoder,
4622    IBM424Decoder,
4623    IBM_424_ENCODE_TABLE,
4624    IBM_424_DECODE_TABLE
4625);
4626const IBM_424_DECODE_TABLE: [char; 256] = [
4627    '\u{0}',
4628    '\u{1}',
4629    '\u{2}',
4630    '\u{3}',
4631    '\u{9c}',
4632    '\u{9}',
4633    '\u{86}',
4634    '\u{7f}',
4635    '\u{97}',
4636    '\u{8d}',
4637    '\u{8e}',
4638    '\u{b}',
4639    '\u{c}',
4640    '\u{d}',
4641    '\u{e}',
4642    '\u{f}',
4643    '\u{10}',
4644    '\u{11}',
4645    '\u{12}',
4646    '\u{13}',
4647    '\u{9d}',
4648    '\u{85}',
4649    '\u{8}',
4650    '\u{87}',
4651    '\u{18}',
4652    '\u{19}',
4653    '\u{92}',
4654    '\u{8f}',
4655    '\u{1c}',
4656    '\u{1d}',
4657    '\u{1e}',
4658    '\u{1f}',
4659    '\u{80}',
4660    '\u{81}',
4661    '\u{82}',
4662    '\u{83}',
4663    '\u{84}',
4664    '\u{a}',
4665    '\u{17}',
4666    '\u{1b}',
4667    '\u{88}',
4668    '\u{89}',
4669    '\u{8a}',
4670    '\u{8b}',
4671    '\u{8c}',
4672    '\u{5}',
4673    '\u{6}',
4674    '\u{7}',
4675    '\u{90}',
4676    '\u{91}',
4677    '\u{16}',
4678    '\u{93}',
4679    '\u{94}',
4680    '\u{95}',
4681    '\u{96}',
4682    '\u{4}',
4683    '\u{98}',
4684    '\u{99}',
4685    '\u{9a}',
4686    '\u{9b}',
4687    '\u{14}',
4688    '\u{15}',
4689    '\u{9e}',
4690    '\u{1a}',
4691    '\u{20}',
4692    '\u{5d0}',
4693    '\u{5d1}',
4694    '\u{5d2}',
4695    '\u{5d3}',
4696    '\u{5d4}',
4697    '\u{5d5}',
4698    '\u{5d6}',
4699    '\u{5d7}',
4700    '\u{5d8}',
4701    '\u{a2}',
4702    '\u{2e}',
4703    '\u{3c}',
4704    '\u{28}',
4705    '\u{2b}',
4706    '\u{7c}',
4707    '\u{26}',
4708    '\u{5d9}',
4709    '\u{5da}',
4710    '\u{5db}',
4711    '\u{5dc}',
4712    '\u{5dd}',
4713    '\u{5de}',
4714    '\u{5df}',
4715    '\u{5e0}',
4716    '\u{5e1}',
4717    '\u{21}',
4718    '\u{24}',
4719    '\u{2a}',
4720    '\u{29}',
4721    '\u{3b}',
4722    '\u{ac}',
4723    '\u{2d}',
4724    '\u{2f}',
4725    '\u{5e2}',
4726    '\u{5e3}',
4727    '\u{5e4}',
4728    '\u{5e5}',
4729    '\u{5e6}',
4730    '\u{5e7}',
4731    '\u{5e8}',
4732    '\u{5e9}',
4733    '\u{a6}',
4734    '\u{2c}',
4735    '\u{25}',
4736    '\u{5f}',
4737    '\u{3e}',
4738    '\u{3f}',
4739    char::REPLACEMENT_CHARACTER,
4740    '\u{5ea}',
4741    char::REPLACEMENT_CHARACTER,
4742    char::REPLACEMENT_CHARACTER,
4743    '\u{a0}',
4744    char::REPLACEMENT_CHARACTER,
4745    char::REPLACEMENT_CHARACTER,
4746    char::REPLACEMENT_CHARACTER,
4747    '\u{2017}',
4748    '\u{60}',
4749    '\u{3a}',
4750    '\u{23}',
4751    '\u{40}',
4752    '\u{27}',
4753    '\u{3d}',
4754    '\u{22}',
4755    char::REPLACEMENT_CHARACTER,
4756    '\u{61}',
4757    '\u{62}',
4758    '\u{63}',
4759    '\u{64}',
4760    '\u{65}',
4761    '\u{66}',
4762    '\u{67}',
4763    '\u{68}',
4764    '\u{69}',
4765    '\u{ab}',
4766    '\u{bb}',
4767    char::REPLACEMENT_CHARACTER,
4768    char::REPLACEMENT_CHARACTER,
4769    char::REPLACEMENT_CHARACTER,
4770    '\u{b1}',
4771    '\u{b0}',
4772    '\u{6a}',
4773    '\u{6b}',
4774    '\u{6c}',
4775    '\u{6d}',
4776    '\u{6e}',
4777    '\u{6f}',
4778    '\u{70}',
4779    '\u{71}',
4780    '\u{72}',
4781    char::REPLACEMENT_CHARACTER,
4782    char::REPLACEMENT_CHARACTER,
4783    char::REPLACEMENT_CHARACTER,
4784    '\u{b8}',
4785    char::REPLACEMENT_CHARACTER,
4786    '\u{a4}',
4787    '\u{b5}',
4788    '\u{7e}',
4789    '\u{73}',
4790    '\u{74}',
4791    '\u{75}',
4792    '\u{76}',
4793    '\u{77}',
4794    '\u{78}',
4795    '\u{79}',
4796    '\u{7a}',
4797    char::REPLACEMENT_CHARACTER,
4798    char::REPLACEMENT_CHARACTER,
4799    char::REPLACEMENT_CHARACTER,
4800    char::REPLACEMENT_CHARACTER,
4801    char::REPLACEMENT_CHARACTER,
4802    '\u{ae}',
4803    '\u{5e}',
4804    '\u{a3}',
4805    '\u{a5}',
4806    '\u{2022}',
4807    '\u{a9}',
4808    '\u{a7}',
4809    '\u{b6}',
4810    '\u{bc}',
4811    '\u{bd}',
4812    '\u{be}',
4813    '\u{5b}',
4814    '\u{5d}',
4815    '\u{203e}',
4816    '\u{a8}',
4817    '\u{b4}',
4818    '\u{d7}',
4819    '\u{7b}',
4820    '\u{41}',
4821    '\u{42}',
4822    '\u{43}',
4823    '\u{44}',
4824    '\u{45}',
4825    '\u{46}',
4826    '\u{47}',
4827    '\u{48}',
4828    '\u{49}',
4829    '\u{ad}',
4830    char::REPLACEMENT_CHARACTER,
4831    char::REPLACEMENT_CHARACTER,
4832    char::REPLACEMENT_CHARACTER,
4833    char::REPLACEMENT_CHARACTER,
4834    char::REPLACEMENT_CHARACTER,
4835    '\u{7d}',
4836    '\u{4a}',
4837    '\u{4b}',
4838    '\u{4c}',
4839    '\u{4d}',
4840    '\u{4e}',
4841    '\u{4f}',
4842    '\u{50}',
4843    '\u{51}',
4844    '\u{52}',
4845    '\u{b9}',
4846    char::REPLACEMENT_CHARACTER,
4847    char::REPLACEMENT_CHARACTER,
4848    char::REPLACEMENT_CHARACTER,
4849    char::REPLACEMENT_CHARACTER,
4850    char::REPLACEMENT_CHARACTER,
4851    '\u{5c}',
4852    '\u{f7}',
4853    '\u{53}',
4854    '\u{54}',
4855    '\u{55}',
4856    '\u{56}',
4857    '\u{57}',
4858    '\u{58}',
4859    '\u{59}',
4860    '\u{5a}',
4861    '\u{b2}',
4862    char::REPLACEMENT_CHARACTER,
4863    char::REPLACEMENT_CHARACTER,
4864    char::REPLACEMENT_CHARACTER,
4865    char::REPLACEMENT_CHARACTER,
4866    char::REPLACEMENT_CHARACTER,
4867    '\u{30}',
4868    '\u{31}',
4869    '\u{32}',
4870    '\u{33}',
4871    '\u{34}',
4872    '\u{35}',
4873    '\u{36}',
4874    '\u{37}',
4875    '\u{38}',
4876    '\u{39}',
4877    '\u{b3}',
4878    char::REPLACEMENT_CHARACTER,
4879    char::REPLACEMENT_CHARACTER,
4880    char::REPLACEMENT_CHARACTER,
4881    char::REPLACEMENT_CHARACTER,
4882    '\u{9f}',
4883];
4884const IBM_424_ENCODE_TABLE: &[(u16, u8)] = &[
4885    (0, 0),
4886    (1, 1),
4887    (2, 2),
4888    (3, 3),
4889    (4, 55),
4890    (5, 45),
4891    (6, 46),
4892    (7, 47),
4893    (8, 22),
4894    (9, 5),
4895    (10, 37),
4896    (11, 11),
4897    (12, 12),
4898    (13, 13),
4899    (14, 14),
4900    (15, 15),
4901    (16, 16),
4902    (17, 17),
4903    (18, 18),
4904    (19, 19),
4905    (20, 60),
4906    (21, 61),
4907    (22, 50),
4908    (23, 38),
4909    (24, 24),
4910    (25, 25),
4911    (26, 63),
4912    (27, 39),
4913    (28, 28),
4914    (29, 29),
4915    (30, 30),
4916    (31, 31),
4917    (32, 64),
4918    (33, 90),
4919    (34, 127),
4920    (35, 123),
4921    (36, 91),
4922    (37, 108),
4923    (38, 80),
4924    (39, 125),
4925    (40, 77),
4926    (41, 93),
4927    (42, 92),
4928    (43, 78),
4929    (44, 107),
4930    (45, 96),
4931    (46, 75),
4932    (47, 97),
4933    (48, 240),
4934    (49, 241),
4935    (50, 242),
4936    (51, 243),
4937    (52, 244),
4938    (53, 245),
4939    (54, 246),
4940    (55, 247),
4941    (56, 248),
4942    (57, 249),
4943    (58, 122),
4944    (59, 94),
4945    (60, 76),
4946    (61, 126),
4947    (62, 110),
4948    (63, 111),
4949    (64, 124),
4950    (65, 193),
4951    (66, 194),
4952    (67, 195),
4953    (68, 196),
4954    (69, 197),
4955    (70, 198),
4956    (71, 199),
4957    (72, 200),
4958    (73, 201),
4959    (74, 209),
4960    (75, 210),
4961    (76, 211),
4962    (77, 212),
4963    (78, 213),
4964    (79, 214),
4965    (80, 215),
4966    (81, 216),
4967    (82, 217),
4968    (83, 226),
4969    (84, 227),
4970    (85, 228),
4971    (86, 229),
4972    (87, 230),
4973    (88, 231),
4974    (89, 232),
4975    (90, 233),
4976    (91, 186),
4977    (92, 224),
4978    (93, 187),
4979    (94, 176),
4980    (95, 109),
4981    (96, 121),
4982    (97, 129),
4983    (98, 130),
4984    (99, 131),
4985    (100, 132),
4986    (101, 133),
4987    (102, 134),
4988    (103, 135),
4989    (104, 136),
4990    (105, 137),
4991    (106, 145),
4992    (107, 146),
4993    (108, 147),
4994    (109, 148),
4995    (110, 149),
4996    (111, 150),
4997    (112, 151),
4998    (113, 152),
4999    (114, 153),
5000    (115, 162),
5001    (116, 163),
5002    (117, 164),
5003    (118, 165),
5004    (119, 166),
5005    (120, 167),
5006    (121, 168),
5007    (122, 169),
5008    (123, 192),
5009    (124, 79),
5010    (125, 208),
5011    (126, 161),
5012    (127, 7),
5013    (128, 32),
5014    (129, 33),
5015    (130, 34),
5016    (131, 35),
5017    (132, 36),
5018    (133, 21),
5019    (134, 6),
5020    (135, 23),
5021    (136, 40),
5022    (137, 41),
5023    (138, 42),
5024    (139, 43),
5025    (140, 44),
5026    (141, 9),
5027    (142, 10),
5028    (143, 27),
5029    (144, 48),
5030    (145, 49),
5031    (146, 26),
5032    (147, 51),
5033    (148, 52),
5034    (149, 53),
5035    (150, 54),
5036    (151, 8),
5037    (152, 56),
5038    (153, 57),
5039    (154, 58),
5040    (155, 59),
5041    (156, 4),
5042    (157, 20),
5043    (158, 62),
5044    (159, 255),
5045    (160, 116),
5046    (162, 74),
5047    (163, 177),
5048    (164, 159),
5049    (165, 178),
5050    (166, 106),
5051    (167, 181),
5052    (168, 189),
5053    (169, 180),
5054    (171, 138),
5055    (172, 95),
5056    (173, 202),
5057    (174, 175),
5058    (176, 144),
5059    (177, 143),
5060    (178, 234),
5061    (179, 250),
5062    (180, 190),
5063    (181, 160),
5064    (182, 182),
5065    (184, 157),
5066    (185, 218),
5067    (187, 139),
5068    (188, 183),
5069    (189, 184),
5070    (190, 185),
5071    (215, 191),
5072    (247, 225),
5073    (1488, 65),
5074    (1489, 66),
5075    (1490, 67),
5076    (1491, 68),
5077    (1492, 69),
5078    (1493, 70),
5079    (1494, 71),
5080    (1495, 72),
5081    (1496, 73),
5082    (1497, 81),
5083    (1498, 82),
5084    (1499, 83),
5085    (1500, 84),
5086    (1501, 85),
5087    (1502, 86),
5088    (1503, 87),
5089    (1504, 88),
5090    (1505, 89),
5091    (1506, 98),
5092    (1507, 99),
5093    (1508, 100),
5094    (1509, 101),
5095    (1510, 102),
5096    (1511, 103),
5097    (1512, 104),
5098    (1513, 105),
5099    (1514, 113),
5100    (8215, 120),
5101    (8226, 179),
5102    (8254, 188),
5103];
5104
5105impl_ebcdic_encoder_and_decoder!(
5106    IBM437,
5107    "IBM437",
5108    IBM437Encoder,
5109    IBM437Decoder,
5110    IBM_437_ENCODE_TABLE,
5111    IBM_437_DECODE_TABLE
5112);
5113const IBM_437_DECODE_TABLE: [char; 256] = [
5114    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5115    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5116    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5117    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5118    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5119    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5120    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5121    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5122    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5123    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5124    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5125    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5126    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5127    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5128    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5129    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5130    '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5131    '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5132    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
5133    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5134    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5135    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5136    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5137    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
5138    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
5139    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
5140    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
5141    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
5142    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
5143    '\u{b2}', '\u{25a0}', '\u{a0}',
5144];
5145const IBM_437_ENCODE_TABLE: &[(u16, u8)] = &[
5146    (0, 0),
5147    (1, 1),
5148    (2, 2),
5149    (3, 3),
5150    (4, 4),
5151    (5, 5),
5152    (6, 6),
5153    (7, 7),
5154    (8, 8),
5155    (9, 9),
5156    (10, 10),
5157    (11, 11),
5158    (12, 12),
5159    (13, 13),
5160    (14, 14),
5161    (15, 15),
5162    (16, 16),
5163    (17, 17),
5164    (18, 18),
5165    (19, 19),
5166    (20, 20),
5167    (21, 21),
5168    (22, 22),
5169    (23, 23),
5170    (24, 24),
5171    (25, 25),
5172    (26, 127),
5173    (27, 27),
5174    (28, 26),
5175    (29, 29),
5176    (30, 30),
5177    (31, 31),
5178    (32, 32),
5179    (33, 33),
5180    (34, 34),
5181    (35, 35),
5182    (36, 36),
5183    (37, 37),
5184    (38, 38),
5185    (39, 39),
5186    (40, 40),
5187    (41, 41),
5188    (42, 42),
5189    (43, 43),
5190    (44, 44),
5191    (45, 45),
5192    (46, 46),
5193    (47, 47),
5194    (48, 48),
5195    (49, 49),
5196    (50, 50),
5197    (51, 51),
5198    (52, 52),
5199    (53, 53),
5200    (54, 54),
5201    (55, 55),
5202    (56, 56),
5203    (57, 57),
5204    (58, 58),
5205    (59, 59),
5206    (60, 60),
5207    (61, 61),
5208    (62, 62),
5209    (63, 63),
5210    (64, 64),
5211    (65, 65),
5212    (66, 66),
5213    (67, 67),
5214    (68, 68),
5215    (69, 69),
5216    (70, 70),
5217    (71, 71),
5218    (72, 72),
5219    (73, 73),
5220    (74, 74),
5221    (75, 75),
5222    (76, 76),
5223    (77, 77),
5224    (78, 78),
5225    (79, 79),
5226    (80, 80),
5227    (81, 81),
5228    (82, 82),
5229    (83, 83),
5230    (84, 84),
5231    (85, 85),
5232    (86, 86),
5233    (87, 87),
5234    (88, 88),
5235    (89, 89),
5236    (90, 90),
5237    (91, 91),
5238    (92, 92),
5239    (93, 93),
5240    (94, 94),
5241    (95, 95),
5242    (96, 96),
5243    (97, 97),
5244    (98, 98),
5245    (99, 99),
5246    (100, 100),
5247    (101, 101),
5248    (102, 102),
5249    (103, 103),
5250    (104, 104),
5251    (105, 105),
5252    (106, 106),
5253    (107, 107),
5254    (108, 108),
5255    (109, 109),
5256    (110, 110),
5257    (111, 111),
5258    (112, 112),
5259    (113, 113),
5260    (114, 114),
5261    (115, 115),
5262    (116, 116),
5263    (117, 117),
5264    (118, 118),
5265    (119, 119),
5266    (120, 120),
5267    (121, 121),
5268    (122, 122),
5269    (123, 123),
5270    (124, 124),
5271    (125, 125),
5272    (126, 126),
5273    (127, 28),
5274    (160, 255),
5275    (161, 173),
5276    (162, 155),
5277    (163, 156),
5278    (165, 157),
5279    (170, 166),
5280    (171, 174),
5281    (172, 170),
5282    (176, 248),
5283    (177, 241),
5284    (178, 253),
5285    (183, 250),
5286    (186, 167),
5287    (187, 175),
5288    (188, 172),
5289    (189, 171),
5290    (191, 168),
5291    (196, 142),
5292    (197, 143),
5293    (198, 146),
5294    (199, 128),
5295    (201, 144),
5296    (209, 165),
5297    (214, 153),
5298    (220, 154),
5299    (223, 225),
5300    (224, 133),
5301    (225, 160),
5302    (226, 131),
5303    (228, 132),
5304    (229, 134),
5305    (230, 145),
5306    (231, 135),
5307    (232, 138),
5308    (233, 130),
5309    (234, 136),
5310    (235, 137),
5311    (236, 141),
5312    (237, 161),
5313    (238, 140),
5314    (239, 139),
5315    (241, 164),
5316    (242, 149),
5317    (243, 162),
5318    (244, 147),
5319    (246, 148),
5320    (247, 246),
5321    (249, 151),
5322    (250, 163),
5323    (251, 150),
5324    (252, 129),
5325    (255, 152),
5326    (402, 159),
5327    (915, 226),
5328    (920, 233),
5329    (931, 228),
5330    (934, 232),
5331    (937, 234),
5332    (945, 224),
5333    (948, 235),
5334    (949, 238),
5335    (956, 230),
5336    (960, 227),
5337    (963, 229),
5338    (964, 231),
5339    (966, 237),
5340    (8319, 252),
5341    (8359, 158),
5342    (8729, 249),
5343    (8730, 251),
5344    (8734, 236),
5345    (8745, 239),
5346    (8776, 247),
5347    (8801, 240),
5348    (8804, 243),
5349    (8805, 242),
5350    (8976, 169),
5351    (8992, 244),
5352    (8993, 245),
5353    (9472, 196),
5354    (9474, 179),
5355    (9484, 218),
5356    (9488, 191),
5357    (9492, 192),
5358    (9496, 217),
5359    (9500, 195),
5360    (9508, 180),
5361    (9516, 194),
5362    (9524, 193),
5363    (9532, 197),
5364    (9552, 205),
5365    (9553, 186),
5366    (9554, 213),
5367    (9555, 214),
5368    (9556, 201),
5369    (9557, 184),
5370    (9558, 183),
5371    (9559, 187),
5372    (9560, 212),
5373    (9561, 211),
5374    (9562, 200),
5375    (9563, 190),
5376    (9564, 189),
5377    (9565, 188),
5378    (9566, 198),
5379    (9567, 199),
5380    (9568, 204),
5381    (9569, 181),
5382    (9570, 182),
5383    (9571, 185),
5384    (9572, 209),
5385    (9573, 210),
5386    (9574, 203),
5387    (9575, 207),
5388    (9576, 208),
5389    (9577, 202),
5390    (9578, 216),
5391    (9579, 215),
5392    (9580, 206),
5393    (9600, 223),
5394    (9604, 220),
5395    (9608, 219),
5396    (9612, 221),
5397    (9616, 222),
5398    (9617, 176),
5399    (9618, 177),
5400    (9619, 178),
5401    (9632, 254),
5402];
5403
5404impl_ebcdic_encoder_and_decoder!(
5405    IBM500,
5406    "IBM500",
5407    IBM500Encoder,
5408    IBM500Decoder,
5409    IBM_500_ENCODE_TABLE,
5410    IBM_500_DECODE_TABLE
5411);
5412const IBM_500_DECODE_TABLE: [char; 256] = [
5413    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
5414    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5415    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
5416    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
5417    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
5418    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
5419    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
5420    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
5421    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
5422    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
5423    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
5424    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
5425    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
5426    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
5427    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
5428    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
5429    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
5430    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
5431    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
5432    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
5433    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
5434    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
5435    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
5436    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5437    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
5438    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
5439    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
5440    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
5441    '\u{da}', '\u{9f}',
5442];
5443const IBM_500_ENCODE_TABLE: &[(u16, u8)] = &[
5444    (0, 0),
5445    (1, 1),
5446    (2, 2),
5447    (3, 3),
5448    (4, 55),
5449    (5, 45),
5450    (6, 46),
5451    (7, 47),
5452    (8, 22),
5453    (9, 5),
5454    (10, 37),
5455    (11, 11),
5456    (12, 12),
5457    (13, 13),
5458    (14, 14),
5459    (15, 15),
5460    (16, 16),
5461    (17, 17),
5462    (18, 18),
5463    (19, 19),
5464    (20, 60),
5465    (21, 61),
5466    (22, 50),
5467    (23, 38),
5468    (24, 24),
5469    (25, 25),
5470    (26, 63),
5471    (27, 39),
5472    (28, 28),
5473    (29, 29),
5474    (30, 30),
5475    (31, 31),
5476    (32, 64),
5477    (33, 79),
5478    (34, 127),
5479    (35, 123),
5480    (36, 91),
5481    (37, 108),
5482    (38, 80),
5483    (39, 125),
5484    (40, 77),
5485    (41, 93),
5486    (42, 92),
5487    (43, 78),
5488    (44, 107),
5489    (45, 96),
5490    (46, 75),
5491    (47, 97),
5492    (48, 240),
5493    (49, 241),
5494    (50, 242),
5495    (51, 243),
5496    (52, 244),
5497    (53, 245),
5498    (54, 246),
5499    (55, 247),
5500    (56, 248),
5501    (57, 249),
5502    (58, 122),
5503    (59, 94),
5504    (60, 76),
5505    (61, 126),
5506    (62, 110),
5507    (63, 111),
5508    (64, 124),
5509    (65, 193),
5510    (66, 194),
5511    (67, 195),
5512    (68, 196),
5513    (69, 197),
5514    (70, 198),
5515    (71, 199),
5516    (72, 200),
5517    (73, 201),
5518    (74, 209),
5519    (75, 210),
5520    (76, 211),
5521    (77, 212),
5522    (78, 213),
5523    (79, 214),
5524    (80, 215),
5525    (81, 216),
5526    (82, 217),
5527    (83, 226),
5528    (84, 227),
5529    (85, 228),
5530    (86, 229),
5531    (87, 230),
5532    (88, 231),
5533    (89, 232),
5534    (90, 233),
5535    (91, 74),
5536    (92, 224),
5537    (93, 90),
5538    (94, 95),
5539    (95, 109),
5540    (96, 121),
5541    (97, 129),
5542    (98, 130),
5543    (99, 131),
5544    (100, 132),
5545    (101, 133),
5546    (102, 134),
5547    (103, 135),
5548    (104, 136),
5549    (105, 137),
5550    (106, 145),
5551    (107, 146),
5552    (108, 147),
5553    (109, 148),
5554    (110, 149),
5555    (111, 150),
5556    (112, 151),
5557    (113, 152),
5558    (114, 153),
5559    (115, 162),
5560    (116, 163),
5561    (117, 164),
5562    (118, 165),
5563    (119, 166),
5564    (120, 167),
5565    (121, 168),
5566    (122, 169),
5567    (123, 192),
5568    (124, 187),
5569    (125, 208),
5570    (126, 161),
5571    (127, 7),
5572    (128, 32),
5573    (129, 33),
5574    (130, 34),
5575    (131, 35),
5576    (132, 36),
5577    (133, 21),
5578    (134, 6),
5579    (135, 23),
5580    (136, 40),
5581    (137, 41),
5582    (138, 42),
5583    (139, 43),
5584    (140, 44),
5585    (141, 9),
5586    (142, 10),
5587    (143, 27),
5588    (144, 48),
5589    (145, 49),
5590    (146, 26),
5591    (147, 51),
5592    (148, 52),
5593    (149, 53),
5594    (150, 54),
5595    (151, 8),
5596    (152, 56),
5597    (153, 57),
5598    (154, 58),
5599    (155, 59),
5600    (156, 4),
5601    (157, 20),
5602    (158, 62),
5603    (159, 255),
5604    (160, 65),
5605    (161, 170),
5606    (162, 176),
5607    (163, 177),
5608    (164, 159),
5609    (165, 178),
5610    (166, 106),
5611    (167, 181),
5612    (168, 189),
5613    (169, 180),
5614    (170, 154),
5615    (171, 138),
5616    (172, 186),
5617    (173, 202),
5618    (174, 175),
5619    (175, 188),
5620    (176, 144),
5621    (177, 143),
5622    (178, 234),
5623    (179, 250),
5624    (180, 190),
5625    (181, 160),
5626    (182, 182),
5627    (183, 179),
5628    (184, 157),
5629    (185, 218),
5630    (186, 155),
5631    (187, 139),
5632    (188, 183),
5633    (189, 184),
5634    (190, 185),
5635    (191, 171),
5636    (192, 100),
5637    (193, 101),
5638    (194, 98),
5639    (195, 102),
5640    (196, 99),
5641    (197, 103),
5642    (198, 158),
5643    (199, 104),
5644    (200, 116),
5645    (201, 113),
5646    (202, 114),
5647    (203, 115),
5648    (204, 120),
5649    (205, 117),
5650    (206, 118),
5651    (207, 119),
5652    (208, 172),
5653    (209, 105),
5654    (210, 237),
5655    (211, 238),
5656    (212, 235),
5657    (213, 239),
5658    (214, 236),
5659    (215, 191),
5660    (216, 128),
5661    (217, 253),
5662    (218, 254),
5663    (219, 251),
5664    (220, 252),
5665    (221, 173),
5666    (222, 174),
5667    (223, 89),
5668    (224, 68),
5669    (225, 69),
5670    (226, 66),
5671    (227, 70),
5672    (228, 67),
5673    (229, 71),
5674    (230, 156),
5675    (231, 72),
5676    (232, 84),
5677    (233, 81),
5678    (234, 82),
5679    (235, 83),
5680    (236, 88),
5681    (237, 85),
5682    (238, 86),
5683    (239, 87),
5684    (240, 140),
5685    (241, 73),
5686    (242, 205),
5687    (243, 206),
5688    (244, 203),
5689    (245, 207),
5690    (246, 204),
5691    (247, 225),
5692    (248, 112),
5693    (249, 221),
5694    (250, 222),
5695    (251, 219),
5696    (252, 220),
5697    (253, 141),
5698    (254, 142),
5699    (255, 223),
5700];
5701
5702impl_ebcdic_encoder_and_decoder!(
5703    IBM850,
5704    "IBM850",
5705    IBM850Encoder,
5706    IBM850Decoder,
5707    IBM_850_ENCODE_TABLE,
5708    IBM_850_DECODE_TABLE
5709);
5710const IBM_850_DECODE_TABLE: [char; 256] = [
5711    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5712    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5713    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5714    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5715    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5716    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5717    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5718    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5719    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5720    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5721    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5722    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5723    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5724    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5725    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5726    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5727    '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5728    '\u{f8}', '\u{a3}', '\u{d8}', '\u{d7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5729    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{ae}', '\u{ac}', '\u{bd}', '\u{bc}',
5730    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5731    '\u{c1}', '\u{c2}', '\u{c0}', '\u{a9}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5732    '\u{a2}', '\u{a5}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5733    '\u{253c}', '\u{e3}', '\u{c3}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5734    '\u{2550}', '\u{256c}', '\u{a4}', '\u{f0}', '\u{d0}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{131}',
5735    '\u{cd}', '\u{ce}', '\u{cf}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{a6}',
5736    '\u{cc}', '\u{2580}', '\u{d3}', '\u{df}', '\u{d4}', '\u{d2}', '\u{f5}', '\u{d5}', '\u{b5}',
5737    '\u{fe}', '\u{de}', '\u{da}', '\u{db}', '\u{d9}', '\u{fd}', '\u{dd}', '\u{af}', '\u{b4}',
5738    '\u{ad}', '\u{b1}', '\u{2017}', '\u{be}', '\u{b6}', '\u{a7}', '\u{f7}', '\u{b8}', '\u{b0}',
5739    '\u{a8}', '\u{b7}', '\u{b9}', '\u{b3}', '\u{b2}', '\u{25a0}', '\u{a0}',
5740];
5741const IBM_850_ENCODE_TABLE: &[(u16, u8)] = &[
5742    (0, 0),
5743    (1, 1),
5744    (2, 2),
5745    (3, 3),
5746    (4, 4),
5747    (5, 5),
5748    (6, 6),
5749    (7, 7),
5750    (8, 8),
5751    (9, 9),
5752    (10, 10),
5753    (11, 11),
5754    (12, 12),
5755    (13, 13),
5756    (14, 14),
5757    (15, 15),
5758    (16, 16),
5759    (17, 17),
5760    (18, 18),
5761    (19, 19),
5762    (20, 20),
5763    (21, 21),
5764    (22, 22),
5765    (23, 23),
5766    (24, 24),
5767    (25, 25),
5768    (26, 127),
5769    (27, 27),
5770    (28, 26),
5771    (29, 29),
5772    (30, 30),
5773    (31, 31),
5774    (32, 32),
5775    (33, 33),
5776    (34, 34),
5777    (35, 35),
5778    (36, 36),
5779    (37, 37),
5780    (38, 38),
5781    (39, 39),
5782    (40, 40),
5783    (41, 41),
5784    (42, 42),
5785    (43, 43),
5786    (44, 44),
5787    (45, 45),
5788    (46, 46),
5789    (47, 47),
5790    (48, 48),
5791    (49, 49),
5792    (50, 50),
5793    (51, 51),
5794    (52, 52),
5795    (53, 53),
5796    (54, 54),
5797    (55, 55),
5798    (56, 56),
5799    (57, 57),
5800    (58, 58),
5801    (59, 59),
5802    (60, 60),
5803    (61, 61),
5804    (62, 62),
5805    (63, 63),
5806    (64, 64),
5807    (65, 65),
5808    (66, 66),
5809    (67, 67),
5810    (68, 68),
5811    (69, 69),
5812    (70, 70),
5813    (71, 71),
5814    (72, 72),
5815    (73, 73),
5816    (74, 74),
5817    (75, 75),
5818    (76, 76),
5819    (77, 77),
5820    (78, 78),
5821    (79, 79),
5822    (80, 80),
5823    (81, 81),
5824    (82, 82),
5825    (83, 83),
5826    (84, 84),
5827    (85, 85),
5828    (86, 86),
5829    (87, 87),
5830    (88, 88),
5831    (89, 89),
5832    (90, 90),
5833    (91, 91),
5834    (92, 92),
5835    (93, 93),
5836    (94, 94),
5837    (95, 95),
5838    (96, 96),
5839    (97, 97),
5840    (98, 98),
5841    (99, 99),
5842    (100, 100),
5843    (101, 101),
5844    (102, 102),
5845    (103, 103),
5846    (104, 104),
5847    (105, 105),
5848    (106, 106),
5849    (107, 107),
5850    (108, 108),
5851    (109, 109),
5852    (110, 110),
5853    (111, 111),
5854    (112, 112),
5855    (113, 113),
5856    (114, 114),
5857    (115, 115),
5858    (116, 116),
5859    (117, 117),
5860    (118, 118),
5861    (119, 119),
5862    (120, 120),
5863    (121, 121),
5864    (122, 122),
5865    (123, 123),
5866    (124, 124),
5867    (125, 125),
5868    (126, 126),
5869    (127, 28),
5870    (160, 255),
5871    (161, 173),
5872    (162, 189),
5873    (163, 156),
5874    (164, 207),
5875    (165, 190),
5876    (166, 221),
5877    (167, 245),
5878    (168, 249),
5879    (169, 184),
5880    (170, 166),
5881    (171, 174),
5882    (172, 170),
5883    (173, 240),
5884    (174, 169),
5885    (175, 238),
5886    (176, 248),
5887    (177, 241),
5888    (178, 253),
5889    (179, 252),
5890    (180, 239),
5891    (181, 230),
5892    (182, 244),
5893    (183, 250),
5894    (184, 247),
5895    (185, 251),
5896    (186, 167),
5897    (187, 175),
5898    (188, 172),
5899    (189, 171),
5900    (190, 243),
5901    (191, 168),
5902    (192, 183),
5903    (193, 181),
5904    (194, 182),
5905    (195, 199),
5906    (196, 142),
5907    (197, 143),
5908    (198, 146),
5909    (199, 128),
5910    (200, 212),
5911    (201, 144),
5912    (202, 210),
5913    (203, 211),
5914    (204, 222),
5915    (205, 214),
5916    (206, 215),
5917    (207, 216),
5918    (208, 209),
5919    (209, 165),
5920    (210, 227),
5921    (211, 224),
5922    (212, 226),
5923    (213, 229),
5924    (214, 153),
5925    (215, 158),
5926    (216, 157),
5927    (217, 235),
5928    (218, 233),
5929    (219, 234),
5930    (220, 154),
5931    (221, 237),
5932    (222, 232),
5933    (223, 225),
5934    (224, 133),
5935    (225, 160),
5936    (226, 131),
5937    (227, 198),
5938    (228, 132),
5939    (229, 134),
5940    (230, 145),
5941    (231, 135),
5942    (232, 138),
5943    (233, 130),
5944    (234, 136),
5945    (235, 137),
5946    (236, 141),
5947    (237, 161),
5948    (238, 140),
5949    (239, 139),
5950    (240, 208),
5951    (241, 164),
5952    (242, 149),
5953    (243, 162),
5954    (244, 147),
5955    (245, 228),
5956    (246, 148),
5957    (247, 246),
5958    (248, 155),
5959    (249, 151),
5960    (250, 163),
5961    (251, 150),
5962    (252, 129),
5963    (253, 236),
5964    (254, 231),
5965    (255, 152),
5966    (305, 213),
5967    (402, 159),
5968    (8215, 242),
5969    (9472, 196),
5970    (9474, 179),
5971    (9484, 218),
5972    (9488, 191),
5973    (9492, 192),
5974    (9496, 217),
5975    (9500, 195),
5976    (9508, 180),
5977    (9516, 194),
5978    (9524, 193),
5979    (9532, 197),
5980    (9552, 205),
5981    (9553, 186),
5982    (9556, 201),
5983    (9559, 187),
5984    (9562, 200),
5985    (9565, 188),
5986    (9568, 204),
5987    (9571, 185),
5988    (9574, 203),
5989    (9577, 202),
5990    (9580, 206),
5991    (9600, 223),
5992    (9604, 220),
5993    (9608, 219),
5994    (9617, 176),
5995    (9618, 177),
5996    (9619, 178),
5997    (9632, 254),
5998];
5999
6000impl_ebcdic_encoder_and_decoder!(
6001    IBM851,
6002    "IBM851",
6003    IBM851Encoder,
6004    IBM851Decoder,
6005    IBM_851_ENCODE_TABLE,
6006    IBM_851_DECODE_TABLE
6007);
6008const IBM_851_DECODE_TABLE: [char; 256] = [
6009    '\u{0}',
6010    '\u{1}',
6011    '\u{2}',
6012    '\u{3}',
6013    '\u{4}',
6014    '\u{5}',
6015    '\u{6}',
6016    '\u{7}',
6017    '\u{8}',
6018    '\u{9}',
6019    '\u{a}',
6020    '\u{b}',
6021    '\u{c}',
6022    '\u{d}',
6023    '\u{e}',
6024    '\u{f}',
6025    '\u{10}',
6026    '\u{11}',
6027    '\u{12}',
6028    '\u{13}',
6029    '\u{14}',
6030    '\u{15}',
6031    '\u{16}',
6032    '\u{17}',
6033    '\u{18}',
6034    '\u{19}',
6035    '\u{1c}',
6036    '\u{1b}',
6037    '\u{7f}',
6038    '\u{1d}',
6039    '\u{1e}',
6040    '\u{1f}',
6041    '\u{20}',
6042    '\u{21}',
6043    '\u{22}',
6044    '\u{23}',
6045    '\u{24}',
6046    '\u{25}',
6047    '\u{26}',
6048    '\u{27}',
6049    '\u{28}',
6050    '\u{29}',
6051    '\u{2a}',
6052    '\u{2b}',
6053    '\u{2c}',
6054    '\u{2d}',
6055    '\u{2e}',
6056    '\u{2f}',
6057    '\u{30}',
6058    '\u{31}',
6059    '\u{32}',
6060    '\u{33}',
6061    '\u{34}',
6062    '\u{35}',
6063    '\u{36}',
6064    '\u{37}',
6065    '\u{38}',
6066    '\u{39}',
6067    '\u{3a}',
6068    '\u{3b}',
6069    '\u{3c}',
6070    '\u{3d}',
6071    '\u{3e}',
6072    '\u{3f}',
6073    '\u{40}',
6074    '\u{41}',
6075    '\u{42}',
6076    '\u{43}',
6077    '\u{44}',
6078    '\u{45}',
6079    '\u{46}',
6080    '\u{47}',
6081    '\u{48}',
6082    '\u{49}',
6083    '\u{4a}',
6084    '\u{4b}',
6085    '\u{4c}',
6086    '\u{4d}',
6087    '\u{4e}',
6088    '\u{4f}',
6089    '\u{50}',
6090    '\u{51}',
6091    '\u{52}',
6092    '\u{53}',
6093    '\u{54}',
6094    '\u{55}',
6095    '\u{56}',
6096    '\u{57}',
6097    '\u{58}',
6098    '\u{59}',
6099    '\u{5a}',
6100    '\u{5b}',
6101    '\u{5c}',
6102    '\u{5d}',
6103    '\u{5e}',
6104    '\u{5f}',
6105    '\u{60}',
6106    '\u{61}',
6107    '\u{62}',
6108    '\u{63}',
6109    '\u{64}',
6110    '\u{65}',
6111    '\u{66}',
6112    '\u{67}',
6113    '\u{68}',
6114    '\u{69}',
6115    '\u{6a}',
6116    '\u{6b}',
6117    '\u{6c}',
6118    '\u{6d}',
6119    '\u{6e}',
6120    '\u{6f}',
6121    '\u{70}',
6122    '\u{71}',
6123    '\u{72}',
6124    '\u{73}',
6125    '\u{74}',
6126    '\u{75}',
6127    '\u{76}',
6128    '\u{77}',
6129    '\u{78}',
6130    '\u{79}',
6131    '\u{7a}',
6132    '\u{7b}',
6133    '\u{7c}',
6134    '\u{7d}',
6135    '\u{7e}',
6136    '\u{1a}',
6137    '\u{c7}',
6138    '\u{fc}',
6139    '\u{e9}',
6140    '\u{e2}',
6141    '\u{e4}',
6142    '\u{e0}',
6143    '\u{386}',
6144    '\u{e7}',
6145    '\u{ea}',
6146    '\u{eb}',
6147    '\u{e8}',
6148    '\u{ef}',
6149    '\u{ee}',
6150    '\u{388}',
6151    '\u{c4}',
6152    '\u{389}',
6153    '\u{38a}',
6154    char::REPLACEMENT_CHARACTER,
6155    '\u{38c}',
6156    '\u{f4}',
6157    '\u{f6}',
6158    '\u{38e}',
6159    '\u{fb}',
6160    '\u{f9}',
6161    '\u{38f}',
6162    '\u{d6}',
6163    '\u{dc}',
6164    '\u{3ac}',
6165    '\u{a3}',
6166    '\u{3ad}',
6167    '\u{3ae}',
6168    '\u{3af}',
6169    '\u{3ca}',
6170    '\u{390}',
6171    '\u{3cc}',
6172    '\u{3cd}',
6173    '\u{391}',
6174    '\u{392}',
6175    '\u{393}',
6176    '\u{394}',
6177    '\u{395}',
6178    '\u{396}',
6179    '\u{397}',
6180    '\u{bd}',
6181    '\u{398}',
6182    '\u{399}',
6183    '\u{ab}',
6184    '\u{bb}',
6185    '\u{2591}',
6186    '\u{2592}',
6187    '\u{2593}',
6188    '\u{2502}',
6189    '\u{2524}',
6190    '\u{39a}',
6191    '\u{39b}',
6192    '\u{39c}',
6193    '\u{39d}',
6194    '\u{2563}',
6195    '\u{2551}',
6196    '\u{2557}',
6197    '\u{255d}',
6198    '\u{39e}',
6199    '\u{39f}',
6200    '\u{2510}',
6201    '\u{2514}',
6202    '\u{2534}',
6203    '\u{252c}',
6204    '\u{251c}',
6205    '\u{2500}',
6206    '\u{253c}',
6207    '\u{3a0}',
6208    '\u{3a1}',
6209    '\u{255a}',
6210    '\u{2554}',
6211    '\u{2569}',
6212    '\u{2566}',
6213    '\u{2560}',
6214    '\u{2550}',
6215    '\u{256c}',
6216    '\u{3a3}',
6217    '\u{3a4}',
6218    '\u{3a5}',
6219    '\u{3a6}',
6220    '\u{3a7}',
6221    '\u{3a8}',
6222    '\u{3a9}',
6223    '\u{3b1}',
6224    '\u{3b2}',
6225    '\u{3b3}',
6226    '\u{2518}',
6227    '\u{250c}',
6228    '\u{2588}',
6229    '\u{2584}',
6230    '\u{3b4}',
6231    '\u{3b5}',
6232    '\u{2580}',
6233    '\u{3b6}',
6234    '\u{3b7}',
6235    '\u{3b8}',
6236    '\u{3b9}',
6237    '\u{3ba}',
6238    '\u{3bb}',
6239    '\u{3bc}',
6240    '\u{3bd}',
6241    '\u{3be}',
6242    '\u{3bf}',
6243    '\u{3c0}',
6244    '\u{3c1}',
6245    '\u{3c3}',
6246    '\u{3c2}',
6247    '\u{3c4}',
6248    '\u{b4}',
6249    '\u{ad}',
6250    '\u{b1}',
6251    '\u{3c5}',
6252    '\u{3c6}',
6253    '\u{3c7}',
6254    '\u{a7}',
6255    '\u{3c8}',
6256    '\u{b8}',
6257    '\u{b0}',
6258    '\u{a8}',
6259    '\u{3c9}',
6260    '\u{3cb}',
6261    '\u{3b0}',
6262    '\u{3ce}',
6263    '\u{25a0}',
6264    '\u{a0}',
6265];
6266const IBM_851_ENCODE_TABLE: &[(u16, u8)] = &[
6267    (0, 0),
6268    (1, 1),
6269    (2, 2),
6270    (3, 3),
6271    (4, 4),
6272    (5, 5),
6273    (6, 6),
6274    (7, 7),
6275    (8, 8),
6276    (9, 9),
6277    (10, 10),
6278    (11, 11),
6279    (12, 12),
6280    (13, 13),
6281    (14, 14),
6282    (15, 15),
6283    (16, 16),
6284    (17, 17),
6285    (18, 18),
6286    (19, 19),
6287    (20, 20),
6288    (21, 21),
6289    (22, 22),
6290    (23, 23),
6291    (24, 24),
6292    (25, 25),
6293    (26, 127),
6294    (27, 27),
6295    (28, 26),
6296    (29, 29),
6297    (30, 30),
6298    (31, 31),
6299    (32, 32),
6300    (33, 33),
6301    (34, 34),
6302    (35, 35),
6303    (36, 36),
6304    (37, 37),
6305    (38, 38),
6306    (39, 39),
6307    (40, 40),
6308    (41, 41),
6309    (42, 42),
6310    (43, 43),
6311    (44, 44),
6312    (45, 45),
6313    (46, 46),
6314    (47, 47),
6315    (48, 48),
6316    (49, 49),
6317    (50, 50),
6318    (51, 51),
6319    (52, 52),
6320    (53, 53),
6321    (54, 54),
6322    (55, 55),
6323    (56, 56),
6324    (57, 57),
6325    (58, 58),
6326    (59, 59),
6327    (60, 60),
6328    (61, 61),
6329    (62, 62),
6330    (63, 63),
6331    (64, 64),
6332    (65, 65),
6333    (66, 66),
6334    (67, 67),
6335    (68, 68),
6336    (69, 69),
6337    (70, 70),
6338    (71, 71),
6339    (72, 72),
6340    (73, 73),
6341    (74, 74),
6342    (75, 75),
6343    (76, 76),
6344    (77, 77),
6345    (78, 78),
6346    (79, 79),
6347    (80, 80),
6348    (81, 81),
6349    (82, 82),
6350    (83, 83),
6351    (84, 84),
6352    (85, 85),
6353    (86, 86),
6354    (87, 87),
6355    (88, 88),
6356    (89, 89),
6357    (90, 90),
6358    (91, 91),
6359    (92, 92),
6360    (93, 93),
6361    (94, 94),
6362    (95, 95),
6363    (96, 96),
6364    (97, 97),
6365    (98, 98),
6366    (99, 99),
6367    (100, 100),
6368    (101, 101),
6369    (102, 102),
6370    (103, 103),
6371    (104, 104),
6372    (105, 105),
6373    (106, 106),
6374    (107, 107),
6375    (108, 108),
6376    (109, 109),
6377    (110, 110),
6378    (111, 111),
6379    (112, 112),
6380    (113, 113),
6381    (114, 114),
6382    (115, 115),
6383    (116, 116),
6384    (117, 117),
6385    (118, 118),
6386    (119, 119),
6387    (120, 120),
6388    (121, 121),
6389    (122, 122),
6390    (123, 123),
6391    (124, 124),
6392    (125, 125),
6393    (126, 126),
6394    (127, 28),
6395    (160, 255),
6396    (163, 156),
6397    (167, 245),
6398    (168, 249),
6399    (171, 174),
6400    (173, 240),
6401    (176, 248),
6402    (177, 241),
6403    (180, 239),
6404    (184, 247),
6405    (187, 175),
6406    (189, 171),
6407    (196, 142),
6408    (199, 128),
6409    (214, 153),
6410    (220, 154),
6411    (224, 133),
6412    (226, 131),
6413    (228, 132),
6414    (231, 135),
6415    (232, 138),
6416    (233, 130),
6417    (234, 136),
6418    (235, 137),
6419    (238, 140),
6420    (239, 139),
6421    (244, 147),
6422    (246, 148),
6423    (249, 151),
6424    (251, 150),
6425    (252, 129),
6426    (902, 134),
6427    (904, 141),
6428    (905, 143),
6429    (906, 144),
6430    (908, 146),
6431    (910, 149),
6432    (911, 152),
6433    (912, 161),
6434    (913, 164),
6435    (914, 165),
6436    (915, 166),
6437    (916, 167),
6438    (917, 168),
6439    (918, 169),
6440    (919, 170),
6441    (920, 172),
6442    (921, 173),
6443    (922, 181),
6444    (923, 182),
6445    (924, 183),
6446    (925, 184),
6447    (926, 189),
6448    (927, 190),
6449    (928, 198),
6450    (929, 199),
6451    (931, 207),
6452    (932, 208),
6453    (933, 209),
6454    (934, 210),
6455    (935, 211),
6456    (936, 212),
6457    (937, 213),
6458    (940, 155),
6459    (941, 157),
6460    (942, 158),
6461    (943, 159),
6462    (944, 252),
6463    (945, 214),
6464    (946, 215),
6465    (947, 216),
6466    (948, 221),
6467    (949, 222),
6468    (950, 224),
6469    (951, 225),
6470    (952, 226),
6471    (953, 227),
6472    (954, 228),
6473    (955, 229),
6474    (956, 230),
6475    (957, 231),
6476    (958, 232),
6477    (959, 233),
6478    (960, 234),
6479    (961, 235),
6480    (962, 237),
6481    (963, 236),
6482    (964, 238),
6483    (965, 242),
6484    (966, 243),
6485    (967, 244),
6486    (968, 246),
6487    (969, 250),
6488    (970, 160),
6489    (971, 251),
6490    (972, 162),
6491    (973, 163),
6492    (974, 253),
6493    (9472, 196),
6494    (9474, 179),
6495    (9484, 218),
6496    (9488, 191),
6497    (9492, 192),
6498    (9496, 217),
6499    (9500, 195),
6500    (9508, 180),
6501    (9516, 194),
6502    (9524, 193),
6503    (9532, 197),
6504    (9552, 205),
6505    (9553, 186),
6506    (9556, 201),
6507    (9559, 187),
6508    (9562, 200),
6509    (9565, 188),
6510    (9568, 204),
6511    (9571, 185),
6512    (9574, 203),
6513    (9577, 202),
6514    (9580, 206),
6515    (9600, 223),
6516    (9604, 220),
6517    (9608, 219),
6518    (9617, 176),
6519    (9618, 177),
6520    (9619, 178),
6521    (9632, 254),
6522];
6523
6524impl_ebcdic_encoder_and_decoder!(
6525    IBM852,
6526    "IBM852",
6527    IBM852Encoder,
6528    IBM852Decoder,
6529    IBM_852_ENCODE_TABLE,
6530    IBM_852_DECODE_TABLE
6531);
6532const IBM_852_DECODE_TABLE: [char; 256] = [
6533    '\u{0}',
6534    '\u{1}',
6535    '\u{2}',
6536    '\u{3}',
6537    '\u{4}',
6538    '\u{5}',
6539    '\u{6}',
6540    '\u{7}',
6541    '\u{8}',
6542    '\u{9}',
6543    '\u{a}',
6544    '\u{b}',
6545    '\u{c}',
6546    '\u{d}',
6547    '\u{e}',
6548    '\u{f}',
6549    '\u{10}',
6550    '\u{11}',
6551    '\u{12}',
6552    '\u{13}',
6553    '\u{14}',
6554    '\u{15}',
6555    '\u{16}',
6556    '\u{17}',
6557    '\u{18}',
6558    '\u{19}',
6559    '\u{1c}',
6560    '\u{1b}',
6561    '\u{7f}',
6562    '\u{1d}',
6563    '\u{1e}',
6564    '\u{1f}',
6565    '\u{20}',
6566    '\u{21}',
6567    '\u{22}',
6568    '\u{23}',
6569    '\u{24}',
6570    '\u{25}',
6571    '\u{26}',
6572    '\u{27}',
6573    '\u{28}',
6574    '\u{29}',
6575    '\u{2a}',
6576    '\u{2b}',
6577    '\u{2c}',
6578    '\u{2d}',
6579    '\u{2e}',
6580    '\u{2f}',
6581    '\u{30}',
6582    '\u{31}',
6583    '\u{32}',
6584    '\u{33}',
6585    '\u{34}',
6586    '\u{35}',
6587    '\u{36}',
6588    '\u{37}',
6589    '\u{38}',
6590    '\u{39}',
6591    '\u{3a}',
6592    '\u{3b}',
6593    '\u{3c}',
6594    '\u{3d}',
6595    '\u{3e}',
6596    '\u{3f}',
6597    '\u{40}',
6598    '\u{41}',
6599    '\u{42}',
6600    '\u{43}',
6601    '\u{44}',
6602    '\u{45}',
6603    '\u{46}',
6604    '\u{47}',
6605    '\u{48}',
6606    '\u{49}',
6607    '\u{4a}',
6608    '\u{4b}',
6609    '\u{4c}',
6610    '\u{4d}',
6611    '\u{4e}',
6612    '\u{4f}',
6613    '\u{50}',
6614    '\u{51}',
6615    '\u{52}',
6616    '\u{53}',
6617    '\u{54}',
6618    '\u{55}',
6619    '\u{56}',
6620    '\u{57}',
6621    '\u{58}',
6622    '\u{59}',
6623    '\u{5a}',
6624    '\u{5b}',
6625    '\u{5c}',
6626    '\u{5d}',
6627    '\u{5e}',
6628    '\u{5f}',
6629    '\u{60}',
6630    '\u{61}',
6631    '\u{62}',
6632    '\u{63}',
6633    '\u{64}',
6634    '\u{65}',
6635    '\u{66}',
6636    '\u{67}',
6637    '\u{68}',
6638    '\u{69}',
6639    '\u{6a}',
6640    '\u{6b}',
6641    '\u{6c}',
6642    '\u{6d}',
6643    '\u{6e}',
6644    '\u{6f}',
6645    '\u{70}',
6646    '\u{71}',
6647    '\u{72}',
6648    '\u{73}',
6649    '\u{74}',
6650    '\u{75}',
6651    '\u{76}',
6652    '\u{77}',
6653    '\u{78}',
6654    '\u{79}',
6655    '\u{7a}',
6656    '\u{7b}',
6657    '\u{7c}',
6658    '\u{7d}',
6659    '\u{7e}',
6660    '\u{1a}',
6661    '\u{c7}',
6662    '\u{fc}',
6663    '\u{e9}',
6664    '\u{e2}',
6665    '\u{e4}',
6666    '\u{16f}',
6667    '\u{107}',
6668    '\u{e7}',
6669    '\u{142}',
6670    '\u{eb}',
6671    '\u{150}',
6672    '\u{151}',
6673    '\u{ee}',
6674    '\u{179}',
6675    '\u{c4}',
6676    '\u{106}',
6677    '\u{c9}',
6678    '\u{139}',
6679    '\u{13a}',
6680    '\u{f4}',
6681    '\u{f6}',
6682    '\u{13d}',
6683    '\u{13e}',
6684    '\u{15a}',
6685    '\u{15b}',
6686    '\u{d6}',
6687    '\u{dc}',
6688    '\u{164}',
6689    '\u{165}',
6690    '\u{141}',
6691    '\u{d7}',
6692    '\u{10d}',
6693    '\u{e1}',
6694    '\u{ed}',
6695    '\u{f3}',
6696    '\u{fa}',
6697    '\u{104}',
6698    '\u{105}',
6699    '\u{17d}',
6700    '\u{17e}',
6701    '\u{118}',
6702    '\u{119}',
6703    char::REPLACEMENT_CHARACTER,
6704    '\u{17a}',
6705    '\u{10c}',
6706    '\u{15f}',
6707    '\u{ab}',
6708    '\u{bb}',
6709    '\u{2591}',
6710    '\u{2592}',
6711    '\u{2593}',
6712    '\u{2502}',
6713    '\u{2524}',
6714    '\u{c1}',
6715    '\u{c2}',
6716    '\u{11a}',
6717    '\u{15e}',
6718    '\u{2563}',
6719    '\u{2551}',
6720    '\u{2557}',
6721    '\u{255d}',
6722    '\u{17b}',
6723    '\u{17c}',
6724    '\u{2510}',
6725    '\u{2514}',
6726    '\u{2534}',
6727    '\u{252c}',
6728    '\u{251c}',
6729    '\u{2500}',
6730    '\u{253c}',
6731    '\u{102}',
6732    '\u{103}',
6733    '\u{255a}',
6734    '\u{2554}',
6735    '\u{2569}',
6736    '\u{2566}',
6737    '\u{2560}',
6738    '\u{2550}',
6739    '\u{256c}',
6740    '\u{a4}',
6741    '\u{111}',
6742    '\u{110}',
6743    '\u{10e}',
6744    '\u{cb}',
6745    '\u{10f}',
6746    '\u{147}',
6747    '\u{cd}',
6748    '\u{ce}',
6749    '\u{11b}',
6750    '\u{2518}',
6751    '\u{250c}',
6752    '\u{2588}',
6753    '\u{2584}',
6754    '\u{162}',
6755    '\u{16e}',
6756    '\u{2580}',
6757    '\u{d3}',
6758    '\u{df}',
6759    '\u{d4}',
6760    '\u{143}',
6761    '\u{144}',
6762    '\u{148}',
6763    '\u{160}',
6764    '\u{161}',
6765    '\u{154}',
6766    '\u{da}',
6767    '\u{155}',
6768    '\u{170}',
6769    '\u{fd}',
6770    '\u{dd}',
6771    '\u{163}',
6772    '\u{b4}',
6773    '\u{ad}',
6774    '\u{2dd}',
6775    '\u{2db}',
6776    '\u{2c7}',
6777    '\u{2d8}',
6778    '\u{a7}',
6779    '\u{f7}',
6780    '\u{b8}',
6781    '\u{b0}',
6782    '\u{a8}',
6783    '\u{2d9}',
6784    '\u{171}',
6785    '\u{158}',
6786    '\u{159}',
6787    '\u{25a0}',
6788    '\u{a0}',
6789];
6790const IBM_852_ENCODE_TABLE: &[(u16, u8)] = &[
6791    (0, 0),
6792    (1, 1),
6793    (2, 2),
6794    (3, 3),
6795    (4, 4),
6796    (5, 5),
6797    (6, 6),
6798    (7, 7),
6799    (8, 8),
6800    (9, 9),
6801    (10, 10),
6802    (11, 11),
6803    (12, 12),
6804    (13, 13),
6805    (14, 14),
6806    (15, 15),
6807    (16, 16),
6808    (17, 17),
6809    (18, 18),
6810    (19, 19),
6811    (20, 20),
6812    (21, 21),
6813    (22, 22),
6814    (23, 23),
6815    (24, 24),
6816    (25, 25),
6817    (26, 127),
6818    (27, 27),
6819    (28, 26),
6820    (29, 29),
6821    (30, 30),
6822    (31, 31),
6823    (32, 32),
6824    (33, 33),
6825    (34, 34),
6826    (35, 35),
6827    (36, 36),
6828    (37, 37),
6829    (38, 38),
6830    (39, 39),
6831    (40, 40),
6832    (41, 41),
6833    (42, 42),
6834    (43, 43),
6835    (44, 44),
6836    (45, 45),
6837    (46, 46),
6838    (47, 47),
6839    (48, 48),
6840    (49, 49),
6841    (50, 50),
6842    (51, 51),
6843    (52, 52),
6844    (53, 53),
6845    (54, 54),
6846    (55, 55),
6847    (56, 56),
6848    (57, 57),
6849    (58, 58),
6850    (59, 59),
6851    (60, 60),
6852    (61, 61),
6853    (62, 62),
6854    (63, 63),
6855    (64, 64),
6856    (65, 65),
6857    (66, 66),
6858    (67, 67),
6859    (68, 68),
6860    (69, 69),
6861    (70, 70),
6862    (71, 71),
6863    (72, 72),
6864    (73, 73),
6865    (74, 74),
6866    (75, 75),
6867    (76, 76),
6868    (77, 77),
6869    (78, 78),
6870    (79, 79),
6871    (80, 80),
6872    (81, 81),
6873    (82, 82),
6874    (83, 83),
6875    (84, 84),
6876    (85, 85),
6877    (86, 86),
6878    (87, 87),
6879    (88, 88),
6880    (89, 89),
6881    (90, 90),
6882    (91, 91),
6883    (92, 92),
6884    (93, 93),
6885    (94, 94),
6886    (95, 95),
6887    (96, 96),
6888    (97, 97),
6889    (98, 98),
6890    (99, 99),
6891    (100, 100),
6892    (101, 101),
6893    (102, 102),
6894    (103, 103),
6895    (104, 104),
6896    (105, 105),
6897    (106, 106),
6898    (107, 107),
6899    (108, 108),
6900    (109, 109),
6901    (110, 110),
6902    (111, 111),
6903    (112, 112),
6904    (113, 113),
6905    (114, 114),
6906    (115, 115),
6907    (116, 116),
6908    (117, 117),
6909    (118, 118),
6910    (119, 119),
6911    (120, 120),
6912    (121, 121),
6913    (122, 122),
6914    (123, 123),
6915    (124, 124),
6916    (125, 125),
6917    (126, 126),
6918    (127, 28),
6919    (160, 255),
6920    (164, 207),
6921    (167, 245),
6922    (168, 249),
6923    (171, 174),
6924    (173, 240),
6925    (176, 248),
6926    (180, 239),
6927    (184, 247),
6928    (187, 175),
6929    (193, 181),
6930    (194, 182),
6931    (196, 142),
6932    (199, 128),
6933    (201, 144),
6934    (203, 211),
6935    (205, 214),
6936    (206, 215),
6937    (211, 224),
6938    (212, 226),
6939    (214, 153),
6940    (215, 158),
6941    (218, 233),
6942    (220, 154),
6943    (221, 237),
6944    (223, 225),
6945    (225, 160),
6946    (226, 131),
6947    (228, 132),
6948    (231, 135),
6949    (233, 130),
6950    (235, 137),
6951    (237, 161),
6952    (238, 140),
6953    (243, 162),
6954    (244, 147),
6955    (246, 148),
6956    (247, 246),
6957    (250, 163),
6958    (252, 129),
6959    (253, 236),
6960    (258, 198),
6961    (259, 199),
6962    (260, 164),
6963    (261, 165),
6964    (262, 143),
6965    (263, 134),
6966    (268, 172),
6967    (269, 159),
6968    (270, 210),
6969    (271, 212),
6970    (272, 209),
6971    (273, 208),
6972    (280, 168),
6973    (281, 169),
6974    (282, 183),
6975    (283, 216),
6976    (313, 145),
6977    (314, 146),
6978    (317, 149),
6979    (318, 150),
6980    (321, 157),
6981    (322, 136),
6982    (323, 227),
6983    (324, 228),
6984    (327, 213),
6985    (328, 229),
6986    (336, 138),
6987    (337, 139),
6988    (340, 232),
6989    (341, 234),
6990    (344, 252),
6991    (345, 253),
6992    (346, 151),
6993    (347, 152),
6994    (350, 184),
6995    (351, 173),
6996    (352, 230),
6997    (353, 231),
6998    (354, 221),
6999    (355, 238),
7000    (356, 155),
7001    (357, 156),
7002    (366, 222),
7003    (367, 133),
7004    (368, 235),
7005    (369, 251),
7006    (377, 141),
7007    (378, 171),
7008    (379, 189),
7009    (380, 190),
7010    (381, 166),
7011    (382, 167),
7012    (711, 243),
7013    (728, 244),
7014    (729, 250),
7015    (731, 242),
7016    (733, 241),
7017    (9472, 196),
7018    (9474, 179),
7019    (9484, 218),
7020    (9488, 191),
7021    (9492, 192),
7022    (9496, 217),
7023    (9500, 195),
7024    (9508, 180),
7025    (9516, 194),
7026    (9524, 193),
7027    (9532, 197),
7028    (9552, 205),
7029    (9553, 186),
7030    (9556, 201),
7031    (9559, 187),
7032    (9562, 200),
7033    (9565, 188),
7034    (9568, 204),
7035    (9571, 185),
7036    (9574, 203),
7037    (9577, 202),
7038    (9580, 206),
7039    (9600, 223),
7040    (9604, 220),
7041    (9608, 219),
7042    (9617, 176),
7043    (9618, 177),
7044    (9619, 178),
7045    (9632, 254),
7046];
7047
7048impl_ebcdic_encoder_and_decoder!(
7049    IBM855,
7050    "IBM855",
7051    IBM855Encoder,
7052    IBM855Decoder,
7053    IBM_855_ENCODE_TABLE,
7054    IBM_855_DECODE_TABLE
7055);
7056const IBM_855_DECODE_TABLE: [char; 256] = [
7057    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7058    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7059    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7060    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7061    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7062    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7063    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7064    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7065    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7066    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7067    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7068    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7069    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7070    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7071    '\u{452}', '\u{402}', '\u{453}', '\u{403}', '\u{451}', '\u{401}', '\u{454}', '\u{404}',
7072    '\u{455}', '\u{405}', '\u{456}', '\u{406}', '\u{457}', '\u{407}', '\u{458}', '\u{408}',
7073    '\u{459}', '\u{409}', '\u{45a}', '\u{40a}', '\u{45b}', '\u{40b}', '\u{45c}', '\u{40c}',
7074    '\u{45e}', '\u{40e}', '\u{45f}', '\u{40f}', '\u{44e}', '\u{42e}', '\u{44a}', '\u{42a}',
7075    '\u{430}', '\u{410}', '\u{431}', '\u{411}', '\u{446}', '\u{426}', '\u{434}', '\u{414}',
7076    '\u{435}', '\u{415}', '\u{444}', '\u{424}', '\u{433}', '\u{413}', '\u{ab}', '\u{bb}',
7077    '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}', '\u{445}', '\u{425}', '\u{438}',
7078    '\u{418}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}', '\u{439}', '\u{419}', '\u{2510}',
7079    '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}', '\u{253c}', '\u{43a}', '\u{41a}',
7080    '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{a4}',
7081    '\u{43b}', '\u{41b}', '\u{43c}', '\u{41c}', '\u{43d}', '\u{41d}', '\u{43e}', '\u{41e}',
7082    '\u{43f}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{41f}', '\u{44f}', '\u{2580}',
7083    '\u{42f}', '\u{440}', '\u{420}', '\u{441}', '\u{421}', '\u{442}', '\u{422}', '\u{443}',
7084    '\u{423}', '\u{436}', '\u{416}', '\u{432}', '\u{412}', '\u{44c}', '\u{42c}', '\u{2116}',
7085    '\u{ad}', '\u{44b}', '\u{42b}', '\u{437}', '\u{417}', '\u{448}', '\u{428}', '\u{44d}',
7086    '\u{42d}', '\u{449}', '\u{429}', '\u{447}', '\u{427}', '\u{a7}', '\u{25a0}', '\u{a0}',
7087];
7088const IBM_855_ENCODE_TABLE: &[(u16, u8)] = &[
7089    (0, 0),
7090    (1, 1),
7091    (2, 2),
7092    (3, 3),
7093    (4, 4),
7094    (5, 5),
7095    (6, 6),
7096    (7, 7),
7097    (8, 8),
7098    (9, 9),
7099    (10, 10),
7100    (11, 11),
7101    (12, 12),
7102    (13, 13),
7103    (14, 14),
7104    (15, 15),
7105    (16, 16),
7106    (17, 17),
7107    (18, 18),
7108    (19, 19),
7109    (20, 20),
7110    (21, 21),
7111    (22, 22),
7112    (23, 23),
7113    (24, 24),
7114    (25, 25),
7115    (26, 127),
7116    (27, 27),
7117    (28, 26),
7118    (29, 29),
7119    (30, 30),
7120    (31, 31),
7121    (32, 32),
7122    (33, 33),
7123    (34, 34),
7124    (35, 35),
7125    (36, 36),
7126    (37, 37),
7127    (38, 38),
7128    (39, 39),
7129    (40, 40),
7130    (41, 41),
7131    (42, 42),
7132    (43, 43),
7133    (44, 44),
7134    (45, 45),
7135    (46, 46),
7136    (47, 47),
7137    (48, 48),
7138    (49, 49),
7139    (50, 50),
7140    (51, 51),
7141    (52, 52),
7142    (53, 53),
7143    (54, 54),
7144    (55, 55),
7145    (56, 56),
7146    (57, 57),
7147    (58, 58),
7148    (59, 59),
7149    (60, 60),
7150    (61, 61),
7151    (62, 62),
7152    (63, 63),
7153    (64, 64),
7154    (65, 65),
7155    (66, 66),
7156    (67, 67),
7157    (68, 68),
7158    (69, 69),
7159    (70, 70),
7160    (71, 71),
7161    (72, 72),
7162    (73, 73),
7163    (74, 74),
7164    (75, 75),
7165    (76, 76),
7166    (77, 77),
7167    (78, 78),
7168    (79, 79),
7169    (80, 80),
7170    (81, 81),
7171    (82, 82),
7172    (83, 83),
7173    (84, 84),
7174    (85, 85),
7175    (86, 86),
7176    (87, 87),
7177    (88, 88),
7178    (89, 89),
7179    (90, 90),
7180    (91, 91),
7181    (92, 92),
7182    (93, 93),
7183    (94, 94),
7184    (95, 95),
7185    (96, 96),
7186    (97, 97),
7187    (98, 98),
7188    (99, 99),
7189    (100, 100),
7190    (101, 101),
7191    (102, 102),
7192    (103, 103),
7193    (104, 104),
7194    (105, 105),
7195    (106, 106),
7196    (107, 107),
7197    (108, 108),
7198    (109, 109),
7199    (110, 110),
7200    (111, 111),
7201    (112, 112),
7202    (113, 113),
7203    (114, 114),
7204    (115, 115),
7205    (116, 116),
7206    (117, 117),
7207    (118, 118),
7208    (119, 119),
7209    (120, 120),
7210    (121, 121),
7211    (122, 122),
7212    (123, 123),
7213    (124, 124),
7214    (125, 125),
7215    (126, 126),
7216    (127, 28),
7217    (160, 255),
7218    (164, 207),
7219    (167, 253),
7220    (171, 174),
7221    (173, 240),
7222    (187, 175),
7223    (1025, 133),
7224    (1026, 129),
7225    (1027, 131),
7226    (1028, 135),
7227    (1029, 137),
7228    (1030, 139),
7229    (1031, 141),
7230    (1032, 143),
7231    (1033, 145),
7232    (1034, 147),
7233    (1035, 149),
7234    (1036, 151),
7235    (1038, 153),
7236    (1039, 155),
7237    (1040, 161),
7238    (1041, 163),
7239    (1042, 236),
7240    (1043, 173),
7241    (1044, 167),
7242    (1045, 169),
7243    (1046, 234),
7244    (1047, 244),
7245    (1048, 184),
7246    (1049, 190),
7247    (1050, 199),
7248    (1051, 209),
7249    (1052, 211),
7250    (1053, 213),
7251    (1054, 215),
7252    (1055, 221),
7253    (1056, 226),
7254    (1057, 228),
7255    (1058, 230),
7256    (1059, 232),
7257    (1060, 171),
7258    (1061, 182),
7259    (1062, 165),
7260    (1063, 252),
7261    (1064, 246),
7262    (1065, 250),
7263    (1066, 159),
7264    (1067, 242),
7265    (1068, 238),
7266    (1069, 248),
7267    (1070, 157),
7268    (1071, 224),
7269    (1072, 160),
7270    (1073, 162),
7271    (1074, 235),
7272    (1075, 172),
7273    (1076, 166),
7274    (1077, 168),
7275    (1078, 233),
7276    (1079, 243),
7277    (1080, 183),
7278    (1081, 189),
7279    (1082, 198),
7280    (1083, 208),
7281    (1084, 210),
7282    (1085, 212),
7283    (1086, 214),
7284    (1087, 216),
7285    (1088, 225),
7286    (1089, 227),
7287    (1090, 229),
7288    (1091, 231),
7289    (1092, 170),
7290    (1093, 181),
7291    (1094, 164),
7292    (1095, 251),
7293    (1096, 245),
7294    (1097, 249),
7295    (1098, 158),
7296    (1099, 241),
7297    (1100, 237),
7298    (1101, 247),
7299    (1102, 156),
7300    (1103, 222),
7301    (1105, 132),
7302    (1106, 128),
7303    (1107, 130),
7304    (1108, 134),
7305    (1109, 136),
7306    (1110, 138),
7307    (1111, 140),
7308    (1112, 142),
7309    (1113, 144),
7310    (1114, 146),
7311    (1115, 148),
7312    (1116, 150),
7313    (1118, 152),
7314    (1119, 154),
7315    (8470, 239),
7316    (9472, 196),
7317    (9474, 179),
7318    (9484, 218),
7319    (9488, 191),
7320    (9492, 192),
7321    (9496, 217),
7322    (9500, 195),
7323    (9508, 180),
7324    (9516, 194),
7325    (9524, 193),
7326    (9532, 197),
7327    (9552, 205),
7328    (9553, 186),
7329    (9556, 201),
7330    (9559, 187),
7331    (9562, 200),
7332    (9565, 188),
7333    (9568, 204),
7334    (9571, 185),
7335    (9574, 203),
7336    (9577, 202),
7337    (9580, 206),
7338    (9600, 223),
7339    (9604, 220),
7340    (9608, 219),
7341    (9617, 176),
7342    (9618, 177),
7343    (9619, 178),
7344    (9632, 254),
7345];
7346
7347impl_ebcdic_encoder_and_decoder!(
7348    IBM857,
7349    "IBM857",
7350    IBM857Encoder,
7351    IBM857Decoder,
7352    IBM_857_ENCODE_TABLE,
7353    IBM_857_DECODE_TABLE
7354);
7355const IBM_857_DECODE_TABLE: [char; 256] = [
7356    '\u{0}',
7357    '\u{1}',
7358    '\u{2}',
7359    '\u{3}',
7360    '\u{4}',
7361    '\u{5}',
7362    '\u{6}',
7363    '\u{7}',
7364    '\u{8}',
7365    '\u{9}',
7366    '\u{a}',
7367    '\u{b}',
7368    '\u{c}',
7369    '\u{d}',
7370    '\u{e}',
7371    '\u{f}',
7372    '\u{10}',
7373    '\u{11}',
7374    '\u{12}',
7375    '\u{13}',
7376    '\u{14}',
7377    '\u{15}',
7378    '\u{16}',
7379    '\u{17}',
7380    '\u{18}',
7381    '\u{19}',
7382    '\u{1c}',
7383    '\u{1b}',
7384    '\u{7f}',
7385    '\u{1d}',
7386    '\u{1e}',
7387    '\u{1f}',
7388    '\u{20}',
7389    '\u{21}',
7390    '\u{22}',
7391    '\u{23}',
7392    '\u{24}',
7393    '\u{25}',
7394    '\u{26}',
7395    '\u{27}',
7396    '\u{28}',
7397    '\u{29}',
7398    '\u{2a}',
7399    '\u{2b}',
7400    '\u{2c}',
7401    '\u{2d}',
7402    '\u{2e}',
7403    '\u{2f}',
7404    '\u{30}',
7405    '\u{31}',
7406    '\u{32}',
7407    '\u{33}',
7408    '\u{34}',
7409    '\u{35}',
7410    '\u{36}',
7411    '\u{37}',
7412    '\u{38}',
7413    '\u{39}',
7414    '\u{3a}',
7415    '\u{3b}',
7416    '\u{3c}',
7417    '\u{3d}',
7418    '\u{3e}',
7419    '\u{3f}',
7420    '\u{40}',
7421    '\u{41}',
7422    '\u{42}',
7423    '\u{43}',
7424    '\u{44}',
7425    '\u{45}',
7426    '\u{46}',
7427    '\u{47}',
7428    '\u{48}',
7429    '\u{49}',
7430    '\u{4a}',
7431    '\u{4b}',
7432    '\u{4c}',
7433    '\u{4d}',
7434    '\u{4e}',
7435    '\u{4f}',
7436    '\u{50}',
7437    '\u{51}',
7438    '\u{52}',
7439    '\u{53}',
7440    '\u{54}',
7441    '\u{55}',
7442    '\u{56}',
7443    '\u{57}',
7444    '\u{58}',
7445    '\u{59}',
7446    '\u{5a}',
7447    '\u{5b}',
7448    '\u{5c}',
7449    '\u{5d}',
7450    '\u{5e}',
7451    '\u{5f}',
7452    '\u{60}',
7453    '\u{61}',
7454    '\u{62}',
7455    '\u{63}',
7456    '\u{64}',
7457    '\u{65}',
7458    '\u{66}',
7459    '\u{67}',
7460    '\u{68}',
7461    '\u{69}',
7462    '\u{6a}',
7463    '\u{6b}',
7464    '\u{6c}',
7465    '\u{6d}',
7466    '\u{6e}',
7467    '\u{6f}',
7468    '\u{70}',
7469    '\u{71}',
7470    '\u{72}',
7471    '\u{73}',
7472    '\u{74}',
7473    '\u{75}',
7474    '\u{76}',
7475    '\u{77}',
7476    '\u{78}',
7477    '\u{79}',
7478    '\u{7a}',
7479    '\u{7b}',
7480    '\u{7c}',
7481    '\u{7d}',
7482    '\u{7e}',
7483    '\u{1a}',
7484    '\u{c7}',
7485    '\u{fc}',
7486    '\u{e9}',
7487    '\u{e2}',
7488    '\u{e4}',
7489    '\u{e0}',
7490    '\u{e5}',
7491    '\u{e7}',
7492    '\u{ea}',
7493    '\u{eb}',
7494    '\u{e8}',
7495    '\u{ef}',
7496    '\u{ee}',
7497    '\u{131}',
7498    '\u{c4}',
7499    '\u{c5}',
7500    '\u{c9}',
7501    '\u{e6}',
7502    '\u{c6}',
7503    '\u{f4}',
7504    '\u{f6}',
7505    '\u{f2}',
7506    '\u{fb}',
7507    '\u{f9}',
7508    '\u{130}',
7509    '\u{d6}',
7510    '\u{dc}',
7511    '\u{f8}',
7512    '\u{a3}',
7513    '\u{d8}',
7514    '\u{15e}',
7515    '\u{15f}',
7516    '\u{e1}',
7517    '\u{ed}',
7518    '\u{f3}',
7519    '\u{fa}',
7520    '\u{f1}',
7521    '\u{d1}',
7522    '\u{11e}',
7523    '\u{11f}',
7524    '\u{bf}',
7525    '\u{ae}',
7526    '\u{ac}',
7527    '\u{bd}',
7528    '\u{bc}',
7529    '\u{a1}',
7530    '\u{ab}',
7531    '\u{bb}',
7532    '\u{2591}',
7533    '\u{2592}',
7534    '\u{2593}',
7535    '\u{2502}',
7536    '\u{2524}',
7537    '\u{c1}',
7538    '\u{c2}',
7539    '\u{c0}',
7540    '\u{a9}',
7541    '\u{2563}',
7542    '\u{2551}',
7543    '\u{2557}',
7544    '\u{255d}',
7545    '\u{a2}',
7546    '\u{a5}',
7547    '\u{2510}',
7548    '\u{2514}',
7549    '\u{2534}',
7550    '\u{252c}',
7551    '\u{251c}',
7552    '\u{2500}',
7553    '\u{253c}',
7554    '\u{e3}',
7555    '\u{c3}',
7556    '\u{255a}',
7557    '\u{2554}',
7558    '\u{2569}',
7559    '\u{2566}',
7560    '\u{2560}',
7561    '\u{2550}',
7562    '\u{256c}',
7563    '\u{a4}',
7564    '\u{ba}',
7565    '\u{aa}',
7566    '\u{ca}',
7567    '\u{cb}',
7568    '\u{c8}',
7569    char::REPLACEMENT_CHARACTER,
7570    '\u{cd}',
7571    '\u{ce}',
7572    '\u{cf}',
7573    '\u{2518}',
7574    '\u{250c}',
7575    '\u{2588}',
7576    '\u{2584}',
7577    '\u{a6}',
7578    '\u{cc}',
7579    '\u{2580}',
7580    '\u{d3}',
7581    '\u{df}',
7582    '\u{d4}',
7583    '\u{d2}',
7584    '\u{f5}',
7585    '\u{d5}',
7586    '\u{b5}',
7587    char::REPLACEMENT_CHARACTER,
7588    '\u{d7}',
7589    '\u{da}',
7590    '\u{db}',
7591    '\u{d9}',
7592    '\u{ec}',
7593    '\u{ff}',
7594    '\u{af}',
7595    '\u{b4}',
7596    '\u{ad}',
7597    '\u{b1}',
7598    char::REPLACEMENT_CHARACTER,
7599    '\u{be}',
7600    '\u{b6}',
7601    '\u{a7}',
7602    '\u{f7}',
7603    '\u{b8}',
7604    '\u{b0}',
7605    '\u{a8}',
7606    '\u{b7}',
7607    '\u{b9}',
7608    '\u{b3}',
7609    '\u{b2}',
7610    '\u{25a0}',
7611    '\u{a0}',
7612];
7613const IBM_857_ENCODE_TABLE: &[(u16, u8)] = &[
7614    (0, 0),
7615    (1, 1),
7616    (2, 2),
7617    (3, 3),
7618    (4, 4),
7619    (5, 5),
7620    (6, 6),
7621    (7, 7),
7622    (8, 8),
7623    (9, 9),
7624    (10, 10),
7625    (11, 11),
7626    (12, 12),
7627    (13, 13),
7628    (14, 14),
7629    (15, 15),
7630    (16, 16),
7631    (17, 17),
7632    (18, 18),
7633    (19, 19),
7634    (20, 20),
7635    (21, 21),
7636    (22, 22),
7637    (23, 23),
7638    (24, 24),
7639    (25, 25),
7640    (26, 127),
7641    (27, 27),
7642    (28, 26),
7643    (29, 29),
7644    (30, 30),
7645    (31, 31),
7646    (32, 32),
7647    (33, 33),
7648    (34, 34),
7649    (35, 35),
7650    (36, 36),
7651    (37, 37),
7652    (38, 38),
7653    (39, 39),
7654    (40, 40),
7655    (41, 41),
7656    (42, 42),
7657    (43, 43),
7658    (44, 44),
7659    (45, 45),
7660    (46, 46),
7661    (47, 47),
7662    (48, 48),
7663    (49, 49),
7664    (50, 50),
7665    (51, 51),
7666    (52, 52),
7667    (53, 53),
7668    (54, 54),
7669    (55, 55),
7670    (56, 56),
7671    (57, 57),
7672    (58, 58),
7673    (59, 59),
7674    (60, 60),
7675    (61, 61),
7676    (62, 62),
7677    (63, 63),
7678    (64, 64),
7679    (65, 65),
7680    (66, 66),
7681    (67, 67),
7682    (68, 68),
7683    (69, 69),
7684    (70, 70),
7685    (71, 71),
7686    (72, 72),
7687    (73, 73),
7688    (74, 74),
7689    (75, 75),
7690    (76, 76),
7691    (77, 77),
7692    (78, 78),
7693    (79, 79),
7694    (80, 80),
7695    (81, 81),
7696    (82, 82),
7697    (83, 83),
7698    (84, 84),
7699    (85, 85),
7700    (86, 86),
7701    (87, 87),
7702    (88, 88),
7703    (89, 89),
7704    (90, 90),
7705    (91, 91),
7706    (92, 92),
7707    (93, 93),
7708    (94, 94),
7709    (95, 95),
7710    (96, 96),
7711    (97, 97),
7712    (98, 98),
7713    (99, 99),
7714    (100, 100),
7715    (101, 101),
7716    (102, 102),
7717    (103, 103),
7718    (104, 104),
7719    (105, 105),
7720    (106, 106),
7721    (107, 107),
7722    (108, 108),
7723    (109, 109),
7724    (110, 110),
7725    (111, 111),
7726    (112, 112),
7727    (113, 113),
7728    (114, 114),
7729    (115, 115),
7730    (116, 116),
7731    (117, 117),
7732    (118, 118),
7733    (119, 119),
7734    (120, 120),
7735    (121, 121),
7736    (122, 122),
7737    (123, 123),
7738    (124, 124),
7739    (125, 125),
7740    (126, 126),
7741    (127, 28),
7742    (160, 255),
7743    (161, 173),
7744    (162, 189),
7745    (163, 156),
7746    (164, 207),
7747    (165, 190),
7748    (166, 221),
7749    (167, 245),
7750    (168, 249),
7751    (169, 184),
7752    (170, 209),
7753    (171, 174),
7754    (172, 170),
7755    (173, 240),
7756    (174, 169),
7757    (175, 238),
7758    (176, 248),
7759    (177, 241),
7760    (178, 253),
7761    (179, 252),
7762    (180, 239),
7763    (181, 230),
7764    (182, 244),
7765    (183, 250),
7766    (184, 247),
7767    (185, 251),
7768    (186, 208),
7769    (187, 175),
7770    (188, 172),
7771    (189, 171),
7772    (190, 243),
7773    (191, 168),
7774    (192, 183),
7775    (193, 181),
7776    (194, 182),
7777    (195, 199),
7778    (196, 142),
7779    (197, 143),
7780    (198, 146),
7781    (199, 128),
7782    (200, 212),
7783    (201, 144),
7784    (202, 210),
7785    (203, 211),
7786    (204, 222),
7787    (205, 214),
7788    (206, 215),
7789    (207, 216),
7790    (209, 165),
7791    (210, 227),
7792    (211, 224),
7793    (212, 226),
7794    (213, 229),
7795    (214, 153),
7796    (215, 232),
7797    (216, 157),
7798    (217, 235),
7799    (218, 233),
7800    (219, 234),
7801    (220, 154),
7802    (223, 225),
7803    (224, 133),
7804    (225, 160),
7805    (226, 131),
7806    (227, 198),
7807    (228, 132),
7808    (229, 134),
7809    (230, 145),
7810    (231, 135),
7811    (232, 138),
7812    (233, 130),
7813    (234, 136),
7814    (235, 137),
7815    (236, 236),
7816    (237, 161),
7817    (238, 140),
7818    (239, 139),
7819    (241, 164),
7820    (242, 149),
7821    (243, 162),
7822    (244, 147),
7823    (245, 228),
7824    (246, 148),
7825    (247, 246),
7826    (248, 155),
7827    (249, 151),
7828    (250, 163),
7829    (251, 150),
7830    (252, 129),
7831    (255, 237),
7832    (286, 166),
7833    (287, 167),
7834    (304, 152),
7835    (305, 141),
7836    (350, 158),
7837    (351, 159),
7838    (9472, 196),
7839    (9474, 179),
7840    (9484, 218),
7841    (9488, 191),
7842    (9492, 192),
7843    (9496, 217),
7844    (9500, 195),
7845    (9508, 180),
7846    (9516, 194),
7847    (9524, 193),
7848    (9532, 197),
7849    (9552, 205),
7850    (9553, 186),
7851    (9556, 201),
7852    (9559, 187),
7853    (9562, 200),
7854    (9565, 188),
7855    (9568, 204),
7856    (9571, 185),
7857    (9574, 203),
7858    (9577, 202),
7859    (9580, 206),
7860    (9600, 223),
7861    (9604, 220),
7862    (9608, 219),
7863    (9617, 176),
7864    (9618, 177),
7865    (9619, 178),
7866    (9632, 254),
7867];
7868
7869impl_ebcdic_encoder_and_decoder!(
7870    IBM860,
7871    "IBM860",
7872    IBM860Encoder,
7873    IBM860Decoder,
7874    IBM_860_ENCODE_TABLE,
7875    IBM_860_DECODE_TABLE
7876);
7877const IBM_860_DECODE_TABLE: [char; 256] = [
7878    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7879    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7880    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7881    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7882    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7883    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7884    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7885    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7886    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7887    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7888    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7889    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7890    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7891    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7892    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e3}', '\u{e0}', '\u{c1}', '\u{e7}', '\u{ea}',
7893    '\u{ca}', '\u{e8}', '\u{cd}', '\u{d4}', '\u{ec}', '\u{c3}', '\u{c2}', '\u{c9}', '\u{c0}',
7894    '\u{c8}', '\u{f4}', '\u{f5}', '\u{f2}', '\u{da}', '\u{f9}', '\u{cc}', '\u{d5}', '\u{dc}',
7895    '\u{a2}', '\u{a3}', '\u{d9}', '\u{20a7}', '\u{d3}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
7896    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{d2}', '\u{ac}', '\u{bd}', '\u{bc}',
7897    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
7898    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
7899    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
7900    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
7901    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
7902    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
7903    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
7904    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
7905    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
7906    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
7907    '\u{b2}', '\u{25a0}', '\u{a0}',
7908];
7909const IBM_860_ENCODE_TABLE: &[(u16, u8)] = &[
7910    (0, 0),
7911    (1, 1),
7912    (2, 2),
7913    (3, 3),
7914    (4, 4),
7915    (5, 5),
7916    (6, 6),
7917    (7, 7),
7918    (8, 8),
7919    (9, 9),
7920    (10, 10),
7921    (11, 11),
7922    (12, 12),
7923    (13, 13),
7924    (14, 14),
7925    (15, 15),
7926    (16, 16),
7927    (17, 17),
7928    (18, 18),
7929    (19, 19),
7930    (20, 20),
7931    (21, 21),
7932    (22, 22),
7933    (23, 23),
7934    (24, 24),
7935    (25, 25),
7936    (26, 127),
7937    (27, 27),
7938    (28, 26),
7939    (29, 29),
7940    (30, 30),
7941    (31, 31),
7942    (32, 32),
7943    (33, 33),
7944    (34, 34),
7945    (35, 35),
7946    (36, 36),
7947    (37, 37),
7948    (38, 38),
7949    (39, 39),
7950    (40, 40),
7951    (41, 41),
7952    (42, 42),
7953    (43, 43),
7954    (44, 44),
7955    (45, 45),
7956    (46, 46),
7957    (47, 47),
7958    (48, 48),
7959    (49, 49),
7960    (50, 50),
7961    (51, 51),
7962    (52, 52),
7963    (53, 53),
7964    (54, 54),
7965    (55, 55),
7966    (56, 56),
7967    (57, 57),
7968    (58, 58),
7969    (59, 59),
7970    (60, 60),
7971    (61, 61),
7972    (62, 62),
7973    (63, 63),
7974    (64, 64),
7975    (65, 65),
7976    (66, 66),
7977    (67, 67),
7978    (68, 68),
7979    (69, 69),
7980    (70, 70),
7981    (71, 71),
7982    (72, 72),
7983    (73, 73),
7984    (74, 74),
7985    (75, 75),
7986    (76, 76),
7987    (77, 77),
7988    (78, 78),
7989    (79, 79),
7990    (80, 80),
7991    (81, 81),
7992    (82, 82),
7993    (83, 83),
7994    (84, 84),
7995    (85, 85),
7996    (86, 86),
7997    (87, 87),
7998    (88, 88),
7999    (89, 89),
8000    (90, 90),
8001    (91, 91),
8002    (92, 92),
8003    (93, 93),
8004    (94, 94),
8005    (95, 95),
8006    (96, 96),
8007    (97, 97),
8008    (98, 98),
8009    (99, 99),
8010    (100, 100),
8011    (101, 101),
8012    (102, 102),
8013    (103, 103),
8014    (104, 104),
8015    (105, 105),
8016    (106, 106),
8017    (107, 107),
8018    (108, 108),
8019    (109, 109),
8020    (110, 110),
8021    (111, 111),
8022    (112, 112),
8023    (113, 113),
8024    (114, 114),
8025    (115, 115),
8026    (116, 116),
8027    (117, 117),
8028    (118, 118),
8029    (119, 119),
8030    (120, 120),
8031    (121, 121),
8032    (122, 122),
8033    (123, 123),
8034    (124, 124),
8035    (125, 125),
8036    (126, 126),
8037    (127, 28),
8038    (160, 255),
8039    (161, 173),
8040    (162, 155),
8041    (163, 156),
8042    (170, 166),
8043    (171, 174),
8044    (172, 170),
8045    (176, 248),
8046    (177, 241),
8047    (178, 253),
8048    (183, 250),
8049    (186, 167),
8050    (187, 175),
8051    (188, 172),
8052    (189, 171),
8053    (191, 168),
8054    (192, 145),
8055    (193, 134),
8056    (194, 143),
8057    (195, 142),
8058    (199, 128),
8059    (200, 146),
8060    (201, 144),
8061    (202, 137),
8062    (204, 152),
8063    (205, 139),
8064    (209, 165),
8065    (210, 169),
8066    (211, 159),
8067    (212, 140),
8068    (213, 153),
8069    (217, 157),
8070    (218, 150),
8071    (220, 154),
8072    (223, 225),
8073    (224, 133),
8074    (225, 160),
8075    (226, 131),
8076    (227, 132),
8077    (231, 135),
8078    (232, 138),
8079    (233, 130),
8080    (234, 136),
8081    (236, 141),
8082    (237, 161),
8083    (241, 164),
8084    (242, 149),
8085    (243, 162),
8086    (244, 147),
8087    (245, 148),
8088    (247, 246),
8089    (249, 151),
8090    (250, 163),
8091    (252, 129),
8092    (915, 226),
8093    (920, 233),
8094    (931, 228),
8095    (934, 232),
8096    (937, 234),
8097    (945, 224),
8098    (948, 235),
8099    (949, 238),
8100    (956, 230),
8101    (960, 227),
8102    (963, 229),
8103    (964, 231),
8104    (966, 237),
8105    (8319, 252),
8106    (8359, 158),
8107    (8729, 249),
8108    (8730, 251),
8109    (8734, 236),
8110    (8745, 239),
8111    (8776, 247),
8112    (8801, 240),
8113    (8804, 243),
8114    (8805, 242),
8115    (8992, 244),
8116    (8993, 245),
8117    (9472, 196),
8118    (9474, 179),
8119    (9484, 218),
8120    (9488, 191),
8121    (9492, 192),
8122    (9496, 217),
8123    (9500, 195),
8124    (9508, 180),
8125    (9516, 194),
8126    (9524, 193),
8127    (9532, 197),
8128    (9552, 205),
8129    (9553, 186),
8130    (9554, 213),
8131    (9555, 214),
8132    (9556, 201),
8133    (9557, 184),
8134    (9558, 183),
8135    (9559, 187),
8136    (9560, 212),
8137    (9561, 211),
8138    (9562, 200),
8139    (9563, 190),
8140    (9564, 189),
8141    (9565, 188),
8142    (9566, 198),
8143    (9567, 199),
8144    (9568, 204),
8145    (9569, 181),
8146    (9570, 182),
8147    (9571, 185),
8148    (9572, 209),
8149    (9573, 210),
8150    (9574, 203),
8151    (9575, 207),
8152    (9576, 208),
8153    (9577, 202),
8154    (9578, 216),
8155    (9579, 215),
8156    (9580, 206),
8157    (9600, 223),
8158    (9604, 220),
8159    (9608, 219),
8160    (9612, 221),
8161    (9616, 222),
8162    (9617, 176),
8163    (9618, 177),
8164    (9619, 178),
8165    (9632, 254),
8166];
8167
8168impl_ebcdic_encoder_and_decoder!(
8169    IBM861,
8170    "IBM861",
8171    IBM861Encoder,
8172    IBM861Decoder,
8173    IBM_861_ENCODE_TABLE,
8174    IBM_861_DECODE_TABLE
8175);
8176const IBM_861_DECODE_TABLE: [char; 256] = [
8177    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8178    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8179    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8180    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8181    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8182    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8183    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8184    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8185    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8186    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8187    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8188    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8189    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8190    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8191    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
8192    '\u{eb}', '\u{e8}', '\u{d0}', '\u{f0}', '\u{de}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
8193    '\u{c6}', '\u{f4}', '\u{f6}', '\u{fe}', '\u{fb}', '\u{dd}', '\u{fd}', '\u{d6}', '\u{dc}',
8194    '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
8195    '\u{c1}', '\u{cd}', '\u{d3}', '\u{da}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8196    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8197    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8198    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8199    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8200    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8201    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8202    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8203    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8204    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8205    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8206    '\u{b2}', '\u{25a0}', '\u{a0}',
8207];
8208const IBM_861_ENCODE_TABLE: &[(u16, u8)] = &[
8209    (0, 0),
8210    (1, 1),
8211    (2, 2),
8212    (3, 3),
8213    (4, 4),
8214    (5, 5),
8215    (6, 6),
8216    (7, 7),
8217    (8, 8),
8218    (9, 9),
8219    (10, 10),
8220    (11, 11),
8221    (12, 12),
8222    (13, 13),
8223    (14, 14),
8224    (15, 15),
8225    (16, 16),
8226    (17, 17),
8227    (18, 18),
8228    (19, 19),
8229    (20, 20),
8230    (21, 21),
8231    (22, 22),
8232    (23, 23),
8233    (24, 24),
8234    (25, 25),
8235    (26, 127),
8236    (27, 27),
8237    (28, 26),
8238    (29, 29),
8239    (30, 30),
8240    (31, 31),
8241    (32, 32),
8242    (33, 33),
8243    (34, 34),
8244    (35, 35),
8245    (36, 36),
8246    (37, 37),
8247    (38, 38),
8248    (39, 39),
8249    (40, 40),
8250    (41, 41),
8251    (42, 42),
8252    (43, 43),
8253    (44, 44),
8254    (45, 45),
8255    (46, 46),
8256    (47, 47),
8257    (48, 48),
8258    (49, 49),
8259    (50, 50),
8260    (51, 51),
8261    (52, 52),
8262    (53, 53),
8263    (54, 54),
8264    (55, 55),
8265    (56, 56),
8266    (57, 57),
8267    (58, 58),
8268    (59, 59),
8269    (60, 60),
8270    (61, 61),
8271    (62, 62),
8272    (63, 63),
8273    (64, 64),
8274    (65, 65),
8275    (66, 66),
8276    (67, 67),
8277    (68, 68),
8278    (69, 69),
8279    (70, 70),
8280    (71, 71),
8281    (72, 72),
8282    (73, 73),
8283    (74, 74),
8284    (75, 75),
8285    (76, 76),
8286    (77, 77),
8287    (78, 78),
8288    (79, 79),
8289    (80, 80),
8290    (81, 81),
8291    (82, 82),
8292    (83, 83),
8293    (84, 84),
8294    (85, 85),
8295    (86, 86),
8296    (87, 87),
8297    (88, 88),
8298    (89, 89),
8299    (90, 90),
8300    (91, 91),
8301    (92, 92),
8302    (93, 93),
8303    (94, 94),
8304    (95, 95),
8305    (96, 96),
8306    (97, 97),
8307    (98, 98),
8308    (99, 99),
8309    (100, 100),
8310    (101, 101),
8311    (102, 102),
8312    (103, 103),
8313    (104, 104),
8314    (105, 105),
8315    (106, 106),
8316    (107, 107),
8317    (108, 108),
8318    (109, 109),
8319    (110, 110),
8320    (111, 111),
8321    (112, 112),
8322    (113, 113),
8323    (114, 114),
8324    (115, 115),
8325    (116, 116),
8326    (117, 117),
8327    (118, 118),
8328    (119, 119),
8329    (120, 120),
8330    (121, 121),
8331    (122, 122),
8332    (123, 123),
8333    (124, 124),
8334    (125, 125),
8335    (126, 126),
8336    (127, 28),
8337    (160, 255),
8338    (161, 173),
8339    (163, 156),
8340    (171, 174),
8341    (172, 170),
8342    (176, 248),
8343    (177, 241),
8344    (178, 253),
8345    (183, 250),
8346    (187, 175),
8347    (188, 172),
8348    (189, 171),
8349    (191, 168),
8350    (193, 164),
8351    (196, 142),
8352    (197, 143),
8353    (198, 146),
8354    (199, 128),
8355    (201, 144),
8356    (205, 165),
8357    (208, 139),
8358    (211, 166),
8359    (214, 153),
8360    (216, 157),
8361    (218, 167),
8362    (220, 154),
8363    (221, 151),
8364    (222, 141),
8365    (223, 225),
8366    (224, 133),
8367    (225, 160),
8368    (226, 131),
8369    (228, 132),
8370    (229, 134),
8371    (230, 145),
8372    (231, 135),
8373    (232, 138),
8374    (233, 130),
8375    (234, 136),
8376    (235, 137),
8377    (237, 161),
8378    (240, 140),
8379    (243, 162),
8380    (244, 147),
8381    (246, 148),
8382    (247, 246),
8383    (248, 155),
8384    (250, 163),
8385    (251, 150),
8386    (252, 129),
8387    (253, 152),
8388    (254, 149),
8389    (402, 159),
8390    (915, 226),
8391    (920, 233),
8392    (931, 228),
8393    (934, 232),
8394    (937, 234),
8395    (945, 224),
8396    (948, 235),
8397    (949, 238),
8398    (956, 230),
8399    (960, 227),
8400    (963, 229),
8401    (964, 231),
8402    (966, 237),
8403    (8319, 252),
8404    (8359, 158),
8405    (8729, 249),
8406    (8730, 251),
8407    (8734, 236),
8408    (8745, 239),
8409    (8776, 247),
8410    (8801, 240),
8411    (8804, 243),
8412    (8805, 242),
8413    (8976, 169),
8414    (8992, 244),
8415    (8993, 245),
8416    (9472, 196),
8417    (9474, 179),
8418    (9484, 218),
8419    (9488, 191),
8420    (9492, 192),
8421    (9496, 217),
8422    (9500, 195),
8423    (9508, 180),
8424    (9516, 194),
8425    (9524, 193),
8426    (9532, 197),
8427    (9552, 205),
8428    (9553, 186),
8429    (9554, 213),
8430    (9555, 214),
8431    (9556, 201),
8432    (9557, 184),
8433    (9558, 183),
8434    (9559, 187),
8435    (9560, 212),
8436    (9561, 211),
8437    (9562, 200),
8438    (9563, 190),
8439    (9564, 189),
8440    (9565, 188),
8441    (9566, 198),
8442    (9567, 199),
8443    (9568, 204),
8444    (9569, 181),
8445    (9570, 182),
8446    (9571, 185),
8447    (9572, 209),
8448    (9573, 210),
8449    (9574, 203),
8450    (9575, 207),
8451    (9576, 208),
8452    (9577, 202),
8453    (9578, 216),
8454    (9579, 215),
8455    (9580, 206),
8456    (9600, 223),
8457    (9604, 220),
8458    (9608, 219),
8459    (9612, 221),
8460    (9616, 222),
8461    (9617, 176),
8462    (9618, 177),
8463    (9619, 178),
8464    (9632, 254),
8465];
8466
8467impl_ebcdic_encoder_and_decoder!(
8468    IBM862,
8469    "IBM862",
8470    IBM862Encoder,
8471    IBM862Decoder,
8472    IBM_862_ENCODE_TABLE,
8473    IBM_862_DECODE_TABLE
8474);
8475const IBM_862_DECODE_TABLE: [char; 256] = [
8476    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8477    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8478    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8479    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8480    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8481    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8482    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8483    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8484    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8485    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8486    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8487    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8488    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8489    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8490    '\u{5d0}', '\u{5d1}', '\u{5d2}', '\u{5d3}', '\u{5d4}', '\u{5d5}', '\u{5d6}', '\u{5d7}',
8491    '\u{5d8}', '\u{5d9}', '\u{5da}', '\u{5db}', '\u{5dc}', '\u{5dd}', '\u{5de}', '\u{5df}',
8492    '\u{5e0}', '\u{5e1}', '\u{5e2}', '\u{5e3}', '\u{5e4}', '\u{5e5}', '\u{5e6}', '\u{5e7}',
8493    '\u{5e8}', '\u{5e9}', '\u{5ea}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}',
8494    '\u{ed}', '\u{f3}', '\u{fa}', '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}',
8495    '\u{ac}', '\u{bd}', '\u{bc}', '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}',
8496    '\u{2502}', '\u{2524}', '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}',
8497    '\u{2557}', '\u{255d}', '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}',
8498    '\u{251c}', '\u{2500}', '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}',
8499    '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}',
8500    '\u{2559}', '\u{2558}', '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}',
8501    '\u{2588}', '\u{2584}', '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}',
8502    '\u{3c0}', '\u{3a3}', '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}',
8503    '\u{3b4}', '\u{221e}', '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}',
8504    '\u{2264}', '\u{2320}', '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}',
8505    '\u{221a}', '\u{207f}', '\u{b2}', '\u{25a0}', '\u{a0}',
8506];
8507const IBM_862_ENCODE_TABLE: &[(u16, u8)] = &[
8508    (0, 0),
8509    (1, 1),
8510    (2, 2),
8511    (3, 3),
8512    (4, 4),
8513    (5, 5),
8514    (6, 6),
8515    (7, 7),
8516    (8, 8),
8517    (9, 9),
8518    (10, 10),
8519    (11, 11),
8520    (12, 12),
8521    (13, 13),
8522    (14, 14),
8523    (15, 15),
8524    (16, 16),
8525    (17, 17),
8526    (18, 18),
8527    (19, 19),
8528    (20, 20),
8529    (21, 21),
8530    (22, 22),
8531    (23, 23),
8532    (24, 24),
8533    (25, 25),
8534    (26, 127),
8535    (27, 27),
8536    (28, 26),
8537    (29, 29),
8538    (30, 30),
8539    (31, 31),
8540    (32, 32),
8541    (33, 33),
8542    (34, 34),
8543    (35, 35),
8544    (36, 36),
8545    (37, 37),
8546    (38, 38),
8547    (39, 39),
8548    (40, 40),
8549    (41, 41),
8550    (42, 42),
8551    (43, 43),
8552    (44, 44),
8553    (45, 45),
8554    (46, 46),
8555    (47, 47),
8556    (48, 48),
8557    (49, 49),
8558    (50, 50),
8559    (51, 51),
8560    (52, 52),
8561    (53, 53),
8562    (54, 54),
8563    (55, 55),
8564    (56, 56),
8565    (57, 57),
8566    (58, 58),
8567    (59, 59),
8568    (60, 60),
8569    (61, 61),
8570    (62, 62),
8571    (63, 63),
8572    (64, 64),
8573    (65, 65),
8574    (66, 66),
8575    (67, 67),
8576    (68, 68),
8577    (69, 69),
8578    (70, 70),
8579    (71, 71),
8580    (72, 72),
8581    (73, 73),
8582    (74, 74),
8583    (75, 75),
8584    (76, 76),
8585    (77, 77),
8586    (78, 78),
8587    (79, 79),
8588    (80, 80),
8589    (81, 81),
8590    (82, 82),
8591    (83, 83),
8592    (84, 84),
8593    (85, 85),
8594    (86, 86),
8595    (87, 87),
8596    (88, 88),
8597    (89, 89),
8598    (90, 90),
8599    (91, 91),
8600    (92, 92),
8601    (93, 93),
8602    (94, 94),
8603    (95, 95),
8604    (96, 96),
8605    (97, 97),
8606    (98, 98),
8607    (99, 99),
8608    (100, 100),
8609    (101, 101),
8610    (102, 102),
8611    (103, 103),
8612    (104, 104),
8613    (105, 105),
8614    (106, 106),
8615    (107, 107),
8616    (108, 108),
8617    (109, 109),
8618    (110, 110),
8619    (111, 111),
8620    (112, 112),
8621    (113, 113),
8622    (114, 114),
8623    (115, 115),
8624    (116, 116),
8625    (117, 117),
8626    (118, 118),
8627    (119, 119),
8628    (120, 120),
8629    (121, 121),
8630    (122, 122),
8631    (123, 123),
8632    (124, 124),
8633    (125, 125),
8634    (126, 126),
8635    (127, 28),
8636    (160, 255),
8637    (161, 173),
8638    (162, 155),
8639    (163, 156),
8640    (165, 157),
8641    (170, 166),
8642    (171, 174),
8643    (172, 170),
8644    (176, 248),
8645    (177, 241),
8646    (178, 253),
8647    (183, 250),
8648    (186, 167),
8649    (187, 175),
8650    (188, 172),
8651    (189, 171),
8652    (191, 168),
8653    (209, 165),
8654    (223, 225),
8655    (225, 160),
8656    (237, 161),
8657    (241, 164),
8658    (243, 162),
8659    (247, 246),
8660    (250, 163),
8661    (402, 159),
8662    (915, 226),
8663    (920, 233),
8664    (931, 228),
8665    (934, 232),
8666    (937, 234),
8667    (945, 224),
8668    (948, 235),
8669    (949, 238),
8670    (956, 230),
8671    (960, 227),
8672    (963, 229),
8673    (964, 231),
8674    (966, 237),
8675    (1488, 128),
8676    (1489, 129),
8677    (1490, 130),
8678    (1491, 131),
8679    (1492, 132),
8680    (1493, 133),
8681    (1494, 134),
8682    (1495, 135),
8683    (1496, 136),
8684    (1497, 137),
8685    (1498, 138),
8686    (1499, 139),
8687    (1500, 140),
8688    (1501, 141),
8689    (1502, 142),
8690    (1503, 143),
8691    (1504, 144),
8692    (1505, 145),
8693    (1506, 146),
8694    (1507, 147),
8695    (1508, 148),
8696    (1509, 149),
8697    (1510, 150),
8698    (1511, 151),
8699    (1512, 152),
8700    (1513, 153),
8701    (1514, 154),
8702    (8319, 252),
8703    (8359, 158),
8704    (8729, 249),
8705    (8730, 251),
8706    (8734, 236),
8707    (8745, 239),
8708    (8776, 247),
8709    (8801, 240),
8710    (8804, 243),
8711    (8805, 242),
8712    (8976, 169),
8713    (8992, 244),
8714    (8993, 245),
8715    (9472, 196),
8716    (9474, 179),
8717    (9484, 218),
8718    (9488, 191),
8719    (9492, 192),
8720    (9496, 217),
8721    (9500, 195),
8722    (9508, 180),
8723    (9516, 194),
8724    (9524, 193),
8725    (9532, 197),
8726    (9552, 205),
8727    (9553, 186),
8728    (9554, 213),
8729    (9555, 214),
8730    (9556, 201),
8731    (9557, 184),
8732    (9558, 183),
8733    (9559, 187),
8734    (9560, 212),
8735    (9561, 211),
8736    (9562, 200),
8737    (9563, 190),
8738    (9564, 189),
8739    (9565, 188),
8740    (9566, 198),
8741    (9567, 199),
8742    (9568, 204),
8743    (9569, 181),
8744    (9570, 182),
8745    (9571, 185),
8746    (9572, 209),
8747    (9573, 210),
8748    (9574, 203),
8749    (9575, 207),
8750    (9576, 208),
8751    (9577, 202),
8752    (9578, 216),
8753    (9579, 215),
8754    (9580, 206),
8755    (9600, 223),
8756    (9604, 220),
8757    (9608, 219),
8758    (9612, 221),
8759    (9616, 222),
8760    (9617, 176),
8761    (9618, 177),
8762    (9619, 178),
8763    (9632, 254),
8764];
8765
8766impl_ebcdic_encoder_and_decoder!(
8767    IBM863,
8768    "IBM863",
8769    IBM863Encoder,
8770    IBM863Decoder,
8771    IBM_863_ENCODE_TABLE,
8772    IBM_863_DECODE_TABLE
8773);
8774const IBM_863_DECODE_TABLE: [char; 256] = [
8775    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8776    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8777    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8778    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8779    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8780    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8781    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8782    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8783    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8784    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8785    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8786    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8787    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8788    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8789    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{c2}', '\u{e0}', '\u{b6}', '\u{e7}', '\u{ea}',
8790    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{2017}', '\u{c0}', '\u{a7}', '\u{c9}', '\u{c8}',
8791    '\u{ca}', '\u{f4}', '\u{cb}', '\u{cf}', '\u{fb}', '\u{f9}', '\u{a4}', '\u{d4}', '\u{dc}',
8792    '\u{a2}', '\u{a3}', '\u{d9}', '\u{db}', '\u{192}', '\u{a6}', '\u{b4}', '\u{f3}', '\u{fa}',
8793    '\u{a8}', '\u{b8}', '\u{b3}', '\u{af}', '\u{ce}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8794    '\u{be}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8795    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8796    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8797    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8798    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8799    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8800    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8801    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8802    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8803    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8804    '\u{b2}', '\u{25a0}', '\u{a0}',
8805];
8806const IBM_863_ENCODE_TABLE: &[(u16, u8)] = &[
8807    (0, 0),
8808    (1, 1),
8809    (2, 2),
8810    (3, 3),
8811    (4, 4),
8812    (5, 5),
8813    (6, 6),
8814    (7, 7),
8815    (8, 8),
8816    (9, 9),
8817    (10, 10),
8818    (11, 11),
8819    (12, 12),
8820    (13, 13),
8821    (14, 14),
8822    (15, 15),
8823    (16, 16),
8824    (17, 17),
8825    (18, 18),
8826    (19, 19),
8827    (20, 20),
8828    (21, 21),
8829    (22, 22),
8830    (23, 23),
8831    (24, 24),
8832    (25, 25),
8833    (26, 127),
8834    (27, 27),
8835    (28, 26),
8836    (29, 29),
8837    (30, 30),
8838    (31, 31),
8839    (32, 32),
8840    (33, 33),
8841    (34, 34),
8842    (35, 35),
8843    (36, 36),
8844    (37, 37),
8845    (38, 38),
8846    (39, 39),
8847    (40, 40),
8848    (41, 41),
8849    (42, 42),
8850    (43, 43),
8851    (44, 44),
8852    (45, 45),
8853    (46, 46),
8854    (47, 47),
8855    (48, 48),
8856    (49, 49),
8857    (50, 50),
8858    (51, 51),
8859    (52, 52),
8860    (53, 53),
8861    (54, 54),
8862    (55, 55),
8863    (56, 56),
8864    (57, 57),
8865    (58, 58),
8866    (59, 59),
8867    (60, 60),
8868    (61, 61),
8869    (62, 62),
8870    (63, 63),
8871    (64, 64),
8872    (65, 65),
8873    (66, 66),
8874    (67, 67),
8875    (68, 68),
8876    (69, 69),
8877    (70, 70),
8878    (71, 71),
8879    (72, 72),
8880    (73, 73),
8881    (74, 74),
8882    (75, 75),
8883    (76, 76),
8884    (77, 77),
8885    (78, 78),
8886    (79, 79),
8887    (80, 80),
8888    (81, 81),
8889    (82, 82),
8890    (83, 83),
8891    (84, 84),
8892    (85, 85),
8893    (86, 86),
8894    (87, 87),
8895    (88, 88),
8896    (89, 89),
8897    (90, 90),
8898    (91, 91),
8899    (92, 92),
8900    (93, 93),
8901    (94, 94),
8902    (95, 95),
8903    (96, 96),
8904    (97, 97),
8905    (98, 98),
8906    (99, 99),
8907    (100, 100),
8908    (101, 101),
8909    (102, 102),
8910    (103, 103),
8911    (104, 104),
8912    (105, 105),
8913    (106, 106),
8914    (107, 107),
8915    (108, 108),
8916    (109, 109),
8917    (110, 110),
8918    (111, 111),
8919    (112, 112),
8920    (113, 113),
8921    (114, 114),
8922    (115, 115),
8923    (116, 116),
8924    (117, 117),
8925    (118, 118),
8926    (119, 119),
8927    (120, 120),
8928    (121, 121),
8929    (122, 122),
8930    (123, 123),
8931    (124, 124),
8932    (125, 125),
8933    (126, 126),
8934    (127, 28),
8935    (160, 255),
8936    (162, 155),
8937    (163, 156),
8938    (164, 152),
8939    (166, 160),
8940    (167, 143),
8941    (168, 164),
8942    (171, 174),
8943    (172, 170),
8944    (175, 167),
8945    (176, 248),
8946    (177, 241),
8947    (178, 253),
8948    (179, 166),
8949    (180, 161),
8950    (182, 134),
8951    (183, 250),
8952    (184, 165),
8953    (187, 175),
8954    (188, 172),
8955    (189, 171),
8956    (190, 173),
8957    (192, 142),
8958    (194, 132),
8959    (199, 128),
8960    (200, 145),
8961    (201, 144),
8962    (202, 146),
8963    (203, 148),
8964    (206, 168),
8965    (207, 149),
8966    (212, 153),
8967    (217, 157),
8968    (219, 158),
8969    (220, 154),
8970    (223, 225),
8971    (224, 133),
8972    (226, 131),
8973    (231, 135),
8974    (232, 138),
8975    (233, 130),
8976    (234, 136),
8977    (235, 137),
8978    (238, 140),
8979    (239, 139),
8980    (243, 162),
8981    (244, 147),
8982    (247, 246),
8983    (249, 151),
8984    (250, 163),
8985    (251, 150),
8986    (252, 129),
8987    (402, 159),
8988    (915, 226),
8989    (920, 233),
8990    (931, 228),
8991    (934, 232),
8992    (937, 234),
8993    (945, 224),
8994    (948, 235),
8995    (949, 238),
8996    (956, 230),
8997    (960, 227),
8998    (963, 229),
8999    (964, 231),
9000    (966, 237),
9001    (8215, 141),
9002    (8319, 252),
9003    (8729, 249),
9004    (8730, 251),
9005    (8734, 236),
9006    (8745, 239),
9007    (8776, 247),
9008    (8801, 240),
9009    (8804, 243),
9010    (8805, 242),
9011    (8976, 169),
9012    (8992, 244),
9013    (8993, 245),
9014    (9472, 196),
9015    (9474, 179),
9016    (9484, 218),
9017    (9488, 191),
9018    (9492, 192),
9019    (9496, 217),
9020    (9500, 195),
9021    (9508, 180),
9022    (9516, 194),
9023    (9524, 193),
9024    (9532, 197),
9025    (9552, 205),
9026    (9553, 186),
9027    (9554, 213),
9028    (9555, 214),
9029    (9556, 201),
9030    (9557, 184),
9031    (9558, 183),
9032    (9559, 187),
9033    (9560, 212),
9034    (9561, 211),
9035    (9562, 200),
9036    (9563, 190),
9037    (9564, 189),
9038    (9565, 188),
9039    (9566, 198),
9040    (9567, 199),
9041    (9568, 204),
9042    (9569, 181),
9043    (9570, 182),
9044    (9571, 185),
9045    (9572, 209),
9046    (9573, 210),
9047    (9574, 203),
9048    (9575, 207),
9049    (9576, 208),
9050    (9577, 202),
9051    (9578, 216),
9052    (9579, 215),
9053    (9580, 206),
9054    (9600, 223),
9055    (9604, 220),
9056    (9608, 219),
9057    (9612, 221),
9058    (9616, 222),
9059    (9617, 176),
9060    (9618, 177),
9061    (9619, 178),
9062    (9632, 254),
9063];
9064
9065impl_ebcdic_encoder_and_decoder!(
9066    IBM864,
9067    "IBM864",
9068    IBM864Encoder,
9069    IBM864Decoder,
9070    IBM_864_ENCODE_TABLE,
9071    IBM_864_DECODE_TABLE
9072);
9073const IBM_864_DECODE_TABLE: [char; 256] = [
9074    '\u{0}',
9075    '\u{1}',
9076    '\u{2}',
9077    '\u{3}',
9078    '\u{4}',
9079    '\u{5}',
9080    '\u{6}',
9081    '\u{7}',
9082    '\u{8}',
9083    '\u{9}',
9084    '\u{a}',
9085    '\u{b}',
9086    '\u{c}',
9087    '\u{d}',
9088    '\u{e}',
9089    '\u{f}',
9090    '\u{10}',
9091    '\u{11}',
9092    '\u{12}',
9093    '\u{13}',
9094    '\u{14}',
9095    '\u{15}',
9096    '\u{16}',
9097    '\u{17}',
9098    '\u{18}',
9099    '\u{19}',
9100    '\u{1c}',
9101    '\u{1b}',
9102    '\u{7f}',
9103    '\u{1d}',
9104    '\u{1e}',
9105    '\u{1f}',
9106    '\u{20}',
9107    '\u{21}',
9108    '\u{22}',
9109    '\u{23}',
9110    '\u{24}',
9111    '\u{25}',
9112    '\u{26}',
9113    '\u{27}',
9114    '\u{28}',
9115    '\u{29}',
9116    '\u{2a}',
9117    '\u{2b}',
9118    '\u{2c}',
9119    '\u{2d}',
9120    '\u{2e}',
9121    '\u{2f}',
9122    '\u{30}',
9123    '\u{31}',
9124    '\u{32}',
9125    '\u{33}',
9126    '\u{34}',
9127    '\u{35}',
9128    '\u{36}',
9129    '\u{37}',
9130    '\u{38}',
9131    '\u{39}',
9132    '\u{3a}',
9133    '\u{3b}',
9134    '\u{3c}',
9135    '\u{3d}',
9136    '\u{3e}',
9137    '\u{3f}',
9138    '\u{40}',
9139    '\u{41}',
9140    '\u{42}',
9141    '\u{43}',
9142    '\u{44}',
9143    '\u{45}',
9144    '\u{46}',
9145    '\u{47}',
9146    '\u{48}',
9147    '\u{49}',
9148    '\u{4a}',
9149    '\u{4b}',
9150    '\u{4c}',
9151    '\u{4d}',
9152    '\u{4e}',
9153    '\u{4f}',
9154    '\u{50}',
9155    '\u{51}',
9156    '\u{52}',
9157    '\u{53}',
9158    '\u{54}',
9159    '\u{55}',
9160    '\u{56}',
9161    '\u{57}',
9162    '\u{58}',
9163    '\u{59}',
9164    '\u{5a}',
9165    '\u{5b}',
9166    '\u{5c}',
9167    '\u{5d}',
9168    '\u{5e}',
9169    '\u{5f}',
9170    '\u{60}',
9171    '\u{61}',
9172    '\u{62}',
9173    '\u{63}',
9174    '\u{64}',
9175    '\u{65}',
9176    '\u{66}',
9177    '\u{67}',
9178    '\u{68}',
9179    '\u{69}',
9180    '\u{6a}',
9181    '\u{6b}',
9182    '\u{6c}',
9183    '\u{6d}',
9184    '\u{6e}',
9185    '\u{6f}',
9186    '\u{70}',
9187    '\u{71}',
9188    '\u{72}',
9189    '\u{73}',
9190    '\u{74}',
9191    '\u{75}',
9192    '\u{76}',
9193    '\u{77}',
9194    '\u{78}',
9195    '\u{79}',
9196    '\u{7a}',
9197    '\u{7b}',
9198    '\u{7c}',
9199    '\u{7d}',
9200    '\u{7e}',
9201    '\u{1a}',
9202    '\u{b0}',
9203    '\u{b7}',
9204    '\u{2219}',
9205    '\u{221a}',
9206    '\u{2592}',
9207    '\u{2500}',
9208    '\u{2502}',
9209    '\u{253c}',
9210    '\u{2524}',
9211    '\u{252c}',
9212    '\u{251c}',
9213    '\u{2534}',
9214    '\u{2510}',
9215    '\u{250c}',
9216    '\u{2514}',
9217    '\u{2518}',
9218    '\u{3b2}',
9219    '\u{221e}',
9220    '\u{3c6}',
9221    '\u{b1}',
9222    '\u{bd}',
9223    '\u{bc}',
9224    '\u{2248}',
9225    '\u{ab}',
9226    '\u{bb}',
9227    '\u{fef7}',
9228    '\u{fef8}',
9229    char::REPLACEMENT_CHARACTER,
9230    char::REPLACEMENT_CHARACTER,
9231    '\u{fefb}',
9232    '\u{fefc}',
9233    '\u{200b}',
9234    '\u{a0}',
9235    '\u{ad}',
9236    '\u{fe82}',
9237    '\u{a3}',
9238    '\u{a4}',
9239    '\u{fe84}',
9240    char::REPLACEMENT_CHARACTER,
9241    char::REPLACEMENT_CHARACTER,
9242    '\u{fe8e}',
9243    '\u{fe8f}',
9244    '\u{fe95}',
9245    '\u{fe99}',
9246    '\u{60c}',
9247    '\u{fe9d}',
9248    '\u{fea1}',
9249    '\u{fea5}',
9250    '\u{660}',
9251    '\u{661}',
9252    '\u{662}',
9253    '\u{663}',
9254    '\u{664}',
9255    '\u{665}',
9256    '\u{666}',
9257    '\u{667}',
9258    '\u{668}',
9259    '\u{669}',
9260    '\u{fed1}',
9261    '\u{61b}',
9262    '\u{feb1}',
9263    '\u{feb5}',
9264    '\u{feb9}',
9265    '\u{61f}',
9266    '\u{a2}',
9267    '\u{fe80}',
9268    '\u{fe81}',
9269    '\u{fe83}',
9270    '\u{fe85}',
9271    '\u{feca}',
9272    '\u{fe8b}',
9273    '\u{fe8d}',
9274    '\u{fe91}',
9275    '\u{fe93}',
9276    '\u{fe97}',
9277    '\u{fe9b}',
9278    '\u{fe9f}',
9279    '\u{fea3}',
9280    '\u{fea7}',
9281    '\u{fea9}',
9282    '\u{feab}',
9283    '\u{fead}',
9284    '\u{feaf}',
9285    '\u{feb3}',
9286    '\u{feb7}',
9287    '\u{febb}',
9288    '\u{febf}',
9289    '\u{fec3}',
9290    '\u{fec7}',
9291    '\u{fecb}',
9292    '\u{fecf}',
9293    '\u{a6}',
9294    '\u{ac}',
9295    '\u{f7}',
9296    '\u{d7}',
9297    '\u{fec9}',
9298    '\u{640}',
9299    '\u{fed3}',
9300    '\u{fed7}',
9301    '\u{fedb}',
9302    '\u{fedf}',
9303    '\u{fee3}',
9304    '\u{fee7}',
9305    '\u{feeb}',
9306    '\u{feed}',
9307    '\u{feef}',
9308    '\u{fef3}',
9309    '\u{febd}',
9310    '\u{fecc}',
9311    '\u{fece}',
9312    '\u{fecd}',
9313    '\u{fee1}',
9314    '\u{fe7d}',
9315    '\u{fe7c}',
9316    '\u{fee5}',
9317    '\u{fee9}',
9318    '\u{feec}',
9319    '\u{fef0}',
9320    '\u{fef2}',
9321    '\u{fed0}',
9322    '\u{fed5}',
9323    '\u{fef5}',
9324    '\u{fef6}',
9325    '\u{fedd}',
9326    '\u{fed9}',
9327    '\u{fef1}',
9328    '\u{25a0}',
9329    char::REPLACEMENT_CHARACTER,
9330];
9331const IBM_864_ENCODE_TABLE: &[(u16, u8)] = &[
9332    (0, 0),
9333    (1, 1),
9334    (2, 2),
9335    (3, 3),
9336    (4, 4),
9337    (5, 5),
9338    (6, 6),
9339    (7, 7),
9340    (8, 8),
9341    (9, 9),
9342    (10, 10),
9343    (11, 11),
9344    (12, 12),
9345    (13, 13),
9346    (14, 14),
9347    (15, 15),
9348    (16, 16),
9349    (17, 17),
9350    (18, 18),
9351    (19, 19),
9352    (20, 20),
9353    (21, 21),
9354    (22, 22),
9355    (23, 23),
9356    (24, 24),
9357    (25, 25),
9358    (26, 127),
9359    (27, 27),
9360    (28, 26),
9361    (29, 29),
9362    (30, 30),
9363    (31, 31),
9364    (32, 32),
9365    (33, 33),
9366    (34, 34),
9367    (35, 35),
9368    (36, 36),
9369    (37, 37),
9370    (38, 38),
9371    (39, 39),
9372    (40, 40),
9373    (41, 41),
9374    (42, 42),
9375    (43, 43),
9376    (44, 44),
9377    (45, 45),
9378    (46, 46),
9379    (47, 47),
9380    (48, 48),
9381    (49, 49),
9382    (50, 50),
9383    (51, 51),
9384    (52, 52),
9385    (53, 53),
9386    (54, 54),
9387    (55, 55),
9388    (56, 56),
9389    (57, 57),
9390    (58, 58),
9391    (59, 59),
9392    (60, 60),
9393    (61, 61),
9394    (62, 62),
9395    (63, 63),
9396    (64, 64),
9397    (65, 65),
9398    (66, 66),
9399    (67, 67),
9400    (68, 68),
9401    (69, 69),
9402    (70, 70),
9403    (71, 71),
9404    (72, 72),
9405    (73, 73),
9406    (74, 74),
9407    (75, 75),
9408    (76, 76),
9409    (77, 77),
9410    (78, 78),
9411    (79, 79),
9412    (80, 80),
9413    (81, 81),
9414    (82, 82),
9415    (83, 83),
9416    (84, 84),
9417    (85, 85),
9418    (86, 86),
9419    (87, 87),
9420    (88, 88),
9421    (89, 89),
9422    (90, 90),
9423    (91, 91),
9424    (92, 92),
9425    (93, 93),
9426    (94, 94),
9427    (95, 95),
9428    (96, 96),
9429    (97, 97),
9430    (98, 98),
9431    (99, 99),
9432    (100, 100),
9433    (101, 101),
9434    (102, 102),
9435    (103, 103),
9436    (104, 104),
9437    (105, 105),
9438    (106, 106),
9439    (107, 107),
9440    (108, 108),
9441    (109, 109),
9442    (110, 110),
9443    (111, 111),
9444    (112, 112),
9445    (113, 113),
9446    (114, 114),
9447    (115, 115),
9448    (116, 116),
9449    (117, 117),
9450    (118, 118),
9451    (119, 119),
9452    (120, 120),
9453    (121, 121),
9454    (122, 122),
9455    (123, 123),
9456    (124, 124),
9457    (125, 125),
9458    (126, 126),
9459    (127, 28),
9460    (160, 160),
9461    (162, 192),
9462    (163, 163),
9463    (164, 164),
9464    (166, 219),
9465    (171, 151),
9466    (172, 220),
9467    (173, 161),
9468    (176, 128),
9469    (177, 147),
9470    (183, 129),
9471    (187, 152),
9472    (188, 149),
9473    (189, 148),
9474    (215, 222),
9475    (247, 221),
9476    (946, 144),
9477    (966, 146),
9478    (1548, 172),
9479    (1563, 187),
9480    (1567, 191),
9481    (1600, 224),
9482    (1632, 176),
9483    (1633, 177),
9484    (1634, 178),
9485    (1635, 179),
9486    (1636, 180),
9487    (1637, 181),
9488    (1638, 182),
9489    (1639, 183),
9490    (1640, 184),
9491    (1641, 185),
9492    (8203, 159),
9493    (8729, 130),
9494    (8730, 131),
9495    (8734, 145),
9496    (8776, 150),
9497    (9472, 133),
9498    (9474, 134),
9499    (9484, 141),
9500    (9488, 140),
9501    (9492, 142),
9502    (9496, 143),
9503    (9500, 138),
9504    (9508, 136),
9505    (9516, 137),
9506    (9524, 139),
9507    (9532, 135),
9508    (9618, 132),
9509    (9632, 254),
9510    (65148, 241),
9511    (65149, 240),
9512    (65152, 193),
9513    (65153, 194),
9514    (65154, 162),
9515    (65155, 195),
9516    (65156, 165),
9517    (65157, 196),
9518    (65163, 198),
9519    (65165, 199),
9520    (65166, 168),
9521    (65167, 169),
9522    (65169, 200),
9523    (65171, 201),
9524    (65173, 170),
9525    (65175, 202),
9526    (65177, 171),
9527    (65179, 203),
9528    (65181, 173),
9529    (65183, 204),
9530    (65185, 174),
9531    (65187, 205),
9532    (65189, 175),
9533    (65191, 206),
9534    (65193, 207),
9535    (65195, 208),
9536    (65197, 209),
9537    (65199, 210),
9538    (65201, 188),
9539    (65203, 211),
9540    (65205, 189),
9541    (65207, 212),
9542    (65209, 190),
9543    (65211, 213),
9544    (65213, 235),
9545    (65215, 214),
9546    (65219, 215),
9547    (65223, 216),
9548    (65225, 223),
9549    (65226, 197),
9550    (65227, 217),
9551    (65228, 236),
9552    (65229, 238),
9553    (65230, 237),
9554    (65231, 218),
9555    (65232, 247),
9556    (65233, 186),
9557    (65235, 225),
9558    (65237, 248),
9559    (65239, 226),
9560    (65241, 252),
9561    (65243, 227),
9562    (65245, 251),
9563    (65247, 228),
9564    (65249, 239),
9565    (65251, 229),
9566    (65253, 242),
9567    (65255, 230),
9568    (65257, 243),
9569    (65259, 231),
9570    (65260, 244),
9571    (65261, 232),
9572    (65263, 233),
9573    (65264, 245),
9574    (65265, 253),
9575    (65266, 246),
9576    (65267, 234),
9577    (65269, 249),
9578    (65270, 250),
9579    (65271, 153),
9580    (65272, 154),
9581    (65275, 157),
9582    (65276, 158),
9583];
9584
9585impl_ebcdic_encoder_and_decoder!(
9586    IBM865,
9587    "IBM865",
9588    IBM865Encoder,
9589    IBM865Decoder,
9590    IBM_865_ENCODE_TABLE,
9591    IBM_865_DECODE_TABLE
9592);
9593const IBM_865_DECODE_TABLE: [char; 256] = [
9594    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
9595    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
9596    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
9597    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
9598    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
9599    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
9600    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
9601    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
9602    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
9603    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
9604    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
9605    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
9606    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
9607    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
9608    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
9609    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
9610    '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
9611    '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
9612    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
9613    '\u{a1}', '\u{ab}', '\u{a4}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
9614    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
9615    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
9616    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
9617    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
9618    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
9619    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
9620    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
9621    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
9622    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
9623    '\u{b2}', '\u{25a0}', '\u{a0}',
9624];
9625const IBM_865_ENCODE_TABLE: &[(u16, u8)] = &[
9626    (0, 0),
9627    (1, 1),
9628    (2, 2),
9629    (3, 3),
9630    (4, 4),
9631    (5, 5),
9632    (6, 6),
9633    (7, 7),
9634    (8, 8),
9635    (9, 9),
9636    (10, 10),
9637    (11, 11),
9638    (12, 12),
9639    (13, 13),
9640    (14, 14),
9641    (15, 15),
9642    (16, 16),
9643    (17, 17),
9644    (18, 18),
9645    (19, 19),
9646    (20, 20),
9647    (21, 21),
9648    (22, 22),
9649    (23, 23),
9650    (24, 24),
9651    (25, 25),
9652    (26, 127),
9653    (27, 27),
9654    (28, 26),
9655    (29, 29),
9656    (30, 30),
9657    (31, 31),
9658    (32, 32),
9659    (33, 33),
9660    (34, 34),
9661    (35, 35),
9662    (36, 36),
9663    (37, 37),
9664    (38, 38),
9665    (39, 39),
9666    (40, 40),
9667    (41, 41),
9668    (42, 42),
9669    (43, 43),
9670    (44, 44),
9671    (45, 45),
9672    (46, 46),
9673    (47, 47),
9674    (48, 48),
9675    (49, 49),
9676    (50, 50),
9677    (51, 51),
9678    (52, 52),
9679    (53, 53),
9680    (54, 54),
9681    (55, 55),
9682    (56, 56),
9683    (57, 57),
9684    (58, 58),
9685    (59, 59),
9686    (60, 60),
9687    (61, 61),
9688    (62, 62),
9689    (63, 63),
9690    (64, 64),
9691    (65, 65),
9692    (66, 66),
9693    (67, 67),
9694    (68, 68),
9695    (69, 69),
9696    (70, 70),
9697    (71, 71),
9698    (72, 72),
9699    (73, 73),
9700    (74, 74),
9701    (75, 75),
9702    (76, 76),
9703    (77, 77),
9704    (78, 78),
9705    (79, 79),
9706    (80, 80),
9707    (81, 81),
9708    (82, 82),
9709    (83, 83),
9710    (84, 84),
9711    (85, 85),
9712    (86, 86),
9713    (87, 87),
9714    (88, 88),
9715    (89, 89),
9716    (90, 90),
9717    (91, 91),
9718    (92, 92),
9719    (93, 93),
9720    (94, 94),
9721    (95, 95),
9722    (96, 96),
9723    (97, 97),
9724    (98, 98),
9725    (99, 99),
9726    (100, 100),
9727    (101, 101),
9728    (102, 102),
9729    (103, 103),
9730    (104, 104),
9731    (105, 105),
9732    (106, 106),
9733    (107, 107),
9734    (108, 108),
9735    (109, 109),
9736    (110, 110),
9737    (111, 111),
9738    (112, 112),
9739    (113, 113),
9740    (114, 114),
9741    (115, 115),
9742    (116, 116),
9743    (117, 117),
9744    (118, 118),
9745    (119, 119),
9746    (120, 120),
9747    (121, 121),
9748    (122, 122),
9749    (123, 123),
9750    (124, 124),
9751    (125, 125),
9752    (126, 126),
9753    (127, 28),
9754    (160, 255),
9755    (161, 173),
9756    (163, 156),
9757    (164, 175),
9758    (170, 166),
9759    (171, 174),
9760    (172, 170),
9761    (176, 248),
9762    (177, 241),
9763    (178, 253),
9764    (183, 250),
9765    (186, 167),
9766    (188, 172),
9767    (189, 171),
9768    (191, 168),
9769    (196, 142),
9770    (197, 143),
9771    (198, 146),
9772    (199, 128),
9773    (201, 144),
9774    (209, 165),
9775    (214, 153),
9776    (216, 157),
9777    (220, 154),
9778    (223, 225),
9779    (224, 133),
9780    (225, 160),
9781    (226, 131),
9782    (228, 132),
9783    (229, 134),
9784    (230, 145),
9785    (231, 135),
9786    (232, 138),
9787    (233, 130),
9788    (234, 136),
9789    (235, 137),
9790    (236, 141),
9791    (237, 161),
9792    (238, 140),
9793    (239, 139),
9794    (241, 164),
9795    (242, 149),
9796    (243, 162),
9797    (244, 147),
9798    (246, 148),
9799    (247, 246),
9800    (248, 155),
9801    (249, 151),
9802    (250, 163),
9803    (251, 150),
9804    (252, 129),
9805    (255, 152),
9806    (402, 159),
9807    (915, 226),
9808    (920, 233),
9809    (931, 228),
9810    (934, 232),
9811    (937, 234),
9812    (945, 224),
9813    (948, 235),
9814    (949, 238),
9815    (956, 230),
9816    (960, 227),
9817    (963, 229),
9818    (964, 231),
9819    (966, 237),
9820    (8319, 252),
9821    (8359, 158),
9822    (8729, 249),
9823    (8730, 251),
9824    (8734, 236),
9825    (8745, 239),
9826    (8776, 247),
9827    (8801, 240),
9828    (8804, 243),
9829    (8805, 242),
9830    (8976, 169),
9831    (8992, 244),
9832    (8993, 245),
9833    (9472, 196),
9834    (9474, 179),
9835    (9484, 218),
9836    (9488, 191),
9837    (9492, 192),
9838    (9496, 217),
9839    (9500, 195),
9840    (9508, 180),
9841    (9516, 194),
9842    (9524, 193),
9843    (9532, 197),
9844    (9552, 205),
9845    (9553, 186),
9846    (9554, 213),
9847    (9555, 214),
9848    (9556, 201),
9849    (9557, 184),
9850    (9558, 183),
9851    (9559, 187),
9852    (9560, 212),
9853    (9561, 211),
9854    (9562, 200),
9855    (9563, 190),
9856    (9564, 189),
9857    (9565, 188),
9858    (9566, 198),
9859    (9567, 199),
9860    (9568, 204),
9861    (9569, 181),
9862    (9570, 182),
9863    (9571, 185),
9864    (9572, 209),
9865    (9573, 210),
9866    (9574, 203),
9867    (9575, 207),
9868    (9576, 208),
9869    (9577, 202),
9870    (9578, 216),
9871    (9579, 215),
9872    (9580, 206),
9873    (9600, 223),
9874    (9604, 220),
9875    (9608, 219),
9876    (9612, 221),
9877    (9616, 222),
9878    (9617, 176),
9879    (9618, 177),
9880    (9619, 178),
9881    (9632, 254),
9882];
9883
9884impl_ebcdic_encoder_and_decoder!(
9885    IBM868,
9886    "IBM868",
9887    IBM868Encoder,
9888    IBM868Decoder,
9889    IBM_868_ENCODE_TABLE,
9890    IBM_868_DECODE_TABLE
9891);
9892const IBM_868_DECODE_TABLE: [char; 256] = [
9893    '\u{0}',
9894    '\u{1}',
9895    '\u{2}',
9896    '\u{3}',
9897    '\u{4}',
9898    '\u{5}',
9899    '\u{6}',
9900    '\u{7}',
9901    '\u{8}',
9902    '\u{9}',
9903    '\u{a}',
9904    '\u{b}',
9905    '\u{c}',
9906    '\u{d}',
9907    '\u{e}',
9908    '\u{f}',
9909    '\u{10}',
9910    '\u{11}',
9911    '\u{12}',
9912    '\u{13}',
9913    '\u{14}',
9914    '\u{15}',
9915    '\u{16}',
9916    '\u{17}',
9917    '\u{18}',
9918    '\u{19}',
9919    '\u{1c}',
9920    '\u{1b}',
9921    '\u{7f}',
9922    '\u{1d}',
9923    '\u{1e}',
9924    '\u{1f}',
9925    '\u{20}',
9926    '\u{21}',
9927    '\u{22}',
9928    '\u{23}',
9929    '\u{24}',
9930    '\u{25}',
9931    '\u{26}',
9932    '\u{27}',
9933    '\u{28}',
9934    '\u{29}',
9935    '\u{2a}',
9936    '\u{2b}',
9937    '\u{2c}',
9938    '\u{2d}',
9939    '\u{2e}',
9940    '\u{2f}',
9941    '\u{30}',
9942    '\u{31}',
9943    '\u{32}',
9944    '\u{33}',
9945    '\u{34}',
9946    '\u{35}',
9947    '\u{36}',
9948    '\u{37}',
9949    '\u{38}',
9950    '\u{39}',
9951    '\u{3a}',
9952    '\u{3b}',
9953    '\u{3c}',
9954    '\u{3d}',
9955    '\u{3e}',
9956    '\u{3f}',
9957    '\u{40}',
9958    '\u{41}',
9959    '\u{42}',
9960    '\u{43}',
9961    '\u{44}',
9962    '\u{45}',
9963    '\u{46}',
9964    '\u{47}',
9965    '\u{48}',
9966    '\u{49}',
9967    '\u{4a}',
9968    '\u{4b}',
9969    '\u{4c}',
9970    '\u{4d}',
9971    '\u{4e}',
9972    '\u{4f}',
9973    '\u{50}',
9974    '\u{51}',
9975    '\u{52}',
9976    '\u{53}',
9977    '\u{54}',
9978    '\u{55}',
9979    '\u{56}',
9980    '\u{57}',
9981    '\u{58}',
9982    '\u{59}',
9983    '\u{5a}',
9984    '\u{5b}',
9985    '\u{5c}',
9986    '\u{5d}',
9987    '\u{5e}',
9988    '\u{5f}',
9989    '\u{60}',
9990    '\u{61}',
9991    '\u{62}',
9992    '\u{63}',
9993    '\u{64}',
9994    '\u{65}',
9995    '\u{66}',
9996    '\u{67}',
9997    '\u{68}',
9998    '\u{69}',
9999    '\u{6a}',
10000    '\u{6b}',
10001    '\u{6c}',
10002    '\u{6d}',
10003    '\u{6e}',
10004    '\u{6f}',
10005    '\u{70}',
10006    '\u{71}',
10007    '\u{72}',
10008    '\u{73}',
10009    '\u{74}',
10010    '\u{75}',
10011    '\u{76}',
10012    '\u{77}',
10013    '\u{78}',
10014    '\u{79}',
10015    '\u{7a}',
10016    '\u{7b}',
10017    '\u{7c}',
10018    '\u{7d}',
10019    '\u{7e}',
10020    '\u{1a}',
10021    '\u{6f0}',
10022    '\u{6f1}',
10023    '\u{6f2}',
10024    '\u{6f3}',
10025    '\u{6f4}',
10026    '\u{6f5}',
10027    '\u{6f6}',
10028    '\u{6f7}',
10029    '\u{6f8}',
10030    '\u{6f9}',
10031    '\u{60c}',
10032    '\u{61b}',
10033    '\u{61f}',
10034    '\u{fe81}',
10035    '\u{fe8d}',
10036    '\u{fe8e}',
10037    '\u{f8fb}',
10038    '\u{fe8f}',
10039    '\u{fe91}',
10040    '\u{fb56}',
10041    '\u{fb58}',
10042    '\u{fe93}',
10043    '\u{fe95}',
10044    '\u{fe97}',
10045    '\u{fb66}',
10046    '\u{fb68}',
10047    '\u{fe99}',
10048    '\u{fe9b}',
10049    '\u{fe9d}',
10050    '\u{fe9f}',
10051    '\u{fb7a}',
10052    '\u{fb7c}',
10053    '\u{fea1}',
10054    '\u{fea3}',
10055    '\u{fea5}',
10056    '\u{fea7}',
10057    '\u{fea9}',
10058    '\u{fb88}',
10059    '\u{feab}',
10060    '\u{fead}',
10061    '\u{fb8c}',
10062    '\u{feaf}',
10063    '\u{fb8a}',
10064    '\u{feb1}',
10065    '\u{feb3}',
10066    '\u{feb5}',
10067    '\u{ab}',
10068    '\u{bb}',
10069    '\u{2591}',
10070    '\u{2592}',
10071    '\u{2593}',
10072    '\u{2502}',
10073    '\u{2524}',
10074    '\u{feb7}',
10075    '\u{feb9}',
10076    '\u{febb}',
10077    '\u{febd}',
10078    '\u{2563}',
10079    '\u{2551}',
10080    '\u{2557}',
10081    '\u{255d}',
10082    '\u{febf}',
10083    '\u{fec3}',
10084    '\u{2510}',
10085    '\u{2514}',
10086    '\u{2534}',
10087    '\u{252c}',
10088    '\u{251c}',
10089    '\u{2500}',
10090    '\u{253c}',
10091    '\u{fec7}',
10092    '\u{fec9}',
10093    '\u{255a}',
10094    '\u{2554}',
10095    '\u{2569}',
10096    '\u{2566}',
10097    '\u{2560}',
10098    '\u{2550}',
10099    '\u{256c}',
10100    '\u{feca}',
10101    '\u{fecb}',
10102    '\u{fecc}',
10103    '\u{fecd}',
10104    '\u{fece}',
10105    '\u{fecf}',
10106    '\u{fed0}',
10107    '\u{fed1}',
10108    '\u{fed3}',
10109    '\u{fed5}',
10110    '\u{2518}',
10111    '\u{250c}',
10112    '\u{2588}',
10113    '\u{2584}',
10114    '\u{fed7}',
10115    '\u{fb8e}',
10116    '\u{2580}',
10117    '\u{fedb}',
10118    '\u{fb92}',
10119    '\u{fb94}',
10120    '\u{fedd}',
10121    '\u{fedf}',
10122    '\u{fee0}',
10123    '\u{fee1}',
10124    '\u{fee3}',
10125    '\u{fb9e}',
10126    '\u{fee5}',
10127    '\u{fee7}',
10128    '\u{fe85}',
10129    '\u{feed}',
10130    '\u{fba6}',
10131    '\u{fba8}',
10132    '\u{fba9}',
10133    '\u{ad}',
10134    '\u{fbaa}',
10135    '\u{fe80}',
10136    '\u{fe89}',
10137    '\u{fe8a}',
10138    '\u{fe8b}',
10139    '\u{fbfc}',
10140    '\u{fbfd}',
10141    '\u{fbfe}',
10142    '\u{fbb0}',
10143    '\u{fbae}',
10144    '\u{fe7c}',
10145    '\u{fe7d}',
10146    char::REPLACEMENT_CHARACTER,
10147    '\u{25a0}',
10148    '\u{a0}',
10149];
10150const IBM_868_ENCODE_TABLE: &[(u16, u8)] = &[
10151    (0, 0),
10152    (1, 1),
10153    (2, 2),
10154    (3, 3),
10155    (4, 4),
10156    (5, 5),
10157    (6, 6),
10158    (7, 7),
10159    (8, 8),
10160    (9, 9),
10161    (10, 10),
10162    (11, 11),
10163    (12, 12),
10164    (13, 13),
10165    (14, 14),
10166    (15, 15),
10167    (16, 16),
10168    (17, 17),
10169    (18, 18),
10170    (19, 19),
10171    (20, 20),
10172    (21, 21),
10173    (22, 22),
10174    (23, 23),
10175    (24, 24),
10176    (25, 25),
10177    (26, 127),
10178    (27, 27),
10179    (28, 26),
10180    (29, 29),
10181    (30, 30),
10182    (31, 31),
10183    (32, 32),
10184    (33, 33),
10185    (34, 34),
10186    (35, 35),
10187    (36, 36),
10188    (37, 37),
10189    (38, 38),
10190    (39, 39),
10191    (40, 40),
10192    (41, 41),
10193    (42, 42),
10194    (43, 43),
10195    (44, 44),
10196    (45, 45),
10197    (46, 46),
10198    (47, 47),
10199    (48, 48),
10200    (49, 49),
10201    (50, 50),
10202    (51, 51),
10203    (52, 52),
10204    (53, 53),
10205    (54, 54),
10206    (55, 55),
10207    (56, 56),
10208    (57, 57),
10209    (58, 58),
10210    (59, 59),
10211    (60, 60),
10212    (61, 61),
10213    (62, 62),
10214    (63, 63),
10215    (64, 64),
10216    (65, 65),
10217    (66, 66),
10218    (67, 67),
10219    (68, 68),
10220    (69, 69),
10221    (70, 70),
10222    (71, 71),
10223    (72, 72),
10224    (73, 73),
10225    (74, 74),
10226    (75, 75),
10227    (76, 76),
10228    (77, 77),
10229    (78, 78),
10230    (79, 79),
10231    (80, 80),
10232    (81, 81),
10233    (82, 82),
10234    (83, 83),
10235    (84, 84),
10236    (85, 85),
10237    (86, 86),
10238    (87, 87),
10239    (88, 88),
10240    (89, 89),
10241    (90, 90),
10242    (91, 91),
10243    (92, 92),
10244    (93, 93),
10245    (94, 94),
10246    (95, 95),
10247    (96, 96),
10248    (97, 97),
10249    (98, 98),
10250    (99, 99),
10251    (100, 100),
10252    (101, 101),
10253    (102, 102),
10254    (103, 103),
10255    (104, 104),
10256    (105, 105),
10257    (106, 106),
10258    (107, 107),
10259    (108, 108),
10260    (109, 109),
10261    (110, 110),
10262    (111, 111),
10263    (112, 112),
10264    (113, 113),
10265    (114, 114),
10266    (115, 115),
10267    (116, 116),
10268    (117, 117),
10269    (118, 118),
10270    (119, 119),
10271    (120, 120),
10272    (121, 121),
10273    (122, 122),
10274    (123, 123),
10275    (124, 124),
10276    (125, 125),
10277    (126, 126),
10278    (127, 28),
10279    (160, 255),
10280    (171, 174),
10281    (173, 240),
10282    (187, 175),
10283    (1548, 138),
10284    (1563, 139),
10285    (1567, 140),
10286    (1776, 128),
10287    (1777, 129),
10288    (1778, 130),
10289    (1779, 131),
10290    (1780, 132),
10291    (1781, 133),
10292    (1782, 134),
10293    (1783, 135),
10294    (1784, 136),
10295    (1785, 137),
10296    (9472, 196),
10297    (9474, 179),
10298    (9484, 218),
10299    (9488, 191),
10300    (9492, 192),
10301    (9496, 217),
10302    (9500, 195),
10303    (9508, 180),
10304    (9516, 194),
10305    (9524, 193),
10306    (9532, 197),
10307    (9552, 205),
10308    (9553, 186),
10309    (9556, 201),
10310    (9559, 187),
10311    (9562, 200),
10312    (9565, 188),
10313    (9568, 204),
10314    (9571, 185),
10315    (9574, 203),
10316    (9577, 202),
10317    (9580, 206),
10318    (9600, 223),
10319    (9604, 220),
10320    (9608, 219),
10321    (9617, 176),
10322    (9618, 177),
10323    (9619, 178),
10324    (9632, 254),
10325    (63739, 144),
10326    (64342, 147),
10327    (64344, 148),
10328    (64358, 152),
10329    (64360, 153),
10330    (64378, 158),
10331    (64380, 159),
10332    (64392, 165),
10333    (64394, 170),
10334    (64396, 168),
10335    (64398, 222),
10336    (64402, 225),
10337    (64404, 226),
10338    (64414, 232),
10339    (64422, 237),
10340    (64424, 238),
10341    (64425, 239),
10342    (64426, 241),
10343    (64430, 250),
10344    (64432, 249),
10345    (64508, 246),
10346    (64509, 247),
10347    (64510, 248),
10348    (65148, 251),
10349    (65149, 252),
10350    (65152, 242),
10351    (65153, 141),
10352    (65157, 235),
10353    (65161, 243),
10354    (65162, 244),
10355    (65163, 245),
10356    (65165, 142),
10357    (65166, 143),
10358    (65167, 145),
10359    (65169, 146),
10360    (65171, 149),
10361    (65173, 150),
10362    (65175, 151),
10363    (65177, 154),
10364    (65179, 155),
10365    (65181, 156),
10366    (65183, 157),
10367    (65185, 160),
10368    (65187, 161),
10369    (65189, 162),
10370    (65191, 163),
10371    (65193, 164),
10372    (65195, 166),
10373    (65197, 167),
10374    (65199, 169),
10375    (65201, 171),
10376    (65203, 172),
10377    (65205, 173),
10378    (65207, 181),
10379    (65209, 182),
10380    (65211, 183),
10381    (65213, 184),
10382    (65215, 189),
10383    (65219, 190),
10384    (65223, 198),
10385    (65225, 199),
10386    (65226, 207),
10387    (65227, 208),
10388    (65228, 209),
10389    (65229, 210),
10390    (65230, 211),
10391    (65231, 212),
10392    (65232, 213),
10393    (65233, 214),
10394    (65235, 215),
10395    (65237, 216),
10396    (65239, 221),
10397    (65243, 224),
10398    (65245, 227),
10399    (65247, 228),
10400    (65248, 229),
10401    (65249, 230),
10402    (65251, 231),
10403    (65253, 233),
10404    (65255, 234),
10405    (65261, 236),
10406];
10407
10408impl_ebcdic_encoder_and_decoder!(
10409    IBM869,
10410    "IBM869",
10411    IBM869Encoder,
10412    IBM869Decoder,
10413    IBM_869_ENCODE_TABLE,
10414    IBM_869_DECODE_TABLE
10415);
10416const IBM_869_DECODE_TABLE: [char; 256] = [
10417    '\u{0}',
10418    '\u{1}',
10419    '\u{2}',
10420    '\u{3}',
10421    '\u{4}',
10422    '\u{5}',
10423    '\u{6}',
10424    '\u{7}',
10425    '\u{8}',
10426    '\u{9}',
10427    '\u{a}',
10428    '\u{b}',
10429    '\u{c}',
10430    '\u{d}',
10431    '\u{e}',
10432    '\u{f}',
10433    '\u{10}',
10434    '\u{11}',
10435    '\u{12}',
10436    '\u{13}',
10437    '\u{14}',
10438    '\u{15}',
10439    '\u{16}',
10440    '\u{17}',
10441    '\u{18}',
10442    '\u{19}',
10443    '\u{1c}',
10444    '\u{1b}',
10445    '\u{7f}',
10446    '\u{1d}',
10447    '\u{1e}',
10448    '\u{1f}',
10449    '\u{20}',
10450    '\u{21}',
10451    '\u{22}',
10452    '\u{23}',
10453    '\u{24}',
10454    '\u{25}',
10455    '\u{26}',
10456    '\u{27}',
10457    '\u{28}',
10458    '\u{29}',
10459    '\u{2a}',
10460    '\u{2b}',
10461    '\u{2c}',
10462    '\u{2d}',
10463    '\u{2e}',
10464    '\u{2f}',
10465    '\u{30}',
10466    '\u{31}',
10467    '\u{32}',
10468    '\u{33}',
10469    '\u{34}',
10470    '\u{35}',
10471    '\u{36}',
10472    '\u{37}',
10473    '\u{38}',
10474    '\u{39}',
10475    '\u{3a}',
10476    '\u{3b}',
10477    '\u{3c}',
10478    '\u{3d}',
10479    '\u{3e}',
10480    '\u{3f}',
10481    '\u{40}',
10482    '\u{41}',
10483    '\u{42}',
10484    '\u{43}',
10485    '\u{44}',
10486    '\u{45}',
10487    '\u{46}',
10488    '\u{47}',
10489    '\u{48}',
10490    '\u{49}',
10491    '\u{4a}',
10492    '\u{4b}',
10493    '\u{4c}',
10494    '\u{4d}',
10495    '\u{4e}',
10496    '\u{4f}',
10497    '\u{50}',
10498    '\u{51}',
10499    '\u{52}',
10500    '\u{53}',
10501    '\u{54}',
10502    '\u{55}',
10503    '\u{56}',
10504    '\u{57}',
10505    '\u{58}',
10506    '\u{59}',
10507    '\u{5a}',
10508    '\u{5b}',
10509    '\u{5c}',
10510    '\u{5d}',
10511    '\u{5e}',
10512    '\u{5f}',
10513    '\u{60}',
10514    '\u{61}',
10515    '\u{62}',
10516    '\u{63}',
10517    '\u{64}',
10518    '\u{65}',
10519    '\u{66}',
10520    '\u{67}',
10521    '\u{68}',
10522    '\u{69}',
10523    '\u{6a}',
10524    '\u{6b}',
10525    '\u{6c}',
10526    '\u{6d}',
10527    '\u{6e}',
10528    '\u{6f}',
10529    '\u{70}',
10530    '\u{71}',
10531    '\u{72}',
10532    '\u{73}',
10533    '\u{74}',
10534    '\u{75}',
10535    '\u{76}',
10536    '\u{77}',
10537    '\u{78}',
10538    '\u{79}',
10539    '\u{7a}',
10540    '\u{7b}',
10541    '\u{7c}',
10542    '\u{7d}',
10543    '\u{7e}',
10544    '\u{1a}',
10545    char::REPLACEMENT_CHARACTER,
10546    char::REPLACEMENT_CHARACTER,
10547    char::REPLACEMENT_CHARACTER,
10548    char::REPLACEMENT_CHARACTER,
10549    char::REPLACEMENT_CHARACTER,
10550    char::REPLACEMENT_CHARACTER,
10551    '\u{386}',
10552    char::REPLACEMENT_CHARACTER,
10553    '\u{387}',
10554    '\u{ac}',
10555    '\u{a6}',
10556    '\u{2018}',
10557    '\u{2019}',
10558    '\u{388}',
10559    '\u{2015}',
10560    '\u{389}',
10561    '\u{38a}',
10562    '\u{3aa}',
10563    '\u{38c}',
10564    char::REPLACEMENT_CHARACTER,
10565    char::REPLACEMENT_CHARACTER,
10566    '\u{38e}',
10567    '\u{3ab}',
10568    '\u{a9}',
10569    '\u{38f}',
10570    '\u{b2}',
10571    '\u{b3}',
10572    '\u{3ac}',
10573    '\u{a3}',
10574    '\u{3ad}',
10575    '\u{3ae}',
10576    '\u{3af}',
10577    '\u{3ca}',
10578    '\u{390}',
10579    '\u{3cc}',
10580    '\u{3cd}',
10581    '\u{391}',
10582    '\u{392}',
10583    '\u{393}',
10584    '\u{394}',
10585    '\u{395}',
10586    '\u{396}',
10587    '\u{397}',
10588    '\u{bd}',
10589    '\u{398}',
10590    '\u{399}',
10591    '\u{ab}',
10592    '\u{bb}',
10593    '\u{2591}',
10594    '\u{2592}',
10595    '\u{2593}',
10596    '\u{2502}',
10597    '\u{2524}',
10598    '\u{39a}',
10599    '\u{39b}',
10600    '\u{39c}',
10601    '\u{39d}',
10602    '\u{2563}',
10603    '\u{2551}',
10604    '\u{2557}',
10605    '\u{255d}',
10606    '\u{39e}',
10607    '\u{39f}',
10608    '\u{2510}',
10609    '\u{2514}',
10610    '\u{2534}',
10611    '\u{252c}',
10612    '\u{251c}',
10613    '\u{2500}',
10614    '\u{253c}',
10615    '\u{3a0}',
10616    '\u{3a1}',
10617    '\u{255a}',
10618    '\u{2554}',
10619    '\u{2569}',
10620    '\u{2566}',
10621    '\u{2560}',
10622    '\u{2550}',
10623    '\u{256c}',
10624    '\u{3a3}',
10625    '\u{3a4}',
10626    '\u{3a5}',
10627    '\u{3a6}',
10628    '\u{3a7}',
10629    '\u{3a8}',
10630    '\u{3a9}',
10631    '\u{3b1}',
10632    '\u{3b2}',
10633    '\u{3b3}',
10634    '\u{2518}',
10635    '\u{250c}',
10636    '\u{2588}',
10637    '\u{2584}',
10638    '\u{3b4}',
10639    '\u{3b5}',
10640    '\u{2580}',
10641    '\u{3b6}',
10642    '\u{3b7}',
10643    '\u{3b8}',
10644    '\u{3b9}',
10645    '\u{3ba}',
10646    '\u{3bb}',
10647    '\u{3bc}',
10648    '\u{3bd}',
10649    '\u{3be}',
10650    '\u{3bf}',
10651    '\u{3c0}',
10652    '\u{3c1}',
10653    '\u{3c3}',
10654    '\u{3c2}',
10655    '\u{3c4}',
10656    '\u{b4}',
10657    '\u{ad}',
10658    '\u{b1}',
10659    '\u{3c5}',
10660    '\u{3c6}',
10661    '\u{3c7}',
10662    '\u{a7}',
10663    '\u{3c8}',
10664    '\u{385}',
10665    '\u{b0}',
10666    '\u{a8}',
10667    '\u{3c9}',
10668    '\u{3cb}',
10669    '\u{3b0}',
10670    '\u{3ce}',
10671    '\u{25a0}',
10672    '\u{a0}',
10673];
10674const IBM_869_ENCODE_TABLE: &[(u16, u8)] = &[
10675    (0, 0),
10676    (1, 1),
10677    (2, 2),
10678    (3, 3),
10679    (4, 4),
10680    (5, 5),
10681    (6, 6),
10682    (7, 7),
10683    (8, 8),
10684    (9, 9),
10685    (10, 10),
10686    (11, 11),
10687    (12, 12),
10688    (13, 13),
10689    (14, 14),
10690    (15, 15),
10691    (16, 16),
10692    (17, 17),
10693    (18, 18),
10694    (19, 19),
10695    (20, 20),
10696    (21, 21),
10697    (22, 22),
10698    (23, 23),
10699    (24, 24),
10700    (25, 25),
10701    (26, 127),
10702    (27, 27),
10703    (28, 26),
10704    (29, 29),
10705    (30, 30),
10706    (31, 31),
10707    (32, 32),
10708    (33, 33),
10709    (34, 34),
10710    (35, 35),
10711    (36, 36),
10712    (37, 37),
10713    (38, 38),
10714    (39, 39),
10715    (40, 40),
10716    (41, 41),
10717    (42, 42),
10718    (43, 43),
10719    (44, 44),
10720    (45, 45),
10721    (46, 46),
10722    (47, 47),
10723    (48, 48),
10724    (49, 49),
10725    (50, 50),
10726    (51, 51),
10727    (52, 52),
10728    (53, 53),
10729    (54, 54),
10730    (55, 55),
10731    (56, 56),
10732    (57, 57),
10733    (58, 58),
10734    (59, 59),
10735    (60, 60),
10736    (61, 61),
10737    (62, 62),
10738    (63, 63),
10739    (64, 64),
10740    (65, 65),
10741    (66, 66),
10742    (67, 67),
10743    (68, 68),
10744    (69, 69),
10745    (70, 70),
10746    (71, 71),
10747    (72, 72),
10748    (73, 73),
10749    (74, 74),
10750    (75, 75),
10751    (76, 76),
10752    (77, 77),
10753    (78, 78),
10754    (79, 79),
10755    (80, 80),
10756    (81, 81),
10757    (82, 82),
10758    (83, 83),
10759    (84, 84),
10760    (85, 85),
10761    (86, 86),
10762    (87, 87),
10763    (88, 88),
10764    (89, 89),
10765    (90, 90),
10766    (91, 91),
10767    (92, 92),
10768    (93, 93),
10769    (94, 94),
10770    (95, 95),
10771    (96, 96),
10772    (97, 97),
10773    (98, 98),
10774    (99, 99),
10775    (100, 100),
10776    (101, 101),
10777    (102, 102),
10778    (103, 103),
10779    (104, 104),
10780    (105, 105),
10781    (106, 106),
10782    (107, 107),
10783    (108, 108),
10784    (109, 109),
10785    (110, 110),
10786    (111, 111),
10787    (112, 112),
10788    (113, 113),
10789    (114, 114),
10790    (115, 115),
10791    (116, 116),
10792    (117, 117),
10793    (118, 118),
10794    (119, 119),
10795    (120, 120),
10796    (121, 121),
10797    (122, 122),
10798    (123, 123),
10799    (124, 124),
10800    (125, 125),
10801    (126, 126),
10802    (127, 28),
10803    (160, 255),
10804    (163, 156),
10805    (166, 138),
10806    (167, 245),
10807    (168, 249),
10808    (169, 151),
10809    (171, 174),
10810    (172, 137),
10811    (173, 240),
10812    (176, 248),
10813    (177, 241),
10814    (178, 153),
10815    (179, 154),
10816    (180, 239),
10817    (187, 175),
10818    (189, 171),
10819    (901, 247),
10820    (902, 134),
10821    (903, 136),
10822    (904, 141),
10823    (905, 143),
10824    (906, 144),
10825    (908, 146),
10826    (910, 149),
10827    (911, 152),
10828    (912, 161),
10829    (913, 164),
10830    (914, 165),
10831    (915, 166),
10832    (916, 167),
10833    (917, 168),
10834    (918, 169),
10835    (919, 170),
10836    (920, 172),
10837    (921, 173),
10838    (922, 181),
10839    (923, 182),
10840    (924, 183),
10841    (925, 184),
10842    (926, 189),
10843    (927, 190),
10844    (928, 198),
10845    (929, 199),
10846    (931, 207),
10847    (932, 208),
10848    (933, 209),
10849    (934, 210),
10850    (935, 211),
10851    (936, 212),
10852    (937, 213),
10853    (938, 145),
10854    (939, 150),
10855    (940, 155),
10856    (941, 157),
10857    (942, 158),
10858    (943, 159),
10859    (944, 252),
10860    (945, 214),
10861    (946, 215),
10862    (947, 216),
10863    (948, 221),
10864    (949, 222),
10865    (950, 224),
10866    (951, 225),
10867    (952, 226),
10868    (953, 227),
10869    (954, 228),
10870    (955, 229),
10871    (956, 230),
10872    (957, 231),
10873    (958, 232),
10874    (959, 233),
10875    (960, 234),
10876    (961, 235),
10877    (962, 237),
10878    (963, 236),
10879    (964, 238),
10880    (965, 242),
10881    (966, 243),
10882    (967, 244),
10883    (968, 246),
10884    (969, 250),
10885    (970, 160),
10886    (971, 251),
10887    (972, 162),
10888    (973, 163),
10889    (974, 253),
10890    (8213, 142),
10891    (8216, 139),
10892    (8217, 140),
10893    (9472, 196),
10894    (9474, 179),
10895    (9484, 218),
10896    (9488, 191),
10897    (9492, 192),
10898    (9496, 217),
10899    (9500, 195),
10900    (9508, 180),
10901    (9516, 194),
10902    (9524, 193),
10903    (9532, 197),
10904    (9552, 205),
10905    (9553, 186),
10906    (9556, 201),
10907    (9559, 187),
10908    (9562, 200),
10909    (9565, 188),
10910    (9568, 204),
10911    (9571, 185),
10912    (9574, 203),
10913    (9577, 202),
10914    (9580, 206),
10915    (9600, 223),
10916    (9604, 220),
10917    (9608, 219),
10918    (9617, 176),
10919    (9618, 177),
10920    (9619, 178),
10921    (9632, 254),
10922];
10923
10924impl_ebcdic_encoder_and_decoder!(
10925    IBM870,
10926    "IBM870",
10927    IBM870Encoder,
10928    IBM870Decoder,
10929    IBM_870_ENCODE_TABLE,
10930    IBM_870_DECODE_TABLE
10931);
10932const IBM_870_DECODE_TABLE: [char; 256] = [
10933    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
10934    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
10935    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
10936    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
10937    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
10938    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
10939    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
10940    '\u{a0}', '\u{e2}', '\u{e4}', '\u{163}', '\u{e1}', '\u{103}', '\u{10d}', '\u{e7}', '\u{107}',
10941    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{119}',
10942    '\u{eb}', '\u{16f}', '\u{ed}', '\u{ee}', '\u{13e}', '\u{13a}', '\u{df}', '\u{5d}', '\u{24}',
10943    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{2dd}',
10944    '\u{c1}', '\u{102}', '\u{10c}', '\u{c7}', '\u{106}', '\u{7c}', '\u{2c}', '\u{25}', '\u{5f}',
10945    '\u{3e}', '\u{3f}', '\u{2c7}', '\u{c9}', '\u{118}', '\u{cb}', '\u{16e}', '\u{cd}', '\u{ce}',
10946    '\u{13d}', '\u{139}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
10947    '\u{2d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
10948    '\u{69}', '\u{15b}', '\u{148}', '\u{111}', '\u{fd}', '\u{159}', '\u{15f}', '\u{b0}', '\u{6a}',
10949    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{142}',
10950    '\u{144}', '\u{161}', '\u{b8}', '\u{2db}', '\u{a4}', '\u{105}', '\u{7e}', '\u{73}', '\u{74}',
10951    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{15a}', '\u{147}', '\u{110}',
10952    '\u{dd}', '\u{158}', '\u{15e}', '\u{2d9}', '\u{104}', '\u{17c}', '\u{162}', '\u{17b}',
10953    '\u{a7}', '\u{17e}', '\u{17a}', '\u{17d}', '\u{179}', '\u{141}', '\u{143}', '\u{160}',
10954    '\u{a8}', '\u{b4}', '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}',
10955    '\u{46}', '\u{47}', '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{155}', '\u{f3}',
10956    '\u{151}', '\u{7d}', '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}',
10957    '\u{51}', '\u{52}', '\u{11a}', '\u{171}', '\u{fc}', '\u{165}', '\u{fa}', '\u{11b}', '\u{5c}',
10958    '\u{f7}', '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}',
10959    '\u{10f}', '\u{d4}', '\u{d6}', '\u{154}', '\u{d3}', '\u{150}', '\u{30}', '\u{31}', '\u{32}',
10960    '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{10e}', '\u{170}',
10961    '\u{dc}', '\u{164}', '\u{da}', '\u{9f}',
10962];
10963const IBM_870_ENCODE_TABLE: &[(u16, u8)] = &[
10964    (0, 0),
10965    (1, 1),
10966    (2, 2),
10967    (3, 3),
10968    (4, 55),
10969    (5, 45),
10970    (6, 46),
10971    (7, 47),
10972    (8, 22),
10973    (9, 5),
10974    (10, 37),
10975    (11, 11),
10976    (12, 12),
10977    (13, 13),
10978    (14, 14),
10979    (15, 15),
10980    (16, 16),
10981    (17, 17),
10982    (18, 18),
10983    (19, 19),
10984    (20, 60),
10985    (21, 61),
10986    (22, 50),
10987    (23, 38),
10988    (24, 24),
10989    (25, 25),
10990    (26, 63),
10991    (27, 39),
10992    (28, 28),
10993    (29, 29),
10994    (30, 30),
10995    (31, 31),
10996    (32, 64),
10997    (33, 79),
10998    (34, 127),
10999    (35, 123),
11000    (36, 91),
11001    (37, 108),
11002    (38, 80),
11003    (39, 125),
11004    (40, 77),
11005    (41, 93),
11006    (42, 92),
11007    (43, 78),
11008    (44, 107),
11009    (45, 96),
11010    (46, 75),
11011    (47, 97),
11012    (48, 240),
11013    (49, 241),
11014    (50, 242),
11015    (51, 243),
11016    (52, 244),
11017    (53, 245),
11018    (54, 246),
11019    (55, 247),
11020    (56, 248),
11021    (57, 249),
11022    (58, 122),
11023    (59, 94),
11024    (60, 76),
11025    (61, 126),
11026    (62, 110),
11027    (63, 111),
11028    (64, 124),
11029    (65, 193),
11030    (66, 194),
11031    (67, 195),
11032    (68, 196),
11033    (69, 197),
11034    (70, 198),
11035    (71, 199),
11036    (72, 200),
11037    (73, 201),
11038    (74, 209),
11039    (75, 210),
11040    (76, 211),
11041    (77, 212),
11042    (78, 213),
11043    (79, 214),
11044    (80, 215),
11045    (81, 216),
11046    (82, 217),
11047    (83, 226),
11048    (84, 227),
11049    (85, 228),
11050    (86, 229),
11051    (87, 230),
11052    (88, 231),
11053    (89, 232),
11054    (90, 233),
11055    (91, 74),
11056    (92, 224),
11057    (93, 90),
11058    (94, 95),
11059    (95, 109),
11060    (96, 121),
11061    (97, 129),
11062    (98, 130),
11063    (99, 131),
11064    (100, 132),
11065    (101, 133),
11066    (102, 134),
11067    (103, 135),
11068    (104, 136),
11069    (105, 137),
11070    (106, 145),
11071    (107, 146),
11072    (108, 147),
11073    (109, 148),
11074    (110, 149),
11075    (111, 150),
11076    (112, 151),
11077    (113, 152),
11078    (114, 153),
11079    (115, 162),
11080    (116, 163),
11081    (117, 164),
11082    (118, 165),
11083    (119, 166),
11084    (120, 167),
11085    (121, 168),
11086    (122, 169),
11087    (123, 192),
11088    (124, 106),
11089    (125, 208),
11090    (126, 161),
11091    (127, 7),
11092    (128, 32),
11093    (129, 33),
11094    (130, 34),
11095    (131, 35),
11096    (132, 36),
11097    (133, 21),
11098    (134, 6),
11099    (135, 23),
11100    (136, 40),
11101    (137, 41),
11102    (138, 42),
11103    (139, 43),
11104    (140, 44),
11105    (141, 9),
11106    (142, 10),
11107    (143, 27),
11108    (144, 48),
11109    (145, 49),
11110    (146, 26),
11111    (147, 51),
11112    (148, 52),
11113    (149, 53),
11114    (150, 54),
11115    (151, 8),
11116    (152, 56),
11117    (153, 57),
11118    (154, 58),
11119    (155, 59),
11120    (156, 4),
11121    (157, 20),
11122    (158, 62),
11123    (159, 255),
11124    (160, 65),
11125    (164, 159),
11126    (167, 181),
11127    (168, 189),
11128    (173, 202),
11129    (176, 144),
11130    (180, 190),
11131    (184, 157),
11132    (193, 101),
11133    (194, 98),
11134    (196, 99),
11135    (199, 104),
11136    (201, 113),
11137    (203, 115),
11138    (205, 117),
11139    (206, 118),
11140    (211, 238),
11141    (212, 235),
11142    (214, 236),
11143    (215, 191),
11144    (218, 254),
11145    (220, 252),
11146    (221, 173),
11147    (223, 89),
11148    (225, 69),
11149    (226, 66),
11150    (228, 67),
11151    (231, 72),
11152    (233, 81),
11153    (235, 83),
11154    (237, 85),
11155    (238, 86),
11156    (243, 206),
11157    (244, 203),
11158    (246, 204),
11159    (247, 225),
11160    (250, 222),
11161    (252, 220),
11162    (253, 141),
11163    (258, 102),
11164    (259, 70),
11165    (260, 177),
11166    (261, 160),
11167    (262, 105),
11168    (263, 73),
11169    (268, 103),
11170    (269, 71),
11171    (270, 250),
11172    (271, 234),
11173    (272, 172),
11174    (273, 140),
11175    (280, 114),
11176    (281, 82),
11177    (282, 218),
11178    (283, 223),
11179    (313, 120),
11180    (314, 88),
11181    (317, 119),
11182    (318, 87),
11183    (321, 186),
11184    (322, 154),
11185    (323, 187),
11186    (324, 155),
11187    (327, 171),
11188    (328, 139),
11189    (336, 239),
11190    (337, 207),
11191    (340, 237),
11192    (341, 205),
11193    (344, 174),
11194    (345, 142),
11195    (346, 170),
11196    (347, 138),
11197    (350, 175),
11198    (351, 143),
11199    (352, 188),
11200    (353, 156),
11201    (354, 179),
11202    (355, 68),
11203    (356, 253),
11204    (357, 221),
11205    (366, 116),
11206    (367, 84),
11207    (368, 251),
11208    (369, 219),
11209    (377, 185),
11210    (378, 183),
11211    (379, 180),
11212    (380, 178),
11213    (381, 184),
11214    (382, 182),
11215    (711, 112),
11216    (728, 128),
11217    (729, 176),
11218    (731, 158),
11219    (733, 100),
11220];
11221
11222impl_ebcdic_encoder_and_decoder!(
11223    IBM871,
11224    "IBM871",
11225    IBM871Encoder,
11226    IBM871Decoder,
11227    IBM_871_ENCODE_TABLE,
11228    IBM_871_DECODE_TABLE
11229);
11230const IBM_871_DECODE_TABLE: [char; 256] = [
11231    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11232    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11233    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11234    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11235    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11236    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11237    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11238    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
11239    '\u{de}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
11240    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{c6}', '\u{24}',
11241    '\u{2a}', '\u{29}', '\u{3b}', '\u{d6}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
11242    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
11243    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
11244    '\u{cf}', '\u{cc}', '\u{f0}', '\u{3a}', '\u{23}', '\u{d0}', '\u{27}', '\u{3d}', '\u{22}',
11245    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
11246    '\u{69}', '\u{ab}', '\u{bb}', '\u{60}', '\u{fd}', '\u{7b}', '\u{b1}', '\u{b0}', '\u{6a}',
11247    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
11248    '\u{ba}', '\u{7d}', '\u{b8}', '\u{5d}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
11249    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{40}',
11250    '\u{dd}', '\u{5b}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
11251    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{5c}',
11252    '\u{d7}', '\u{fe}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
11253    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e6}',
11254    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
11255    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{b4}', '\u{f7}', '\u{53}',
11256    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
11257    '\u{5e}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
11258    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
11259    '\u{da}', '\u{9f}',
11260];
11261const IBM_871_ENCODE_TABLE: &[(u16, u8)] = &[
11262    (0, 0),
11263    (1, 1),
11264    (2, 2),
11265    (3, 3),
11266    (4, 55),
11267    (5, 45),
11268    (6, 46),
11269    (7, 47),
11270    (8, 22),
11271    (9, 5),
11272    (10, 37),
11273    (11, 11),
11274    (12, 12),
11275    (13, 13),
11276    (14, 14),
11277    (15, 15),
11278    (16, 16),
11279    (17, 17),
11280    (18, 18),
11281    (19, 19),
11282    (20, 60),
11283    (21, 61),
11284    (22, 50),
11285    (23, 38),
11286    (24, 24),
11287    (25, 25),
11288    (26, 63),
11289    (27, 39),
11290    (28, 28),
11291    (29, 29),
11292    (30, 30),
11293    (31, 31),
11294    (32, 64),
11295    (33, 79),
11296    (34, 127),
11297    (35, 123),
11298    (36, 91),
11299    (37, 108),
11300    (38, 80),
11301    (39, 125),
11302    (40, 77),
11303    (41, 93),
11304    (42, 92),
11305    (43, 78),
11306    (44, 107),
11307    (45, 96),
11308    (46, 75),
11309    (47, 97),
11310    (48, 240),
11311    (49, 241),
11312    (50, 242),
11313    (51, 243),
11314    (52, 244),
11315    (53, 245),
11316    (54, 246),
11317    (55, 247),
11318    (56, 248),
11319    (57, 249),
11320    (58, 122),
11321    (59, 94),
11322    (60, 76),
11323    (61, 126),
11324    (62, 110),
11325    (63, 111),
11326    (64, 172),
11327    (65, 193),
11328    (66, 194),
11329    (67, 195),
11330    (68, 196),
11331    (69, 197),
11332    (70, 198),
11333    (71, 199),
11334    (72, 200),
11335    (73, 201),
11336    (74, 209),
11337    (75, 210),
11338    (76, 211),
11339    (77, 212),
11340    (78, 213),
11341    (79, 214),
11342    (80, 215),
11343    (81, 216),
11344    (82, 217),
11345    (83, 226),
11346    (84, 227),
11347    (85, 228),
11348    (86, 229),
11349    (87, 230),
11350    (88, 231),
11351    (89, 232),
11352    (90, 233),
11353    (91, 174),
11354    (92, 190),
11355    (93, 158),
11356    (94, 236),
11357    (95, 109),
11358    (96, 140),
11359    (97, 129),
11360    (98, 130),
11361    (99, 131),
11362    (100, 132),
11363    (101, 133),
11364    (102, 134),
11365    (103, 135),
11366    (104, 136),
11367    (105, 137),
11368    (106, 145),
11369    (107, 146),
11370    (108, 147),
11371    (109, 148),
11372    (110, 149),
11373    (111, 150),
11374    (112, 151),
11375    (113, 152),
11376    (114, 153),
11377    (115, 162),
11378    (116, 163),
11379    (117, 164),
11380    (118, 165),
11381    (119, 166),
11382    (120, 167),
11383    (121, 168),
11384    (122, 169),
11385    (123, 142),
11386    (124, 187),
11387    (125, 156),
11388    (126, 204),
11389    (127, 7),
11390    (128, 32),
11391    (129, 33),
11392    (130, 34),
11393    (131, 35),
11394    (132, 36),
11395    (133, 21),
11396    (134, 6),
11397    (135, 23),
11398    (136, 40),
11399    (137, 41),
11400    (138, 42),
11401    (139, 43),
11402    (140, 44),
11403    (141, 9),
11404    (142, 10),
11405    (143, 27),
11406    (144, 48),
11407    (145, 49),
11408    (146, 26),
11409    (147, 51),
11410    (148, 52),
11411    (149, 53),
11412    (150, 54),
11413    (151, 8),
11414    (152, 56),
11415    (153, 57),
11416    (154, 58),
11417    (155, 59),
11418    (156, 4),
11419    (157, 20),
11420    (158, 62),
11421    (159, 255),
11422    (160, 65),
11423    (161, 170),
11424    (162, 176),
11425    (163, 177),
11426    (164, 159),
11427    (165, 178),
11428    (166, 106),
11429    (167, 181),
11430    (168, 189),
11431    (169, 180),
11432    (170, 154),
11433    (171, 138),
11434    (172, 186),
11435    (173, 202),
11436    (174, 175),
11437    (175, 188),
11438    (176, 144),
11439    (177, 143),
11440    (178, 234),
11441    (179, 250),
11442    (180, 224),
11443    (181, 160),
11444    (182, 182),
11445    (183, 179),
11446    (184, 157),
11447    (185, 218),
11448    (186, 155),
11449    (187, 139),
11450    (188, 183),
11451    (189, 184),
11452    (190, 185),
11453    (191, 171),
11454    (192, 100),
11455    (193, 101),
11456    (194, 98),
11457    (195, 102),
11458    (196, 99),
11459    (197, 103),
11460    (198, 90),
11461    (199, 104),
11462    (200, 116),
11463    (201, 113),
11464    (202, 114),
11465    (203, 115),
11466    (204, 120),
11467    (205, 117),
11468    (206, 118),
11469    (207, 119),
11470    (208, 124),
11471    (209, 105),
11472    (210, 237),
11473    (211, 238),
11474    (212, 235),
11475    (213, 239),
11476    (214, 95),
11477    (215, 191),
11478    (216, 128),
11479    (217, 253),
11480    (218, 254),
11481    (219, 251),
11482    (220, 252),
11483    (221, 173),
11484    (222, 74),
11485    (223, 89),
11486    (224, 68),
11487    (225, 69),
11488    (226, 66),
11489    (227, 70),
11490    (228, 67),
11491    (229, 71),
11492    (230, 208),
11493    (231, 72),
11494    (232, 84),
11495    (233, 81),
11496    (234, 82),
11497    (235, 83),
11498    (236, 88),
11499    (237, 85),
11500    (238, 86),
11501    (239, 87),
11502    (240, 121),
11503    (241, 73),
11504    (242, 205),
11505    (243, 206),
11506    (244, 203),
11507    (245, 207),
11508    (246, 161),
11509    (247, 225),
11510    (248, 112),
11511    (249, 221),
11512    (250, 222),
11513    (251, 219),
11514    (252, 220),
11515    (253, 141),
11516    (254, 192),
11517    (255, 223),
11518];
11519
11520impl_ebcdic_encoder_and_decoder!(
11521    IBM880,
11522    "IBM880",
11523    IBM880Encoder,
11524    IBM880Decoder,
11525    IBM_880_ENCODE_TABLE,
11526    IBM_880_DECODE_TABLE
11527);
11528const IBM_880_DECODE_TABLE: [char; 256] = [
11529    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11530    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11531    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11532    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11533    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11534    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11535    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11536    '\u{a0}', '\u{452}', '\u{453}', '\u{451}', '\u{454}', '\u{455}', '\u{456}', '\u{457}',
11537    '\u{458}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{459}',
11538    '\u{45a}', '\u{45b}', '\u{45c}', '\u{45e}', '\u{45f}', '\u{42a}', '\u{2116}', '\u{402}',
11539    '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{403}',
11540    '\u{401}', '\u{404}', '\u{405}', '\u{406}', '\u{407}', '\u{408}', '\u{409}', '\u{7c}',
11541    '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{40a}', '\u{40b}', '\u{40c}', '\u{ad}',
11542    '\u{40e}', '\u{40f}', '\u{44e}', '\u{430}', '\u{431}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}',
11543    '\u{27}', '\u{3d}', '\u{22}', '\u{446}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
11544    '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{434}', '\u{435}', '\u{444}', '\u{433}', '\u{445}',
11545    '\u{438}', '\u{439}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}',
11546    '\u{71}', '\u{72}', '\u{43a}', '\u{43b}', '\u{43c}', '\u{43d}', '\u{43e}', '\u{43f}',
11547    '\u{44f}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}',
11548    '\u{7a}', '\u{440}', '\u{441}', '\u{442}', '\u{443}', '\u{436}', '\u{432}', '\u{44c}',
11549    '\u{44b}', '\u{437}', '\u{448}', '\u{44d}', '\u{449}', '\u{447}', '\u{44a}', '\u{42e}',
11550    '\u{410}', '\u{411}', '\u{426}', '\u{414}', '\u{415}', '\u{424}', '\u{413}', '\u{7b}',
11551    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
11552    '\u{425}', '\u{418}', '\u{419}', '\u{41a}', '\u{41b}', '\u{41c}', '\u{7d}', '\u{4a}', '\u{4b}',
11553    '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}', '\u{41d}', '\u{41e}',
11554    '\u{41f}', '\u{42f}', '\u{420}', '\u{421}', '\u{5c}', '\u{a4}', '\u{53}', '\u{54}', '\u{55}',
11555    '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{422}', '\u{423}', '\u{416}', '\u{412}',
11556    '\u{42c}', '\u{42b}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}',
11557    '\u{37}', '\u{38}', '\u{39}', '\u{417}', '\u{428}', '\u{42d}', '\u{429}', '\u{427}', '\u{9f}',
11558];
11559const IBM_880_ENCODE_TABLE: &[(u16, u8)] = &[
11560    (0, 0),
11561    (1, 1),
11562    (2, 2),
11563    (3, 3),
11564    (4, 55),
11565    (5, 45),
11566    (6, 46),
11567    (7, 47),
11568    (8, 22),
11569    (9, 5),
11570    (10, 37),
11571    (11, 11),
11572    (12, 12),
11573    (13, 13),
11574    (14, 14),
11575    (15, 15),
11576    (16, 16),
11577    (17, 17),
11578    (18, 18),
11579    (19, 19),
11580    (20, 60),
11581    (21, 61),
11582    (22, 50),
11583    (23, 38),
11584    (24, 24),
11585    (25, 25),
11586    (26, 63),
11587    (27, 39),
11588    (28, 28),
11589    (29, 29),
11590    (30, 30),
11591    (31, 31),
11592    (32, 64),
11593    (33, 79),
11594    (34, 127),
11595    (35, 123),
11596    (36, 91),
11597    (37, 108),
11598    (38, 80),
11599    (39, 125),
11600    (40, 77),
11601    (41, 93),
11602    (42, 92),
11603    (43, 78),
11604    (44, 107),
11605    (45, 96),
11606    (46, 75),
11607    (47, 97),
11608    (48, 240),
11609    (49, 241),
11610    (50, 242),
11611    (51, 243),
11612    (52, 244),
11613    (53, 245),
11614    (54, 246),
11615    (55, 247),
11616    (56, 248),
11617    (57, 249),
11618    (58, 122),
11619    (59, 94),
11620    (60, 76),
11621    (61, 126),
11622    (62, 110),
11623    (63, 111),
11624    (64, 124),
11625    (65, 193),
11626    (66, 194),
11627    (67, 195),
11628    (68, 196),
11629    (69, 197),
11630    (70, 198),
11631    (71, 199),
11632    (72, 200),
11633    (73, 201),
11634    (74, 209),
11635    (75, 210),
11636    (76, 211),
11637    (77, 212),
11638    (78, 213),
11639    (79, 214),
11640    (80, 215),
11641    (81, 216),
11642    (82, 217),
11643    (83, 226),
11644    (84, 227),
11645    (85, 228),
11646    (86, 229),
11647    (87, 230),
11648    (88, 231),
11649    (89, 232),
11650    (90, 233),
11651    (91, 74),
11652    (92, 224),
11653    (93, 90),
11654    (94, 95),
11655    (95, 109),
11656    (96, 121),
11657    (97, 129),
11658    (98, 130),
11659    (99, 131),
11660    (100, 132),
11661    (101, 133),
11662    (102, 134),
11663    (103, 135),
11664    (104, 136),
11665    (105, 137),
11666    (106, 145),
11667    (107, 146),
11668    (108, 147),
11669    (109, 148),
11670    (110, 149),
11671    (111, 150),
11672    (112, 151),
11673    (113, 152),
11674    (114, 153),
11675    (115, 162),
11676    (116, 163),
11677    (117, 164),
11678    (118, 165),
11679    (119, 166),
11680    (120, 167),
11681    (121, 168),
11682    (122, 169),
11683    (123, 192),
11684    (124, 106),
11685    (125, 208),
11686    (126, 161),
11687    (127, 7),
11688    (128, 32),
11689    (129, 33),
11690    (130, 34),
11691    (131, 35),
11692    (132, 36),
11693    (133, 21),
11694    (134, 6),
11695    (135, 23),
11696    (136, 40),
11697    (137, 41),
11698    (138, 42),
11699    (139, 43),
11700    (140, 44),
11701    (141, 9),
11702    (142, 10),
11703    (143, 27),
11704    (144, 48),
11705    (145, 49),
11706    (146, 26),
11707    (147, 51),
11708    (148, 52),
11709    (149, 53),
11710    (150, 54),
11711    (151, 8),
11712    (152, 56),
11713    (153, 57),
11714    (154, 58),
11715    (155, 59),
11716    (156, 4),
11717    (157, 20),
11718    (158, 62),
11719    (159, 255),
11720    (160, 65),
11721    (164, 225),
11722    (173, 115),
11723    (1025, 99),
11724    (1026, 89),
11725    (1027, 98),
11726    (1028, 100),
11727    (1029, 101),
11728    (1030, 102),
11729    (1031, 103),
11730    (1032, 104),
11731    (1033, 105),
11732    (1034, 112),
11733    (1035, 113),
11734    (1036, 114),
11735    (1038, 116),
11736    (1039, 117),
11737    (1040, 185),
11738    (1041, 186),
11739    (1042, 237),
11740    (1043, 191),
11741    (1044, 188),
11742    (1045, 189),
11743    (1046, 236),
11744    (1047, 250),
11745    (1048, 203),
11746    (1049, 204),
11747    (1050, 205),
11748    (1051, 206),
11749    (1052, 207),
11750    (1053, 218),
11751    (1054, 219),
11752    (1055, 220),
11753    (1056, 222),
11754    (1057, 223),
11755    (1058, 234),
11756    (1059, 235),
11757    (1060, 190),
11758    (1061, 202),
11759    (1062, 187),
11760    (1063, 254),
11761    (1064, 251),
11762    (1065, 253),
11763    (1066, 87),
11764    (1067, 239),
11765    (1068, 238),
11766    (1069, 252),
11767    (1070, 184),
11768    (1071, 221),
11769    (1072, 119),
11770    (1073, 120),
11771    (1074, 175),
11772    (1075, 141),
11773    (1076, 138),
11774    (1077, 139),
11775    (1078, 174),
11776    (1079, 178),
11777    (1080, 143),
11778    (1081, 144),
11779    (1082, 154),
11780    (1083, 155),
11781    (1084, 156),
11782    (1085, 157),
11783    (1086, 158),
11784    (1087, 159),
11785    (1088, 170),
11786    (1089, 171),
11787    (1090, 172),
11788    (1091, 173),
11789    (1092, 140),
11790    (1093, 142),
11791    (1094, 128),
11792    (1095, 182),
11793    (1096, 179),
11794    (1097, 181),
11795    (1098, 183),
11796    (1099, 177),
11797    (1100, 176),
11798    (1101, 180),
11799    (1102, 118),
11800    (1103, 160),
11801    (1105, 68),
11802    (1106, 66),
11803    (1107, 67),
11804    (1108, 69),
11805    (1109, 70),
11806    (1110, 71),
11807    (1111, 72),
11808    (1112, 73),
11809    (1113, 81),
11810    (1114, 82),
11811    (1115, 83),
11812    (1116, 84),
11813    (1118, 85),
11814    (1119, 86),
11815    (8470, 88),
11816];
11817
11818impl_ebcdic_encoder_and_decoder!(
11819    IBM891,
11820    "IBM891",
11821    IBM891Encoder,
11822    IBM891Decoder,
11823    IBM_891_ENCODE_TABLE,
11824    IBM_891_DECODE_TABLE
11825);
11826const IBM_891_DECODE_TABLE: [char; 256] = [
11827    '\u{0}',
11828    '\u{1}',
11829    '\u{2}',
11830    '\u{3}',
11831    '\u{4}',
11832    '\u{5}',
11833    '\u{6}',
11834    '\u{7}',
11835    '\u{8}',
11836    '\u{9}',
11837    '\u{a}',
11838    '\u{b}',
11839    '\u{c}',
11840    '\u{d}',
11841    '\u{e}',
11842    '\u{f}',
11843    '\u{10}',
11844    '\u{11}',
11845    '\u{12}',
11846    '\u{13}',
11847    '\u{14}',
11848    '\u{15}',
11849    '\u{16}',
11850    '\u{17}',
11851    '\u{18}',
11852    '\u{19}',
11853    '\u{1c}',
11854    '\u{1b}',
11855    '\u{7f}',
11856    '\u{1d}',
11857    '\u{1e}',
11858    '\u{1f}',
11859    '\u{20}',
11860    '\u{21}',
11861    '\u{22}',
11862    '\u{23}',
11863    '\u{24}',
11864    '\u{25}',
11865    '\u{26}',
11866    '\u{27}',
11867    '\u{28}',
11868    '\u{29}',
11869    '\u{2a}',
11870    '\u{2b}',
11871    '\u{2c}',
11872    '\u{2d}',
11873    '\u{2e}',
11874    '\u{2f}',
11875    '\u{30}',
11876    '\u{31}',
11877    '\u{32}',
11878    '\u{33}',
11879    '\u{34}',
11880    '\u{35}',
11881    '\u{36}',
11882    '\u{37}',
11883    '\u{38}',
11884    '\u{39}',
11885    '\u{3a}',
11886    '\u{3b}',
11887    '\u{3c}',
11888    '\u{3d}',
11889    '\u{3e}',
11890    '\u{3f}',
11891    '\u{40}',
11892    '\u{41}',
11893    '\u{42}',
11894    '\u{43}',
11895    '\u{44}',
11896    '\u{45}',
11897    '\u{46}',
11898    '\u{47}',
11899    '\u{48}',
11900    '\u{49}',
11901    '\u{4a}',
11902    '\u{4b}',
11903    '\u{4c}',
11904    '\u{4d}',
11905    '\u{4e}',
11906    '\u{4f}',
11907    '\u{50}',
11908    '\u{51}',
11909    '\u{52}',
11910    '\u{53}',
11911    '\u{54}',
11912    '\u{55}',
11913    '\u{56}',
11914    '\u{57}',
11915    '\u{58}',
11916    '\u{59}',
11917    '\u{5a}',
11918    '\u{5b}',
11919    '\u{20a9}',
11920    '\u{5d}',
11921    '\u{5e}',
11922    '\u{5f}',
11923    '\u{60}',
11924    '\u{61}',
11925    '\u{62}',
11926    '\u{63}',
11927    '\u{64}',
11928    '\u{65}',
11929    '\u{66}',
11930    '\u{67}',
11931    '\u{68}',
11932    '\u{69}',
11933    '\u{6a}',
11934    '\u{6b}',
11935    '\u{6c}',
11936    '\u{6d}',
11937    '\u{6e}',
11938    '\u{6f}',
11939    '\u{70}',
11940    '\u{71}',
11941    '\u{72}',
11942    '\u{73}',
11943    '\u{74}',
11944    '\u{75}',
11945    '\u{76}',
11946    '\u{77}',
11947    '\u{78}',
11948    '\u{79}',
11949    '\u{7a}',
11950    '\u{7b}',
11951    '\u{7c}',
11952    '\u{7d}',
11953    '\u{203e}',
11954    '\u{1a}',
11955    char::REPLACEMENT_CHARACTER,
11956    char::REPLACEMENT_CHARACTER,
11957    char::REPLACEMENT_CHARACTER,
11958    char::REPLACEMENT_CHARACTER,
11959    char::REPLACEMENT_CHARACTER,
11960    char::REPLACEMENT_CHARACTER,
11961    char::REPLACEMENT_CHARACTER,
11962    char::REPLACEMENT_CHARACTER,
11963    char::REPLACEMENT_CHARACTER,
11964    char::REPLACEMENT_CHARACTER,
11965    char::REPLACEMENT_CHARACTER,
11966    char::REPLACEMENT_CHARACTER,
11967    char::REPLACEMENT_CHARACTER,
11968    char::REPLACEMENT_CHARACTER,
11969    char::REPLACEMENT_CHARACTER,
11970    char::REPLACEMENT_CHARACTER,
11971    char::REPLACEMENT_CHARACTER,
11972    char::REPLACEMENT_CHARACTER,
11973    char::REPLACEMENT_CHARACTER,
11974    char::REPLACEMENT_CHARACTER,
11975    char::REPLACEMENT_CHARACTER,
11976    char::REPLACEMENT_CHARACTER,
11977    char::REPLACEMENT_CHARACTER,
11978    char::REPLACEMENT_CHARACTER,
11979    char::REPLACEMENT_CHARACTER,
11980    char::REPLACEMENT_CHARACTER,
11981    char::REPLACEMENT_CHARACTER,
11982    char::REPLACEMENT_CHARACTER,
11983    char::REPLACEMENT_CHARACTER,
11984    char::REPLACEMENT_CHARACTER,
11985    char::REPLACEMENT_CHARACTER,
11986    char::REPLACEMENT_CHARACTER,
11987    char::REPLACEMENT_CHARACTER,
11988    char::REPLACEMENT_CHARACTER,
11989    char::REPLACEMENT_CHARACTER,
11990    char::REPLACEMENT_CHARACTER,
11991    char::REPLACEMENT_CHARACTER,
11992    char::REPLACEMENT_CHARACTER,
11993    char::REPLACEMENT_CHARACTER,
11994    char::REPLACEMENT_CHARACTER,
11995    char::REPLACEMENT_CHARACTER,
11996    char::REPLACEMENT_CHARACTER,
11997    char::REPLACEMENT_CHARACTER,
11998    char::REPLACEMENT_CHARACTER,
11999    char::REPLACEMENT_CHARACTER,
12000    char::REPLACEMENT_CHARACTER,
12001    char::REPLACEMENT_CHARACTER,
12002    char::REPLACEMENT_CHARACTER,
12003    char::REPLACEMENT_CHARACTER,
12004    char::REPLACEMENT_CHARACTER,
12005    char::REPLACEMENT_CHARACTER,
12006    char::REPLACEMENT_CHARACTER,
12007    char::REPLACEMENT_CHARACTER,
12008    char::REPLACEMENT_CHARACTER,
12009    char::REPLACEMENT_CHARACTER,
12010    char::REPLACEMENT_CHARACTER,
12011    char::REPLACEMENT_CHARACTER,
12012    char::REPLACEMENT_CHARACTER,
12013    char::REPLACEMENT_CHARACTER,
12014    char::REPLACEMENT_CHARACTER,
12015    char::REPLACEMENT_CHARACTER,
12016    char::REPLACEMENT_CHARACTER,
12017    char::REPLACEMENT_CHARACTER,
12018    char::REPLACEMENT_CHARACTER,
12019    '\u{ffa0}',
12020    '\u{ffa1}',
12021    '\u{ffa2}',
12022    '\u{ffa3}',
12023    '\u{ffa4}',
12024    '\u{ffa5}',
12025    '\u{ffa6}',
12026    '\u{ffa7}',
12027    '\u{ffa8}',
12028    '\u{ffa9}',
12029    '\u{ffaa}',
12030    '\u{ffab}',
12031    '\u{ffac}',
12032    '\u{ffad}',
12033    '\u{ffae}',
12034    '\u{ffaf}',
12035    '\u{ffb0}',
12036    '\u{ffb1}',
12037    '\u{ffb2}',
12038    '\u{ffb3}',
12039    '\u{ffb4}',
12040    '\u{ffb5}',
12041    '\u{ffb6}',
12042    '\u{ffb7}',
12043    '\u{ffb8}',
12044    '\u{ffb9}',
12045    '\u{ffba}',
12046    '\u{ffbb}',
12047    '\u{ffbc}',
12048    '\u{ffbd}',
12049    '\u{ffbe}',
12050    char::REPLACEMENT_CHARACTER,
12051    char::REPLACEMENT_CHARACTER,
12052    char::REPLACEMENT_CHARACTER,
12053    '\u{ffc2}',
12054    '\u{ffc3}',
12055    '\u{ffc4}',
12056    '\u{ffc5}',
12057    '\u{ffc6}',
12058    '\u{ffc7}',
12059    char::REPLACEMENT_CHARACTER,
12060    char::REPLACEMENT_CHARACTER,
12061    '\u{ffca}',
12062    '\u{ffcb}',
12063    '\u{ffcc}',
12064    '\u{ffcd}',
12065    '\u{ffce}',
12066    '\u{ffcf}',
12067    char::REPLACEMENT_CHARACTER,
12068    char::REPLACEMENT_CHARACTER,
12069    '\u{ffd2}',
12070    '\u{ffd3}',
12071    '\u{ffd4}',
12072    '\u{ffd5}',
12073    '\u{ffd6}',
12074    '\u{ffd7}',
12075    char::REPLACEMENT_CHARACTER,
12076    char::REPLACEMENT_CHARACTER,
12077    '\u{ffda}',
12078    '\u{ffdb}',
12079    '\u{ffdc}',
12080    char::REPLACEMENT_CHARACTER,
12081    char::REPLACEMENT_CHARACTER,
12082    char::REPLACEMENT_CHARACTER,
12083];
12084const IBM_891_ENCODE_TABLE: &[(u16, u8)] = &[
12085    (0, 0),
12086    (1, 1),
12087    (2, 2),
12088    (3, 3),
12089    (4, 4),
12090    (5, 5),
12091    (6, 6),
12092    (7, 7),
12093    (8, 8),
12094    (9, 9),
12095    (10, 10),
12096    (11, 11),
12097    (12, 12),
12098    (13, 13),
12099    (14, 14),
12100    (15, 15),
12101    (16, 16),
12102    (17, 17),
12103    (18, 18),
12104    (19, 19),
12105    (20, 20),
12106    (21, 21),
12107    (22, 22),
12108    (23, 23),
12109    (24, 24),
12110    (25, 25),
12111    (26, 127),
12112    (27, 27),
12113    (28, 26),
12114    (29, 29),
12115    (30, 30),
12116    (31, 31),
12117    (32, 32),
12118    (33, 33),
12119    (34, 34),
12120    (35, 35),
12121    (36, 36),
12122    (37, 37),
12123    (38, 38),
12124    (39, 39),
12125    (40, 40),
12126    (41, 41),
12127    (42, 42),
12128    (43, 43),
12129    (44, 44),
12130    (45, 45),
12131    (46, 46),
12132    (47, 47),
12133    (48, 48),
12134    (49, 49),
12135    (50, 50),
12136    (51, 51),
12137    (52, 52),
12138    (53, 53),
12139    (54, 54),
12140    (55, 55),
12141    (56, 56),
12142    (57, 57),
12143    (58, 58),
12144    (59, 59),
12145    (60, 60),
12146    (61, 61),
12147    (62, 62),
12148    (63, 63),
12149    (64, 64),
12150    (65, 65),
12151    (66, 66),
12152    (67, 67),
12153    (68, 68),
12154    (69, 69),
12155    (70, 70),
12156    (71, 71),
12157    (72, 72),
12158    (73, 73),
12159    (74, 74),
12160    (75, 75),
12161    (76, 76),
12162    (77, 77),
12163    (78, 78),
12164    (79, 79),
12165    (80, 80),
12166    (81, 81),
12167    (82, 82),
12168    (83, 83),
12169    (84, 84),
12170    (85, 85),
12171    (86, 86),
12172    (87, 87),
12173    (88, 88),
12174    (89, 89),
12175    (90, 90),
12176    (91, 91),
12177    (93, 93),
12178    (94, 94),
12179    (95, 95),
12180    (96, 96),
12181    (97, 97),
12182    (98, 98),
12183    (99, 99),
12184    (100, 100),
12185    (101, 101),
12186    (102, 102),
12187    (103, 103),
12188    (104, 104),
12189    (105, 105),
12190    (106, 106),
12191    (107, 107),
12192    (108, 108),
12193    (109, 109),
12194    (110, 110),
12195    (111, 111),
12196    (112, 112),
12197    (113, 113),
12198    (114, 114),
12199    (115, 115),
12200    (116, 116),
12201    (117, 117),
12202    (118, 118),
12203    (119, 119),
12204    (120, 120),
12205    (121, 121),
12206    (122, 122),
12207    (123, 123),
12208    (124, 124),
12209    (125, 125),
12210    (127, 28),
12211    (8254, 126),
12212    (8361, 92),
12213    (65440, 192),
12214    (65441, 193),
12215    (65442, 194),
12216    (65443, 195),
12217    (65444, 196),
12218    (65445, 197),
12219    (65446, 198),
12220    (65447, 199),
12221    (65448, 200),
12222    (65449, 201),
12223    (65450, 202),
12224    (65451, 203),
12225    (65452, 204),
12226    (65453, 205),
12227    (65454, 206),
12228    (65455, 207),
12229    (65456, 208),
12230    (65457, 209),
12231    (65458, 210),
12232    (65459, 211),
12233    (65460, 212),
12234    (65461, 213),
12235    (65462, 214),
12236    (65463, 215),
12237    (65464, 216),
12238    (65465, 217),
12239    (65466, 218),
12240    (65467, 219),
12241    (65468, 220),
12242    (65469, 221),
12243    (65470, 222),
12244    (65474, 226),
12245    (65475, 227),
12246    (65476, 228),
12247    (65477, 229),
12248    (65478, 230),
12249    (65479, 231),
12250    (65482, 234),
12251    (65483, 235),
12252    (65484, 236),
12253    (65485, 237),
12254    (65486, 238),
12255    (65487, 239),
12256    (65490, 242),
12257    (65491, 243),
12258    (65492, 244),
12259    (65493, 245),
12260    (65494, 246),
12261    (65495, 247),
12262    (65498, 250),
12263    (65499, 251),
12264    (65500, 252),
12265];
12266
12267impl_ebcdic_encoder_and_decoder!(
12268    IBM903,
12269    "IBM903",
12270    IBM903Encoder,
12271    IBM903Decoder,
12272    IBM_903_ENCODE_TABLE,
12273    IBM_903_DECODE_TABLE
12274);
12275const IBM_903_DECODE_TABLE: [char; 256] = [
12276    '\u{0}',
12277    '\u{1}',
12278    '\u{2}',
12279    '\u{3}',
12280    '\u{4}',
12281    '\u{5}',
12282    '\u{6}',
12283    '\u{7}',
12284    '\u{8}',
12285    '\u{9}',
12286    '\u{a}',
12287    '\u{b}',
12288    '\u{c}',
12289    '\u{d}',
12290    '\u{e}',
12291    '\u{f}',
12292    '\u{10}',
12293    '\u{11}',
12294    '\u{12}',
12295    '\u{13}',
12296    '\u{14}',
12297    '\u{15}',
12298    '\u{16}',
12299    '\u{17}',
12300    '\u{18}',
12301    '\u{19}',
12302    '\u{1c}',
12303    '\u{1b}',
12304    '\u{7f}',
12305    '\u{1d}',
12306    '\u{1e}',
12307    '\u{1f}',
12308    '\u{20}',
12309    '\u{21}',
12310    '\u{22}',
12311    '\u{23}',
12312    '\u{24}',
12313    '\u{25}',
12314    '\u{26}',
12315    '\u{27}',
12316    '\u{28}',
12317    '\u{29}',
12318    '\u{2a}',
12319    '\u{2b}',
12320    '\u{2c}',
12321    '\u{2d}',
12322    '\u{2e}',
12323    '\u{2f}',
12324    '\u{30}',
12325    '\u{31}',
12326    '\u{32}',
12327    '\u{33}',
12328    '\u{34}',
12329    '\u{35}',
12330    '\u{36}',
12331    '\u{37}',
12332    '\u{38}',
12333    '\u{39}',
12334    '\u{3a}',
12335    '\u{3b}',
12336    '\u{3c}',
12337    '\u{3d}',
12338    '\u{3e}',
12339    '\u{3f}',
12340    '\u{40}',
12341    '\u{41}',
12342    '\u{42}',
12343    '\u{43}',
12344    '\u{44}',
12345    '\u{45}',
12346    '\u{46}',
12347    '\u{47}',
12348    '\u{48}',
12349    '\u{49}',
12350    '\u{4a}',
12351    '\u{4b}',
12352    '\u{4c}',
12353    '\u{4d}',
12354    '\u{4e}',
12355    '\u{4f}',
12356    '\u{50}',
12357    '\u{51}',
12358    '\u{52}',
12359    '\u{53}',
12360    '\u{54}',
12361    '\u{55}',
12362    '\u{56}',
12363    '\u{57}',
12364    '\u{58}',
12365    '\u{59}',
12366    '\u{5a}',
12367    '\u{5b}',
12368    '\u{a5}',
12369    '\u{5d}',
12370    '\u{5e}',
12371    '\u{5f}',
12372    '\u{60}',
12373    '\u{61}',
12374    '\u{62}',
12375    '\u{63}',
12376    '\u{64}',
12377    '\u{65}',
12378    '\u{66}',
12379    '\u{67}',
12380    '\u{68}',
12381    '\u{69}',
12382    '\u{6a}',
12383    '\u{6b}',
12384    '\u{6c}',
12385    '\u{6d}',
12386    '\u{6e}',
12387    '\u{6f}',
12388    '\u{70}',
12389    '\u{71}',
12390    '\u{72}',
12391    '\u{73}',
12392    '\u{74}',
12393    '\u{75}',
12394    '\u{76}',
12395    '\u{77}',
12396    '\u{78}',
12397    '\u{79}',
12398    '\u{7a}',
12399    '\u{7b}',
12400    '\u{7c}',
12401    '\u{7d}',
12402    '\u{203e}',
12403    '\u{1a}',
12404    char::REPLACEMENT_CHARACTER,
12405    char::REPLACEMENT_CHARACTER,
12406    char::REPLACEMENT_CHARACTER,
12407    char::REPLACEMENT_CHARACTER,
12408    char::REPLACEMENT_CHARACTER,
12409    char::REPLACEMENT_CHARACTER,
12410    char::REPLACEMENT_CHARACTER,
12411    char::REPLACEMENT_CHARACTER,
12412    char::REPLACEMENT_CHARACTER,
12413    char::REPLACEMENT_CHARACTER,
12414    char::REPLACEMENT_CHARACTER,
12415    char::REPLACEMENT_CHARACTER,
12416    char::REPLACEMENT_CHARACTER,
12417    char::REPLACEMENT_CHARACTER,
12418    char::REPLACEMENT_CHARACTER,
12419    char::REPLACEMENT_CHARACTER,
12420    char::REPLACEMENT_CHARACTER,
12421    char::REPLACEMENT_CHARACTER,
12422    char::REPLACEMENT_CHARACTER,
12423    char::REPLACEMENT_CHARACTER,
12424    char::REPLACEMENT_CHARACTER,
12425    char::REPLACEMENT_CHARACTER,
12426    char::REPLACEMENT_CHARACTER,
12427    char::REPLACEMENT_CHARACTER,
12428    char::REPLACEMENT_CHARACTER,
12429    char::REPLACEMENT_CHARACTER,
12430    char::REPLACEMENT_CHARACTER,
12431    char::REPLACEMENT_CHARACTER,
12432    char::REPLACEMENT_CHARACTER,
12433    char::REPLACEMENT_CHARACTER,
12434    char::REPLACEMENT_CHARACTER,
12435    char::REPLACEMENT_CHARACTER,
12436    char::REPLACEMENT_CHARACTER,
12437    char::REPLACEMENT_CHARACTER,
12438    char::REPLACEMENT_CHARACTER,
12439    char::REPLACEMENT_CHARACTER,
12440    char::REPLACEMENT_CHARACTER,
12441    char::REPLACEMENT_CHARACTER,
12442    char::REPLACEMENT_CHARACTER,
12443    char::REPLACEMENT_CHARACTER,
12444    char::REPLACEMENT_CHARACTER,
12445    char::REPLACEMENT_CHARACTER,
12446    char::REPLACEMENT_CHARACTER,
12447    char::REPLACEMENT_CHARACTER,
12448    char::REPLACEMENT_CHARACTER,
12449    char::REPLACEMENT_CHARACTER,
12450    char::REPLACEMENT_CHARACTER,
12451    char::REPLACEMENT_CHARACTER,
12452    char::REPLACEMENT_CHARACTER,
12453    char::REPLACEMENT_CHARACTER,
12454    char::REPLACEMENT_CHARACTER,
12455    char::REPLACEMENT_CHARACTER,
12456    char::REPLACEMENT_CHARACTER,
12457    char::REPLACEMENT_CHARACTER,
12458    char::REPLACEMENT_CHARACTER,
12459    char::REPLACEMENT_CHARACTER,
12460    char::REPLACEMENT_CHARACTER,
12461    char::REPLACEMENT_CHARACTER,
12462    char::REPLACEMENT_CHARACTER,
12463    char::REPLACEMENT_CHARACTER,
12464    char::REPLACEMENT_CHARACTER,
12465    char::REPLACEMENT_CHARACTER,
12466    char::REPLACEMENT_CHARACTER,
12467    char::REPLACEMENT_CHARACTER,
12468    char::REPLACEMENT_CHARACTER,
12469    char::REPLACEMENT_CHARACTER,
12470    char::REPLACEMENT_CHARACTER,
12471    char::REPLACEMENT_CHARACTER,
12472    char::REPLACEMENT_CHARACTER,
12473    char::REPLACEMENT_CHARACTER,
12474    char::REPLACEMENT_CHARACTER,
12475    char::REPLACEMENT_CHARACTER,
12476    char::REPLACEMENT_CHARACTER,
12477    char::REPLACEMENT_CHARACTER,
12478    char::REPLACEMENT_CHARACTER,
12479    char::REPLACEMENT_CHARACTER,
12480    char::REPLACEMENT_CHARACTER,
12481    char::REPLACEMENT_CHARACTER,
12482    char::REPLACEMENT_CHARACTER,
12483    char::REPLACEMENT_CHARACTER,
12484    char::REPLACEMENT_CHARACTER,
12485    char::REPLACEMENT_CHARACTER,
12486    char::REPLACEMENT_CHARACTER,
12487    char::REPLACEMENT_CHARACTER,
12488    char::REPLACEMENT_CHARACTER,
12489    char::REPLACEMENT_CHARACTER,
12490    char::REPLACEMENT_CHARACTER,
12491    char::REPLACEMENT_CHARACTER,
12492    char::REPLACEMENT_CHARACTER,
12493    char::REPLACEMENT_CHARACTER,
12494    char::REPLACEMENT_CHARACTER,
12495    char::REPLACEMENT_CHARACTER,
12496    char::REPLACEMENT_CHARACTER,
12497    char::REPLACEMENT_CHARACTER,
12498    char::REPLACEMENT_CHARACTER,
12499    char::REPLACEMENT_CHARACTER,
12500    char::REPLACEMENT_CHARACTER,
12501    char::REPLACEMENT_CHARACTER,
12502    char::REPLACEMENT_CHARACTER,
12503    char::REPLACEMENT_CHARACTER,
12504    char::REPLACEMENT_CHARACTER,
12505    char::REPLACEMENT_CHARACTER,
12506    char::REPLACEMENT_CHARACTER,
12507    char::REPLACEMENT_CHARACTER,
12508    char::REPLACEMENT_CHARACTER,
12509    char::REPLACEMENT_CHARACTER,
12510    char::REPLACEMENT_CHARACTER,
12511    char::REPLACEMENT_CHARACTER,
12512    char::REPLACEMENT_CHARACTER,
12513    char::REPLACEMENT_CHARACTER,
12514    char::REPLACEMENT_CHARACTER,
12515    char::REPLACEMENT_CHARACTER,
12516    char::REPLACEMENT_CHARACTER,
12517    char::REPLACEMENT_CHARACTER,
12518    char::REPLACEMENT_CHARACTER,
12519    char::REPLACEMENT_CHARACTER,
12520    char::REPLACEMENT_CHARACTER,
12521    char::REPLACEMENT_CHARACTER,
12522    char::REPLACEMENT_CHARACTER,
12523    char::REPLACEMENT_CHARACTER,
12524    char::REPLACEMENT_CHARACTER,
12525    char::REPLACEMENT_CHARACTER,
12526    char::REPLACEMENT_CHARACTER,
12527    char::REPLACEMENT_CHARACTER,
12528    char::REPLACEMENT_CHARACTER,
12529    char::REPLACEMENT_CHARACTER,
12530    char::REPLACEMENT_CHARACTER,
12531    char::REPLACEMENT_CHARACTER,
12532];
12533const IBM_903_ENCODE_TABLE: &[(u16, u8)] = &[
12534    (0, 0),
12535    (1, 1),
12536    (2, 2),
12537    (3, 3),
12538    (4, 4),
12539    (5, 5),
12540    (6, 6),
12541    (7, 7),
12542    (8, 8),
12543    (9, 9),
12544    (10, 10),
12545    (11, 11),
12546    (12, 12),
12547    (13, 13),
12548    (14, 14),
12549    (15, 15),
12550    (16, 16),
12551    (17, 17),
12552    (18, 18),
12553    (19, 19),
12554    (20, 20),
12555    (21, 21),
12556    (22, 22),
12557    (23, 23),
12558    (24, 24),
12559    (25, 25),
12560    (26, 127),
12561    (27, 27),
12562    (28, 26),
12563    (29, 29),
12564    (30, 30),
12565    (31, 31),
12566    (32, 32),
12567    (33, 33),
12568    (34, 34),
12569    (35, 35),
12570    (36, 36),
12571    (37, 37),
12572    (38, 38),
12573    (39, 39),
12574    (40, 40),
12575    (41, 41),
12576    (42, 42),
12577    (43, 43),
12578    (44, 44),
12579    (45, 45),
12580    (46, 46),
12581    (47, 47),
12582    (48, 48),
12583    (49, 49),
12584    (50, 50),
12585    (51, 51),
12586    (52, 52),
12587    (53, 53),
12588    (54, 54),
12589    (55, 55),
12590    (56, 56),
12591    (57, 57),
12592    (58, 58),
12593    (59, 59),
12594    (60, 60),
12595    (61, 61),
12596    (62, 62),
12597    (63, 63),
12598    (64, 64),
12599    (65, 65),
12600    (66, 66),
12601    (67, 67),
12602    (68, 68),
12603    (69, 69),
12604    (70, 70),
12605    (71, 71),
12606    (72, 72),
12607    (73, 73),
12608    (74, 74),
12609    (75, 75),
12610    (76, 76),
12611    (77, 77),
12612    (78, 78),
12613    (79, 79),
12614    (80, 80),
12615    (81, 81),
12616    (82, 82),
12617    (83, 83),
12618    (84, 84),
12619    (85, 85),
12620    (86, 86),
12621    (87, 87),
12622    (88, 88),
12623    (89, 89),
12624    (90, 90),
12625    (91, 91),
12626    (93, 93),
12627    (94, 94),
12628    (95, 95),
12629    (96, 96),
12630    (97, 97),
12631    (98, 98),
12632    (99, 99),
12633    (100, 100),
12634    (101, 101),
12635    (102, 102),
12636    (103, 103),
12637    (104, 104),
12638    (105, 105),
12639    (106, 106),
12640    (107, 107),
12641    (108, 108),
12642    (109, 109),
12643    (110, 110),
12644    (111, 111),
12645    (112, 112),
12646    (113, 113),
12647    (114, 114),
12648    (115, 115),
12649    (116, 116),
12650    (117, 117),
12651    (118, 118),
12652    (119, 119),
12653    (120, 120),
12654    (121, 121),
12655    (122, 122),
12656    (123, 123),
12657    (124, 124),
12658    (125, 125),
12659    (127, 28),
12660    (165, 92),
12661    (8254, 126),
12662];
12663
12664impl_ebcdic_encoder_and_decoder!(
12665    IBM904,
12666    "IBM904",
12667    IBM904Encoder,
12668    IBM904Decoder,
12669    IBM_904_ENCODE_TABLE,
12670    IBM_904_DECODE_TABLE
12671);
12672const IBM_904_DECODE_TABLE: [char; 256] = [
12673    '\u{0}',
12674    '\u{1}',
12675    '\u{2}',
12676    '\u{3}',
12677    '\u{4}',
12678    '\u{5}',
12679    '\u{6}',
12680    '\u{7}',
12681    '\u{8}',
12682    '\u{9}',
12683    '\u{a}',
12684    '\u{b}',
12685    '\u{c}',
12686    '\u{d}',
12687    '\u{e}',
12688    '\u{f}',
12689    '\u{10}',
12690    '\u{11}',
12691    '\u{12}',
12692    '\u{13}',
12693    '\u{14}',
12694    '\u{15}',
12695    '\u{16}',
12696    '\u{17}',
12697    '\u{18}',
12698    '\u{19}',
12699    '\u{1c}',
12700    '\u{1b}',
12701    '\u{7f}',
12702    '\u{1d}',
12703    '\u{1e}',
12704    '\u{1f}',
12705    '\u{20}',
12706    '\u{21}',
12707    '\u{22}',
12708    '\u{23}',
12709    '\u{24}',
12710    '\u{25}',
12711    '\u{26}',
12712    '\u{27}',
12713    '\u{28}',
12714    '\u{29}',
12715    '\u{2a}',
12716    '\u{2b}',
12717    '\u{2c}',
12718    '\u{2d}',
12719    '\u{2e}',
12720    '\u{2f}',
12721    '\u{30}',
12722    '\u{31}',
12723    '\u{32}',
12724    '\u{33}',
12725    '\u{34}',
12726    '\u{35}',
12727    '\u{36}',
12728    '\u{37}',
12729    '\u{38}',
12730    '\u{39}',
12731    '\u{3a}',
12732    '\u{3b}',
12733    '\u{3c}',
12734    '\u{3d}',
12735    '\u{3e}',
12736    '\u{3f}',
12737    '\u{40}',
12738    '\u{41}',
12739    '\u{42}',
12740    '\u{43}',
12741    '\u{44}',
12742    '\u{45}',
12743    '\u{46}',
12744    '\u{47}',
12745    '\u{48}',
12746    '\u{49}',
12747    '\u{4a}',
12748    '\u{4b}',
12749    '\u{4c}',
12750    '\u{4d}',
12751    '\u{4e}',
12752    '\u{4f}',
12753    '\u{50}',
12754    '\u{51}',
12755    '\u{52}',
12756    '\u{53}',
12757    '\u{54}',
12758    '\u{55}',
12759    '\u{56}',
12760    '\u{57}',
12761    '\u{58}',
12762    '\u{59}',
12763    '\u{5a}',
12764    '\u{5b}',
12765    '\u{5c}',
12766    '\u{5d}',
12767    '\u{5e}',
12768    '\u{5f}',
12769    '\u{60}',
12770    '\u{61}',
12771    '\u{62}',
12772    '\u{63}',
12773    '\u{64}',
12774    '\u{65}',
12775    '\u{66}',
12776    '\u{67}',
12777    '\u{68}',
12778    '\u{69}',
12779    '\u{6a}',
12780    '\u{6b}',
12781    '\u{6c}',
12782    '\u{6d}',
12783    '\u{6e}',
12784    '\u{6f}',
12785    '\u{70}',
12786    '\u{71}',
12787    '\u{72}',
12788    '\u{73}',
12789    '\u{74}',
12790    '\u{75}',
12791    '\u{76}',
12792    '\u{77}',
12793    '\u{78}',
12794    '\u{79}',
12795    '\u{7a}',
12796    '\u{7b}',
12797    '\u{7c}',
12798    '\u{7d}',
12799    '\u{7e}',
12800    '\u{1a}',
12801    char::REPLACEMENT_CHARACTER,
12802    char::REPLACEMENT_CHARACTER,
12803    char::REPLACEMENT_CHARACTER,
12804    char::REPLACEMENT_CHARACTER,
12805    char::REPLACEMENT_CHARACTER,
12806    char::REPLACEMENT_CHARACTER,
12807    char::REPLACEMENT_CHARACTER,
12808    char::REPLACEMENT_CHARACTER,
12809    char::REPLACEMENT_CHARACTER,
12810    char::REPLACEMENT_CHARACTER,
12811    char::REPLACEMENT_CHARACTER,
12812    char::REPLACEMENT_CHARACTER,
12813    char::REPLACEMENT_CHARACTER,
12814    char::REPLACEMENT_CHARACTER,
12815    char::REPLACEMENT_CHARACTER,
12816    char::REPLACEMENT_CHARACTER,
12817    char::REPLACEMENT_CHARACTER,
12818    char::REPLACEMENT_CHARACTER,
12819    char::REPLACEMENT_CHARACTER,
12820    char::REPLACEMENT_CHARACTER,
12821    char::REPLACEMENT_CHARACTER,
12822    char::REPLACEMENT_CHARACTER,
12823    char::REPLACEMENT_CHARACTER,
12824    char::REPLACEMENT_CHARACTER,
12825    char::REPLACEMENT_CHARACTER,
12826    char::REPLACEMENT_CHARACTER,
12827    char::REPLACEMENT_CHARACTER,
12828    char::REPLACEMENT_CHARACTER,
12829    char::REPLACEMENT_CHARACTER,
12830    char::REPLACEMENT_CHARACTER,
12831    char::REPLACEMENT_CHARACTER,
12832    char::REPLACEMENT_CHARACTER,
12833    char::REPLACEMENT_CHARACTER,
12834    char::REPLACEMENT_CHARACTER,
12835    char::REPLACEMENT_CHARACTER,
12836    char::REPLACEMENT_CHARACTER,
12837    char::REPLACEMENT_CHARACTER,
12838    char::REPLACEMENT_CHARACTER,
12839    char::REPLACEMENT_CHARACTER,
12840    char::REPLACEMENT_CHARACTER,
12841    char::REPLACEMENT_CHARACTER,
12842    char::REPLACEMENT_CHARACTER,
12843    char::REPLACEMENT_CHARACTER,
12844    char::REPLACEMENT_CHARACTER,
12845    char::REPLACEMENT_CHARACTER,
12846    char::REPLACEMENT_CHARACTER,
12847    char::REPLACEMENT_CHARACTER,
12848    char::REPLACEMENT_CHARACTER,
12849    char::REPLACEMENT_CHARACTER,
12850    char::REPLACEMENT_CHARACTER,
12851    char::REPLACEMENT_CHARACTER,
12852    char::REPLACEMENT_CHARACTER,
12853    char::REPLACEMENT_CHARACTER,
12854    char::REPLACEMENT_CHARACTER,
12855    char::REPLACEMENT_CHARACTER,
12856    char::REPLACEMENT_CHARACTER,
12857    char::REPLACEMENT_CHARACTER,
12858    char::REPLACEMENT_CHARACTER,
12859    char::REPLACEMENT_CHARACTER,
12860    char::REPLACEMENT_CHARACTER,
12861    char::REPLACEMENT_CHARACTER,
12862    char::REPLACEMENT_CHARACTER,
12863    char::REPLACEMENT_CHARACTER,
12864    char::REPLACEMENT_CHARACTER,
12865    char::REPLACEMENT_CHARACTER,
12866    char::REPLACEMENT_CHARACTER,
12867    char::REPLACEMENT_CHARACTER,
12868    char::REPLACEMENT_CHARACTER,
12869    char::REPLACEMENT_CHARACTER,
12870    char::REPLACEMENT_CHARACTER,
12871    char::REPLACEMENT_CHARACTER,
12872    char::REPLACEMENT_CHARACTER,
12873    char::REPLACEMENT_CHARACTER,
12874    char::REPLACEMENT_CHARACTER,
12875    char::REPLACEMENT_CHARACTER,
12876    char::REPLACEMENT_CHARACTER,
12877    char::REPLACEMENT_CHARACTER,
12878    char::REPLACEMENT_CHARACTER,
12879    char::REPLACEMENT_CHARACTER,
12880    char::REPLACEMENT_CHARACTER,
12881    char::REPLACEMENT_CHARACTER,
12882    char::REPLACEMENT_CHARACTER,
12883    char::REPLACEMENT_CHARACTER,
12884    char::REPLACEMENT_CHARACTER,
12885    char::REPLACEMENT_CHARACTER,
12886    char::REPLACEMENT_CHARACTER,
12887    char::REPLACEMENT_CHARACTER,
12888    char::REPLACEMENT_CHARACTER,
12889    char::REPLACEMENT_CHARACTER,
12890    char::REPLACEMENT_CHARACTER,
12891    char::REPLACEMENT_CHARACTER,
12892    char::REPLACEMENT_CHARACTER,
12893    char::REPLACEMENT_CHARACTER,
12894    char::REPLACEMENT_CHARACTER,
12895    char::REPLACEMENT_CHARACTER,
12896    char::REPLACEMENT_CHARACTER,
12897    char::REPLACEMENT_CHARACTER,
12898    char::REPLACEMENT_CHARACTER,
12899    char::REPLACEMENT_CHARACTER,
12900    char::REPLACEMENT_CHARACTER,
12901    char::REPLACEMENT_CHARACTER,
12902    char::REPLACEMENT_CHARACTER,
12903    char::REPLACEMENT_CHARACTER,
12904    char::REPLACEMENT_CHARACTER,
12905    char::REPLACEMENT_CHARACTER,
12906    char::REPLACEMENT_CHARACTER,
12907    char::REPLACEMENT_CHARACTER,
12908    char::REPLACEMENT_CHARACTER,
12909    char::REPLACEMENT_CHARACTER,
12910    char::REPLACEMENT_CHARACTER,
12911    char::REPLACEMENT_CHARACTER,
12912    char::REPLACEMENT_CHARACTER,
12913    char::REPLACEMENT_CHARACTER,
12914    char::REPLACEMENT_CHARACTER,
12915    char::REPLACEMENT_CHARACTER,
12916    char::REPLACEMENT_CHARACTER,
12917    char::REPLACEMENT_CHARACTER,
12918    char::REPLACEMENT_CHARACTER,
12919    char::REPLACEMENT_CHARACTER,
12920    char::REPLACEMENT_CHARACTER,
12921    char::REPLACEMENT_CHARACTER,
12922    char::REPLACEMENT_CHARACTER,
12923    char::REPLACEMENT_CHARACTER,
12924    char::REPLACEMENT_CHARACTER,
12925    char::REPLACEMENT_CHARACTER,
12926    char::REPLACEMENT_CHARACTER,
12927    char::REPLACEMENT_CHARACTER,
12928    char::REPLACEMENT_CHARACTER,
12929];
12930const IBM_904_ENCODE_TABLE: &[(u16, u8)] = &[
12931    (0, 0),
12932    (1, 1),
12933    (2, 2),
12934    (3, 3),
12935    (4, 4),
12936    (5, 5),
12937    (6, 6),
12938    (7, 7),
12939    (8, 8),
12940    (9, 9),
12941    (10, 10),
12942    (11, 11),
12943    (12, 12),
12944    (13, 13),
12945    (14, 14),
12946    (15, 15),
12947    (16, 16),
12948    (17, 17),
12949    (18, 18),
12950    (19, 19),
12951    (20, 20),
12952    (21, 21),
12953    (22, 22),
12954    (23, 23),
12955    (24, 24),
12956    (25, 25),
12957    (26, 127),
12958    (27, 27),
12959    (28, 26),
12960    (29, 29),
12961    (30, 30),
12962    (31, 31),
12963    (32, 32),
12964    (33, 33),
12965    (34, 34),
12966    (35, 35),
12967    (36, 36),
12968    (37, 37),
12969    (38, 38),
12970    (39, 39),
12971    (40, 40),
12972    (41, 41),
12973    (42, 42),
12974    (43, 43),
12975    (44, 44),
12976    (45, 45),
12977    (46, 46),
12978    (47, 47),
12979    (48, 48),
12980    (49, 49),
12981    (50, 50),
12982    (51, 51),
12983    (52, 52),
12984    (53, 53),
12985    (54, 54),
12986    (55, 55),
12987    (56, 56),
12988    (57, 57),
12989    (58, 58),
12990    (59, 59),
12991    (60, 60),
12992    (61, 61),
12993    (62, 62),
12994    (63, 63),
12995    (64, 64),
12996    (65, 65),
12997    (66, 66),
12998    (67, 67),
12999    (68, 68),
13000    (69, 69),
13001    (70, 70),
13002    (71, 71),
13003    (72, 72),
13004    (73, 73),
13005    (74, 74),
13006    (75, 75),
13007    (76, 76),
13008    (77, 77),
13009    (78, 78),
13010    (79, 79),
13011    (80, 80),
13012    (81, 81),
13013    (82, 82),
13014    (83, 83),
13015    (84, 84),
13016    (85, 85),
13017    (86, 86),
13018    (87, 87),
13019    (88, 88),
13020    (89, 89),
13021    (90, 90),
13022    (91, 91),
13023    (92, 92),
13024    (93, 93),
13025    (94, 94),
13026    (95, 95),
13027    (96, 96),
13028    (97, 97),
13029    (98, 98),
13030    (99, 99),
13031    (100, 100),
13032    (101, 101),
13033    (102, 102),
13034    (103, 103),
13035    (104, 104),
13036    (105, 105),
13037    (106, 106),
13038    (107, 107),
13039    (108, 108),
13040    (109, 109),
13041    (110, 110),
13042    (111, 111),
13043    (112, 112),
13044    (113, 113),
13045    (114, 114),
13046    (115, 115),
13047    (116, 116),
13048    (117, 117),
13049    (118, 118),
13050    (119, 119),
13051    (120, 120),
13052    (121, 121),
13053    (122, 122),
13054    (123, 123),
13055    (124, 124),
13056    (125, 125),
13057    (126, 126),
13058    (127, 28),
13059];
13060
13061impl_ebcdic_encoder_and_decoder!(
13062    IBM905,
13063    "IBM905",
13064    IBM905Encoder,
13065    IBM905Decoder,
13066    IBM_905_ENCODE_TABLE,
13067    IBM_905_DECODE_TABLE
13068);
13069const IBM_905_DECODE_TABLE: [char; 256] = [
13070    '\u{0}',
13071    '\u{1}',
13072    '\u{2}',
13073    '\u{3}',
13074    '\u{9c}',
13075    '\u{9}',
13076    '\u{86}',
13077    '\u{7f}',
13078    '\u{97}',
13079    '\u{8d}',
13080    '\u{8e}',
13081    '\u{b}',
13082    '\u{c}',
13083    '\u{d}',
13084    '\u{e}',
13085    '\u{f}',
13086    '\u{10}',
13087    '\u{11}',
13088    '\u{12}',
13089    '\u{13}',
13090    '\u{9d}',
13091    '\u{85}',
13092    '\u{8}',
13093    '\u{87}',
13094    '\u{18}',
13095    '\u{19}',
13096    '\u{92}',
13097    '\u{8f}',
13098    '\u{1c}',
13099    '\u{1d}',
13100    '\u{1e}',
13101    '\u{1f}',
13102    '\u{80}',
13103    '\u{81}',
13104    '\u{82}',
13105    '\u{83}',
13106    '\u{84}',
13107    '\u{a}',
13108    '\u{17}',
13109    '\u{1b}',
13110    '\u{88}',
13111    '\u{89}',
13112    '\u{8a}',
13113    '\u{8b}',
13114    '\u{8c}',
13115    '\u{5}',
13116    '\u{6}',
13117    '\u{7}',
13118    '\u{90}',
13119    '\u{91}',
13120    '\u{16}',
13121    '\u{93}',
13122    '\u{94}',
13123    '\u{95}',
13124    '\u{96}',
13125    '\u{4}',
13126    '\u{98}',
13127    '\u{99}',
13128    '\u{9a}',
13129    '\u{9b}',
13130    '\u{14}',
13131    '\u{15}',
13132    '\u{9e}',
13133    '\u{1a}',
13134    '\u{20}',
13135    '\u{a0}',
13136    '\u{e2}',
13137    '\u{e4}',
13138    '\u{e0}',
13139    '\u{e1}',
13140    char::REPLACEMENT_CHARACTER,
13141    '\u{10b}',
13142    '\u{7b}',
13143    '\u{f1}',
13144    '\u{c7}',
13145    '\u{2e}',
13146    '\u{3c}',
13147    '\u{28}',
13148    '\u{2b}',
13149    '\u{21}',
13150    '\u{26}',
13151    '\u{e9}',
13152    '\u{ea}',
13153    '\u{eb}',
13154    '\u{e8}',
13155    '\u{ed}',
13156    '\u{ee}',
13157    '\u{ef}',
13158    '\u{ec}',
13159    '\u{df}',
13160    '\u{11e}',
13161    '\u{130}',
13162    '\u{2a}',
13163    '\u{29}',
13164    '\u{3b}',
13165    '\u{5e}',
13166    '\u{2d}',
13167    '\u{2f}',
13168    '\u{c2}',
13169    '\u{c4}',
13170    '\u{c0}',
13171    '\u{c1}',
13172    char::REPLACEMENT_CHARACTER,
13173    '\u{10a}',
13174    '\u{5b}',
13175    '\u{d1}',
13176    '\u{15f}',
13177    '\u{2c}',
13178    '\u{25}',
13179    '\u{5f}',
13180    '\u{3e}',
13181    '\u{3f}',
13182    char::REPLACEMENT_CHARACTER,
13183    '\u{c9}',
13184    '\u{ca}',
13185    '\u{cb}',
13186    '\u{c8}',
13187    '\u{cd}',
13188    '\u{ce}',
13189    '\u{cf}',
13190    '\u{cc}',
13191    '\u{131}',
13192    '\u{3a}',
13193    '\u{d6}',
13194    '\u{15e}',
13195    '\u{27}',
13196    '\u{3d}',
13197    '\u{dc}',
13198    '\u{2d8}',
13199    '\u{61}',
13200    '\u{62}',
13201    '\u{63}',
13202    '\u{64}',
13203    '\u{65}',
13204    '\u{66}',
13205    '\u{67}',
13206    '\u{68}',
13207    '\u{69}',
13208    '\u{127}',
13209    '\u{109}',
13210    '\u{15d}',
13211    '\u{16d}',
13212    char::REPLACEMENT_CHARACTER,
13213    '\u{7c}',
13214    '\u{b0}',
13215    '\u{6a}',
13216    '\u{6b}',
13217    '\u{6c}',
13218    '\u{6d}',
13219    '\u{6e}',
13220    '\u{6f}',
13221    '\u{70}',
13222    '\u{71}',
13223    '\u{72}',
13224    '\u{125}',
13225    '\u{11d}',
13226    '\u{135}',
13227    '\u{b8}',
13228    char::REPLACEMENT_CHARACTER,
13229    '\u{a4}',
13230    '\u{b5}',
13231    '\u{f6}',
13232    '\u{73}',
13233    '\u{74}',
13234    '\u{75}',
13235    '\u{76}',
13236    '\u{77}',
13237    '\u{78}',
13238    '\u{79}',
13239    '\u{7a}',
13240    '\u{126}',
13241    '\u{108}',
13242    '\u{15c}',
13243    '\u{16c}',
13244    char::REPLACEMENT_CHARACTER,
13245    '\u{40}',
13246    '\u{2d9}',
13247    '\u{a3}',
13248    '\u{17c}',
13249    '\u{7d}',
13250    '\u{17b}',
13251    '\u{a7}',
13252    '\u{5d}',
13253    '\u{b7}',
13254    '\u{bd}',
13255    '\u{24}',
13256    '\u{124}',
13257    '\u{11c}',
13258    '\u{134}',
13259    '\u{a8}',
13260    '\u{b4}',
13261    '\u{d7}',
13262    '\u{e7}',
13263    '\u{41}',
13264    '\u{42}',
13265    '\u{43}',
13266    '\u{44}',
13267    '\u{45}',
13268    '\u{46}',
13269    '\u{47}',
13270    '\u{48}',
13271    '\u{49}',
13272    '\u{ad}',
13273    '\u{f4}',
13274    '\u{7e}',
13275    '\u{f2}',
13276    '\u{f3}',
13277    '\u{121}',
13278    '\u{11f}',
13279    '\u{4a}',
13280    '\u{4b}',
13281    '\u{4c}',
13282    '\u{4d}',
13283    '\u{4e}',
13284    '\u{4f}',
13285    '\u{50}',
13286    '\u{51}',
13287    '\u{52}',
13288    '\u{60}',
13289    '\u{fb}',
13290    '\u{5c}',
13291    '\u{f9}',
13292    '\u{fa}',
13293    char::REPLACEMENT_CHARACTER,
13294    '\u{fc}',
13295    '\u{f7}',
13296    '\u{53}',
13297    '\u{54}',
13298    '\u{55}',
13299    '\u{56}',
13300    '\u{57}',
13301    '\u{58}',
13302    '\u{59}',
13303    '\u{5a}',
13304    '\u{b2}',
13305    '\u{d4}',
13306    '\u{23}',
13307    '\u{d2}',
13308    '\u{d3}',
13309    '\u{120}',
13310    '\u{30}',
13311    '\u{31}',
13312    '\u{32}',
13313    '\u{33}',
13314    '\u{34}',
13315    '\u{35}',
13316    '\u{36}',
13317    '\u{37}',
13318    '\u{38}',
13319    '\u{39}',
13320    '\u{b3}',
13321    '\u{db}',
13322    '\u{22}',
13323    '\u{d9}',
13324    '\u{da}',
13325    '\u{9f}',
13326];
13327const IBM_905_ENCODE_TABLE: &[(u16, u8)] = &[
13328    (0, 0),
13329    (1, 1),
13330    (2, 2),
13331    (3, 3),
13332    (4, 55),
13333    (5, 45),
13334    (6, 46),
13335    (7, 47),
13336    (8, 22),
13337    (9, 5),
13338    (10, 37),
13339    (11, 11),
13340    (12, 12),
13341    (13, 13),
13342    (14, 14),
13343    (15, 15),
13344    (16, 16),
13345    (17, 17),
13346    (18, 18),
13347    (19, 19),
13348    (20, 60),
13349    (21, 61),
13350    (22, 50),
13351    (23, 38),
13352    (24, 24),
13353    (25, 25),
13354    (26, 63),
13355    (27, 39),
13356    (28, 28),
13357    (29, 29),
13358    (30, 30),
13359    (31, 31),
13360    (32, 64),
13361    (33, 79),
13362    (34, 252),
13363    (35, 236),
13364    (36, 185),
13365    (37, 108),
13366    (38, 80),
13367    (39, 125),
13368    (40, 77),
13369    (41, 93),
13370    (42, 92),
13371    (43, 78),
13372    (44, 107),
13373    (45, 96),
13374    (46, 75),
13375    (47, 97),
13376    (48, 240),
13377    (49, 241),
13378    (50, 242),
13379    (51, 243),
13380    (52, 244),
13381    (53, 245),
13382    (54, 246),
13383    (55, 247),
13384    (56, 248),
13385    (57, 249),
13386    (58, 122),
13387    (59, 94),
13388    (60, 76),
13389    (61, 126),
13390    (62, 110),
13391    (63, 111),
13392    (64, 175),
13393    (65, 193),
13394    (66, 194),
13395    (67, 195),
13396    (68, 196),
13397    (69, 197),
13398    (70, 198),
13399    (71, 199),
13400    (72, 200),
13401    (73, 201),
13402    (74, 209),
13403    (75, 210),
13404    (76, 211),
13405    (77, 212),
13406    (78, 213),
13407    (79, 214),
13408    (80, 215),
13409    (81, 216),
13410    (82, 217),
13411    (83, 226),
13412    (84, 227),
13413    (85, 228),
13414    (86, 229),
13415    (87, 230),
13416    (88, 231),
13417    (89, 232),
13418    (90, 233),
13419    (91, 104),
13420    (92, 220),
13421    (93, 182),
13422    (94, 95),
13423    (95, 109),
13424    (96, 218),
13425    (97, 129),
13426    (98, 130),
13427    (99, 131),
13428    (100, 132),
13429    (101, 133),
13430    (102, 134),
13431    (103, 135),
13432    (104, 136),
13433    (105, 137),
13434    (106, 145),
13435    (107, 146),
13436    (108, 147),
13437    (109, 148),
13438    (110, 149),
13439    (111, 150),
13440    (112, 151),
13441    (113, 152),
13442    (114, 153),
13443    (115, 162),
13444    (116, 163),
13445    (117, 164),
13446    (118, 165),
13447    (119, 166),
13448    (120, 167),
13449    (121, 168),
13450    (122, 169),
13451    (123, 72),
13452    (124, 143),
13453    (125, 179),
13454    (126, 204),
13455    (127, 7),
13456    (128, 32),
13457    (129, 33),
13458    (130, 34),
13459    (131, 35),
13460    (132, 36),
13461    (133, 21),
13462    (134, 6),
13463    (135, 23),
13464    (136, 40),
13465    (137, 41),
13466    (138, 42),
13467    (139, 43),
13468    (140, 44),
13469    (141, 9),
13470    (142, 10),
13471    (143, 27),
13472    (144, 48),
13473    (145, 49),
13474    (146, 26),
13475    (147, 51),
13476    (148, 52),
13477    (149, 53),
13478    (150, 54),
13479    (151, 8),
13480    (152, 56),
13481    (153, 57),
13482    (154, 58),
13483    (155, 59),
13484    (156, 4),
13485    (157, 20),
13486    (158, 62),
13487    (159, 255),
13488    (160, 65),
13489    (163, 177),
13490    (164, 159),
13491    (167, 181),
13492    (168, 189),
13493    (173, 202),
13494    (176, 144),
13495    (178, 234),
13496    (179, 250),
13497    (180, 190),
13498    (181, 160),
13499    (183, 183),
13500    (184, 157),
13501    (189, 184),
13502    (192, 100),
13503    (193, 101),
13504    (194, 98),
13505    (196, 99),
13506    (199, 74),
13507    (200, 116),
13508    (201, 113),
13509    (202, 114),
13510    (203, 115),
13511    (204, 120),
13512    (205, 117),
13513    (206, 118),
13514    (207, 119),
13515    (209, 105),
13516    (210, 237),
13517    (211, 238),
13518    (212, 235),
13519    (214, 123),
13520    (215, 191),
13521    (217, 253),
13522    (218, 254),
13523    (219, 251),
13524    (220, 127),
13525    (223, 89),
13526    (224, 68),
13527    (225, 69),
13528    (226, 66),
13529    (228, 67),
13530    (231, 192),
13531    (232, 84),
13532    (233, 81),
13533    (234, 82),
13534    (235, 83),
13535    (236, 88),
13536    (237, 85),
13537    (238, 86),
13538    (239, 87),
13539    (241, 73),
13540    (242, 205),
13541    (243, 206),
13542    (244, 203),
13543    (246, 161),
13544    (247, 225),
13545    (249, 221),
13546    (250, 222),
13547    (251, 219),
13548    (252, 224),
13549    (264, 171),
13550    (265, 139),
13551    (266, 103),
13552    (267, 71),
13553    (284, 187),
13554    (285, 155),
13555    (286, 90),
13556    (287, 208),
13557    (288, 239),
13558    (289, 207),
13559    (292, 186),
13560    (293, 154),
13561    (294, 170),
13562    (295, 138),
13563    (304, 91),
13564    (305, 121),
13565    (308, 188),
13566    (309, 156),
13567    (348, 172),
13568    (349, 140),
13569    (350, 124),
13570    (351, 106),
13571    (364, 173),
13572    (365, 141),
13573    (379, 180),
13574    (380, 178),
13575    (728, 128),
13576    (729, 176),
13577];
13578
13579impl_ebcdic_encoder_and_decoder!(
13580    IBM918,
13581    "IBM918",
13582    IBM918Encoder,
13583    IBM918Decoder,
13584    IBM_918_ENCODE_TABLE,
13585    IBM_918_DECODE_TABLE
13586);
13587const IBM_918_DECODE_TABLE: [char; 256] = [
13588    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13589    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13590    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13591    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13592    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13593    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13594    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13595    '\u{a0}', '\u{60c}', '\u{61b}', '\u{61f}', '\u{fe81}', '\u{fe8d}', '\u{fe8e}', '\u{f8fb}',
13596    '\u{fe8f}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{fe91}',
13597    '\u{fb56}', '\u{fb58}', '\u{fe93}', '\u{fe95}', '\u{fe97}', '\u{fb66}', '\u{fb68}', '\u{fe99}',
13598    '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{fe9b}',
13599    '\u{fe9d}', '\u{fe9f}', '\u{fb7a}', '\u{fb7c}', '\u{fea1}', '\u{fea3}', '\u{fea5}', '\u{60}',
13600    '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{6f0}', '\u{6f1}', '\u{6f2}', '\u{6f3}',
13601    '\u{6f4}', '\u{6f5}', '\u{6f6}', '\u{6f7}', '\u{6f8}', '\u{6f9}', '\u{3a}', '\u{23}', '\u{40}',
13602    '\u{27}', '\u{3d}', '\u{22}', '\u{fea7}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
13603    '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{fea9}', '\u{fb88}', '\u{feab}', '\u{fead}',
13604    '\u{fb8c}', '\u{feaf}', '\u{fb8a}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}',
13605    '\u{70}', '\u{71}', '\u{72}', '\u{feb1}', '\u{feb3}', '\u{feb5}', '\u{feb7}', '\u{feb9}',
13606    '\u{febb}', '\u{febd}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}',
13607    '\u{79}', '\u{7a}', '\u{febf}', '\u{fec3}', '\u{fec7}', '\u{fec9}', '\u{feca}', '\u{fecb}',
13608    '\u{fecc}', '\u{fecd}', '\u{fece}', '\u{fecf}', '\u{fed0}', '\u{fed1}', '\u{fed3}', '\u{fed5}',
13609    '\u{fed7}', '\u{fb8e}', '\u{fedb}', '\u{7c}', '\u{fb92}', '\u{fb94}', '\u{fedd}', '\u{fedf}',
13610    '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}',
13611    '\u{49}', '\u{ad}', '\u{fee0}', '\u{fee1}', '\u{fee3}', '\u{fb9e}', '\u{fee5}', '\u{7d}',
13612    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13613    '\u{fee7}', '\u{fe85}', '\u{feed}', '\u{fba6}', '\u{fba8}', '\u{fba9}', '\u{5c}', '\u{fbaa}',
13614    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{fe80}',
13615    '\u{fe89}', '\u{fe8a}', '\u{fe8b}', '\u{fbfc}', '\u{fbfd}', '\u{30}', '\u{31}', '\u{32}',
13616    '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{fbfe}', '\u{fbb0}',
13617    '\u{fbae}', '\u{fe7c}', '\u{fe7d}', '\u{9f}',
13618];
13619const IBM_918_ENCODE_TABLE: &[(u16, u8)] = &[
13620    (0, 0),
13621    (1, 1),
13622    (2, 2),
13623    (3, 3),
13624    (4, 55),
13625    (5, 45),
13626    (6, 46),
13627    (7, 47),
13628    (8, 22),
13629    (9, 5),
13630    (10, 37),
13631    (11, 11),
13632    (12, 12),
13633    (13, 13),
13634    (14, 14),
13635    (15, 15),
13636    (16, 16),
13637    (17, 17),
13638    (18, 18),
13639    (19, 19),
13640    (20, 60),
13641    (21, 61),
13642    (22, 50),
13643    (23, 38),
13644    (24, 24),
13645    (25, 25),
13646    (26, 63),
13647    (27, 39),
13648    (28, 28),
13649    (29, 29),
13650    (30, 30),
13651    (31, 31),
13652    (32, 64),
13653    (33, 79),
13654    (34, 127),
13655    (35, 123),
13656    (36, 91),
13657    (37, 108),
13658    (38, 80),
13659    (39, 125),
13660    (40, 77),
13661    (41, 93),
13662    (42, 92),
13663    (43, 78),
13664    (44, 107),
13665    (45, 96),
13666    (46, 75),
13667    (47, 97),
13668    (48, 240),
13669    (49, 241),
13670    (50, 242),
13671    (51, 243),
13672    (52, 244),
13673    (53, 245),
13674    (54, 246),
13675    (55, 247),
13676    (56, 248),
13677    (57, 249),
13678    (58, 122),
13679    (59, 94),
13680    (60, 76),
13681    (61, 126),
13682    (62, 110),
13683    (63, 111),
13684    (64, 124),
13685    (65, 193),
13686    (66, 194),
13687    (67, 195),
13688    (68, 196),
13689    (69, 197),
13690    (70, 198),
13691    (71, 199),
13692    (72, 200),
13693    (73, 201),
13694    (74, 209),
13695    (75, 210),
13696    (76, 211),
13697    (77, 212),
13698    (78, 213),
13699    (79, 214),
13700    (80, 215),
13701    (81, 216),
13702    (82, 217),
13703    (83, 226),
13704    (84, 227),
13705    (85, 228),
13706    (86, 229),
13707    (87, 230),
13708    (88, 231),
13709    (89, 232),
13710    (90, 233),
13711    (91, 74),
13712    (92, 224),
13713    (93, 90),
13714    (94, 95),
13715    (95, 109),
13716    (96, 106),
13717    (97, 129),
13718    (98, 130),
13719    (99, 131),
13720    (100, 132),
13721    (101, 133),
13722    (102, 134),
13723    (103, 135),
13724    (104, 136),
13725    (105, 137),
13726    (106, 145),
13727    (107, 146),
13728    (108, 147),
13729    (109, 148),
13730    (110, 149),
13731    (111, 150),
13732    (112, 151),
13733    (113, 152),
13734    (114, 153),
13735    (115, 162),
13736    (116, 163),
13737    (117, 164),
13738    (118, 165),
13739    (119, 166),
13740    (120, 167),
13741    (121, 168),
13742    (122, 169),
13743    (123, 192),
13744    (124, 187),
13745    (125, 208),
13746    (126, 161),
13747    (127, 7),
13748    (128, 32),
13749    (129, 33),
13750    (130, 34),
13751    (131, 35),
13752    (132, 36),
13753    (133, 21),
13754    (134, 6),
13755    (135, 23),
13756    (136, 40),
13757    (137, 41),
13758    (138, 42),
13759    (139, 43),
13760    (140, 44),
13761    (141, 9),
13762    (142, 10),
13763    (143, 27),
13764    (144, 48),
13765    (145, 49),
13766    (146, 26),
13767    (147, 51),
13768    (148, 52),
13769    (149, 53),
13770    (150, 54),
13771    (151, 8),
13772    (152, 56),
13773    (153, 57),
13774    (154, 58),
13775    (155, 59),
13776    (156, 4),
13777    (157, 20),
13778    (158, 62),
13779    (159, 255),
13780    (160, 65),
13781    (173, 202),
13782    (1548, 66),
13783    (1563, 67),
13784    (1567, 68),
13785    (1776, 112),
13786    (1777, 113),
13787    (1778, 114),
13788    (1779, 115),
13789    (1780, 116),
13790    (1781, 117),
13791    (1782, 118),
13792    (1783, 119),
13793    (1784, 120),
13794    (1785, 121),
13795    (63739, 72),
13796    (64342, 82),
13797    (64344, 83),
13798    (64358, 87),
13799    (64360, 88),
13800    (64378, 101),
13801    (64380, 102),
13802    (64392, 139),
13803    (64394, 144),
13804    (64396, 142),
13805    (64398, 185),
13806    (64402, 188),
13807    (64404, 189),
13808    (64414, 206),
13809    (64422, 221),
13810    (64424, 222),
13811    (64425, 223),
13812    (64426, 225),
13813    (64430, 252),
13814    (64432, 251),
13815    (64508, 238),
13816    (64509, 239),
13817    (64510, 250),
13818    (65148, 253),
13819    (65149, 254),
13820    (65152, 234),
13821    (65153, 69),
13822    (65157, 219),
13823    (65161, 235),
13824    (65162, 236),
13825    (65163, 237),
13826    (65165, 70),
13827    (65166, 71),
13828    (65167, 73),
13829    (65169, 81),
13830    (65171, 84),
13831    (65173, 85),
13832    (65175, 86),
13833    (65177, 89),
13834    (65179, 98),
13835    (65181, 99),
13836    (65183, 100),
13837    (65185, 103),
13838    (65187, 104),
13839    (65189, 105),
13840    (65191, 128),
13841    (65193, 138),
13842    (65195, 140),
13843    (65197, 141),
13844    (65199, 143),
13845    (65201, 154),
13846    (65203, 155),
13847    (65205, 156),
13848    (65207, 157),
13849    (65209, 158),
13850    (65211, 159),
13851    (65213, 160),
13852    (65215, 170),
13853    (65219, 171),
13854    (65223, 172),
13855    (65225, 173),
13856    (65226, 174),
13857    (65227, 175),
13858    (65228, 176),
13859    (65229, 177),
13860    (65230, 178),
13861    (65231, 179),
13862    (65232, 180),
13863    (65233, 181),
13864    (65235, 182),
13865    (65237, 183),
13866    (65239, 184),
13867    (65243, 186),
13868    (65245, 190),
13869    (65247, 191),
13870    (65248, 203),
13871    (65249, 204),
13872    (65251, 205),
13873    (65253, 207),
13874    (65255, 218),
13875    (65261, 220),
13876];
13877
13878impl_ebcdic_encoder_and_decoder!(
13879    IBM1026,
13880    "IBM1026",
13881    IBM1026Encoder,
13882    IBM1026Decoder,
13883    IBM_1026_ENCODE_TABLE,
13884    IBM_1026_DECODE_TABLE
13885);
13886const IBM_1026_DECODE_TABLE: [char; 256] = [
13887    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13888    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13889    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13890    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13891    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13892    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13893    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13894    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{7b}', '\u{f1}',
13895    '\u{c7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
13896    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{11e}', '\u{130}',
13897    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
13898    '\u{c1}', '\u{c3}', '\u{c5}', '\u{5b}', '\u{d1}', '\u{15f}', '\u{2c}', '\u{25}', '\u{5f}',
13899    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
13900    '\u{cf}', '\u{cc}', '\u{131}', '\u{3a}', '\u{d6}', '\u{15e}', '\u{27}', '\u{3d}', '\u{dc}',
13901    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
13902    '\u{69}', '\u{ab}', '\u{bb}', '\u{7d}', '\u{60}', '\u{a6}', '\u{b1}', '\u{b0}', '\u{6a}',
13903    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
13904    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
13905    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{5d}',
13906    '\u{24}', '\u{40}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
13907    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
13908    '\u{d7}', '\u{e7}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
13909    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{11f}',
13910    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13911    '\u{b9}', '\u{fb}', '\u{5c}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{fc}', '\u{f7}', '\u{53}',
13912    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
13913    '\u{23}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
13914    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{22}', '\u{d9}',
13915    '\u{da}', '\u{9f}',
13916];
13917const IBM_1026_ENCODE_TABLE: &[(u16, u8)] = &[
13918    (0, 0),
13919    (1, 1),
13920    (2, 2),
13921    (3, 3),
13922    (4, 55),
13923    (5, 45),
13924    (6, 46),
13925    (7, 47),
13926    (8, 22),
13927    (9, 5),
13928    (10, 37),
13929    (11, 11),
13930    (12, 12),
13931    (13, 13),
13932    (14, 14),
13933    (15, 15),
13934    (16, 16),
13935    (17, 17),
13936    (18, 18),
13937    (19, 19),
13938    (20, 60),
13939    (21, 61),
13940    (22, 50),
13941    (23, 38),
13942    (24, 24),
13943    (25, 25),
13944    (26, 63),
13945    (27, 39),
13946    (28, 28),
13947    (29, 29),
13948    (30, 30),
13949    (31, 31),
13950    (32, 64),
13951    (33, 79),
13952    (34, 252),
13953    (35, 236),
13954    (36, 173),
13955    (37, 108),
13956    (38, 80),
13957    (39, 125),
13958    (40, 77),
13959    (41, 93),
13960    (42, 92),
13961    (43, 78),
13962    (44, 107),
13963    (45, 96),
13964    (46, 75),
13965    (47, 97),
13966    (48, 240),
13967    (49, 241),
13968    (50, 242),
13969    (51, 243),
13970    (52, 244),
13971    (53, 245),
13972    (54, 246),
13973    (55, 247),
13974    (56, 248),
13975    (57, 249),
13976    (58, 122),
13977    (59, 94),
13978    (60, 76),
13979    (61, 126),
13980    (62, 110),
13981    (63, 111),
13982    (64, 174),
13983    (65, 193),
13984    (66, 194),
13985    (67, 195),
13986    (68, 196),
13987    (69, 197),
13988    (70, 198),
13989    (71, 199),
13990    (72, 200),
13991    (73, 201),
13992    (74, 209),
13993    (75, 210),
13994    (76, 211),
13995    (77, 212),
13996    (78, 213),
13997    (79, 214),
13998    (80, 215),
13999    (81, 216),
14000    (82, 217),
14001    (83, 226),
14002    (84, 227),
14003    (85, 228),
14004    (86, 229),
14005    (87, 230),
14006    (88, 231),
14007    (89, 232),
14008    (90, 233),
14009    (91, 104),
14010    (92, 220),
14011    (93, 172),
14012    (94, 95),
14013    (95, 109),
14014    (96, 141),
14015    (97, 129),
14016    (98, 130),
14017    (99, 131),
14018    (100, 132),
14019    (101, 133),
14020    (102, 134),
14021    (103, 135),
14022    (104, 136),
14023    (105, 137),
14024    (106, 145),
14025    (107, 146),
14026    (108, 147),
14027    (109, 148),
14028    (110, 149),
14029    (111, 150),
14030    (112, 151),
14031    (113, 152),
14032    (114, 153),
14033    (115, 162),
14034    (116, 163),
14035    (117, 164),
14036    (118, 165),
14037    (119, 166),
14038    (120, 167),
14039    (121, 168),
14040    (122, 169),
14041    (123, 72),
14042    (124, 187),
14043    (125, 140),
14044    (126, 204),
14045    (127, 7),
14046    (128, 32),
14047    (129, 33),
14048    (130, 34),
14049    (131, 35),
14050    (132, 36),
14051    (133, 21),
14052    (134, 6),
14053    (135, 23),
14054    (136, 40),
14055    (137, 41),
14056    (138, 42),
14057    (139, 43),
14058    (140, 44),
14059    (141, 9),
14060    (142, 10),
14061    (143, 27),
14062    (144, 48),
14063    (145, 49),
14064    (146, 26),
14065    (147, 51),
14066    (148, 52),
14067    (149, 53),
14068    (150, 54),
14069    (151, 8),
14070    (152, 56),
14071    (153, 57),
14072    (154, 58),
14073    (155, 59),
14074    (156, 4),
14075    (157, 20),
14076    (158, 62),
14077    (159, 255),
14078    (160, 65),
14079    (161, 170),
14080    (162, 176),
14081    (163, 177),
14082    (164, 159),
14083    (165, 178),
14084    (166, 142),
14085    (167, 181),
14086    (168, 189),
14087    (169, 180),
14088    (170, 154),
14089    (171, 138),
14090    (172, 186),
14091    (173, 202),
14092    (174, 175),
14093    (175, 188),
14094    (176, 144),
14095    (177, 143),
14096    (178, 234),
14097    (179, 250),
14098    (180, 190),
14099    (181, 160),
14100    (182, 182),
14101    (183, 179),
14102    (184, 157),
14103    (185, 218),
14104    (186, 155),
14105    (187, 139),
14106    (188, 183),
14107    (189, 184),
14108    (190, 185),
14109    (191, 171),
14110    (192, 100),
14111    (193, 101),
14112    (194, 98),
14113    (195, 102),
14114    (196, 99),
14115    (197, 103),
14116    (198, 158),
14117    (199, 74),
14118    (200, 116),
14119    (201, 113),
14120    (202, 114),
14121    (203, 115),
14122    (204, 120),
14123    (205, 117),
14124    (206, 118),
14125    (207, 119),
14126    (209, 105),
14127    (210, 237),
14128    (211, 238),
14129    (212, 235),
14130    (213, 239),
14131    (214, 123),
14132    (215, 191),
14133    (216, 128),
14134    (217, 253),
14135    (218, 254),
14136    (219, 251),
14137    (220, 127),
14138    (223, 89),
14139    (224, 68),
14140    (225, 69),
14141    (226, 66),
14142    (227, 70),
14143    (228, 67),
14144    (229, 71),
14145    (230, 156),
14146    (231, 192),
14147    (232, 84),
14148    (233, 81),
14149    (234, 82),
14150    (235, 83),
14151    (236, 88),
14152    (237, 85),
14153    (238, 86),
14154    (239, 87),
14155    (241, 73),
14156    (242, 205),
14157    (243, 206),
14158    (244, 203),
14159    (245, 207),
14160    (246, 161),
14161    (247, 225),
14162    (248, 112),
14163    (249, 221),
14164    (250, 222),
14165    (251, 219),
14166    (252, 224),
14167    (255, 223),
14168    (286, 90),
14169    (287, 208),
14170    (304, 91),
14171    (305, 121),
14172    (350, 124),
14173    (351, 106),
14174];
14175
14176#[cfg(test)]
14177mod tests {
14178    use super::*;
14179
14180    #[test]
14181    fn ebcdic_decoding_tests() {
14182        let doc = [
14183            0x4c, 0x6f, 0xa7, 0x94, 0x93, 0x40, 0xa5, 0x85, 0x99, 0xa2, 0x89, 0x96, 0x95, 0x7e,
14184            0x7f, 0xf1, 0x4b, 0xf0, 0x7f, 0x40, 0x85, 0x95, 0x83, 0x96, 0x84, 0x89, 0x95, 0x87,
14185            0x7e, 0x7f, 0xc3, 0x97, 0xf0, 0xf3, 0xf7, 0x7f, 0x6f, 0x6e, 0x25, 0x4c, 0x97, 0x6e,
14186            0x84, 0x81, 0xa3, 0x81, 0x4c, 0x61, 0x97, 0x6e,
14187        ];
14188
14189        let mut buf = String::with_capacity(1024);
14190        IBM037Decoder.decode(&doc, &mut buf, true).ok();
14191        assert_eq!(
14192            buf,
14193            "<?xml version=\"1.0\" encoding=\"Cp037\"?>\n<p>data</p>"
14194        );
14195    }
14196}