use crate::{DecodeError, Decoder, EncodeError, Encoder};
macro_rules! impl_ebcdic_encoder_and_decoder {
( $name:ident, $namelit:literal, $encoder:ident, $decoder:ident, $etable:ident, $dtable:ident ) => {
pub const $name: &str = $namelit;
#[allow(non_camel_case_types)]
pub struct $encoder;
impl Encoder for $encoder {
fn name(&self) -> &'static str {
$name
}
fn encode(
&mut self,
src: &str,
dst: &mut [u8],
finish: bool,
) -> Result<(usize, usize), EncodeError> {
if src.is_empty() {
return if finish {
Ok((0, 0))
} else {
Err(EncodeError::InputIsEmpty)
};
}
if dst.is_empty() {
return Err(EncodeError::OutputTooShort);
}
let (mut read, mut write) = (0, 0);
for c in src.chars() {
let b = c as u32;
read += c.len_utf8();
let pos = $etable
.binary_search_by_key(&b, |k| k.0 as u32)
.map_err(|_| EncodeError::Unmappable { read, write, c })?;
dst[write] = $etable[pos].1;
write += 1;
if write == dst.len() {
break;
}
}
Ok((read, write))
}
}
#[allow(non_camel_case_types)]
pub struct $decoder;
impl Decoder for $decoder {
fn name(&self) -> &'static str {
$name
}
fn decode(
&mut self,
src: &[u8],
dst: &mut String,
finish: bool,
) -> Result<(usize, usize), DecodeError> {
if src.is_empty() {
return if finish {
Ok((0, 0))
} else {
Err(DecodeError::InputIsEmpty)
};
}
let len = dst.capacity() - dst.len();
if len < 4 {
return Err(DecodeError::OutputTooShort);
}
let (mut read, mut write) = (0, 0);
for &b in src {
let c = $dtable[b as usize];
let l = c.len_utf8();
if write + l > len {
break;
}
read += 1;
if c == char::REPLACEMENT_CHARACTER {
return Err(DecodeError::Malformed {
read,
write,
length: 1,
offset: 0,
});
}
dst.push(c);
write += l;
}
Ok((read, write))
}
}
};
}
impl_ebcdic_encoder_and_decoder!(
IBM037,
"IBM037",
IBM037Encoder,
IBM037Decoder,
IBM_37_ENCODE_TABLE,
IBM_37_DECODE_TABLE
);
const IBM_37_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
'\u{a2}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{5e}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5b}', '\u{5d}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_37_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 90),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 186),
(92, 224),
(93, 187),
(94, 176),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 79),
(125, 208),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 74),
(163, 177),
(164, 159),
(165, 178),
(166, 106),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 95),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM273,
"IBM273",
IBM273Encoder,
IBM273Decoder,
IBM_273_ENCODE_TABLE,
IBM_273_DECODE_TABLE
);
const IBM_273_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
'\u{c4}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{7e}', '\u{dc}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{5b}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{df}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{fc}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{7d}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{d6}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{5c}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{5d}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_273_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 181),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 99),
(92, 236),
(93, 252),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 67),
(124, 187),
(125, 220),
(126, 89),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 204),
(167, 124),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 74),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 224),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 90),
(221, 173),
(222, 174),
(223, 161),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 192),
(229, 71),
(230, 156),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 106),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 208),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM274,
"IBM274",
IBM274Encoder,
IBM274Decoder,
IBM_274_ENCODE_TABLE,
IBM_274_DECODE_TABLE
);
const IBM_274_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
'\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
'\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
'\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_274_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 68),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(92, 72),
(93, 90),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 81),
(124, 187),
(125, 84),
(126, 189),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 221),
(167, 181),
(168, 161),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 124),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 224),
(232, 208),
(233, 192),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 106),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM275,
"IBM275",
IBM275Encoder,
IBM275Decoder,
IBM_275_ENCODE_TABLE,
IBM_275_DECODE_TABLE
);
const IBM_275_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{60}', '\u{e5}', '\u{a6}', '\u{f1}',
'\u{c9}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7d}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{24}', '\u{c7}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{40}', '\u{c5}', '\u{5d}', '\u{d1}', '\u{e7}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{5b}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{e3}', '\u{3a}', '\u{d5}', '\u{c3}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{f5}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{7b}', '\u{e9}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{23}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_275_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 239),
(36, 90),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 102),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 113),
(92, 224),
(93, 104),
(94, 95),
(95, 109),
(96, 70),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 207),
(124, 187),
(125, 81),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 72),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 124),
(196, 99),
(197, 103),
(198, 158),
(199, 91),
(200, 116),
(201, 74),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 123),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 121),
(228, 67),
(229, 71),
(230, 156),
(231, 106),
(232, 84),
(233, 208),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 192),
(246, 204),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM277,
"IBM277",
IBM277Encoder,
IBM277Decoder,
IBM_277_ENCODE_TABLE,
IBM_277_DECODE_TABLE
);
const IBM_277_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
'\u{23}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f8}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{a6}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{c6}', '\u{d8}', '\u{27}', '\u{3d}', '\u{22}',
'\u{40}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{7b}', '\u{b8}', '\u{5b}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{e6}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_277_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 74),
(36, 103),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 128),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 158),
(92, 224),
(93, 159),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 156),
(124, 187),
(125, 71),
(126, 220),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 90),
(165, 178),
(166, 112),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 91),
(198, 123),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 124),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 208),
(230, 192),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 106),
(249, 221),
(250, 222),
(251, 219),
(252, 161),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM278,
"IBM278",
IBM278Encoder,
IBM278Decoder,
IBM_278_ENCODE_TABLE,
IBM_278_DECODE_TABLE
);
const IBM_278_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
'\u{a7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{60}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{23}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{5c}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{e9}', '\u{3a}', '\u{c4}', '\u{d6}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5b}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{c9}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{40}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_278_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 99),
(36, 103),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 236),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 181),
(92, 113),
(93, 159),
(94, 95),
(95, 109),
(96, 81),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 67),
(124, 187),
(125, 71),
(126, 220),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 90),
(165, 178),
(166, 204),
(167, 74),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 123),
(197, 91),
(198, 158),
(199, 104),
(200, 116),
(201, 224),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 124),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 192),
(229, 208),
(230, 156),
(231, 72),
(232, 84),
(233, 121),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 106),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 161),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM280,
"IBM280",
IBM280Encoder,
IBM280Decoder,
IBM_280_ENCODE_TABLE,
IBM_280_DECODE_TABLE
);
const IBM_280_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{7b}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
'\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{5d}', '\u{ea}',
'\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{7e}', '\u{df}', '\u{e9}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f2}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{f9}', '\u{3a}', '\u{a3}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{ec}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{e0}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{a6}', '\u{f3}', '\u{f5}', '\u{e8}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{60}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_280_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 177),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 181),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 144),
(92, 72),
(93, 81),
(94, 95),
(95, 109),
(96, 221),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 68),
(124, 187),
(125, 84),
(126, 88),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 123),
(164, 159),
(165, 178),
(166, 205),
(167, 124),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 74),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 192),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 224),
(232, 208),
(233, 90),
(234, 82),
(235, 83),
(236, 161),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 106),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 121),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM284,
"IBM284",
IBM284Encoder,
IBM284Decoder,
IBM_284_ENCODE_TABLE,
IBM_284_DECODE_TABLE
);
const IBM_284_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{a6}',
'\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{23}', '\u{f1}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{d1}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{21}', '\u{af}', '\u{7e}', '\u{b4}',
'\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_284_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 187),
(34, 127),
(35, 105),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(92, 224),
(93, 90),
(94, 186),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 79),
(125, 208),
(126, 189),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 73),
(167, 181),
(168, 161),
(169, 180),
(170, 154),
(171, 138),
(172, 95),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 123),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 106),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM285,
"IBM285",
IBM285Encoder,
IBM285Decoder,
IBM_285_ENCODE_TABLE,
IBM_285_DECODE_TABLE
);
const IBM_285_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
'\u{24}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{a3}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{af}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{5b}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{5d}', '\u{7e}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_285_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 90),
(34, 127),
(35, 123),
(36, 74),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 177),
(92, 224),
(93, 187),
(94, 186),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 79),
(125, 208),
(126, 188),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 91),
(164, 159),
(165, 178),
(166, 106),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 95),
(173, 202),
(174, 175),
(175, 161),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM290,
"IBM290",
IBM290Encoder,
IBM290Decoder,
IBM_290_ENCODE_TABLE,
IBM_290_DECODE_TABLE
);
const IBM_290_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{9c}',
'\u{9}',
'\u{86}',
'\u{7f}',
'\u{97}',
'\u{8d}',
'\u{8e}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{9d}',
'\u{85}',
'\u{8}',
'\u{87}',
'\u{18}',
'\u{19}',
'\u{92}',
'\u{8f}',
'\u{1c}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{a}',
'\u{17}',
'\u{1b}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{90}',
'\u{91}',
'\u{16}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{4}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{14}',
'\u{15}',
'\u{9e}',
'\u{1a}',
'\u{20}',
'\u{ff61}',
'\u{ff62}',
'\u{ff63}',
'\u{ff64}',
'\u{ff65}',
'\u{ff66}',
'\u{ff67}',
'\u{ff68}',
'\u{ff69}',
'\u{a3}',
'\u{2e}',
'\u{3c}',
'\u{28}',
'\u{2b}',
'\u{7c}',
'\u{26}',
'\u{ff6a}',
'\u{ff6b}',
'\u{ff6c}',
'\u{ff6d}',
'\u{ff6e}',
'\u{ff6f}',
char::REPLACEMENT_CHARACTER,
'\u{ff70}',
char::REPLACEMENT_CHARACTER,
'\u{21}',
'\u{a5}',
'\u{2a}',
'\u{29}',
'\u{3b}',
'\u{ac}',
'\u{2d}',
'\u{2f}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
char::REPLACEMENT_CHARACTER,
'\u{2c}',
'\u{25}',
'\u{5f}',
'\u{3e}',
'\u{3f}',
'\u{5b}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{60}',
'\u{3a}',
'\u{23}',
'\u{40}',
'\u{27}',
'\u{3d}',
'\u{22}',
'\u{5d}',
'\u{ff71}',
'\u{ff72}',
'\u{ff73}',
'\u{ff74}',
'\u{ff75}',
'\u{ff76}',
'\u{ff77}',
'\u{ff78}',
'\u{ff79}',
'\u{ff7a}',
'\u{71}',
'\u{ff7b}',
'\u{ff7c}',
'\u{ff7d}',
'\u{ff7e}',
'\u{ff7f}',
'\u{ff80}',
'\u{ff81}',
'\u{ff82}',
'\u{ff83}',
'\u{ff84}',
'\u{ff85}',
'\u{ff86}',
'\u{ff87}',
'\u{ff88}',
'\u{ff89}',
'\u{72}',
char::REPLACEMENT_CHARACTER,
'\u{ff8a}',
'\u{ff8b}',
'\u{ff8c}',
'\u{7e}',
'\u{203e}',
'\u{ff8d}',
'\u{ff8e}',
'\u{ff8f}',
'\u{ff90}',
'\u{ff91}',
'\u{ff92}',
'\u{ff93}',
'\u{ff94}',
'\u{ff95}',
'\u{73}',
'\u{ff96}',
'\u{ff97}',
'\u{ff98}',
'\u{ff99}',
'\u{5e}',
'\u{a2}',
'\u{5c}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{ff9a}',
'\u{ff9b}',
'\u{ff9c}',
'\u{ff9d}',
'\u{ff9e}',
'\u{ff9f}',
'\u{7b}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{7d}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{24}',
char::REPLACEMENT_CHARACTER,
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{9f}',
];
const IBM_290_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 90),
(34, 127),
(35, 123),
(36, 224),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 112),
(92, 178),
(93, 128),
(94, 176),
(95, 109),
(96, 121),
(97, 98),
(98, 99),
(99, 100),
(100, 101),
(101, 102),
(102, 103),
(103, 104),
(104, 105),
(105, 113),
(106, 114),
(107, 115),
(108, 116),
(109, 117),
(110, 118),
(111, 119),
(112, 120),
(113, 139),
(114, 155),
(115, 171),
(116, 179),
(117, 180),
(118, 181),
(119, 182),
(120, 183),
(121, 184),
(122, 185),
(123, 192),
(124, 79),
(125, 208),
(126, 160),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(162, 177),
(163, 74),
(165, 91),
(172, 95),
(8254, 161),
(65377, 65),
(65378, 66),
(65379, 67),
(65380, 68),
(65381, 69),
(65382, 70),
(65383, 71),
(65384, 72),
(65385, 73),
(65386, 81),
(65387, 82),
(65388, 83),
(65389, 84),
(65390, 85),
(65391, 86),
(65392, 88),
(65393, 129),
(65394, 130),
(65395, 131),
(65396, 132),
(65397, 133),
(65398, 134),
(65399, 135),
(65400, 136),
(65401, 137),
(65402, 138),
(65403, 140),
(65404, 141),
(65405, 142),
(65406, 143),
(65407, 144),
(65408, 145),
(65409, 146),
(65410, 147),
(65411, 148),
(65412, 149),
(65413, 150),
(65414, 151),
(65415, 152),
(65416, 153),
(65417, 154),
(65418, 157),
(65419, 158),
(65420, 159),
(65421, 162),
(65422, 163),
(65423, 164),
(65424, 165),
(65425, 166),
(65426, 167),
(65427, 168),
(65428, 169),
(65429, 170),
(65430, 172),
(65431, 173),
(65432, 174),
(65433, 175),
(65434, 186),
(65435, 187),
(65436, 188),
(65437, 189),
(65438, 190),
(65439, 191),
];
impl_ebcdic_encoder_and_decoder!(
IBM297,
"IBM297",
IBM297Encoder,
IBM297Decoder,
IBM_297_ENCODE_TABLE,
IBM_297_DECODE_TABLE
);
const IBM_297_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
'\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
'\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a7}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{b5}', '\u{3a}', '\u{a3}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{60}', '\u{a8}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5d}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
'\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_297_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 177),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 68),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 144),
(92, 72),
(93, 181),
(94, 95),
(95, 109),
(96, 160),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 81),
(124, 187),
(125, 84),
(126, 189),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 123),
(164, 159),
(165, 178),
(166, 221),
(167, 90),
(168, 161),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 74),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 121),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 124),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 224),
(232, 208),
(233, 192),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 106),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM420,
"IBM420",
IBM420Encoder,
IBM420Decoder,
IBM_420_ENCODE_TABLE,
IBM_420_DECODE_TABLE
);
const IBM_420_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{9c}',
'\u{9}',
'\u{86}',
'\u{7f}',
'\u{97}',
'\u{8d}',
'\u{8e}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{9d}',
'\u{85}',
'\u{8}',
'\u{87}',
'\u{18}',
'\u{19}',
'\u{92}',
'\u{8f}',
'\u{1c}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{a}',
'\u{17}',
'\u{1b}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{90}',
'\u{91}',
'\u{16}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{4}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{14}',
'\u{15}',
'\u{9e}',
'\u{1a}',
'\u{20}',
'\u{a0}',
'\u{651}',
'\u{fe7d}',
'\u{640}',
'\u{200b}',
'\u{621}',
'\u{622}',
'\u{fe82}',
'\u{623}',
'\u{a2}',
'\u{2e}',
'\u{3c}',
'\u{28}',
'\u{2b}',
'\u{7c}',
'\u{26}',
'\u{fe84}',
'\u{624}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{626}',
'\u{627}',
'\u{fe8e}',
'\u{628}',
'\u{fe91}',
'\u{21}',
'\u{24}',
'\u{2a}',
'\u{29}',
'\u{3b}',
'\u{ac}',
'\u{2d}',
'\u{2f}',
'\u{629}',
'\u{62a}',
'\u{fe97}',
'\u{62b}',
'\u{fe9b}',
'\u{62c}',
'\u{fe9f}',
'\u{62d}',
'\u{a6}',
'\u{2c}',
'\u{25}',
'\u{5f}',
'\u{3e}',
'\u{3f}',
'\u{fea3}',
'\u{62e}',
'\u{fea7}',
'\u{62f}',
'\u{630}',
'\u{631}',
'\u{632}',
'\u{633}',
'\u{feb3}',
'\u{60c}',
'\u{3a}',
'\u{23}',
'\u{40}',
'\u{27}',
'\u{3d}',
'\u{22}',
'\u{634}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{feb7}',
'\u{635}',
'\u{febb}',
'\u{636}',
'\u{febf}',
'\u{637}',
'\u{638}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{639}',
'\u{feca}',
'\u{fecb}',
'\u{fecc}',
'\u{63a}',
'\u{fece}',
'\u{fecf}',
'\u{f7}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{fed0}',
'\u{641}',
'\u{fed3}',
'\u{642}',
'\u{fed7}',
'\u{643}',
'\u{fedb}',
'\u{644}',
'\u{fef5}',
'\u{fef6}',
'\u{fef7}',
'\u{fef8}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{fefb}',
'\u{fefc}',
'\u{fedf}',
'\u{645}',
'\u{fee3}',
'\u{646}',
'\u{fee7}',
'\u{647}',
'\u{61b}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{ad}',
'\u{feeb}',
char::REPLACEMENT_CHARACTER,
'\u{feec}',
char::REPLACEMENT_CHARACTER,
'\u{648}',
'\u{61f}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{649}',
'\u{fef0}',
'\u{64a}',
'\u{fef2}',
'\u{fef3}',
'\u{660}',
'\u{d7}',
char::REPLACEMENT_CHARACTER,
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{661}',
'\u{662}',
char::REPLACEMENT_CHARACTER,
'\u{663}',
'\u{664}',
'\u{665}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
char::REPLACEMENT_CHARACTER,
'\u{666}',
'\u{667}',
'\u{668}',
'\u{669}',
'\u{9f}',
];
const IBM_420_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 90),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(95, 109),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(124, 79),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(162, 74),
(166, 106),
(172, 95),
(173, 202),
(215, 224),
(247, 161),
(1548, 121),
(1563, 192),
(1567, 208),
(1569, 70),
(1570, 71),
(1571, 73),
(1572, 82),
(1574, 85),
(1575, 86),
(1576, 88),
(1577, 98),
(1578, 99),
(1579, 101),
(1580, 103),
(1581, 105),
(1582, 113),
(1583, 115),
(1584, 116),
(1585, 117),
(1586, 118),
(1587, 119),
(1588, 128),
(1589, 139),
(1590, 141),
(1591, 143),
(1592, 144),
(1593, 154),
(1594, 158),
(1600, 68),
(1601, 171),
(1602, 173),
(1603, 175),
(1604, 177),
(1605, 187),
(1606, 189),
(1607, 191),
(1608, 207),
(1609, 218),
(1610, 220),
(1617, 66),
(1632, 223),
(1633, 234),
(1634, 235),
(1635, 237),
(1636, 238),
(1637, 239),
(1638, 251),
(1639, 252),
(1640, 253),
(1641, 254),
(8203, 69),
(65149, 67),
(65154, 72),
(65156, 81),
(65166, 87),
(65169, 89),
(65175, 100),
(65179, 102),
(65183, 104),
(65187, 112),
(65191, 114),
(65203, 120),
(65207, 138),
(65211, 140),
(65215, 142),
(65226, 155),
(65227, 156),
(65228, 157),
(65230, 159),
(65231, 160),
(65232, 170),
(65235, 172),
(65239, 174),
(65243, 176),
(65247, 186),
(65251, 188),
(65255, 190),
(65259, 203),
(65260, 205),
(65264, 219),
(65266, 221),
(65267, 222),
(65269, 178),
(65270, 179),
(65271, 180),
(65272, 181),
(65275, 184),
(65276, 185),
];
impl_ebcdic_encoder_and_decoder!(
IBM423,
"IBM423",
IBM423Encoder,
IBM423Decoder,
IBM_423_ENCODE_TABLE,
IBM_423_DECODE_TABLE
);
const IBM_423_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{9c}',
'\u{9}',
'\u{86}',
'\u{7f}',
'\u{97}',
'\u{8d}',
'\u{8e}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{9d}',
'\u{85}',
'\u{8}',
'\u{87}',
'\u{18}',
'\u{19}',
'\u{92}',
'\u{8f}',
'\u{1c}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{a}',
'\u{17}',
'\u{1b}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{90}',
'\u{91}',
'\u{16}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{4}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{14}',
'\u{15}',
'\u{9e}',
'\u{1a}',
'\u{20}',
'\u{391}',
'\u{392}',
'\u{393}',
'\u{394}',
'\u{395}',
'\u{396}',
'\u{397}',
'\u{398}',
'\u{399}',
'\u{5b}',
'\u{2e}',
'\u{3c}',
'\u{28}',
'\u{2b}',
'\u{21}',
'\u{26}',
'\u{39a}',
'\u{39b}',
'\u{39c}',
'\u{39d}',
'\u{39e}',
'\u{39f}',
'\u{3a0}',
'\u{3a1}',
'\u{3a3}',
'\u{5d}',
'\u{24}',
'\u{2a}',
'\u{29}',
'\u{3b}',
'\u{5e}',
'\u{2d}',
'\u{2f}',
'\u{3a4}',
'\u{3a5}',
'\u{3a6}',
'\u{3a7}',
'\u{3a8}',
'\u{3a9}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{7c}',
'\u{2c}',
'\u{25}',
'\u{5f}',
'\u{3e}',
'\u{3f}',
char::REPLACEMENT_CHARACTER,
'\u{386}',
'\u{388}',
'\u{389}',
'\u{a0}',
'\u{38a}',
'\u{38c}',
'\u{38e}',
'\u{38f}',
'\u{60}',
'\u{3a}',
'\u{a3}',
'\u{a7}',
'\u{27}',
'\u{3d}',
'\u{22}',
'\u{c4}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{3b1}',
'\u{3b2}',
'\u{3b3}',
'\u{3b4}',
'\u{3b5}',
'\u{3b6}',
'\u{d6}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{3b7}',
'\u{3b8}',
'\u{3b9}',
'\u{3ba}',
'\u{3bb}',
'\u{3bc}',
'\u{dc}',
'\u{a8}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{3bd}',
'\u{3be}',
'\u{3bf}',
'\u{3c0}',
'\u{3c1}',
'\u{3c3}',
char::REPLACEMENT_CHARACTER,
'\u{3ac}',
'\u{3ad}',
'\u{3ae}',
'\u{3ca}',
'\u{3af}',
'\u{3cc}',
'\u{3cd}',
'\u{3cb}',
'\u{3ce}',
'\u{3c2}',
'\u{3c4}',
'\u{3c5}',
'\u{3c6}',
'\u{3c7}',
'\u{3c8}',
'\u{b8}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{ad}',
'\u{3c9}',
'\u{e2}',
'\u{e0}',
'\u{e4}',
'\u{ea}',
'\u{b4}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{b1}',
'\u{e9}',
'\u{e8}',
'\u{eb}',
'\u{ee}',
'\u{ef}',
'\u{b0}',
char::REPLACEMENT_CHARACTER,
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{bd}',
'\u{f6}',
'\u{f4}',
'\u{fb}',
'\u{f9}',
'\u{fc}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{ff}',
'\u{e7}',
'\u{c7}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{9f}',
];
const IBM_423_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(93, 90),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(124, 106),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 116),
(163, 123),
(167, 124),
(168, 161),
(173, 202),
(176, 224),
(177, 218),
(180, 208),
(184, 192),
(189, 234),
(196, 128),
(199, 252),
(214, 144),
(220, 160),
(224, 205),
(226, 204),
(228, 206),
(231, 251),
(232, 220),
(233, 219),
(234, 207),
(235, 221),
(238, 222),
(239, 223),
(244, 236),
(246, 235),
(249, 238),
(251, 237),
(252, 239),
(255, 250),
(902, 113),
(904, 114),
(905, 115),
(906, 117),
(908, 118),
(910, 119),
(911, 120),
(913, 65),
(914, 66),
(915, 67),
(916, 68),
(917, 69),
(918, 70),
(919, 71),
(920, 72),
(921, 73),
(922, 81),
(923, 82),
(924, 83),
(925, 84),
(926, 85),
(927, 86),
(928, 87),
(929, 88),
(931, 89),
(932, 98),
(933, 99),
(934, 100),
(935, 101),
(936, 102),
(937, 103),
(940, 177),
(941, 178),
(942, 179),
(943, 181),
(945, 138),
(946, 139),
(947, 140),
(948, 141),
(949, 142),
(950, 143),
(951, 154),
(952, 155),
(953, 156),
(954, 157),
(955, 158),
(956, 159),
(957, 170),
(958, 171),
(959, 172),
(960, 173),
(961, 174),
(962, 186),
(963, 175),
(964, 187),
(965, 188),
(966, 189),
(967, 190),
(968, 191),
(969, 203),
(970, 180),
(971, 184),
(972, 182),
(973, 183),
(974, 185),
];
impl_ebcdic_encoder_and_decoder!(
IBM424,
"IBM424",
IBM424Encoder,
IBM424Decoder,
IBM_424_ENCODE_TABLE,
IBM_424_DECODE_TABLE
);
const IBM_424_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{9c}',
'\u{9}',
'\u{86}',
'\u{7f}',
'\u{97}',
'\u{8d}',
'\u{8e}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{9d}',
'\u{85}',
'\u{8}',
'\u{87}',
'\u{18}',
'\u{19}',
'\u{92}',
'\u{8f}',
'\u{1c}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{a}',
'\u{17}',
'\u{1b}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{90}',
'\u{91}',
'\u{16}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{4}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{14}',
'\u{15}',
'\u{9e}',
'\u{1a}',
'\u{20}',
'\u{5d0}',
'\u{5d1}',
'\u{5d2}',
'\u{5d3}',
'\u{5d4}',
'\u{5d5}',
'\u{5d6}',
'\u{5d7}',
'\u{5d8}',
'\u{a2}',
'\u{2e}',
'\u{3c}',
'\u{28}',
'\u{2b}',
'\u{7c}',
'\u{26}',
'\u{5d9}',
'\u{5da}',
'\u{5db}',
'\u{5dc}',
'\u{5dd}',
'\u{5de}',
'\u{5df}',
'\u{5e0}',
'\u{5e1}',
'\u{21}',
'\u{24}',
'\u{2a}',
'\u{29}',
'\u{3b}',
'\u{ac}',
'\u{2d}',
'\u{2f}',
'\u{5e2}',
'\u{5e3}',
'\u{5e4}',
'\u{5e5}',
'\u{5e6}',
'\u{5e7}',
'\u{5e8}',
'\u{5e9}',
'\u{a6}',
'\u{2c}',
'\u{25}',
'\u{5f}',
'\u{3e}',
'\u{3f}',
char::REPLACEMENT_CHARACTER,
'\u{5ea}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{a0}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{2017}',
'\u{60}',
'\u{3a}',
'\u{23}',
'\u{40}',
'\u{27}',
'\u{3d}',
'\u{22}',
char::REPLACEMENT_CHARACTER,
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{ab}',
'\u{bb}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{b1}',
'\u{b0}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{b8}',
char::REPLACEMENT_CHARACTER,
'\u{a4}',
'\u{b5}',
'\u{7e}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{ae}',
'\u{5e}',
'\u{a3}',
'\u{a5}',
'\u{2022}',
'\u{a9}',
'\u{a7}',
'\u{b6}',
'\u{bc}',
'\u{bd}',
'\u{be}',
'\u{5b}',
'\u{5d}',
'\u{203e}',
'\u{a8}',
'\u{b4}',
'\u{d7}',
'\u{7b}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{ad}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{7d}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{b9}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{5c}',
'\u{f7}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{b2}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{b3}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{9f}',
];
const IBM_424_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 90),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 186),
(92, 224),
(93, 187),
(94, 176),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 79),
(125, 208),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 116),
(162, 74),
(163, 177),
(164, 159),
(165, 178),
(166, 106),
(167, 181),
(168, 189),
(169, 180),
(171, 138),
(172, 95),
(173, 202),
(174, 175),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(184, 157),
(185, 218),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(215, 191),
(247, 225),
(1488, 65),
(1489, 66),
(1490, 67),
(1491, 68),
(1492, 69),
(1493, 70),
(1494, 71),
(1495, 72),
(1496, 73),
(1497, 81),
(1498, 82),
(1499, 83),
(1500, 84),
(1501, 85),
(1502, 86),
(1503, 87),
(1504, 88),
(1505, 89),
(1506, 98),
(1507, 99),
(1508, 100),
(1509, 101),
(1510, 102),
(1511, 103),
(1512, 104),
(1513, 105),
(1514, 113),
(8215, 120),
(8226, 179),
(8254, 188),
];
impl_ebcdic_encoder_and_decoder!(
IBM437,
"IBM437",
IBM437Encoder,
IBM437Decoder,
IBM_437_ENCODE_TABLE,
IBM_437_DECODE_TABLE
);
const IBM_437_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
'\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
'\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
'\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
'\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
'\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
'\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
'\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
'\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
'\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
'\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
'\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
'\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
'\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
'\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_437_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(162, 155),
(163, 156),
(165, 157),
(170, 166),
(171, 174),
(172, 170),
(176, 248),
(177, 241),
(178, 253),
(183, 250),
(186, 167),
(187, 175),
(188, 172),
(189, 171),
(191, 168),
(196, 142),
(197, 143),
(198, 146),
(199, 128),
(201, 144),
(209, 165),
(214, 153),
(220, 154),
(223, 225),
(224, 133),
(225, 160),
(226, 131),
(228, 132),
(229, 134),
(230, 145),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(236, 141),
(237, 161),
(238, 140),
(239, 139),
(241, 164),
(242, 149),
(243, 162),
(244, 147),
(246, 148),
(247, 246),
(249, 151),
(250, 163),
(251, 150),
(252, 129),
(255, 152),
(402, 159),
(915, 226),
(920, 233),
(931, 228),
(934, 232),
(937, 234),
(945, 224),
(948, 235),
(949, 238),
(956, 230),
(960, 227),
(963, 229),
(964, 231),
(966, 237),
(8319, 252),
(8359, 158),
(8729, 249),
(8730, 251),
(8734, 236),
(8745, 239),
(8776, 247),
(8801, 240),
(8804, 243),
(8805, 242),
(8976, 169),
(8992, 244),
(8993, 245),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9554, 213),
(9555, 214),
(9556, 201),
(9557, 184),
(9558, 183),
(9559, 187),
(9560, 212),
(9561, 211),
(9562, 200),
(9563, 190),
(9564, 189),
(9565, 188),
(9566, 198),
(9567, 199),
(9568, 204),
(9569, 181),
(9570, 182),
(9571, 185),
(9572, 209),
(9573, 210),
(9574, 203),
(9575, 207),
(9576, 208),
(9577, 202),
(9578, 216),
(9579, 215),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9612, 221),
(9616, 222),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM500,
"IBM500",
IBM500Encoder,
IBM500Decoder,
IBM_500_ENCODE_TABLE,
IBM_500_DECODE_TABLE
);
const IBM_500_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
'\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
'\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_500_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(92, 224),
(93, 90),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 187),
(125, 208),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 106),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 172),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 236),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 174),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 140),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 204),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 142),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM850,
"IBM850",
IBM850Encoder,
IBM850Decoder,
IBM_850_ENCODE_TABLE,
IBM_850_DECODE_TABLE
);
const IBM_850_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
'\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
'\u{f8}', '\u{a3}', '\u{d8}', '\u{d7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
'\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{ae}', '\u{ac}', '\u{bd}', '\u{bc}',
'\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
'\u{c1}', '\u{c2}', '\u{c0}', '\u{a9}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
'\u{a2}', '\u{a5}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
'\u{253c}', '\u{e3}', '\u{c3}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
'\u{2550}', '\u{256c}', '\u{a4}', '\u{f0}', '\u{d0}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{131}',
'\u{cd}', '\u{ce}', '\u{cf}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{a6}',
'\u{cc}', '\u{2580}', '\u{d3}', '\u{df}', '\u{d4}', '\u{d2}', '\u{f5}', '\u{d5}', '\u{b5}',
'\u{fe}', '\u{de}', '\u{da}', '\u{db}', '\u{d9}', '\u{fd}', '\u{dd}', '\u{af}', '\u{b4}',
'\u{ad}', '\u{b1}', '\u{2017}', '\u{be}', '\u{b6}', '\u{a7}', '\u{f7}', '\u{b8}', '\u{b0}',
'\u{a8}', '\u{b7}', '\u{b9}', '\u{b3}', '\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_850_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(162, 189),
(163, 156),
(164, 207),
(165, 190),
(166, 221),
(167, 245),
(168, 249),
(169, 184),
(170, 166),
(171, 174),
(172, 170),
(173, 240),
(174, 169),
(175, 238),
(176, 248),
(177, 241),
(178, 253),
(179, 252),
(180, 239),
(181, 230),
(182, 244),
(183, 250),
(184, 247),
(185, 251),
(186, 167),
(187, 175),
(188, 172),
(189, 171),
(190, 243),
(191, 168),
(192, 183),
(193, 181),
(194, 182),
(195, 199),
(196, 142),
(197, 143),
(198, 146),
(199, 128),
(200, 212),
(201, 144),
(202, 210),
(203, 211),
(204, 222),
(205, 214),
(206, 215),
(207, 216),
(208, 209),
(209, 165),
(210, 227),
(211, 224),
(212, 226),
(213, 229),
(214, 153),
(215, 158),
(216, 157),
(217, 235),
(218, 233),
(219, 234),
(220, 154),
(221, 237),
(222, 232),
(223, 225),
(224, 133),
(225, 160),
(226, 131),
(227, 198),
(228, 132),
(229, 134),
(230, 145),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(236, 141),
(237, 161),
(238, 140),
(239, 139),
(240, 208),
(241, 164),
(242, 149),
(243, 162),
(244, 147),
(245, 228),
(246, 148),
(247, 246),
(248, 155),
(249, 151),
(250, 163),
(251, 150),
(252, 129),
(253, 236),
(254, 231),
(255, 152),
(305, 213),
(402, 159),
(8215, 242),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM851,
"IBM851",
IBM851Encoder,
IBM851Decoder,
IBM_851_ENCODE_TABLE,
IBM_851_DECODE_TABLE
);
const IBM_851_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
'\u{c7}',
'\u{fc}',
'\u{e9}',
'\u{e2}',
'\u{e4}',
'\u{e0}',
'\u{386}',
'\u{e7}',
'\u{ea}',
'\u{eb}',
'\u{e8}',
'\u{ef}',
'\u{ee}',
'\u{388}',
'\u{c4}',
'\u{389}',
'\u{38a}',
char::REPLACEMENT_CHARACTER,
'\u{38c}',
'\u{f4}',
'\u{f6}',
'\u{38e}',
'\u{fb}',
'\u{f9}',
'\u{38f}',
'\u{d6}',
'\u{dc}',
'\u{3ac}',
'\u{a3}',
'\u{3ad}',
'\u{3ae}',
'\u{3af}',
'\u{3ca}',
'\u{390}',
'\u{3cc}',
'\u{3cd}',
'\u{391}',
'\u{392}',
'\u{393}',
'\u{394}',
'\u{395}',
'\u{396}',
'\u{397}',
'\u{bd}',
'\u{398}',
'\u{399}',
'\u{ab}',
'\u{bb}',
'\u{2591}',
'\u{2592}',
'\u{2593}',
'\u{2502}',
'\u{2524}',
'\u{39a}',
'\u{39b}',
'\u{39c}',
'\u{39d}',
'\u{2563}',
'\u{2551}',
'\u{2557}',
'\u{255d}',
'\u{39e}',
'\u{39f}',
'\u{2510}',
'\u{2514}',
'\u{2534}',
'\u{252c}',
'\u{251c}',
'\u{2500}',
'\u{253c}',
'\u{3a0}',
'\u{3a1}',
'\u{255a}',
'\u{2554}',
'\u{2569}',
'\u{2566}',
'\u{2560}',
'\u{2550}',
'\u{256c}',
'\u{3a3}',
'\u{3a4}',
'\u{3a5}',
'\u{3a6}',
'\u{3a7}',
'\u{3a8}',
'\u{3a9}',
'\u{3b1}',
'\u{3b2}',
'\u{3b3}',
'\u{2518}',
'\u{250c}',
'\u{2588}',
'\u{2584}',
'\u{3b4}',
'\u{3b5}',
'\u{2580}',
'\u{3b6}',
'\u{3b7}',
'\u{3b8}',
'\u{3b9}',
'\u{3ba}',
'\u{3bb}',
'\u{3bc}',
'\u{3bd}',
'\u{3be}',
'\u{3bf}',
'\u{3c0}',
'\u{3c1}',
'\u{3c3}',
'\u{3c2}',
'\u{3c4}',
'\u{b4}',
'\u{ad}',
'\u{b1}',
'\u{3c5}',
'\u{3c6}',
'\u{3c7}',
'\u{a7}',
'\u{3c8}',
'\u{b8}',
'\u{b0}',
'\u{a8}',
'\u{3c9}',
'\u{3cb}',
'\u{3b0}',
'\u{3ce}',
'\u{25a0}',
'\u{a0}',
];
const IBM_851_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(163, 156),
(167, 245),
(168, 249),
(171, 174),
(173, 240),
(176, 248),
(177, 241),
(180, 239),
(184, 247),
(187, 175),
(189, 171),
(196, 142),
(199, 128),
(214, 153),
(220, 154),
(224, 133),
(226, 131),
(228, 132),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(238, 140),
(239, 139),
(244, 147),
(246, 148),
(249, 151),
(251, 150),
(252, 129),
(902, 134),
(904, 141),
(905, 143),
(906, 144),
(908, 146),
(910, 149),
(911, 152),
(912, 161),
(913, 164),
(914, 165),
(915, 166),
(916, 167),
(917, 168),
(918, 169),
(919, 170),
(920, 172),
(921, 173),
(922, 181),
(923, 182),
(924, 183),
(925, 184),
(926, 189),
(927, 190),
(928, 198),
(929, 199),
(931, 207),
(932, 208),
(933, 209),
(934, 210),
(935, 211),
(936, 212),
(937, 213),
(940, 155),
(941, 157),
(942, 158),
(943, 159),
(944, 252),
(945, 214),
(946, 215),
(947, 216),
(948, 221),
(949, 222),
(950, 224),
(951, 225),
(952, 226),
(953, 227),
(954, 228),
(955, 229),
(956, 230),
(957, 231),
(958, 232),
(959, 233),
(960, 234),
(961, 235),
(962, 237),
(963, 236),
(964, 238),
(965, 242),
(966, 243),
(967, 244),
(968, 246),
(969, 250),
(970, 160),
(971, 251),
(972, 162),
(973, 163),
(974, 253),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM852,
"IBM852",
IBM852Encoder,
IBM852Decoder,
IBM_852_ENCODE_TABLE,
IBM_852_DECODE_TABLE
);
const IBM_852_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
'\u{c7}',
'\u{fc}',
'\u{e9}',
'\u{e2}',
'\u{e4}',
'\u{16f}',
'\u{107}',
'\u{e7}',
'\u{142}',
'\u{eb}',
'\u{150}',
'\u{151}',
'\u{ee}',
'\u{179}',
'\u{c4}',
'\u{106}',
'\u{c9}',
'\u{139}',
'\u{13a}',
'\u{f4}',
'\u{f6}',
'\u{13d}',
'\u{13e}',
'\u{15a}',
'\u{15b}',
'\u{d6}',
'\u{dc}',
'\u{164}',
'\u{165}',
'\u{141}',
'\u{d7}',
'\u{10d}',
'\u{e1}',
'\u{ed}',
'\u{f3}',
'\u{fa}',
'\u{104}',
'\u{105}',
'\u{17d}',
'\u{17e}',
'\u{118}',
'\u{119}',
char::REPLACEMENT_CHARACTER,
'\u{17a}',
'\u{10c}',
'\u{15f}',
'\u{ab}',
'\u{bb}',
'\u{2591}',
'\u{2592}',
'\u{2593}',
'\u{2502}',
'\u{2524}',
'\u{c1}',
'\u{c2}',
'\u{11a}',
'\u{15e}',
'\u{2563}',
'\u{2551}',
'\u{2557}',
'\u{255d}',
'\u{17b}',
'\u{17c}',
'\u{2510}',
'\u{2514}',
'\u{2534}',
'\u{252c}',
'\u{251c}',
'\u{2500}',
'\u{253c}',
'\u{102}',
'\u{103}',
'\u{255a}',
'\u{2554}',
'\u{2569}',
'\u{2566}',
'\u{2560}',
'\u{2550}',
'\u{256c}',
'\u{a4}',
'\u{111}',
'\u{110}',
'\u{10e}',
'\u{cb}',
'\u{10f}',
'\u{147}',
'\u{cd}',
'\u{ce}',
'\u{11b}',
'\u{2518}',
'\u{250c}',
'\u{2588}',
'\u{2584}',
'\u{162}',
'\u{16e}',
'\u{2580}',
'\u{d3}',
'\u{df}',
'\u{d4}',
'\u{143}',
'\u{144}',
'\u{148}',
'\u{160}',
'\u{161}',
'\u{154}',
'\u{da}',
'\u{155}',
'\u{170}',
'\u{fd}',
'\u{dd}',
'\u{163}',
'\u{b4}',
'\u{ad}',
'\u{2dd}',
'\u{2db}',
'\u{2c7}',
'\u{2d8}',
'\u{a7}',
'\u{f7}',
'\u{b8}',
'\u{b0}',
'\u{a8}',
'\u{2d9}',
'\u{171}',
'\u{158}',
'\u{159}',
'\u{25a0}',
'\u{a0}',
];
const IBM_852_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(164, 207),
(167, 245),
(168, 249),
(171, 174),
(173, 240),
(176, 248),
(180, 239),
(184, 247),
(187, 175),
(193, 181),
(194, 182),
(196, 142),
(199, 128),
(201, 144),
(203, 211),
(205, 214),
(206, 215),
(211, 224),
(212, 226),
(214, 153),
(215, 158),
(218, 233),
(220, 154),
(221, 237),
(223, 225),
(225, 160),
(226, 131),
(228, 132),
(231, 135),
(233, 130),
(235, 137),
(237, 161),
(238, 140),
(243, 162),
(244, 147),
(246, 148),
(247, 246),
(250, 163),
(252, 129),
(253, 236),
(258, 198),
(259, 199),
(260, 164),
(261, 165),
(262, 143),
(263, 134),
(268, 172),
(269, 159),
(270, 210),
(271, 212),
(272, 209),
(273, 208),
(280, 168),
(281, 169),
(282, 183),
(283, 216),
(313, 145),
(314, 146),
(317, 149),
(318, 150),
(321, 157),
(322, 136),
(323, 227),
(324, 228),
(327, 213),
(328, 229),
(336, 138),
(337, 139),
(340, 232),
(341, 234),
(344, 252),
(345, 253),
(346, 151),
(347, 152),
(350, 184),
(351, 173),
(352, 230),
(353, 231),
(354, 221),
(355, 238),
(356, 155),
(357, 156),
(366, 222),
(367, 133),
(368, 235),
(369, 251),
(377, 141),
(378, 171),
(379, 189),
(380, 190),
(381, 166),
(382, 167),
(711, 243),
(728, 244),
(729, 250),
(731, 242),
(733, 241),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM855,
"IBM855",
IBM855Encoder,
IBM855Decoder,
IBM_855_ENCODE_TABLE,
IBM_855_DECODE_TABLE
);
const IBM_855_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{452}', '\u{402}', '\u{453}', '\u{403}', '\u{451}', '\u{401}', '\u{454}', '\u{404}',
'\u{455}', '\u{405}', '\u{456}', '\u{406}', '\u{457}', '\u{407}', '\u{458}', '\u{408}',
'\u{459}', '\u{409}', '\u{45a}', '\u{40a}', '\u{45b}', '\u{40b}', '\u{45c}', '\u{40c}',
'\u{45e}', '\u{40e}', '\u{45f}', '\u{40f}', '\u{44e}', '\u{42e}', '\u{44a}', '\u{42a}',
'\u{430}', '\u{410}', '\u{431}', '\u{411}', '\u{446}', '\u{426}', '\u{434}', '\u{414}',
'\u{435}', '\u{415}', '\u{444}', '\u{424}', '\u{433}', '\u{413}', '\u{ab}', '\u{bb}',
'\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}', '\u{445}', '\u{425}', '\u{438}',
'\u{418}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}', '\u{439}', '\u{419}', '\u{2510}',
'\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}', '\u{253c}', '\u{43a}', '\u{41a}',
'\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{a4}',
'\u{43b}', '\u{41b}', '\u{43c}', '\u{41c}', '\u{43d}', '\u{41d}', '\u{43e}', '\u{41e}',
'\u{43f}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{41f}', '\u{44f}', '\u{2580}',
'\u{42f}', '\u{440}', '\u{420}', '\u{441}', '\u{421}', '\u{442}', '\u{422}', '\u{443}',
'\u{423}', '\u{436}', '\u{416}', '\u{432}', '\u{412}', '\u{44c}', '\u{42c}', '\u{2116}',
'\u{ad}', '\u{44b}', '\u{42b}', '\u{437}', '\u{417}', '\u{448}', '\u{428}', '\u{44d}',
'\u{42d}', '\u{449}', '\u{429}', '\u{447}', '\u{427}', '\u{a7}', '\u{25a0}', '\u{a0}',
];
const IBM_855_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(164, 207),
(167, 253),
(171, 174),
(173, 240),
(187, 175),
(1025, 133),
(1026, 129),
(1027, 131),
(1028, 135),
(1029, 137),
(1030, 139),
(1031, 141),
(1032, 143),
(1033, 145),
(1034, 147),
(1035, 149),
(1036, 151),
(1038, 153),
(1039, 155),
(1040, 161),
(1041, 163),
(1042, 236),
(1043, 173),
(1044, 167),
(1045, 169),
(1046, 234),
(1047, 244),
(1048, 184),
(1049, 190),
(1050, 199),
(1051, 209),
(1052, 211),
(1053, 213),
(1054, 215),
(1055, 221),
(1056, 226),
(1057, 228),
(1058, 230),
(1059, 232),
(1060, 171),
(1061, 182),
(1062, 165),
(1063, 252),
(1064, 246),
(1065, 250),
(1066, 159),
(1067, 242),
(1068, 238),
(1069, 248),
(1070, 157),
(1071, 224),
(1072, 160),
(1073, 162),
(1074, 235),
(1075, 172),
(1076, 166),
(1077, 168),
(1078, 233),
(1079, 243),
(1080, 183),
(1081, 189),
(1082, 198),
(1083, 208),
(1084, 210),
(1085, 212),
(1086, 214),
(1087, 216),
(1088, 225),
(1089, 227),
(1090, 229),
(1091, 231),
(1092, 170),
(1093, 181),
(1094, 164),
(1095, 251),
(1096, 245),
(1097, 249),
(1098, 158),
(1099, 241),
(1100, 237),
(1101, 247),
(1102, 156),
(1103, 222),
(1105, 132),
(1106, 128),
(1107, 130),
(1108, 134),
(1109, 136),
(1110, 138),
(1111, 140),
(1112, 142),
(1113, 144),
(1114, 146),
(1115, 148),
(1116, 150),
(1118, 152),
(1119, 154),
(8470, 239),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM857,
"IBM857",
IBM857Encoder,
IBM857Decoder,
IBM_857_ENCODE_TABLE,
IBM_857_DECODE_TABLE
);
const IBM_857_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
'\u{c7}',
'\u{fc}',
'\u{e9}',
'\u{e2}',
'\u{e4}',
'\u{e0}',
'\u{e5}',
'\u{e7}',
'\u{ea}',
'\u{eb}',
'\u{e8}',
'\u{ef}',
'\u{ee}',
'\u{131}',
'\u{c4}',
'\u{c5}',
'\u{c9}',
'\u{e6}',
'\u{c6}',
'\u{f4}',
'\u{f6}',
'\u{f2}',
'\u{fb}',
'\u{f9}',
'\u{130}',
'\u{d6}',
'\u{dc}',
'\u{f8}',
'\u{a3}',
'\u{d8}',
'\u{15e}',
'\u{15f}',
'\u{e1}',
'\u{ed}',
'\u{f3}',
'\u{fa}',
'\u{f1}',
'\u{d1}',
'\u{11e}',
'\u{11f}',
'\u{bf}',
'\u{ae}',
'\u{ac}',
'\u{bd}',
'\u{bc}',
'\u{a1}',
'\u{ab}',
'\u{bb}',
'\u{2591}',
'\u{2592}',
'\u{2593}',
'\u{2502}',
'\u{2524}',
'\u{c1}',
'\u{c2}',
'\u{c0}',
'\u{a9}',
'\u{2563}',
'\u{2551}',
'\u{2557}',
'\u{255d}',
'\u{a2}',
'\u{a5}',
'\u{2510}',
'\u{2514}',
'\u{2534}',
'\u{252c}',
'\u{251c}',
'\u{2500}',
'\u{253c}',
'\u{e3}',
'\u{c3}',
'\u{255a}',
'\u{2554}',
'\u{2569}',
'\u{2566}',
'\u{2560}',
'\u{2550}',
'\u{256c}',
'\u{a4}',
'\u{ba}',
'\u{aa}',
'\u{ca}',
'\u{cb}',
'\u{c8}',
char::REPLACEMENT_CHARACTER,
'\u{cd}',
'\u{ce}',
'\u{cf}',
'\u{2518}',
'\u{250c}',
'\u{2588}',
'\u{2584}',
'\u{a6}',
'\u{cc}',
'\u{2580}',
'\u{d3}',
'\u{df}',
'\u{d4}',
'\u{d2}',
'\u{f5}',
'\u{d5}',
'\u{b5}',
char::REPLACEMENT_CHARACTER,
'\u{d7}',
'\u{da}',
'\u{db}',
'\u{d9}',
'\u{ec}',
'\u{ff}',
'\u{af}',
'\u{b4}',
'\u{ad}',
'\u{b1}',
char::REPLACEMENT_CHARACTER,
'\u{be}',
'\u{b6}',
'\u{a7}',
'\u{f7}',
'\u{b8}',
'\u{b0}',
'\u{a8}',
'\u{b7}',
'\u{b9}',
'\u{b3}',
'\u{b2}',
'\u{25a0}',
'\u{a0}',
];
const IBM_857_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(162, 189),
(163, 156),
(164, 207),
(165, 190),
(166, 221),
(167, 245),
(168, 249),
(169, 184),
(170, 209),
(171, 174),
(172, 170),
(173, 240),
(174, 169),
(175, 238),
(176, 248),
(177, 241),
(178, 253),
(179, 252),
(180, 239),
(181, 230),
(182, 244),
(183, 250),
(184, 247),
(185, 251),
(186, 208),
(187, 175),
(188, 172),
(189, 171),
(190, 243),
(191, 168),
(192, 183),
(193, 181),
(194, 182),
(195, 199),
(196, 142),
(197, 143),
(198, 146),
(199, 128),
(200, 212),
(201, 144),
(202, 210),
(203, 211),
(204, 222),
(205, 214),
(206, 215),
(207, 216),
(209, 165),
(210, 227),
(211, 224),
(212, 226),
(213, 229),
(214, 153),
(215, 232),
(216, 157),
(217, 235),
(218, 233),
(219, 234),
(220, 154),
(223, 225),
(224, 133),
(225, 160),
(226, 131),
(227, 198),
(228, 132),
(229, 134),
(230, 145),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(236, 236),
(237, 161),
(238, 140),
(239, 139),
(241, 164),
(242, 149),
(243, 162),
(244, 147),
(245, 228),
(246, 148),
(247, 246),
(248, 155),
(249, 151),
(250, 163),
(251, 150),
(252, 129),
(255, 237),
(286, 166),
(287, 167),
(304, 152),
(305, 141),
(350, 158),
(351, 159),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM860,
"IBM860",
IBM860Encoder,
IBM860Decoder,
IBM_860_ENCODE_TABLE,
IBM_860_DECODE_TABLE
);
const IBM_860_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e3}', '\u{e0}', '\u{c1}', '\u{e7}', '\u{ea}',
'\u{ca}', '\u{e8}', '\u{cd}', '\u{d4}', '\u{ec}', '\u{c3}', '\u{c2}', '\u{c9}', '\u{c0}',
'\u{c8}', '\u{f4}', '\u{f5}', '\u{f2}', '\u{da}', '\u{f9}', '\u{cc}', '\u{d5}', '\u{dc}',
'\u{a2}', '\u{a3}', '\u{d9}', '\u{20a7}', '\u{d3}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
'\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{d2}', '\u{ac}', '\u{bd}', '\u{bc}',
'\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
'\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
'\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
'\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
'\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
'\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
'\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
'\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
'\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
'\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
'\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_860_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(162, 155),
(163, 156),
(170, 166),
(171, 174),
(172, 170),
(176, 248),
(177, 241),
(178, 253),
(183, 250),
(186, 167),
(187, 175),
(188, 172),
(189, 171),
(191, 168),
(192, 145),
(193, 134),
(194, 143),
(195, 142),
(199, 128),
(200, 146),
(201, 144),
(202, 137),
(204, 152),
(205, 139),
(209, 165),
(210, 169),
(211, 159),
(212, 140),
(213, 153),
(217, 157),
(218, 150),
(220, 154),
(223, 225),
(224, 133),
(225, 160),
(226, 131),
(227, 132),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(236, 141),
(237, 161),
(241, 164),
(242, 149),
(243, 162),
(244, 147),
(245, 148),
(247, 246),
(249, 151),
(250, 163),
(252, 129),
(915, 226),
(920, 233),
(931, 228),
(934, 232),
(937, 234),
(945, 224),
(948, 235),
(949, 238),
(956, 230),
(960, 227),
(963, 229),
(964, 231),
(966, 237),
(8319, 252),
(8359, 158),
(8729, 249),
(8730, 251),
(8734, 236),
(8745, 239),
(8776, 247),
(8801, 240),
(8804, 243),
(8805, 242),
(8992, 244),
(8993, 245),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9554, 213),
(9555, 214),
(9556, 201),
(9557, 184),
(9558, 183),
(9559, 187),
(9560, 212),
(9561, 211),
(9562, 200),
(9563, 190),
(9564, 189),
(9565, 188),
(9566, 198),
(9567, 199),
(9568, 204),
(9569, 181),
(9570, 182),
(9571, 185),
(9572, 209),
(9573, 210),
(9574, 203),
(9575, 207),
(9576, 208),
(9577, 202),
(9578, 216),
(9579, 215),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9612, 221),
(9616, 222),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM861,
"IBM861",
IBM861Encoder,
IBM861Decoder,
IBM_861_ENCODE_TABLE,
IBM_861_DECODE_TABLE
);
const IBM_861_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{d0}', '\u{f0}', '\u{de}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
'\u{c6}', '\u{f4}', '\u{f6}', '\u{fe}', '\u{fb}', '\u{dd}', '\u{fd}', '\u{d6}', '\u{dc}',
'\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
'\u{c1}', '\u{cd}', '\u{d3}', '\u{da}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
'\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
'\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
'\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
'\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
'\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
'\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
'\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
'\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
'\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
'\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
'\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_861_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(163, 156),
(171, 174),
(172, 170),
(176, 248),
(177, 241),
(178, 253),
(183, 250),
(187, 175),
(188, 172),
(189, 171),
(191, 168),
(193, 164),
(196, 142),
(197, 143),
(198, 146),
(199, 128),
(201, 144),
(205, 165),
(208, 139),
(211, 166),
(214, 153),
(216, 157),
(218, 167),
(220, 154),
(221, 151),
(222, 141),
(223, 225),
(224, 133),
(225, 160),
(226, 131),
(228, 132),
(229, 134),
(230, 145),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(237, 161),
(240, 140),
(243, 162),
(244, 147),
(246, 148),
(247, 246),
(248, 155),
(250, 163),
(251, 150),
(252, 129),
(253, 152),
(254, 149),
(402, 159),
(915, 226),
(920, 233),
(931, 228),
(934, 232),
(937, 234),
(945, 224),
(948, 235),
(949, 238),
(956, 230),
(960, 227),
(963, 229),
(964, 231),
(966, 237),
(8319, 252),
(8359, 158),
(8729, 249),
(8730, 251),
(8734, 236),
(8745, 239),
(8776, 247),
(8801, 240),
(8804, 243),
(8805, 242),
(8976, 169),
(8992, 244),
(8993, 245),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9554, 213),
(9555, 214),
(9556, 201),
(9557, 184),
(9558, 183),
(9559, 187),
(9560, 212),
(9561, 211),
(9562, 200),
(9563, 190),
(9564, 189),
(9565, 188),
(9566, 198),
(9567, 199),
(9568, 204),
(9569, 181),
(9570, 182),
(9571, 185),
(9572, 209),
(9573, 210),
(9574, 203),
(9575, 207),
(9576, 208),
(9577, 202),
(9578, 216),
(9579, 215),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9612, 221),
(9616, 222),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM862,
"IBM862",
IBM862Encoder,
IBM862Decoder,
IBM_862_ENCODE_TABLE,
IBM_862_DECODE_TABLE
);
const IBM_862_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{5d0}', '\u{5d1}', '\u{5d2}', '\u{5d3}', '\u{5d4}', '\u{5d5}', '\u{5d6}', '\u{5d7}',
'\u{5d8}', '\u{5d9}', '\u{5da}', '\u{5db}', '\u{5dc}', '\u{5dd}', '\u{5de}', '\u{5df}',
'\u{5e0}', '\u{5e1}', '\u{5e2}', '\u{5e3}', '\u{5e4}', '\u{5e5}', '\u{5e6}', '\u{5e7}',
'\u{5e8}', '\u{5e9}', '\u{5ea}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}',
'\u{ed}', '\u{f3}', '\u{fa}', '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}',
'\u{ac}', '\u{bd}', '\u{bc}', '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}',
'\u{2502}', '\u{2524}', '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}',
'\u{2557}', '\u{255d}', '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}',
'\u{251c}', '\u{2500}', '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}',
'\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}',
'\u{2559}', '\u{2558}', '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}',
'\u{2588}', '\u{2584}', '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}',
'\u{3c0}', '\u{3a3}', '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}',
'\u{3b4}', '\u{221e}', '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}',
'\u{2264}', '\u{2320}', '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}',
'\u{221a}', '\u{207f}', '\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_862_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(162, 155),
(163, 156),
(165, 157),
(170, 166),
(171, 174),
(172, 170),
(176, 248),
(177, 241),
(178, 253),
(183, 250),
(186, 167),
(187, 175),
(188, 172),
(189, 171),
(191, 168),
(209, 165),
(223, 225),
(225, 160),
(237, 161),
(241, 164),
(243, 162),
(247, 246),
(250, 163),
(402, 159),
(915, 226),
(920, 233),
(931, 228),
(934, 232),
(937, 234),
(945, 224),
(948, 235),
(949, 238),
(956, 230),
(960, 227),
(963, 229),
(964, 231),
(966, 237),
(1488, 128),
(1489, 129),
(1490, 130),
(1491, 131),
(1492, 132),
(1493, 133),
(1494, 134),
(1495, 135),
(1496, 136),
(1497, 137),
(1498, 138),
(1499, 139),
(1500, 140),
(1501, 141),
(1502, 142),
(1503, 143),
(1504, 144),
(1505, 145),
(1506, 146),
(1507, 147),
(1508, 148),
(1509, 149),
(1510, 150),
(1511, 151),
(1512, 152),
(1513, 153),
(1514, 154),
(8319, 252),
(8359, 158),
(8729, 249),
(8730, 251),
(8734, 236),
(8745, 239),
(8776, 247),
(8801, 240),
(8804, 243),
(8805, 242),
(8976, 169),
(8992, 244),
(8993, 245),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9554, 213),
(9555, 214),
(9556, 201),
(9557, 184),
(9558, 183),
(9559, 187),
(9560, 212),
(9561, 211),
(9562, 200),
(9563, 190),
(9564, 189),
(9565, 188),
(9566, 198),
(9567, 199),
(9568, 204),
(9569, 181),
(9570, 182),
(9571, 185),
(9572, 209),
(9573, 210),
(9574, 203),
(9575, 207),
(9576, 208),
(9577, 202),
(9578, 216),
(9579, 215),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9612, 221),
(9616, 222),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM863,
"IBM863",
IBM863Encoder,
IBM863Decoder,
IBM_863_ENCODE_TABLE,
IBM_863_DECODE_TABLE
);
const IBM_863_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{c2}', '\u{e0}', '\u{b6}', '\u{e7}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{2017}', '\u{c0}', '\u{a7}', '\u{c9}', '\u{c8}',
'\u{ca}', '\u{f4}', '\u{cb}', '\u{cf}', '\u{fb}', '\u{f9}', '\u{a4}', '\u{d4}', '\u{dc}',
'\u{a2}', '\u{a3}', '\u{d9}', '\u{db}', '\u{192}', '\u{a6}', '\u{b4}', '\u{f3}', '\u{fa}',
'\u{a8}', '\u{b8}', '\u{b3}', '\u{af}', '\u{ce}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
'\u{be}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
'\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
'\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
'\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
'\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
'\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
'\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
'\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
'\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
'\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
'\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_863_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(162, 155),
(163, 156),
(164, 152),
(166, 160),
(167, 143),
(168, 164),
(171, 174),
(172, 170),
(175, 167),
(176, 248),
(177, 241),
(178, 253),
(179, 166),
(180, 161),
(182, 134),
(183, 250),
(184, 165),
(187, 175),
(188, 172),
(189, 171),
(190, 173),
(192, 142),
(194, 132),
(199, 128),
(200, 145),
(201, 144),
(202, 146),
(203, 148),
(206, 168),
(207, 149),
(212, 153),
(217, 157),
(219, 158),
(220, 154),
(223, 225),
(224, 133),
(226, 131),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(238, 140),
(239, 139),
(243, 162),
(244, 147),
(247, 246),
(249, 151),
(250, 163),
(251, 150),
(252, 129),
(402, 159),
(915, 226),
(920, 233),
(931, 228),
(934, 232),
(937, 234),
(945, 224),
(948, 235),
(949, 238),
(956, 230),
(960, 227),
(963, 229),
(964, 231),
(966, 237),
(8215, 141),
(8319, 252),
(8729, 249),
(8730, 251),
(8734, 236),
(8745, 239),
(8776, 247),
(8801, 240),
(8804, 243),
(8805, 242),
(8976, 169),
(8992, 244),
(8993, 245),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9554, 213),
(9555, 214),
(9556, 201),
(9557, 184),
(9558, 183),
(9559, 187),
(9560, 212),
(9561, 211),
(9562, 200),
(9563, 190),
(9564, 189),
(9565, 188),
(9566, 198),
(9567, 199),
(9568, 204),
(9569, 181),
(9570, 182),
(9571, 185),
(9572, 209),
(9573, 210),
(9574, 203),
(9575, 207),
(9576, 208),
(9577, 202),
(9578, 216),
(9579, 215),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9612, 221),
(9616, 222),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM864,
"IBM864",
IBM864Encoder,
IBM864Decoder,
IBM_864_ENCODE_TABLE,
IBM_864_DECODE_TABLE
);
const IBM_864_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
'\u{b0}',
'\u{b7}',
'\u{2219}',
'\u{221a}',
'\u{2592}',
'\u{2500}',
'\u{2502}',
'\u{253c}',
'\u{2524}',
'\u{252c}',
'\u{251c}',
'\u{2534}',
'\u{2510}',
'\u{250c}',
'\u{2514}',
'\u{2518}',
'\u{3b2}',
'\u{221e}',
'\u{3c6}',
'\u{b1}',
'\u{bd}',
'\u{bc}',
'\u{2248}',
'\u{ab}',
'\u{bb}',
'\u{fef7}',
'\u{fef8}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{fefb}',
'\u{fefc}',
'\u{200b}',
'\u{a0}',
'\u{ad}',
'\u{fe82}',
'\u{a3}',
'\u{a4}',
'\u{fe84}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{fe8e}',
'\u{fe8f}',
'\u{fe95}',
'\u{fe99}',
'\u{60c}',
'\u{fe9d}',
'\u{fea1}',
'\u{fea5}',
'\u{660}',
'\u{661}',
'\u{662}',
'\u{663}',
'\u{664}',
'\u{665}',
'\u{666}',
'\u{667}',
'\u{668}',
'\u{669}',
'\u{fed1}',
'\u{61b}',
'\u{feb1}',
'\u{feb5}',
'\u{feb9}',
'\u{61f}',
'\u{a2}',
'\u{fe80}',
'\u{fe81}',
'\u{fe83}',
'\u{fe85}',
'\u{feca}',
'\u{fe8b}',
'\u{fe8d}',
'\u{fe91}',
'\u{fe93}',
'\u{fe97}',
'\u{fe9b}',
'\u{fe9f}',
'\u{fea3}',
'\u{fea7}',
'\u{fea9}',
'\u{feab}',
'\u{fead}',
'\u{feaf}',
'\u{feb3}',
'\u{feb7}',
'\u{febb}',
'\u{febf}',
'\u{fec3}',
'\u{fec7}',
'\u{fecb}',
'\u{fecf}',
'\u{a6}',
'\u{ac}',
'\u{f7}',
'\u{d7}',
'\u{fec9}',
'\u{640}',
'\u{fed3}',
'\u{fed7}',
'\u{fedb}',
'\u{fedf}',
'\u{fee3}',
'\u{fee7}',
'\u{feeb}',
'\u{feed}',
'\u{feef}',
'\u{fef3}',
'\u{febd}',
'\u{fecc}',
'\u{fece}',
'\u{fecd}',
'\u{fee1}',
'\u{fe7d}',
'\u{fe7c}',
'\u{fee5}',
'\u{fee9}',
'\u{feec}',
'\u{fef0}',
'\u{fef2}',
'\u{fed0}',
'\u{fed5}',
'\u{fef5}',
'\u{fef6}',
'\u{fedd}',
'\u{fed9}',
'\u{fef1}',
'\u{25a0}',
char::REPLACEMENT_CHARACTER,
];
const IBM_864_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 160),
(162, 192),
(163, 163),
(164, 164),
(166, 219),
(171, 151),
(172, 220),
(173, 161),
(176, 128),
(177, 147),
(183, 129),
(187, 152),
(188, 149),
(189, 148),
(215, 222),
(247, 221),
(946, 144),
(966, 146),
(1548, 172),
(1563, 187),
(1567, 191),
(1600, 224),
(1632, 176),
(1633, 177),
(1634, 178),
(1635, 179),
(1636, 180),
(1637, 181),
(1638, 182),
(1639, 183),
(1640, 184),
(1641, 185),
(8203, 159),
(8729, 130),
(8730, 131),
(8734, 145),
(8776, 150),
(9472, 133),
(9474, 134),
(9484, 141),
(9488, 140),
(9492, 142),
(9496, 143),
(9500, 138),
(9508, 136),
(9516, 137),
(9524, 139),
(9532, 135),
(9618, 132),
(9632, 254),
(65148, 241),
(65149, 240),
(65152, 193),
(65153, 194),
(65154, 162),
(65155, 195),
(65156, 165),
(65157, 196),
(65163, 198),
(65165, 199),
(65166, 168),
(65167, 169),
(65169, 200),
(65171, 201),
(65173, 170),
(65175, 202),
(65177, 171),
(65179, 203),
(65181, 173),
(65183, 204),
(65185, 174),
(65187, 205),
(65189, 175),
(65191, 206),
(65193, 207),
(65195, 208),
(65197, 209),
(65199, 210),
(65201, 188),
(65203, 211),
(65205, 189),
(65207, 212),
(65209, 190),
(65211, 213),
(65213, 235),
(65215, 214),
(65219, 215),
(65223, 216),
(65225, 223),
(65226, 197),
(65227, 217),
(65228, 236),
(65229, 238),
(65230, 237),
(65231, 218),
(65232, 247),
(65233, 186),
(65235, 225),
(65237, 248),
(65239, 226),
(65241, 252),
(65243, 227),
(65245, 251),
(65247, 228),
(65249, 239),
(65251, 229),
(65253, 242),
(65255, 230),
(65257, 243),
(65259, 231),
(65260, 244),
(65261, 232),
(65263, 233),
(65264, 245),
(65265, 253),
(65266, 246),
(65267, 234),
(65269, 249),
(65270, 250),
(65271, 153),
(65272, 154),
(65275, 157),
(65276, 158),
];
impl_ebcdic_encoder_and_decoder!(
IBM865,
"IBM865",
IBM865Encoder,
IBM865Decoder,
IBM_865_ENCODE_TABLE,
IBM_865_DECODE_TABLE
);
const IBM_865_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
'\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
'\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
'\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
'\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
'\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
'\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
'\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
'\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
'\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
'\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
'\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
'\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
'\u{a1}', '\u{ab}', '\u{a4}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
'\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
'\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
'\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
'\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
'\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
'\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
'\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
'\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
'\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
'\u{b2}', '\u{25a0}', '\u{a0}',
];
const IBM_865_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(161, 173),
(163, 156),
(164, 175),
(170, 166),
(171, 174),
(172, 170),
(176, 248),
(177, 241),
(178, 253),
(183, 250),
(186, 167),
(188, 172),
(189, 171),
(191, 168),
(196, 142),
(197, 143),
(198, 146),
(199, 128),
(201, 144),
(209, 165),
(214, 153),
(216, 157),
(220, 154),
(223, 225),
(224, 133),
(225, 160),
(226, 131),
(228, 132),
(229, 134),
(230, 145),
(231, 135),
(232, 138),
(233, 130),
(234, 136),
(235, 137),
(236, 141),
(237, 161),
(238, 140),
(239, 139),
(241, 164),
(242, 149),
(243, 162),
(244, 147),
(246, 148),
(247, 246),
(248, 155),
(249, 151),
(250, 163),
(251, 150),
(252, 129),
(255, 152),
(402, 159),
(915, 226),
(920, 233),
(931, 228),
(934, 232),
(937, 234),
(945, 224),
(948, 235),
(949, 238),
(956, 230),
(960, 227),
(963, 229),
(964, 231),
(966, 237),
(8319, 252),
(8359, 158),
(8729, 249),
(8730, 251),
(8734, 236),
(8745, 239),
(8776, 247),
(8801, 240),
(8804, 243),
(8805, 242),
(8976, 169),
(8992, 244),
(8993, 245),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9554, 213),
(9555, 214),
(9556, 201),
(9557, 184),
(9558, 183),
(9559, 187),
(9560, 212),
(9561, 211),
(9562, 200),
(9563, 190),
(9564, 189),
(9565, 188),
(9566, 198),
(9567, 199),
(9568, 204),
(9569, 181),
(9570, 182),
(9571, 185),
(9572, 209),
(9573, 210),
(9574, 203),
(9575, 207),
(9576, 208),
(9577, 202),
(9578, 216),
(9579, 215),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9612, 221),
(9616, 222),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM868,
"IBM868",
IBM868Encoder,
IBM868Decoder,
IBM_868_ENCODE_TABLE,
IBM_868_DECODE_TABLE
);
const IBM_868_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
'\u{6f0}',
'\u{6f1}',
'\u{6f2}',
'\u{6f3}',
'\u{6f4}',
'\u{6f5}',
'\u{6f6}',
'\u{6f7}',
'\u{6f8}',
'\u{6f9}',
'\u{60c}',
'\u{61b}',
'\u{61f}',
'\u{fe81}',
'\u{fe8d}',
'\u{fe8e}',
'\u{f8fb}',
'\u{fe8f}',
'\u{fe91}',
'\u{fb56}',
'\u{fb58}',
'\u{fe93}',
'\u{fe95}',
'\u{fe97}',
'\u{fb66}',
'\u{fb68}',
'\u{fe99}',
'\u{fe9b}',
'\u{fe9d}',
'\u{fe9f}',
'\u{fb7a}',
'\u{fb7c}',
'\u{fea1}',
'\u{fea3}',
'\u{fea5}',
'\u{fea7}',
'\u{fea9}',
'\u{fb88}',
'\u{feab}',
'\u{fead}',
'\u{fb8c}',
'\u{feaf}',
'\u{fb8a}',
'\u{feb1}',
'\u{feb3}',
'\u{feb5}',
'\u{ab}',
'\u{bb}',
'\u{2591}',
'\u{2592}',
'\u{2593}',
'\u{2502}',
'\u{2524}',
'\u{feb7}',
'\u{feb9}',
'\u{febb}',
'\u{febd}',
'\u{2563}',
'\u{2551}',
'\u{2557}',
'\u{255d}',
'\u{febf}',
'\u{fec3}',
'\u{2510}',
'\u{2514}',
'\u{2534}',
'\u{252c}',
'\u{251c}',
'\u{2500}',
'\u{253c}',
'\u{fec7}',
'\u{fec9}',
'\u{255a}',
'\u{2554}',
'\u{2569}',
'\u{2566}',
'\u{2560}',
'\u{2550}',
'\u{256c}',
'\u{feca}',
'\u{fecb}',
'\u{fecc}',
'\u{fecd}',
'\u{fece}',
'\u{fecf}',
'\u{fed0}',
'\u{fed1}',
'\u{fed3}',
'\u{fed5}',
'\u{2518}',
'\u{250c}',
'\u{2588}',
'\u{2584}',
'\u{fed7}',
'\u{fb8e}',
'\u{2580}',
'\u{fedb}',
'\u{fb92}',
'\u{fb94}',
'\u{fedd}',
'\u{fedf}',
'\u{fee0}',
'\u{fee1}',
'\u{fee3}',
'\u{fb9e}',
'\u{fee5}',
'\u{fee7}',
'\u{fe85}',
'\u{feed}',
'\u{fba6}',
'\u{fba8}',
'\u{fba9}',
'\u{ad}',
'\u{fbaa}',
'\u{fe80}',
'\u{fe89}',
'\u{fe8a}',
'\u{fe8b}',
'\u{fbfc}',
'\u{fbfd}',
'\u{fbfe}',
'\u{fbb0}',
'\u{fbae}',
'\u{fe7c}',
'\u{fe7d}',
char::REPLACEMENT_CHARACTER,
'\u{25a0}',
'\u{a0}',
];
const IBM_868_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(171, 174),
(173, 240),
(187, 175),
(1548, 138),
(1563, 139),
(1567, 140),
(1776, 128),
(1777, 129),
(1778, 130),
(1779, 131),
(1780, 132),
(1781, 133),
(1782, 134),
(1783, 135),
(1784, 136),
(1785, 137),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
(63739, 144),
(64342, 147),
(64344, 148),
(64358, 152),
(64360, 153),
(64378, 158),
(64380, 159),
(64392, 165),
(64394, 170),
(64396, 168),
(64398, 222),
(64402, 225),
(64404, 226),
(64414, 232),
(64422, 237),
(64424, 238),
(64425, 239),
(64426, 241),
(64430, 250),
(64432, 249),
(64508, 246),
(64509, 247),
(64510, 248),
(65148, 251),
(65149, 252),
(65152, 242),
(65153, 141),
(65157, 235),
(65161, 243),
(65162, 244),
(65163, 245),
(65165, 142),
(65166, 143),
(65167, 145),
(65169, 146),
(65171, 149),
(65173, 150),
(65175, 151),
(65177, 154),
(65179, 155),
(65181, 156),
(65183, 157),
(65185, 160),
(65187, 161),
(65189, 162),
(65191, 163),
(65193, 164),
(65195, 166),
(65197, 167),
(65199, 169),
(65201, 171),
(65203, 172),
(65205, 173),
(65207, 181),
(65209, 182),
(65211, 183),
(65213, 184),
(65215, 189),
(65219, 190),
(65223, 198),
(65225, 199),
(65226, 207),
(65227, 208),
(65228, 209),
(65229, 210),
(65230, 211),
(65231, 212),
(65232, 213),
(65233, 214),
(65235, 215),
(65237, 216),
(65239, 221),
(65243, 224),
(65245, 227),
(65247, 228),
(65248, 229),
(65249, 230),
(65251, 231),
(65253, 233),
(65255, 234),
(65261, 236),
];
impl_ebcdic_encoder_and_decoder!(
IBM869,
"IBM869",
IBM869Encoder,
IBM869Decoder,
IBM_869_ENCODE_TABLE,
IBM_869_DECODE_TABLE
);
const IBM_869_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{386}',
char::REPLACEMENT_CHARACTER,
'\u{387}',
'\u{ac}',
'\u{a6}',
'\u{2018}',
'\u{2019}',
'\u{388}',
'\u{2015}',
'\u{389}',
'\u{38a}',
'\u{3aa}',
'\u{38c}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{38e}',
'\u{3ab}',
'\u{a9}',
'\u{38f}',
'\u{b2}',
'\u{b3}',
'\u{3ac}',
'\u{a3}',
'\u{3ad}',
'\u{3ae}',
'\u{3af}',
'\u{3ca}',
'\u{390}',
'\u{3cc}',
'\u{3cd}',
'\u{391}',
'\u{392}',
'\u{393}',
'\u{394}',
'\u{395}',
'\u{396}',
'\u{397}',
'\u{bd}',
'\u{398}',
'\u{399}',
'\u{ab}',
'\u{bb}',
'\u{2591}',
'\u{2592}',
'\u{2593}',
'\u{2502}',
'\u{2524}',
'\u{39a}',
'\u{39b}',
'\u{39c}',
'\u{39d}',
'\u{2563}',
'\u{2551}',
'\u{2557}',
'\u{255d}',
'\u{39e}',
'\u{39f}',
'\u{2510}',
'\u{2514}',
'\u{2534}',
'\u{252c}',
'\u{251c}',
'\u{2500}',
'\u{253c}',
'\u{3a0}',
'\u{3a1}',
'\u{255a}',
'\u{2554}',
'\u{2569}',
'\u{2566}',
'\u{2560}',
'\u{2550}',
'\u{256c}',
'\u{3a3}',
'\u{3a4}',
'\u{3a5}',
'\u{3a6}',
'\u{3a7}',
'\u{3a8}',
'\u{3a9}',
'\u{3b1}',
'\u{3b2}',
'\u{3b3}',
'\u{2518}',
'\u{250c}',
'\u{2588}',
'\u{2584}',
'\u{3b4}',
'\u{3b5}',
'\u{2580}',
'\u{3b6}',
'\u{3b7}',
'\u{3b8}',
'\u{3b9}',
'\u{3ba}',
'\u{3bb}',
'\u{3bc}',
'\u{3bd}',
'\u{3be}',
'\u{3bf}',
'\u{3c0}',
'\u{3c1}',
'\u{3c3}',
'\u{3c2}',
'\u{3c4}',
'\u{b4}',
'\u{ad}',
'\u{b1}',
'\u{3c5}',
'\u{3c6}',
'\u{3c7}',
'\u{a7}',
'\u{3c8}',
'\u{385}',
'\u{b0}',
'\u{a8}',
'\u{3c9}',
'\u{3cb}',
'\u{3b0}',
'\u{3ce}',
'\u{25a0}',
'\u{a0}',
];
const IBM_869_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
(160, 255),
(163, 156),
(166, 138),
(167, 245),
(168, 249),
(169, 151),
(171, 174),
(172, 137),
(173, 240),
(176, 248),
(177, 241),
(178, 153),
(179, 154),
(180, 239),
(187, 175),
(189, 171),
(901, 247),
(902, 134),
(903, 136),
(904, 141),
(905, 143),
(906, 144),
(908, 146),
(910, 149),
(911, 152),
(912, 161),
(913, 164),
(914, 165),
(915, 166),
(916, 167),
(917, 168),
(918, 169),
(919, 170),
(920, 172),
(921, 173),
(922, 181),
(923, 182),
(924, 183),
(925, 184),
(926, 189),
(927, 190),
(928, 198),
(929, 199),
(931, 207),
(932, 208),
(933, 209),
(934, 210),
(935, 211),
(936, 212),
(937, 213),
(938, 145),
(939, 150),
(940, 155),
(941, 157),
(942, 158),
(943, 159),
(944, 252),
(945, 214),
(946, 215),
(947, 216),
(948, 221),
(949, 222),
(950, 224),
(951, 225),
(952, 226),
(953, 227),
(954, 228),
(955, 229),
(956, 230),
(957, 231),
(958, 232),
(959, 233),
(960, 234),
(961, 235),
(962, 237),
(963, 236),
(964, 238),
(965, 242),
(966, 243),
(967, 244),
(968, 246),
(969, 250),
(970, 160),
(971, 251),
(972, 162),
(973, 163),
(974, 253),
(8213, 142),
(8216, 139),
(8217, 140),
(9472, 196),
(9474, 179),
(9484, 218),
(9488, 191),
(9492, 192),
(9496, 217),
(9500, 195),
(9508, 180),
(9516, 194),
(9524, 193),
(9532, 197),
(9552, 205),
(9553, 186),
(9556, 201),
(9559, 187),
(9562, 200),
(9565, 188),
(9568, 204),
(9571, 185),
(9574, 203),
(9577, 202),
(9580, 206),
(9600, 223),
(9604, 220),
(9608, 219),
(9617, 176),
(9618, 177),
(9619, 178),
(9632, 254),
];
impl_ebcdic_encoder_and_decoder!(
IBM870,
"IBM870",
IBM870Encoder,
IBM870Decoder,
IBM_870_ENCODE_TABLE,
IBM_870_DECODE_TABLE
);
const IBM_870_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{163}', '\u{e1}', '\u{103}', '\u{10d}', '\u{e7}', '\u{107}',
'\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{119}',
'\u{eb}', '\u{16f}', '\u{ed}', '\u{ee}', '\u{13e}', '\u{13a}', '\u{df}', '\u{5d}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{2dd}',
'\u{c1}', '\u{102}', '\u{10c}', '\u{c7}', '\u{106}', '\u{7c}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{2c7}', '\u{c9}', '\u{118}', '\u{cb}', '\u{16e}', '\u{cd}', '\u{ce}',
'\u{13d}', '\u{139}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
'\u{2d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{15b}', '\u{148}', '\u{111}', '\u{fd}', '\u{159}', '\u{15f}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{142}',
'\u{144}', '\u{161}', '\u{b8}', '\u{2db}', '\u{a4}', '\u{105}', '\u{7e}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{15a}', '\u{147}', '\u{110}',
'\u{dd}', '\u{158}', '\u{15e}', '\u{2d9}', '\u{104}', '\u{17c}', '\u{162}', '\u{17b}',
'\u{a7}', '\u{17e}', '\u{17a}', '\u{17d}', '\u{179}', '\u{141}', '\u{143}', '\u{160}',
'\u{a8}', '\u{b4}', '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}',
'\u{46}', '\u{47}', '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{155}', '\u{f3}',
'\u{151}', '\u{7d}', '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}',
'\u{51}', '\u{52}', '\u{11a}', '\u{171}', '\u{fc}', '\u{165}', '\u{fa}', '\u{11b}', '\u{5c}',
'\u{f7}', '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}',
'\u{10f}', '\u{d4}', '\u{d6}', '\u{154}', '\u{d3}', '\u{150}', '\u{30}', '\u{31}', '\u{32}',
'\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{10e}', '\u{170}',
'\u{dc}', '\u{164}', '\u{da}', '\u{9f}',
];
const IBM_870_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(92, 224),
(93, 90),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 106),
(125, 208),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(164, 159),
(167, 181),
(168, 189),
(173, 202),
(176, 144),
(180, 190),
(184, 157),
(193, 101),
(194, 98),
(196, 99),
(199, 104),
(201, 113),
(203, 115),
(205, 117),
(206, 118),
(211, 238),
(212, 235),
(214, 236),
(215, 191),
(218, 254),
(220, 252),
(221, 173),
(223, 89),
(225, 69),
(226, 66),
(228, 67),
(231, 72),
(233, 81),
(235, 83),
(237, 85),
(238, 86),
(243, 206),
(244, 203),
(246, 204),
(247, 225),
(250, 222),
(252, 220),
(253, 141),
(258, 102),
(259, 70),
(260, 177),
(261, 160),
(262, 105),
(263, 73),
(268, 103),
(269, 71),
(270, 250),
(271, 234),
(272, 172),
(273, 140),
(280, 114),
(281, 82),
(282, 218),
(283, 223),
(313, 120),
(314, 88),
(317, 119),
(318, 87),
(321, 186),
(322, 154),
(323, 187),
(324, 155),
(327, 171),
(328, 139),
(336, 239),
(337, 207),
(340, 237),
(341, 205),
(344, 174),
(345, 142),
(346, 170),
(347, 138),
(350, 175),
(351, 143),
(352, 188),
(353, 156),
(354, 179),
(355, 68),
(356, 253),
(357, 221),
(366, 116),
(367, 84),
(368, 251),
(369, 219),
(377, 185),
(378, 183),
(379, 180),
(380, 178),
(381, 184),
(382, 182),
(711, 112),
(728, 128),
(729, 176),
(731, 158),
(733, 100),
];
impl_ebcdic_encoder_and_decoder!(
IBM871,
"IBM871",
IBM871Encoder,
IBM871Decoder,
IBM_871_ENCODE_TABLE,
IBM_871_DECODE_TABLE
);
const IBM_871_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
'\u{de}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{c6}', '\u{24}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{d6}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{f0}', '\u{3a}', '\u{23}', '\u{d0}', '\u{27}', '\u{3d}', '\u{22}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{60}', '\u{fd}', '\u{7b}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{7d}', '\u{b8}', '\u{5d}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{40}',
'\u{dd}', '\u{5b}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{5c}',
'\u{d7}', '\u{fe}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e6}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{b4}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{5e}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_871_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 172),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 174),
(92, 190),
(93, 158),
(94, 236),
(95, 109),
(96, 140),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 142),
(124, 187),
(125, 156),
(126, 204),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 106),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 224),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 90),
(199, 104),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(208, 124),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 95),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 252),
(221, 173),
(222, 74),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 208),
(231, 72),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(240, 121),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 161),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 220),
(253, 141),
(254, 192),
(255, 223),
];
impl_ebcdic_encoder_and_decoder!(
IBM880,
"IBM880",
IBM880Encoder,
IBM880Decoder,
IBM_880_ENCODE_TABLE,
IBM_880_DECODE_TABLE
);
const IBM_880_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{452}', '\u{453}', '\u{451}', '\u{454}', '\u{455}', '\u{456}', '\u{457}',
'\u{458}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{459}',
'\u{45a}', '\u{45b}', '\u{45c}', '\u{45e}', '\u{45f}', '\u{42a}', '\u{2116}', '\u{402}',
'\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{403}',
'\u{401}', '\u{404}', '\u{405}', '\u{406}', '\u{407}', '\u{408}', '\u{409}', '\u{7c}',
'\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{40a}', '\u{40b}', '\u{40c}', '\u{ad}',
'\u{40e}', '\u{40f}', '\u{44e}', '\u{430}', '\u{431}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}',
'\u{27}', '\u{3d}', '\u{22}', '\u{446}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
'\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{434}', '\u{435}', '\u{444}', '\u{433}', '\u{445}',
'\u{438}', '\u{439}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}',
'\u{71}', '\u{72}', '\u{43a}', '\u{43b}', '\u{43c}', '\u{43d}', '\u{43e}', '\u{43f}',
'\u{44f}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}',
'\u{7a}', '\u{440}', '\u{441}', '\u{442}', '\u{443}', '\u{436}', '\u{432}', '\u{44c}',
'\u{44b}', '\u{437}', '\u{448}', '\u{44d}', '\u{449}', '\u{447}', '\u{44a}', '\u{42e}',
'\u{410}', '\u{411}', '\u{426}', '\u{414}', '\u{415}', '\u{424}', '\u{413}', '\u{7b}',
'\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
'\u{425}', '\u{418}', '\u{419}', '\u{41a}', '\u{41b}', '\u{41c}', '\u{7d}', '\u{4a}', '\u{4b}',
'\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}', '\u{41d}', '\u{41e}',
'\u{41f}', '\u{42f}', '\u{420}', '\u{421}', '\u{5c}', '\u{a4}', '\u{53}', '\u{54}', '\u{55}',
'\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{422}', '\u{423}', '\u{416}', '\u{412}',
'\u{42c}', '\u{42b}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}',
'\u{37}', '\u{38}', '\u{39}', '\u{417}', '\u{428}', '\u{42d}', '\u{429}', '\u{427}', '\u{9f}',
];
const IBM_880_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(92, 224),
(93, 90),
(94, 95),
(95, 109),
(96, 121),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 106),
(125, 208),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(164, 225),
(173, 115),
(1025, 99),
(1026, 89),
(1027, 98),
(1028, 100),
(1029, 101),
(1030, 102),
(1031, 103),
(1032, 104),
(1033, 105),
(1034, 112),
(1035, 113),
(1036, 114),
(1038, 116),
(1039, 117),
(1040, 185),
(1041, 186),
(1042, 237),
(1043, 191),
(1044, 188),
(1045, 189),
(1046, 236),
(1047, 250),
(1048, 203),
(1049, 204),
(1050, 205),
(1051, 206),
(1052, 207),
(1053, 218),
(1054, 219),
(1055, 220),
(1056, 222),
(1057, 223),
(1058, 234),
(1059, 235),
(1060, 190),
(1061, 202),
(1062, 187),
(1063, 254),
(1064, 251),
(1065, 253),
(1066, 87),
(1067, 239),
(1068, 238),
(1069, 252),
(1070, 184),
(1071, 221),
(1072, 119),
(1073, 120),
(1074, 175),
(1075, 141),
(1076, 138),
(1077, 139),
(1078, 174),
(1079, 178),
(1080, 143),
(1081, 144),
(1082, 154),
(1083, 155),
(1084, 156),
(1085, 157),
(1086, 158),
(1087, 159),
(1088, 170),
(1089, 171),
(1090, 172),
(1091, 173),
(1092, 140),
(1093, 142),
(1094, 128),
(1095, 182),
(1096, 179),
(1097, 181),
(1098, 183),
(1099, 177),
(1100, 176),
(1101, 180),
(1102, 118),
(1103, 160),
(1105, 68),
(1106, 66),
(1107, 67),
(1108, 69),
(1109, 70),
(1110, 71),
(1111, 72),
(1112, 73),
(1113, 81),
(1114, 82),
(1115, 83),
(1116, 84),
(1118, 85),
(1119, 86),
(8470, 88),
];
impl_ebcdic_encoder_and_decoder!(
IBM891,
"IBM891",
IBM891Encoder,
IBM891Decoder,
IBM_891_ENCODE_TABLE,
IBM_891_DECODE_TABLE
);
const IBM_891_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{20a9}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{203e}',
'\u{1a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{ffa0}',
'\u{ffa1}',
'\u{ffa2}',
'\u{ffa3}',
'\u{ffa4}',
'\u{ffa5}',
'\u{ffa6}',
'\u{ffa7}',
'\u{ffa8}',
'\u{ffa9}',
'\u{ffaa}',
'\u{ffab}',
'\u{ffac}',
'\u{ffad}',
'\u{ffae}',
'\u{ffaf}',
'\u{ffb0}',
'\u{ffb1}',
'\u{ffb2}',
'\u{ffb3}',
'\u{ffb4}',
'\u{ffb5}',
'\u{ffb6}',
'\u{ffb7}',
'\u{ffb8}',
'\u{ffb9}',
'\u{ffba}',
'\u{ffbb}',
'\u{ffbc}',
'\u{ffbd}',
'\u{ffbe}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{ffc2}',
'\u{ffc3}',
'\u{ffc4}',
'\u{ffc5}',
'\u{ffc6}',
'\u{ffc7}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{ffca}',
'\u{ffcb}',
'\u{ffcc}',
'\u{ffcd}',
'\u{ffce}',
'\u{ffcf}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{ffd2}',
'\u{ffd3}',
'\u{ffd4}',
'\u{ffd5}',
'\u{ffd6}',
'\u{ffd7}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
'\u{ffda}',
'\u{ffdb}',
'\u{ffdc}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
];
const IBM_891_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(127, 28),
(8254, 126),
(8361, 92),
(65440, 192),
(65441, 193),
(65442, 194),
(65443, 195),
(65444, 196),
(65445, 197),
(65446, 198),
(65447, 199),
(65448, 200),
(65449, 201),
(65450, 202),
(65451, 203),
(65452, 204),
(65453, 205),
(65454, 206),
(65455, 207),
(65456, 208),
(65457, 209),
(65458, 210),
(65459, 211),
(65460, 212),
(65461, 213),
(65462, 214),
(65463, 215),
(65464, 216),
(65465, 217),
(65466, 218),
(65467, 219),
(65468, 220),
(65469, 221),
(65470, 222),
(65474, 226),
(65475, 227),
(65476, 228),
(65477, 229),
(65478, 230),
(65479, 231),
(65482, 234),
(65483, 235),
(65484, 236),
(65485, 237),
(65486, 238),
(65487, 239),
(65490, 242),
(65491, 243),
(65492, 244),
(65493, 245),
(65494, 246),
(65495, 247),
(65498, 250),
(65499, 251),
(65500, 252),
];
impl_ebcdic_encoder_and_decoder!(
IBM903,
"IBM903",
IBM903Encoder,
IBM903Decoder,
IBM_903_ENCODE_TABLE,
IBM_903_DECODE_TABLE
);
const IBM_903_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{a5}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{203e}',
'\u{1a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
];
const IBM_903_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(127, 28),
(165, 92),
(8254, 126),
];
impl_ebcdic_encoder_and_decoder!(
IBM904,
"IBM904",
IBM904Encoder,
IBM904Decoder,
IBM_904_ENCODE_TABLE,
IBM_904_DECODE_TABLE
);
const IBM_904_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{4}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{8}',
'\u{9}',
'\u{a}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{14}',
'\u{15}',
'\u{16}',
'\u{17}',
'\u{18}',
'\u{19}',
'\u{1c}',
'\u{1b}',
'\u{7f}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{20}',
'\u{21}',
'\u{22}',
'\u{23}',
'\u{24}',
'\u{25}',
'\u{26}',
'\u{27}',
'\u{28}',
'\u{29}',
'\u{2a}',
'\u{2b}',
'\u{2c}',
'\u{2d}',
'\u{2e}',
'\u{2f}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{3a}',
'\u{3b}',
'\u{3c}',
'\u{3d}',
'\u{3e}',
'\u{3f}',
'\u{40}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{5b}',
'\u{5c}',
'\u{5d}',
'\u{5e}',
'\u{5f}',
'\u{60}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{7b}',
'\u{7c}',
'\u{7d}',
'\u{7e}',
'\u{1a}',
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
char::REPLACEMENT_CHARACTER,
];
const IBM_904_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 4),
(5, 5),
(6, 6),
(7, 7),
(8, 8),
(9, 9),
(10, 10),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 20),
(21, 21),
(22, 22),
(23, 23),
(24, 24),
(25, 25),
(26, 127),
(27, 27),
(28, 26),
(29, 29),
(30, 30),
(31, 31),
(32, 32),
(33, 33),
(34, 34),
(35, 35),
(36, 36),
(37, 37),
(38, 38),
(39, 39),
(40, 40),
(41, 41),
(42, 42),
(43, 43),
(44, 44),
(45, 45),
(46, 46),
(47, 47),
(48, 48),
(49, 49),
(50, 50),
(51, 51),
(52, 52),
(53, 53),
(54, 54),
(55, 55),
(56, 56),
(57, 57),
(58, 58),
(59, 59),
(60, 60),
(61, 61),
(62, 62),
(63, 63),
(64, 64),
(65, 65),
(66, 66),
(67, 67),
(68, 68),
(69, 69),
(70, 70),
(71, 71),
(72, 72),
(73, 73),
(74, 74),
(75, 75),
(76, 76),
(77, 77),
(78, 78),
(79, 79),
(80, 80),
(81, 81),
(82, 82),
(83, 83),
(84, 84),
(85, 85),
(86, 86),
(87, 87),
(88, 88),
(89, 89),
(90, 90),
(91, 91),
(92, 92),
(93, 93),
(94, 94),
(95, 95),
(96, 96),
(97, 97),
(98, 98),
(99, 99),
(100, 100),
(101, 101),
(102, 102),
(103, 103),
(104, 104),
(105, 105),
(106, 106),
(107, 107),
(108, 108),
(109, 109),
(110, 110),
(111, 111),
(112, 112),
(113, 113),
(114, 114),
(115, 115),
(116, 116),
(117, 117),
(118, 118),
(119, 119),
(120, 120),
(121, 121),
(122, 122),
(123, 123),
(124, 124),
(125, 125),
(126, 126),
(127, 28),
];
impl_ebcdic_encoder_and_decoder!(
IBM905,
"IBM905",
IBM905Encoder,
IBM905Decoder,
IBM_905_ENCODE_TABLE,
IBM_905_DECODE_TABLE
);
const IBM_905_DECODE_TABLE: [char; 256] = [
'\u{0}',
'\u{1}',
'\u{2}',
'\u{3}',
'\u{9c}',
'\u{9}',
'\u{86}',
'\u{7f}',
'\u{97}',
'\u{8d}',
'\u{8e}',
'\u{b}',
'\u{c}',
'\u{d}',
'\u{e}',
'\u{f}',
'\u{10}',
'\u{11}',
'\u{12}',
'\u{13}',
'\u{9d}',
'\u{85}',
'\u{8}',
'\u{87}',
'\u{18}',
'\u{19}',
'\u{92}',
'\u{8f}',
'\u{1c}',
'\u{1d}',
'\u{1e}',
'\u{1f}',
'\u{80}',
'\u{81}',
'\u{82}',
'\u{83}',
'\u{84}',
'\u{a}',
'\u{17}',
'\u{1b}',
'\u{88}',
'\u{89}',
'\u{8a}',
'\u{8b}',
'\u{8c}',
'\u{5}',
'\u{6}',
'\u{7}',
'\u{90}',
'\u{91}',
'\u{16}',
'\u{93}',
'\u{94}',
'\u{95}',
'\u{96}',
'\u{4}',
'\u{98}',
'\u{99}',
'\u{9a}',
'\u{9b}',
'\u{14}',
'\u{15}',
'\u{9e}',
'\u{1a}',
'\u{20}',
'\u{a0}',
'\u{e2}',
'\u{e4}',
'\u{e0}',
'\u{e1}',
char::REPLACEMENT_CHARACTER,
'\u{10b}',
'\u{7b}',
'\u{f1}',
'\u{c7}',
'\u{2e}',
'\u{3c}',
'\u{28}',
'\u{2b}',
'\u{21}',
'\u{26}',
'\u{e9}',
'\u{ea}',
'\u{eb}',
'\u{e8}',
'\u{ed}',
'\u{ee}',
'\u{ef}',
'\u{ec}',
'\u{df}',
'\u{11e}',
'\u{130}',
'\u{2a}',
'\u{29}',
'\u{3b}',
'\u{5e}',
'\u{2d}',
'\u{2f}',
'\u{c2}',
'\u{c4}',
'\u{c0}',
'\u{c1}',
char::REPLACEMENT_CHARACTER,
'\u{10a}',
'\u{5b}',
'\u{d1}',
'\u{15f}',
'\u{2c}',
'\u{25}',
'\u{5f}',
'\u{3e}',
'\u{3f}',
char::REPLACEMENT_CHARACTER,
'\u{c9}',
'\u{ca}',
'\u{cb}',
'\u{c8}',
'\u{cd}',
'\u{ce}',
'\u{cf}',
'\u{cc}',
'\u{131}',
'\u{3a}',
'\u{d6}',
'\u{15e}',
'\u{27}',
'\u{3d}',
'\u{dc}',
'\u{2d8}',
'\u{61}',
'\u{62}',
'\u{63}',
'\u{64}',
'\u{65}',
'\u{66}',
'\u{67}',
'\u{68}',
'\u{69}',
'\u{127}',
'\u{109}',
'\u{15d}',
'\u{16d}',
char::REPLACEMENT_CHARACTER,
'\u{7c}',
'\u{b0}',
'\u{6a}',
'\u{6b}',
'\u{6c}',
'\u{6d}',
'\u{6e}',
'\u{6f}',
'\u{70}',
'\u{71}',
'\u{72}',
'\u{125}',
'\u{11d}',
'\u{135}',
'\u{b8}',
char::REPLACEMENT_CHARACTER,
'\u{a4}',
'\u{b5}',
'\u{f6}',
'\u{73}',
'\u{74}',
'\u{75}',
'\u{76}',
'\u{77}',
'\u{78}',
'\u{79}',
'\u{7a}',
'\u{126}',
'\u{108}',
'\u{15c}',
'\u{16c}',
char::REPLACEMENT_CHARACTER,
'\u{40}',
'\u{2d9}',
'\u{a3}',
'\u{17c}',
'\u{7d}',
'\u{17b}',
'\u{a7}',
'\u{5d}',
'\u{b7}',
'\u{bd}',
'\u{24}',
'\u{124}',
'\u{11c}',
'\u{134}',
'\u{a8}',
'\u{b4}',
'\u{d7}',
'\u{e7}',
'\u{41}',
'\u{42}',
'\u{43}',
'\u{44}',
'\u{45}',
'\u{46}',
'\u{47}',
'\u{48}',
'\u{49}',
'\u{ad}',
'\u{f4}',
'\u{7e}',
'\u{f2}',
'\u{f3}',
'\u{121}',
'\u{11f}',
'\u{4a}',
'\u{4b}',
'\u{4c}',
'\u{4d}',
'\u{4e}',
'\u{4f}',
'\u{50}',
'\u{51}',
'\u{52}',
'\u{60}',
'\u{fb}',
'\u{5c}',
'\u{f9}',
'\u{fa}',
char::REPLACEMENT_CHARACTER,
'\u{fc}',
'\u{f7}',
'\u{53}',
'\u{54}',
'\u{55}',
'\u{56}',
'\u{57}',
'\u{58}',
'\u{59}',
'\u{5a}',
'\u{b2}',
'\u{d4}',
'\u{23}',
'\u{d2}',
'\u{d3}',
'\u{120}',
'\u{30}',
'\u{31}',
'\u{32}',
'\u{33}',
'\u{34}',
'\u{35}',
'\u{36}',
'\u{37}',
'\u{38}',
'\u{39}',
'\u{b3}',
'\u{db}',
'\u{22}',
'\u{d9}',
'\u{da}',
'\u{9f}',
];
const IBM_905_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 252),
(35, 236),
(36, 185),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 175),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 104),
(92, 220),
(93, 182),
(94, 95),
(95, 109),
(96, 218),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 72),
(124, 143),
(125, 179),
(126, 204),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(163, 177),
(164, 159),
(167, 181),
(168, 189),
(173, 202),
(176, 144),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(183, 183),
(184, 157),
(189, 184),
(192, 100),
(193, 101),
(194, 98),
(196, 99),
(199, 74),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(214, 123),
(215, 191),
(217, 253),
(218, 254),
(219, 251),
(220, 127),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(228, 67),
(231, 192),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(246, 161),
(247, 225),
(249, 221),
(250, 222),
(251, 219),
(252, 224),
(264, 171),
(265, 139),
(266, 103),
(267, 71),
(284, 187),
(285, 155),
(286, 90),
(287, 208),
(288, 239),
(289, 207),
(292, 186),
(293, 154),
(294, 170),
(295, 138),
(304, 91),
(305, 121),
(308, 188),
(309, 156),
(348, 172),
(349, 140),
(350, 124),
(351, 106),
(364, 173),
(365, 141),
(379, 180),
(380, 178),
(728, 128),
(729, 176),
];
impl_ebcdic_encoder_and_decoder!(
IBM918,
"IBM918",
IBM918Encoder,
IBM918Decoder,
IBM_918_ENCODE_TABLE,
IBM_918_DECODE_TABLE
);
const IBM_918_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{60c}', '\u{61b}', '\u{61f}', '\u{fe81}', '\u{fe8d}', '\u{fe8e}', '\u{f8fb}',
'\u{fe8f}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{fe91}',
'\u{fb56}', '\u{fb58}', '\u{fe93}', '\u{fe95}', '\u{fe97}', '\u{fb66}', '\u{fb68}', '\u{fe99}',
'\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{fe9b}',
'\u{fe9d}', '\u{fe9f}', '\u{fb7a}', '\u{fb7c}', '\u{fea1}', '\u{fea3}', '\u{fea5}', '\u{60}',
'\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{6f0}', '\u{6f1}', '\u{6f2}', '\u{6f3}',
'\u{6f4}', '\u{6f5}', '\u{6f6}', '\u{6f7}', '\u{6f8}', '\u{6f9}', '\u{3a}', '\u{23}', '\u{40}',
'\u{27}', '\u{3d}', '\u{22}', '\u{fea7}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
'\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{fea9}', '\u{fb88}', '\u{feab}', '\u{fead}',
'\u{fb8c}', '\u{feaf}', '\u{fb8a}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}',
'\u{70}', '\u{71}', '\u{72}', '\u{feb1}', '\u{feb3}', '\u{feb5}', '\u{feb7}', '\u{feb9}',
'\u{febb}', '\u{febd}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}',
'\u{79}', '\u{7a}', '\u{febf}', '\u{fec3}', '\u{fec7}', '\u{fec9}', '\u{feca}', '\u{fecb}',
'\u{fecc}', '\u{fecd}', '\u{fece}', '\u{fecf}', '\u{fed0}', '\u{fed1}', '\u{fed3}', '\u{fed5}',
'\u{fed7}', '\u{fb8e}', '\u{fedb}', '\u{7c}', '\u{fb92}', '\u{fb94}', '\u{fedd}', '\u{fedf}',
'\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}',
'\u{49}', '\u{ad}', '\u{fee0}', '\u{fee1}', '\u{fee3}', '\u{fb9e}', '\u{fee5}', '\u{7d}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{fee7}', '\u{fe85}', '\u{feed}', '\u{fba6}', '\u{fba8}', '\u{fba9}', '\u{5c}', '\u{fbaa}',
'\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{fe80}',
'\u{fe89}', '\u{fe8a}', '\u{fe8b}', '\u{fbfc}', '\u{fbfd}', '\u{30}', '\u{31}', '\u{32}',
'\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{fbfe}', '\u{fbb0}',
'\u{fbae}', '\u{fe7c}', '\u{fe7d}', '\u{9f}',
];
const IBM_918_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 127),
(35, 123),
(36, 91),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 124),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 74),
(92, 224),
(93, 90),
(94, 95),
(95, 109),
(96, 106),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 192),
(124, 187),
(125, 208),
(126, 161),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(173, 202),
(1548, 66),
(1563, 67),
(1567, 68),
(1776, 112),
(1777, 113),
(1778, 114),
(1779, 115),
(1780, 116),
(1781, 117),
(1782, 118),
(1783, 119),
(1784, 120),
(1785, 121),
(63739, 72),
(64342, 82),
(64344, 83),
(64358, 87),
(64360, 88),
(64378, 101),
(64380, 102),
(64392, 139),
(64394, 144),
(64396, 142),
(64398, 185),
(64402, 188),
(64404, 189),
(64414, 206),
(64422, 221),
(64424, 222),
(64425, 223),
(64426, 225),
(64430, 252),
(64432, 251),
(64508, 238),
(64509, 239),
(64510, 250),
(65148, 253),
(65149, 254),
(65152, 234),
(65153, 69),
(65157, 219),
(65161, 235),
(65162, 236),
(65163, 237),
(65165, 70),
(65166, 71),
(65167, 73),
(65169, 81),
(65171, 84),
(65173, 85),
(65175, 86),
(65177, 89),
(65179, 98),
(65181, 99),
(65183, 100),
(65185, 103),
(65187, 104),
(65189, 105),
(65191, 128),
(65193, 138),
(65195, 140),
(65197, 141),
(65199, 143),
(65201, 154),
(65203, 155),
(65205, 156),
(65207, 157),
(65209, 158),
(65211, 159),
(65213, 160),
(65215, 170),
(65219, 171),
(65223, 172),
(65225, 173),
(65226, 174),
(65227, 175),
(65228, 176),
(65229, 177),
(65230, 178),
(65231, 179),
(65232, 180),
(65233, 181),
(65235, 182),
(65237, 183),
(65239, 184),
(65243, 186),
(65245, 190),
(65247, 191),
(65248, 203),
(65249, 204),
(65251, 205),
(65253, 207),
(65255, 218),
(65261, 220),
];
impl_ebcdic_encoder_and_decoder!(
IBM1026,
"IBM1026",
IBM1026Encoder,
IBM1026Decoder,
IBM_1026_ENCODE_TABLE,
IBM_1026_DECODE_TABLE
);
const IBM_1026_DECODE_TABLE: [char; 256] = [
'\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
'\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
'\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
'\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
'\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
'\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
'\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
'\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{7b}', '\u{f1}',
'\u{c7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
'\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{11e}', '\u{130}',
'\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
'\u{c1}', '\u{c3}', '\u{c5}', '\u{5b}', '\u{d1}', '\u{15f}', '\u{2c}', '\u{25}', '\u{5f}',
'\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
'\u{cf}', '\u{cc}', '\u{131}', '\u{3a}', '\u{d6}', '\u{15e}', '\u{27}', '\u{3d}', '\u{dc}',
'\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
'\u{69}', '\u{ab}', '\u{bb}', '\u{7d}', '\u{60}', '\u{a6}', '\u{b1}', '\u{b0}', '\u{6a}',
'\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
'\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
'\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{5d}',
'\u{24}', '\u{40}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
'\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
'\u{d7}', '\u{e7}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
'\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{11f}',
'\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
'\u{b9}', '\u{fb}', '\u{5c}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{fc}', '\u{f7}', '\u{53}',
'\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
'\u{23}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
'\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{22}', '\u{d9}',
'\u{da}', '\u{9f}',
];
const IBM_1026_ENCODE_TABLE: &[(u16, u8)] = &[
(0, 0),
(1, 1),
(2, 2),
(3, 3),
(4, 55),
(5, 45),
(6, 46),
(7, 47),
(8, 22),
(9, 5),
(10, 37),
(11, 11),
(12, 12),
(13, 13),
(14, 14),
(15, 15),
(16, 16),
(17, 17),
(18, 18),
(19, 19),
(20, 60),
(21, 61),
(22, 50),
(23, 38),
(24, 24),
(25, 25),
(26, 63),
(27, 39),
(28, 28),
(29, 29),
(30, 30),
(31, 31),
(32, 64),
(33, 79),
(34, 252),
(35, 236),
(36, 173),
(37, 108),
(38, 80),
(39, 125),
(40, 77),
(41, 93),
(42, 92),
(43, 78),
(44, 107),
(45, 96),
(46, 75),
(47, 97),
(48, 240),
(49, 241),
(50, 242),
(51, 243),
(52, 244),
(53, 245),
(54, 246),
(55, 247),
(56, 248),
(57, 249),
(58, 122),
(59, 94),
(60, 76),
(61, 126),
(62, 110),
(63, 111),
(64, 174),
(65, 193),
(66, 194),
(67, 195),
(68, 196),
(69, 197),
(70, 198),
(71, 199),
(72, 200),
(73, 201),
(74, 209),
(75, 210),
(76, 211),
(77, 212),
(78, 213),
(79, 214),
(80, 215),
(81, 216),
(82, 217),
(83, 226),
(84, 227),
(85, 228),
(86, 229),
(87, 230),
(88, 231),
(89, 232),
(90, 233),
(91, 104),
(92, 220),
(93, 172),
(94, 95),
(95, 109),
(96, 141),
(97, 129),
(98, 130),
(99, 131),
(100, 132),
(101, 133),
(102, 134),
(103, 135),
(104, 136),
(105, 137),
(106, 145),
(107, 146),
(108, 147),
(109, 148),
(110, 149),
(111, 150),
(112, 151),
(113, 152),
(114, 153),
(115, 162),
(116, 163),
(117, 164),
(118, 165),
(119, 166),
(120, 167),
(121, 168),
(122, 169),
(123, 72),
(124, 187),
(125, 140),
(126, 204),
(127, 7),
(128, 32),
(129, 33),
(130, 34),
(131, 35),
(132, 36),
(133, 21),
(134, 6),
(135, 23),
(136, 40),
(137, 41),
(138, 42),
(139, 43),
(140, 44),
(141, 9),
(142, 10),
(143, 27),
(144, 48),
(145, 49),
(146, 26),
(147, 51),
(148, 52),
(149, 53),
(150, 54),
(151, 8),
(152, 56),
(153, 57),
(154, 58),
(155, 59),
(156, 4),
(157, 20),
(158, 62),
(159, 255),
(160, 65),
(161, 170),
(162, 176),
(163, 177),
(164, 159),
(165, 178),
(166, 142),
(167, 181),
(168, 189),
(169, 180),
(170, 154),
(171, 138),
(172, 186),
(173, 202),
(174, 175),
(175, 188),
(176, 144),
(177, 143),
(178, 234),
(179, 250),
(180, 190),
(181, 160),
(182, 182),
(183, 179),
(184, 157),
(185, 218),
(186, 155),
(187, 139),
(188, 183),
(189, 184),
(190, 185),
(191, 171),
(192, 100),
(193, 101),
(194, 98),
(195, 102),
(196, 99),
(197, 103),
(198, 158),
(199, 74),
(200, 116),
(201, 113),
(202, 114),
(203, 115),
(204, 120),
(205, 117),
(206, 118),
(207, 119),
(209, 105),
(210, 237),
(211, 238),
(212, 235),
(213, 239),
(214, 123),
(215, 191),
(216, 128),
(217, 253),
(218, 254),
(219, 251),
(220, 127),
(223, 89),
(224, 68),
(225, 69),
(226, 66),
(227, 70),
(228, 67),
(229, 71),
(230, 156),
(231, 192),
(232, 84),
(233, 81),
(234, 82),
(235, 83),
(236, 88),
(237, 85),
(238, 86),
(239, 87),
(241, 73),
(242, 205),
(243, 206),
(244, 203),
(245, 207),
(246, 161),
(247, 225),
(248, 112),
(249, 221),
(250, 222),
(251, 219),
(252, 224),
(255, 223),
(286, 90),
(287, 208),
(304, 91),
(305, 121),
(350, 124),
(351, 106),
];
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn ebcdic_decoding_tests() {
let doc = [
0x4c, 0x6f, 0xa7, 0x94, 0x93, 0x40, 0xa5, 0x85, 0x99, 0xa2, 0x89, 0x96, 0x95, 0x7e,
0x7f, 0xf1, 0x4b, 0xf0, 0x7f, 0x40, 0x85, 0x95, 0x83, 0x96, 0x84, 0x89, 0x95, 0x87,
0x7e, 0x7f, 0xc3, 0x97, 0xf0, 0xf3, 0xf7, 0x7f, 0x6f, 0x6e, 0x25, 0x4c, 0x97, 0x6e,
0x84, 0x81, 0xa3, 0x81, 0x4c, 0x61, 0x97, 0x6e,
];
let mut buf = String::with_capacity(1024);
IBM037Decoder.decode(&doc, &mut buf, true).ok();
assert_eq!(
buf,
"<?xml version=\"1.0\" encoding=\"Cp037\"?>\n<p>data</p>"
);
}
}