1use crate::{DecodeError, Decoder, EncodeError, Encoder};
2
3macro_rules! impl_ebcdic_encoder_and_decoder {
4 ( $name:ident, $namelit:literal, $encoder:ident, $decoder:ident, $etable:ident, $dtable:ident ) => {
5 #[doc = concat!("Encoding name for ", $namelit, ".")]
6 pub const $name: &str = $namelit;
7 #[doc = concat!("Encoder for ", $namelit, ".")]
8 #[allow(non_camel_case_types)]
9 pub struct $encoder;
10 impl Encoder for $encoder {
11 fn name(&self) -> &'static str {
12 $name
13 }
14
15 fn encode(
16 &mut self,
17 src: &str,
18 dst: &mut [u8],
19 finish: bool,
20 ) -> Result<(usize, usize), EncodeError> {
21 if src.is_empty() {
22 return if finish {
23 Ok((0, 0))
24 } else {
25 Err(EncodeError::InputIsEmpty)
26 };
27 }
28
29 if dst.is_empty() {
30 return Err(EncodeError::OutputTooShort);
31 }
32
33 let (mut read, mut write) = (0, 0);
34 for c in src.chars() {
35 let b = c as u32;
36 read += c.len_utf8();
37 let pos = $etable
38 .binary_search_by_key(&b, |k| k.0 as u32)
39 .map_err(|_| EncodeError::Unmappable { read, write, c })?;
40 dst[write] = $etable[pos].1;
41 write += 1;
42 if write == dst.len() {
43 break;
44 }
45 }
46 Ok((read, write))
47 }
48 }
49
50 #[doc = concat!("Decoder for ", $namelit, ".")]
51 #[allow(non_camel_case_types)]
52 pub struct $decoder;
53 impl Decoder for $decoder {
54 fn name(&self) -> &'static str {
55 $name
56 }
57
58 fn decode(
59 &mut self,
60 src: &[u8],
61 dst: &mut String,
62 finish: bool,
63 ) -> Result<(usize, usize), DecodeError> {
64 if src.is_empty() {
65 return if finish {
66 Ok((0, 0))
67 } else {
68 Err(DecodeError::InputIsEmpty)
69 };
70 }
71 let len = dst.capacity() - dst.len();
72 if len < 4 {
73 return Err(DecodeError::OutputTooShort);
74 }
75
76 let (mut read, mut write) = (0, 0);
77 for &b in src {
78 let c = $dtable[b as usize];
79 let l = c.len_utf8();
80 if write + l > len {
81 break;
82 }
83 read += 1;
84 if c == char::REPLACEMENT_CHARACTER {
85 return Err(DecodeError::Malformed {
86 read,
87 write,
88 length: 1,
89 offset: 0,
90 });
91 }
92 dst.push(c);
93 write += l;
94 }
95 Ok((read, write))
96 }
97 }
98 };
99}
100
101impl_ebcdic_encoder_and_decoder!(
108 IBM037,
109 "IBM037",
110 IBM037Encoder,
111 IBM037Decoder,
112 IBM_37_ENCODE_TABLE,
113 IBM_37_DECODE_TABLE
114);
115const IBM_37_DECODE_TABLE: [char; 256] = [
116 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
117 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
118 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
119 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
120 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
121 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
122 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
123 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
124 '\u{a2}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
125 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{24}',
126 '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
127 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
128 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
129 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
130 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
131 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
132 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
133 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
134 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
135 '\u{dd}', '\u{de}', '\u{ae}', '\u{5e}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
136 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5b}', '\u{5d}', '\u{af}', '\u{a8}', '\u{b4}',
137 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
138 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
139 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
140 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
141 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
142 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
143 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
144 '\u{da}', '\u{9f}',
145];
146const IBM_37_ENCODE_TABLE: &[(u16, u8)] = &[
147 (0, 0),
148 (1, 1),
149 (2, 2),
150 (3, 3),
151 (4, 55),
152 (5, 45),
153 (6, 46),
154 (7, 47),
155 (8, 22),
156 (9, 5),
157 (10, 37),
158 (11, 11),
159 (12, 12),
160 (13, 13),
161 (14, 14),
162 (15, 15),
163 (16, 16),
164 (17, 17),
165 (18, 18),
166 (19, 19),
167 (20, 60),
168 (21, 61),
169 (22, 50),
170 (23, 38),
171 (24, 24),
172 (25, 25),
173 (26, 63),
174 (27, 39),
175 (28, 28),
176 (29, 29),
177 (30, 30),
178 (31, 31),
179 (32, 64),
180 (33, 90),
181 (34, 127),
182 (35, 123),
183 (36, 91),
184 (37, 108),
185 (38, 80),
186 (39, 125),
187 (40, 77),
188 (41, 93),
189 (42, 92),
190 (43, 78),
191 (44, 107),
192 (45, 96),
193 (46, 75),
194 (47, 97),
195 (48, 240),
196 (49, 241),
197 (50, 242),
198 (51, 243),
199 (52, 244),
200 (53, 245),
201 (54, 246),
202 (55, 247),
203 (56, 248),
204 (57, 249),
205 (58, 122),
206 (59, 94),
207 (60, 76),
208 (61, 126),
209 (62, 110),
210 (63, 111),
211 (64, 124),
212 (65, 193),
213 (66, 194),
214 (67, 195),
215 (68, 196),
216 (69, 197),
217 (70, 198),
218 (71, 199),
219 (72, 200),
220 (73, 201),
221 (74, 209),
222 (75, 210),
223 (76, 211),
224 (77, 212),
225 (78, 213),
226 (79, 214),
227 (80, 215),
228 (81, 216),
229 (82, 217),
230 (83, 226),
231 (84, 227),
232 (85, 228),
233 (86, 229),
234 (87, 230),
235 (88, 231),
236 (89, 232),
237 (90, 233),
238 (91, 186),
239 (92, 224),
240 (93, 187),
241 (94, 176),
242 (95, 109),
243 (96, 121),
244 (97, 129),
245 (98, 130),
246 (99, 131),
247 (100, 132),
248 (101, 133),
249 (102, 134),
250 (103, 135),
251 (104, 136),
252 (105, 137),
253 (106, 145),
254 (107, 146),
255 (108, 147),
256 (109, 148),
257 (110, 149),
258 (111, 150),
259 (112, 151),
260 (113, 152),
261 (114, 153),
262 (115, 162),
263 (116, 163),
264 (117, 164),
265 (118, 165),
266 (119, 166),
267 (120, 167),
268 (121, 168),
269 (122, 169),
270 (123, 192),
271 (124, 79),
272 (125, 208),
273 (126, 161),
274 (127, 7),
275 (128, 32),
276 (129, 33),
277 (130, 34),
278 (131, 35),
279 (132, 36),
280 (133, 21),
281 (134, 6),
282 (135, 23),
283 (136, 40),
284 (137, 41),
285 (138, 42),
286 (139, 43),
287 (140, 44),
288 (141, 9),
289 (142, 10),
290 (143, 27),
291 (144, 48),
292 (145, 49),
293 (146, 26),
294 (147, 51),
295 (148, 52),
296 (149, 53),
297 (150, 54),
298 (151, 8),
299 (152, 56),
300 (153, 57),
301 (154, 58),
302 (155, 59),
303 (156, 4),
304 (157, 20),
305 (158, 62),
306 (159, 255),
307 (160, 65),
308 (161, 170),
309 (162, 74),
310 (163, 177),
311 (164, 159),
312 (165, 178),
313 (166, 106),
314 (167, 181),
315 (168, 189),
316 (169, 180),
317 (170, 154),
318 (171, 138),
319 (172, 95),
320 (173, 202),
321 (174, 175),
322 (175, 188),
323 (176, 144),
324 (177, 143),
325 (178, 234),
326 (179, 250),
327 (180, 190),
328 (181, 160),
329 (182, 182),
330 (183, 179),
331 (184, 157),
332 (185, 218),
333 (186, 155),
334 (187, 139),
335 (188, 183),
336 (189, 184),
337 (190, 185),
338 (191, 171),
339 (192, 100),
340 (193, 101),
341 (194, 98),
342 (195, 102),
343 (196, 99),
344 (197, 103),
345 (198, 158),
346 (199, 104),
347 (200, 116),
348 (201, 113),
349 (202, 114),
350 (203, 115),
351 (204, 120),
352 (205, 117),
353 (206, 118),
354 (207, 119),
355 (208, 172),
356 (209, 105),
357 (210, 237),
358 (211, 238),
359 (212, 235),
360 (213, 239),
361 (214, 236),
362 (215, 191),
363 (216, 128),
364 (217, 253),
365 (218, 254),
366 (219, 251),
367 (220, 252),
368 (221, 173),
369 (222, 174),
370 (223, 89),
371 (224, 68),
372 (225, 69),
373 (226, 66),
374 (227, 70),
375 (228, 67),
376 (229, 71),
377 (230, 156),
378 (231, 72),
379 (232, 84),
380 (233, 81),
381 (234, 82),
382 (235, 83),
383 (236, 88),
384 (237, 85),
385 (238, 86),
386 (239, 87),
387 (240, 140),
388 (241, 73),
389 (242, 205),
390 (243, 206),
391 (244, 203),
392 (245, 207),
393 (246, 204),
394 (247, 225),
395 (248, 112),
396 (249, 221),
397 (250, 222),
398 (251, 219),
399 (252, 220),
400 (253, 141),
401 (254, 142),
402 (255, 223),
403];
404
405impl_ebcdic_encoder_and_decoder!(
406 IBM273,
407 "IBM273",
408 IBM273Encoder,
409 IBM273Decoder,
410 IBM_273_ENCODE_TABLE,
411 IBM_273_DECODE_TABLE
412);
413const IBM_273_DECODE_TABLE: [char; 256] = [
414 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
415 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
416 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
417 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
418 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
419 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
420 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
421 '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
422 '\u{c4}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
423 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{7e}', '\u{dc}', '\u{24}',
424 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{5b}', '\u{c0}',
425 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
426 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
427 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
428 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
429 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
430 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
431 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{df}', '\u{73}', '\u{74}',
432 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
433 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
434 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
435 '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
436 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{fc}',
437 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
438 '\u{b9}', '\u{fb}', '\u{7d}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{d6}', '\u{f7}', '\u{53}',
439 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
440 '\u{5c}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
441 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{5d}', '\u{d9}',
442 '\u{da}', '\u{9f}',
443];
444const IBM_273_ENCODE_TABLE: &[(u16, u8)] = &[
445 (0, 0),
446 (1, 1),
447 (2, 2),
448 (3, 3),
449 (4, 55),
450 (5, 45),
451 (6, 46),
452 (7, 47),
453 (8, 22),
454 (9, 5),
455 (10, 37),
456 (11, 11),
457 (12, 12),
458 (13, 13),
459 (14, 14),
460 (15, 15),
461 (16, 16),
462 (17, 17),
463 (18, 18),
464 (19, 19),
465 (20, 60),
466 (21, 61),
467 (22, 50),
468 (23, 38),
469 (24, 24),
470 (25, 25),
471 (26, 63),
472 (27, 39),
473 (28, 28),
474 (29, 29),
475 (30, 30),
476 (31, 31),
477 (32, 64),
478 (33, 79),
479 (34, 127),
480 (35, 123),
481 (36, 91),
482 (37, 108),
483 (38, 80),
484 (39, 125),
485 (40, 77),
486 (41, 93),
487 (42, 92),
488 (43, 78),
489 (44, 107),
490 (45, 96),
491 (46, 75),
492 (47, 97),
493 (48, 240),
494 (49, 241),
495 (50, 242),
496 (51, 243),
497 (52, 244),
498 (53, 245),
499 (54, 246),
500 (55, 247),
501 (56, 248),
502 (57, 249),
503 (58, 122),
504 (59, 94),
505 (60, 76),
506 (61, 126),
507 (62, 110),
508 (63, 111),
509 (64, 181),
510 (65, 193),
511 (66, 194),
512 (67, 195),
513 (68, 196),
514 (69, 197),
515 (70, 198),
516 (71, 199),
517 (72, 200),
518 (73, 201),
519 (74, 209),
520 (75, 210),
521 (76, 211),
522 (77, 212),
523 (78, 213),
524 (79, 214),
525 (80, 215),
526 (81, 216),
527 (82, 217),
528 (83, 226),
529 (84, 227),
530 (85, 228),
531 (86, 229),
532 (87, 230),
533 (88, 231),
534 (89, 232),
535 (90, 233),
536 (91, 99),
537 (92, 236),
538 (93, 252),
539 (94, 95),
540 (95, 109),
541 (96, 121),
542 (97, 129),
543 (98, 130),
544 (99, 131),
545 (100, 132),
546 (101, 133),
547 (102, 134),
548 (103, 135),
549 (104, 136),
550 (105, 137),
551 (106, 145),
552 (107, 146),
553 (108, 147),
554 (109, 148),
555 (110, 149),
556 (111, 150),
557 (112, 151),
558 (113, 152),
559 (114, 153),
560 (115, 162),
561 (116, 163),
562 (117, 164),
563 (118, 165),
564 (119, 166),
565 (120, 167),
566 (121, 168),
567 (122, 169),
568 (123, 67),
569 (124, 187),
570 (125, 220),
571 (126, 89),
572 (127, 7),
573 (128, 32),
574 (129, 33),
575 (130, 34),
576 (131, 35),
577 (132, 36),
578 (133, 21),
579 (134, 6),
580 (135, 23),
581 (136, 40),
582 (137, 41),
583 (138, 42),
584 (139, 43),
585 (140, 44),
586 (141, 9),
587 (142, 10),
588 (143, 27),
589 (144, 48),
590 (145, 49),
591 (146, 26),
592 (147, 51),
593 (148, 52),
594 (149, 53),
595 (150, 54),
596 (151, 8),
597 (152, 56),
598 (153, 57),
599 (154, 58),
600 (155, 59),
601 (156, 4),
602 (157, 20),
603 (158, 62),
604 (159, 255),
605 (160, 65),
606 (161, 170),
607 (162, 176),
608 (163, 177),
609 (164, 159),
610 (165, 178),
611 (166, 204),
612 (167, 124),
613 (168, 189),
614 (169, 180),
615 (170, 154),
616 (171, 138),
617 (172, 186),
618 (173, 202),
619 (174, 175),
620 (175, 188),
621 (176, 144),
622 (177, 143),
623 (178, 234),
624 (179, 250),
625 (180, 190),
626 (181, 160),
627 (182, 182),
628 (183, 179),
629 (184, 157),
630 (185, 218),
631 (186, 155),
632 (187, 139),
633 (188, 183),
634 (189, 184),
635 (190, 185),
636 (191, 171),
637 (192, 100),
638 (193, 101),
639 (194, 98),
640 (195, 102),
641 (196, 74),
642 (197, 103),
643 (198, 158),
644 (199, 104),
645 (200, 116),
646 (201, 113),
647 (202, 114),
648 (203, 115),
649 (204, 120),
650 (205, 117),
651 (206, 118),
652 (207, 119),
653 (208, 172),
654 (209, 105),
655 (210, 237),
656 (211, 238),
657 (212, 235),
658 (213, 239),
659 (214, 224),
660 (215, 191),
661 (216, 128),
662 (217, 253),
663 (218, 254),
664 (219, 251),
665 (220, 90),
666 (221, 173),
667 (222, 174),
668 (223, 161),
669 (224, 68),
670 (225, 69),
671 (226, 66),
672 (227, 70),
673 (228, 192),
674 (229, 71),
675 (230, 156),
676 (231, 72),
677 (232, 84),
678 (233, 81),
679 (234, 82),
680 (235, 83),
681 (236, 88),
682 (237, 85),
683 (238, 86),
684 (239, 87),
685 (240, 140),
686 (241, 73),
687 (242, 205),
688 (243, 206),
689 (244, 203),
690 (245, 207),
691 (246, 106),
692 (247, 225),
693 (248, 112),
694 (249, 221),
695 (250, 222),
696 (251, 219),
697 (252, 208),
698 (253, 141),
699 (254, 142),
700 (255, 223),
701];
702
703impl_ebcdic_encoder_and_decoder!(
704 IBM274,
705 "IBM274",
706 IBM274Encoder,
707 IBM274Decoder,
708 IBM_274_ENCODE_TABLE,
709 IBM_274_DECODE_TABLE
710);
711const IBM_274_DECODE_TABLE: [char; 256] = [
712 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
713 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
714 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
715 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
716 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
717 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
718 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
719 '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
720 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
721 '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
722 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
723 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
724 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
725 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
726 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
727 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
728 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
729 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
730 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
731 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
732 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
733 '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
734 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
735 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
736 '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
737 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
738 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
739 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
740 '\u{da}', '\u{9f}',
741];
742const IBM_274_ENCODE_TABLE: &[(u16, u8)] = &[
743 (0, 0),
744 (1, 1),
745 (2, 2),
746 (3, 3),
747 (4, 55),
748 (5, 45),
749 (6, 46),
750 (7, 47),
751 (8, 22),
752 (9, 5),
753 (10, 37),
754 (11, 11),
755 (12, 12),
756 (13, 13),
757 (14, 14),
758 (15, 15),
759 (16, 16),
760 (17, 17),
761 (18, 18),
762 (19, 19),
763 (20, 60),
764 (21, 61),
765 (22, 50),
766 (23, 38),
767 (24, 24),
768 (25, 25),
769 (26, 63),
770 (27, 39),
771 (28, 28),
772 (29, 29),
773 (30, 30),
774 (31, 31),
775 (32, 64),
776 (33, 79),
777 (34, 127),
778 (35, 123),
779 (36, 91),
780 (37, 108),
781 (38, 80),
782 (39, 125),
783 (40, 77),
784 (41, 93),
785 (42, 92),
786 (43, 78),
787 (44, 107),
788 (45, 96),
789 (46, 75),
790 (47, 97),
791 (48, 240),
792 (49, 241),
793 (50, 242),
794 (51, 243),
795 (52, 244),
796 (53, 245),
797 (54, 246),
798 (55, 247),
799 (56, 248),
800 (57, 249),
801 (58, 122),
802 (59, 94),
803 (60, 76),
804 (61, 126),
805 (62, 110),
806 (63, 111),
807 (64, 68),
808 (65, 193),
809 (66, 194),
810 (67, 195),
811 (68, 196),
812 (69, 197),
813 (70, 198),
814 (71, 199),
815 (72, 200),
816 (73, 201),
817 (74, 209),
818 (75, 210),
819 (76, 211),
820 (77, 212),
821 (78, 213),
822 (79, 214),
823 (80, 215),
824 (81, 216),
825 (82, 217),
826 (83, 226),
827 (84, 227),
828 (85, 228),
829 (86, 229),
830 (87, 230),
831 (88, 231),
832 (89, 232),
833 (90, 233),
834 (91, 74),
835 (92, 72),
836 (93, 90),
837 (94, 95),
838 (95, 109),
839 (96, 121),
840 (97, 129),
841 (98, 130),
842 (99, 131),
843 (100, 132),
844 (101, 133),
845 (102, 134),
846 (103, 135),
847 (104, 136),
848 (105, 137),
849 (106, 145),
850 (107, 146),
851 (108, 147),
852 (109, 148),
853 (110, 149),
854 (111, 150),
855 (112, 151),
856 (113, 152),
857 (114, 153),
858 (115, 162),
859 (116, 163),
860 (117, 164),
861 (118, 165),
862 (119, 166),
863 (120, 167),
864 (121, 168),
865 (122, 169),
866 (123, 81),
867 (124, 187),
868 (125, 84),
869 (126, 189),
870 (127, 7),
871 (128, 32),
872 (129, 33),
873 (130, 34),
874 (131, 35),
875 (132, 36),
876 (133, 21),
877 (134, 6),
878 (135, 23),
879 (136, 40),
880 (137, 41),
881 (138, 42),
882 (139, 43),
883 (140, 44),
884 (141, 9),
885 (142, 10),
886 (143, 27),
887 (144, 48),
888 (145, 49),
889 (146, 26),
890 (147, 51),
891 (148, 52),
892 (149, 53),
893 (150, 54),
894 (151, 8),
895 (152, 56),
896 (153, 57),
897 (154, 58),
898 (155, 59),
899 (156, 4),
900 (157, 20),
901 (158, 62),
902 (159, 255),
903 (160, 65),
904 (161, 170),
905 (162, 176),
906 (163, 177),
907 (164, 159),
908 (165, 178),
909 (166, 221),
910 (167, 181),
911 (168, 161),
912 (169, 180),
913 (170, 154),
914 (171, 138),
915 (172, 186),
916 (173, 202),
917 (174, 175),
918 (175, 188),
919 (176, 144),
920 (177, 143),
921 (178, 234),
922 (179, 250),
923 (180, 190),
924 (181, 160),
925 (182, 182),
926 (183, 179),
927 (184, 157),
928 (185, 218),
929 (186, 155),
930 (187, 139),
931 (188, 183),
932 (189, 184),
933 (190, 185),
934 (191, 171),
935 (192, 100),
936 (193, 101),
937 (194, 98),
938 (195, 102),
939 (196, 99),
940 (197, 103),
941 (198, 158),
942 (199, 104),
943 (200, 116),
944 (201, 113),
945 (202, 114),
946 (203, 115),
947 (204, 120),
948 (205, 117),
949 (206, 118),
950 (207, 119),
951 (208, 172),
952 (209, 105),
953 (210, 237),
954 (211, 238),
955 (212, 235),
956 (213, 239),
957 (214, 236),
958 (215, 191),
959 (216, 128),
960 (217, 253),
961 (218, 254),
962 (219, 251),
963 (220, 252),
964 (221, 173),
965 (222, 174),
966 (223, 89),
967 (224, 124),
968 (225, 69),
969 (226, 66),
970 (227, 70),
971 (228, 67),
972 (229, 71),
973 (230, 156),
974 (231, 224),
975 (232, 208),
976 (233, 192),
977 (234, 82),
978 (235, 83),
979 (236, 88),
980 (237, 85),
981 (238, 86),
982 (239, 87),
983 (240, 140),
984 (241, 73),
985 (242, 205),
986 (243, 206),
987 (244, 203),
988 (245, 207),
989 (246, 204),
990 (247, 225),
991 (248, 112),
992 (249, 106),
993 (250, 222),
994 (251, 219),
995 (252, 220),
996 (253, 141),
997 (254, 142),
998 (255, 223),
999];
1000
1001impl_ebcdic_encoder_and_decoder!(
1002 IBM275,
1003 "IBM275",
1004 IBM275Encoder,
1005 IBM275Decoder,
1006 IBM_275_ENCODE_TABLE,
1007 IBM_275_DECODE_TABLE
1008);
1009const IBM_275_DECODE_TABLE: [char; 256] = [
1010 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1011 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1012 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1013 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1014 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1015 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1016 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1017 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{60}', '\u{e5}', '\u{a6}', '\u{f1}',
1018 '\u{c9}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7d}', '\u{ea}',
1019 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{24}', '\u{c7}',
1020 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1021 '\u{c1}', '\u{40}', '\u{c5}', '\u{5d}', '\u{d1}', '\u{e7}', '\u{2c}', '\u{25}', '\u{5f}',
1022 '\u{3e}', '\u{3f}', '\u{f8}', '\u{5b}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1023 '\u{cf}', '\u{cc}', '\u{e3}', '\u{3a}', '\u{d5}', '\u{c3}', '\u{27}', '\u{3d}', '\u{22}',
1024 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1025 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1026 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1027 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
1028 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1029 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1030 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1031 '\u{d7}', '\u{f5}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1032 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{7b}', '\u{e9}',
1033 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1034 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1035 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1036 '\u{d6}', '\u{d2}', '\u{d3}', '\u{23}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1037 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1038 '\u{da}', '\u{9f}',
1039];
1040const IBM_275_ENCODE_TABLE: &[(u16, u8)] = &[
1041 (0, 0),
1042 (1, 1),
1043 (2, 2),
1044 (3, 3),
1045 (4, 55),
1046 (5, 45),
1047 (6, 46),
1048 (7, 47),
1049 (8, 22),
1050 (9, 5),
1051 (10, 37),
1052 (11, 11),
1053 (12, 12),
1054 (13, 13),
1055 (14, 14),
1056 (15, 15),
1057 (16, 16),
1058 (17, 17),
1059 (18, 18),
1060 (19, 19),
1061 (20, 60),
1062 (21, 61),
1063 (22, 50),
1064 (23, 38),
1065 (24, 24),
1066 (25, 25),
1067 (26, 63),
1068 (27, 39),
1069 (28, 28),
1070 (29, 29),
1071 (30, 30),
1072 (31, 31),
1073 (32, 64),
1074 (33, 79),
1075 (34, 127),
1076 (35, 239),
1077 (36, 90),
1078 (37, 108),
1079 (38, 80),
1080 (39, 125),
1081 (40, 77),
1082 (41, 93),
1083 (42, 92),
1084 (43, 78),
1085 (44, 107),
1086 (45, 96),
1087 (46, 75),
1088 (47, 97),
1089 (48, 240),
1090 (49, 241),
1091 (50, 242),
1092 (51, 243),
1093 (52, 244),
1094 (53, 245),
1095 (54, 246),
1096 (55, 247),
1097 (56, 248),
1098 (57, 249),
1099 (58, 122),
1100 (59, 94),
1101 (60, 76),
1102 (61, 126),
1103 (62, 110),
1104 (63, 111),
1105 (64, 102),
1106 (65, 193),
1107 (66, 194),
1108 (67, 195),
1109 (68, 196),
1110 (69, 197),
1111 (70, 198),
1112 (71, 199),
1113 (72, 200),
1114 (73, 201),
1115 (74, 209),
1116 (75, 210),
1117 (76, 211),
1118 (77, 212),
1119 (78, 213),
1120 (79, 214),
1121 (80, 215),
1122 (81, 216),
1123 (82, 217),
1124 (83, 226),
1125 (84, 227),
1126 (85, 228),
1127 (86, 229),
1128 (87, 230),
1129 (88, 231),
1130 (89, 232),
1131 (90, 233),
1132 (91, 113),
1133 (92, 224),
1134 (93, 104),
1135 (94, 95),
1136 (95, 109),
1137 (96, 70),
1138 (97, 129),
1139 (98, 130),
1140 (99, 131),
1141 (100, 132),
1142 (101, 133),
1143 (102, 134),
1144 (103, 135),
1145 (104, 136),
1146 (105, 137),
1147 (106, 145),
1148 (107, 146),
1149 (108, 147),
1150 (109, 148),
1151 (110, 149),
1152 (111, 150),
1153 (112, 151),
1154 (113, 152),
1155 (114, 153),
1156 (115, 162),
1157 (116, 163),
1158 (117, 164),
1159 (118, 165),
1160 (119, 166),
1161 (120, 167),
1162 (121, 168),
1163 (122, 169),
1164 (123, 207),
1165 (124, 187),
1166 (125, 81),
1167 (126, 161),
1168 (127, 7),
1169 (128, 32),
1170 (129, 33),
1171 (130, 34),
1172 (131, 35),
1173 (132, 36),
1174 (133, 21),
1175 (134, 6),
1176 (135, 23),
1177 (136, 40),
1178 (137, 41),
1179 (138, 42),
1180 (139, 43),
1181 (140, 44),
1182 (141, 9),
1183 (142, 10),
1184 (143, 27),
1185 (144, 48),
1186 (145, 49),
1187 (146, 26),
1188 (147, 51),
1189 (148, 52),
1190 (149, 53),
1191 (150, 54),
1192 (151, 8),
1193 (152, 56),
1194 (153, 57),
1195 (154, 58),
1196 (155, 59),
1197 (156, 4),
1198 (157, 20),
1199 (158, 62),
1200 (159, 255),
1201 (160, 65),
1202 (161, 170),
1203 (162, 176),
1204 (163, 177),
1205 (164, 159),
1206 (165, 178),
1207 (166, 72),
1208 (167, 181),
1209 (168, 189),
1210 (169, 180),
1211 (170, 154),
1212 (171, 138),
1213 (172, 186),
1214 (173, 202),
1215 (174, 175),
1216 (175, 188),
1217 (176, 144),
1218 (177, 143),
1219 (178, 234),
1220 (179, 250),
1221 (180, 190),
1222 (181, 160),
1223 (182, 182),
1224 (183, 179),
1225 (184, 157),
1226 (185, 218),
1227 (186, 155),
1228 (187, 139),
1229 (188, 183),
1230 (189, 184),
1231 (190, 185),
1232 (191, 171),
1233 (192, 100),
1234 (193, 101),
1235 (194, 98),
1236 (195, 124),
1237 (196, 99),
1238 (197, 103),
1239 (198, 158),
1240 (199, 91),
1241 (200, 116),
1242 (201, 74),
1243 (202, 114),
1244 (203, 115),
1245 (204, 120),
1246 (205, 117),
1247 (206, 118),
1248 (207, 119),
1249 (208, 172),
1250 (209, 105),
1251 (210, 237),
1252 (211, 238),
1253 (212, 235),
1254 (213, 123),
1255 (214, 236),
1256 (215, 191),
1257 (216, 128),
1258 (217, 253),
1259 (218, 254),
1260 (219, 251),
1261 (220, 252),
1262 (221, 173),
1263 (222, 174),
1264 (223, 89),
1265 (224, 68),
1266 (225, 69),
1267 (226, 66),
1268 (227, 121),
1269 (228, 67),
1270 (229, 71),
1271 (230, 156),
1272 (231, 106),
1273 (232, 84),
1274 (233, 208),
1275 (234, 82),
1276 (235, 83),
1277 (236, 88),
1278 (237, 85),
1279 (238, 86),
1280 (239, 87),
1281 (240, 140),
1282 (241, 73),
1283 (242, 205),
1284 (243, 206),
1285 (244, 203),
1286 (245, 192),
1287 (246, 204),
1288 (247, 225),
1289 (248, 112),
1290 (249, 221),
1291 (250, 222),
1292 (251, 219),
1293 (252, 220),
1294 (253, 141),
1295 (254, 142),
1296 (255, 223),
1297];
1298
1299impl_ebcdic_encoder_and_decoder!(
1300 IBM277,
1301 "IBM277",
1302 IBM277Encoder,
1303 IBM277Decoder,
1304 IBM_277_ENCODE_TABLE,
1305 IBM_277_DECODE_TABLE
1306);
1307const IBM_277_DECODE_TABLE: [char; 256] = [
1308 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1309 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1310 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1311 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1312 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1313 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1314 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1315 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1316 '\u{23}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
1317 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1318 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1319 '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f8}', '\u{2c}', '\u{25}', '\u{5f}',
1320 '\u{3e}', '\u{3f}', '\u{a6}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1321 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{c6}', '\u{d8}', '\u{27}', '\u{3d}', '\u{22}',
1322 '\u{40}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1323 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1324 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1325 '\u{ba}', '\u{7b}', '\u{b8}', '\u{5b}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1326 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1327 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1328 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1329 '\u{d7}', '\u{e6}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1330 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1331 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1332 '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1333 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1334 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1335 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1336 '\u{da}', '\u{9f}',
1337];
1338const IBM_277_ENCODE_TABLE: &[(u16, u8)] = &[
1339 (0, 0),
1340 (1, 1),
1341 (2, 2),
1342 (3, 3),
1343 (4, 55),
1344 (5, 45),
1345 (6, 46),
1346 (7, 47),
1347 (8, 22),
1348 (9, 5),
1349 (10, 37),
1350 (11, 11),
1351 (12, 12),
1352 (13, 13),
1353 (14, 14),
1354 (15, 15),
1355 (16, 16),
1356 (17, 17),
1357 (18, 18),
1358 (19, 19),
1359 (20, 60),
1360 (21, 61),
1361 (22, 50),
1362 (23, 38),
1363 (24, 24),
1364 (25, 25),
1365 (26, 63),
1366 (27, 39),
1367 (28, 28),
1368 (29, 29),
1369 (30, 30),
1370 (31, 31),
1371 (32, 64),
1372 (33, 79),
1373 (34, 127),
1374 (35, 74),
1375 (36, 103),
1376 (37, 108),
1377 (38, 80),
1378 (39, 125),
1379 (40, 77),
1380 (41, 93),
1381 (42, 92),
1382 (43, 78),
1383 (44, 107),
1384 (45, 96),
1385 (46, 75),
1386 (47, 97),
1387 (48, 240),
1388 (49, 241),
1389 (50, 242),
1390 (51, 243),
1391 (52, 244),
1392 (53, 245),
1393 (54, 246),
1394 (55, 247),
1395 (56, 248),
1396 (57, 249),
1397 (58, 122),
1398 (59, 94),
1399 (60, 76),
1400 (61, 126),
1401 (62, 110),
1402 (63, 111),
1403 (64, 128),
1404 (65, 193),
1405 (66, 194),
1406 (67, 195),
1407 (68, 196),
1408 (69, 197),
1409 (70, 198),
1410 (71, 199),
1411 (72, 200),
1412 (73, 201),
1413 (74, 209),
1414 (75, 210),
1415 (76, 211),
1416 (77, 212),
1417 (78, 213),
1418 (79, 214),
1419 (80, 215),
1420 (81, 216),
1421 (82, 217),
1422 (83, 226),
1423 (84, 227),
1424 (85, 228),
1425 (86, 229),
1426 (87, 230),
1427 (88, 231),
1428 (89, 232),
1429 (90, 233),
1430 (91, 158),
1431 (92, 224),
1432 (93, 159),
1433 (94, 95),
1434 (95, 109),
1435 (96, 121),
1436 (97, 129),
1437 (98, 130),
1438 (99, 131),
1439 (100, 132),
1440 (101, 133),
1441 (102, 134),
1442 (103, 135),
1443 (104, 136),
1444 (105, 137),
1445 (106, 145),
1446 (107, 146),
1447 (108, 147),
1448 (109, 148),
1449 (110, 149),
1450 (111, 150),
1451 (112, 151),
1452 (113, 152),
1453 (114, 153),
1454 (115, 162),
1455 (116, 163),
1456 (117, 164),
1457 (118, 165),
1458 (119, 166),
1459 (120, 167),
1460 (121, 168),
1461 (122, 169),
1462 (123, 156),
1463 (124, 187),
1464 (125, 71),
1465 (126, 220),
1466 (127, 7),
1467 (128, 32),
1468 (129, 33),
1469 (130, 34),
1470 (131, 35),
1471 (132, 36),
1472 (133, 21),
1473 (134, 6),
1474 (135, 23),
1475 (136, 40),
1476 (137, 41),
1477 (138, 42),
1478 (139, 43),
1479 (140, 44),
1480 (141, 9),
1481 (142, 10),
1482 (143, 27),
1483 (144, 48),
1484 (145, 49),
1485 (146, 26),
1486 (147, 51),
1487 (148, 52),
1488 (149, 53),
1489 (150, 54),
1490 (151, 8),
1491 (152, 56),
1492 (153, 57),
1493 (154, 58),
1494 (155, 59),
1495 (156, 4),
1496 (157, 20),
1497 (158, 62),
1498 (159, 255),
1499 (160, 65),
1500 (161, 170),
1501 (162, 176),
1502 (163, 177),
1503 (164, 90),
1504 (165, 178),
1505 (166, 112),
1506 (167, 181),
1507 (168, 189),
1508 (169, 180),
1509 (170, 154),
1510 (171, 138),
1511 (172, 186),
1512 (173, 202),
1513 (174, 175),
1514 (175, 188),
1515 (176, 144),
1516 (177, 143),
1517 (178, 234),
1518 (179, 250),
1519 (180, 190),
1520 (181, 160),
1521 (182, 182),
1522 (183, 179),
1523 (184, 157),
1524 (185, 218),
1525 (186, 155),
1526 (187, 139),
1527 (188, 183),
1528 (189, 184),
1529 (190, 185),
1530 (191, 171),
1531 (192, 100),
1532 (193, 101),
1533 (194, 98),
1534 (195, 102),
1535 (196, 99),
1536 (197, 91),
1537 (198, 123),
1538 (199, 104),
1539 (200, 116),
1540 (201, 113),
1541 (202, 114),
1542 (203, 115),
1543 (204, 120),
1544 (205, 117),
1545 (206, 118),
1546 (207, 119),
1547 (208, 172),
1548 (209, 105),
1549 (210, 237),
1550 (211, 238),
1551 (212, 235),
1552 (213, 239),
1553 (214, 236),
1554 (215, 191),
1555 (216, 124),
1556 (217, 253),
1557 (218, 254),
1558 (219, 251),
1559 (220, 252),
1560 (221, 173),
1561 (222, 174),
1562 (223, 89),
1563 (224, 68),
1564 (225, 69),
1565 (226, 66),
1566 (227, 70),
1567 (228, 67),
1568 (229, 208),
1569 (230, 192),
1570 (231, 72),
1571 (232, 84),
1572 (233, 81),
1573 (234, 82),
1574 (235, 83),
1575 (236, 88),
1576 (237, 85),
1577 (238, 86),
1578 (239, 87),
1579 (240, 140),
1580 (241, 73),
1581 (242, 205),
1582 (243, 206),
1583 (244, 203),
1584 (245, 207),
1585 (246, 204),
1586 (247, 225),
1587 (248, 106),
1588 (249, 221),
1589 (250, 222),
1590 (251, 219),
1591 (252, 161),
1592 (253, 141),
1593 (254, 142),
1594 (255, 223),
1595];
1596
1597impl_ebcdic_encoder_and_decoder!(
1598 IBM278,
1599 "IBM278",
1600 IBM278Encoder,
1601 IBM278Decoder,
1602 IBM_278_ENCODE_TABLE,
1603 IBM_278_DECODE_TABLE
1604);
1605const IBM_278_DECODE_TABLE: [char; 256] = [
1606 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1607 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1608 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1609 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1610 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1611 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1612 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1613 '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1614 '\u{a7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{60}', '\u{ea}',
1615 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1616 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{23}', '\u{c0}',
1617 '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
1618 '\u{3e}', '\u{3f}', '\u{f8}', '\u{5c}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1619 '\u{cf}', '\u{cc}', '\u{e9}', '\u{3a}', '\u{c4}', '\u{d6}', '\u{27}', '\u{3d}', '\u{22}',
1620 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1621 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1622 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1623 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1624 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1625 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5b}',
1626 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1627 '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1628 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1629 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1630 '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{c9}', '\u{f7}', '\u{53}',
1631 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1632 '\u{40}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1633 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1634 '\u{da}', '\u{9f}',
1635];
1636const IBM_278_ENCODE_TABLE: &[(u16, u8)] = &[
1637 (0, 0),
1638 (1, 1),
1639 (2, 2),
1640 (3, 3),
1641 (4, 55),
1642 (5, 45),
1643 (6, 46),
1644 (7, 47),
1645 (8, 22),
1646 (9, 5),
1647 (10, 37),
1648 (11, 11),
1649 (12, 12),
1650 (13, 13),
1651 (14, 14),
1652 (15, 15),
1653 (16, 16),
1654 (17, 17),
1655 (18, 18),
1656 (19, 19),
1657 (20, 60),
1658 (21, 61),
1659 (22, 50),
1660 (23, 38),
1661 (24, 24),
1662 (25, 25),
1663 (26, 63),
1664 (27, 39),
1665 (28, 28),
1666 (29, 29),
1667 (30, 30),
1668 (31, 31),
1669 (32, 64),
1670 (33, 79),
1671 (34, 127),
1672 (35, 99),
1673 (36, 103),
1674 (37, 108),
1675 (38, 80),
1676 (39, 125),
1677 (40, 77),
1678 (41, 93),
1679 (42, 92),
1680 (43, 78),
1681 (44, 107),
1682 (45, 96),
1683 (46, 75),
1684 (47, 97),
1685 (48, 240),
1686 (49, 241),
1687 (50, 242),
1688 (51, 243),
1689 (52, 244),
1690 (53, 245),
1691 (54, 246),
1692 (55, 247),
1693 (56, 248),
1694 (57, 249),
1695 (58, 122),
1696 (59, 94),
1697 (60, 76),
1698 (61, 126),
1699 (62, 110),
1700 (63, 111),
1701 (64, 236),
1702 (65, 193),
1703 (66, 194),
1704 (67, 195),
1705 (68, 196),
1706 (69, 197),
1707 (70, 198),
1708 (71, 199),
1709 (72, 200),
1710 (73, 201),
1711 (74, 209),
1712 (75, 210),
1713 (76, 211),
1714 (77, 212),
1715 (78, 213),
1716 (79, 214),
1717 (80, 215),
1718 (81, 216),
1719 (82, 217),
1720 (83, 226),
1721 (84, 227),
1722 (85, 228),
1723 (86, 229),
1724 (87, 230),
1725 (88, 231),
1726 (89, 232),
1727 (90, 233),
1728 (91, 181),
1729 (92, 113),
1730 (93, 159),
1731 (94, 95),
1732 (95, 109),
1733 (96, 81),
1734 (97, 129),
1735 (98, 130),
1736 (99, 131),
1737 (100, 132),
1738 (101, 133),
1739 (102, 134),
1740 (103, 135),
1741 (104, 136),
1742 (105, 137),
1743 (106, 145),
1744 (107, 146),
1745 (108, 147),
1746 (109, 148),
1747 (110, 149),
1748 (111, 150),
1749 (112, 151),
1750 (113, 152),
1751 (114, 153),
1752 (115, 162),
1753 (116, 163),
1754 (117, 164),
1755 (118, 165),
1756 (119, 166),
1757 (120, 167),
1758 (121, 168),
1759 (122, 169),
1760 (123, 67),
1761 (124, 187),
1762 (125, 71),
1763 (126, 220),
1764 (127, 7),
1765 (128, 32),
1766 (129, 33),
1767 (130, 34),
1768 (131, 35),
1769 (132, 36),
1770 (133, 21),
1771 (134, 6),
1772 (135, 23),
1773 (136, 40),
1774 (137, 41),
1775 (138, 42),
1776 (139, 43),
1777 (140, 44),
1778 (141, 9),
1779 (142, 10),
1780 (143, 27),
1781 (144, 48),
1782 (145, 49),
1783 (146, 26),
1784 (147, 51),
1785 (148, 52),
1786 (149, 53),
1787 (150, 54),
1788 (151, 8),
1789 (152, 56),
1790 (153, 57),
1791 (154, 58),
1792 (155, 59),
1793 (156, 4),
1794 (157, 20),
1795 (158, 62),
1796 (159, 255),
1797 (160, 65),
1798 (161, 170),
1799 (162, 176),
1800 (163, 177),
1801 (164, 90),
1802 (165, 178),
1803 (166, 204),
1804 (167, 74),
1805 (168, 189),
1806 (169, 180),
1807 (170, 154),
1808 (171, 138),
1809 (172, 186),
1810 (173, 202),
1811 (174, 175),
1812 (175, 188),
1813 (176, 144),
1814 (177, 143),
1815 (178, 234),
1816 (179, 250),
1817 (180, 190),
1818 (181, 160),
1819 (182, 182),
1820 (183, 179),
1821 (184, 157),
1822 (185, 218),
1823 (186, 155),
1824 (187, 139),
1825 (188, 183),
1826 (189, 184),
1827 (190, 185),
1828 (191, 171),
1829 (192, 100),
1830 (193, 101),
1831 (194, 98),
1832 (195, 102),
1833 (196, 123),
1834 (197, 91),
1835 (198, 158),
1836 (199, 104),
1837 (200, 116),
1838 (201, 224),
1839 (202, 114),
1840 (203, 115),
1841 (204, 120),
1842 (205, 117),
1843 (206, 118),
1844 (207, 119),
1845 (208, 172),
1846 (209, 105),
1847 (210, 237),
1848 (211, 238),
1849 (212, 235),
1850 (213, 239),
1851 (214, 124),
1852 (215, 191),
1853 (216, 128),
1854 (217, 253),
1855 (218, 254),
1856 (219, 251),
1857 (220, 252),
1858 (221, 173),
1859 (222, 174),
1860 (223, 89),
1861 (224, 68),
1862 (225, 69),
1863 (226, 66),
1864 (227, 70),
1865 (228, 192),
1866 (229, 208),
1867 (230, 156),
1868 (231, 72),
1869 (232, 84),
1870 (233, 121),
1871 (234, 82),
1872 (235, 83),
1873 (236, 88),
1874 (237, 85),
1875 (238, 86),
1876 (239, 87),
1877 (240, 140),
1878 (241, 73),
1879 (242, 205),
1880 (243, 206),
1881 (244, 203),
1882 (245, 207),
1883 (246, 106),
1884 (247, 225),
1885 (248, 112),
1886 (249, 221),
1887 (250, 222),
1888 (251, 219),
1889 (252, 161),
1890 (253, 141),
1891 (254, 142),
1892 (255, 223),
1893];
1894
1895impl_ebcdic_encoder_and_decoder!(
1896 IBM280,
1897 "IBM280",
1898 IBM280Encoder,
1899 IBM280Decoder,
1900 IBM_280_ENCODE_TABLE,
1901 IBM_280_DECODE_TABLE
1902);
1903const IBM_280_DECODE_TABLE: [char; 256] = [
1904 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1905 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1906 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1907 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1908 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1909 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1910 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1911 '\u{a0}', '\u{e2}', '\u{e4}', '\u{7b}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
1912 '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{5d}', '\u{ea}',
1913 '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{7e}', '\u{df}', '\u{e9}', '\u{24}',
1914 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1915 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f2}', '\u{2c}', '\u{25}', '\u{5f}',
1916 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1917 '\u{cf}', '\u{cc}', '\u{f9}', '\u{3a}', '\u{a3}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
1918 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1919 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
1920 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1921 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{ec}', '\u{73}', '\u{74}',
1922 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1923 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
1924 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1925 '\u{d7}', '\u{e0}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1926 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{a6}', '\u{f3}', '\u{f5}', '\u{e8}',
1927 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1928 '\u{b9}', '\u{fb}', '\u{fc}', '\u{60}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
1929 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1930 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1931 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1932 '\u{da}', '\u{9f}',
1933];
1934const IBM_280_ENCODE_TABLE: &[(u16, u8)] = &[
1935 (0, 0),
1936 (1, 1),
1937 (2, 2),
1938 (3, 3),
1939 (4, 55),
1940 (5, 45),
1941 (6, 46),
1942 (7, 47),
1943 (8, 22),
1944 (9, 5),
1945 (10, 37),
1946 (11, 11),
1947 (12, 12),
1948 (13, 13),
1949 (14, 14),
1950 (15, 15),
1951 (16, 16),
1952 (17, 17),
1953 (18, 18),
1954 (19, 19),
1955 (20, 60),
1956 (21, 61),
1957 (22, 50),
1958 (23, 38),
1959 (24, 24),
1960 (25, 25),
1961 (26, 63),
1962 (27, 39),
1963 (28, 28),
1964 (29, 29),
1965 (30, 30),
1966 (31, 31),
1967 (32, 64),
1968 (33, 79),
1969 (34, 127),
1970 (35, 177),
1971 (36, 91),
1972 (37, 108),
1973 (38, 80),
1974 (39, 125),
1975 (40, 77),
1976 (41, 93),
1977 (42, 92),
1978 (43, 78),
1979 (44, 107),
1980 (45, 96),
1981 (46, 75),
1982 (47, 97),
1983 (48, 240),
1984 (49, 241),
1985 (50, 242),
1986 (51, 243),
1987 (52, 244),
1988 (53, 245),
1989 (54, 246),
1990 (55, 247),
1991 (56, 248),
1992 (57, 249),
1993 (58, 122),
1994 (59, 94),
1995 (60, 76),
1996 (61, 126),
1997 (62, 110),
1998 (63, 111),
1999 (64, 181),
2000 (65, 193),
2001 (66, 194),
2002 (67, 195),
2003 (68, 196),
2004 (69, 197),
2005 (70, 198),
2006 (71, 199),
2007 (72, 200),
2008 (73, 201),
2009 (74, 209),
2010 (75, 210),
2011 (76, 211),
2012 (77, 212),
2013 (78, 213),
2014 (79, 214),
2015 (80, 215),
2016 (81, 216),
2017 (82, 217),
2018 (83, 226),
2019 (84, 227),
2020 (85, 228),
2021 (86, 229),
2022 (87, 230),
2023 (88, 231),
2024 (89, 232),
2025 (90, 233),
2026 (91, 144),
2027 (92, 72),
2028 (93, 81),
2029 (94, 95),
2030 (95, 109),
2031 (96, 221),
2032 (97, 129),
2033 (98, 130),
2034 (99, 131),
2035 (100, 132),
2036 (101, 133),
2037 (102, 134),
2038 (103, 135),
2039 (104, 136),
2040 (105, 137),
2041 (106, 145),
2042 (107, 146),
2043 (108, 147),
2044 (109, 148),
2045 (110, 149),
2046 (111, 150),
2047 (112, 151),
2048 (113, 152),
2049 (114, 153),
2050 (115, 162),
2051 (116, 163),
2052 (117, 164),
2053 (118, 165),
2054 (119, 166),
2055 (120, 167),
2056 (121, 168),
2057 (122, 169),
2058 (123, 68),
2059 (124, 187),
2060 (125, 84),
2061 (126, 88),
2062 (127, 7),
2063 (128, 32),
2064 (129, 33),
2065 (130, 34),
2066 (131, 35),
2067 (132, 36),
2068 (133, 21),
2069 (134, 6),
2070 (135, 23),
2071 (136, 40),
2072 (137, 41),
2073 (138, 42),
2074 (139, 43),
2075 (140, 44),
2076 (141, 9),
2077 (142, 10),
2078 (143, 27),
2079 (144, 48),
2080 (145, 49),
2081 (146, 26),
2082 (147, 51),
2083 (148, 52),
2084 (149, 53),
2085 (150, 54),
2086 (151, 8),
2087 (152, 56),
2088 (153, 57),
2089 (154, 58),
2090 (155, 59),
2091 (156, 4),
2092 (157, 20),
2093 (158, 62),
2094 (159, 255),
2095 (160, 65),
2096 (161, 170),
2097 (162, 176),
2098 (163, 123),
2099 (164, 159),
2100 (165, 178),
2101 (166, 205),
2102 (167, 124),
2103 (168, 189),
2104 (169, 180),
2105 (170, 154),
2106 (171, 138),
2107 (172, 186),
2108 (173, 202),
2109 (174, 175),
2110 (175, 188),
2111 (176, 74),
2112 (177, 143),
2113 (178, 234),
2114 (179, 250),
2115 (180, 190),
2116 (181, 160),
2117 (182, 182),
2118 (183, 179),
2119 (184, 157),
2120 (185, 218),
2121 (186, 155),
2122 (187, 139),
2123 (188, 183),
2124 (189, 184),
2125 (190, 185),
2126 (191, 171),
2127 (192, 100),
2128 (193, 101),
2129 (194, 98),
2130 (195, 102),
2131 (196, 99),
2132 (197, 103),
2133 (198, 158),
2134 (199, 104),
2135 (200, 116),
2136 (201, 113),
2137 (202, 114),
2138 (203, 115),
2139 (204, 120),
2140 (205, 117),
2141 (206, 118),
2142 (207, 119),
2143 (208, 172),
2144 (209, 105),
2145 (210, 237),
2146 (211, 238),
2147 (212, 235),
2148 (213, 239),
2149 (214, 236),
2150 (215, 191),
2151 (216, 128),
2152 (217, 253),
2153 (218, 254),
2154 (219, 251),
2155 (220, 252),
2156 (221, 173),
2157 (222, 174),
2158 (223, 89),
2159 (224, 192),
2160 (225, 69),
2161 (226, 66),
2162 (227, 70),
2163 (228, 67),
2164 (229, 71),
2165 (230, 156),
2166 (231, 224),
2167 (232, 208),
2168 (233, 90),
2169 (234, 82),
2170 (235, 83),
2171 (236, 161),
2172 (237, 85),
2173 (238, 86),
2174 (239, 87),
2175 (240, 140),
2176 (241, 73),
2177 (242, 106),
2178 (243, 206),
2179 (244, 203),
2180 (245, 207),
2181 (246, 204),
2182 (247, 225),
2183 (248, 112),
2184 (249, 121),
2185 (250, 222),
2186 (251, 219),
2187 (252, 220),
2188 (253, 141),
2189 (254, 142),
2190 (255, 223),
2191];
2192
2193impl_ebcdic_encoder_and_decoder!(
2194 IBM284,
2195 "IBM284",
2196 IBM284Encoder,
2197 IBM284Decoder,
2198 IBM_284_ENCODE_TABLE,
2199 IBM_284_DECODE_TABLE
2200);
2201const IBM_284_DECODE_TABLE: [char; 256] = [
2202 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2203 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2204 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2205 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2206 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2207 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2208 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2209 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{a6}',
2210 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2211 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
2212 '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2213 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{23}', '\u{f1}', '\u{2c}', '\u{25}', '\u{5f}',
2214 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2215 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{d1}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2216 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2217 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2218 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2219 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
2220 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2221 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2222 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{21}', '\u{af}', '\u{7e}', '\u{b4}',
2223 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2224 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2225 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2226 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2227 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2228 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2229 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2230 '\u{da}', '\u{9f}',
2231];
2232const IBM_284_ENCODE_TABLE: &[(u16, u8)] = &[
2233 (0, 0),
2234 (1, 1),
2235 (2, 2),
2236 (3, 3),
2237 (4, 55),
2238 (5, 45),
2239 (6, 46),
2240 (7, 47),
2241 (8, 22),
2242 (9, 5),
2243 (10, 37),
2244 (11, 11),
2245 (12, 12),
2246 (13, 13),
2247 (14, 14),
2248 (15, 15),
2249 (16, 16),
2250 (17, 17),
2251 (18, 18),
2252 (19, 19),
2253 (20, 60),
2254 (21, 61),
2255 (22, 50),
2256 (23, 38),
2257 (24, 24),
2258 (25, 25),
2259 (26, 63),
2260 (27, 39),
2261 (28, 28),
2262 (29, 29),
2263 (30, 30),
2264 (31, 31),
2265 (32, 64),
2266 (33, 187),
2267 (34, 127),
2268 (35, 105),
2269 (36, 91),
2270 (37, 108),
2271 (38, 80),
2272 (39, 125),
2273 (40, 77),
2274 (41, 93),
2275 (42, 92),
2276 (43, 78),
2277 (44, 107),
2278 (45, 96),
2279 (46, 75),
2280 (47, 97),
2281 (48, 240),
2282 (49, 241),
2283 (50, 242),
2284 (51, 243),
2285 (52, 244),
2286 (53, 245),
2287 (54, 246),
2288 (55, 247),
2289 (56, 248),
2290 (57, 249),
2291 (58, 122),
2292 (59, 94),
2293 (60, 76),
2294 (61, 126),
2295 (62, 110),
2296 (63, 111),
2297 (64, 124),
2298 (65, 193),
2299 (66, 194),
2300 (67, 195),
2301 (68, 196),
2302 (69, 197),
2303 (70, 198),
2304 (71, 199),
2305 (72, 200),
2306 (73, 201),
2307 (74, 209),
2308 (75, 210),
2309 (76, 211),
2310 (77, 212),
2311 (78, 213),
2312 (79, 214),
2313 (80, 215),
2314 (81, 216),
2315 (82, 217),
2316 (83, 226),
2317 (84, 227),
2318 (85, 228),
2319 (86, 229),
2320 (87, 230),
2321 (88, 231),
2322 (89, 232),
2323 (90, 233),
2324 (91, 74),
2325 (92, 224),
2326 (93, 90),
2327 (94, 186),
2328 (95, 109),
2329 (96, 121),
2330 (97, 129),
2331 (98, 130),
2332 (99, 131),
2333 (100, 132),
2334 (101, 133),
2335 (102, 134),
2336 (103, 135),
2337 (104, 136),
2338 (105, 137),
2339 (106, 145),
2340 (107, 146),
2341 (108, 147),
2342 (109, 148),
2343 (110, 149),
2344 (111, 150),
2345 (112, 151),
2346 (113, 152),
2347 (114, 153),
2348 (115, 162),
2349 (116, 163),
2350 (117, 164),
2351 (118, 165),
2352 (119, 166),
2353 (120, 167),
2354 (121, 168),
2355 (122, 169),
2356 (123, 192),
2357 (124, 79),
2358 (125, 208),
2359 (126, 189),
2360 (127, 7),
2361 (128, 32),
2362 (129, 33),
2363 (130, 34),
2364 (131, 35),
2365 (132, 36),
2366 (133, 21),
2367 (134, 6),
2368 (135, 23),
2369 (136, 40),
2370 (137, 41),
2371 (138, 42),
2372 (139, 43),
2373 (140, 44),
2374 (141, 9),
2375 (142, 10),
2376 (143, 27),
2377 (144, 48),
2378 (145, 49),
2379 (146, 26),
2380 (147, 51),
2381 (148, 52),
2382 (149, 53),
2383 (150, 54),
2384 (151, 8),
2385 (152, 56),
2386 (153, 57),
2387 (154, 58),
2388 (155, 59),
2389 (156, 4),
2390 (157, 20),
2391 (158, 62),
2392 (159, 255),
2393 (160, 65),
2394 (161, 170),
2395 (162, 176),
2396 (163, 177),
2397 (164, 159),
2398 (165, 178),
2399 (166, 73),
2400 (167, 181),
2401 (168, 161),
2402 (169, 180),
2403 (170, 154),
2404 (171, 138),
2405 (172, 95),
2406 (173, 202),
2407 (174, 175),
2408 (175, 188),
2409 (176, 144),
2410 (177, 143),
2411 (178, 234),
2412 (179, 250),
2413 (180, 190),
2414 (181, 160),
2415 (182, 182),
2416 (183, 179),
2417 (184, 157),
2418 (185, 218),
2419 (186, 155),
2420 (187, 139),
2421 (188, 183),
2422 (189, 184),
2423 (190, 185),
2424 (191, 171),
2425 (192, 100),
2426 (193, 101),
2427 (194, 98),
2428 (195, 102),
2429 (196, 99),
2430 (197, 103),
2431 (198, 158),
2432 (199, 104),
2433 (200, 116),
2434 (201, 113),
2435 (202, 114),
2436 (203, 115),
2437 (204, 120),
2438 (205, 117),
2439 (206, 118),
2440 (207, 119),
2441 (208, 172),
2442 (209, 123),
2443 (210, 237),
2444 (211, 238),
2445 (212, 235),
2446 (213, 239),
2447 (214, 236),
2448 (215, 191),
2449 (216, 128),
2450 (217, 253),
2451 (218, 254),
2452 (219, 251),
2453 (220, 252),
2454 (221, 173),
2455 (222, 174),
2456 (223, 89),
2457 (224, 68),
2458 (225, 69),
2459 (226, 66),
2460 (227, 70),
2461 (228, 67),
2462 (229, 71),
2463 (230, 156),
2464 (231, 72),
2465 (232, 84),
2466 (233, 81),
2467 (234, 82),
2468 (235, 83),
2469 (236, 88),
2470 (237, 85),
2471 (238, 86),
2472 (239, 87),
2473 (240, 140),
2474 (241, 106),
2475 (242, 205),
2476 (243, 206),
2477 (244, 203),
2478 (245, 207),
2479 (246, 204),
2480 (247, 225),
2481 (248, 112),
2482 (249, 221),
2483 (250, 222),
2484 (251, 219),
2485 (252, 220),
2486 (253, 141),
2487 (254, 142),
2488 (255, 223),
2489];
2490
2491impl_ebcdic_encoder_and_decoder!(
2492 IBM285,
2493 "IBM285",
2494 IBM285Encoder,
2495 IBM285Decoder,
2496 IBM_285_ENCODE_TABLE,
2497 IBM_285_DECODE_TABLE
2498);
2499const IBM_285_DECODE_TABLE: [char; 256] = [
2500 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2501 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2502 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2503 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2504 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2505 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2506 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2507 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
2508 '\u{24}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2509 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{a3}',
2510 '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2511 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
2512 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2513 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2514 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2515 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2516 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2517 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{af}', '\u{73}', '\u{74}',
2518 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2519 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{5b}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2520 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{5d}', '\u{7e}', '\u{a8}', '\u{b4}',
2521 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2522 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2523 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2524 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2525 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2526 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2527 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2528 '\u{da}', '\u{9f}',
2529];
2530const IBM_285_ENCODE_TABLE: &[(u16, u8)] = &[
2531 (0, 0),
2532 (1, 1),
2533 (2, 2),
2534 (3, 3),
2535 (4, 55),
2536 (5, 45),
2537 (6, 46),
2538 (7, 47),
2539 (8, 22),
2540 (9, 5),
2541 (10, 37),
2542 (11, 11),
2543 (12, 12),
2544 (13, 13),
2545 (14, 14),
2546 (15, 15),
2547 (16, 16),
2548 (17, 17),
2549 (18, 18),
2550 (19, 19),
2551 (20, 60),
2552 (21, 61),
2553 (22, 50),
2554 (23, 38),
2555 (24, 24),
2556 (25, 25),
2557 (26, 63),
2558 (27, 39),
2559 (28, 28),
2560 (29, 29),
2561 (30, 30),
2562 (31, 31),
2563 (32, 64),
2564 (33, 90),
2565 (34, 127),
2566 (35, 123),
2567 (36, 74),
2568 (37, 108),
2569 (38, 80),
2570 (39, 125),
2571 (40, 77),
2572 (41, 93),
2573 (42, 92),
2574 (43, 78),
2575 (44, 107),
2576 (45, 96),
2577 (46, 75),
2578 (47, 97),
2579 (48, 240),
2580 (49, 241),
2581 (50, 242),
2582 (51, 243),
2583 (52, 244),
2584 (53, 245),
2585 (54, 246),
2586 (55, 247),
2587 (56, 248),
2588 (57, 249),
2589 (58, 122),
2590 (59, 94),
2591 (60, 76),
2592 (61, 126),
2593 (62, 110),
2594 (63, 111),
2595 (64, 124),
2596 (65, 193),
2597 (66, 194),
2598 (67, 195),
2599 (68, 196),
2600 (69, 197),
2601 (70, 198),
2602 (71, 199),
2603 (72, 200),
2604 (73, 201),
2605 (74, 209),
2606 (75, 210),
2607 (76, 211),
2608 (77, 212),
2609 (78, 213),
2610 (79, 214),
2611 (80, 215),
2612 (81, 216),
2613 (82, 217),
2614 (83, 226),
2615 (84, 227),
2616 (85, 228),
2617 (86, 229),
2618 (87, 230),
2619 (88, 231),
2620 (89, 232),
2621 (90, 233),
2622 (91, 177),
2623 (92, 224),
2624 (93, 187),
2625 (94, 186),
2626 (95, 109),
2627 (96, 121),
2628 (97, 129),
2629 (98, 130),
2630 (99, 131),
2631 (100, 132),
2632 (101, 133),
2633 (102, 134),
2634 (103, 135),
2635 (104, 136),
2636 (105, 137),
2637 (106, 145),
2638 (107, 146),
2639 (108, 147),
2640 (109, 148),
2641 (110, 149),
2642 (111, 150),
2643 (112, 151),
2644 (113, 152),
2645 (114, 153),
2646 (115, 162),
2647 (116, 163),
2648 (117, 164),
2649 (118, 165),
2650 (119, 166),
2651 (120, 167),
2652 (121, 168),
2653 (122, 169),
2654 (123, 192),
2655 (124, 79),
2656 (125, 208),
2657 (126, 188),
2658 (127, 7),
2659 (128, 32),
2660 (129, 33),
2661 (130, 34),
2662 (131, 35),
2663 (132, 36),
2664 (133, 21),
2665 (134, 6),
2666 (135, 23),
2667 (136, 40),
2668 (137, 41),
2669 (138, 42),
2670 (139, 43),
2671 (140, 44),
2672 (141, 9),
2673 (142, 10),
2674 (143, 27),
2675 (144, 48),
2676 (145, 49),
2677 (146, 26),
2678 (147, 51),
2679 (148, 52),
2680 (149, 53),
2681 (150, 54),
2682 (151, 8),
2683 (152, 56),
2684 (153, 57),
2685 (154, 58),
2686 (155, 59),
2687 (156, 4),
2688 (157, 20),
2689 (158, 62),
2690 (159, 255),
2691 (160, 65),
2692 (161, 170),
2693 (162, 176),
2694 (163, 91),
2695 (164, 159),
2696 (165, 178),
2697 (166, 106),
2698 (167, 181),
2699 (168, 189),
2700 (169, 180),
2701 (170, 154),
2702 (171, 138),
2703 (172, 95),
2704 (173, 202),
2705 (174, 175),
2706 (175, 161),
2707 (176, 144),
2708 (177, 143),
2709 (178, 234),
2710 (179, 250),
2711 (180, 190),
2712 (181, 160),
2713 (182, 182),
2714 (183, 179),
2715 (184, 157),
2716 (185, 218),
2717 (186, 155),
2718 (187, 139),
2719 (188, 183),
2720 (189, 184),
2721 (190, 185),
2722 (191, 171),
2723 (192, 100),
2724 (193, 101),
2725 (194, 98),
2726 (195, 102),
2727 (196, 99),
2728 (197, 103),
2729 (198, 158),
2730 (199, 104),
2731 (200, 116),
2732 (201, 113),
2733 (202, 114),
2734 (203, 115),
2735 (204, 120),
2736 (205, 117),
2737 (206, 118),
2738 (207, 119),
2739 (208, 172),
2740 (209, 105),
2741 (210, 237),
2742 (211, 238),
2743 (212, 235),
2744 (213, 239),
2745 (214, 236),
2746 (215, 191),
2747 (216, 128),
2748 (217, 253),
2749 (218, 254),
2750 (219, 251),
2751 (220, 252),
2752 (221, 173),
2753 (222, 174),
2754 (223, 89),
2755 (224, 68),
2756 (225, 69),
2757 (226, 66),
2758 (227, 70),
2759 (228, 67),
2760 (229, 71),
2761 (230, 156),
2762 (231, 72),
2763 (232, 84),
2764 (233, 81),
2765 (234, 82),
2766 (235, 83),
2767 (236, 88),
2768 (237, 85),
2769 (238, 86),
2770 (239, 87),
2771 (240, 140),
2772 (241, 73),
2773 (242, 205),
2774 (243, 206),
2775 (244, 203),
2776 (245, 207),
2777 (246, 204),
2778 (247, 225),
2779 (248, 112),
2780 (249, 221),
2781 (250, 222),
2782 (251, 219),
2783 (252, 220),
2784 (253, 141),
2785 (254, 142),
2786 (255, 223),
2787];
2788
2789impl_ebcdic_encoder_and_decoder!(
2790 IBM290,
2791 "IBM290",
2792 IBM290Encoder,
2793 IBM290Decoder,
2794 IBM_290_ENCODE_TABLE,
2795 IBM_290_DECODE_TABLE
2796);
2797const IBM_290_DECODE_TABLE: [char; 256] = [
2798 '\u{0}',
2799 '\u{1}',
2800 '\u{2}',
2801 '\u{3}',
2802 '\u{9c}',
2803 '\u{9}',
2804 '\u{86}',
2805 '\u{7f}',
2806 '\u{97}',
2807 '\u{8d}',
2808 '\u{8e}',
2809 '\u{b}',
2810 '\u{c}',
2811 '\u{d}',
2812 '\u{e}',
2813 '\u{f}',
2814 '\u{10}',
2815 '\u{11}',
2816 '\u{12}',
2817 '\u{13}',
2818 '\u{9d}',
2819 '\u{85}',
2820 '\u{8}',
2821 '\u{87}',
2822 '\u{18}',
2823 '\u{19}',
2824 '\u{92}',
2825 '\u{8f}',
2826 '\u{1c}',
2827 '\u{1d}',
2828 '\u{1e}',
2829 '\u{1f}',
2830 '\u{80}',
2831 '\u{81}',
2832 '\u{82}',
2833 '\u{83}',
2834 '\u{84}',
2835 '\u{a}',
2836 '\u{17}',
2837 '\u{1b}',
2838 '\u{88}',
2839 '\u{89}',
2840 '\u{8a}',
2841 '\u{8b}',
2842 '\u{8c}',
2843 '\u{5}',
2844 '\u{6}',
2845 '\u{7}',
2846 '\u{90}',
2847 '\u{91}',
2848 '\u{16}',
2849 '\u{93}',
2850 '\u{94}',
2851 '\u{95}',
2852 '\u{96}',
2853 '\u{4}',
2854 '\u{98}',
2855 '\u{99}',
2856 '\u{9a}',
2857 '\u{9b}',
2858 '\u{14}',
2859 '\u{15}',
2860 '\u{9e}',
2861 '\u{1a}',
2862 '\u{20}',
2863 '\u{ff61}',
2864 '\u{ff62}',
2865 '\u{ff63}',
2866 '\u{ff64}',
2867 '\u{ff65}',
2868 '\u{ff66}',
2869 '\u{ff67}',
2870 '\u{ff68}',
2871 '\u{ff69}',
2872 '\u{a3}',
2873 '\u{2e}',
2874 '\u{3c}',
2875 '\u{28}',
2876 '\u{2b}',
2877 '\u{7c}',
2878 '\u{26}',
2879 '\u{ff6a}',
2880 '\u{ff6b}',
2881 '\u{ff6c}',
2882 '\u{ff6d}',
2883 '\u{ff6e}',
2884 '\u{ff6f}',
2885 char::REPLACEMENT_CHARACTER,
2886 '\u{ff70}',
2887 char::REPLACEMENT_CHARACTER,
2888 '\u{21}',
2889 '\u{a5}',
2890 '\u{2a}',
2891 '\u{29}',
2892 '\u{3b}',
2893 '\u{ac}',
2894 '\u{2d}',
2895 '\u{2f}',
2896 '\u{61}',
2897 '\u{62}',
2898 '\u{63}',
2899 '\u{64}',
2900 '\u{65}',
2901 '\u{66}',
2902 '\u{67}',
2903 '\u{68}',
2904 char::REPLACEMENT_CHARACTER,
2905 '\u{2c}',
2906 '\u{25}',
2907 '\u{5f}',
2908 '\u{3e}',
2909 '\u{3f}',
2910 '\u{5b}',
2911 '\u{69}',
2912 '\u{6a}',
2913 '\u{6b}',
2914 '\u{6c}',
2915 '\u{6d}',
2916 '\u{6e}',
2917 '\u{6f}',
2918 '\u{70}',
2919 '\u{60}',
2920 '\u{3a}',
2921 '\u{23}',
2922 '\u{40}',
2923 '\u{27}',
2924 '\u{3d}',
2925 '\u{22}',
2926 '\u{5d}',
2927 '\u{ff71}',
2928 '\u{ff72}',
2929 '\u{ff73}',
2930 '\u{ff74}',
2931 '\u{ff75}',
2932 '\u{ff76}',
2933 '\u{ff77}',
2934 '\u{ff78}',
2935 '\u{ff79}',
2936 '\u{ff7a}',
2937 '\u{71}',
2938 '\u{ff7b}',
2939 '\u{ff7c}',
2940 '\u{ff7d}',
2941 '\u{ff7e}',
2942 '\u{ff7f}',
2943 '\u{ff80}',
2944 '\u{ff81}',
2945 '\u{ff82}',
2946 '\u{ff83}',
2947 '\u{ff84}',
2948 '\u{ff85}',
2949 '\u{ff86}',
2950 '\u{ff87}',
2951 '\u{ff88}',
2952 '\u{ff89}',
2953 '\u{72}',
2954 char::REPLACEMENT_CHARACTER,
2955 '\u{ff8a}',
2956 '\u{ff8b}',
2957 '\u{ff8c}',
2958 '\u{7e}',
2959 '\u{203e}',
2960 '\u{ff8d}',
2961 '\u{ff8e}',
2962 '\u{ff8f}',
2963 '\u{ff90}',
2964 '\u{ff91}',
2965 '\u{ff92}',
2966 '\u{ff93}',
2967 '\u{ff94}',
2968 '\u{ff95}',
2969 '\u{73}',
2970 '\u{ff96}',
2971 '\u{ff97}',
2972 '\u{ff98}',
2973 '\u{ff99}',
2974 '\u{5e}',
2975 '\u{a2}',
2976 '\u{5c}',
2977 '\u{74}',
2978 '\u{75}',
2979 '\u{76}',
2980 '\u{77}',
2981 '\u{78}',
2982 '\u{79}',
2983 '\u{7a}',
2984 '\u{ff9a}',
2985 '\u{ff9b}',
2986 '\u{ff9c}',
2987 '\u{ff9d}',
2988 '\u{ff9e}',
2989 '\u{ff9f}',
2990 '\u{7b}',
2991 '\u{41}',
2992 '\u{42}',
2993 '\u{43}',
2994 '\u{44}',
2995 '\u{45}',
2996 '\u{46}',
2997 '\u{47}',
2998 '\u{48}',
2999 '\u{49}',
3000 char::REPLACEMENT_CHARACTER,
3001 char::REPLACEMENT_CHARACTER,
3002 char::REPLACEMENT_CHARACTER,
3003 char::REPLACEMENT_CHARACTER,
3004 char::REPLACEMENT_CHARACTER,
3005 char::REPLACEMENT_CHARACTER,
3006 '\u{7d}',
3007 '\u{4a}',
3008 '\u{4b}',
3009 '\u{4c}',
3010 '\u{4d}',
3011 '\u{4e}',
3012 '\u{4f}',
3013 '\u{50}',
3014 '\u{51}',
3015 '\u{52}',
3016 char::REPLACEMENT_CHARACTER,
3017 char::REPLACEMENT_CHARACTER,
3018 char::REPLACEMENT_CHARACTER,
3019 char::REPLACEMENT_CHARACTER,
3020 char::REPLACEMENT_CHARACTER,
3021 char::REPLACEMENT_CHARACTER,
3022 '\u{24}',
3023 char::REPLACEMENT_CHARACTER,
3024 '\u{53}',
3025 '\u{54}',
3026 '\u{55}',
3027 '\u{56}',
3028 '\u{57}',
3029 '\u{58}',
3030 '\u{59}',
3031 '\u{5a}',
3032 char::REPLACEMENT_CHARACTER,
3033 char::REPLACEMENT_CHARACTER,
3034 char::REPLACEMENT_CHARACTER,
3035 char::REPLACEMENT_CHARACTER,
3036 char::REPLACEMENT_CHARACTER,
3037 char::REPLACEMENT_CHARACTER,
3038 '\u{30}',
3039 '\u{31}',
3040 '\u{32}',
3041 '\u{33}',
3042 '\u{34}',
3043 '\u{35}',
3044 '\u{36}',
3045 '\u{37}',
3046 '\u{38}',
3047 '\u{39}',
3048 char::REPLACEMENT_CHARACTER,
3049 char::REPLACEMENT_CHARACTER,
3050 char::REPLACEMENT_CHARACTER,
3051 char::REPLACEMENT_CHARACTER,
3052 char::REPLACEMENT_CHARACTER,
3053 '\u{9f}',
3054];
3055const IBM_290_ENCODE_TABLE: &[(u16, u8)] = &[
3056 (0, 0),
3057 (1, 1),
3058 (2, 2),
3059 (3, 3),
3060 (4, 55),
3061 (5, 45),
3062 (6, 46),
3063 (7, 47),
3064 (8, 22),
3065 (9, 5),
3066 (10, 37),
3067 (11, 11),
3068 (12, 12),
3069 (13, 13),
3070 (14, 14),
3071 (15, 15),
3072 (16, 16),
3073 (17, 17),
3074 (18, 18),
3075 (19, 19),
3076 (20, 60),
3077 (21, 61),
3078 (22, 50),
3079 (23, 38),
3080 (24, 24),
3081 (25, 25),
3082 (26, 63),
3083 (27, 39),
3084 (28, 28),
3085 (29, 29),
3086 (30, 30),
3087 (31, 31),
3088 (32, 64),
3089 (33, 90),
3090 (34, 127),
3091 (35, 123),
3092 (36, 224),
3093 (37, 108),
3094 (38, 80),
3095 (39, 125),
3096 (40, 77),
3097 (41, 93),
3098 (42, 92),
3099 (43, 78),
3100 (44, 107),
3101 (45, 96),
3102 (46, 75),
3103 (47, 97),
3104 (48, 240),
3105 (49, 241),
3106 (50, 242),
3107 (51, 243),
3108 (52, 244),
3109 (53, 245),
3110 (54, 246),
3111 (55, 247),
3112 (56, 248),
3113 (57, 249),
3114 (58, 122),
3115 (59, 94),
3116 (60, 76),
3117 (61, 126),
3118 (62, 110),
3119 (63, 111),
3120 (64, 124),
3121 (65, 193),
3122 (66, 194),
3123 (67, 195),
3124 (68, 196),
3125 (69, 197),
3126 (70, 198),
3127 (71, 199),
3128 (72, 200),
3129 (73, 201),
3130 (74, 209),
3131 (75, 210),
3132 (76, 211),
3133 (77, 212),
3134 (78, 213),
3135 (79, 214),
3136 (80, 215),
3137 (81, 216),
3138 (82, 217),
3139 (83, 226),
3140 (84, 227),
3141 (85, 228),
3142 (86, 229),
3143 (87, 230),
3144 (88, 231),
3145 (89, 232),
3146 (90, 233),
3147 (91, 112),
3148 (92, 178),
3149 (93, 128),
3150 (94, 176),
3151 (95, 109),
3152 (96, 121),
3153 (97, 98),
3154 (98, 99),
3155 (99, 100),
3156 (100, 101),
3157 (101, 102),
3158 (102, 103),
3159 (103, 104),
3160 (104, 105),
3161 (105, 113),
3162 (106, 114),
3163 (107, 115),
3164 (108, 116),
3165 (109, 117),
3166 (110, 118),
3167 (111, 119),
3168 (112, 120),
3169 (113, 139),
3170 (114, 155),
3171 (115, 171),
3172 (116, 179),
3173 (117, 180),
3174 (118, 181),
3175 (119, 182),
3176 (120, 183),
3177 (121, 184),
3178 (122, 185),
3179 (123, 192),
3180 (124, 79),
3181 (125, 208),
3182 (126, 160),
3183 (127, 7),
3184 (128, 32),
3185 (129, 33),
3186 (130, 34),
3187 (131, 35),
3188 (132, 36),
3189 (133, 21),
3190 (134, 6),
3191 (135, 23),
3192 (136, 40),
3193 (137, 41),
3194 (138, 42),
3195 (139, 43),
3196 (140, 44),
3197 (141, 9),
3198 (142, 10),
3199 (143, 27),
3200 (144, 48),
3201 (145, 49),
3202 (146, 26),
3203 (147, 51),
3204 (148, 52),
3205 (149, 53),
3206 (150, 54),
3207 (151, 8),
3208 (152, 56),
3209 (153, 57),
3210 (154, 58),
3211 (155, 59),
3212 (156, 4),
3213 (157, 20),
3214 (158, 62),
3215 (159, 255),
3216 (162, 177),
3217 (163, 74),
3218 (165, 91),
3219 (172, 95),
3220 (8254, 161),
3221 (65377, 65),
3222 (65378, 66),
3223 (65379, 67),
3224 (65380, 68),
3225 (65381, 69),
3226 (65382, 70),
3227 (65383, 71),
3228 (65384, 72),
3229 (65385, 73),
3230 (65386, 81),
3231 (65387, 82),
3232 (65388, 83),
3233 (65389, 84),
3234 (65390, 85),
3235 (65391, 86),
3236 (65392, 88),
3237 (65393, 129),
3238 (65394, 130),
3239 (65395, 131),
3240 (65396, 132),
3241 (65397, 133),
3242 (65398, 134),
3243 (65399, 135),
3244 (65400, 136),
3245 (65401, 137),
3246 (65402, 138),
3247 (65403, 140),
3248 (65404, 141),
3249 (65405, 142),
3250 (65406, 143),
3251 (65407, 144),
3252 (65408, 145),
3253 (65409, 146),
3254 (65410, 147),
3255 (65411, 148),
3256 (65412, 149),
3257 (65413, 150),
3258 (65414, 151),
3259 (65415, 152),
3260 (65416, 153),
3261 (65417, 154),
3262 (65418, 157),
3263 (65419, 158),
3264 (65420, 159),
3265 (65421, 162),
3266 (65422, 163),
3267 (65423, 164),
3268 (65424, 165),
3269 (65425, 166),
3270 (65426, 167),
3271 (65427, 168),
3272 (65428, 169),
3273 (65429, 170),
3274 (65430, 172),
3275 (65431, 173),
3276 (65432, 174),
3277 (65433, 175),
3278 (65434, 186),
3279 (65435, 187),
3280 (65436, 188),
3281 (65437, 189),
3282 (65438, 190),
3283 (65439, 191),
3284];
3285
3286impl_ebcdic_encoder_and_decoder!(
3287 IBM297,
3288 "IBM297",
3289 IBM297Encoder,
3290 IBM297Decoder,
3291 IBM_297_ENCODE_TABLE,
3292 IBM_297_DECODE_TABLE
3293);
3294const IBM_297_DECODE_TABLE: [char; 256] = [
3295 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
3296 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
3297 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
3298 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
3299 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
3300 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
3301 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
3302 '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
3303 '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
3304 '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a7}', '\u{24}',
3305 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
3306 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
3307 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
3308 '\u{cf}', '\u{cc}', '\u{b5}', '\u{3a}', '\u{a3}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
3309 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
3310 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
3311 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
3312 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{60}', '\u{a8}', '\u{73}', '\u{74}',
3313 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
3314 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5d}',
3315 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
3316 '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
3317 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
3318 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
3319 '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
3320 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
3321 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
3322 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
3323 '\u{da}', '\u{9f}',
3324];
3325const IBM_297_ENCODE_TABLE: &[(u16, u8)] = &[
3326 (0, 0),
3327 (1, 1),
3328 (2, 2),
3329 (3, 3),
3330 (4, 55),
3331 (5, 45),
3332 (6, 46),
3333 (7, 47),
3334 (8, 22),
3335 (9, 5),
3336 (10, 37),
3337 (11, 11),
3338 (12, 12),
3339 (13, 13),
3340 (14, 14),
3341 (15, 15),
3342 (16, 16),
3343 (17, 17),
3344 (18, 18),
3345 (19, 19),
3346 (20, 60),
3347 (21, 61),
3348 (22, 50),
3349 (23, 38),
3350 (24, 24),
3351 (25, 25),
3352 (26, 63),
3353 (27, 39),
3354 (28, 28),
3355 (29, 29),
3356 (30, 30),
3357 (31, 31),
3358 (32, 64),
3359 (33, 79),
3360 (34, 127),
3361 (35, 177),
3362 (36, 91),
3363 (37, 108),
3364 (38, 80),
3365 (39, 125),
3366 (40, 77),
3367 (41, 93),
3368 (42, 92),
3369 (43, 78),
3370 (44, 107),
3371 (45, 96),
3372 (46, 75),
3373 (47, 97),
3374 (48, 240),
3375 (49, 241),
3376 (50, 242),
3377 (51, 243),
3378 (52, 244),
3379 (53, 245),
3380 (54, 246),
3381 (55, 247),
3382 (56, 248),
3383 (57, 249),
3384 (58, 122),
3385 (59, 94),
3386 (60, 76),
3387 (61, 126),
3388 (62, 110),
3389 (63, 111),
3390 (64, 68),
3391 (65, 193),
3392 (66, 194),
3393 (67, 195),
3394 (68, 196),
3395 (69, 197),
3396 (70, 198),
3397 (71, 199),
3398 (72, 200),
3399 (73, 201),
3400 (74, 209),
3401 (75, 210),
3402 (76, 211),
3403 (77, 212),
3404 (78, 213),
3405 (79, 214),
3406 (80, 215),
3407 (81, 216),
3408 (82, 217),
3409 (83, 226),
3410 (84, 227),
3411 (85, 228),
3412 (86, 229),
3413 (87, 230),
3414 (88, 231),
3415 (89, 232),
3416 (90, 233),
3417 (91, 144),
3418 (92, 72),
3419 (93, 181),
3420 (94, 95),
3421 (95, 109),
3422 (96, 160),
3423 (97, 129),
3424 (98, 130),
3425 (99, 131),
3426 (100, 132),
3427 (101, 133),
3428 (102, 134),
3429 (103, 135),
3430 (104, 136),
3431 (105, 137),
3432 (106, 145),
3433 (107, 146),
3434 (108, 147),
3435 (109, 148),
3436 (110, 149),
3437 (111, 150),
3438 (112, 151),
3439 (113, 152),
3440 (114, 153),
3441 (115, 162),
3442 (116, 163),
3443 (117, 164),
3444 (118, 165),
3445 (119, 166),
3446 (120, 167),
3447 (121, 168),
3448 (122, 169),
3449 (123, 81),
3450 (124, 187),
3451 (125, 84),
3452 (126, 189),
3453 (127, 7),
3454 (128, 32),
3455 (129, 33),
3456 (130, 34),
3457 (131, 35),
3458 (132, 36),
3459 (133, 21),
3460 (134, 6),
3461 (135, 23),
3462 (136, 40),
3463 (137, 41),
3464 (138, 42),
3465 (139, 43),
3466 (140, 44),
3467 (141, 9),
3468 (142, 10),
3469 (143, 27),
3470 (144, 48),
3471 (145, 49),
3472 (146, 26),
3473 (147, 51),
3474 (148, 52),
3475 (149, 53),
3476 (150, 54),
3477 (151, 8),
3478 (152, 56),
3479 (153, 57),
3480 (154, 58),
3481 (155, 59),
3482 (156, 4),
3483 (157, 20),
3484 (158, 62),
3485 (159, 255),
3486 (160, 65),
3487 (161, 170),
3488 (162, 176),
3489 (163, 123),
3490 (164, 159),
3491 (165, 178),
3492 (166, 221),
3493 (167, 90),
3494 (168, 161),
3495 (169, 180),
3496 (170, 154),
3497 (171, 138),
3498 (172, 186),
3499 (173, 202),
3500 (174, 175),
3501 (175, 188),
3502 (176, 74),
3503 (177, 143),
3504 (178, 234),
3505 (179, 250),
3506 (180, 190),
3507 (181, 121),
3508 (182, 182),
3509 (183, 179),
3510 (184, 157),
3511 (185, 218),
3512 (186, 155),
3513 (187, 139),
3514 (188, 183),
3515 (189, 184),
3516 (190, 185),
3517 (191, 171),
3518 (192, 100),
3519 (193, 101),
3520 (194, 98),
3521 (195, 102),
3522 (196, 99),
3523 (197, 103),
3524 (198, 158),
3525 (199, 104),
3526 (200, 116),
3527 (201, 113),
3528 (202, 114),
3529 (203, 115),
3530 (204, 120),
3531 (205, 117),
3532 (206, 118),
3533 (207, 119),
3534 (208, 172),
3535 (209, 105),
3536 (210, 237),
3537 (211, 238),
3538 (212, 235),
3539 (213, 239),
3540 (214, 236),
3541 (215, 191),
3542 (216, 128),
3543 (217, 253),
3544 (218, 254),
3545 (219, 251),
3546 (220, 252),
3547 (221, 173),
3548 (222, 174),
3549 (223, 89),
3550 (224, 124),
3551 (225, 69),
3552 (226, 66),
3553 (227, 70),
3554 (228, 67),
3555 (229, 71),
3556 (230, 156),
3557 (231, 224),
3558 (232, 208),
3559 (233, 192),
3560 (234, 82),
3561 (235, 83),
3562 (236, 88),
3563 (237, 85),
3564 (238, 86),
3565 (239, 87),
3566 (240, 140),
3567 (241, 73),
3568 (242, 205),
3569 (243, 206),
3570 (244, 203),
3571 (245, 207),
3572 (246, 204),
3573 (247, 225),
3574 (248, 112),
3575 (249, 106),
3576 (250, 222),
3577 (251, 219),
3578 (252, 220),
3579 (253, 141),
3580 (254, 142),
3581 (255, 223),
3582];
3583
3584impl_ebcdic_encoder_and_decoder!(
3585 IBM420,
3586 "IBM420",
3587 IBM420Encoder,
3588 IBM420Decoder,
3589 IBM_420_ENCODE_TABLE,
3590 IBM_420_DECODE_TABLE
3591);
3592const IBM_420_DECODE_TABLE: [char; 256] = [
3593 '\u{0}',
3594 '\u{1}',
3595 '\u{2}',
3596 '\u{3}',
3597 '\u{9c}',
3598 '\u{9}',
3599 '\u{86}',
3600 '\u{7f}',
3601 '\u{97}',
3602 '\u{8d}',
3603 '\u{8e}',
3604 '\u{b}',
3605 '\u{c}',
3606 '\u{d}',
3607 '\u{e}',
3608 '\u{f}',
3609 '\u{10}',
3610 '\u{11}',
3611 '\u{12}',
3612 '\u{13}',
3613 '\u{9d}',
3614 '\u{85}',
3615 '\u{8}',
3616 '\u{87}',
3617 '\u{18}',
3618 '\u{19}',
3619 '\u{92}',
3620 '\u{8f}',
3621 '\u{1c}',
3622 '\u{1d}',
3623 '\u{1e}',
3624 '\u{1f}',
3625 '\u{80}',
3626 '\u{81}',
3627 '\u{82}',
3628 '\u{83}',
3629 '\u{84}',
3630 '\u{a}',
3631 '\u{17}',
3632 '\u{1b}',
3633 '\u{88}',
3634 '\u{89}',
3635 '\u{8a}',
3636 '\u{8b}',
3637 '\u{8c}',
3638 '\u{5}',
3639 '\u{6}',
3640 '\u{7}',
3641 '\u{90}',
3642 '\u{91}',
3643 '\u{16}',
3644 '\u{93}',
3645 '\u{94}',
3646 '\u{95}',
3647 '\u{96}',
3648 '\u{4}',
3649 '\u{98}',
3650 '\u{99}',
3651 '\u{9a}',
3652 '\u{9b}',
3653 '\u{14}',
3654 '\u{15}',
3655 '\u{9e}',
3656 '\u{1a}',
3657 '\u{20}',
3658 '\u{a0}',
3659 '\u{651}',
3660 '\u{fe7d}',
3661 '\u{640}',
3662 '\u{200b}',
3663 '\u{621}',
3664 '\u{622}',
3665 '\u{fe82}',
3666 '\u{623}',
3667 '\u{a2}',
3668 '\u{2e}',
3669 '\u{3c}',
3670 '\u{28}',
3671 '\u{2b}',
3672 '\u{7c}',
3673 '\u{26}',
3674 '\u{fe84}',
3675 '\u{624}',
3676 char::REPLACEMENT_CHARACTER,
3677 char::REPLACEMENT_CHARACTER,
3678 '\u{626}',
3679 '\u{627}',
3680 '\u{fe8e}',
3681 '\u{628}',
3682 '\u{fe91}',
3683 '\u{21}',
3684 '\u{24}',
3685 '\u{2a}',
3686 '\u{29}',
3687 '\u{3b}',
3688 '\u{ac}',
3689 '\u{2d}',
3690 '\u{2f}',
3691 '\u{629}',
3692 '\u{62a}',
3693 '\u{fe97}',
3694 '\u{62b}',
3695 '\u{fe9b}',
3696 '\u{62c}',
3697 '\u{fe9f}',
3698 '\u{62d}',
3699 '\u{a6}',
3700 '\u{2c}',
3701 '\u{25}',
3702 '\u{5f}',
3703 '\u{3e}',
3704 '\u{3f}',
3705 '\u{fea3}',
3706 '\u{62e}',
3707 '\u{fea7}',
3708 '\u{62f}',
3709 '\u{630}',
3710 '\u{631}',
3711 '\u{632}',
3712 '\u{633}',
3713 '\u{feb3}',
3714 '\u{60c}',
3715 '\u{3a}',
3716 '\u{23}',
3717 '\u{40}',
3718 '\u{27}',
3719 '\u{3d}',
3720 '\u{22}',
3721 '\u{634}',
3722 '\u{61}',
3723 '\u{62}',
3724 '\u{63}',
3725 '\u{64}',
3726 '\u{65}',
3727 '\u{66}',
3728 '\u{67}',
3729 '\u{68}',
3730 '\u{69}',
3731 '\u{feb7}',
3732 '\u{635}',
3733 '\u{febb}',
3734 '\u{636}',
3735 '\u{febf}',
3736 '\u{637}',
3737 '\u{638}',
3738 '\u{6a}',
3739 '\u{6b}',
3740 '\u{6c}',
3741 '\u{6d}',
3742 '\u{6e}',
3743 '\u{6f}',
3744 '\u{70}',
3745 '\u{71}',
3746 '\u{72}',
3747 '\u{639}',
3748 '\u{feca}',
3749 '\u{fecb}',
3750 '\u{fecc}',
3751 '\u{63a}',
3752 '\u{fece}',
3753 '\u{fecf}',
3754 '\u{f7}',
3755 '\u{73}',
3756 '\u{74}',
3757 '\u{75}',
3758 '\u{76}',
3759 '\u{77}',
3760 '\u{78}',
3761 '\u{79}',
3762 '\u{7a}',
3763 '\u{fed0}',
3764 '\u{641}',
3765 '\u{fed3}',
3766 '\u{642}',
3767 '\u{fed7}',
3768 '\u{643}',
3769 '\u{fedb}',
3770 '\u{644}',
3771 '\u{fef5}',
3772 '\u{fef6}',
3773 '\u{fef7}',
3774 '\u{fef8}',
3775 char::REPLACEMENT_CHARACTER,
3776 char::REPLACEMENT_CHARACTER,
3777 '\u{fefb}',
3778 '\u{fefc}',
3779 '\u{fedf}',
3780 '\u{645}',
3781 '\u{fee3}',
3782 '\u{646}',
3783 '\u{fee7}',
3784 '\u{647}',
3785 '\u{61b}',
3786 '\u{41}',
3787 '\u{42}',
3788 '\u{43}',
3789 '\u{44}',
3790 '\u{45}',
3791 '\u{46}',
3792 '\u{47}',
3793 '\u{48}',
3794 '\u{49}',
3795 '\u{ad}',
3796 '\u{feeb}',
3797 char::REPLACEMENT_CHARACTER,
3798 '\u{feec}',
3799 char::REPLACEMENT_CHARACTER,
3800 '\u{648}',
3801 '\u{61f}',
3802 '\u{4a}',
3803 '\u{4b}',
3804 '\u{4c}',
3805 '\u{4d}',
3806 '\u{4e}',
3807 '\u{4f}',
3808 '\u{50}',
3809 '\u{51}',
3810 '\u{52}',
3811 '\u{649}',
3812 '\u{fef0}',
3813 '\u{64a}',
3814 '\u{fef2}',
3815 '\u{fef3}',
3816 '\u{660}',
3817 '\u{d7}',
3818 char::REPLACEMENT_CHARACTER,
3819 '\u{53}',
3820 '\u{54}',
3821 '\u{55}',
3822 '\u{56}',
3823 '\u{57}',
3824 '\u{58}',
3825 '\u{59}',
3826 '\u{5a}',
3827 '\u{661}',
3828 '\u{662}',
3829 char::REPLACEMENT_CHARACTER,
3830 '\u{663}',
3831 '\u{664}',
3832 '\u{665}',
3833 '\u{30}',
3834 '\u{31}',
3835 '\u{32}',
3836 '\u{33}',
3837 '\u{34}',
3838 '\u{35}',
3839 '\u{36}',
3840 '\u{37}',
3841 '\u{38}',
3842 '\u{39}',
3843 char::REPLACEMENT_CHARACTER,
3844 '\u{666}',
3845 '\u{667}',
3846 '\u{668}',
3847 '\u{669}',
3848 '\u{9f}',
3849];
3850const IBM_420_ENCODE_TABLE: &[(u16, u8)] = &[
3851 (0, 0),
3852 (1, 1),
3853 (2, 2),
3854 (3, 3),
3855 (4, 55),
3856 (5, 45),
3857 (6, 46),
3858 (7, 47),
3859 (8, 22),
3860 (9, 5),
3861 (10, 37),
3862 (11, 11),
3863 (12, 12),
3864 (13, 13),
3865 (14, 14),
3866 (15, 15),
3867 (16, 16),
3868 (17, 17),
3869 (18, 18),
3870 (19, 19),
3871 (20, 60),
3872 (21, 61),
3873 (22, 50),
3874 (23, 38),
3875 (24, 24),
3876 (25, 25),
3877 (26, 63),
3878 (27, 39),
3879 (28, 28),
3880 (29, 29),
3881 (30, 30),
3882 (31, 31),
3883 (32, 64),
3884 (33, 90),
3885 (34, 127),
3886 (35, 123),
3887 (36, 91),
3888 (37, 108),
3889 (38, 80),
3890 (39, 125),
3891 (40, 77),
3892 (41, 93),
3893 (42, 92),
3894 (43, 78),
3895 (44, 107),
3896 (45, 96),
3897 (46, 75),
3898 (47, 97),
3899 (48, 240),
3900 (49, 241),
3901 (50, 242),
3902 (51, 243),
3903 (52, 244),
3904 (53, 245),
3905 (54, 246),
3906 (55, 247),
3907 (56, 248),
3908 (57, 249),
3909 (58, 122),
3910 (59, 94),
3911 (60, 76),
3912 (61, 126),
3913 (62, 110),
3914 (63, 111),
3915 (64, 124),
3916 (65, 193),
3917 (66, 194),
3918 (67, 195),
3919 (68, 196),
3920 (69, 197),
3921 (70, 198),
3922 (71, 199),
3923 (72, 200),
3924 (73, 201),
3925 (74, 209),
3926 (75, 210),
3927 (76, 211),
3928 (77, 212),
3929 (78, 213),
3930 (79, 214),
3931 (80, 215),
3932 (81, 216),
3933 (82, 217),
3934 (83, 226),
3935 (84, 227),
3936 (85, 228),
3937 (86, 229),
3938 (87, 230),
3939 (88, 231),
3940 (89, 232),
3941 (90, 233),
3942 (95, 109),
3943 (97, 129),
3944 (98, 130),
3945 (99, 131),
3946 (100, 132),
3947 (101, 133),
3948 (102, 134),
3949 (103, 135),
3950 (104, 136),
3951 (105, 137),
3952 (106, 145),
3953 (107, 146),
3954 (108, 147),
3955 (109, 148),
3956 (110, 149),
3957 (111, 150),
3958 (112, 151),
3959 (113, 152),
3960 (114, 153),
3961 (115, 162),
3962 (116, 163),
3963 (117, 164),
3964 (118, 165),
3965 (119, 166),
3966 (120, 167),
3967 (121, 168),
3968 (122, 169),
3969 (124, 79),
3970 (127, 7),
3971 (128, 32),
3972 (129, 33),
3973 (130, 34),
3974 (131, 35),
3975 (132, 36),
3976 (133, 21),
3977 (134, 6),
3978 (135, 23),
3979 (136, 40),
3980 (137, 41),
3981 (138, 42),
3982 (139, 43),
3983 (140, 44),
3984 (141, 9),
3985 (142, 10),
3986 (143, 27),
3987 (144, 48),
3988 (145, 49),
3989 (146, 26),
3990 (147, 51),
3991 (148, 52),
3992 (149, 53),
3993 (150, 54),
3994 (151, 8),
3995 (152, 56),
3996 (153, 57),
3997 (154, 58),
3998 (155, 59),
3999 (156, 4),
4000 (157, 20),
4001 (158, 62),
4002 (159, 255),
4003 (160, 65),
4004 (162, 74),
4005 (166, 106),
4006 (172, 95),
4007 (173, 202),
4008 (215, 224),
4009 (247, 161),
4010 (1548, 121),
4011 (1563, 192),
4012 (1567, 208),
4013 (1569, 70),
4014 (1570, 71),
4015 (1571, 73),
4016 (1572, 82),
4017 (1574, 85),
4018 (1575, 86),
4019 (1576, 88),
4020 (1577, 98),
4021 (1578, 99),
4022 (1579, 101),
4023 (1580, 103),
4024 (1581, 105),
4025 (1582, 113),
4026 (1583, 115),
4027 (1584, 116),
4028 (1585, 117),
4029 (1586, 118),
4030 (1587, 119),
4031 (1588, 128),
4032 (1589, 139),
4033 (1590, 141),
4034 (1591, 143),
4035 (1592, 144),
4036 (1593, 154),
4037 (1594, 158),
4038 (1600, 68),
4039 (1601, 171),
4040 (1602, 173),
4041 (1603, 175),
4042 (1604, 177),
4043 (1605, 187),
4044 (1606, 189),
4045 (1607, 191),
4046 (1608, 207),
4047 (1609, 218),
4048 (1610, 220),
4049 (1617, 66),
4050 (1632, 223),
4051 (1633, 234),
4052 (1634, 235),
4053 (1635, 237),
4054 (1636, 238),
4055 (1637, 239),
4056 (1638, 251),
4057 (1639, 252),
4058 (1640, 253),
4059 (1641, 254),
4060 (8203, 69),
4061 (65149, 67),
4062 (65154, 72),
4063 (65156, 81),
4064 (65166, 87),
4065 (65169, 89),
4066 (65175, 100),
4067 (65179, 102),
4068 (65183, 104),
4069 (65187, 112),
4070 (65191, 114),
4071 (65203, 120),
4072 (65207, 138),
4073 (65211, 140),
4074 (65215, 142),
4075 (65226, 155),
4076 (65227, 156),
4077 (65228, 157),
4078 (65230, 159),
4079 (65231, 160),
4080 (65232, 170),
4081 (65235, 172),
4082 (65239, 174),
4083 (65243, 176),
4084 (65247, 186),
4085 (65251, 188),
4086 (65255, 190),
4087 (65259, 203),
4088 (65260, 205),
4089 (65264, 219),
4090 (65266, 221),
4091 (65267, 222),
4092 (65269, 178),
4093 (65270, 179),
4094 (65271, 180),
4095 (65272, 181),
4096 (65275, 184),
4097 (65276, 185),
4098];
4099
4100impl_ebcdic_encoder_and_decoder!(
4101 IBM423,
4102 "IBM423",
4103 IBM423Encoder,
4104 IBM423Decoder,
4105 IBM_423_ENCODE_TABLE,
4106 IBM_423_DECODE_TABLE
4107);
4108const IBM_423_DECODE_TABLE: [char; 256] = [
4109 '\u{0}',
4110 '\u{1}',
4111 '\u{2}',
4112 '\u{3}',
4113 '\u{9c}',
4114 '\u{9}',
4115 '\u{86}',
4116 '\u{7f}',
4117 '\u{97}',
4118 '\u{8d}',
4119 '\u{8e}',
4120 '\u{b}',
4121 '\u{c}',
4122 '\u{d}',
4123 '\u{e}',
4124 '\u{f}',
4125 '\u{10}',
4126 '\u{11}',
4127 '\u{12}',
4128 '\u{13}',
4129 '\u{9d}',
4130 '\u{85}',
4131 '\u{8}',
4132 '\u{87}',
4133 '\u{18}',
4134 '\u{19}',
4135 '\u{92}',
4136 '\u{8f}',
4137 '\u{1c}',
4138 '\u{1d}',
4139 '\u{1e}',
4140 '\u{1f}',
4141 '\u{80}',
4142 '\u{81}',
4143 '\u{82}',
4144 '\u{83}',
4145 '\u{84}',
4146 '\u{a}',
4147 '\u{17}',
4148 '\u{1b}',
4149 '\u{88}',
4150 '\u{89}',
4151 '\u{8a}',
4152 '\u{8b}',
4153 '\u{8c}',
4154 '\u{5}',
4155 '\u{6}',
4156 '\u{7}',
4157 '\u{90}',
4158 '\u{91}',
4159 '\u{16}',
4160 '\u{93}',
4161 '\u{94}',
4162 '\u{95}',
4163 '\u{96}',
4164 '\u{4}',
4165 '\u{98}',
4166 '\u{99}',
4167 '\u{9a}',
4168 '\u{9b}',
4169 '\u{14}',
4170 '\u{15}',
4171 '\u{9e}',
4172 '\u{1a}',
4173 '\u{20}',
4174 '\u{391}',
4175 '\u{392}',
4176 '\u{393}',
4177 '\u{394}',
4178 '\u{395}',
4179 '\u{396}',
4180 '\u{397}',
4181 '\u{398}',
4182 '\u{399}',
4183 '\u{5b}',
4184 '\u{2e}',
4185 '\u{3c}',
4186 '\u{28}',
4187 '\u{2b}',
4188 '\u{21}',
4189 '\u{26}',
4190 '\u{39a}',
4191 '\u{39b}',
4192 '\u{39c}',
4193 '\u{39d}',
4194 '\u{39e}',
4195 '\u{39f}',
4196 '\u{3a0}',
4197 '\u{3a1}',
4198 '\u{3a3}',
4199 '\u{5d}',
4200 '\u{24}',
4201 '\u{2a}',
4202 '\u{29}',
4203 '\u{3b}',
4204 '\u{5e}',
4205 '\u{2d}',
4206 '\u{2f}',
4207 '\u{3a4}',
4208 '\u{3a5}',
4209 '\u{3a6}',
4210 '\u{3a7}',
4211 '\u{3a8}',
4212 '\u{3a9}',
4213 char::REPLACEMENT_CHARACTER,
4214 char::REPLACEMENT_CHARACTER,
4215 '\u{7c}',
4216 '\u{2c}',
4217 '\u{25}',
4218 '\u{5f}',
4219 '\u{3e}',
4220 '\u{3f}',
4221 char::REPLACEMENT_CHARACTER,
4222 '\u{386}',
4223 '\u{388}',
4224 '\u{389}',
4225 '\u{a0}',
4226 '\u{38a}',
4227 '\u{38c}',
4228 '\u{38e}',
4229 '\u{38f}',
4230 '\u{60}',
4231 '\u{3a}',
4232 '\u{a3}',
4233 '\u{a7}',
4234 '\u{27}',
4235 '\u{3d}',
4236 '\u{22}',
4237 '\u{c4}',
4238 '\u{61}',
4239 '\u{62}',
4240 '\u{63}',
4241 '\u{64}',
4242 '\u{65}',
4243 '\u{66}',
4244 '\u{67}',
4245 '\u{68}',
4246 '\u{69}',
4247 '\u{3b1}',
4248 '\u{3b2}',
4249 '\u{3b3}',
4250 '\u{3b4}',
4251 '\u{3b5}',
4252 '\u{3b6}',
4253 '\u{d6}',
4254 '\u{6a}',
4255 '\u{6b}',
4256 '\u{6c}',
4257 '\u{6d}',
4258 '\u{6e}',
4259 '\u{6f}',
4260 '\u{70}',
4261 '\u{71}',
4262 '\u{72}',
4263 '\u{3b7}',
4264 '\u{3b8}',
4265 '\u{3b9}',
4266 '\u{3ba}',
4267 '\u{3bb}',
4268 '\u{3bc}',
4269 '\u{dc}',
4270 '\u{a8}',
4271 '\u{73}',
4272 '\u{74}',
4273 '\u{75}',
4274 '\u{76}',
4275 '\u{77}',
4276 '\u{78}',
4277 '\u{79}',
4278 '\u{7a}',
4279 '\u{3bd}',
4280 '\u{3be}',
4281 '\u{3bf}',
4282 '\u{3c0}',
4283 '\u{3c1}',
4284 '\u{3c3}',
4285 char::REPLACEMENT_CHARACTER,
4286 '\u{3ac}',
4287 '\u{3ad}',
4288 '\u{3ae}',
4289 '\u{3ca}',
4290 '\u{3af}',
4291 '\u{3cc}',
4292 '\u{3cd}',
4293 '\u{3cb}',
4294 '\u{3ce}',
4295 '\u{3c2}',
4296 '\u{3c4}',
4297 '\u{3c5}',
4298 '\u{3c6}',
4299 '\u{3c7}',
4300 '\u{3c8}',
4301 '\u{b8}',
4302 '\u{41}',
4303 '\u{42}',
4304 '\u{43}',
4305 '\u{44}',
4306 '\u{45}',
4307 '\u{46}',
4308 '\u{47}',
4309 '\u{48}',
4310 '\u{49}',
4311 '\u{ad}',
4312 '\u{3c9}',
4313 '\u{e2}',
4314 '\u{e0}',
4315 '\u{e4}',
4316 '\u{ea}',
4317 '\u{b4}',
4318 '\u{4a}',
4319 '\u{4b}',
4320 '\u{4c}',
4321 '\u{4d}',
4322 '\u{4e}',
4323 '\u{4f}',
4324 '\u{50}',
4325 '\u{51}',
4326 '\u{52}',
4327 '\u{b1}',
4328 '\u{e9}',
4329 '\u{e8}',
4330 '\u{eb}',
4331 '\u{ee}',
4332 '\u{ef}',
4333 '\u{b0}',
4334 char::REPLACEMENT_CHARACTER,
4335 '\u{53}',
4336 '\u{54}',
4337 '\u{55}',
4338 '\u{56}',
4339 '\u{57}',
4340 '\u{58}',
4341 '\u{59}',
4342 '\u{5a}',
4343 '\u{bd}',
4344 '\u{f6}',
4345 '\u{f4}',
4346 '\u{fb}',
4347 '\u{f9}',
4348 '\u{fc}',
4349 '\u{30}',
4350 '\u{31}',
4351 '\u{32}',
4352 '\u{33}',
4353 '\u{34}',
4354 '\u{35}',
4355 '\u{36}',
4356 '\u{37}',
4357 '\u{38}',
4358 '\u{39}',
4359 '\u{ff}',
4360 '\u{e7}',
4361 '\u{c7}',
4362 char::REPLACEMENT_CHARACTER,
4363 char::REPLACEMENT_CHARACTER,
4364 '\u{9f}',
4365];
4366const IBM_423_ENCODE_TABLE: &[(u16, u8)] = &[
4367 (0, 0),
4368 (1, 1),
4369 (2, 2),
4370 (3, 3),
4371 (4, 55),
4372 (5, 45),
4373 (6, 46),
4374 (7, 47),
4375 (8, 22),
4376 (9, 5),
4377 (10, 37),
4378 (11, 11),
4379 (12, 12),
4380 (13, 13),
4381 (14, 14),
4382 (15, 15),
4383 (16, 16),
4384 (17, 17),
4385 (18, 18),
4386 (19, 19),
4387 (20, 60),
4388 (21, 61),
4389 (22, 50),
4390 (23, 38),
4391 (24, 24),
4392 (25, 25),
4393 (26, 63),
4394 (27, 39),
4395 (28, 28),
4396 (29, 29),
4397 (30, 30),
4398 (31, 31),
4399 (32, 64),
4400 (33, 79),
4401 (34, 127),
4402 (36, 91),
4403 (37, 108),
4404 (38, 80),
4405 (39, 125),
4406 (40, 77),
4407 (41, 93),
4408 (42, 92),
4409 (43, 78),
4410 (44, 107),
4411 (45, 96),
4412 (46, 75),
4413 (47, 97),
4414 (48, 240),
4415 (49, 241),
4416 (50, 242),
4417 (51, 243),
4418 (52, 244),
4419 (53, 245),
4420 (54, 246),
4421 (55, 247),
4422 (56, 248),
4423 (57, 249),
4424 (58, 122),
4425 (59, 94),
4426 (60, 76),
4427 (61, 126),
4428 (62, 110),
4429 (63, 111),
4430 (65, 193),
4431 (66, 194),
4432 (67, 195),
4433 (68, 196),
4434 (69, 197),
4435 (70, 198),
4436 (71, 199),
4437 (72, 200),
4438 (73, 201),
4439 (74, 209),
4440 (75, 210),
4441 (76, 211),
4442 (77, 212),
4443 (78, 213),
4444 (79, 214),
4445 (80, 215),
4446 (81, 216),
4447 (82, 217),
4448 (83, 226),
4449 (84, 227),
4450 (85, 228),
4451 (86, 229),
4452 (87, 230),
4453 (88, 231),
4454 (89, 232),
4455 (90, 233),
4456 (91, 74),
4457 (93, 90),
4458 (94, 95),
4459 (95, 109),
4460 (96, 121),
4461 (97, 129),
4462 (98, 130),
4463 (99, 131),
4464 (100, 132),
4465 (101, 133),
4466 (102, 134),
4467 (103, 135),
4468 (104, 136),
4469 (105, 137),
4470 (106, 145),
4471 (107, 146),
4472 (108, 147),
4473 (109, 148),
4474 (110, 149),
4475 (111, 150),
4476 (112, 151),
4477 (113, 152),
4478 (114, 153),
4479 (115, 162),
4480 (116, 163),
4481 (117, 164),
4482 (118, 165),
4483 (119, 166),
4484 (120, 167),
4485 (121, 168),
4486 (122, 169),
4487 (124, 106),
4488 (127, 7),
4489 (128, 32),
4490 (129, 33),
4491 (130, 34),
4492 (131, 35),
4493 (132, 36),
4494 (133, 21),
4495 (134, 6),
4496 (135, 23),
4497 (136, 40),
4498 (137, 41),
4499 (138, 42),
4500 (139, 43),
4501 (140, 44),
4502 (141, 9),
4503 (142, 10),
4504 (143, 27),
4505 (144, 48),
4506 (145, 49),
4507 (146, 26),
4508 (147, 51),
4509 (148, 52),
4510 (149, 53),
4511 (150, 54),
4512 (151, 8),
4513 (152, 56),
4514 (153, 57),
4515 (154, 58),
4516 (155, 59),
4517 (156, 4),
4518 (157, 20),
4519 (158, 62),
4520 (159, 255),
4521 (160, 116),
4522 (163, 123),
4523 (167, 124),
4524 (168, 161),
4525 (173, 202),
4526 (176, 224),
4527 (177, 218),
4528 (180, 208),
4529 (184, 192),
4530 (189, 234),
4531 (196, 128),
4532 (199, 252),
4533 (214, 144),
4534 (220, 160),
4535 (224, 205),
4536 (226, 204),
4537 (228, 206),
4538 (231, 251),
4539 (232, 220),
4540 (233, 219),
4541 (234, 207),
4542 (235, 221),
4543 (238, 222),
4544 (239, 223),
4545 (244, 236),
4546 (246, 235),
4547 (249, 238),
4548 (251, 237),
4549 (252, 239),
4550 (255, 250),
4551 (902, 113),
4552 (904, 114),
4553 (905, 115),
4554 (906, 117),
4555 (908, 118),
4556 (910, 119),
4557 (911, 120),
4558 (913, 65),
4559 (914, 66),
4560 (915, 67),
4561 (916, 68),
4562 (917, 69),
4563 (918, 70),
4564 (919, 71),
4565 (920, 72),
4566 (921, 73),
4567 (922, 81),
4568 (923, 82),
4569 (924, 83),
4570 (925, 84),
4571 (926, 85),
4572 (927, 86),
4573 (928, 87),
4574 (929, 88),
4575 (931, 89),
4576 (932, 98),
4577 (933, 99),
4578 (934, 100),
4579 (935, 101),
4580 (936, 102),
4581 (937, 103),
4582 (940, 177),
4583 (941, 178),
4584 (942, 179),
4585 (943, 181),
4586 (945, 138),
4587 (946, 139),
4588 (947, 140),
4589 (948, 141),
4590 (949, 142),
4591 (950, 143),
4592 (951, 154),
4593 (952, 155),
4594 (953, 156),
4595 (954, 157),
4596 (955, 158),
4597 (956, 159),
4598 (957, 170),
4599 (958, 171),
4600 (959, 172),
4601 (960, 173),
4602 (961, 174),
4603 (962, 186),
4604 (963, 175),
4605 (964, 187),
4606 (965, 188),
4607 (966, 189),
4608 (967, 190),
4609 (968, 191),
4610 (969, 203),
4611 (970, 180),
4612 (971, 184),
4613 (972, 182),
4614 (973, 183),
4615 (974, 185),
4616];
4617
4618impl_ebcdic_encoder_and_decoder!(
4619 IBM424,
4620 "IBM424",
4621 IBM424Encoder,
4622 IBM424Decoder,
4623 IBM_424_ENCODE_TABLE,
4624 IBM_424_DECODE_TABLE
4625);
4626const IBM_424_DECODE_TABLE: [char; 256] = [
4627 '\u{0}',
4628 '\u{1}',
4629 '\u{2}',
4630 '\u{3}',
4631 '\u{9c}',
4632 '\u{9}',
4633 '\u{86}',
4634 '\u{7f}',
4635 '\u{97}',
4636 '\u{8d}',
4637 '\u{8e}',
4638 '\u{b}',
4639 '\u{c}',
4640 '\u{d}',
4641 '\u{e}',
4642 '\u{f}',
4643 '\u{10}',
4644 '\u{11}',
4645 '\u{12}',
4646 '\u{13}',
4647 '\u{9d}',
4648 '\u{85}',
4649 '\u{8}',
4650 '\u{87}',
4651 '\u{18}',
4652 '\u{19}',
4653 '\u{92}',
4654 '\u{8f}',
4655 '\u{1c}',
4656 '\u{1d}',
4657 '\u{1e}',
4658 '\u{1f}',
4659 '\u{80}',
4660 '\u{81}',
4661 '\u{82}',
4662 '\u{83}',
4663 '\u{84}',
4664 '\u{a}',
4665 '\u{17}',
4666 '\u{1b}',
4667 '\u{88}',
4668 '\u{89}',
4669 '\u{8a}',
4670 '\u{8b}',
4671 '\u{8c}',
4672 '\u{5}',
4673 '\u{6}',
4674 '\u{7}',
4675 '\u{90}',
4676 '\u{91}',
4677 '\u{16}',
4678 '\u{93}',
4679 '\u{94}',
4680 '\u{95}',
4681 '\u{96}',
4682 '\u{4}',
4683 '\u{98}',
4684 '\u{99}',
4685 '\u{9a}',
4686 '\u{9b}',
4687 '\u{14}',
4688 '\u{15}',
4689 '\u{9e}',
4690 '\u{1a}',
4691 '\u{20}',
4692 '\u{5d0}',
4693 '\u{5d1}',
4694 '\u{5d2}',
4695 '\u{5d3}',
4696 '\u{5d4}',
4697 '\u{5d5}',
4698 '\u{5d6}',
4699 '\u{5d7}',
4700 '\u{5d8}',
4701 '\u{a2}',
4702 '\u{2e}',
4703 '\u{3c}',
4704 '\u{28}',
4705 '\u{2b}',
4706 '\u{7c}',
4707 '\u{26}',
4708 '\u{5d9}',
4709 '\u{5da}',
4710 '\u{5db}',
4711 '\u{5dc}',
4712 '\u{5dd}',
4713 '\u{5de}',
4714 '\u{5df}',
4715 '\u{5e0}',
4716 '\u{5e1}',
4717 '\u{21}',
4718 '\u{24}',
4719 '\u{2a}',
4720 '\u{29}',
4721 '\u{3b}',
4722 '\u{ac}',
4723 '\u{2d}',
4724 '\u{2f}',
4725 '\u{5e2}',
4726 '\u{5e3}',
4727 '\u{5e4}',
4728 '\u{5e5}',
4729 '\u{5e6}',
4730 '\u{5e7}',
4731 '\u{5e8}',
4732 '\u{5e9}',
4733 '\u{a6}',
4734 '\u{2c}',
4735 '\u{25}',
4736 '\u{5f}',
4737 '\u{3e}',
4738 '\u{3f}',
4739 char::REPLACEMENT_CHARACTER,
4740 '\u{5ea}',
4741 char::REPLACEMENT_CHARACTER,
4742 char::REPLACEMENT_CHARACTER,
4743 '\u{a0}',
4744 char::REPLACEMENT_CHARACTER,
4745 char::REPLACEMENT_CHARACTER,
4746 char::REPLACEMENT_CHARACTER,
4747 '\u{2017}',
4748 '\u{60}',
4749 '\u{3a}',
4750 '\u{23}',
4751 '\u{40}',
4752 '\u{27}',
4753 '\u{3d}',
4754 '\u{22}',
4755 char::REPLACEMENT_CHARACTER,
4756 '\u{61}',
4757 '\u{62}',
4758 '\u{63}',
4759 '\u{64}',
4760 '\u{65}',
4761 '\u{66}',
4762 '\u{67}',
4763 '\u{68}',
4764 '\u{69}',
4765 '\u{ab}',
4766 '\u{bb}',
4767 char::REPLACEMENT_CHARACTER,
4768 char::REPLACEMENT_CHARACTER,
4769 char::REPLACEMENT_CHARACTER,
4770 '\u{b1}',
4771 '\u{b0}',
4772 '\u{6a}',
4773 '\u{6b}',
4774 '\u{6c}',
4775 '\u{6d}',
4776 '\u{6e}',
4777 '\u{6f}',
4778 '\u{70}',
4779 '\u{71}',
4780 '\u{72}',
4781 char::REPLACEMENT_CHARACTER,
4782 char::REPLACEMENT_CHARACTER,
4783 char::REPLACEMENT_CHARACTER,
4784 '\u{b8}',
4785 char::REPLACEMENT_CHARACTER,
4786 '\u{a4}',
4787 '\u{b5}',
4788 '\u{7e}',
4789 '\u{73}',
4790 '\u{74}',
4791 '\u{75}',
4792 '\u{76}',
4793 '\u{77}',
4794 '\u{78}',
4795 '\u{79}',
4796 '\u{7a}',
4797 char::REPLACEMENT_CHARACTER,
4798 char::REPLACEMENT_CHARACTER,
4799 char::REPLACEMENT_CHARACTER,
4800 char::REPLACEMENT_CHARACTER,
4801 char::REPLACEMENT_CHARACTER,
4802 '\u{ae}',
4803 '\u{5e}',
4804 '\u{a3}',
4805 '\u{a5}',
4806 '\u{2022}',
4807 '\u{a9}',
4808 '\u{a7}',
4809 '\u{b6}',
4810 '\u{bc}',
4811 '\u{bd}',
4812 '\u{be}',
4813 '\u{5b}',
4814 '\u{5d}',
4815 '\u{203e}',
4816 '\u{a8}',
4817 '\u{b4}',
4818 '\u{d7}',
4819 '\u{7b}',
4820 '\u{41}',
4821 '\u{42}',
4822 '\u{43}',
4823 '\u{44}',
4824 '\u{45}',
4825 '\u{46}',
4826 '\u{47}',
4827 '\u{48}',
4828 '\u{49}',
4829 '\u{ad}',
4830 char::REPLACEMENT_CHARACTER,
4831 char::REPLACEMENT_CHARACTER,
4832 char::REPLACEMENT_CHARACTER,
4833 char::REPLACEMENT_CHARACTER,
4834 char::REPLACEMENT_CHARACTER,
4835 '\u{7d}',
4836 '\u{4a}',
4837 '\u{4b}',
4838 '\u{4c}',
4839 '\u{4d}',
4840 '\u{4e}',
4841 '\u{4f}',
4842 '\u{50}',
4843 '\u{51}',
4844 '\u{52}',
4845 '\u{b9}',
4846 char::REPLACEMENT_CHARACTER,
4847 char::REPLACEMENT_CHARACTER,
4848 char::REPLACEMENT_CHARACTER,
4849 char::REPLACEMENT_CHARACTER,
4850 char::REPLACEMENT_CHARACTER,
4851 '\u{5c}',
4852 '\u{f7}',
4853 '\u{53}',
4854 '\u{54}',
4855 '\u{55}',
4856 '\u{56}',
4857 '\u{57}',
4858 '\u{58}',
4859 '\u{59}',
4860 '\u{5a}',
4861 '\u{b2}',
4862 char::REPLACEMENT_CHARACTER,
4863 char::REPLACEMENT_CHARACTER,
4864 char::REPLACEMENT_CHARACTER,
4865 char::REPLACEMENT_CHARACTER,
4866 char::REPLACEMENT_CHARACTER,
4867 '\u{30}',
4868 '\u{31}',
4869 '\u{32}',
4870 '\u{33}',
4871 '\u{34}',
4872 '\u{35}',
4873 '\u{36}',
4874 '\u{37}',
4875 '\u{38}',
4876 '\u{39}',
4877 '\u{b3}',
4878 char::REPLACEMENT_CHARACTER,
4879 char::REPLACEMENT_CHARACTER,
4880 char::REPLACEMENT_CHARACTER,
4881 char::REPLACEMENT_CHARACTER,
4882 '\u{9f}',
4883];
4884const IBM_424_ENCODE_TABLE: &[(u16, u8)] = &[
4885 (0, 0),
4886 (1, 1),
4887 (2, 2),
4888 (3, 3),
4889 (4, 55),
4890 (5, 45),
4891 (6, 46),
4892 (7, 47),
4893 (8, 22),
4894 (9, 5),
4895 (10, 37),
4896 (11, 11),
4897 (12, 12),
4898 (13, 13),
4899 (14, 14),
4900 (15, 15),
4901 (16, 16),
4902 (17, 17),
4903 (18, 18),
4904 (19, 19),
4905 (20, 60),
4906 (21, 61),
4907 (22, 50),
4908 (23, 38),
4909 (24, 24),
4910 (25, 25),
4911 (26, 63),
4912 (27, 39),
4913 (28, 28),
4914 (29, 29),
4915 (30, 30),
4916 (31, 31),
4917 (32, 64),
4918 (33, 90),
4919 (34, 127),
4920 (35, 123),
4921 (36, 91),
4922 (37, 108),
4923 (38, 80),
4924 (39, 125),
4925 (40, 77),
4926 (41, 93),
4927 (42, 92),
4928 (43, 78),
4929 (44, 107),
4930 (45, 96),
4931 (46, 75),
4932 (47, 97),
4933 (48, 240),
4934 (49, 241),
4935 (50, 242),
4936 (51, 243),
4937 (52, 244),
4938 (53, 245),
4939 (54, 246),
4940 (55, 247),
4941 (56, 248),
4942 (57, 249),
4943 (58, 122),
4944 (59, 94),
4945 (60, 76),
4946 (61, 126),
4947 (62, 110),
4948 (63, 111),
4949 (64, 124),
4950 (65, 193),
4951 (66, 194),
4952 (67, 195),
4953 (68, 196),
4954 (69, 197),
4955 (70, 198),
4956 (71, 199),
4957 (72, 200),
4958 (73, 201),
4959 (74, 209),
4960 (75, 210),
4961 (76, 211),
4962 (77, 212),
4963 (78, 213),
4964 (79, 214),
4965 (80, 215),
4966 (81, 216),
4967 (82, 217),
4968 (83, 226),
4969 (84, 227),
4970 (85, 228),
4971 (86, 229),
4972 (87, 230),
4973 (88, 231),
4974 (89, 232),
4975 (90, 233),
4976 (91, 186),
4977 (92, 224),
4978 (93, 187),
4979 (94, 176),
4980 (95, 109),
4981 (96, 121),
4982 (97, 129),
4983 (98, 130),
4984 (99, 131),
4985 (100, 132),
4986 (101, 133),
4987 (102, 134),
4988 (103, 135),
4989 (104, 136),
4990 (105, 137),
4991 (106, 145),
4992 (107, 146),
4993 (108, 147),
4994 (109, 148),
4995 (110, 149),
4996 (111, 150),
4997 (112, 151),
4998 (113, 152),
4999 (114, 153),
5000 (115, 162),
5001 (116, 163),
5002 (117, 164),
5003 (118, 165),
5004 (119, 166),
5005 (120, 167),
5006 (121, 168),
5007 (122, 169),
5008 (123, 192),
5009 (124, 79),
5010 (125, 208),
5011 (126, 161),
5012 (127, 7),
5013 (128, 32),
5014 (129, 33),
5015 (130, 34),
5016 (131, 35),
5017 (132, 36),
5018 (133, 21),
5019 (134, 6),
5020 (135, 23),
5021 (136, 40),
5022 (137, 41),
5023 (138, 42),
5024 (139, 43),
5025 (140, 44),
5026 (141, 9),
5027 (142, 10),
5028 (143, 27),
5029 (144, 48),
5030 (145, 49),
5031 (146, 26),
5032 (147, 51),
5033 (148, 52),
5034 (149, 53),
5035 (150, 54),
5036 (151, 8),
5037 (152, 56),
5038 (153, 57),
5039 (154, 58),
5040 (155, 59),
5041 (156, 4),
5042 (157, 20),
5043 (158, 62),
5044 (159, 255),
5045 (160, 116),
5046 (162, 74),
5047 (163, 177),
5048 (164, 159),
5049 (165, 178),
5050 (166, 106),
5051 (167, 181),
5052 (168, 189),
5053 (169, 180),
5054 (171, 138),
5055 (172, 95),
5056 (173, 202),
5057 (174, 175),
5058 (176, 144),
5059 (177, 143),
5060 (178, 234),
5061 (179, 250),
5062 (180, 190),
5063 (181, 160),
5064 (182, 182),
5065 (184, 157),
5066 (185, 218),
5067 (187, 139),
5068 (188, 183),
5069 (189, 184),
5070 (190, 185),
5071 (215, 191),
5072 (247, 225),
5073 (1488, 65),
5074 (1489, 66),
5075 (1490, 67),
5076 (1491, 68),
5077 (1492, 69),
5078 (1493, 70),
5079 (1494, 71),
5080 (1495, 72),
5081 (1496, 73),
5082 (1497, 81),
5083 (1498, 82),
5084 (1499, 83),
5085 (1500, 84),
5086 (1501, 85),
5087 (1502, 86),
5088 (1503, 87),
5089 (1504, 88),
5090 (1505, 89),
5091 (1506, 98),
5092 (1507, 99),
5093 (1508, 100),
5094 (1509, 101),
5095 (1510, 102),
5096 (1511, 103),
5097 (1512, 104),
5098 (1513, 105),
5099 (1514, 113),
5100 (8215, 120),
5101 (8226, 179),
5102 (8254, 188),
5103];
5104
5105impl_ebcdic_encoder_and_decoder!(
5106 IBM437,
5107 "IBM437",
5108 IBM437Encoder,
5109 IBM437Decoder,
5110 IBM_437_ENCODE_TABLE,
5111 IBM_437_DECODE_TABLE
5112);
5113const IBM_437_DECODE_TABLE: [char; 256] = [
5114 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5115 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5116 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5117 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5118 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5119 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5120 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5121 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5122 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5123 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5124 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5125 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5126 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5127 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5128 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5129 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5130 '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5131 '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5132 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
5133 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5134 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5135 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5136 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5137 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
5138 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
5139 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
5140 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
5141 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
5142 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
5143 '\u{b2}', '\u{25a0}', '\u{a0}',
5144];
5145const IBM_437_ENCODE_TABLE: &[(u16, u8)] = &[
5146 (0, 0),
5147 (1, 1),
5148 (2, 2),
5149 (3, 3),
5150 (4, 4),
5151 (5, 5),
5152 (6, 6),
5153 (7, 7),
5154 (8, 8),
5155 (9, 9),
5156 (10, 10),
5157 (11, 11),
5158 (12, 12),
5159 (13, 13),
5160 (14, 14),
5161 (15, 15),
5162 (16, 16),
5163 (17, 17),
5164 (18, 18),
5165 (19, 19),
5166 (20, 20),
5167 (21, 21),
5168 (22, 22),
5169 (23, 23),
5170 (24, 24),
5171 (25, 25),
5172 (26, 127),
5173 (27, 27),
5174 (28, 26),
5175 (29, 29),
5176 (30, 30),
5177 (31, 31),
5178 (32, 32),
5179 (33, 33),
5180 (34, 34),
5181 (35, 35),
5182 (36, 36),
5183 (37, 37),
5184 (38, 38),
5185 (39, 39),
5186 (40, 40),
5187 (41, 41),
5188 (42, 42),
5189 (43, 43),
5190 (44, 44),
5191 (45, 45),
5192 (46, 46),
5193 (47, 47),
5194 (48, 48),
5195 (49, 49),
5196 (50, 50),
5197 (51, 51),
5198 (52, 52),
5199 (53, 53),
5200 (54, 54),
5201 (55, 55),
5202 (56, 56),
5203 (57, 57),
5204 (58, 58),
5205 (59, 59),
5206 (60, 60),
5207 (61, 61),
5208 (62, 62),
5209 (63, 63),
5210 (64, 64),
5211 (65, 65),
5212 (66, 66),
5213 (67, 67),
5214 (68, 68),
5215 (69, 69),
5216 (70, 70),
5217 (71, 71),
5218 (72, 72),
5219 (73, 73),
5220 (74, 74),
5221 (75, 75),
5222 (76, 76),
5223 (77, 77),
5224 (78, 78),
5225 (79, 79),
5226 (80, 80),
5227 (81, 81),
5228 (82, 82),
5229 (83, 83),
5230 (84, 84),
5231 (85, 85),
5232 (86, 86),
5233 (87, 87),
5234 (88, 88),
5235 (89, 89),
5236 (90, 90),
5237 (91, 91),
5238 (92, 92),
5239 (93, 93),
5240 (94, 94),
5241 (95, 95),
5242 (96, 96),
5243 (97, 97),
5244 (98, 98),
5245 (99, 99),
5246 (100, 100),
5247 (101, 101),
5248 (102, 102),
5249 (103, 103),
5250 (104, 104),
5251 (105, 105),
5252 (106, 106),
5253 (107, 107),
5254 (108, 108),
5255 (109, 109),
5256 (110, 110),
5257 (111, 111),
5258 (112, 112),
5259 (113, 113),
5260 (114, 114),
5261 (115, 115),
5262 (116, 116),
5263 (117, 117),
5264 (118, 118),
5265 (119, 119),
5266 (120, 120),
5267 (121, 121),
5268 (122, 122),
5269 (123, 123),
5270 (124, 124),
5271 (125, 125),
5272 (126, 126),
5273 (127, 28),
5274 (160, 255),
5275 (161, 173),
5276 (162, 155),
5277 (163, 156),
5278 (165, 157),
5279 (170, 166),
5280 (171, 174),
5281 (172, 170),
5282 (176, 248),
5283 (177, 241),
5284 (178, 253),
5285 (183, 250),
5286 (186, 167),
5287 (187, 175),
5288 (188, 172),
5289 (189, 171),
5290 (191, 168),
5291 (196, 142),
5292 (197, 143),
5293 (198, 146),
5294 (199, 128),
5295 (201, 144),
5296 (209, 165),
5297 (214, 153),
5298 (220, 154),
5299 (223, 225),
5300 (224, 133),
5301 (225, 160),
5302 (226, 131),
5303 (228, 132),
5304 (229, 134),
5305 (230, 145),
5306 (231, 135),
5307 (232, 138),
5308 (233, 130),
5309 (234, 136),
5310 (235, 137),
5311 (236, 141),
5312 (237, 161),
5313 (238, 140),
5314 (239, 139),
5315 (241, 164),
5316 (242, 149),
5317 (243, 162),
5318 (244, 147),
5319 (246, 148),
5320 (247, 246),
5321 (249, 151),
5322 (250, 163),
5323 (251, 150),
5324 (252, 129),
5325 (255, 152),
5326 (402, 159),
5327 (915, 226),
5328 (920, 233),
5329 (931, 228),
5330 (934, 232),
5331 (937, 234),
5332 (945, 224),
5333 (948, 235),
5334 (949, 238),
5335 (956, 230),
5336 (960, 227),
5337 (963, 229),
5338 (964, 231),
5339 (966, 237),
5340 (8319, 252),
5341 (8359, 158),
5342 (8729, 249),
5343 (8730, 251),
5344 (8734, 236),
5345 (8745, 239),
5346 (8776, 247),
5347 (8801, 240),
5348 (8804, 243),
5349 (8805, 242),
5350 (8976, 169),
5351 (8992, 244),
5352 (8993, 245),
5353 (9472, 196),
5354 (9474, 179),
5355 (9484, 218),
5356 (9488, 191),
5357 (9492, 192),
5358 (9496, 217),
5359 (9500, 195),
5360 (9508, 180),
5361 (9516, 194),
5362 (9524, 193),
5363 (9532, 197),
5364 (9552, 205),
5365 (9553, 186),
5366 (9554, 213),
5367 (9555, 214),
5368 (9556, 201),
5369 (9557, 184),
5370 (9558, 183),
5371 (9559, 187),
5372 (9560, 212),
5373 (9561, 211),
5374 (9562, 200),
5375 (9563, 190),
5376 (9564, 189),
5377 (9565, 188),
5378 (9566, 198),
5379 (9567, 199),
5380 (9568, 204),
5381 (9569, 181),
5382 (9570, 182),
5383 (9571, 185),
5384 (9572, 209),
5385 (9573, 210),
5386 (9574, 203),
5387 (9575, 207),
5388 (9576, 208),
5389 (9577, 202),
5390 (9578, 216),
5391 (9579, 215),
5392 (9580, 206),
5393 (9600, 223),
5394 (9604, 220),
5395 (9608, 219),
5396 (9612, 221),
5397 (9616, 222),
5398 (9617, 176),
5399 (9618, 177),
5400 (9619, 178),
5401 (9632, 254),
5402];
5403
5404impl_ebcdic_encoder_and_decoder!(
5405 IBM500,
5406 "IBM500",
5407 IBM500Encoder,
5408 IBM500Decoder,
5409 IBM_500_ENCODE_TABLE,
5410 IBM_500_DECODE_TABLE
5411);
5412const IBM_500_DECODE_TABLE: [char; 256] = [
5413 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
5414 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5415 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
5416 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
5417 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
5418 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
5419 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
5420 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
5421 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
5422 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
5423 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
5424 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
5425 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
5426 '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
5427 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
5428 '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
5429 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
5430 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
5431 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
5432 '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
5433 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
5434 '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
5435 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
5436 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5437 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
5438 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
5439 '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
5440 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
5441 '\u{da}', '\u{9f}',
5442];
5443const IBM_500_ENCODE_TABLE: &[(u16, u8)] = &[
5444 (0, 0),
5445 (1, 1),
5446 (2, 2),
5447 (3, 3),
5448 (4, 55),
5449 (5, 45),
5450 (6, 46),
5451 (7, 47),
5452 (8, 22),
5453 (9, 5),
5454 (10, 37),
5455 (11, 11),
5456 (12, 12),
5457 (13, 13),
5458 (14, 14),
5459 (15, 15),
5460 (16, 16),
5461 (17, 17),
5462 (18, 18),
5463 (19, 19),
5464 (20, 60),
5465 (21, 61),
5466 (22, 50),
5467 (23, 38),
5468 (24, 24),
5469 (25, 25),
5470 (26, 63),
5471 (27, 39),
5472 (28, 28),
5473 (29, 29),
5474 (30, 30),
5475 (31, 31),
5476 (32, 64),
5477 (33, 79),
5478 (34, 127),
5479 (35, 123),
5480 (36, 91),
5481 (37, 108),
5482 (38, 80),
5483 (39, 125),
5484 (40, 77),
5485 (41, 93),
5486 (42, 92),
5487 (43, 78),
5488 (44, 107),
5489 (45, 96),
5490 (46, 75),
5491 (47, 97),
5492 (48, 240),
5493 (49, 241),
5494 (50, 242),
5495 (51, 243),
5496 (52, 244),
5497 (53, 245),
5498 (54, 246),
5499 (55, 247),
5500 (56, 248),
5501 (57, 249),
5502 (58, 122),
5503 (59, 94),
5504 (60, 76),
5505 (61, 126),
5506 (62, 110),
5507 (63, 111),
5508 (64, 124),
5509 (65, 193),
5510 (66, 194),
5511 (67, 195),
5512 (68, 196),
5513 (69, 197),
5514 (70, 198),
5515 (71, 199),
5516 (72, 200),
5517 (73, 201),
5518 (74, 209),
5519 (75, 210),
5520 (76, 211),
5521 (77, 212),
5522 (78, 213),
5523 (79, 214),
5524 (80, 215),
5525 (81, 216),
5526 (82, 217),
5527 (83, 226),
5528 (84, 227),
5529 (85, 228),
5530 (86, 229),
5531 (87, 230),
5532 (88, 231),
5533 (89, 232),
5534 (90, 233),
5535 (91, 74),
5536 (92, 224),
5537 (93, 90),
5538 (94, 95),
5539 (95, 109),
5540 (96, 121),
5541 (97, 129),
5542 (98, 130),
5543 (99, 131),
5544 (100, 132),
5545 (101, 133),
5546 (102, 134),
5547 (103, 135),
5548 (104, 136),
5549 (105, 137),
5550 (106, 145),
5551 (107, 146),
5552 (108, 147),
5553 (109, 148),
5554 (110, 149),
5555 (111, 150),
5556 (112, 151),
5557 (113, 152),
5558 (114, 153),
5559 (115, 162),
5560 (116, 163),
5561 (117, 164),
5562 (118, 165),
5563 (119, 166),
5564 (120, 167),
5565 (121, 168),
5566 (122, 169),
5567 (123, 192),
5568 (124, 187),
5569 (125, 208),
5570 (126, 161),
5571 (127, 7),
5572 (128, 32),
5573 (129, 33),
5574 (130, 34),
5575 (131, 35),
5576 (132, 36),
5577 (133, 21),
5578 (134, 6),
5579 (135, 23),
5580 (136, 40),
5581 (137, 41),
5582 (138, 42),
5583 (139, 43),
5584 (140, 44),
5585 (141, 9),
5586 (142, 10),
5587 (143, 27),
5588 (144, 48),
5589 (145, 49),
5590 (146, 26),
5591 (147, 51),
5592 (148, 52),
5593 (149, 53),
5594 (150, 54),
5595 (151, 8),
5596 (152, 56),
5597 (153, 57),
5598 (154, 58),
5599 (155, 59),
5600 (156, 4),
5601 (157, 20),
5602 (158, 62),
5603 (159, 255),
5604 (160, 65),
5605 (161, 170),
5606 (162, 176),
5607 (163, 177),
5608 (164, 159),
5609 (165, 178),
5610 (166, 106),
5611 (167, 181),
5612 (168, 189),
5613 (169, 180),
5614 (170, 154),
5615 (171, 138),
5616 (172, 186),
5617 (173, 202),
5618 (174, 175),
5619 (175, 188),
5620 (176, 144),
5621 (177, 143),
5622 (178, 234),
5623 (179, 250),
5624 (180, 190),
5625 (181, 160),
5626 (182, 182),
5627 (183, 179),
5628 (184, 157),
5629 (185, 218),
5630 (186, 155),
5631 (187, 139),
5632 (188, 183),
5633 (189, 184),
5634 (190, 185),
5635 (191, 171),
5636 (192, 100),
5637 (193, 101),
5638 (194, 98),
5639 (195, 102),
5640 (196, 99),
5641 (197, 103),
5642 (198, 158),
5643 (199, 104),
5644 (200, 116),
5645 (201, 113),
5646 (202, 114),
5647 (203, 115),
5648 (204, 120),
5649 (205, 117),
5650 (206, 118),
5651 (207, 119),
5652 (208, 172),
5653 (209, 105),
5654 (210, 237),
5655 (211, 238),
5656 (212, 235),
5657 (213, 239),
5658 (214, 236),
5659 (215, 191),
5660 (216, 128),
5661 (217, 253),
5662 (218, 254),
5663 (219, 251),
5664 (220, 252),
5665 (221, 173),
5666 (222, 174),
5667 (223, 89),
5668 (224, 68),
5669 (225, 69),
5670 (226, 66),
5671 (227, 70),
5672 (228, 67),
5673 (229, 71),
5674 (230, 156),
5675 (231, 72),
5676 (232, 84),
5677 (233, 81),
5678 (234, 82),
5679 (235, 83),
5680 (236, 88),
5681 (237, 85),
5682 (238, 86),
5683 (239, 87),
5684 (240, 140),
5685 (241, 73),
5686 (242, 205),
5687 (243, 206),
5688 (244, 203),
5689 (245, 207),
5690 (246, 204),
5691 (247, 225),
5692 (248, 112),
5693 (249, 221),
5694 (250, 222),
5695 (251, 219),
5696 (252, 220),
5697 (253, 141),
5698 (254, 142),
5699 (255, 223),
5700];
5701
5702impl_ebcdic_encoder_and_decoder!(
5703 IBM850,
5704 "IBM850",
5705 IBM850Encoder,
5706 IBM850Decoder,
5707 IBM_850_ENCODE_TABLE,
5708 IBM_850_DECODE_TABLE
5709);
5710const IBM_850_DECODE_TABLE: [char; 256] = [
5711 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5712 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5713 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5714 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5715 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5716 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5717 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5718 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5719 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5720 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5721 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5722 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5723 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5724 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5725 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5726 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5727 '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5728 '\u{f8}', '\u{a3}', '\u{d8}', '\u{d7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5729 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{ae}', '\u{ac}', '\u{bd}', '\u{bc}',
5730 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5731 '\u{c1}', '\u{c2}', '\u{c0}', '\u{a9}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5732 '\u{a2}', '\u{a5}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5733 '\u{253c}', '\u{e3}', '\u{c3}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5734 '\u{2550}', '\u{256c}', '\u{a4}', '\u{f0}', '\u{d0}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{131}',
5735 '\u{cd}', '\u{ce}', '\u{cf}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{a6}',
5736 '\u{cc}', '\u{2580}', '\u{d3}', '\u{df}', '\u{d4}', '\u{d2}', '\u{f5}', '\u{d5}', '\u{b5}',
5737 '\u{fe}', '\u{de}', '\u{da}', '\u{db}', '\u{d9}', '\u{fd}', '\u{dd}', '\u{af}', '\u{b4}',
5738 '\u{ad}', '\u{b1}', '\u{2017}', '\u{be}', '\u{b6}', '\u{a7}', '\u{f7}', '\u{b8}', '\u{b0}',
5739 '\u{a8}', '\u{b7}', '\u{b9}', '\u{b3}', '\u{b2}', '\u{25a0}', '\u{a0}',
5740];
5741const IBM_850_ENCODE_TABLE: &[(u16, u8)] = &[
5742 (0, 0),
5743 (1, 1),
5744 (2, 2),
5745 (3, 3),
5746 (4, 4),
5747 (5, 5),
5748 (6, 6),
5749 (7, 7),
5750 (8, 8),
5751 (9, 9),
5752 (10, 10),
5753 (11, 11),
5754 (12, 12),
5755 (13, 13),
5756 (14, 14),
5757 (15, 15),
5758 (16, 16),
5759 (17, 17),
5760 (18, 18),
5761 (19, 19),
5762 (20, 20),
5763 (21, 21),
5764 (22, 22),
5765 (23, 23),
5766 (24, 24),
5767 (25, 25),
5768 (26, 127),
5769 (27, 27),
5770 (28, 26),
5771 (29, 29),
5772 (30, 30),
5773 (31, 31),
5774 (32, 32),
5775 (33, 33),
5776 (34, 34),
5777 (35, 35),
5778 (36, 36),
5779 (37, 37),
5780 (38, 38),
5781 (39, 39),
5782 (40, 40),
5783 (41, 41),
5784 (42, 42),
5785 (43, 43),
5786 (44, 44),
5787 (45, 45),
5788 (46, 46),
5789 (47, 47),
5790 (48, 48),
5791 (49, 49),
5792 (50, 50),
5793 (51, 51),
5794 (52, 52),
5795 (53, 53),
5796 (54, 54),
5797 (55, 55),
5798 (56, 56),
5799 (57, 57),
5800 (58, 58),
5801 (59, 59),
5802 (60, 60),
5803 (61, 61),
5804 (62, 62),
5805 (63, 63),
5806 (64, 64),
5807 (65, 65),
5808 (66, 66),
5809 (67, 67),
5810 (68, 68),
5811 (69, 69),
5812 (70, 70),
5813 (71, 71),
5814 (72, 72),
5815 (73, 73),
5816 (74, 74),
5817 (75, 75),
5818 (76, 76),
5819 (77, 77),
5820 (78, 78),
5821 (79, 79),
5822 (80, 80),
5823 (81, 81),
5824 (82, 82),
5825 (83, 83),
5826 (84, 84),
5827 (85, 85),
5828 (86, 86),
5829 (87, 87),
5830 (88, 88),
5831 (89, 89),
5832 (90, 90),
5833 (91, 91),
5834 (92, 92),
5835 (93, 93),
5836 (94, 94),
5837 (95, 95),
5838 (96, 96),
5839 (97, 97),
5840 (98, 98),
5841 (99, 99),
5842 (100, 100),
5843 (101, 101),
5844 (102, 102),
5845 (103, 103),
5846 (104, 104),
5847 (105, 105),
5848 (106, 106),
5849 (107, 107),
5850 (108, 108),
5851 (109, 109),
5852 (110, 110),
5853 (111, 111),
5854 (112, 112),
5855 (113, 113),
5856 (114, 114),
5857 (115, 115),
5858 (116, 116),
5859 (117, 117),
5860 (118, 118),
5861 (119, 119),
5862 (120, 120),
5863 (121, 121),
5864 (122, 122),
5865 (123, 123),
5866 (124, 124),
5867 (125, 125),
5868 (126, 126),
5869 (127, 28),
5870 (160, 255),
5871 (161, 173),
5872 (162, 189),
5873 (163, 156),
5874 (164, 207),
5875 (165, 190),
5876 (166, 221),
5877 (167, 245),
5878 (168, 249),
5879 (169, 184),
5880 (170, 166),
5881 (171, 174),
5882 (172, 170),
5883 (173, 240),
5884 (174, 169),
5885 (175, 238),
5886 (176, 248),
5887 (177, 241),
5888 (178, 253),
5889 (179, 252),
5890 (180, 239),
5891 (181, 230),
5892 (182, 244),
5893 (183, 250),
5894 (184, 247),
5895 (185, 251),
5896 (186, 167),
5897 (187, 175),
5898 (188, 172),
5899 (189, 171),
5900 (190, 243),
5901 (191, 168),
5902 (192, 183),
5903 (193, 181),
5904 (194, 182),
5905 (195, 199),
5906 (196, 142),
5907 (197, 143),
5908 (198, 146),
5909 (199, 128),
5910 (200, 212),
5911 (201, 144),
5912 (202, 210),
5913 (203, 211),
5914 (204, 222),
5915 (205, 214),
5916 (206, 215),
5917 (207, 216),
5918 (208, 209),
5919 (209, 165),
5920 (210, 227),
5921 (211, 224),
5922 (212, 226),
5923 (213, 229),
5924 (214, 153),
5925 (215, 158),
5926 (216, 157),
5927 (217, 235),
5928 (218, 233),
5929 (219, 234),
5930 (220, 154),
5931 (221, 237),
5932 (222, 232),
5933 (223, 225),
5934 (224, 133),
5935 (225, 160),
5936 (226, 131),
5937 (227, 198),
5938 (228, 132),
5939 (229, 134),
5940 (230, 145),
5941 (231, 135),
5942 (232, 138),
5943 (233, 130),
5944 (234, 136),
5945 (235, 137),
5946 (236, 141),
5947 (237, 161),
5948 (238, 140),
5949 (239, 139),
5950 (240, 208),
5951 (241, 164),
5952 (242, 149),
5953 (243, 162),
5954 (244, 147),
5955 (245, 228),
5956 (246, 148),
5957 (247, 246),
5958 (248, 155),
5959 (249, 151),
5960 (250, 163),
5961 (251, 150),
5962 (252, 129),
5963 (253, 236),
5964 (254, 231),
5965 (255, 152),
5966 (305, 213),
5967 (402, 159),
5968 (8215, 242),
5969 (9472, 196),
5970 (9474, 179),
5971 (9484, 218),
5972 (9488, 191),
5973 (9492, 192),
5974 (9496, 217),
5975 (9500, 195),
5976 (9508, 180),
5977 (9516, 194),
5978 (9524, 193),
5979 (9532, 197),
5980 (9552, 205),
5981 (9553, 186),
5982 (9556, 201),
5983 (9559, 187),
5984 (9562, 200),
5985 (9565, 188),
5986 (9568, 204),
5987 (9571, 185),
5988 (9574, 203),
5989 (9577, 202),
5990 (9580, 206),
5991 (9600, 223),
5992 (9604, 220),
5993 (9608, 219),
5994 (9617, 176),
5995 (9618, 177),
5996 (9619, 178),
5997 (9632, 254),
5998];
5999
6000impl_ebcdic_encoder_and_decoder!(
6001 IBM851,
6002 "IBM851",
6003 IBM851Encoder,
6004 IBM851Decoder,
6005 IBM_851_ENCODE_TABLE,
6006 IBM_851_DECODE_TABLE
6007);
6008const IBM_851_DECODE_TABLE: [char; 256] = [
6009 '\u{0}',
6010 '\u{1}',
6011 '\u{2}',
6012 '\u{3}',
6013 '\u{4}',
6014 '\u{5}',
6015 '\u{6}',
6016 '\u{7}',
6017 '\u{8}',
6018 '\u{9}',
6019 '\u{a}',
6020 '\u{b}',
6021 '\u{c}',
6022 '\u{d}',
6023 '\u{e}',
6024 '\u{f}',
6025 '\u{10}',
6026 '\u{11}',
6027 '\u{12}',
6028 '\u{13}',
6029 '\u{14}',
6030 '\u{15}',
6031 '\u{16}',
6032 '\u{17}',
6033 '\u{18}',
6034 '\u{19}',
6035 '\u{1c}',
6036 '\u{1b}',
6037 '\u{7f}',
6038 '\u{1d}',
6039 '\u{1e}',
6040 '\u{1f}',
6041 '\u{20}',
6042 '\u{21}',
6043 '\u{22}',
6044 '\u{23}',
6045 '\u{24}',
6046 '\u{25}',
6047 '\u{26}',
6048 '\u{27}',
6049 '\u{28}',
6050 '\u{29}',
6051 '\u{2a}',
6052 '\u{2b}',
6053 '\u{2c}',
6054 '\u{2d}',
6055 '\u{2e}',
6056 '\u{2f}',
6057 '\u{30}',
6058 '\u{31}',
6059 '\u{32}',
6060 '\u{33}',
6061 '\u{34}',
6062 '\u{35}',
6063 '\u{36}',
6064 '\u{37}',
6065 '\u{38}',
6066 '\u{39}',
6067 '\u{3a}',
6068 '\u{3b}',
6069 '\u{3c}',
6070 '\u{3d}',
6071 '\u{3e}',
6072 '\u{3f}',
6073 '\u{40}',
6074 '\u{41}',
6075 '\u{42}',
6076 '\u{43}',
6077 '\u{44}',
6078 '\u{45}',
6079 '\u{46}',
6080 '\u{47}',
6081 '\u{48}',
6082 '\u{49}',
6083 '\u{4a}',
6084 '\u{4b}',
6085 '\u{4c}',
6086 '\u{4d}',
6087 '\u{4e}',
6088 '\u{4f}',
6089 '\u{50}',
6090 '\u{51}',
6091 '\u{52}',
6092 '\u{53}',
6093 '\u{54}',
6094 '\u{55}',
6095 '\u{56}',
6096 '\u{57}',
6097 '\u{58}',
6098 '\u{59}',
6099 '\u{5a}',
6100 '\u{5b}',
6101 '\u{5c}',
6102 '\u{5d}',
6103 '\u{5e}',
6104 '\u{5f}',
6105 '\u{60}',
6106 '\u{61}',
6107 '\u{62}',
6108 '\u{63}',
6109 '\u{64}',
6110 '\u{65}',
6111 '\u{66}',
6112 '\u{67}',
6113 '\u{68}',
6114 '\u{69}',
6115 '\u{6a}',
6116 '\u{6b}',
6117 '\u{6c}',
6118 '\u{6d}',
6119 '\u{6e}',
6120 '\u{6f}',
6121 '\u{70}',
6122 '\u{71}',
6123 '\u{72}',
6124 '\u{73}',
6125 '\u{74}',
6126 '\u{75}',
6127 '\u{76}',
6128 '\u{77}',
6129 '\u{78}',
6130 '\u{79}',
6131 '\u{7a}',
6132 '\u{7b}',
6133 '\u{7c}',
6134 '\u{7d}',
6135 '\u{7e}',
6136 '\u{1a}',
6137 '\u{c7}',
6138 '\u{fc}',
6139 '\u{e9}',
6140 '\u{e2}',
6141 '\u{e4}',
6142 '\u{e0}',
6143 '\u{386}',
6144 '\u{e7}',
6145 '\u{ea}',
6146 '\u{eb}',
6147 '\u{e8}',
6148 '\u{ef}',
6149 '\u{ee}',
6150 '\u{388}',
6151 '\u{c4}',
6152 '\u{389}',
6153 '\u{38a}',
6154 char::REPLACEMENT_CHARACTER,
6155 '\u{38c}',
6156 '\u{f4}',
6157 '\u{f6}',
6158 '\u{38e}',
6159 '\u{fb}',
6160 '\u{f9}',
6161 '\u{38f}',
6162 '\u{d6}',
6163 '\u{dc}',
6164 '\u{3ac}',
6165 '\u{a3}',
6166 '\u{3ad}',
6167 '\u{3ae}',
6168 '\u{3af}',
6169 '\u{3ca}',
6170 '\u{390}',
6171 '\u{3cc}',
6172 '\u{3cd}',
6173 '\u{391}',
6174 '\u{392}',
6175 '\u{393}',
6176 '\u{394}',
6177 '\u{395}',
6178 '\u{396}',
6179 '\u{397}',
6180 '\u{bd}',
6181 '\u{398}',
6182 '\u{399}',
6183 '\u{ab}',
6184 '\u{bb}',
6185 '\u{2591}',
6186 '\u{2592}',
6187 '\u{2593}',
6188 '\u{2502}',
6189 '\u{2524}',
6190 '\u{39a}',
6191 '\u{39b}',
6192 '\u{39c}',
6193 '\u{39d}',
6194 '\u{2563}',
6195 '\u{2551}',
6196 '\u{2557}',
6197 '\u{255d}',
6198 '\u{39e}',
6199 '\u{39f}',
6200 '\u{2510}',
6201 '\u{2514}',
6202 '\u{2534}',
6203 '\u{252c}',
6204 '\u{251c}',
6205 '\u{2500}',
6206 '\u{253c}',
6207 '\u{3a0}',
6208 '\u{3a1}',
6209 '\u{255a}',
6210 '\u{2554}',
6211 '\u{2569}',
6212 '\u{2566}',
6213 '\u{2560}',
6214 '\u{2550}',
6215 '\u{256c}',
6216 '\u{3a3}',
6217 '\u{3a4}',
6218 '\u{3a5}',
6219 '\u{3a6}',
6220 '\u{3a7}',
6221 '\u{3a8}',
6222 '\u{3a9}',
6223 '\u{3b1}',
6224 '\u{3b2}',
6225 '\u{3b3}',
6226 '\u{2518}',
6227 '\u{250c}',
6228 '\u{2588}',
6229 '\u{2584}',
6230 '\u{3b4}',
6231 '\u{3b5}',
6232 '\u{2580}',
6233 '\u{3b6}',
6234 '\u{3b7}',
6235 '\u{3b8}',
6236 '\u{3b9}',
6237 '\u{3ba}',
6238 '\u{3bb}',
6239 '\u{3bc}',
6240 '\u{3bd}',
6241 '\u{3be}',
6242 '\u{3bf}',
6243 '\u{3c0}',
6244 '\u{3c1}',
6245 '\u{3c3}',
6246 '\u{3c2}',
6247 '\u{3c4}',
6248 '\u{b4}',
6249 '\u{ad}',
6250 '\u{b1}',
6251 '\u{3c5}',
6252 '\u{3c6}',
6253 '\u{3c7}',
6254 '\u{a7}',
6255 '\u{3c8}',
6256 '\u{b8}',
6257 '\u{b0}',
6258 '\u{a8}',
6259 '\u{3c9}',
6260 '\u{3cb}',
6261 '\u{3b0}',
6262 '\u{3ce}',
6263 '\u{25a0}',
6264 '\u{a0}',
6265];
6266const IBM_851_ENCODE_TABLE: &[(u16, u8)] = &[
6267 (0, 0),
6268 (1, 1),
6269 (2, 2),
6270 (3, 3),
6271 (4, 4),
6272 (5, 5),
6273 (6, 6),
6274 (7, 7),
6275 (8, 8),
6276 (9, 9),
6277 (10, 10),
6278 (11, 11),
6279 (12, 12),
6280 (13, 13),
6281 (14, 14),
6282 (15, 15),
6283 (16, 16),
6284 (17, 17),
6285 (18, 18),
6286 (19, 19),
6287 (20, 20),
6288 (21, 21),
6289 (22, 22),
6290 (23, 23),
6291 (24, 24),
6292 (25, 25),
6293 (26, 127),
6294 (27, 27),
6295 (28, 26),
6296 (29, 29),
6297 (30, 30),
6298 (31, 31),
6299 (32, 32),
6300 (33, 33),
6301 (34, 34),
6302 (35, 35),
6303 (36, 36),
6304 (37, 37),
6305 (38, 38),
6306 (39, 39),
6307 (40, 40),
6308 (41, 41),
6309 (42, 42),
6310 (43, 43),
6311 (44, 44),
6312 (45, 45),
6313 (46, 46),
6314 (47, 47),
6315 (48, 48),
6316 (49, 49),
6317 (50, 50),
6318 (51, 51),
6319 (52, 52),
6320 (53, 53),
6321 (54, 54),
6322 (55, 55),
6323 (56, 56),
6324 (57, 57),
6325 (58, 58),
6326 (59, 59),
6327 (60, 60),
6328 (61, 61),
6329 (62, 62),
6330 (63, 63),
6331 (64, 64),
6332 (65, 65),
6333 (66, 66),
6334 (67, 67),
6335 (68, 68),
6336 (69, 69),
6337 (70, 70),
6338 (71, 71),
6339 (72, 72),
6340 (73, 73),
6341 (74, 74),
6342 (75, 75),
6343 (76, 76),
6344 (77, 77),
6345 (78, 78),
6346 (79, 79),
6347 (80, 80),
6348 (81, 81),
6349 (82, 82),
6350 (83, 83),
6351 (84, 84),
6352 (85, 85),
6353 (86, 86),
6354 (87, 87),
6355 (88, 88),
6356 (89, 89),
6357 (90, 90),
6358 (91, 91),
6359 (92, 92),
6360 (93, 93),
6361 (94, 94),
6362 (95, 95),
6363 (96, 96),
6364 (97, 97),
6365 (98, 98),
6366 (99, 99),
6367 (100, 100),
6368 (101, 101),
6369 (102, 102),
6370 (103, 103),
6371 (104, 104),
6372 (105, 105),
6373 (106, 106),
6374 (107, 107),
6375 (108, 108),
6376 (109, 109),
6377 (110, 110),
6378 (111, 111),
6379 (112, 112),
6380 (113, 113),
6381 (114, 114),
6382 (115, 115),
6383 (116, 116),
6384 (117, 117),
6385 (118, 118),
6386 (119, 119),
6387 (120, 120),
6388 (121, 121),
6389 (122, 122),
6390 (123, 123),
6391 (124, 124),
6392 (125, 125),
6393 (126, 126),
6394 (127, 28),
6395 (160, 255),
6396 (163, 156),
6397 (167, 245),
6398 (168, 249),
6399 (171, 174),
6400 (173, 240),
6401 (176, 248),
6402 (177, 241),
6403 (180, 239),
6404 (184, 247),
6405 (187, 175),
6406 (189, 171),
6407 (196, 142),
6408 (199, 128),
6409 (214, 153),
6410 (220, 154),
6411 (224, 133),
6412 (226, 131),
6413 (228, 132),
6414 (231, 135),
6415 (232, 138),
6416 (233, 130),
6417 (234, 136),
6418 (235, 137),
6419 (238, 140),
6420 (239, 139),
6421 (244, 147),
6422 (246, 148),
6423 (249, 151),
6424 (251, 150),
6425 (252, 129),
6426 (902, 134),
6427 (904, 141),
6428 (905, 143),
6429 (906, 144),
6430 (908, 146),
6431 (910, 149),
6432 (911, 152),
6433 (912, 161),
6434 (913, 164),
6435 (914, 165),
6436 (915, 166),
6437 (916, 167),
6438 (917, 168),
6439 (918, 169),
6440 (919, 170),
6441 (920, 172),
6442 (921, 173),
6443 (922, 181),
6444 (923, 182),
6445 (924, 183),
6446 (925, 184),
6447 (926, 189),
6448 (927, 190),
6449 (928, 198),
6450 (929, 199),
6451 (931, 207),
6452 (932, 208),
6453 (933, 209),
6454 (934, 210),
6455 (935, 211),
6456 (936, 212),
6457 (937, 213),
6458 (940, 155),
6459 (941, 157),
6460 (942, 158),
6461 (943, 159),
6462 (944, 252),
6463 (945, 214),
6464 (946, 215),
6465 (947, 216),
6466 (948, 221),
6467 (949, 222),
6468 (950, 224),
6469 (951, 225),
6470 (952, 226),
6471 (953, 227),
6472 (954, 228),
6473 (955, 229),
6474 (956, 230),
6475 (957, 231),
6476 (958, 232),
6477 (959, 233),
6478 (960, 234),
6479 (961, 235),
6480 (962, 237),
6481 (963, 236),
6482 (964, 238),
6483 (965, 242),
6484 (966, 243),
6485 (967, 244),
6486 (968, 246),
6487 (969, 250),
6488 (970, 160),
6489 (971, 251),
6490 (972, 162),
6491 (973, 163),
6492 (974, 253),
6493 (9472, 196),
6494 (9474, 179),
6495 (9484, 218),
6496 (9488, 191),
6497 (9492, 192),
6498 (9496, 217),
6499 (9500, 195),
6500 (9508, 180),
6501 (9516, 194),
6502 (9524, 193),
6503 (9532, 197),
6504 (9552, 205),
6505 (9553, 186),
6506 (9556, 201),
6507 (9559, 187),
6508 (9562, 200),
6509 (9565, 188),
6510 (9568, 204),
6511 (9571, 185),
6512 (9574, 203),
6513 (9577, 202),
6514 (9580, 206),
6515 (9600, 223),
6516 (9604, 220),
6517 (9608, 219),
6518 (9617, 176),
6519 (9618, 177),
6520 (9619, 178),
6521 (9632, 254),
6522];
6523
6524impl_ebcdic_encoder_and_decoder!(
6525 IBM852,
6526 "IBM852",
6527 IBM852Encoder,
6528 IBM852Decoder,
6529 IBM_852_ENCODE_TABLE,
6530 IBM_852_DECODE_TABLE
6531);
6532const IBM_852_DECODE_TABLE: [char; 256] = [
6533 '\u{0}',
6534 '\u{1}',
6535 '\u{2}',
6536 '\u{3}',
6537 '\u{4}',
6538 '\u{5}',
6539 '\u{6}',
6540 '\u{7}',
6541 '\u{8}',
6542 '\u{9}',
6543 '\u{a}',
6544 '\u{b}',
6545 '\u{c}',
6546 '\u{d}',
6547 '\u{e}',
6548 '\u{f}',
6549 '\u{10}',
6550 '\u{11}',
6551 '\u{12}',
6552 '\u{13}',
6553 '\u{14}',
6554 '\u{15}',
6555 '\u{16}',
6556 '\u{17}',
6557 '\u{18}',
6558 '\u{19}',
6559 '\u{1c}',
6560 '\u{1b}',
6561 '\u{7f}',
6562 '\u{1d}',
6563 '\u{1e}',
6564 '\u{1f}',
6565 '\u{20}',
6566 '\u{21}',
6567 '\u{22}',
6568 '\u{23}',
6569 '\u{24}',
6570 '\u{25}',
6571 '\u{26}',
6572 '\u{27}',
6573 '\u{28}',
6574 '\u{29}',
6575 '\u{2a}',
6576 '\u{2b}',
6577 '\u{2c}',
6578 '\u{2d}',
6579 '\u{2e}',
6580 '\u{2f}',
6581 '\u{30}',
6582 '\u{31}',
6583 '\u{32}',
6584 '\u{33}',
6585 '\u{34}',
6586 '\u{35}',
6587 '\u{36}',
6588 '\u{37}',
6589 '\u{38}',
6590 '\u{39}',
6591 '\u{3a}',
6592 '\u{3b}',
6593 '\u{3c}',
6594 '\u{3d}',
6595 '\u{3e}',
6596 '\u{3f}',
6597 '\u{40}',
6598 '\u{41}',
6599 '\u{42}',
6600 '\u{43}',
6601 '\u{44}',
6602 '\u{45}',
6603 '\u{46}',
6604 '\u{47}',
6605 '\u{48}',
6606 '\u{49}',
6607 '\u{4a}',
6608 '\u{4b}',
6609 '\u{4c}',
6610 '\u{4d}',
6611 '\u{4e}',
6612 '\u{4f}',
6613 '\u{50}',
6614 '\u{51}',
6615 '\u{52}',
6616 '\u{53}',
6617 '\u{54}',
6618 '\u{55}',
6619 '\u{56}',
6620 '\u{57}',
6621 '\u{58}',
6622 '\u{59}',
6623 '\u{5a}',
6624 '\u{5b}',
6625 '\u{5c}',
6626 '\u{5d}',
6627 '\u{5e}',
6628 '\u{5f}',
6629 '\u{60}',
6630 '\u{61}',
6631 '\u{62}',
6632 '\u{63}',
6633 '\u{64}',
6634 '\u{65}',
6635 '\u{66}',
6636 '\u{67}',
6637 '\u{68}',
6638 '\u{69}',
6639 '\u{6a}',
6640 '\u{6b}',
6641 '\u{6c}',
6642 '\u{6d}',
6643 '\u{6e}',
6644 '\u{6f}',
6645 '\u{70}',
6646 '\u{71}',
6647 '\u{72}',
6648 '\u{73}',
6649 '\u{74}',
6650 '\u{75}',
6651 '\u{76}',
6652 '\u{77}',
6653 '\u{78}',
6654 '\u{79}',
6655 '\u{7a}',
6656 '\u{7b}',
6657 '\u{7c}',
6658 '\u{7d}',
6659 '\u{7e}',
6660 '\u{1a}',
6661 '\u{c7}',
6662 '\u{fc}',
6663 '\u{e9}',
6664 '\u{e2}',
6665 '\u{e4}',
6666 '\u{16f}',
6667 '\u{107}',
6668 '\u{e7}',
6669 '\u{142}',
6670 '\u{eb}',
6671 '\u{150}',
6672 '\u{151}',
6673 '\u{ee}',
6674 '\u{179}',
6675 '\u{c4}',
6676 '\u{106}',
6677 '\u{c9}',
6678 '\u{139}',
6679 '\u{13a}',
6680 '\u{f4}',
6681 '\u{f6}',
6682 '\u{13d}',
6683 '\u{13e}',
6684 '\u{15a}',
6685 '\u{15b}',
6686 '\u{d6}',
6687 '\u{dc}',
6688 '\u{164}',
6689 '\u{165}',
6690 '\u{141}',
6691 '\u{d7}',
6692 '\u{10d}',
6693 '\u{e1}',
6694 '\u{ed}',
6695 '\u{f3}',
6696 '\u{fa}',
6697 '\u{104}',
6698 '\u{105}',
6699 '\u{17d}',
6700 '\u{17e}',
6701 '\u{118}',
6702 '\u{119}',
6703 char::REPLACEMENT_CHARACTER,
6704 '\u{17a}',
6705 '\u{10c}',
6706 '\u{15f}',
6707 '\u{ab}',
6708 '\u{bb}',
6709 '\u{2591}',
6710 '\u{2592}',
6711 '\u{2593}',
6712 '\u{2502}',
6713 '\u{2524}',
6714 '\u{c1}',
6715 '\u{c2}',
6716 '\u{11a}',
6717 '\u{15e}',
6718 '\u{2563}',
6719 '\u{2551}',
6720 '\u{2557}',
6721 '\u{255d}',
6722 '\u{17b}',
6723 '\u{17c}',
6724 '\u{2510}',
6725 '\u{2514}',
6726 '\u{2534}',
6727 '\u{252c}',
6728 '\u{251c}',
6729 '\u{2500}',
6730 '\u{253c}',
6731 '\u{102}',
6732 '\u{103}',
6733 '\u{255a}',
6734 '\u{2554}',
6735 '\u{2569}',
6736 '\u{2566}',
6737 '\u{2560}',
6738 '\u{2550}',
6739 '\u{256c}',
6740 '\u{a4}',
6741 '\u{111}',
6742 '\u{110}',
6743 '\u{10e}',
6744 '\u{cb}',
6745 '\u{10f}',
6746 '\u{147}',
6747 '\u{cd}',
6748 '\u{ce}',
6749 '\u{11b}',
6750 '\u{2518}',
6751 '\u{250c}',
6752 '\u{2588}',
6753 '\u{2584}',
6754 '\u{162}',
6755 '\u{16e}',
6756 '\u{2580}',
6757 '\u{d3}',
6758 '\u{df}',
6759 '\u{d4}',
6760 '\u{143}',
6761 '\u{144}',
6762 '\u{148}',
6763 '\u{160}',
6764 '\u{161}',
6765 '\u{154}',
6766 '\u{da}',
6767 '\u{155}',
6768 '\u{170}',
6769 '\u{fd}',
6770 '\u{dd}',
6771 '\u{163}',
6772 '\u{b4}',
6773 '\u{ad}',
6774 '\u{2dd}',
6775 '\u{2db}',
6776 '\u{2c7}',
6777 '\u{2d8}',
6778 '\u{a7}',
6779 '\u{f7}',
6780 '\u{b8}',
6781 '\u{b0}',
6782 '\u{a8}',
6783 '\u{2d9}',
6784 '\u{171}',
6785 '\u{158}',
6786 '\u{159}',
6787 '\u{25a0}',
6788 '\u{a0}',
6789];
6790const IBM_852_ENCODE_TABLE: &[(u16, u8)] = &[
6791 (0, 0),
6792 (1, 1),
6793 (2, 2),
6794 (3, 3),
6795 (4, 4),
6796 (5, 5),
6797 (6, 6),
6798 (7, 7),
6799 (8, 8),
6800 (9, 9),
6801 (10, 10),
6802 (11, 11),
6803 (12, 12),
6804 (13, 13),
6805 (14, 14),
6806 (15, 15),
6807 (16, 16),
6808 (17, 17),
6809 (18, 18),
6810 (19, 19),
6811 (20, 20),
6812 (21, 21),
6813 (22, 22),
6814 (23, 23),
6815 (24, 24),
6816 (25, 25),
6817 (26, 127),
6818 (27, 27),
6819 (28, 26),
6820 (29, 29),
6821 (30, 30),
6822 (31, 31),
6823 (32, 32),
6824 (33, 33),
6825 (34, 34),
6826 (35, 35),
6827 (36, 36),
6828 (37, 37),
6829 (38, 38),
6830 (39, 39),
6831 (40, 40),
6832 (41, 41),
6833 (42, 42),
6834 (43, 43),
6835 (44, 44),
6836 (45, 45),
6837 (46, 46),
6838 (47, 47),
6839 (48, 48),
6840 (49, 49),
6841 (50, 50),
6842 (51, 51),
6843 (52, 52),
6844 (53, 53),
6845 (54, 54),
6846 (55, 55),
6847 (56, 56),
6848 (57, 57),
6849 (58, 58),
6850 (59, 59),
6851 (60, 60),
6852 (61, 61),
6853 (62, 62),
6854 (63, 63),
6855 (64, 64),
6856 (65, 65),
6857 (66, 66),
6858 (67, 67),
6859 (68, 68),
6860 (69, 69),
6861 (70, 70),
6862 (71, 71),
6863 (72, 72),
6864 (73, 73),
6865 (74, 74),
6866 (75, 75),
6867 (76, 76),
6868 (77, 77),
6869 (78, 78),
6870 (79, 79),
6871 (80, 80),
6872 (81, 81),
6873 (82, 82),
6874 (83, 83),
6875 (84, 84),
6876 (85, 85),
6877 (86, 86),
6878 (87, 87),
6879 (88, 88),
6880 (89, 89),
6881 (90, 90),
6882 (91, 91),
6883 (92, 92),
6884 (93, 93),
6885 (94, 94),
6886 (95, 95),
6887 (96, 96),
6888 (97, 97),
6889 (98, 98),
6890 (99, 99),
6891 (100, 100),
6892 (101, 101),
6893 (102, 102),
6894 (103, 103),
6895 (104, 104),
6896 (105, 105),
6897 (106, 106),
6898 (107, 107),
6899 (108, 108),
6900 (109, 109),
6901 (110, 110),
6902 (111, 111),
6903 (112, 112),
6904 (113, 113),
6905 (114, 114),
6906 (115, 115),
6907 (116, 116),
6908 (117, 117),
6909 (118, 118),
6910 (119, 119),
6911 (120, 120),
6912 (121, 121),
6913 (122, 122),
6914 (123, 123),
6915 (124, 124),
6916 (125, 125),
6917 (126, 126),
6918 (127, 28),
6919 (160, 255),
6920 (164, 207),
6921 (167, 245),
6922 (168, 249),
6923 (171, 174),
6924 (173, 240),
6925 (176, 248),
6926 (180, 239),
6927 (184, 247),
6928 (187, 175),
6929 (193, 181),
6930 (194, 182),
6931 (196, 142),
6932 (199, 128),
6933 (201, 144),
6934 (203, 211),
6935 (205, 214),
6936 (206, 215),
6937 (211, 224),
6938 (212, 226),
6939 (214, 153),
6940 (215, 158),
6941 (218, 233),
6942 (220, 154),
6943 (221, 237),
6944 (223, 225),
6945 (225, 160),
6946 (226, 131),
6947 (228, 132),
6948 (231, 135),
6949 (233, 130),
6950 (235, 137),
6951 (237, 161),
6952 (238, 140),
6953 (243, 162),
6954 (244, 147),
6955 (246, 148),
6956 (247, 246),
6957 (250, 163),
6958 (252, 129),
6959 (253, 236),
6960 (258, 198),
6961 (259, 199),
6962 (260, 164),
6963 (261, 165),
6964 (262, 143),
6965 (263, 134),
6966 (268, 172),
6967 (269, 159),
6968 (270, 210),
6969 (271, 212),
6970 (272, 209),
6971 (273, 208),
6972 (280, 168),
6973 (281, 169),
6974 (282, 183),
6975 (283, 216),
6976 (313, 145),
6977 (314, 146),
6978 (317, 149),
6979 (318, 150),
6980 (321, 157),
6981 (322, 136),
6982 (323, 227),
6983 (324, 228),
6984 (327, 213),
6985 (328, 229),
6986 (336, 138),
6987 (337, 139),
6988 (340, 232),
6989 (341, 234),
6990 (344, 252),
6991 (345, 253),
6992 (346, 151),
6993 (347, 152),
6994 (350, 184),
6995 (351, 173),
6996 (352, 230),
6997 (353, 231),
6998 (354, 221),
6999 (355, 238),
7000 (356, 155),
7001 (357, 156),
7002 (366, 222),
7003 (367, 133),
7004 (368, 235),
7005 (369, 251),
7006 (377, 141),
7007 (378, 171),
7008 (379, 189),
7009 (380, 190),
7010 (381, 166),
7011 (382, 167),
7012 (711, 243),
7013 (728, 244),
7014 (729, 250),
7015 (731, 242),
7016 (733, 241),
7017 (9472, 196),
7018 (9474, 179),
7019 (9484, 218),
7020 (9488, 191),
7021 (9492, 192),
7022 (9496, 217),
7023 (9500, 195),
7024 (9508, 180),
7025 (9516, 194),
7026 (9524, 193),
7027 (9532, 197),
7028 (9552, 205),
7029 (9553, 186),
7030 (9556, 201),
7031 (9559, 187),
7032 (9562, 200),
7033 (9565, 188),
7034 (9568, 204),
7035 (9571, 185),
7036 (9574, 203),
7037 (9577, 202),
7038 (9580, 206),
7039 (9600, 223),
7040 (9604, 220),
7041 (9608, 219),
7042 (9617, 176),
7043 (9618, 177),
7044 (9619, 178),
7045 (9632, 254),
7046];
7047
7048impl_ebcdic_encoder_and_decoder!(
7049 IBM855,
7050 "IBM855",
7051 IBM855Encoder,
7052 IBM855Decoder,
7053 IBM_855_ENCODE_TABLE,
7054 IBM_855_DECODE_TABLE
7055);
7056const IBM_855_DECODE_TABLE: [char; 256] = [
7057 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7058 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7059 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7060 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7061 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7062 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7063 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7064 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7065 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7066 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7067 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7068 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7069 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7070 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7071 '\u{452}', '\u{402}', '\u{453}', '\u{403}', '\u{451}', '\u{401}', '\u{454}', '\u{404}',
7072 '\u{455}', '\u{405}', '\u{456}', '\u{406}', '\u{457}', '\u{407}', '\u{458}', '\u{408}',
7073 '\u{459}', '\u{409}', '\u{45a}', '\u{40a}', '\u{45b}', '\u{40b}', '\u{45c}', '\u{40c}',
7074 '\u{45e}', '\u{40e}', '\u{45f}', '\u{40f}', '\u{44e}', '\u{42e}', '\u{44a}', '\u{42a}',
7075 '\u{430}', '\u{410}', '\u{431}', '\u{411}', '\u{446}', '\u{426}', '\u{434}', '\u{414}',
7076 '\u{435}', '\u{415}', '\u{444}', '\u{424}', '\u{433}', '\u{413}', '\u{ab}', '\u{bb}',
7077 '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}', '\u{445}', '\u{425}', '\u{438}',
7078 '\u{418}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}', '\u{439}', '\u{419}', '\u{2510}',
7079 '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}', '\u{253c}', '\u{43a}', '\u{41a}',
7080 '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{a4}',
7081 '\u{43b}', '\u{41b}', '\u{43c}', '\u{41c}', '\u{43d}', '\u{41d}', '\u{43e}', '\u{41e}',
7082 '\u{43f}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{41f}', '\u{44f}', '\u{2580}',
7083 '\u{42f}', '\u{440}', '\u{420}', '\u{441}', '\u{421}', '\u{442}', '\u{422}', '\u{443}',
7084 '\u{423}', '\u{436}', '\u{416}', '\u{432}', '\u{412}', '\u{44c}', '\u{42c}', '\u{2116}',
7085 '\u{ad}', '\u{44b}', '\u{42b}', '\u{437}', '\u{417}', '\u{448}', '\u{428}', '\u{44d}',
7086 '\u{42d}', '\u{449}', '\u{429}', '\u{447}', '\u{427}', '\u{a7}', '\u{25a0}', '\u{a0}',
7087];
7088const IBM_855_ENCODE_TABLE: &[(u16, u8)] = &[
7089 (0, 0),
7090 (1, 1),
7091 (2, 2),
7092 (3, 3),
7093 (4, 4),
7094 (5, 5),
7095 (6, 6),
7096 (7, 7),
7097 (8, 8),
7098 (9, 9),
7099 (10, 10),
7100 (11, 11),
7101 (12, 12),
7102 (13, 13),
7103 (14, 14),
7104 (15, 15),
7105 (16, 16),
7106 (17, 17),
7107 (18, 18),
7108 (19, 19),
7109 (20, 20),
7110 (21, 21),
7111 (22, 22),
7112 (23, 23),
7113 (24, 24),
7114 (25, 25),
7115 (26, 127),
7116 (27, 27),
7117 (28, 26),
7118 (29, 29),
7119 (30, 30),
7120 (31, 31),
7121 (32, 32),
7122 (33, 33),
7123 (34, 34),
7124 (35, 35),
7125 (36, 36),
7126 (37, 37),
7127 (38, 38),
7128 (39, 39),
7129 (40, 40),
7130 (41, 41),
7131 (42, 42),
7132 (43, 43),
7133 (44, 44),
7134 (45, 45),
7135 (46, 46),
7136 (47, 47),
7137 (48, 48),
7138 (49, 49),
7139 (50, 50),
7140 (51, 51),
7141 (52, 52),
7142 (53, 53),
7143 (54, 54),
7144 (55, 55),
7145 (56, 56),
7146 (57, 57),
7147 (58, 58),
7148 (59, 59),
7149 (60, 60),
7150 (61, 61),
7151 (62, 62),
7152 (63, 63),
7153 (64, 64),
7154 (65, 65),
7155 (66, 66),
7156 (67, 67),
7157 (68, 68),
7158 (69, 69),
7159 (70, 70),
7160 (71, 71),
7161 (72, 72),
7162 (73, 73),
7163 (74, 74),
7164 (75, 75),
7165 (76, 76),
7166 (77, 77),
7167 (78, 78),
7168 (79, 79),
7169 (80, 80),
7170 (81, 81),
7171 (82, 82),
7172 (83, 83),
7173 (84, 84),
7174 (85, 85),
7175 (86, 86),
7176 (87, 87),
7177 (88, 88),
7178 (89, 89),
7179 (90, 90),
7180 (91, 91),
7181 (92, 92),
7182 (93, 93),
7183 (94, 94),
7184 (95, 95),
7185 (96, 96),
7186 (97, 97),
7187 (98, 98),
7188 (99, 99),
7189 (100, 100),
7190 (101, 101),
7191 (102, 102),
7192 (103, 103),
7193 (104, 104),
7194 (105, 105),
7195 (106, 106),
7196 (107, 107),
7197 (108, 108),
7198 (109, 109),
7199 (110, 110),
7200 (111, 111),
7201 (112, 112),
7202 (113, 113),
7203 (114, 114),
7204 (115, 115),
7205 (116, 116),
7206 (117, 117),
7207 (118, 118),
7208 (119, 119),
7209 (120, 120),
7210 (121, 121),
7211 (122, 122),
7212 (123, 123),
7213 (124, 124),
7214 (125, 125),
7215 (126, 126),
7216 (127, 28),
7217 (160, 255),
7218 (164, 207),
7219 (167, 253),
7220 (171, 174),
7221 (173, 240),
7222 (187, 175),
7223 (1025, 133),
7224 (1026, 129),
7225 (1027, 131),
7226 (1028, 135),
7227 (1029, 137),
7228 (1030, 139),
7229 (1031, 141),
7230 (1032, 143),
7231 (1033, 145),
7232 (1034, 147),
7233 (1035, 149),
7234 (1036, 151),
7235 (1038, 153),
7236 (1039, 155),
7237 (1040, 161),
7238 (1041, 163),
7239 (1042, 236),
7240 (1043, 173),
7241 (1044, 167),
7242 (1045, 169),
7243 (1046, 234),
7244 (1047, 244),
7245 (1048, 184),
7246 (1049, 190),
7247 (1050, 199),
7248 (1051, 209),
7249 (1052, 211),
7250 (1053, 213),
7251 (1054, 215),
7252 (1055, 221),
7253 (1056, 226),
7254 (1057, 228),
7255 (1058, 230),
7256 (1059, 232),
7257 (1060, 171),
7258 (1061, 182),
7259 (1062, 165),
7260 (1063, 252),
7261 (1064, 246),
7262 (1065, 250),
7263 (1066, 159),
7264 (1067, 242),
7265 (1068, 238),
7266 (1069, 248),
7267 (1070, 157),
7268 (1071, 224),
7269 (1072, 160),
7270 (1073, 162),
7271 (1074, 235),
7272 (1075, 172),
7273 (1076, 166),
7274 (1077, 168),
7275 (1078, 233),
7276 (1079, 243),
7277 (1080, 183),
7278 (1081, 189),
7279 (1082, 198),
7280 (1083, 208),
7281 (1084, 210),
7282 (1085, 212),
7283 (1086, 214),
7284 (1087, 216),
7285 (1088, 225),
7286 (1089, 227),
7287 (1090, 229),
7288 (1091, 231),
7289 (1092, 170),
7290 (1093, 181),
7291 (1094, 164),
7292 (1095, 251),
7293 (1096, 245),
7294 (1097, 249),
7295 (1098, 158),
7296 (1099, 241),
7297 (1100, 237),
7298 (1101, 247),
7299 (1102, 156),
7300 (1103, 222),
7301 (1105, 132),
7302 (1106, 128),
7303 (1107, 130),
7304 (1108, 134),
7305 (1109, 136),
7306 (1110, 138),
7307 (1111, 140),
7308 (1112, 142),
7309 (1113, 144),
7310 (1114, 146),
7311 (1115, 148),
7312 (1116, 150),
7313 (1118, 152),
7314 (1119, 154),
7315 (8470, 239),
7316 (9472, 196),
7317 (9474, 179),
7318 (9484, 218),
7319 (9488, 191),
7320 (9492, 192),
7321 (9496, 217),
7322 (9500, 195),
7323 (9508, 180),
7324 (9516, 194),
7325 (9524, 193),
7326 (9532, 197),
7327 (9552, 205),
7328 (9553, 186),
7329 (9556, 201),
7330 (9559, 187),
7331 (9562, 200),
7332 (9565, 188),
7333 (9568, 204),
7334 (9571, 185),
7335 (9574, 203),
7336 (9577, 202),
7337 (9580, 206),
7338 (9600, 223),
7339 (9604, 220),
7340 (9608, 219),
7341 (9617, 176),
7342 (9618, 177),
7343 (9619, 178),
7344 (9632, 254),
7345];
7346
7347impl_ebcdic_encoder_and_decoder!(
7348 IBM857,
7349 "IBM857",
7350 IBM857Encoder,
7351 IBM857Decoder,
7352 IBM_857_ENCODE_TABLE,
7353 IBM_857_DECODE_TABLE
7354);
7355const IBM_857_DECODE_TABLE: [char; 256] = [
7356 '\u{0}',
7357 '\u{1}',
7358 '\u{2}',
7359 '\u{3}',
7360 '\u{4}',
7361 '\u{5}',
7362 '\u{6}',
7363 '\u{7}',
7364 '\u{8}',
7365 '\u{9}',
7366 '\u{a}',
7367 '\u{b}',
7368 '\u{c}',
7369 '\u{d}',
7370 '\u{e}',
7371 '\u{f}',
7372 '\u{10}',
7373 '\u{11}',
7374 '\u{12}',
7375 '\u{13}',
7376 '\u{14}',
7377 '\u{15}',
7378 '\u{16}',
7379 '\u{17}',
7380 '\u{18}',
7381 '\u{19}',
7382 '\u{1c}',
7383 '\u{1b}',
7384 '\u{7f}',
7385 '\u{1d}',
7386 '\u{1e}',
7387 '\u{1f}',
7388 '\u{20}',
7389 '\u{21}',
7390 '\u{22}',
7391 '\u{23}',
7392 '\u{24}',
7393 '\u{25}',
7394 '\u{26}',
7395 '\u{27}',
7396 '\u{28}',
7397 '\u{29}',
7398 '\u{2a}',
7399 '\u{2b}',
7400 '\u{2c}',
7401 '\u{2d}',
7402 '\u{2e}',
7403 '\u{2f}',
7404 '\u{30}',
7405 '\u{31}',
7406 '\u{32}',
7407 '\u{33}',
7408 '\u{34}',
7409 '\u{35}',
7410 '\u{36}',
7411 '\u{37}',
7412 '\u{38}',
7413 '\u{39}',
7414 '\u{3a}',
7415 '\u{3b}',
7416 '\u{3c}',
7417 '\u{3d}',
7418 '\u{3e}',
7419 '\u{3f}',
7420 '\u{40}',
7421 '\u{41}',
7422 '\u{42}',
7423 '\u{43}',
7424 '\u{44}',
7425 '\u{45}',
7426 '\u{46}',
7427 '\u{47}',
7428 '\u{48}',
7429 '\u{49}',
7430 '\u{4a}',
7431 '\u{4b}',
7432 '\u{4c}',
7433 '\u{4d}',
7434 '\u{4e}',
7435 '\u{4f}',
7436 '\u{50}',
7437 '\u{51}',
7438 '\u{52}',
7439 '\u{53}',
7440 '\u{54}',
7441 '\u{55}',
7442 '\u{56}',
7443 '\u{57}',
7444 '\u{58}',
7445 '\u{59}',
7446 '\u{5a}',
7447 '\u{5b}',
7448 '\u{5c}',
7449 '\u{5d}',
7450 '\u{5e}',
7451 '\u{5f}',
7452 '\u{60}',
7453 '\u{61}',
7454 '\u{62}',
7455 '\u{63}',
7456 '\u{64}',
7457 '\u{65}',
7458 '\u{66}',
7459 '\u{67}',
7460 '\u{68}',
7461 '\u{69}',
7462 '\u{6a}',
7463 '\u{6b}',
7464 '\u{6c}',
7465 '\u{6d}',
7466 '\u{6e}',
7467 '\u{6f}',
7468 '\u{70}',
7469 '\u{71}',
7470 '\u{72}',
7471 '\u{73}',
7472 '\u{74}',
7473 '\u{75}',
7474 '\u{76}',
7475 '\u{77}',
7476 '\u{78}',
7477 '\u{79}',
7478 '\u{7a}',
7479 '\u{7b}',
7480 '\u{7c}',
7481 '\u{7d}',
7482 '\u{7e}',
7483 '\u{1a}',
7484 '\u{c7}',
7485 '\u{fc}',
7486 '\u{e9}',
7487 '\u{e2}',
7488 '\u{e4}',
7489 '\u{e0}',
7490 '\u{e5}',
7491 '\u{e7}',
7492 '\u{ea}',
7493 '\u{eb}',
7494 '\u{e8}',
7495 '\u{ef}',
7496 '\u{ee}',
7497 '\u{131}',
7498 '\u{c4}',
7499 '\u{c5}',
7500 '\u{c9}',
7501 '\u{e6}',
7502 '\u{c6}',
7503 '\u{f4}',
7504 '\u{f6}',
7505 '\u{f2}',
7506 '\u{fb}',
7507 '\u{f9}',
7508 '\u{130}',
7509 '\u{d6}',
7510 '\u{dc}',
7511 '\u{f8}',
7512 '\u{a3}',
7513 '\u{d8}',
7514 '\u{15e}',
7515 '\u{15f}',
7516 '\u{e1}',
7517 '\u{ed}',
7518 '\u{f3}',
7519 '\u{fa}',
7520 '\u{f1}',
7521 '\u{d1}',
7522 '\u{11e}',
7523 '\u{11f}',
7524 '\u{bf}',
7525 '\u{ae}',
7526 '\u{ac}',
7527 '\u{bd}',
7528 '\u{bc}',
7529 '\u{a1}',
7530 '\u{ab}',
7531 '\u{bb}',
7532 '\u{2591}',
7533 '\u{2592}',
7534 '\u{2593}',
7535 '\u{2502}',
7536 '\u{2524}',
7537 '\u{c1}',
7538 '\u{c2}',
7539 '\u{c0}',
7540 '\u{a9}',
7541 '\u{2563}',
7542 '\u{2551}',
7543 '\u{2557}',
7544 '\u{255d}',
7545 '\u{a2}',
7546 '\u{a5}',
7547 '\u{2510}',
7548 '\u{2514}',
7549 '\u{2534}',
7550 '\u{252c}',
7551 '\u{251c}',
7552 '\u{2500}',
7553 '\u{253c}',
7554 '\u{e3}',
7555 '\u{c3}',
7556 '\u{255a}',
7557 '\u{2554}',
7558 '\u{2569}',
7559 '\u{2566}',
7560 '\u{2560}',
7561 '\u{2550}',
7562 '\u{256c}',
7563 '\u{a4}',
7564 '\u{ba}',
7565 '\u{aa}',
7566 '\u{ca}',
7567 '\u{cb}',
7568 '\u{c8}',
7569 char::REPLACEMENT_CHARACTER,
7570 '\u{cd}',
7571 '\u{ce}',
7572 '\u{cf}',
7573 '\u{2518}',
7574 '\u{250c}',
7575 '\u{2588}',
7576 '\u{2584}',
7577 '\u{a6}',
7578 '\u{cc}',
7579 '\u{2580}',
7580 '\u{d3}',
7581 '\u{df}',
7582 '\u{d4}',
7583 '\u{d2}',
7584 '\u{f5}',
7585 '\u{d5}',
7586 '\u{b5}',
7587 char::REPLACEMENT_CHARACTER,
7588 '\u{d7}',
7589 '\u{da}',
7590 '\u{db}',
7591 '\u{d9}',
7592 '\u{ec}',
7593 '\u{ff}',
7594 '\u{af}',
7595 '\u{b4}',
7596 '\u{ad}',
7597 '\u{b1}',
7598 char::REPLACEMENT_CHARACTER,
7599 '\u{be}',
7600 '\u{b6}',
7601 '\u{a7}',
7602 '\u{f7}',
7603 '\u{b8}',
7604 '\u{b0}',
7605 '\u{a8}',
7606 '\u{b7}',
7607 '\u{b9}',
7608 '\u{b3}',
7609 '\u{b2}',
7610 '\u{25a0}',
7611 '\u{a0}',
7612];
7613const IBM_857_ENCODE_TABLE: &[(u16, u8)] = &[
7614 (0, 0),
7615 (1, 1),
7616 (2, 2),
7617 (3, 3),
7618 (4, 4),
7619 (5, 5),
7620 (6, 6),
7621 (7, 7),
7622 (8, 8),
7623 (9, 9),
7624 (10, 10),
7625 (11, 11),
7626 (12, 12),
7627 (13, 13),
7628 (14, 14),
7629 (15, 15),
7630 (16, 16),
7631 (17, 17),
7632 (18, 18),
7633 (19, 19),
7634 (20, 20),
7635 (21, 21),
7636 (22, 22),
7637 (23, 23),
7638 (24, 24),
7639 (25, 25),
7640 (26, 127),
7641 (27, 27),
7642 (28, 26),
7643 (29, 29),
7644 (30, 30),
7645 (31, 31),
7646 (32, 32),
7647 (33, 33),
7648 (34, 34),
7649 (35, 35),
7650 (36, 36),
7651 (37, 37),
7652 (38, 38),
7653 (39, 39),
7654 (40, 40),
7655 (41, 41),
7656 (42, 42),
7657 (43, 43),
7658 (44, 44),
7659 (45, 45),
7660 (46, 46),
7661 (47, 47),
7662 (48, 48),
7663 (49, 49),
7664 (50, 50),
7665 (51, 51),
7666 (52, 52),
7667 (53, 53),
7668 (54, 54),
7669 (55, 55),
7670 (56, 56),
7671 (57, 57),
7672 (58, 58),
7673 (59, 59),
7674 (60, 60),
7675 (61, 61),
7676 (62, 62),
7677 (63, 63),
7678 (64, 64),
7679 (65, 65),
7680 (66, 66),
7681 (67, 67),
7682 (68, 68),
7683 (69, 69),
7684 (70, 70),
7685 (71, 71),
7686 (72, 72),
7687 (73, 73),
7688 (74, 74),
7689 (75, 75),
7690 (76, 76),
7691 (77, 77),
7692 (78, 78),
7693 (79, 79),
7694 (80, 80),
7695 (81, 81),
7696 (82, 82),
7697 (83, 83),
7698 (84, 84),
7699 (85, 85),
7700 (86, 86),
7701 (87, 87),
7702 (88, 88),
7703 (89, 89),
7704 (90, 90),
7705 (91, 91),
7706 (92, 92),
7707 (93, 93),
7708 (94, 94),
7709 (95, 95),
7710 (96, 96),
7711 (97, 97),
7712 (98, 98),
7713 (99, 99),
7714 (100, 100),
7715 (101, 101),
7716 (102, 102),
7717 (103, 103),
7718 (104, 104),
7719 (105, 105),
7720 (106, 106),
7721 (107, 107),
7722 (108, 108),
7723 (109, 109),
7724 (110, 110),
7725 (111, 111),
7726 (112, 112),
7727 (113, 113),
7728 (114, 114),
7729 (115, 115),
7730 (116, 116),
7731 (117, 117),
7732 (118, 118),
7733 (119, 119),
7734 (120, 120),
7735 (121, 121),
7736 (122, 122),
7737 (123, 123),
7738 (124, 124),
7739 (125, 125),
7740 (126, 126),
7741 (127, 28),
7742 (160, 255),
7743 (161, 173),
7744 (162, 189),
7745 (163, 156),
7746 (164, 207),
7747 (165, 190),
7748 (166, 221),
7749 (167, 245),
7750 (168, 249),
7751 (169, 184),
7752 (170, 209),
7753 (171, 174),
7754 (172, 170),
7755 (173, 240),
7756 (174, 169),
7757 (175, 238),
7758 (176, 248),
7759 (177, 241),
7760 (178, 253),
7761 (179, 252),
7762 (180, 239),
7763 (181, 230),
7764 (182, 244),
7765 (183, 250),
7766 (184, 247),
7767 (185, 251),
7768 (186, 208),
7769 (187, 175),
7770 (188, 172),
7771 (189, 171),
7772 (190, 243),
7773 (191, 168),
7774 (192, 183),
7775 (193, 181),
7776 (194, 182),
7777 (195, 199),
7778 (196, 142),
7779 (197, 143),
7780 (198, 146),
7781 (199, 128),
7782 (200, 212),
7783 (201, 144),
7784 (202, 210),
7785 (203, 211),
7786 (204, 222),
7787 (205, 214),
7788 (206, 215),
7789 (207, 216),
7790 (209, 165),
7791 (210, 227),
7792 (211, 224),
7793 (212, 226),
7794 (213, 229),
7795 (214, 153),
7796 (215, 232),
7797 (216, 157),
7798 (217, 235),
7799 (218, 233),
7800 (219, 234),
7801 (220, 154),
7802 (223, 225),
7803 (224, 133),
7804 (225, 160),
7805 (226, 131),
7806 (227, 198),
7807 (228, 132),
7808 (229, 134),
7809 (230, 145),
7810 (231, 135),
7811 (232, 138),
7812 (233, 130),
7813 (234, 136),
7814 (235, 137),
7815 (236, 236),
7816 (237, 161),
7817 (238, 140),
7818 (239, 139),
7819 (241, 164),
7820 (242, 149),
7821 (243, 162),
7822 (244, 147),
7823 (245, 228),
7824 (246, 148),
7825 (247, 246),
7826 (248, 155),
7827 (249, 151),
7828 (250, 163),
7829 (251, 150),
7830 (252, 129),
7831 (255, 237),
7832 (286, 166),
7833 (287, 167),
7834 (304, 152),
7835 (305, 141),
7836 (350, 158),
7837 (351, 159),
7838 (9472, 196),
7839 (9474, 179),
7840 (9484, 218),
7841 (9488, 191),
7842 (9492, 192),
7843 (9496, 217),
7844 (9500, 195),
7845 (9508, 180),
7846 (9516, 194),
7847 (9524, 193),
7848 (9532, 197),
7849 (9552, 205),
7850 (9553, 186),
7851 (9556, 201),
7852 (9559, 187),
7853 (9562, 200),
7854 (9565, 188),
7855 (9568, 204),
7856 (9571, 185),
7857 (9574, 203),
7858 (9577, 202),
7859 (9580, 206),
7860 (9600, 223),
7861 (9604, 220),
7862 (9608, 219),
7863 (9617, 176),
7864 (9618, 177),
7865 (9619, 178),
7866 (9632, 254),
7867];
7868
7869impl_ebcdic_encoder_and_decoder!(
7870 IBM860,
7871 "IBM860",
7872 IBM860Encoder,
7873 IBM860Decoder,
7874 IBM_860_ENCODE_TABLE,
7875 IBM_860_DECODE_TABLE
7876);
7877const IBM_860_DECODE_TABLE: [char; 256] = [
7878 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7879 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7880 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7881 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7882 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7883 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7884 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7885 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7886 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7887 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7888 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7889 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7890 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7891 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7892 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e3}', '\u{e0}', '\u{c1}', '\u{e7}', '\u{ea}',
7893 '\u{ca}', '\u{e8}', '\u{cd}', '\u{d4}', '\u{ec}', '\u{c3}', '\u{c2}', '\u{c9}', '\u{c0}',
7894 '\u{c8}', '\u{f4}', '\u{f5}', '\u{f2}', '\u{da}', '\u{f9}', '\u{cc}', '\u{d5}', '\u{dc}',
7895 '\u{a2}', '\u{a3}', '\u{d9}', '\u{20a7}', '\u{d3}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
7896 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{d2}', '\u{ac}', '\u{bd}', '\u{bc}',
7897 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
7898 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
7899 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
7900 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
7901 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
7902 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
7903 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
7904 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
7905 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
7906 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
7907 '\u{b2}', '\u{25a0}', '\u{a0}',
7908];
7909const IBM_860_ENCODE_TABLE: &[(u16, u8)] = &[
7910 (0, 0),
7911 (1, 1),
7912 (2, 2),
7913 (3, 3),
7914 (4, 4),
7915 (5, 5),
7916 (6, 6),
7917 (7, 7),
7918 (8, 8),
7919 (9, 9),
7920 (10, 10),
7921 (11, 11),
7922 (12, 12),
7923 (13, 13),
7924 (14, 14),
7925 (15, 15),
7926 (16, 16),
7927 (17, 17),
7928 (18, 18),
7929 (19, 19),
7930 (20, 20),
7931 (21, 21),
7932 (22, 22),
7933 (23, 23),
7934 (24, 24),
7935 (25, 25),
7936 (26, 127),
7937 (27, 27),
7938 (28, 26),
7939 (29, 29),
7940 (30, 30),
7941 (31, 31),
7942 (32, 32),
7943 (33, 33),
7944 (34, 34),
7945 (35, 35),
7946 (36, 36),
7947 (37, 37),
7948 (38, 38),
7949 (39, 39),
7950 (40, 40),
7951 (41, 41),
7952 (42, 42),
7953 (43, 43),
7954 (44, 44),
7955 (45, 45),
7956 (46, 46),
7957 (47, 47),
7958 (48, 48),
7959 (49, 49),
7960 (50, 50),
7961 (51, 51),
7962 (52, 52),
7963 (53, 53),
7964 (54, 54),
7965 (55, 55),
7966 (56, 56),
7967 (57, 57),
7968 (58, 58),
7969 (59, 59),
7970 (60, 60),
7971 (61, 61),
7972 (62, 62),
7973 (63, 63),
7974 (64, 64),
7975 (65, 65),
7976 (66, 66),
7977 (67, 67),
7978 (68, 68),
7979 (69, 69),
7980 (70, 70),
7981 (71, 71),
7982 (72, 72),
7983 (73, 73),
7984 (74, 74),
7985 (75, 75),
7986 (76, 76),
7987 (77, 77),
7988 (78, 78),
7989 (79, 79),
7990 (80, 80),
7991 (81, 81),
7992 (82, 82),
7993 (83, 83),
7994 (84, 84),
7995 (85, 85),
7996 (86, 86),
7997 (87, 87),
7998 (88, 88),
7999 (89, 89),
8000 (90, 90),
8001 (91, 91),
8002 (92, 92),
8003 (93, 93),
8004 (94, 94),
8005 (95, 95),
8006 (96, 96),
8007 (97, 97),
8008 (98, 98),
8009 (99, 99),
8010 (100, 100),
8011 (101, 101),
8012 (102, 102),
8013 (103, 103),
8014 (104, 104),
8015 (105, 105),
8016 (106, 106),
8017 (107, 107),
8018 (108, 108),
8019 (109, 109),
8020 (110, 110),
8021 (111, 111),
8022 (112, 112),
8023 (113, 113),
8024 (114, 114),
8025 (115, 115),
8026 (116, 116),
8027 (117, 117),
8028 (118, 118),
8029 (119, 119),
8030 (120, 120),
8031 (121, 121),
8032 (122, 122),
8033 (123, 123),
8034 (124, 124),
8035 (125, 125),
8036 (126, 126),
8037 (127, 28),
8038 (160, 255),
8039 (161, 173),
8040 (162, 155),
8041 (163, 156),
8042 (170, 166),
8043 (171, 174),
8044 (172, 170),
8045 (176, 248),
8046 (177, 241),
8047 (178, 253),
8048 (183, 250),
8049 (186, 167),
8050 (187, 175),
8051 (188, 172),
8052 (189, 171),
8053 (191, 168),
8054 (192, 145),
8055 (193, 134),
8056 (194, 143),
8057 (195, 142),
8058 (199, 128),
8059 (200, 146),
8060 (201, 144),
8061 (202, 137),
8062 (204, 152),
8063 (205, 139),
8064 (209, 165),
8065 (210, 169),
8066 (211, 159),
8067 (212, 140),
8068 (213, 153),
8069 (217, 157),
8070 (218, 150),
8071 (220, 154),
8072 (223, 225),
8073 (224, 133),
8074 (225, 160),
8075 (226, 131),
8076 (227, 132),
8077 (231, 135),
8078 (232, 138),
8079 (233, 130),
8080 (234, 136),
8081 (236, 141),
8082 (237, 161),
8083 (241, 164),
8084 (242, 149),
8085 (243, 162),
8086 (244, 147),
8087 (245, 148),
8088 (247, 246),
8089 (249, 151),
8090 (250, 163),
8091 (252, 129),
8092 (915, 226),
8093 (920, 233),
8094 (931, 228),
8095 (934, 232),
8096 (937, 234),
8097 (945, 224),
8098 (948, 235),
8099 (949, 238),
8100 (956, 230),
8101 (960, 227),
8102 (963, 229),
8103 (964, 231),
8104 (966, 237),
8105 (8319, 252),
8106 (8359, 158),
8107 (8729, 249),
8108 (8730, 251),
8109 (8734, 236),
8110 (8745, 239),
8111 (8776, 247),
8112 (8801, 240),
8113 (8804, 243),
8114 (8805, 242),
8115 (8992, 244),
8116 (8993, 245),
8117 (9472, 196),
8118 (9474, 179),
8119 (9484, 218),
8120 (9488, 191),
8121 (9492, 192),
8122 (9496, 217),
8123 (9500, 195),
8124 (9508, 180),
8125 (9516, 194),
8126 (9524, 193),
8127 (9532, 197),
8128 (9552, 205),
8129 (9553, 186),
8130 (9554, 213),
8131 (9555, 214),
8132 (9556, 201),
8133 (9557, 184),
8134 (9558, 183),
8135 (9559, 187),
8136 (9560, 212),
8137 (9561, 211),
8138 (9562, 200),
8139 (9563, 190),
8140 (9564, 189),
8141 (9565, 188),
8142 (9566, 198),
8143 (9567, 199),
8144 (9568, 204),
8145 (9569, 181),
8146 (9570, 182),
8147 (9571, 185),
8148 (9572, 209),
8149 (9573, 210),
8150 (9574, 203),
8151 (9575, 207),
8152 (9576, 208),
8153 (9577, 202),
8154 (9578, 216),
8155 (9579, 215),
8156 (9580, 206),
8157 (9600, 223),
8158 (9604, 220),
8159 (9608, 219),
8160 (9612, 221),
8161 (9616, 222),
8162 (9617, 176),
8163 (9618, 177),
8164 (9619, 178),
8165 (9632, 254),
8166];
8167
8168impl_ebcdic_encoder_and_decoder!(
8169 IBM861,
8170 "IBM861",
8171 IBM861Encoder,
8172 IBM861Decoder,
8173 IBM_861_ENCODE_TABLE,
8174 IBM_861_DECODE_TABLE
8175);
8176const IBM_861_DECODE_TABLE: [char; 256] = [
8177 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8178 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8179 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8180 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8181 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8182 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8183 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8184 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8185 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8186 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8187 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8188 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8189 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8190 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8191 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
8192 '\u{eb}', '\u{e8}', '\u{d0}', '\u{f0}', '\u{de}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
8193 '\u{c6}', '\u{f4}', '\u{f6}', '\u{fe}', '\u{fb}', '\u{dd}', '\u{fd}', '\u{d6}', '\u{dc}',
8194 '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
8195 '\u{c1}', '\u{cd}', '\u{d3}', '\u{da}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8196 '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8197 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8198 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8199 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8200 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8201 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8202 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8203 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8204 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8205 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8206 '\u{b2}', '\u{25a0}', '\u{a0}',
8207];
8208const IBM_861_ENCODE_TABLE: &[(u16, u8)] = &[
8209 (0, 0),
8210 (1, 1),
8211 (2, 2),
8212 (3, 3),
8213 (4, 4),
8214 (5, 5),
8215 (6, 6),
8216 (7, 7),
8217 (8, 8),
8218 (9, 9),
8219 (10, 10),
8220 (11, 11),
8221 (12, 12),
8222 (13, 13),
8223 (14, 14),
8224 (15, 15),
8225 (16, 16),
8226 (17, 17),
8227 (18, 18),
8228 (19, 19),
8229 (20, 20),
8230 (21, 21),
8231 (22, 22),
8232 (23, 23),
8233 (24, 24),
8234 (25, 25),
8235 (26, 127),
8236 (27, 27),
8237 (28, 26),
8238 (29, 29),
8239 (30, 30),
8240 (31, 31),
8241 (32, 32),
8242 (33, 33),
8243 (34, 34),
8244 (35, 35),
8245 (36, 36),
8246 (37, 37),
8247 (38, 38),
8248 (39, 39),
8249 (40, 40),
8250 (41, 41),
8251 (42, 42),
8252 (43, 43),
8253 (44, 44),
8254 (45, 45),
8255 (46, 46),
8256 (47, 47),
8257 (48, 48),
8258 (49, 49),
8259 (50, 50),
8260 (51, 51),
8261 (52, 52),
8262 (53, 53),
8263 (54, 54),
8264 (55, 55),
8265 (56, 56),
8266 (57, 57),
8267 (58, 58),
8268 (59, 59),
8269 (60, 60),
8270 (61, 61),
8271 (62, 62),
8272 (63, 63),
8273 (64, 64),
8274 (65, 65),
8275 (66, 66),
8276 (67, 67),
8277 (68, 68),
8278 (69, 69),
8279 (70, 70),
8280 (71, 71),
8281 (72, 72),
8282 (73, 73),
8283 (74, 74),
8284 (75, 75),
8285 (76, 76),
8286 (77, 77),
8287 (78, 78),
8288 (79, 79),
8289 (80, 80),
8290 (81, 81),
8291 (82, 82),
8292 (83, 83),
8293 (84, 84),
8294 (85, 85),
8295 (86, 86),
8296 (87, 87),
8297 (88, 88),
8298 (89, 89),
8299 (90, 90),
8300 (91, 91),
8301 (92, 92),
8302 (93, 93),
8303 (94, 94),
8304 (95, 95),
8305 (96, 96),
8306 (97, 97),
8307 (98, 98),
8308 (99, 99),
8309 (100, 100),
8310 (101, 101),
8311 (102, 102),
8312 (103, 103),
8313 (104, 104),
8314 (105, 105),
8315 (106, 106),
8316 (107, 107),
8317 (108, 108),
8318 (109, 109),
8319 (110, 110),
8320 (111, 111),
8321 (112, 112),
8322 (113, 113),
8323 (114, 114),
8324 (115, 115),
8325 (116, 116),
8326 (117, 117),
8327 (118, 118),
8328 (119, 119),
8329 (120, 120),
8330 (121, 121),
8331 (122, 122),
8332 (123, 123),
8333 (124, 124),
8334 (125, 125),
8335 (126, 126),
8336 (127, 28),
8337 (160, 255),
8338 (161, 173),
8339 (163, 156),
8340 (171, 174),
8341 (172, 170),
8342 (176, 248),
8343 (177, 241),
8344 (178, 253),
8345 (183, 250),
8346 (187, 175),
8347 (188, 172),
8348 (189, 171),
8349 (191, 168),
8350 (193, 164),
8351 (196, 142),
8352 (197, 143),
8353 (198, 146),
8354 (199, 128),
8355 (201, 144),
8356 (205, 165),
8357 (208, 139),
8358 (211, 166),
8359 (214, 153),
8360 (216, 157),
8361 (218, 167),
8362 (220, 154),
8363 (221, 151),
8364 (222, 141),
8365 (223, 225),
8366 (224, 133),
8367 (225, 160),
8368 (226, 131),
8369 (228, 132),
8370 (229, 134),
8371 (230, 145),
8372 (231, 135),
8373 (232, 138),
8374 (233, 130),
8375 (234, 136),
8376 (235, 137),
8377 (237, 161),
8378 (240, 140),
8379 (243, 162),
8380 (244, 147),
8381 (246, 148),
8382 (247, 246),
8383 (248, 155),
8384 (250, 163),
8385 (251, 150),
8386 (252, 129),
8387 (253, 152),
8388 (254, 149),
8389 (402, 159),
8390 (915, 226),
8391 (920, 233),
8392 (931, 228),
8393 (934, 232),
8394 (937, 234),
8395 (945, 224),
8396 (948, 235),
8397 (949, 238),
8398 (956, 230),
8399 (960, 227),
8400 (963, 229),
8401 (964, 231),
8402 (966, 237),
8403 (8319, 252),
8404 (8359, 158),
8405 (8729, 249),
8406 (8730, 251),
8407 (8734, 236),
8408 (8745, 239),
8409 (8776, 247),
8410 (8801, 240),
8411 (8804, 243),
8412 (8805, 242),
8413 (8976, 169),
8414 (8992, 244),
8415 (8993, 245),
8416 (9472, 196),
8417 (9474, 179),
8418 (9484, 218),
8419 (9488, 191),
8420 (9492, 192),
8421 (9496, 217),
8422 (9500, 195),
8423 (9508, 180),
8424 (9516, 194),
8425 (9524, 193),
8426 (9532, 197),
8427 (9552, 205),
8428 (9553, 186),
8429 (9554, 213),
8430 (9555, 214),
8431 (9556, 201),
8432 (9557, 184),
8433 (9558, 183),
8434 (9559, 187),
8435 (9560, 212),
8436 (9561, 211),
8437 (9562, 200),
8438 (9563, 190),
8439 (9564, 189),
8440 (9565, 188),
8441 (9566, 198),
8442 (9567, 199),
8443 (9568, 204),
8444 (9569, 181),
8445 (9570, 182),
8446 (9571, 185),
8447 (9572, 209),
8448 (9573, 210),
8449 (9574, 203),
8450 (9575, 207),
8451 (9576, 208),
8452 (9577, 202),
8453 (9578, 216),
8454 (9579, 215),
8455 (9580, 206),
8456 (9600, 223),
8457 (9604, 220),
8458 (9608, 219),
8459 (9612, 221),
8460 (9616, 222),
8461 (9617, 176),
8462 (9618, 177),
8463 (9619, 178),
8464 (9632, 254),
8465];
8466
8467impl_ebcdic_encoder_and_decoder!(
8468 IBM862,
8469 "IBM862",
8470 IBM862Encoder,
8471 IBM862Decoder,
8472 IBM_862_ENCODE_TABLE,
8473 IBM_862_DECODE_TABLE
8474);
8475const IBM_862_DECODE_TABLE: [char; 256] = [
8476 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8477 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8478 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8479 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8480 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8481 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8482 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8483 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8484 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8485 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8486 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8487 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8488 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8489 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8490 '\u{5d0}', '\u{5d1}', '\u{5d2}', '\u{5d3}', '\u{5d4}', '\u{5d5}', '\u{5d6}', '\u{5d7}',
8491 '\u{5d8}', '\u{5d9}', '\u{5da}', '\u{5db}', '\u{5dc}', '\u{5dd}', '\u{5de}', '\u{5df}',
8492 '\u{5e0}', '\u{5e1}', '\u{5e2}', '\u{5e3}', '\u{5e4}', '\u{5e5}', '\u{5e6}', '\u{5e7}',
8493 '\u{5e8}', '\u{5e9}', '\u{5ea}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}',
8494 '\u{ed}', '\u{f3}', '\u{fa}', '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}',
8495 '\u{ac}', '\u{bd}', '\u{bc}', '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}',
8496 '\u{2502}', '\u{2524}', '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}',
8497 '\u{2557}', '\u{255d}', '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}',
8498 '\u{251c}', '\u{2500}', '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}',
8499 '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}',
8500 '\u{2559}', '\u{2558}', '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}',
8501 '\u{2588}', '\u{2584}', '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}',
8502 '\u{3c0}', '\u{3a3}', '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}',
8503 '\u{3b4}', '\u{221e}', '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}',
8504 '\u{2264}', '\u{2320}', '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}',
8505 '\u{221a}', '\u{207f}', '\u{b2}', '\u{25a0}', '\u{a0}',
8506];
8507const IBM_862_ENCODE_TABLE: &[(u16, u8)] = &[
8508 (0, 0),
8509 (1, 1),
8510 (2, 2),
8511 (3, 3),
8512 (4, 4),
8513 (5, 5),
8514 (6, 6),
8515 (7, 7),
8516 (8, 8),
8517 (9, 9),
8518 (10, 10),
8519 (11, 11),
8520 (12, 12),
8521 (13, 13),
8522 (14, 14),
8523 (15, 15),
8524 (16, 16),
8525 (17, 17),
8526 (18, 18),
8527 (19, 19),
8528 (20, 20),
8529 (21, 21),
8530 (22, 22),
8531 (23, 23),
8532 (24, 24),
8533 (25, 25),
8534 (26, 127),
8535 (27, 27),
8536 (28, 26),
8537 (29, 29),
8538 (30, 30),
8539 (31, 31),
8540 (32, 32),
8541 (33, 33),
8542 (34, 34),
8543 (35, 35),
8544 (36, 36),
8545 (37, 37),
8546 (38, 38),
8547 (39, 39),
8548 (40, 40),
8549 (41, 41),
8550 (42, 42),
8551 (43, 43),
8552 (44, 44),
8553 (45, 45),
8554 (46, 46),
8555 (47, 47),
8556 (48, 48),
8557 (49, 49),
8558 (50, 50),
8559 (51, 51),
8560 (52, 52),
8561 (53, 53),
8562 (54, 54),
8563 (55, 55),
8564 (56, 56),
8565 (57, 57),
8566 (58, 58),
8567 (59, 59),
8568 (60, 60),
8569 (61, 61),
8570 (62, 62),
8571 (63, 63),
8572 (64, 64),
8573 (65, 65),
8574 (66, 66),
8575 (67, 67),
8576 (68, 68),
8577 (69, 69),
8578 (70, 70),
8579 (71, 71),
8580 (72, 72),
8581 (73, 73),
8582 (74, 74),
8583 (75, 75),
8584 (76, 76),
8585 (77, 77),
8586 (78, 78),
8587 (79, 79),
8588 (80, 80),
8589 (81, 81),
8590 (82, 82),
8591 (83, 83),
8592 (84, 84),
8593 (85, 85),
8594 (86, 86),
8595 (87, 87),
8596 (88, 88),
8597 (89, 89),
8598 (90, 90),
8599 (91, 91),
8600 (92, 92),
8601 (93, 93),
8602 (94, 94),
8603 (95, 95),
8604 (96, 96),
8605 (97, 97),
8606 (98, 98),
8607 (99, 99),
8608 (100, 100),
8609 (101, 101),
8610 (102, 102),
8611 (103, 103),
8612 (104, 104),
8613 (105, 105),
8614 (106, 106),
8615 (107, 107),
8616 (108, 108),
8617 (109, 109),
8618 (110, 110),
8619 (111, 111),
8620 (112, 112),
8621 (113, 113),
8622 (114, 114),
8623 (115, 115),
8624 (116, 116),
8625 (117, 117),
8626 (118, 118),
8627 (119, 119),
8628 (120, 120),
8629 (121, 121),
8630 (122, 122),
8631 (123, 123),
8632 (124, 124),
8633 (125, 125),
8634 (126, 126),
8635 (127, 28),
8636 (160, 255),
8637 (161, 173),
8638 (162, 155),
8639 (163, 156),
8640 (165, 157),
8641 (170, 166),
8642 (171, 174),
8643 (172, 170),
8644 (176, 248),
8645 (177, 241),
8646 (178, 253),
8647 (183, 250),
8648 (186, 167),
8649 (187, 175),
8650 (188, 172),
8651 (189, 171),
8652 (191, 168),
8653 (209, 165),
8654 (223, 225),
8655 (225, 160),
8656 (237, 161),
8657 (241, 164),
8658 (243, 162),
8659 (247, 246),
8660 (250, 163),
8661 (402, 159),
8662 (915, 226),
8663 (920, 233),
8664 (931, 228),
8665 (934, 232),
8666 (937, 234),
8667 (945, 224),
8668 (948, 235),
8669 (949, 238),
8670 (956, 230),
8671 (960, 227),
8672 (963, 229),
8673 (964, 231),
8674 (966, 237),
8675 (1488, 128),
8676 (1489, 129),
8677 (1490, 130),
8678 (1491, 131),
8679 (1492, 132),
8680 (1493, 133),
8681 (1494, 134),
8682 (1495, 135),
8683 (1496, 136),
8684 (1497, 137),
8685 (1498, 138),
8686 (1499, 139),
8687 (1500, 140),
8688 (1501, 141),
8689 (1502, 142),
8690 (1503, 143),
8691 (1504, 144),
8692 (1505, 145),
8693 (1506, 146),
8694 (1507, 147),
8695 (1508, 148),
8696 (1509, 149),
8697 (1510, 150),
8698 (1511, 151),
8699 (1512, 152),
8700 (1513, 153),
8701 (1514, 154),
8702 (8319, 252),
8703 (8359, 158),
8704 (8729, 249),
8705 (8730, 251),
8706 (8734, 236),
8707 (8745, 239),
8708 (8776, 247),
8709 (8801, 240),
8710 (8804, 243),
8711 (8805, 242),
8712 (8976, 169),
8713 (8992, 244),
8714 (8993, 245),
8715 (9472, 196),
8716 (9474, 179),
8717 (9484, 218),
8718 (9488, 191),
8719 (9492, 192),
8720 (9496, 217),
8721 (9500, 195),
8722 (9508, 180),
8723 (9516, 194),
8724 (9524, 193),
8725 (9532, 197),
8726 (9552, 205),
8727 (9553, 186),
8728 (9554, 213),
8729 (9555, 214),
8730 (9556, 201),
8731 (9557, 184),
8732 (9558, 183),
8733 (9559, 187),
8734 (9560, 212),
8735 (9561, 211),
8736 (9562, 200),
8737 (9563, 190),
8738 (9564, 189),
8739 (9565, 188),
8740 (9566, 198),
8741 (9567, 199),
8742 (9568, 204),
8743 (9569, 181),
8744 (9570, 182),
8745 (9571, 185),
8746 (9572, 209),
8747 (9573, 210),
8748 (9574, 203),
8749 (9575, 207),
8750 (9576, 208),
8751 (9577, 202),
8752 (9578, 216),
8753 (9579, 215),
8754 (9580, 206),
8755 (9600, 223),
8756 (9604, 220),
8757 (9608, 219),
8758 (9612, 221),
8759 (9616, 222),
8760 (9617, 176),
8761 (9618, 177),
8762 (9619, 178),
8763 (9632, 254),
8764];
8765
8766impl_ebcdic_encoder_and_decoder!(
8767 IBM863,
8768 "IBM863",
8769 IBM863Encoder,
8770 IBM863Decoder,
8771 IBM_863_ENCODE_TABLE,
8772 IBM_863_DECODE_TABLE
8773);
8774const IBM_863_DECODE_TABLE: [char; 256] = [
8775 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8776 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8777 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8778 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8779 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8780 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8781 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8782 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8783 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8784 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8785 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8786 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8787 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8788 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8789 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{c2}', '\u{e0}', '\u{b6}', '\u{e7}', '\u{ea}',
8790 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{2017}', '\u{c0}', '\u{a7}', '\u{c9}', '\u{c8}',
8791 '\u{ca}', '\u{f4}', '\u{cb}', '\u{cf}', '\u{fb}', '\u{f9}', '\u{a4}', '\u{d4}', '\u{dc}',
8792 '\u{a2}', '\u{a3}', '\u{d9}', '\u{db}', '\u{192}', '\u{a6}', '\u{b4}', '\u{f3}', '\u{fa}',
8793 '\u{a8}', '\u{b8}', '\u{b3}', '\u{af}', '\u{ce}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8794 '\u{be}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8795 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8796 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8797 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8798 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8799 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8800 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8801 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8802 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8803 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8804 '\u{b2}', '\u{25a0}', '\u{a0}',
8805];
8806const IBM_863_ENCODE_TABLE: &[(u16, u8)] = &[
8807 (0, 0),
8808 (1, 1),
8809 (2, 2),
8810 (3, 3),
8811 (4, 4),
8812 (5, 5),
8813 (6, 6),
8814 (7, 7),
8815 (8, 8),
8816 (9, 9),
8817 (10, 10),
8818 (11, 11),
8819 (12, 12),
8820 (13, 13),
8821 (14, 14),
8822 (15, 15),
8823 (16, 16),
8824 (17, 17),
8825 (18, 18),
8826 (19, 19),
8827 (20, 20),
8828 (21, 21),
8829 (22, 22),
8830 (23, 23),
8831 (24, 24),
8832 (25, 25),
8833 (26, 127),
8834 (27, 27),
8835 (28, 26),
8836 (29, 29),
8837 (30, 30),
8838 (31, 31),
8839 (32, 32),
8840 (33, 33),
8841 (34, 34),
8842 (35, 35),
8843 (36, 36),
8844 (37, 37),
8845 (38, 38),
8846 (39, 39),
8847 (40, 40),
8848 (41, 41),
8849 (42, 42),
8850 (43, 43),
8851 (44, 44),
8852 (45, 45),
8853 (46, 46),
8854 (47, 47),
8855 (48, 48),
8856 (49, 49),
8857 (50, 50),
8858 (51, 51),
8859 (52, 52),
8860 (53, 53),
8861 (54, 54),
8862 (55, 55),
8863 (56, 56),
8864 (57, 57),
8865 (58, 58),
8866 (59, 59),
8867 (60, 60),
8868 (61, 61),
8869 (62, 62),
8870 (63, 63),
8871 (64, 64),
8872 (65, 65),
8873 (66, 66),
8874 (67, 67),
8875 (68, 68),
8876 (69, 69),
8877 (70, 70),
8878 (71, 71),
8879 (72, 72),
8880 (73, 73),
8881 (74, 74),
8882 (75, 75),
8883 (76, 76),
8884 (77, 77),
8885 (78, 78),
8886 (79, 79),
8887 (80, 80),
8888 (81, 81),
8889 (82, 82),
8890 (83, 83),
8891 (84, 84),
8892 (85, 85),
8893 (86, 86),
8894 (87, 87),
8895 (88, 88),
8896 (89, 89),
8897 (90, 90),
8898 (91, 91),
8899 (92, 92),
8900 (93, 93),
8901 (94, 94),
8902 (95, 95),
8903 (96, 96),
8904 (97, 97),
8905 (98, 98),
8906 (99, 99),
8907 (100, 100),
8908 (101, 101),
8909 (102, 102),
8910 (103, 103),
8911 (104, 104),
8912 (105, 105),
8913 (106, 106),
8914 (107, 107),
8915 (108, 108),
8916 (109, 109),
8917 (110, 110),
8918 (111, 111),
8919 (112, 112),
8920 (113, 113),
8921 (114, 114),
8922 (115, 115),
8923 (116, 116),
8924 (117, 117),
8925 (118, 118),
8926 (119, 119),
8927 (120, 120),
8928 (121, 121),
8929 (122, 122),
8930 (123, 123),
8931 (124, 124),
8932 (125, 125),
8933 (126, 126),
8934 (127, 28),
8935 (160, 255),
8936 (162, 155),
8937 (163, 156),
8938 (164, 152),
8939 (166, 160),
8940 (167, 143),
8941 (168, 164),
8942 (171, 174),
8943 (172, 170),
8944 (175, 167),
8945 (176, 248),
8946 (177, 241),
8947 (178, 253),
8948 (179, 166),
8949 (180, 161),
8950 (182, 134),
8951 (183, 250),
8952 (184, 165),
8953 (187, 175),
8954 (188, 172),
8955 (189, 171),
8956 (190, 173),
8957 (192, 142),
8958 (194, 132),
8959 (199, 128),
8960 (200, 145),
8961 (201, 144),
8962 (202, 146),
8963 (203, 148),
8964 (206, 168),
8965 (207, 149),
8966 (212, 153),
8967 (217, 157),
8968 (219, 158),
8969 (220, 154),
8970 (223, 225),
8971 (224, 133),
8972 (226, 131),
8973 (231, 135),
8974 (232, 138),
8975 (233, 130),
8976 (234, 136),
8977 (235, 137),
8978 (238, 140),
8979 (239, 139),
8980 (243, 162),
8981 (244, 147),
8982 (247, 246),
8983 (249, 151),
8984 (250, 163),
8985 (251, 150),
8986 (252, 129),
8987 (402, 159),
8988 (915, 226),
8989 (920, 233),
8990 (931, 228),
8991 (934, 232),
8992 (937, 234),
8993 (945, 224),
8994 (948, 235),
8995 (949, 238),
8996 (956, 230),
8997 (960, 227),
8998 (963, 229),
8999 (964, 231),
9000 (966, 237),
9001 (8215, 141),
9002 (8319, 252),
9003 (8729, 249),
9004 (8730, 251),
9005 (8734, 236),
9006 (8745, 239),
9007 (8776, 247),
9008 (8801, 240),
9009 (8804, 243),
9010 (8805, 242),
9011 (8976, 169),
9012 (8992, 244),
9013 (8993, 245),
9014 (9472, 196),
9015 (9474, 179),
9016 (9484, 218),
9017 (9488, 191),
9018 (9492, 192),
9019 (9496, 217),
9020 (9500, 195),
9021 (9508, 180),
9022 (9516, 194),
9023 (9524, 193),
9024 (9532, 197),
9025 (9552, 205),
9026 (9553, 186),
9027 (9554, 213),
9028 (9555, 214),
9029 (9556, 201),
9030 (9557, 184),
9031 (9558, 183),
9032 (9559, 187),
9033 (9560, 212),
9034 (9561, 211),
9035 (9562, 200),
9036 (9563, 190),
9037 (9564, 189),
9038 (9565, 188),
9039 (9566, 198),
9040 (9567, 199),
9041 (9568, 204),
9042 (9569, 181),
9043 (9570, 182),
9044 (9571, 185),
9045 (9572, 209),
9046 (9573, 210),
9047 (9574, 203),
9048 (9575, 207),
9049 (9576, 208),
9050 (9577, 202),
9051 (9578, 216),
9052 (9579, 215),
9053 (9580, 206),
9054 (9600, 223),
9055 (9604, 220),
9056 (9608, 219),
9057 (9612, 221),
9058 (9616, 222),
9059 (9617, 176),
9060 (9618, 177),
9061 (9619, 178),
9062 (9632, 254),
9063];
9064
9065impl_ebcdic_encoder_and_decoder!(
9066 IBM864,
9067 "IBM864",
9068 IBM864Encoder,
9069 IBM864Decoder,
9070 IBM_864_ENCODE_TABLE,
9071 IBM_864_DECODE_TABLE
9072);
9073const IBM_864_DECODE_TABLE: [char; 256] = [
9074 '\u{0}',
9075 '\u{1}',
9076 '\u{2}',
9077 '\u{3}',
9078 '\u{4}',
9079 '\u{5}',
9080 '\u{6}',
9081 '\u{7}',
9082 '\u{8}',
9083 '\u{9}',
9084 '\u{a}',
9085 '\u{b}',
9086 '\u{c}',
9087 '\u{d}',
9088 '\u{e}',
9089 '\u{f}',
9090 '\u{10}',
9091 '\u{11}',
9092 '\u{12}',
9093 '\u{13}',
9094 '\u{14}',
9095 '\u{15}',
9096 '\u{16}',
9097 '\u{17}',
9098 '\u{18}',
9099 '\u{19}',
9100 '\u{1c}',
9101 '\u{1b}',
9102 '\u{7f}',
9103 '\u{1d}',
9104 '\u{1e}',
9105 '\u{1f}',
9106 '\u{20}',
9107 '\u{21}',
9108 '\u{22}',
9109 '\u{23}',
9110 '\u{24}',
9111 '\u{25}',
9112 '\u{26}',
9113 '\u{27}',
9114 '\u{28}',
9115 '\u{29}',
9116 '\u{2a}',
9117 '\u{2b}',
9118 '\u{2c}',
9119 '\u{2d}',
9120 '\u{2e}',
9121 '\u{2f}',
9122 '\u{30}',
9123 '\u{31}',
9124 '\u{32}',
9125 '\u{33}',
9126 '\u{34}',
9127 '\u{35}',
9128 '\u{36}',
9129 '\u{37}',
9130 '\u{38}',
9131 '\u{39}',
9132 '\u{3a}',
9133 '\u{3b}',
9134 '\u{3c}',
9135 '\u{3d}',
9136 '\u{3e}',
9137 '\u{3f}',
9138 '\u{40}',
9139 '\u{41}',
9140 '\u{42}',
9141 '\u{43}',
9142 '\u{44}',
9143 '\u{45}',
9144 '\u{46}',
9145 '\u{47}',
9146 '\u{48}',
9147 '\u{49}',
9148 '\u{4a}',
9149 '\u{4b}',
9150 '\u{4c}',
9151 '\u{4d}',
9152 '\u{4e}',
9153 '\u{4f}',
9154 '\u{50}',
9155 '\u{51}',
9156 '\u{52}',
9157 '\u{53}',
9158 '\u{54}',
9159 '\u{55}',
9160 '\u{56}',
9161 '\u{57}',
9162 '\u{58}',
9163 '\u{59}',
9164 '\u{5a}',
9165 '\u{5b}',
9166 '\u{5c}',
9167 '\u{5d}',
9168 '\u{5e}',
9169 '\u{5f}',
9170 '\u{60}',
9171 '\u{61}',
9172 '\u{62}',
9173 '\u{63}',
9174 '\u{64}',
9175 '\u{65}',
9176 '\u{66}',
9177 '\u{67}',
9178 '\u{68}',
9179 '\u{69}',
9180 '\u{6a}',
9181 '\u{6b}',
9182 '\u{6c}',
9183 '\u{6d}',
9184 '\u{6e}',
9185 '\u{6f}',
9186 '\u{70}',
9187 '\u{71}',
9188 '\u{72}',
9189 '\u{73}',
9190 '\u{74}',
9191 '\u{75}',
9192 '\u{76}',
9193 '\u{77}',
9194 '\u{78}',
9195 '\u{79}',
9196 '\u{7a}',
9197 '\u{7b}',
9198 '\u{7c}',
9199 '\u{7d}',
9200 '\u{7e}',
9201 '\u{1a}',
9202 '\u{b0}',
9203 '\u{b7}',
9204 '\u{2219}',
9205 '\u{221a}',
9206 '\u{2592}',
9207 '\u{2500}',
9208 '\u{2502}',
9209 '\u{253c}',
9210 '\u{2524}',
9211 '\u{252c}',
9212 '\u{251c}',
9213 '\u{2534}',
9214 '\u{2510}',
9215 '\u{250c}',
9216 '\u{2514}',
9217 '\u{2518}',
9218 '\u{3b2}',
9219 '\u{221e}',
9220 '\u{3c6}',
9221 '\u{b1}',
9222 '\u{bd}',
9223 '\u{bc}',
9224 '\u{2248}',
9225 '\u{ab}',
9226 '\u{bb}',
9227 '\u{fef7}',
9228 '\u{fef8}',
9229 char::REPLACEMENT_CHARACTER,
9230 char::REPLACEMENT_CHARACTER,
9231 '\u{fefb}',
9232 '\u{fefc}',
9233 '\u{200b}',
9234 '\u{a0}',
9235 '\u{ad}',
9236 '\u{fe82}',
9237 '\u{a3}',
9238 '\u{a4}',
9239 '\u{fe84}',
9240 char::REPLACEMENT_CHARACTER,
9241 char::REPLACEMENT_CHARACTER,
9242 '\u{fe8e}',
9243 '\u{fe8f}',
9244 '\u{fe95}',
9245 '\u{fe99}',
9246 '\u{60c}',
9247 '\u{fe9d}',
9248 '\u{fea1}',
9249 '\u{fea5}',
9250 '\u{660}',
9251 '\u{661}',
9252 '\u{662}',
9253 '\u{663}',
9254 '\u{664}',
9255 '\u{665}',
9256 '\u{666}',
9257 '\u{667}',
9258 '\u{668}',
9259 '\u{669}',
9260 '\u{fed1}',
9261 '\u{61b}',
9262 '\u{feb1}',
9263 '\u{feb5}',
9264 '\u{feb9}',
9265 '\u{61f}',
9266 '\u{a2}',
9267 '\u{fe80}',
9268 '\u{fe81}',
9269 '\u{fe83}',
9270 '\u{fe85}',
9271 '\u{feca}',
9272 '\u{fe8b}',
9273 '\u{fe8d}',
9274 '\u{fe91}',
9275 '\u{fe93}',
9276 '\u{fe97}',
9277 '\u{fe9b}',
9278 '\u{fe9f}',
9279 '\u{fea3}',
9280 '\u{fea7}',
9281 '\u{fea9}',
9282 '\u{feab}',
9283 '\u{fead}',
9284 '\u{feaf}',
9285 '\u{feb3}',
9286 '\u{feb7}',
9287 '\u{febb}',
9288 '\u{febf}',
9289 '\u{fec3}',
9290 '\u{fec7}',
9291 '\u{fecb}',
9292 '\u{fecf}',
9293 '\u{a6}',
9294 '\u{ac}',
9295 '\u{f7}',
9296 '\u{d7}',
9297 '\u{fec9}',
9298 '\u{640}',
9299 '\u{fed3}',
9300 '\u{fed7}',
9301 '\u{fedb}',
9302 '\u{fedf}',
9303 '\u{fee3}',
9304 '\u{fee7}',
9305 '\u{feeb}',
9306 '\u{feed}',
9307 '\u{feef}',
9308 '\u{fef3}',
9309 '\u{febd}',
9310 '\u{fecc}',
9311 '\u{fece}',
9312 '\u{fecd}',
9313 '\u{fee1}',
9314 '\u{fe7d}',
9315 '\u{fe7c}',
9316 '\u{fee5}',
9317 '\u{fee9}',
9318 '\u{feec}',
9319 '\u{fef0}',
9320 '\u{fef2}',
9321 '\u{fed0}',
9322 '\u{fed5}',
9323 '\u{fef5}',
9324 '\u{fef6}',
9325 '\u{fedd}',
9326 '\u{fed9}',
9327 '\u{fef1}',
9328 '\u{25a0}',
9329 char::REPLACEMENT_CHARACTER,
9330];
9331const IBM_864_ENCODE_TABLE: &[(u16, u8)] = &[
9332 (0, 0),
9333 (1, 1),
9334 (2, 2),
9335 (3, 3),
9336 (4, 4),
9337 (5, 5),
9338 (6, 6),
9339 (7, 7),
9340 (8, 8),
9341 (9, 9),
9342 (10, 10),
9343 (11, 11),
9344 (12, 12),
9345 (13, 13),
9346 (14, 14),
9347 (15, 15),
9348 (16, 16),
9349 (17, 17),
9350 (18, 18),
9351 (19, 19),
9352 (20, 20),
9353 (21, 21),
9354 (22, 22),
9355 (23, 23),
9356 (24, 24),
9357 (25, 25),
9358 (26, 127),
9359 (27, 27),
9360 (28, 26),
9361 (29, 29),
9362 (30, 30),
9363 (31, 31),
9364 (32, 32),
9365 (33, 33),
9366 (34, 34),
9367 (35, 35),
9368 (36, 36),
9369 (37, 37),
9370 (38, 38),
9371 (39, 39),
9372 (40, 40),
9373 (41, 41),
9374 (42, 42),
9375 (43, 43),
9376 (44, 44),
9377 (45, 45),
9378 (46, 46),
9379 (47, 47),
9380 (48, 48),
9381 (49, 49),
9382 (50, 50),
9383 (51, 51),
9384 (52, 52),
9385 (53, 53),
9386 (54, 54),
9387 (55, 55),
9388 (56, 56),
9389 (57, 57),
9390 (58, 58),
9391 (59, 59),
9392 (60, 60),
9393 (61, 61),
9394 (62, 62),
9395 (63, 63),
9396 (64, 64),
9397 (65, 65),
9398 (66, 66),
9399 (67, 67),
9400 (68, 68),
9401 (69, 69),
9402 (70, 70),
9403 (71, 71),
9404 (72, 72),
9405 (73, 73),
9406 (74, 74),
9407 (75, 75),
9408 (76, 76),
9409 (77, 77),
9410 (78, 78),
9411 (79, 79),
9412 (80, 80),
9413 (81, 81),
9414 (82, 82),
9415 (83, 83),
9416 (84, 84),
9417 (85, 85),
9418 (86, 86),
9419 (87, 87),
9420 (88, 88),
9421 (89, 89),
9422 (90, 90),
9423 (91, 91),
9424 (92, 92),
9425 (93, 93),
9426 (94, 94),
9427 (95, 95),
9428 (96, 96),
9429 (97, 97),
9430 (98, 98),
9431 (99, 99),
9432 (100, 100),
9433 (101, 101),
9434 (102, 102),
9435 (103, 103),
9436 (104, 104),
9437 (105, 105),
9438 (106, 106),
9439 (107, 107),
9440 (108, 108),
9441 (109, 109),
9442 (110, 110),
9443 (111, 111),
9444 (112, 112),
9445 (113, 113),
9446 (114, 114),
9447 (115, 115),
9448 (116, 116),
9449 (117, 117),
9450 (118, 118),
9451 (119, 119),
9452 (120, 120),
9453 (121, 121),
9454 (122, 122),
9455 (123, 123),
9456 (124, 124),
9457 (125, 125),
9458 (126, 126),
9459 (127, 28),
9460 (160, 160),
9461 (162, 192),
9462 (163, 163),
9463 (164, 164),
9464 (166, 219),
9465 (171, 151),
9466 (172, 220),
9467 (173, 161),
9468 (176, 128),
9469 (177, 147),
9470 (183, 129),
9471 (187, 152),
9472 (188, 149),
9473 (189, 148),
9474 (215, 222),
9475 (247, 221),
9476 (946, 144),
9477 (966, 146),
9478 (1548, 172),
9479 (1563, 187),
9480 (1567, 191),
9481 (1600, 224),
9482 (1632, 176),
9483 (1633, 177),
9484 (1634, 178),
9485 (1635, 179),
9486 (1636, 180),
9487 (1637, 181),
9488 (1638, 182),
9489 (1639, 183),
9490 (1640, 184),
9491 (1641, 185),
9492 (8203, 159),
9493 (8729, 130),
9494 (8730, 131),
9495 (8734, 145),
9496 (8776, 150),
9497 (9472, 133),
9498 (9474, 134),
9499 (9484, 141),
9500 (9488, 140),
9501 (9492, 142),
9502 (9496, 143),
9503 (9500, 138),
9504 (9508, 136),
9505 (9516, 137),
9506 (9524, 139),
9507 (9532, 135),
9508 (9618, 132),
9509 (9632, 254),
9510 (65148, 241),
9511 (65149, 240),
9512 (65152, 193),
9513 (65153, 194),
9514 (65154, 162),
9515 (65155, 195),
9516 (65156, 165),
9517 (65157, 196),
9518 (65163, 198),
9519 (65165, 199),
9520 (65166, 168),
9521 (65167, 169),
9522 (65169, 200),
9523 (65171, 201),
9524 (65173, 170),
9525 (65175, 202),
9526 (65177, 171),
9527 (65179, 203),
9528 (65181, 173),
9529 (65183, 204),
9530 (65185, 174),
9531 (65187, 205),
9532 (65189, 175),
9533 (65191, 206),
9534 (65193, 207),
9535 (65195, 208),
9536 (65197, 209),
9537 (65199, 210),
9538 (65201, 188),
9539 (65203, 211),
9540 (65205, 189),
9541 (65207, 212),
9542 (65209, 190),
9543 (65211, 213),
9544 (65213, 235),
9545 (65215, 214),
9546 (65219, 215),
9547 (65223, 216),
9548 (65225, 223),
9549 (65226, 197),
9550 (65227, 217),
9551 (65228, 236),
9552 (65229, 238),
9553 (65230, 237),
9554 (65231, 218),
9555 (65232, 247),
9556 (65233, 186),
9557 (65235, 225),
9558 (65237, 248),
9559 (65239, 226),
9560 (65241, 252),
9561 (65243, 227),
9562 (65245, 251),
9563 (65247, 228),
9564 (65249, 239),
9565 (65251, 229),
9566 (65253, 242),
9567 (65255, 230),
9568 (65257, 243),
9569 (65259, 231),
9570 (65260, 244),
9571 (65261, 232),
9572 (65263, 233),
9573 (65264, 245),
9574 (65265, 253),
9575 (65266, 246),
9576 (65267, 234),
9577 (65269, 249),
9578 (65270, 250),
9579 (65271, 153),
9580 (65272, 154),
9581 (65275, 157),
9582 (65276, 158),
9583];
9584
9585impl_ebcdic_encoder_and_decoder!(
9586 IBM865,
9587 "IBM865",
9588 IBM865Encoder,
9589 IBM865Decoder,
9590 IBM_865_ENCODE_TABLE,
9591 IBM_865_DECODE_TABLE
9592);
9593const IBM_865_DECODE_TABLE: [char; 256] = [
9594 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
9595 '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
9596 '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
9597 '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
9598 '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
9599 '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
9600 '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
9601 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
9602 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
9603 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
9604 '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
9605 '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
9606 '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
9607 '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
9608 '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
9609 '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
9610 '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
9611 '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
9612 '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
9613 '\u{a1}', '\u{ab}', '\u{a4}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
9614 '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
9615 '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
9616 '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
9617 '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
9618 '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
9619 '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
9620 '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
9621 '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
9622 '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
9623 '\u{b2}', '\u{25a0}', '\u{a0}',
9624];
9625const IBM_865_ENCODE_TABLE: &[(u16, u8)] = &[
9626 (0, 0),
9627 (1, 1),
9628 (2, 2),
9629 (3, 3),
9630 (4, 4),
9631 (5, 5),
9632 (6, 6),
9633 (7, 7),
9634 (8, 8),
9635 (9, 9),
9636 (10, 10),
9637 (11, 11),
9638 (12, 12),
9639 (13, 13),
9640 (14, 14),
9641 (15, 15),
9642 (16, 16),
9643 (17, 17),
9644 (18, 18),
9645 (19, 19),
9646 (20, 20),
9647 (21, 21),
9648 (22, 22),
9649 (23, 23),
9650 (24, 24),
9651 (25, 25),
9652 (26, 127),
9653 (27, 27),
9654 (28, 26),
9655 (29, 29),
9656 (30, 30),
9657 (31, 31),
9658 (32, 32),
9659 (33, 33),
9660 (34, 34),
9661 (35, 35),
9662 (36, 36),
9663 (37, 37),
9664 (38, 38),
9665 (39, 39),
9666 (40, 40),
9667 (41, 41),
9668 (42, 42),
9669 (43, 43),
9670 (44, 44),
9671 (45, 45),
9672 (46, 46),
9673 (47, 47),
9674 (48, 48),
9675 (49, 49),
9676 (50, 50),
9677 (51, 51),
9678 (52, 52),
9679 (53, 53),
9680 (54, 54),
9681 (55, 55),
9682 (56, 56),
9683 (57, 57),
9684 (58, 58),
9685 (59, 59),
9686 (60, 60),
9687 (61, 61),
9688 (62, 62),
9689 (63, 63),
9690 (64, 64),
9691 (65, 65),
9692 (66, 66),
9693 (67, 67),
9694 (68, 68),
9695 (69, 69),
9696 (70, 70),
9697 (71, 71),
9698 (72, 72),
9699 (73, 73),
9700 (74, 74),
9701 (75, 75),
9702 (76, 76),
9703 (77, 77),
9704 (78, 78),
9705 (79, 79),
9706 (80, 80),
9707 (81, 81),
9708 (82, 82),
9709 (83, 83),
9710 (84, 84),
9711 (85, 85),
9712 (86, 86),
9713 (87, 87),
9714 (88, 88),
9715 (89, 89),
9716 (90, 90),
9717 (91, 91),
9718 (92, 92),
9719 (93, 93),
9720 (94, 94),
9721 (95, 95),
9722 (96, 96),
9723 (97, 97),
9724 (98, 98),
9725 (99, 99),
9726 (100, 100),
9727 (101, 101),
9728 (102, 102),
9729 (103, 103),
9730 (104, 104),
9731 (105, 105),
9732 (106, 106),
9733 (107, 107),
9734 (108, 108),
9735 (109, 109),
9736 (110, 110),
9737 (111, 111),
9738 (112, 112),
9739 (113, 113),
9740 (114, 114),
9741 (115, 115),
9742 (116, 116),
9743 (117, 117),
9744 (118, 118),
9745 (119, 119),
9746 (120, 120),
9747 (121, 121),
9748 (122, 122),
9749 (123, 123),
9750 (124, 124),
9751 (125, 125),
9752 (126, 126),
9753 (127, 28),
9754 (160, 255),
9755 (161, 173),
9756 (163, 156),
9757 (164, 175),
9758 (170, 166),
9759 (171, 174),
9760 (172, 170),
9761 (176, 248),
9762 (177, 241),
9763 (178, 253),
9764 (183, 250),
9765 (186, 167),
9766 (188, 172),
9767 (189, 171),
9768 (191, 168),
9769 (196, 142),
9770 (197, 143),
9771 (198, 146),
9772 (199, 128),
9773 (201, 144),
9774 (209, 165),
9775 (214, 153),
9776 (216, 157),
9777 (220, 154),
9778 (223, 225),
9779 (224, 133),
9780 (225, 160),
9781 (226, 131),
9782 (228, 132),
9783 (229, 134),
9784 (230, 145),
9785 (231, 135),
9786 (232, 138),
9787 (233, 130),
9788 (234, 136),
9789 (235, 137),
9790 (236, 141),
9791 (237, 161),
9792 (238, 140),
9793 (239, 139),
9794 (241, 164),
9795 (242, 149),
9796 (243, 162),
9797 (244, 147),
9798 (246, 148),
9799 (247, 246),
9800 (248, 155),
9801 (249, 151),
9802 (250, 163),
9803 (251, 150),
9804 (252, 129),
9805 (255, 152),
9806 (402, 159),
9807 (915, 226),
9808 (920, 233),
9809 (931, 228),
9810 (934, 232),
9811 (937, 234),
9812 (945, 224),
9813 (948, 235),
9814 (949, 238),
9815 (956, 230),
9816 (960, 227),
9817 (963, 229),
9818 (964, 231),
9819 (966, 237),
9820 (8319, 252),
9821 (8359, 158),
9822 (8729, 249),
9823 (8730, 251),
9824 (8734, 236),
9825 (8745, 239),
9826 (8776, 247),
9827 (8801, 240),
9828 (8804, 243),
9829 (8805, 242),
9830 (8976, 169),
9831 (8992, 244),
9832 (8993, 245),
9833 (9472, 196),
9834 (9474, 179),
9835 (9484, 218),
9836 (9488, 191),
9837 (9492, 192),
9838 (9496, 217),
9839 (9500, 195),
9840 (9508, 180),
9841 (9516, 194),
9842 (9524, 193),
9843 (9532, 197),
9844 (9552, 205),
9845 (9553, 186),
9846 (9554, 213),
9847 (9555, 214),
9848 (9556, 201),
9849 (9557, 184),
9850 (9558, 183),
9851 (9559, 187),
9852 (9560, 212),
9853 (9561, 211),
9854 (9562, 200),
9855 (9563, 190),
9856 (9564, 189),
9857 (9565, 188),
9858 (9566, 198),
9859 (9567, 199),
9860 (9568, 204),
9861 (9569, 181),
9862 (9570, 182),
9863 (9571, 185),
9864 (9572, 209),
9865 (9573, 210),
9866 (9574, 203),
9867 (9575, 207),
9868 (9576, 208),
9869 (9577, 202),
9870 (9578, 216),
9871 (9579, 215),
9872 (9580, 206),
9873 (9600, 223),
9874 (9604, 220),
9875 (9608, 219),
9876 (9612, 221),
9877 (9616, 222),
9878 (9617, 176),
9879 (9618, 177),
9880 (9619, 178),
9881 (9632, 254),
9882];
9883
9884impl_ebcdic_encoder_and_decoder!(
9885 IBM868,
9886 "IBM868",
9887 IBM868Encoder,
9888 IBM868Decoder,
9889 IBM_868_ENCODE_TABLE,
9890 IBM_868_DECODE_TABLE
9891);
9892const IBM_868_DECODE_TABLE: [char; 256] = [
9893 '\u{0}',
9894 '\u{1}',
9895 '\u{2}',
9896 '\u{3}',
9897 '\u{4}',
9898 '\u{5}',
9899 '\u{6}',
9900 '\u{7}',
9901 '\u{8}',
9902 '\u{9}',
9903 '\u{a}',
9904 '\u{b}',
9905 '\u{c}',
9906 '\u{d}',
9907 '\u{e}',
9908 '\u{f}',
9909 '\u{10}',
9910 '\u{11}',
9911 '\u{12}',
9912 '\u{13}',
9913 '\u{14}',
9914 '\u{15}',
9915 '\u{16}',
9916 '\u{17}',
9917 '\u{18}',
9918 '\u{19}',
9919 '\u{1c}',
9920 '\u{1b}',
9921 '\u{7f}',
9922 '\u{1d}',
9923 '\u{1e}',
9924 '\u{1f}',
9925 '\u{20}',
9926 '\u{21}',
9927 '\u{22}',
9928 '\u{23}',
9929 '\u{24}',
9930 '\u{25}',
9931 '\u{26}',
9932 '\u{27}',
9933 '\u{28}',
9934 '\u{29}',
9935 '\u{2a}',
9936 '\u{2b}',
9937 '\u{2c}',
9938 '\u{2d}',
9939 '\u{2e}',
9940 '\u{2f}',
9941 '\u{30}',
9942 '\u{31}',
9943 '\u{32}',
9944 '\u{33}',
9945 '\u{34}',
9946 '\u{35}',
9947 '\u{36}',
9948 '\u{37}',
9949 '\u{38}',
9950 '\u{39}',
9951 '\u{3a}',
9952 '\u{3b}',
9953 '\u{3c}',
9954 '\u{3d}',
9955 '\u{3e}',
9956 '\u{3f}',
9957 '\u{40}',
9958 '\u{41}',
9959 '\u{42}',
9960 '\u{43}',
9961 '\u{44}',
9962 '\u{45}',
9963 '\u{46}',
9964 '\u{47}',
9965 '\u{48}',
9966 '\u{49}',
9967 '\u{4a}',
9968 '\u{4b}',
9969 '\u{4c}',
9970 '\u{4d}',
9971 '\u{4e}',
9972 '\u{4f}',
9973 '\u{50}',
9974 '\u{51}',
9975 '\u{52}',
9976 '\u{53}',
9977 '\u{54}',
9978 '\u{55}',
9979 '\u{56}',
9980 '\u{57}',
9981 '\u{58}',
9982 '\u{59}',
9983 '\u{5a}',
9984 '\u{5b}',
9985 '\u{5c}',
9986 '\u{5d}',
9987 '\u{5e}',
9988 '\u{5f}',
9989 '\u{60}',
9990 '\u{61}',
9991 '\u{62}',
9992 '\u{63}',
9993 '\u{64}',
9994 '\u{65}',
9995 '\u{66}',
9996 '\u{67}',
9997 '\u{68}',
9998 '\u{69}',
9999 '\u{6a}',
10000 '\u{6b}',
10001 '\u{6c}',
10002 '\u{6d}',
10003 '\u{6e}',
10004 '\u{6f}',
10005 '\u{70}',
10006 '\u{71}',
10007 '\u{72}',
10008 '\u{73}',
10009 '\u{74}',
10010 '\u{75}',
10011 '\u{76}',
10012 '\u{77}',
10013 '\u{78}',
10014 '\u{79}',
10015 '\u{7a}',
10016 '\u{7b}',
10017 '\u{7c}',
10018 '\u{7d}',
10019 '\u{7e}',
10020 '\u{1a}',
10021 '\u{6f0}',
10022 '\u{6f1}',
10023 '\u{6f2}',
10024 '\u{6f3}',
10025 '\u{6f4}',
10026 '\u{6f5}',
10027 '\u{6f6}',
10028 '\u{6f7}',
10029 '\u{6f8}',
10030 '\u{6f9}',
10031 '\u{60c}',
10032 '\u{61b}',
10033 '\u{61f}',
10034 '\u{fe81}',
10035 '\u{fe8d}',
10036 '\u{fe8e}',
10037 '\u{f8fb}',
10038 '\u{fe8f}',
10039 '\u{fe91}',
10040 '\u{fb56}',
10041 '\u{fb58}',
10042 '\u{fe93}',
10043 '\u{fe95}',
10044 '\u{fe97}',
10045 '\u{fb66}',
10046 '\u{fb68}',
10047 '\u{fe99}',
10048 '\u{fe9b}',
10049 '\u{fe9d}',
10050 '\u{fe9f}',
10051 '\u{fb7a}',
10052 '\u{fb7c}',
10053 '\u{fea1}',
10054 '\u{fea3}',
10055 '\u{fea5}',
10056 '\u{fea7}',
10057 '\u{fea9}',
10058 '\u{fb88}',
10059 '\u{feab}',
10060 '\u{fead}',
10061 '\u{fb8c}',
10062 '\u{feaf}',
10063 '\u{fb8a}',
10064 '\u{feb1}',
10065 '\u{feb3}',
10066 '\u{feb5}',
10067 '\u{ab}',
10068 '\u{bb}',
10069 '\u{2591}',
10070 '\u{2592}',
10071 '\u{2593}',
10072 '\u{2502}',
10073 '\u{2524}',
10074 '\u{feb7}',
10075 '\u{feb9}',
10076 '\u{febb}',
10077 '\u{febd}',
10078 '\u{2563}',
10079 '\u{2551}',
10080 '\u{2557}',
10081 '\u{255d}',
10082 '\u{febf}',
10083 '\u{fec3}',
10084 '\u{2510}',
10085 '\u{2514}',
10086 '\u{2534}',
10087 '\u{252c}',
10088 '\u{251c}',
10089 '\u{2500}',
10090 '\u{253c}',
10091 '\u{fec7}',
10092 '\u{fec9}',
10093 '\u{255a}',
10094 '\u{2554}',
10095 '\u{2569}',
10096 '\u{2566}',
10097 '\u{2560}',
10098 '\u{2550}',
10099 '\u{256c}',
10100 '\u{feca}',
10101 '\u{fecb}',
10102 '\u{fecc}',
10103 '\u{fecd}',
10104 '\u{fece}',
10105 '\u{fecf}',
10106 '\u{fed0}',
10107 '\u{fed1}',
10108 '\u{fed3}',
10109 '\u{fed5}',
10110 '\u{2518}',
10111 '\u{250c}',
10112 '\u{2588}',
10113 '\u{2584}',
10114 '\u{fed7}',
10115 '\u{fb8e}',
10116 '\u{2580}',
10117 '\u{fedb}',
10118 '\u{fb92}',
10119 '\u{fb94}',
10120 '\u{fedd}',
10121 '\u{fedf}',
10122 '\u{fee0}',
10123 '\u{fee1}',
10124 '\u{fee3}',
10125 '\u{fb9e}',
10126 '\u{fee5}',
10127 '\u{fee7}',
10128 '\u{fe85}',
10129 '\u{feed}',
10130 '\u{fba6}',
10131 '\u{fba8}',
10132 '\u{fba9}',
10133 '\u{ad}',
10134 '\u{fbaa}',
10135 '\u{fe80}',
10136 '\u{fe89}',
10137 '\u{fe8a}',
10138 '\u{fe8b}',
10139 '\u{fbfc}',
10140 '\u{fbfd}',
10141 '\u{fbfe}',
10142 '\u{fbb0}',
10143 '\u{fbae}',
10144 '\u{fe7c}',
10145 '\u{fe7d}',
10146 char::REPLACEMENT_CHARACTER,
10147 '\u{25a0}',
10148 '\u{a0}',
10149];
10150const IBM_868_ENCODE_TABLE: &[(u16, u8)] = &[
10151 (0, 0),
10152 (1, 1),
10153 (2, 2),
10154 (3, 3),
10155 (4, 4),
10156 (5, 5),
10157 (6, 6),
10158 (7, 7),
10159 (8, 8),
10160 (9, 9),
10161 (10, 10),
10162 (11, 11),
10163 (12, 12),
10164 (13, 13),
10165 (14, 14),
10166 (15, 15),
10167 (16, 16),
10168 (17, 17),
10169 (18, 18),
10170 (19, 19),
10171 (20, 20),
10172 (21, 21),
10173 (22, 22),
10174 (23, 23),
10175 (24, 24),
10176 (25, 25),
10177 (26, 127),
10178 (27, 27),
10179 (28, 26),
10180 (29, 29),
10181 (30, 30),
10182 (31, 31),
10183 (32, 32),
10184 (33, 33),
10185 (34, 34),
10186 (35, 35),
10187 (36, 36),
10188 (37, 37),
10189 (38, 38),
10190 (39, 39),
10191 (40, 40),
10192 (41, 41),
10193 (42, 42),
10194 (43, 43),
10195 (44, 44),
10196 (45, 45),
10197 (46, 46),
10198 (47, 47),
10199 (48, 48),
10200 (49, 49),
10201 (50, 50),
10202 (51, 51),
10203 (52, 52),
10204 (53, 53),
10205 (54, 54),
10206 (55, 55),
10207 (56, 56),
10208 (57, 57),
10209 (58, 58),
10210 (59, 59),
10211 (60, 60),
10212 (61, 61),
10213 (62, 62),
10214 (63, 63),
10215 (64, 64),
10216 (65, 65),
10217 (66, 66),
10218 (67, 67),
10219 (68, 68),
10220 (69, 69),
10221 (70, 70),
10222 (71, 71),
10223 (72, 72),
10224 (73, 73),
10225 (74, 74),
10226 (75, 75),
10227 (76, 76),
10228 (77, 77),
10229 (78, 78),
10230 (79, 79),
10231 (80, 80),
10232 (81, 81),
10233 (82, 82),
10234 (83, 83),
10235 (84, 84),
10236 (85, 85),
10237 (86, 86),
10238 (87, 87),
10239 (88, 88),
10240 (89, 89),
10241 (90, 90),
10242 (91, 91),
10243 (92, 92),
10244 (93, 93),
10245 (94, 94),
10246 (95, 95),
10247 (96, 96),
10248 (97, 97),
10249 (98, 98),
10250 (99, 99),
10251 (100, 100),
10252 (101, 101),
10253 (102, 102),
10254 (103, 103),
10255 (104, 104),
10256 (105, 105),
10257 (106, 106),
10258 (107, 107),
10259 (108, 108),
10260 (109, 109),
10261 (110, 110),
10262 (111, 111),
10263 (112, 112),
10264 (113, 113),
10265 (114, 114),
10266 (115, 115),
10267 (116, 116),
10268 (117, 117),
10269 (118, 118),
10270 (119, 119),
10271 (120, 120),
10272 (121, 121),
10273 (122, 122),
10274 (123, 123),
10275 (124, 124),
10276 (125, 125),
10277 (126, 126),
10278 (127, 28),
10279 (160, 255),
10280 (171, 174),
10281 (173, 240),
10282 (187, 175),
10283 (1548, 138),
10284 (1563, 139),
10285 (1567, 140),
10286 (1776, 128),
10287 (1777, 129),
10288 (1778, 130),
10289 (1779, 131),
10290 (1780, 132),
10291 (1781, 133),
10292 (1782, 134),
10293 (1783, 135),
10294 (1784, 136),
10295 (1785, 137),
10296 (9472, 196),
10297 (9474, 179),
10298 (9484, 218),
10299 (9488, 191),
10300 (9492, 192),
10301 (9496, 217),
10302 (9500, 195),
10303 (9508, 180),
10304 (9516, 194),
10305 (9524, 193),
10306 (9532, 197),
10307 (9552, 205),
10308 (9553, 186),
10309 (9556, 201),
10310 (9559, 187),
10311 (9562, 200),
10312 (9565, 188),
10313 (9568, 204),
10314 (9571, 185),
10315 (9574, 203),
10316 (9577, 202),
10317 (9580, 206),
10318 (9600, 223),
10319 (9604, 220),
10320 (9608, 219),
10321 (9617, 176),
10322 (9618, 177),
10323 (9619, 178),
10324 (9632, 254),
10325 (63739, 144),
10326 (64342, 147),
10327 (64344, 148),
10328 (64358, 152),
10329 (64360, 153),
10330 (64378, 158),
10331 (64380, 159),
10332 (64392, 165),
10333 (64394, 170),
10334 (64396, 168),
10335 (64398, 222),
10336 (64402, 225),
10337 (64404, 226),
10338 (64414, 232),
10339 (64422, 237),
10340 (64424, 238),
10341 (64425, 239),
10342 (64426, 241),
10343 (64430, 250),
10344 (64432, 249),
10345 (64508, 246),
10346 (64509, 247),
10347 (64510, 248),
10348 (65148, 251),
10349 (65149, 252),
10350 (65152, 242),
10351 (65153, 141),
10352 (65157, 235),
10353 (65161, 243),
10354 (65162, 244),
10355 (65163, 245),
10356 (65165, 142),
10357 (65166, 143),
10358 (65167, 145),
10359 (65169, 146),
10360 (65171, 149),
10361 (65173, 150),
10362 (65175, 151),
10363 (65177, 154),
10364 (65179, 155),
10365 (65181, 156),
10366 (65183, 157),
10367 (65185, 160),
10368 (65187, 161),
10369 (65189, 162),
10370 (65191, 163),
10371 (65193, 164),
10372 (65195, 166),
10373 (65197, 167),
10374 (65199, 169),
10375 (65201, 171),
10376 (65203, 172),
10377 (65205, 173),
10378 (65207, 181),
10379 (65209, 182),
10380 (65211, 183),
10381 (65213, 184),
10382 (65215, 189),
10383 (65219, 190),
10384 (65223, 198),
10385 (65225, 199),
10386 (65226, 207),
10387 (65227, 208),
10388 (65228, 209),
10389 (65229, 210),
10390 (65230, 211),
10391 (65231, 212),
10392 (65232, 213),
10393 (65233, 214),
10394 (65235, 215),
10395 (65237, 216),
10396 (65239, 221),
10397 (65243, 224),
10398 (65245, 227),
10399 (65247, 228),
10400 (65248, 229),
10401 (65249, 230),
10402 (65251, 231),
10403 (65253, 233),
10404 (65255, 234),
10405 (65261, 236),
10406];
10407
10408impl_ebcdic_encoder_and_decoder!(
10409 IBM869,
10410 "IBM869",
10411 IBM869Encoder,
10412 IBM869Decoder,
10413 IBM_869_ENCODE_TABLE,
10414 IBM_869_DECODE_TABLE
10415);
10416const IBM_869_DECODE_TABLE: [char; 256] = [
10417 '\u{0}',
10418 '\u{1}',
10419 '\u{2}',
10420 '\u{3}',
10421 '\u{4}',
10422 '\u{5}',
10423 '\u{6}',
10424 '\u{7}',
10425 '\u{8}',
10426 '\u{9}',
10427 '\u{a}',
10428 '\u{b}',
10429 '\u{c}',
10430 '\u{d}',
10431 '\u{e}',
10432 '\u{f}',
10433 '\u{10}',
10434 '\u{11}',
10435 '\u{12}',
10436 '\u{13}',
10437 '\u{14}',
10438 '\u{15}',
10439 '\u{16}',
10440 '\u{17}',
10441 '\u{18}',
10442 '\u{19}',
10443 '\u{1c}',
10444 '\u{1b}',
10445 '\u{7f}',
10446 '\u{1d}',
10447 '\u{1e}',
10448 '\u{1f}',
10449 '\u{20}',
10450 '\u{21}',
10451 '\u{22}',
10452 '\u{23}',
10453 '\u{24}',
10454 '\u{25}',
10455 '\u{26}',
10456 '\u{27}',
10457 '\u{28}',
10458 '\u{29}',
10459 '\u{2a}',
10460 '\u{2b}',
10461 '\u{2c}',
10462 '\u{2d}',
10463 '\u{2e}',
10464 '\u{2f}',
10465 '\u{30}',
10466 '\u{31}',
10467 '\u{32}',
10468 '\u{33}',
10469 '\u{34}',
10470 '\u{35}',
10471 '\u{36}',
10472 '\u{37}',
10473 '\u{38}',
10474 '\u{39}',
10475 '\u{3a}',
10476 '\u{3b}',
10477 '\u{3c}',
10478 '\u{3d}',
10479 '\u{3e}',
10480 '\u{3f}',
10481 '\u{40}',
10482 '\u{41}',
10483 '\u{42}',
10484 '\u{43}',
10485 '\u{44}',
10486 '\u{45}',
10487 '\u{46}',
10488 '\u{47}',
10489 '\u{48}',
10490 '\u{49}',
10491 '\u{4a}',
10492 '\u{4b}',
10493 '\u{4c}',
10494 '\u{4d}',
10495 '\u{4e}',
10496 '\u{4f}',
10497 '\u{50}',
10498 '\u{51}',
10499 '\u{52}',
10500 '\u{53}',
10501 '\u{54}',
10502 '\u{55}',
10503 '\u{56}',
10504 '\u{57}',
10505 '\u{58}',
10506 '\u{59}',
10507 '\u{5a}',
10508 '\u{5b}',
10509 '\u{5c}',
10510 '\u{5d}',
10511 '\u{5e}',
10512 '\u{5f}',
10513 '\u{60}',
10514 '\u{61}',
10515 '\u{62}',
10516 '\u{63}',
10517 '\u{64}',
10518 '\u{65}',
10519 '\u{66}',
10520 '\u{67}',
10521 '\u{68}',
10522 '\u{69}',
10523 '\u{6a}',
10524 '\u{6b}',
10525 '\u{6c}',
10526 '\u{6d}',
10527 '\u{6e}',
10528 '\u{6f}',
10529 '\u{70}',
10530 '\u{71}',
10531 '\u{72}',
10532 '\u{73}',
10533 '\u{74}',
10534 '\u{75}',
10535 '\u{76}',
10536 '\u{77}',
10537 '\u{78}',
10538 '\u{79}',
10539 '\u{7a}',
10540 '\u{7b}',
10541 '\u{7c}',
10542 '\u{7d}',
10543 '\u{7e}',
10544 '\u{1a}',
10545 char::REPLACEMENT_CHARACTER,
10546 char::REPLACEMENT_CHARACTER,
10547 char::REPLACEMENT_CHARACTER,
10548 char::REPLACEMENT_CHARACTER,
10549 char::REPLACEMENT_CHARACTER,
10550 char::REPLACEMENT_CHARACTER,
10551 '\u{386}',
10552 char::REPLACEMENT_CHARACTER,
10553 '\u{387}',
10554 '\u{ac}',
10555 '\u{a6}',
10556 '\u{2018}',
10557 '\u{2019}',
10558 '\u{388}',
10559 '\u{2015}',
10560 '\u{389}',
10561 '\u{38a}',
10562 '\u{3aa}',
10563 '\u{38c}',
10564 char::REPLACEMENT_CHARACTER,
10565 char::REPLACEMENT_CHARACTER,
10566 '\u{38e}',
10567 '\u{3ab}',
10568 '\u{a9}',
10569 '\u{38f}',
10570 '\u{b2}',
10571 '\u{b3}',
10572 '\u{3ac}',
10573 '\u{a3}',
10574 '\u{3ad}',
10575 '\u{3ae}',
10576 '\u{3af}',
10577 '\u{3ca}',
10578 '\u{390}',
10579 '\u{3cc}',
10580 '\u{3cd}',
10581 '\u{391}',
10582 '\u{392}',
10583 '\u{393}',
10584 '\u{394}',
10585 '\u{395}',
10586 '\u{396}',
10587 '\u{397}',
10588 '\u{bd}',
10589 '\u{398}',
10590 '\u{399}',
10591 '\u{ab}',
10592 '\u{bb}',
10593 '\u{2591}',
10594 '\u{2592}',
10595 '\u{2593}',
10596 '\u{2502}',
10597 '\u{2524}',
10598 '\u{39a}',
10599 '\u{39b}',
10600 '\u{39c}',
10601 '\u{39d}',
10602 '\u{2563}',
10603 '\u{2551}',
10604 '\u{2557}',
10605 '\u{255d}',
10606 '\u{39e}',
10607 '\u{39f}',
10608 '\u{2510}',
10609 '\u{2514}',
10610 '\u{2534}',
10611 '\u{252c}',
10612 '\u{251c}',
10613 '\u{2500}',
10614 '\u{253c}',
10615 '\u{3a0}',
10616 '\u{3a1}',
10617 '\u{255a}',
10618 '\u{2554}',
10619 '\u{2569}',
10620 '\u{2566}',
10621 '\u{2560}',
10622 '\u{2550}',
10623 '\u{256c}',
10624 '\u{3a3}',
10625 '\u{3a4}',
10626 '\u{3a5}',
10627 '\u{3a6}',
10628 '\u{3a7}',
10629 '\u{3a8}',
10630 '\u{3a9}',
10631 '\u{3b1}',
10632 '\u{3b2}',
10633 '\u{3b3}',
10634 '\u{2518}',
10635 '\u{250c}',
10636 '\u{2588}',
10637 '\u{2584}',
10638 '\u{3b4}',
10639 '\u{3b5}',
10640 '\u{2580}',
10641 '\u{3b6}',
10642 '\u{3b7}',
10643 '\u{3b8}',
10644 '\u{3b9}',
10645 '\u{3ba}',
10646 '\u{3bb}',
10647 '\u{3bc}',
10648 '\u{3bd}',
10649 '\u{3be}',
10650 '\u{3bf}',
10651 '\u{3c0}',
10652 '\u{3c1}',
10653 '\u{3c3}',
10654 '\u{3c2}',
10655 '\u{3c4}',
10656 '\u{b4}',
10657 '\u{ad}',
10658 '\u{b1}',
10659 '\u{3c5}',
10660 '\u{3c6}',
10661 '\u{3c7}',
10662 '\u{a7}',
10663 '\u{3c8}',
10664 '\u{385}',
10665 '\u{b0}',
10666 '\u{a8}',
10667 '\u{3c9}',
10668 '\u{3cb}',
10669 '\u{3b0}',
10670 '\u{3ce}',
10671 '\u{25a0}',
10672 '\u{a0}',
10673];
10674const IBM_869_ENCODE_TABLE: &[(u16, u8)] = &[
10675 (0, 0),
10676 (1, 1),
10677 (2, 2),
10678 (3, 3),
10679 (4, 4),
10680 (5, 5),
10681 (6, 6),
10682 (7, 7),
10683 (8, 8),
10684 (9, 9),
10685 (10, 10),
10686 (11, 11),
10687 (12, 12),
10688 (13, 13),
10689 (14, 14),
10690 (15, 15),
10691 (16, 16),
10692 (17, 17),
10693 (18, 18),
10694 (19, 19),
10695 (20, 20),
10696 (21, 21),
10697 (22, 22),
10698 (23, 23),
10699 (24, 24),
10700 (25, 25),
10701 (26, 127),
10702 (27, 27),
10703 (28, 26),
10704 (29, 29),
10705 (30, 30),
10706 (31, 31),
10707 (32, 32),
10708 (33, 33),
10709 (34, 34),
10710 (35, 35),
10711 (36, 36),
10712 (37, 37),
10713 (38, 38),
10714 (39, 39),
10715 (40, 40),
10716 (41, 41),
10717 (42, 42),
10718 (43, 43),
10719 (44, 44),
10720 (45, 45),
10721 (46, 46),
10722 (47, 47),
10723 (48, 48),
10724 (49, 49),
10725 (50, 50),
10726 (51, 51),
10727 (52, 52),
10728 (53, 53),
10729 (54, 54),
10730 (55, 55),
10731 (56, 56),
10732 (57, 57),
10733 (58, 58),
10734 (59, 59),
10735 (60, 60),
10736 (61, 61),
10737 (62, 62),
10738 (63, 63),
10739 (64, 64),
10740 (65, 65),
10741 (66, 66),
10742 (67, 67),
10743 (68, 68),
10744 (69, 69),
10745 (70, 70),
10746 (71, 71),
10747 (72, 72),
10748 (73, 73),
10749 (74, 74),
10750 (75, 75),
10751 (76, 76),
10752 (77, 77),
10753 (78, 78),
10754 (79, 79),
10755 (80, 80),
10756 (81, 81),
10757 (82, 82),
10758 (83, 83),
10759 (84, 84),
10760 (85, 85),
10761 (86, 86),
10762 (87, 87),
10763 (88, 88),
10764 (89, 89),
10765 (90, 90),
10766 (91, 91),
10767 (92, 92),
10768 (93, 93),
10769 (94, 94),
10770 (95, 95),
10771 (96, 96),
10772 (97, 97),
10773 (98, 98),
10774 (99, 99),
10775 (100, 100),
10776 (101, 101),
10777 (102, 102),
10778 (103, 103),
10779 (104, 104),
10780 (105, 105),
10781 (106, 106),
10782 (107, 107),
10783 (108, 108),
10784 (109, 109),
10785 (110, 110),
10786 (111, 111),
10787 (112, 112),
10788 (113, 113),
10789 (114, 114),
10790 (115, 115),
10791 (116, 116),
10792 (117, 117),
10793 (118, 118),
10794 (119, 119),
10795 (120, 120),
10796 (121, 121),
10797 (122, 122),
10798 (123, 123),
10799 (124, 124),
10800 (125, 125),
10801 (126, 126),
10802 (127, 28),
10803 (160, 255),
10804 (163, 156),
10805 (166, 138),
10806 (167, 245),
10807 (168, 249),
10808 (169, 151),
10809 (171, 174),
10810 (172, 137),
10811 (173, 240),
10812 (176, 248),
10813 (177, 241),
10814 (178, 153),
10815 (179, 154),
10816 (180, 239),
10817 (187, 175),
10818 (189, 171),
10819 (901, 247),
10820 (902, 134),
10821 (903, 136),
10822 (904, 141),
10823 (905, 143),
10824 (906, 144),
10825 (908, 146),
10826 (910, 149),
10827 (911, 152),
10828 (912, 161),
10829 (913, 164),
10830 (914, 165),
10831 (915, 166),
10832 (916, 167),
10833 (917, 168),
10834 (918, 169),
10835 (919, 170),
10836 (920, 172),
10837 (921, 173),
10838 (922, 181),
10839 (923, 182),
10840 (924, 183),
10841 (925, 184),
10842 (926, 189),
10843 (927, 190),
10844 (928, 198),
10845 (929, 199),
10846 (931, 207),
10847 (932, 208),
10848 (933, 209),
10849 (934, 210),
10850 (935, 211),
10851 (936, 212),
10852 (937, 213),
10853 (938, 145),
10854 (939, 150),
10855 (940, 155),
10856 (941, 157),
10857 (942, 158),
10858 (943, 159),
10859 (944, 252),
10860 (945, 214),
10861 (946, 215),
10862 (947, 216),
10863 (948, 221),
10864 (949, 222),
10865 (950, 224),
10866 (951, 225),
10867 (952, 226),
10868 (953, 227),
10869 (954, 228),
10870 (955, 229),
10871 (956, 230),
10872 (957, 231),
10873 (958, 232),
10874 (959, 233),
10875 (960, 234),
10876 (961, 235),
10877 (962, 237),
10878 (963, 236),
10879 (964, 238),
10880 (965, 242),
10881 (966, 243),
10882 (967, 244),
10883 (968, 246),
10884 (969, 250),
10885 (970, 160),
10886 (971, 251),
10887 (972, 162),
10888 (973, 163),
10889 (974, 253),
10890 (8213, 142),
10891 (8216, 139),
10892 (8217, 140),
10893 (9472, 196),
10894 (9474, 179),
10895 (9484, 218),
10896 (9488, 191),
10897 (9492, 192),
10898 (9496, 217),
10899 (9500, 195),
10900 (9508, 180),
10901 (9516, 194),
10902 (9524, 193),
10903 (9532, 197),
10904 (9552, 205),
10905 (9553, 186),
10906 (9556, 201),
10907 (9559, 187),
10908 (9562, 200),
10909 (9565, 188),
10910 (9568, 204),
10911 (9571, 185),
10912 (9574, 203),
10913 (9577, 202),
10914 (9580, 206),
10915 (9600, 223),
10916 (9604, 220),
10917 (9608, 219),
10918 (9617, 176),
10919 (9618, 177),
10920 (9619, 178),
10921 (9632, 254),
10922];
10923
10924impl_ebcdic_encoder_and_decoder!(
10925 IBM870,
10926 "IBM870",
10927 IBM870Encoder,
10928 IBM870Decoder,
10929 IBM_870_ENCODE_TABLE,
10930 IBM_870_DECODE_TABLE
10931);
10932const IBM_870_DECODE_TABLE: [char; 256] = [
10933 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
10934 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
10935 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
10936 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
10937 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
10938 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
10939 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
10940 '\u{a0}', '\u{e2}', '\u{e4}', '\u{163}', '\u{e1}', '\u{103}', '\u{10d}', '\u{e7}', '\u{107}',
10941 '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{119}',
10942 '\u{eb}', '\u{16f}', '\u{ed}', '\u{ee}', '\u{13e}', '\u{13a}', '\u{df}', '\u{5d}', '\u{24}',
10943 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{2dd}',
10944 '\u{c1}', '\u{102}', '\u{10c}', '\u{c7}', '\u{106}', '\u{7c}', '\u{2c}', '\u{25}', '\u{5f}',
10945 '\u{3e}', '\u{3f}', '\u{2c7}', '\u{c9}', '\u{118}', '\u{cb}', '\u{16e}', '\u{cd}', '\u{ce}',
10946 '\u{13d}', '\u{139}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
10947 '\u{2d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
10948 '\u{69}', '\u{15b}', '\u{148}', '\u{111}', '\u{fd}', '\u{159}', '\u{15f}', '\u{b0}', '\u{6a}',
10949 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{142}',
10950 '\u{144}', '\u{161}', '\u{b8}', '\u{2db}', '\u{a4}', '\u{105}', '\u{7e}', '\u{73}', '\u{74}',
10951 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{15a}', '\u{147}', '\u{110}',
10952 '\u{dd}', '\u{158}', '\u{15e}', '\u{2d9}', '\u{104}', '\u{17c}', '\u{162}', '\u{17b}',
10953 '\u{a7}', '\u{17e}', '\u{17a}', '\u{17d}', '\u{179}', '\u{141}', '\u{143}', '\u{160}',
10954 '\u{a8}', '\u{b4}', '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}',
10955 '\u{46}', '\u{47}', '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{155}', '\u{f3}',
10956 '\u{151}', '\u{7d}', '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}',
10957 '\u{51}', '\u{52}', '\u{11a}', '\u{171}', '\u{fc}', '\u{165}', '\u{fa}', '\u{11b}', '\u{5c}',
10958 '\u{f7}', '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}',
10959 '\u{10f}', '\u{d4}', '\u{d6}', '\u{154}', '\u{d3}', '\u{150}', '\u{30}', '\u{31}', '\u{32}',
10960 '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{10e}', '\u{170}',
10961 '\u{dc}', '\u{164}', '\u{da}', '\u{9f}',
10962];
10963const IBM_870_ENCODE_TABLE: &[(u16, u8)] = &[
10964 (0, 0),
10965 (1, 1),
10966 (2, 2),
10967 (3, 3),
10968 (4, 55),
10969 (5, 45),
10970 (6, 46),
10971 (7, 47),
10972 (8, 22),
10973 (9, 5),
10974 (10, 37),
10975 (11, 11),
10976 (12, 12),
10977 (13, 13),
10978 (14, 14),
10979 (15, 15),
10980 (16, 16),
10981 (17, 17),
10982 (18, 18),
10983 (19, 19),
10984 (20, 60),
10985 (21, 61),
10986 (22, 50),
10987 (23, 38),
10988 (24, 24),
10989 (25, 25),
10990 (26, 63),
10991 (27, 39),
10992 (28, 28),
10993 (29, 29),
10994 (30, 30),
10995 (31, 31),
10996 (32, 64),
10997 (33, 79),
10998 (34, 127),
10999 (35, 123),
11000 (36, 91),
11001 (37, 108),
11002 (38, 80),
11003 (39, 125),
11004 (40, 77),
11005 (41, 93),
11006 (42, 92),
11007 (43, 78),
11008 (44, 107),
11009 (45, 96),
11010 (46, 75),
11011 (47, 97),
11012 (48, 240),
11013 (49, 241),
11014 (50, 242),
11015 (51, 243),
11016 (52, 244),
11017 (53, 245),
11018 (54, 246),
11019 (55, 247),
11020 (56, 248),
11021 (57, 249),
11022 (58, 122),
11023 (59, 94),
11024 (60, 76),
11025 (61, 126),
11026 (62, 110),
11027 (63, 111),
11028 (64, 124),
11029 (65, 193),
11030 (66, 194),
11031 (67, 195),
11032 (68, 196),
11033 (69, 197),
11034 (70, 198),
11035 (71, 199),
11036 (72, 200),
11037 (73, 201),
11038 (74, 209),
11039 (75, 210),
11040 (76, 211),
11041 (77, 212),
11042 (78, 213),
11043 (79, 214),
11044 (80, 215),
11045 (81, 216),
11046 (82, 217),
11047 (83, 226),
11048 (84, 227),
11049 (85, 228),
11050 (86, 229),
11051 (87, 230),
11052 (88, 231),
11053 (89, 232),
11054 (90, 233),
11055 (91, 74),
11056 (92, 224),
11057 (93, 90),
11058 (94, 95),
11059 (95, 109),
11060 (96, 121),
11061 (97, 129),
11062 (98, 130),
11063 (99, 131),
11064 (100, 132),
11065 (101, 133),
11066 (102, 134),
11067 (103, 135),
11068 (104, 136),
11069 (105, 137),
11070 (106, 145),
11071 (107, 146),
11072 (108, 147),
11073 (109, 148),
11074 (110, 149),
11075 (111, 150),
11076 (112, 151),
11077 (113, 152),
11078 (114, 153),
11079 (115, 162),
11080 (116, 163),
11081 (117, 164),
11082 (118, 165),
11083 (119, 166),
11084 (120, 167),
11085 (121, 168),
11086 (122, 169),
11087 (123, 192),
11088 (124, 106),
11089 (125, 208),
11090 (126, 161),
11091 (127, 7),
11092 (128, 32),
11093 (129, 33),
11094 (130, 34),
11095 (131, 35),
11096 (132, 36),
11097 (133, 21),
11098 (134, 6),
11099 (135, 23),
11100 (136, 40),
11101 (137, 41),
11102 (138, 42),
11103 (139, 43),
11104 (140, 44),
11105 (141, 9),
11106 (142, 10),
11107 (143, 27),
11108 (144, 48),
11109 (145, 49),
11110 (146, 26),
11111 (147, 51),
11112 (148, 52),
11113 (149, 53),
11114 (150, 54),
11115 (151, 8),
11116 (152, 56),
11117 (153, 57),
11118 (154, 58),
11119 (155, 59),
11120 (156, 4),
11121 (157, 20),
11122 (158, 62),
11123 (159, 255),
11124 (160, 65),
11125 (164, 159),
11126 (167, 181),
11127 (168, 189),
11128 (173, 202),
11129 (176, 144),
11130 (180, 190),
11131 (184, 157),
11132 (193, 101),
11133 (194, 98),
11134 (196, 99),
11135 (199, 104),
11136 (201, 113),
11137 (203, 115),
11138 (205, 117),
11139 (206, 118),
11140 (211, 238),
11141 (212, 235),
11142 (214, 236),
11143 (215, 191),
11144 (218, 254),
11145 (220, 252),
11146 (221, 173),
11147 (223, 89),
11148 (225, 69),
11149 (226, 66),
11150 (228, 67),
11151 (231, 72),
11152 (233, 81),
11153 (235, 83),
11154 (237, 85),
11155 (238, 86),
11156 (243, 206),
11157 (244, 203),
11158 (246, 204),
11159 (247, 225),
11160 (250, 222),
11161 (252, 220),
11162 (253, 141),
11163 (258, 102),
11164 (259, 70),
11165 (260, 177),
11166 (261, 160),
11167 (262, 105),
11168 (263, 73),
11169 (268, 103),
11170 (269, 71),
11171 (270, 250),
11172 (271, 234),
11173 (272, 172),
11174 (273, 140),
11175 (280, 114),
11176 (281, 82),
11177 (282, 218),
11178 (283, 223),
11179 (313, 120),
11180 (314, 88),
11181 (317, 119),
11182 (318, 87),
11183 (321, 186),
11184 (322, 154),
11185 (323, 187),
11186 (324, 155),
11187 (327, 171),
11188 (328, 139),
11189 (336, 239),
11190 (337, 207),
11191 (340, 237),
11192 (341, 205),
11193 (344, 174),
11194 (345, 142),
11195 (346, 170),
11196 (347, 138),
11197 (350, 175),
11198 (351, 143),
11199 (352, 188),
11200 (353, 156),
11201 (354, 179),
11202 (355, 68),
11203 (356, 253),
11204 (357, 221),
11205 (366, 116),
11206 (367, 84),
11207 (368, 251),
11208 (369, 219),
11209 (377, 185),
11210 (378, 183),
11211 (379, 180),
11212 (380, 178),
11213 (381, 184),
11214 (382, 182),
11215 (711, 112),
11216 (728, 128),
11217 (729, 176),
11218 (731, 158),
11219 (733, 100),
11220];
11221
11222impl_ebcdic_encoder_and_decoder!(
11223 IBM871,
11224 "IBM871",
11225 IBM871Encoder,
11226 IBM871Decoder,
11227 IBM_871_ENCODE_TABLE,
11228 IBM_871_DECODE_TABLE
11229);
11230const IBM_871_DECODE_TABLE: [char; 256] = [
11231 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11232 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11233 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11234 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11235 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11236 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11237 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11238 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
11239 '\u{de}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
11240 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{c6}', '\u{24}',
11241 '\u{2a}', '\u{29}', '\u{3b}', '\u{d6}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
11242 '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
11243 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
11244 '\u{cf}', '\u{cc}', '\u{f0}', '\u{3a}', '\u{23}', '\u{d0}', '\u{27}', '\u{3d}', '\u{22}',
11245 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
11246 '\u{69}', '\u{ab}', '\u{bb}', '\u{60}', '\u{fd}', '\u{7b}', '\u{b1}', '\u{b0}', '\u{6a}',
11247 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
11248 '\u{ba}', '\u{7d}', '\u{b8}', '\u{5d}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
11249 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{40}',
11250 '\u{dd}', '\u{5b}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
11251 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{5c}',
11252 '\u{d7}', '\u{fe}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
11253 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e6}',
11254 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
11255 '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{b4}', '\u{f7}', '\u{53}',
11256 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
11257 '\u{5e}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
11258 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
11259 '\u{da}', '\u{9f}',
11260];
11261const IBM_871_ENCODE_TABLE: &[(u16, u8)] = &[
11262 (0, 0),
11263 (1, 1),
11264 (2, 2),
11265 (3, 3),
11266 (4, 55),
11267 (5, 45),
11268 (6, 46),
11269 (7, 47),
11270 (8, 22),
11271 (9, 5),
11272 (10, 37),
11273 (11, 11),
11274 (12, 12),
11275 (13, 13),
11276 (14, 14),
11277 (15, 15),
11278 (16, 16),
11279 (17, 17),
11280 (18, 18),
11281 (19, 19),
11282 (20, 60),
11283 (21, 61),
11284 (22, 50),
11285 (23, 38),
11286 (24, 24),
11287 (25, 25),
11288 (26, 63),
11289 (27, 39),
11290 (28, 28),
11291 (29, 29),
11292 (30, 30),
11293 (31, 31),
11294 (32, 64),
11295 (33, 79),
11296 (34, 127),
11297 (35, 123),
11298 (36, 91),
11299 (37, 108),
11300 (38, 80),
11301 (39, 125),
11302 (40, 77),
11303 (41, 93),
11304 (42, 92),
11305 (43, 78),
11306 (44, 107),
11307 (45, 96),
11308 (46, 75),
11309 (47, 97),
11310 (48, 240),
11311 (49, 241),
11312 (50, 242),
11313 (51, 243),
11314 (52, 244),
11315 (53, 245),
11316 (54, 246),
11317 (55, 247),
11318 (56, 248),
11319 (57, 249),
11320 (58, 122),
11321 (59, 94),
11322 (60, 76),
11323 (61, 126),
11324 (62, 110),
11325 (63, 111),
11326 (64, 172),
11327 (65, 193),
11328 (66, 194),
11329 (67, 195),
11330 (68, 196),
11331 (69, 197),
11332 (70, 198),
11333 (71, 199),
11334 (72, 200),
11335 (73, 201),
11336 (74, 209),
11337 (75, 210),
11338 (76, 211),
11339 (77, 212),
11340 (78, 213),
11341 (79, 214),
11342 (80, 215),
11343 (81, 216),
11344 (82, 217),
11345 (83, 226),
11346 (84, 227),
11347 (85, 228),
11348 (86, 229),
11349 (87, 230),
11350 (88, 231),
11351 (89, 232),
11352 (90, 233),
11353 (91, 174),
11354 (92, 190),
11355 (93, 158),
11356 (94, 236),
11357 (95, 109),
11358 (96, 140),
11359 (97, 129),
11360 (98, 130),
11361 (99, 131),
11362 (100, 132),
11363 (101, 133),
11364 (102, 134),
11365 (103, 135),
11366 (104, 136),
11367 (105, 137),
11368 (106, 145),
11369 (107, 146),
11370 (108, 147),
11371 (109, 148),
11372 (110, 149),
11373 (111, 150),
11374 (112, 151),
11375 (113, 152),
11376 (114, 153),
11377 (115, 162),
11378 (116, 163),
11379 (117, 164),
11380 (118, 165),
11381 (119, 166),
11382 (120, 167),
11383 (121, 168),
11384 (122, 169),
11385 (123, 142),
11386 (124, 187),
11387 (125, 156),
11388 (126, 204),
11389 (127, 7),
11390 (128, 32),
11391 (129, 33),
11392 (130, 34),
11393 (131, 35),
11394 (132, 36),
11395 (133, 21),
11396 (134, 6),
11397 (135, 23),
11398 (136, 40),
11399 (137, 41),
11400 (138, 42),
11401 (139, 43),
11402 (140, 44),
11403 (141, 9),
11404 (142, 10),
11405 (143, 27),
11406 (144, 48),
11407 (145, 49),
11408 (146, 26),
11409 (147, 51),
11410 (148, 52),
11411 (149, 53),
11412 (150, 54),
11413 (151, 8),
11414 (152, 56),
11415 (153, 57),
11416 (154, 58),
11417 (155, 59),
11418 (156, 4),
11419 (157, 20),
11420 (158, 62),
11421 (159, 255),
11422 (160, 65),
11423 (161, 170),
11424 (162, 176),
11425 (163, 177),
11426 (164, 159),
11427 (165, 178),
11428 (166, 106),
11429 (167, 181),
11430 (168, 189),
11431 (169, 180),
11432 (170, 154),
11433 (171, 138),
11434 (172, 186),
11435 (173, 202),
11436 (174, 175),
11437 (175, 188),
11438 (176, 144),
11439 (177, 143),
11440 (178, 234),
11441 (179, 250),
11442 (180, 224),
11443 (181, 160),
11444 (182, 182),
11445 (183, 179),
11446 (184, 157),
11447 (185, 218),
11448 (186, 155),
11449 (187, 139),
11450 (188, 183),
11451 (189, 184),
11452 (190, 185),
11453 (191, 171),
11454 (192, 100),
11455 (193, 101),
11456 (194, 98),
11457 (195, 102),
11458 (196, 99),
11459 (197, 103),
11460 (198, 90),
11461 (199, 104),
11462 (200, 116),
11463 (201, 113),
11464 (202, 114),
11465 (203, 115),
11466 (204, 120),
11467 (205, 117),
11468 (206, 118),
11469 (207, 119),
11470 (208, 124),
11471 (209, 105),
11472 (210, 237),
11473 (211, 238),
11474 (212, 235),
11475 (213, 239),
11476 (214, 95),
11477 (215, 191),
11478 (216, 128),
11479 (217, 253),
11480 (218, 254),
11481 (219, 251),
11482 (220, 252),
11483 (221, 173),
11484 (222, 74),
11485 (223, 89),
11486 (224, 68),
11487 (225, 69),
11488 (226, 66),
11489 (227, 70),
11490 (228, 67),
11491 (229, 71),
11492 (230, 208),
11493 (231, 72),
11494 (232, 84),
11495 (233, 81),
11496 (234, 82),
11497 (235, 83),
11498 (236, 88),
11499 (237, 85),
11500 (238, 86),
11501 (239, 87),
11502 (240, 121),
11503 (241, 73),
11504 (242, 205),
11505 (243, 206),
11506 (244, 203),
11507 (245, 207),
11508 (246, 161),
11509 (247, 225),
11510 (248, 112),
11511 (249, 221),
11512 (250, 222),
11513 (251, 219),
11514 (252, 220),
11515 (253, 141),
11516 (254, 192),
11517 (255, 223),
11518];
11519
11520impl_ebcdic_encoder_and_decoder!(
11521 IBM880,
11522 "IBM880",
11523 IBM880Encoder,
11524 IBM880Decoder,
11525 IBM_880_ENCODE_TABLE,
11526 IBM_880_DECODE_TABLE
11527);
11528const IBM_880_DECODE_TABLE: [char; 256] = [
11529 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11530 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11531 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11532 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11533 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11534 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11535 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11536 '\u{a0}', '\u{452}', '\u{453}', '\u{451}', '\u{454}', '\u{455}', '\u{456}', '\u{457}',
11537 '\u{458}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{459}',
11538 '\u{45a}', '\u{45b}', '\u{45c}', '\u{45e}', '\u{45f}', '\u{42a}', '\u{2116}', '\u{402}',
11539 '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{403}',
11540 '\u{401}', '\u{404}', '\u{405}', '\u{406}', '\u{407}', '\u{408}', '\u{409}', '\u{7c}',
11541 '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{40a}', '\u{40b}', '\u{40c}', '\u{ad}',
11542 '\u{40e}', '\u{40f}', '\u{44e}', '\u{430}', '\u{431}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}',
11543 '\u{27}', '\u{3d}', '\u{22}', '\u{446}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
11544 '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{434}', '\u{435}', '\u{444}', '\u{433}', '\u{445}',
11545 '\u{438}', '\u{439}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}',
11546 '\u{71}', '\u{72}', '\u{43a}', '\u{43b}', '\u{43c}', '\u{43d}', '\u{43e}', '\u{43f}',
11547 '\u{44f}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}',
11548 '\u{7a}', '\u{440}', '\u{441}', '\u{442}', '\u{443}', '\u{436}', '\u{432}', '\u{44c}',
11549 '\u{44b}', '\u{437}', '\u{448}', '\u{44d}', '\u{449}', '\u{447}', '\u{44a}', '\u{42e}',
11550 '\u{410}', '\u{411}', '\u{426}', '\u{414}', '\u{415}', '\u{424}', '\u{413}', '\u{7b}',
11551 '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
11552 '\u{425}', '\u{418}', '\u{419}', '\u{41a}', '\u{41b}', '\u{41c}', '\u{7d}', '\u{4a}', '\u{4b}',
11553 '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}', '\u{41d}', '\u{41e}',
11554 '\u{41f}', '\u{42f}', '\u{420}', '\u{421}', '\u{5c}', '\u{a4}', '\u{53}', '\u{54}', '\u{55}',
11555 '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{422}', '\u{423}', '\u{416}', '\u{412}',
11556 '\u{42c}', '\u{42b}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}',
11557 '\u{37}', '\u{38}', '\u{39}', '\u{417}', '\u{428}', '\u{42d}', '\u{429}', '\u{427}', '\u{9f}',
11558];
11559const IBM_880_ENCODE_TABLE: &[(u16, u8)] = &[
11560 (0, 0),
11561 (1, 1),
11562 (2, 2),
11563 (3, 3),
11564 (4, 55),
11565 (5, 45),
11566 (6, 46),
11567 (7, 47),
11568 (8, 22),
11569 (9, 5),
11570 (10, 37),
11571 (11, 11),
11572 (12, 12),
11573 (13, 13),
11574 (14, 14),
11575 (15, 15),
11576 (16, 16),
11577 (17, 17),
11578 (18, 18),
11579 (19, 19),
11580 (20, 60),
11581 (21, 61),
11582 (22, 50),
11583 (23, 38),
11584 (24, 24),
11585 (25, 25),
11586 (26, 63),
11587 (27, 39),
11588 (28, 28),
11589 (29, 29),
11590 (30, 30),
11591 (31, 31),
11592 (32, 64),
11593 (33, 79),
11594 (34, 127),
11595 (35, 123),
11596 (36, 91),
11597 (37, 108),
11598 (38, 80),
11599 (39, 125),
11600 (40, 77),
11601 (41, 93),
11602 (42, 92),
11603 (43, 78),
11604 (44, 107),
11605 (45, 96),
11606 (46, 75),
11607 (47, 97),
11608 (48, 240),
11609 (49, 241),
11610 (50, 242),
11611 (51, 243),
11612 (52, 244),
11613 (53, 245),
11614 (54, 246),
11615 (55, 247),
11616 (56, 248),
11617 (57, 249),
11618 (58, 122),
11619 (59, 94),
11620 (60, 76),
11621 (61, 126),
11622 (62, 110),
11623 (63, 111),
11624 (64, 124),
11625 (65, 193),
11626 (66, 194),
11627 (67, 195),
11628 (68, 196),
11629 (69, 197),
11630 (70, 198),
11631 (71, 199),
11632 (72, 200),
11633 (73, 201),
11634 (74, 209),
11635 (75, 210),
11636 (76, 211),
11637 (77, 212),
11638 (78, 213),
11639 (79, 214),
11640 (80, 215),
11641 (81, 216),
11642 (82, 217),
11643 (83, 226),
11644 (84, 227),
11645 (85, 228),
11646 (86, 229),
11647 (87, 230),
11648 (88, 231),
11649 (89, 232),
11650 (90, 233),
11651 (91, 74),
11652 (92, 224),
11653 (93, 90),
11654 (94, 95),
11655 (95, 109),
11656 (96, 121),
11657 (97, 129),
11658 (98, 130),
11659 (99, 131),
11660 (100, 132),
11661 (101, 133),
11662 (102, 134),
11663 (103, 135),
11664 (104, 136),
11665 (105, 137),
11666 (106, 145),
11667 (107, 146),
11668 (108, 147),
11669 (109, 148),
11670 (110, 149),
11671 (111, 150),
11672 (112, 151),
11673 (113, 152),
11674 (114, 153),
11675 (115, 162),
11676 (116, 163),
11677 (117, 164),
11678 (118, 165),
11679 (119, 166),
11680 (120, 167),
11681 (121, 168),
11682 (122, 169),
11683 (123, 192),
11684 (124, 106),
11685 (125, 208),
11686 (126, 161),
11687 (127, 7),
11688 (128, 32),
11689 (129, 33),
11690 (130, 34),
11691 (131, 35),
11692 (132, 36),
11693 (133, 21),
11694 (134, 6),
11695 (135, 23),
11696 (136, 40),
11697 (137, 41),
11698 (138, 42),
11699 (139, 43),
11700 (140, 44),
11701 (141, 9),
11702 (142, 10),
11703 (143, 27),
11704 (144, 48),
11705 (145, 49),
11706 (146, 26),
11707 (147, 51),
11708 (148, 52),
11709 (149, 53),
11710 (150, 54),
11711 (151, 8),
11712 (152, 56),
11713 (153, 57),
11714 (154, 58),
11715 (155, 59),
11716 (156, 4),
11717 (157, 20),
11718 (158, 62),
11719 (159, 255),
11720 (160, 65),
11721 (164, 225),
11722 (173, 115),
11723 (1025, 99),
11724 (1026, 89),
11725 (1027, 98),
11726 (1028, 100),
11727 (1029, 101),
11728 (1030, 102),
11729 (1031, 103),
11730 (1032, 104),
11731 (1033, 105),
11732 (1034, 112),
11733 (1035, 113),
11734 (1036, 114),
11735 (1038, 116),
11736 (1039, 117),
11737 (1040, 185),
11738 (1041, 186),
11739 (1042, 237),
11740 (1043, 191),
11741 (1044, 188),
11742 (1045, 189),
11743 (1046, 236),
11744 (1047, 250),
11745 (1048, 203),
11746 (1049, 204),
11747 (1050, 205),
11748 (1051, 206),
11749 (1052, 207),
11750 (1053, 218),
11751 (1054, 219),
11752 (1055, 220),
11753 (1056, 222),
11754 (1057, 223),
11755 (1058, 234),
11756 (1059, 235),
11757 (1060, 190),
11758 (1061, 202),
11759 (1062, 187),
11760 (1063, 254),
11761 (1064, 251),
11762 (1065, 253),
11763 (1066, 87),
11764 (1067, 239),
11765 (1068, 238),
11766 (1069, 252),
11767 (1070, 184),
11768 (1071, 221),
11769 (1072, 119),
11770 (1073, 120),
11771 (1074, 175),
11772 (1075, 141),
11773 (1076, 138),
11774 (1077, 139),
11775 (1078, 174),
11776 (1079, 178),
11777 (1080, 143),
11778 (1081, 144),
11779 (1082, 154),
11780 (1083, 155),
11781 (1084, 156),
11782 (1085, 157),
11783 (1086, 158),
11784 (1087, 159),
11785 (1088, 170),
11786 (1089, 171),
11787 (1090, 172),
11788 (1091, 173),
11789 (1092, 140),
11790 (1093, 142),
11791 (1094, 128),
11792 (1095, 182),
11793 (1096, 179),
11794 (1097, 181),
11795 (1098, 183),
11796 (1099, 177),
11797 (1100, 176),
11798 (1101, 180),
11799 (1102, 118),
11800 (1103, 160),
11801 (1105, 68),
11802 (1106, 66),
11803 (1107, 67),
11804 (1108, 69),
11805 (1109, 70),
11806 (1110, 71),
11807 (1111, 72),
11808 (1112, 73),
11809 (1113, 81),
11810 (1114, 82),
11811 (1115, 83),
11812 (1116, 84),
11813 (1118, 85),
11814 (1119, 86),
11815 (8470, 88),
11816];
11817
11818impl_ebcdic_encoder_and_decoder!(
11819 IBM891,
11820 "IBM891",
11821 IBM891Encoder,
11822 IBM891Decoder,
11823 IBM_891_ENCODE_TABLE,
11824 IBM_891_DECODE_TABLE
11825);
11826const IBM_891_DECODE_TABLE: [char; 256] = [
11827 '\u{0}',
11828 '\u{1}',
11829 '\u{2}',
11830 '\u{3}',
11831 '\u{4}',
11832 '\u{5}',
11833 '\u{6}',
11834 '\u{7}',
11835 '\u{8}',
11836 '\u{9}',
11837 '\u{a}',
11838 '\u{b}',
11839 '\u{c}',
11840 '\u{d}',
11841 '\u{e}',
11842 '\u{f}',
11843 '\u{10}',
11844 '\u{11}',
11845 '\u{12}',
11846 '\u{13}',
11847 '\u{14}',
11848 '\u{15}',
11849 '\u{16}',
11850 '\u{17}',
11851 '\u{18}',
11852 '\u{19}',
11853 '\u{1c}',
11854 '\u{1b}',
11855 '\u{7f}',
11856 '\u{1d}',
11857 '\u{1e}',
11858 '\u{1f}',
11859 '\u{20}',
11860 '\u{21}',
11861 '\u{22}',
11862 '\u{23}',
11863 '\u{24}',
11864 '\u{25}',
11865 '\u{26}',
11866 '\u{27}',
11867 '\u{28}',
11868 '\u{29}',
11869 '\u{2a}',
11870 '\u{2b}',
11871 '\u{2c}',
11872 '\u{2d}',
11873 '\u{2e}',
11874 '\u{2f}',
11875 '\u{30}',
11876 '\u{31}',
11877 '\u{32}',
11878 '\u{33}',
11879 '\u{34}',
11880 '\u{35}',
11881 '\u{36}',
11882 '\u{37}',
11883 '\u{38}',
11884 '\u{39}',
11885 '\u{3a}',
11886 '\u{3b}',
11887 '\u{3c}',
11888 '\u{3d}',
11889 '\u{3e}',
11890 '\u{3f}',
11891 '\u{40}',
11892 '\u{41}',
11893 '\u{42}',
11894 '\u{43}',
11895 '\u{44}',
11896 '\u{45}',
11897 '\u{46}',
11898 '\u{47}',
11899 '\u{48}',
11900 '\u{49}',
11901 '\u{4a}',
11902 '\u{4b}',
11903 '\u{4c}',
11904 '\u{4d}',
11905 '\u{4e}',
11906 '\u{4f}',
11907 '\u{50}',
11908 '\u{51}',
11909 '\u{52}',
11910 '\u{53}',
11911 '\u{54}',
11912 '\u{55}',
11913 '\u{56}',
11914 '\u{57}',
11915 '\u{58}',
11916 '\u{59}',
11917 '\u{5a}',
11918 '\u{5b}',
11919 '\u{20a9}',
11920 '\u{5d}',
11921 '\u{5e}',
11922 '\u{5f}',
11923 '\u{60}',
11924 '\u{61}',
11925 '\u{62}',
11926 '\u{63}',
11927 '\u{64}',
11928 '\u{65}',
11929 '\u{66}',
11930 '\u{67}',
11931 '\u{68}',
11932 '\u{69}',
11933 '\u{6a}',
11934 '\u{6b}',
11935 '\u{6c}',
11936 '\u{6d}',
11937 '\u{6e}',
11938 '\u{6f}',
11939 '\u{70}',
11940 '\u{71}',
11941 '\u{72}',
11942 '\u{73}',
11943 '\u{74}',
11944 '\u{75}',
11945 '\u{76}',
11946 '\u{77}',
11947 '\u{78}',
11948 '\u{79}',
11949 '\u{7a}',
11950 '\u{7b}',
11951 '\u{7c}',
11952 '\u{7d}',
11953 '\u{203e}',
11954 '\u{1a}',
11955 char::REPLACEMENT_CHARACTER,
11956 char::REPLACEMENT_CHARACTER,
11957 char::REPLACEMENT_CHARACTER,
11958 char::REPLACEMENT_CHARACTER,
11959 char::REPLACEMENT_CHARACTER,
11960 char::REPLACEMENT_CHARACTER,
11961 char::REPLACEMENT_CHARACTER,
11962 char::REPLACEMENT_CHARACTER,
11963 char::REPLACEMENT_CHARACTER,
11964 char::REPLACEMENT_CHARACTER,
11965 char::REPLACEMENT_CHARACTER,
11966 char::REPLACEMENT_CHARACTER,
11967 char::REPLACEMENT_CHARACTER,
11968 char::REPLACEMENT_CHARACTER,
11969 char::REPLACEMENT_CHARACTER,
11970 char::REPLACEMENT_CHARACTER,
11971 char::REPLACEMENT_CHARACTER,
11972 char::REPLACEMENT_CHARACTER,
11973 char::REPLACEMENT_CHARACTER,
11974 char::REPLACEMENT_CHARACTER,
11975 char::REPLACEMENT_CHARACTER,
11976 char::REPLACEMENT_CHARACTER,
11977 char::REPLACEMENT_CHARACTER,
11978 char::REPLACEMENT_CHARACTER,
11979 char::REPLACEMENT_CHARACTER,
11980 char::REPLACEMENT_CHARACTER,
11981 char::REPLACEMENT_CHARACTER,
11982 char::REPLACEMENT_CHARACTER,
11983 char::REPLACEMENT_CHARACTER,
11984 char::REPLACEMENT_CHARACTER,
11985 char::REPLACEMENT_CHARACTER,
11986 char::REPLACEMENT_CHARACTER,
11987 char::REPLACEMENT_CHARACTER,
11988 char::REPLACEMENT_CHARACTER,
11989 char::REPLACEMENT_CHARACTER,
11990 char::REPLACEMENT_CHARACTER,
11991 char::REPLACEMENT_CHARACTER,
11992 char::REPLACEMENT_CHARACTER,
11993 char::REPLACEMENT_CHARACTER,
11994 char::REPLACEMENT_CHARACTER,
11995 char::REPLACEMENT_CHARACTER,
11996 char::REPLACEMENT_CHARACTER,
11997 char::REPLACEMENT_CHARACTER,
11998 char::REPLACEMENT_CHARACTER,
11999 char::REPLACEMENT_CHARACTER,
12000 char::REPLACEMENT_CHARACTER,
12001 char::REPLACEMENT_CHARACTER,
12002 char::REPLACEMENT_CHARACTER,
12003 char::REPLACEMENT_CHARACTER,
12004 char::REPLACEMENT_CHARACTER,
12005 char::REPLACEMENT_CHARACTER,
12006 char::REPLACEMENT_CHARACTER,
12007 char::REPLACEMENT_CHARACTER,
12008 char::REPLACEMENT_CHARACTER,
12009 char::REPLACEMENT_CHARACTER,
12010 char::REPLACEMENT_CHARACTER,
12011 char::REPLACEMENT_CHARACTER,
12012 char::REPLACEMENT_CHARACTER,
12013 char::REPLACEMENT_CHARACTER,
12014 char::REPLACEMENT_CHARACTER,
12015 char::REPLACEMENT_CHARACTER,
12016 char::REPLACEMENT_CHARACTER,
12017 char::REPLACEMENT_CHARACTER,
12018 char::REPLACEMENT_CHARACTER,
12019 '\u{ffa0}',
12020 '\u{ffa1}',
12021 '\u{ffa2}',
12022 '\u{ffa3}',
12023 '\u{ffa4}',
12024 '\u{ffa5}',
12025 '\u{ffa6}',
12026 '\u{ffa7}',
12027 '\u{ffa8}',
12028 '\u{ffa9}',
12029 '\u{ffaa}',
12030 '\u{ffab}',
12031 '\u{ffac}',
12032 '\u{ffad}',
12033 '\u{ffae}',
12034 '\u{ffaf}',
12035 '\u{ffb0}',
12036 '\u{ffb1}',
12037 '\u{ffb2}',
12038 '\u{ffb3}',
12039 '\u{ffb4}',
12040 '\u{ffb5}',
12041 '\u{ffb6}',
12042 '\u{ffb7}',
12043 '\u{ffb8}',
12044 '\u{ffb9}',
12045 '\u{ffba}',
12046 '\u{ffbb}',
12047 '\u{ffbc}',
12048 '\u{ffbd}',
12049 '\u{ffbe}',
12050 char::REPLACEMENT_CHARACTER,
12051 char::REPLACEMENT_CHARACTER,
12052 char::REPLACEMENT_CHARACTER,
12053 '\u{ffc2}',
12054 '\u{ffc3}',
12055 '\u{ffc4}',
12056 '\u{ffc5}',
12057 '\u{ffc6}',
12058 '\u{ffc7}',
12059 char::REPLACEMENT_CHARACTER,
12060 char::REPLACEMENT_CHARACTER,
12061 '\u{ffca}',
12062 '\u{ffcb}',
12063 '\u{ffcc}',
12064 '\u{ffcd}',
12065 '\u{ffce}',
12066 '\u{ffcf}',
12067 char::REPLACEMENT_CHARACTER,
12068 char::REPLACEMENT_CHARACTER,
12069 '\u{ffd2}',
12070 '\u{ffd3}',
12071 '\u{ffd4}',
12072 '\u{ffd5}',
12073 '\u{ffd6}',
12074 '\u{ffd7}',
12075 char::REPLACEMENT_CHARACTER,
12076 char::REPLACEMENT_CHARACTER,
12077 '\u{ffda}',
12078 '\u{ffdb}',
12079 '\u{ffdc}',
12080 char::REPLACEMENT_CHARACTER,
12081 char::REPLACEMENT_CHARACTER,
12082 char::REPLACEMENT_CHARACTER,
12083];
12084const IBM_891_ENCODE_TABLE: &[(u16, u8)] = &[
12085 (0, 0),
12086 (1, 1),
12087 (2, 2),
12088 (3, 3),
12089 (4, 4),
12090 (5, 5),
12091 (6, 6),
12092 (7, 7),
12093 (8, 8),
12094 (9, 9),
12095 (10, 10),
12096 (11, 11),
12097 (12, 12),
12098 (13, 13),
12099 (14, 14),
12100 (15, 15),
12101 (16, 16),
12102 (17, 17),
12103 (18, 18),
12104 (19, 19),
12105 (20, 20),
12106 (21, 21),
12107 (22, 22),
12108 (23, 23),
12109 (24, 24),
12110 (25, 25),
12111 (26, 127),
12112 (27, 27),
12113 (28, 26),
12114 (29, 29),
12115 (30, 30),
12116 (31, 31),
12117 (32, 32),
12118 (33, 33),
12119 (34, 34),
12120 (35, 35),
12121 (36, 36),
12122 (37, 37),
12123 (38, 38),
12124 (39, 39),
12125 (40, 40),
12126 (41, 41),
12127 (42, 42),
12128 (43, 43),
12129 (44, 44),
12130 (45, 45),
12131 (46, 46),
12132 (47, 47),
12133 (48, 48),
12134 (49, 49),
12135 (50, 50),
12136 (51, 51),
12137 (52, 52),
12138 (53, 53),
12139 (54, 54),
12140 (55, 55),
12141 (56, 56),
12142 (57, 57),
12143 (58, 58),
12144 (59, 59),
12145 (60, 60),
12146 (61, 61),
12147 (62, 62),
12148 (63, 63),
12149 (64, 64),
12150 (65, 65),
12151 (66, 66),
12152 (67, 67),
12153 (68, 68),
12154 (69, 69),
12155 (70, 70),
12156 (71, 71),
12157 (72, 72),
12158 (73, 73),
12159 (74, 74),
12160 (75, 75),
12161 (76, 76),
12162 (77, 77),
12163 (78, 78),
12164 (79, 79),
12165 (80, 80),
12166 (81, 81),
12167 (82, 82),
12168 (83, 83),
12169 (84, 84),
12170 (85, 85),
12171 (86, 86),
12172 (87, 87),
12173 (88, 88),
12174 (89, 89),
12175 (90, 90),
12176 (91, 91),
12177 (93, 93),
12178 (94, 94),
12179 (95, 95),
12180 (96, 96),
12181 (97, 97),
12182 (98, 98),
12183 (99, 99),
12184 (100, 100),
12185 (101, 101),
12186 (102, 102),
12187 (103, 103),
12188 (104, 104),
12189 (105, 105),
12190 (106, 106),
12191 (107, 107),
12192 (108, 108),
12193 (109, 109),
12194 (110, 110),
12195 (111, 111),
12196 (112, 112),
12197 (113, 113),
12198 (114, 114),
12199 (115, 115),
12200 (116, 116),
12201 (117, 117),
12202 (118, 118),
12203 (119, 119),
12204 (120, 120),
12205 (121, 121),
12206 (122, 122),
12207 (123, 123),
12208 (124, 124),
12209 (125, 125),
12210 (127, 28),
12211 (8254, 126),
12212 (8361, 92),
12213 (65440, 192),
12214 (65441, 193),
12215 (65442, 194),
12216 (65443, 195),
12217 (65444, 196),
12218 (65445, 197),
12219 (65446, 198),
12220 (65447, 199),
12221 (65448, 200),
12222 (65449, 201),
12223 (65450, 202),
12224 (65451, 203),
12225 (65452, 204),
12226 (65453, 205),
12227 (65454, 206),
12228 (65455, 207),
12229 (65456, 208),
12230 (65457, 209),
12231 (65458, 210),
12232 (65459, 211),
12233 (65460, 212),
12234 (65461, 213),
12235 (65462, 214),
12236 (65463, 215),
12237 (65464, 216),
12238 (65465, 217),
12239 (65466, 218),
12240 (65467, 219),
12241 (65468, 220),
12242 (65469, 221),
12243 (65470, 222),
12244 (65474, 226),
12245 (65475, 227),
12246 (65476, 228),
12247 (65477, 229),
12248 (65478, 230),
12249 (65479, 231),
12250 (65482, 234),
12251 (65483, 235),
12252 (65484, 236),
12253 (65485, 237),
12254 (65486, 238),
12255 (65487, 239),
12256 (65490, 242),
12257 (65491, 243),
12258 (65492, 244),
12259 (65493, 245),
12260 (65494, 246),
12261 (65495, 247),
12262 (65498, 250),
12263 (65499, 251),
12264 (65500, 252),
12265];
12266
12267impl_ebcdic_encoder_and_decoder!(
12268 IBM903,
12269 "IBM903",
12270 IBM903Encoder,
12271 IBM903Decoder,
12272 IBM_903_ENCODE_TABLE,
12273 IBM_903_DECODE_TABLE
12274);
12275const IBM_903_DECODE_TABLE: [char; 256] = [
12276 '\u{0}',
12277 '\u{1}',
12278 '\u{2}',
12279 '\u{3}',
12280 '\u{4}',
12281 '\u{5}',
12282 '\u{6}',
12283 '\u{7}',
12284 '\u{8}',
12285 '\u{9}',
12286 '\u{a}',
12287 '\u{b}',
12288 '\u{c}',
12289 '\u{d}',
12290 '\u{e}',
12291 '\u{f}',
12292 '\u{10}',
12293 '\u{11}',
12294 '\u{12}',
12295 '\u{13}',
12296 '\u{14}',
12297 '\u{15}',
12298 '\u{16}',
12299 '\u{17}',
12300 '\u{18}',
12301 '\u{19}',
12302 '\u{1c}',
12303 '\u{1b}',
12304 '\u{7f}',
12305 '\u{1d}',
12306 '\u{1e}',
12307 '\u{1f}',
12308 '\u{20}',
12309 '\u{21}',
12310 '\u{22}',
12311 '\u{23}',
12312 '\u{24}',
12313 '\u{25}',
12314 '\u{26}',
12315 '\u{27}',
12316 '\u{28}',
12317 '\u{29}',
12318 '\u{2a}',
12319 '\u{2b}',
12320 '\u{2c}',
12321 '\u{2d}',
12322 '\u{2e}',
12323 '\u{2f}',
12324 '\u{30}',
12325 '\u{31}',
12326 '\u{32}',
12327 '\u{33}',
12328 '\u{34}',
12329 '\u{35}',
12330 '\u{36}',
12331 '\u{37}',
12332 '\u{38}',
12333 '\u{39}',
12334 '\u{3a}',
12335 '\u{3b}',
12336 '\u{3c}',
12337 '\u{3d}',
12338 '\u{3e}',
12339 '\u{3f}',
12340 '\u{40}',
12341 '\u{41}',
12342 '\u{42}',
12343 '\u{43}',
12344 '\u{44}',
12345 '\u{45}',
12346 '\u{46}',
12347 '\u{47}',
12348 '\u{48}',
12349 '\u{49}',
12350 '\u{4a}',
12351 '\u{4b}',
12352 '\u{4c}',
12353 '\u{4d}',
12354 '\u{4e}',
12355 '\u{4f}',
12356 '\u{50}',
12357 '\u{51}',
12358 '\u{52}',
12359 '\u{53}',
12360 '\u{54}',
12361 '\u{55}',
12362 '\u{56}',
12363 '\u{57}',
12364 '\u{58}',
12365 '\u{59}',
12366 '\u{5a}',
12367 '\u{5b}',
12368 '\u{a5}',
12369 '\u{5d}',
12370 '\u{5e}',
12371 '\u{5f}',
12372 '\u{60}',
12373 '\u{61}',
12374 '\u{62}',
12375 '\u{63}',
12376 '\u{64}',
12377 '\u{65}',
12378 '\u{66}',
12379 '\u{67}',
12380 '\u{68}',
12381 '\u{69}',
12382 '\u{6a}',
12383 '\u{6b}',
12384 '\u{6c}',
12385 '\u{6d}',
12386 '\u{6e}',
12387 '\u{6f}',
12388 '\u{70}',
12389 '\u{71}',
12390 '\u{72}',
12391 '\u{73}',
12392 '\u{74}',
12393 '\u{75}',
12394 '\u{76}',
12395 '\u{77}',
12396 '\u{78}',
12397 '\u{79}',
12398 '\u{7a}',
12399 '\u{7b}',
12400 '\u{7c}',
12401 '\u{7d}',
12402 '\u{203e}',
12403 '\u{1a}',
12404 char::REPLACEMENT_CHARACTER,
12405 char::REPLACEMENT_CHARACTER,
12406 char::REPLACEMENT_CHARACTER,
12407 char::REPLACEMENT_CHARACTER,
12408 char::REPLACEMENT_CHARACTER,
12409 char::REPLACEMENT_CHARACTER,
12410 char::REPLACEMENT_CHARACTER,
12411 char::REPLACEMENT_CHARACTER,
12412 char::REPLACEMENT_CHARACTER,
12413 char::REPLACEMENT_CHARACTER,
12414 char::REPLACEMENT_CHARACTER,
12415 char::REPLACEMENT_CHARACTER,
12416 char::REPLACEMENT_CHARACTER,
12417 char::REPLACEMENT_CHARACTER,
12418 char::REPLACEMENT_CHARACTER,
12419 char::REPLACEMENT_CHARACTER,
12420 char::REPLACEMENT_CHARACTER,
12421 char::REPLACEMENT_CHARACTER,
12422 char::REPLACEMENT_CHARACTER,
12423 char::REPLACEMENT_CHARACTER,
12424 char::REPLACEMENT_CHARACTER,
12425 char::REPLACEMENT_CHARACTER,
12426 char::REPLACEMENT_CHARACTER,
12427 char::REPLACEMENT_CHARACTER,
12428 char::REPLACEMENT_CHARACTER,
12429 char::REPLACEMENT_CHARACTER,
12430 char::REPLACEMENT_CHARACTER,
12431 char::REPLACEMENT_CHARACTER,
12432 char::REPLACEMENT_CHARACTER,
12433 char::REPLACEMENT_CHARACTER,
12434 char::REPLACEMENT_CHARACTER,
12435 char::REPLACEMENT_CHARACTER,
12436 char::REPLACEMENT_CHARACTER,
12437 char::REPLACEMENT_CHARACTER,
12438 char::REPLACEMENT_CHARACTER,
12439 char::REPLACEMENT_CHARACTER,
12440 char::REPLACEMENT_CHARACTER,
12441 char::REPLACEMENT_CHARACTER,
12442 char::REPLACEMENT_CHARACTER,
12443 char::REPLACEMENT_CHARACTER,
12444 char::REPLACEMENT_CHARACTER,
12445 char::REPLACEMENT_CHARACTER,
12446 char::REPLACEMENT_CHARACTER,
12447 char::REPLACEMENT_CHARACTER,
12448 char::REPLACEMENT_CHARACTER,
12449 char::REPLACEMENT_CHARACTER,
12450 char::REPLACEMENT_CHARACTER,
12451 char::REPLACEMENT_CHARACTER,
12452 char::REPLACEMENT_CHARACTER,
12453 char::REPLACEMENT_CHARACTER,
12454 char::REPLACEMENT_CHARACTER,
12455 char::REPLACEMENT_CHARACTER,
12456 char::REPLACEMENT_CHARACTER,
12457 char::REPLACEMENT_CHARACTER,
12458 char::REPLACEMENT_CHARACTER,
12459 char::REPLACEMENT_CHARACTER,
12460 char::REPLACEMENT_CHARACTER,
12461 char::REPLACEMENT_CHARACTER,
12462 char::REPLACEMENT_CHARACTER,
12463 char::REPLACEMENT_CHARACTER,
12464 char::REPLACEMENT_CHARACTER,
12465 char::REPLACEMENT_CHARACTER,
12466 char::REPLACEMENT_CHARACTER,
12467 char::REPLACEMENT_CHARACTER,
12468 char::REPLACEMENT_CHARACTER,
12469 char::REPLACEMENT_CHARACTER,
12470 char::REPLACEMENT_CHARACTER,
12471 char::REPLACEMENT_CHARACTER,
12472 char::REPLACEMENT_CHARACTER,
12473 char::REPLACEMENT_CHARACTER,
12474 char::REPLACEMENT_CHARACTER,
12475 char::REPLACEMENT_CHARACTER,
12476 char::REPLACEMENT_CHARACTER,
12477 char::REPLACEMENT_CHARACTER,
12478 char::REPLACEMENT_CHARACTER,
12479 char::REPLACEMENT_CHARACTER,
12480 char::REPLACEMENT_CHARACTER,
12481 char::REPLACEMENT_CHARACTER,
12482 char::REPLACEMENT_CHARACTER,
12483 char::REPLACEMENT_CHARACTER,
12484 char::REPLACEMENT_CHARACTER,
12485 char::REPLACEMENT_CHARACTER,
12486 char::REPLACEMENT_CHARACTER,
12487 char::REPLACEMENT_CHARACTER,
12488 char::REPLACEMENT_CHARACTER,
12489 char::REPLACEMENT_CHARACTER,
12490 char::REPLACEMENT_CHARACTER,
12491 char::REPLACEMENT_CHARACTER,
12492 char::REPLACEMENT_CHARACTER,
12493 char::REPLACEMENT_CHARACTER,
12494 char::REPLACEMENT_CHARACTER,
12495 char::REPLACEMENT_CHARACTER,
12496 char::REPLACEMENT_CHARACTER,
12497 char::REPLACEMENT_CHARACTER,
12498 char::REPLACEMENT_CHARACTER,
12499 char::REPLACEMENT_CHARACTER,
12500 char::REPLACEMENT_CHARACTER,
12501 char::REPLACEMENT_CHARACTER,
12502 char::REPLACEMENT_CHARACTER,
12503 char::REPLACEMENT_CHARACTER,
12504 char::REPLACEMENT_CHARACTER,
12505 char::REPLACEMENT_CHARACTER,
12506 char::REPLACEMENT_CHARACTER,
12507 char::REPLACEMENT_CHARACTER,
12508 char::REPLACEMENT_CHARACTER,
12509 char::REPLACEMENT_CHARACTER,
12510 char::REPLACEMENT_CHARACTER,
12511 char::REPLACEMENT_CHARACTER,
12512 char::REPLACEMENT_CHARACTER,
12513 char::REPLACEMENT_CHARACTER,
12514 char::REPLACEMENT_CHARACTER,
12515 char::REPLACEMENT_CHARACTER,
12516 char::REPLACEMENT_CHARACTER,
12517 char::REPLACEMENT_CHARACTER,
12518 char::REPLACEMENT_CHARACTER,
12519 char::REPLACEMENT_CHARACTER,
12520 char::REPLACEMENT_CHARACTER,
12521 char::REPLACEMENT_CHARACTER,
12522 char::REPLACEMENT_CHARACTER,
12523 char::REPLACEMENT_CHARACTER,
12524 char::REPLACEMENT_CHARACTER,
12525 char::REPLACEMENT_CHARACTER,
12526 char::REPLACEMENT_CHARACTER,
12527 char::REPLACEMENT_CHARACTER,
12528 char::REPLACEMENT_CHARACTER,
12529 char::REPLACEMENT_CHARACTER,
12530 char::REPLACEMENT_CHARACTER,
12531 char::REPLACEMENT_CHARACTER,
12532];
12533const IBM_903_ENCODE_TABLE: &[(u16, u8)] = &[
12534 (0, 0),
12535 (1, 1),
12536 (2, 2),
12537 (3, 3),
12538 (4, 4),
12539 (5, 5),
12540 (6, 6),
12541 (7, 7),
12542 (8, 8),
12543 (9, 9),
12544 (10, 10),
12545 (11, 11),
12546 (12, 12),
12547 (13, 13),
12548 (14, 14),
12549 (15, 15),
12550 (16, 16),
12551 (17, 17),
12552 (18, 18),
12553 (19, 19),
12554 (20, 20),
12555 (21, 21),
12556 (22, 22),
12557 (23, 23),
12558 (24, 24),
12559 (25, 25),
12560 (26, 127),
12561 (27, 27),
12562 (28, 26),
12563 (29, 29),
12564 (30, 30),
12565 (31, 31),
12566 (32, 32),
12567 (33, 33),
12568 (34, 34),
12569 (35, 35),
12570 (36, 36),
12571 (37, 37),
12572 (38, 38),
12573 (39, 39),
12574 (40, 40),
12575 (41, 41),
12576 (42, 42),
12577 (43, 43),
12578 (44, 44),
12579 (45, 45),
12580 (46, 46),
12581 (47, 47),
12582 (48, 48),
12583 (49, 49),
12584 (50, 50),
12585 (51, 51),
12586 (52, 52),
12587 (53, 53),
12588 (54, 54),
12589 (55, 55),
12590 (56, 56),
12591 (57, 57),
12592 (58, 58),
12593 (59, 59),
12594 (60, 60),
12595 (61, 61),
12596 (62, 62),
12597 (63, 63),
12598 (64, 64),
12599 (65, 65),
12600 (66, 66),
12601 (67, 67),
12602 (68, 68),
12603 (69, 69),
12604 (70, 70),
12605 (71, 71),
12606 (72, 72),
12607 (73, 73),
12608 (74, 74),
12609 (75, 75),
12610 (76, 76),
12611 (77, 77),
12612 (78, 78),
12613 (79, 79),
12614 (80, 80),
12615 (81, 81),
12616 (82, 82),
12617 (83, 83),
12618 (84, 84),
12619 (85, 85),
12620 (86, 86),
12621 (87, 87),
12622 (88, 88),
12623 (89, 89),
12624 (90, 90),
12625 (91, 91),
12626 (93, 93),
12627 (94, 94),
12628 (95, 95),
12629 (96, 96),
12630 (97, 97),
12631 (98, 98),
12632 (99, 99),
12633 (100, 100),
12634 (101, 101),
12635 (102, 102),
12636 (103, 103),
12637 (104, 104),
12638 (105, 105),
12639 (106, 106),
12640 (107, 107),
12641 (108, 108),
12642 (109, 109),
12643 (110, 110),
12644 (111, 111),
12645 (112, 112),
12646 (113, 113),
12647 (114, 114),
12648 (115, 115),
12649 (116, 116),
12650 (117, 117),
12651 (118, 118),
12652 (119, 119),
12653 (120, 120),
12654 (121, 121),
12655 (122, 122),
12656 (123, 123),
12657 (124, 124),
12658 (125, 125),
12659 (127, 28),
12660 (165, 92),
12661 (8254, 126),
12662];
12663
12664impl_ebcdic_encoder_and_decoder!(
12665 IBM904,
12666 "IBM904",
12667 IBM904Encoder,
12668 IBM904Decoder,
12669 IBM_904_ENCODE_TABLE,
12670 IBM_904_DECODE_TABLE
12671);
12672const IBM_904_DECODE_TABLE: [char; 256] = [
12673 '\u{0}',
12674 '\u{1}',
12675 '\u{2}',
12676 '\u{3}',
12677 '\u{4}',
12678 '\u{5}',
12679 '\u{6}',
12680 '\u{7}',
12681 '\u{8}',
12682 '\u{9}',
12683 '\u{a}',
12684 '\u{b}',
12685 '\u{c}',
12686 '\u{d}',
12687 '\u{e}',
12688 '\u{f}',
12689 '\u{10}',
12690 '\u{11}',
12691 '\u{12}',
12692 '\u{13}',
12693 '\u{14}',
12694 '\u{15}',
12695 '\u{16}',
12696 '\u{17}',
12697 '\u{18}',
12698 '\u{19}',
12699 '\u{1c}',
12700 '\u{1b}',
12701 '\u{7f}',
12702 '\u{1d}',
12703 '\u{1e}',
12704 '\u{1f}',
12705 '\u{20}',
12706 '\u{21}',
12707 '\u{22}',
12708 '\u{23}',
12709 '\u{24}',
12710 '\u{25}',
12711 '\u{26}',
12712 '\u{27}',
12713 '\u{28}',
12714 '\u{29}',
12715 '\u{2a}',
12716 '\u{2b}',
12717 '\u{2c}',
12718 '\u{2d}',
12719 '\u{2e}',
12720 '\u{2f}',
12721 '\u{30}',
12722 '\u{31}',
12723 '\u{32}',
12724 '\u{33}',
12725 '\u{34}',
12726 '\u{35}',
12727 '\u{36}',
12728 '\u{37}',
12729 '\u{38}',
12730 '\u{39}',
12731 '\u{3a}',
12732 '\u{3b}',
12733 '\u{3c}',
12734 '\u{3d}',
12735 '\u{3e}',
12736 '\u{3f}',
12737 '\u{40}',
12738 '\u{41}',
12739 '\u{42}',
12740 '\u{43}',
12741 '\u{44}',
12742 '\u{45}',
12743 '\u{46}',
12744 '\u{47}',
12745 '\u{48}',
12746 '\u{49}',
12747 '\u{4a}',
12748 '\u{4b}',
12749 '\u{4c}',
12750 '\u{4d}',
12751 '\u{4e}',
12752 '\u{4f}',
12753 '\u{50}',
12754 '\u{51}',
12755 '\u{52}',
12756 '\u{53}',
12757 '\u{54}',
12758 '\u{55}',
12759 '\u{56}',
12760 '\u{57}',
12761 '\u{58}',
12762 '\u{59}',
12763 '\u{5a}',
12764 '\u{5b}',
12765 '\u{5c}',
12766 '\u{5d}',
12767 '\u{5e}',
12768 '\u{5f}',
12769 '\u{60}',
12770 '\u{61}',
12771 '\u{62}',
12772 '\u{63}',
12773 '\u{64}',
12774 '\u{65}',
12775 '\u{66}',
12776 '\u{67}',
12777 '\u{68}',
12778 '\u{69}',
12779 '\u{6a}',
12780 '\u{6b}',
12781 '\u{6c}',
12782 '\u{6d}',
12783 '\u{6e}',
12784 '\u{6f}',
12785 '\u{70}',
12786 '\u{71}',
12787 '\u{72}',
12788 '\u{73}',
12789 '\u{74}',
12790 '\u{75}',
12791 '\u{76}',
12792 '\u{77}',
12793 '\u{78}',
12794 '\u{79}',
12795 '\u{7a}',
12796 '\u{7b}',
12797 '\u{7c}',
12798 '\u{7d}',
12799 '\u{7e}',
12800 '\u{1a}',
12801 char::REPLACEMENT_CHARACTER,
12802 char::REPLACEMENT_CHARACTER,
12803 char::REPLACEMENT_CHARACTER,
12804 char::REPLACEMENT_CHARACTER,
12805 char::REPLACEMENT_CHARACTER,
12806 char::REPLACEMENT_CHARACTER,
12807 char::REPLACEMENT_CHARACTER,
12808 char::REPLACEMENT_CHARACTER,
12809 char::REPLACEMENT_CHARACTER,
12810 char::REPLACEMENT_CHARACTER,
12811 char::REPLACEMENT_CHARACTER,
12812 char::REPLACEMENT_CHARACTER,
12813 char::REPLACEMENT_CHARACTER,
12814 char::REPLACEMENT_CHARACTER,
12815 char::REPLACEMENT_CHARACTER,
12816 char::REPLACEMENT_CHARACTER,
12817 char::REPLACEMENT_CHARACTER,
12818 char::REPLACEMENT_CHARACTER,
12819 char::REPLACEMENT_CHARACTER,
12820 char::REPLACEMENT_CHARACTER,
12821 char::REPLACEMENT_CHARACTER,
12822 char::REPLACEMENT_CHARACTER,
12823 char::REPLACEMENT_CHARACTER,
12824 char::REPLACEMENT_CHARACTER,
12825 char::REPLACEMENT_CHARACTER,
12826 char::REPLACEMENT_CHARACTER,
12827 char::REPLACEMENT_CHARACTER,
12828 char::REPLACEMENT_CHARACTER,
12829 char::REPLACEMENT_CHARACTER,
12830 char::REPLACEMENT_CHARACTER,
12831 char::REPLACEMENT_CHARACTER,
12832 char::REPLACEMENT_CHARACTER,
12833 char::REPLACEMENT_CHARACTER,
12834 char::REPLACEMENT_CHARACTER,
12835 char::REPLACEMENT_CHARACTER,
12836 char::REPLACEMENT_CHARACTER,
12837 char::REPLACEMENT_CHARACTER,
12838 char::REPLACEMENT_CHARACTER,
12839 char::REPLACEMENT_CHARACTER,
12840 char::REPLACEMENT_CHARACTER,
12841 char::REPLACEMENT_CHARACTER,
12842 char::REPLACEMENT_CHARACTER,
12843 char::REPLACEMENT_CHARACTER,
12844 char::REPLACEMENT_CHARACTER,
12845 char::REPLACEMENT_CHARACTER,
12846 char::REPLACEMENT_CHARACTER,
12847 char::REPLACEMENT_CHARACTER,
12848 char::REPLACEMENT_CHARACTER,
12849 char::REPLACEMENT_CHARACTER,
12850 char::REPLACEMENT_CHARACTER,
12851 char::REPLACEMENT_CHARACTER,
12852 char::REPLACEMENT_CHARACTER,
12853 char::REPLACEMENT_CHARACTER,
12854 char::REPLACEMENT_CHARACTER,
12855 char::REPLACEMENT_CHARACTER,
12856 char::REPLACEMENT_CHARACTER,
12857 char::REPLACEMENT_CHARACTER,
12858 char::REPLACEMENT_CHARACTER,
12859 char::REPLACEMENT_CHARACTER,
12860 char::REPLACEMENT_CHARACTER,
12861 char::REPLACEMENT_CHARACTER,
12862 char::REPLACEMENT_CHARACTER,
12863 char::REPLACEMENT_CHARACTER,
12864 char::REPLACEMENT_CHARACTER,
12865 char::REPLACEMENT_CHARACTER,
12866 char::REPLACEMENT_CHARACTER,
12867 char::REPLACEMENT_CHARACTER,
12868 char::REPLACEMENT_CHARACTER,
12869 char::REPLACEMENT_CHARACTER,
12870 char::REPLACEMENT_CHARACTER,
12871 char::REPLACEMENT_CHARACTER,
12872 char::REPLACEMENT_CHARACTER,
12873 char::REPLACEMENT_CHARACTER,
12874 char::REPLACEMENT_CHARACTER,
12875 char::REPLACEMENT_CHARACTER,
12876 char::REPLACEMENT_CHARACTER,
12877 char::REPLACEMENT_CHARACTER,
12878 char::REPLACEMENT_CHARACTER,
12879 char::REPLACEMENT_CHARACTER,
12880 char::REPLACEMENT_CHARACTER,
12881 char::REPLACEMENT_CHARACTER,
12882 char::REPLACEMENT_CHARACTER,
12883 char::REPLACEMENT_CHARACTER,
12884 char::REPLACEMENT_CHARACTER,
12885 char::REPLACEMENT_CHARACTER,
12886 char::REPLACEMENT_CHARACTER,
12887 char::REPLACEMENT_CHARACTER,
12888 char::REPLACEMENT_CHARACTER,
12889 char::REPLACEMENT_CHARACTER,
12890 char::REPLACEMENT_CHARACTER,
12891 char::REPLACEMENT_CHARACTER,
12892 char::REPLACEMENT_CHARACTER,
12893 char::REPLACEMENT_CHARACTER,
12894 char::REPLACEMENT_CHARACTER,
12895 char::REPLACEMENT_CHARACTER,
12896 char::REPLACEMENT_CHARACTER,
12897 char::REPLACEMENT_CHARACTER,
12898 char::REPLACEMENT_CHARACTER,
12899 char::REPLACEMENT_CHARACTER,
12900 char::REPLACEMENT_CHARACTER,
12901 char::REPLACEMENT_CHARACTER,
12902 char::REPLACEMENT_CHARACTER,
12903 char::REPLACEMENT_CHARACTER,
12904 char::REPLACEMENT_CHARACTER,
12905 char::REPLACEMENT_CHARACTER,
12906 char::REPLACEMENT_CHARACTER,
12907 char::REPLACEMENT_CHARACTER,
12908 char::REPLACEMENT_CHARACTER,
12909 char::REPLACEMENT_CHARACTER,
12910 char::REPLACEMENT_CHARACTER,
12911 char::REPLACEMENT_CHARACTER,
12912 char::REPLACEMENT_CHARACTER,
12913 char::REPLACEMENT_CHARACTER,
12914 char::REPLACEMENT_CHARACTER,
12915 char::REPLACEMENT_CHARACTER,
12916 char::REPLACEMENT_CHARACTER,
12917 char::REPLACEMENT_CHARACTER,
12918 char::REPLACEMENT_CHARACTER,
12919 char::REPLACEMENT_CHARACTER,
12920 char::REPLACEMENT_CHARACTER,
12921 char::REPLACEMENT_CHARACTER,
12922 char::REPLACEMENT_CHARACTER,
12923 char::REPLACEMENT_CHARACTER,
12924 char::REPLACEMENT_CHARACTER,
12925 char::REPLACEMENT_CHARACTER,
12926 char::REPLACEMENT_CHARACTER,
12927 char::REPLACEMENT_CHARACTER,
12928 char::REPLACEMENT_CHARACTER,
12929];
12930const IBM_904_ENCODE_TABLE: &[(u16, u8)] = &[
12931 (0, 0),
12932 (1, 1),
12933 (2, 2),
12934 (3, 3),
12935 (4, 4),
12936 (5, 5),
12937 (6, 6),
12938 (7, 7),
12939 (8, 8),
12940 (9, 9),
12941 (10, 10),
12942 (11, 11),
12943 (12, 12),
12944 (13, 13),
12945 (14, 14),
12946 (15, 15),
12947 (16, 16),
12948 (17, 17),
12949 (18, 18),
12950 (19, 19),
12951 (20, 20),
12952 (21, 21),
12953 (22, 22),
12954 (23, 23),
12955 (24, 24),
12956 (25, 25),
12957 (26, 127),
12958 (27, 27),
12959 (28, 26),
12960 (29, 29),
12961 (30, 30),
12962 (31, 31),
12963 (32, 32),
12964 (33, 33),
12965 (34, 34),
12966 (35, 35),
12967 (36, 36),
12968 (37, 37),
12969 (38, 38),
12970 (39, 39),
12971 (40, 40),
12972 (41, 41),
12973 (42, 42),
12974 (43, 43),
12975 (44, 44),
12976 (45, 45),
12977 (46, 46),
12978 (47, 47),
12979 (48, 48),
12980 (49, 49),
12981 (50, 50),
12982 (51, 51),
12983 (52, 52),
12984 (53, 53),
12985 (54, 54),
12986 (55, 55),
12987 (56, 56),
12988 (57, 57),
12989 (58, 58),
12990 (59, 59),
12991 (60, 60),
12992 (61, 61),
12993 (62, 62),
12994 (63, 63),
12995 (64, 64),
12996 (65, 65),
12997 (66, 66),
12998 (67, 67),
12999 (68, 68),
13000 (69, 69),
13001 (70, 70),
13002 (71, 71),
13003 (72, 72),
13004 (73, 73),
13005 (74, 74),
13006 (75, 75),
13007 (76, 76),
13008 (77, 77),
13009 (78, 78),
13010 (79, 79),
13011 (80, 80),
13012 (81, 81),
13013 (82, 82),
13014 (83, 83),
13015 (84, 84),
13016 (85, 85),
13017 (86, 86),
13018 (87, 87),
13019 (88, 88),
13020 (89, 89),
13021 (90, 90),
13022 (91, 91),
13023 (92, 92),
13024 (93, 93),
13025 (94, 94),
13026 (95, 95),
13027 (96, 96),
13028 (97, 97),
13029 (98, 98),
13030 (99, 99),
13031 (100, 100),
13032 (101, 101),
13033 (102, 102),
13034 (103, 103),
13035 (104, 104),
13036 (105, 105),
13037 (106, 106),
13038 (107, 107),
13039 (108, 108),
13040 (109, 109),
13041 (110, 110),
13042 (111, 111),
13043 (112, 112),
13044 (113, 113),
13045 (114, 114),
13046 (115, 115),
13047 (116, 116),
13048 (117, 117),
13049 (118, 118),
13050 (119, 119),
13051 (120, 120),
13052 (121, 121),
13053 (122, 122),
13054 (123, 123),
13055 (124, 124),
13056 (125, 125),
13057 (126, 126),
13058 (127, 28),
13059];
13060
13061impl_ebcdic_encoder_and_decoder!(
13062 IBM905,
13063 "IBM905",
13064 IBM905Encoder,
13065 IBM905Decoder,
13066 IBM_905_ENCODE_TABLE,
13067 IBM_905_DECODE_TABLE
13068);
13069const IBM_905_DECODE_TABLE: [char; 256] = [
13070 '\u{0}',
13071 '\u{1}',
13072 '\u{2}',
13073 '\u{3}',
13074 '\u{9c}',
13075 '\u{9}',
13076 '\u{86}',
13077 '\u{7f}',
13078 '\u{97}',
13079 '\u{8d}',
13080 '\u{8e}',
13081 '\u{b}',
13082 '\u{c}',
13083 '\u{d}',
13084 '\u{e}',
13085 '\u{f}',
13086 '\u{10}',
13087 '\u{11}',
13088 '\u{12}',
13089 '\u{13}',
13090 '\u{9d}',
13091 '\u{85}',
13092 '\u{8}',
13093 '\u{87}',
13094 '\u{18}',
13095 '\u{19}',
13096 '\u{92}',
13097 '\u{8f}',
13098 '\u{1c}',
13099 '\u{1d}',
13100 '\u{1e}',
13101 '\u{1f}',
13102 '\u{80}',
13103 '\u{81}',
13104 '\u{82}',
13105 '\u{83}',
13106 '\u{84}',
13107 '\u{a}',
13108 '\u{17}',
13109 '\u{1b}',
13110 '\u{88}',
13111 '\u{89}',
13112 '\u{8a}',
13113 '\u{8b}',
13114 '\u{8c}',
13115 '\u{5}',
13116 '\u{6}',
13117 '\u{7}',
13118 '\u{90}',
13119 '\u{91}',
13120 '\u{16}',
13121 '\u{93}',
13122 '\u{94}',
13123 '\u{95}',
13124 '\u{96}',
13125 '\u{4}',
13126 '\u{98}',
13127 '\u{99}',
13128 '\u{9a}',
13129 '\u{9b}',
13130 '\u{14}',
13131 '\u{15}',
13132 '\u{9e}',
13133 '\u{1a}',
13134 '\u{20}',
13135 '\u{a0}',
13136 '\u{e2}',
13137 '\u{e4}',
13138 '\u{e0}',
13139 '\u{e1}',
13140 char::REPLACEMENT_CHARACTER,
13141 '\u{10b}',
13142 '\u{7b}',
13143 '\u{f1}',
13144 '\u{c7}',
13145 '\u{2e}',
13146 '\u{3c}',
13147 '\u{28}',
13148 '\u{2b}',
13149 '\u{21}',
13150 '\u{26}',
13151 '\u{e9}',
13152 '\u{ea}',
13153 '\u{eb}',
13154 '\u{e8}',
13155 '\u{ed}',
13156 '\u{ee}',
13157 '\u{ef}',
13158 '\u{ec}',
13159 '\u{df}',
13160 '\u{11e}',
13161 '\u{130}',
13162 '\u{2a}',
13163 '\u{29}',
13164 '\u{3b}',
13165 '\u{5e}',
13166 '\u{2d}',
13167 '\u{2f}',
13168 '\u{c2}',
13169 '\u{c4}',
13170 '\u{c0}',
13171 '\u{c1}',
13172 char::REPLACEMENT_CHARACTER,
13173 '\u{10a}',
13174 '\u{5b}',
13175 '\u{d1}',
13176 '\u{15f}',
13177 '\u{2c}',
13178 '\u{25}',
13179 '\u{5f}',
13180 '\u{3e}',
13181 '\u{3f}',
13182 char::REPLACEMENT_CHARACTER,
13183 '\u{c9}',
13184 '\u{ca}',
13185 '\u{cb}',
13186 '\u{c8}',
13187 '\u{cd}',
13188 '\u{ce}',
13189 '\u{cf}',
13190 '\u{cc}',
13191 '\u{131}',
13192 '\u{3a}',
13193 '\u{d6}',
13194 '\u{15e}',
13195 '\u{27}',
13196 '\u{3d}',
13197 '\u{dc}',
13198 '\u{2d8}',
13199 '\u{61}',
13200 '\u{62}',
13201 '\u{63}',
13202 '\u{64}',
13203 '\u{65}',
13204 '\u{66}',
13205 '\u{67}',
13206 '\u{68}',
13207 '\u{69}',
13208 '\u{127}',
13209 '\u{109}',
13210 '\u{15d}',
13211 '\u{16d}',
13212 char::REPLACEMENT_CHARACTER,
13213 '\u{7c}',
13214 '\u{b0}',
13215 '\u{6a}',
13216 '\u{6b}',
13217 '\u{6c}',
13218 '\u{6d}',
13219 '\u{6e}',
13220 '\u{6f}',
13221 '\u{70}',
13222 '\u{71}',
13223 '\u{72}',
13224 '\u{125}',
13225 '\u{11d}',
13226 '\u{135}',
13227 '\u{b8}',
13228 char::REPLACEMENT_CHARACTER,
13229 '\u{a4}',
13230 '\u{b5}',
13231 '\u{f6}',
13232 '\u{73}',
13233 '\u{74}',
13234 '\u{75}',
13235 '\u{76}',
13236 '\u{77}',
13237 '\u{78}',
13238 '\u{79}',
13239 '\u{7a}',
13240 '\u{126}',
13241 '\u{108}',
13242 '\u{15c}',
13243 '\u{16c}',
13244 char::REPLACEMENT_CHARACTER,
13245 '\u{40}',
13246 '\u{2d9}',
13247 '\u{a3}',
13248 '\u{17c}',
13249 '\u{7d}',
13250 '\u{17b}',
13251 '\u{a7}',
13252 '\u{5d}',
13253 '\u{b7}',
13254 '\u{bd}',
13255 '\u{24}',
13256 '\u{124}',
13257 '\u{11c}',
13258 '\u{134}',
13259 '\u{a8}',
13260 '\u{b4}',
13261 '\u{d7}',
13262 '\u{e7}',
13263 '\u{41}',
13264 '\u{42}',
13265 '\u{43}',
13266 '\u{44}',
13267 '\u{45}',
13268 '\u{46}',
13269 '\u{47}',
13270 '\u{48}',
13271 '\u{49}',
13272 '\u{ad}',
13273 '\u{f4}',
13274 '\u{7e}',
13275 '\u{f2}',
13276 '\u{f3}',
13277 '\u{121}',
13278 '\u{11f}',
13279 '\u{4a}',
13280 '\u{4b}',
13281 '\u{4c}',
13282 '\u{4d}',
13283 '\u{4e}',
13284 '\u{4f}',
13285 '\u{50}',
13286 '\u{51}',
13287 '\u{52}',
13288 '\u{60}',
13289 '\u{fb}',
13290 '\u{5c}',
13291 '\u{f9}',
13292 '\u{fa}',
13293 char::REPLACEMENT_CHARACTER,
13294 '\u{fc}',
13295 '\u{f7}',
13296 '\u{53}',
13297 '\u{54}',
13298 '\u{55}',
13299 '\u{56}',
13300 '\u{57}',
13301 '\u{58}',
13302 '\u{59}',
13303 '\u{5a}',
13304 '\u{b2}',
13305 '\u{d4}',
13306 '\u{23}',
13307 '\u{d2}',
13308 '\u{d3}',
13309 '\u{120}',
13310 '\u{30}',
13311 '\u{31}',
13312 '\u{32}',
13313 '\u{33}',
13314 '\u{34}',
13315 '\u{35}',
13316 '\u{36}',
13317 '\u{37}',
13318 '\u{38}',
13319 '\u{39}',
13320 '\u{b3}',
13321 '\u{db}',
13322 '\u{22}',
13323 '\u{d9}',
13324 '\u{da}',
13325 '\u{9f}',
13326];
13327const IBM_905_ENCODE_TABLE: &[(u16, u8)] = &[
13328 (0, 0),
13329 (1, 1),
13330 (2, 2),
13331 (3, 3),
13332 (4, 55),
13333 (5, 45),
13334 (6, 46),
13335 (7, 47),
13336 (8, 22),
13337 (9, 5),
13338 (10, 37),
13339 (11, 11),
13340 (12, 12),
13341 (13, 13),
13342 (14, 14),
13343 (15, 15),
13344 (16, 16),
13345 (17, 17),
13346 (18, 18),
13347 (19, 19),
13348 (20, 60),
13349 (21, 61),
13350 (22, 50),
13351 (23, 38),
13352 (24, 24),
13353 (25, 25),
13354 (26, 63),
13355 (27, 39),
13356 (28, 28),
13357 (29, 29),
13358 (30, 30),
13359 (31, 31),
13360 (32, 64),
13361 (33, 79),
13362 (34, 252),
13363 (35, 236),
13364 (36, 185),
13365 (37, 108),
13366 (38, 80),
13367 (39, 125),
13368 (40, 77),
13369 (41, 93),
13370 (42, 92),
13371 (43, 78),
13372 (44, 107),
13373 (45, 96),
13374 (46, 75),
13375 (47, 97),
13376 (48, 240),
13377 (49, 241),
13378 (50, 242),
13379 (51, 243),
13380 (52, 244),
13381 (53, 245),
13382 (54, 246),
13383 (55, 247),
13384 (56, 248),
13385 (57, 249),
13386 (58, 122),
13387 (59, 94),
13388 (60, 76),
13389 (61, 126),
13390 (62, 110),
13391 (63, 111),
13392 (64, 175),
13393 (65, 193),
13394 (66, 194),
13395 (67, 195),
13396 (68, 196),
13397 (69, 197),
13398 (70, 198),
13399 (71, 199),
13400 (72, 200),
13401 (73, 201),
13402 (74, 209),
13403 (75, 210),
13404 (76, 211),
13405 (77, 212),
13406 (78, 213),
13407 (79, 214),
13408 (80, 215),
13409 (81, 216),
13410 (82, 217),
13411 (83, 226),
13412 (84, 227),
13413 (85, 228),
13414 (86, 229),
13415 (87, 230),
13416 (88, 231),
13417 (89, 232),
13418 (90, 233),
13419 (91, 104),
13420 (92, 220),
13421 (93, 182),
13422 (94, 95),
13423 (95, 109),
13424 (96, 218),
13425 (97, 129),
13426 (98, 130),
13427 (99, 131),
13428 (100, 132),
13429 (101, 133),
13430 (102, 134),
13431 (103, 135),
13432 (104, 136),
13433 (105, 137),
13434 (106, 145),
13435 (107, 146),
13436 (108, 147),
13437 (109, 148),
13438 (110, 149),
13439 (111, 150),
13440 (112, 151),
13441 (113, 152),
13442 (114, 153),
13443 (115, 162),
13444 (116, 163),
13445 (117, 164),
13446 (118, 165),
13447 (119, 166),
13448 (120, 167),
13449 (121, 168),
13450 (122, 169),
13451 (123, 72),
13452 (124, 143),
13453 (125, 179),
13454 (126, 204),
13455 (127, 7),
13456 (128, 32),
13457 (129, 33),
13458 (130, 34),
13459 (131, 35),
13460 (132, 36),
13461 (133, 21),
13462 (134, 6),
13463 (135, 23),
13464 (136, 40),
13465 (137, 41),
13466 (138, 42),
13467 (139, 43),
13468 (140, 44),
13469 (141, 9),
13470 (142, 10),
13471 (143, 27),
13472 (144, 48),
13473 (145, 49),
13474 (146, 26),
13475 (147, 51),
13476 (148, 52),
13477 (149, 53),
13478 (150, 54),
13479 (151, 8),
13480 (152, 56),
13481 (153, 57),
13482 (154, 58),
13483 (155, 59),
13484 (156, 4),
13485 (157, 20),
13486 (158, 62),
13487 (159, 255),
13488 (160, 65),
13489 (163, 177),
13490 (164, 159),
13491 (167, 181),
13492 (168, 189),
13493 (173, 202),
13494 (176, 144),
13495 (178, 234),
13496 (179, 250),
13497 (180, 190),
13498 (181, 160),
13499 (183, 183),
13500 (184, 157),
13501 (189, 184),
13502 (192, 100),
13503 (193, 101),
13504 (194, 98),
13505 (196, 99),
13506 (199, 74),
13507 (200, 116),
13508 (201, 113),
13509 (202, 114),
13510 (203, 115),
13511 (204, 120),
13512 (205, 117),
13513 (206, 118),
13514 (207, 119),
13515 (209, 105),
13516 (210, 237),
13517 (211, 238),
13518 (212, 235),
13519 (214, 123),
13520 (215, 191),
13521 (217, 253),
13522 (218, 254),
13523 (219, 251),
13524 (220, 127),
13525 (223, 89),
13526 (224, 68),
13527 (225, 69),
13528 (226, 66),
13529 (228, 67),
13530 (231, 192),
13531 (232, 84),
13532 (233, 81),
13533 (234, 82),
13534 (235, 83),
13535 (236, 88),
13536 (237, 85),
13537 (238, 86),
13538 (239, 87),
13539 (241, 73),
13540 (242, 205),
13541 (243, 206),
13542 (244, 203),
13543 (246, 161),
13544 (247, 225),
13545 (249, 221),
13546 (250, 222),
13547 (251, 219),
13548 (252, 224),
13549 (264, 171),
13550 (265, 139),
13551 (266, 103),
13552 (267, 71),
13553 (284, 187),
13554 (285, 155),
13555 (286, 90),
13556 (287, 208),
13557 (288, 239),
13558 (289, 207),
13559 (292, 186),
13560 (293, 154),
13561 (294, 170),
13562 (295, 138),
13563 (304, 91),
13564 (305, 121),
13565 (308, 188),
13566 (309, 156),
13567 (348, 172),
13568 (349, 140),
13569 (350, 124),
13570 (351, 106),
13571 (364, 173),
13572 (365, 141),
13573 (379, 180),
13574 (380, 178),
13575 (728, 128),
13576 (729, 176),
13577];
13578
13579impl_ebcdic_encoder_and_decoder!(
13580 IBM918,
13581 "IBM918",
13582 IBM918Encoder,
13583 IBM918Decoder,
13584 IBM_918_ENCODE_TABLE,
13585 IBM_918_DECODE_TABLE
13586);
13587const IBM_918_DECODE_TABLE: [char; 256] = [
13588 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13589 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13590 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13591 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13592 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13593 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13594 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13595 '\u{a0}', '\u{60c}', '\u{61b}', '\u{61f}', '\u{fe81}', '\u{fe8d}', '\u{fe8e}', '\u{f8fb}',
13596 '\u{fe8f}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{fe91}',
13597 '\u{fb56}', '\u{fb58}', '\u{fe93}', '\u{fe95}', '\u{fe97}', '\u{fb66}', '\u{fb68}', '\u{fe99}',
13598 '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{fe9b}',
13599 '\u{fe9d}', '\u{fe9f}', '\u{fb7a}', '\u{fb7c}', '\u{fea1}', '\u{fea3}', '\u{fea5}', '\u{60}',
13600 '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{6f0}', '\u{6f1}', '\u{6f2}', '\u{6f3}',
13601 '\u{6f4}', '\u{6f5}', '\u{6f6}', '\u{6f7}', '\u{6f8}', '\u{6f9}', '\u{3a}', '\u{23}', '\u{40}',
13602 '\u{27}', '\u{3d}', '\u{22}', '\u{fea7}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
13603 '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{fea9}', '\u{fb88}', '\u{feab}', '\u{fead}',
13604 '\u{fb8c}', '\u{feaf}', '\u{fb8a}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}',
13605 '\u{70}', '\u{71}', '\u{72}', '\u{feb1}', '\u{feb3}', '\u{feb5}', '\u{feb7}', '\u{feb9}',
13606 '\u{febb}', '\u{febd}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}',
13607 '\u{79}', '\u{7a}', '\u{febf}', '\u{fec3}', '\u{fec7}', '\u{fec9}', '\u{feca}', '\u{fecb}',
13608 '\u{fecc}', '\u{fecd}', '\u{fece}', '\u{fecf}', '\u{fed0}', '\u{fed1}', '\u{fed3}', '\u{fed5}',
13609 '\u{fed7}', '\u{fb8e}', '\u{fedb}', '\u{7c}', '\u{fb92}', '\u{fb94}', '\u{fedd}', '\u{fedf}',
13610 '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}',
13611 '\u{49}', '\u{ad}', '\u{fee0}', '\u{fee1}', '\u{fee3}', '\u{fb9e}', '\u{fee5}', '\u{7d}',
13612 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13613 '\u{fee7}', '\u{fe85}', '\u{feed}', '\u{fba6}', '\u{fba8}', '\u{fba9}', '\u{5c}', '\u{fbaa}',
13614 '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{fe80}',
13615 '\u{fe89}', '\u{fe8a}', '\u{fe8b}', '\u{fbfc}', '\u{fbfd}', '\u{30}', '\u{31}', '\u{32}',
13616 '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{fbfe}', '\u{fbb0}',
13617 '\u{fbae}', '\u{fe7c}', '\u{fe7d}', '\u{9f}',
13618];
13619const IBM_918_ENCODE_TABLE: &[(u16, u8)] = &[
13620 (0, 0),
13621 (1, 1),
13622 (2, 2),
13623 (3, 3),
13624 (4, 55),
13625 (5, 45),
13626 (6, 46),
13627 (7, 47),
13628 (8, 22),
13629 (9, 5),
13630 (10, 37),
13631 (11, 11),
13632 (12, 12),
13633 (13, 13),
13634 (14, 14),
13635 (15, 15),
13636 (16, 16),
13637 (17, 17),
13638 (18, 18),
13639 (19, 19),
13640 (20, 60),
13641 (21, 61),
13642 (22, 50),
13643 (23, 38),
13644 (24, 24),
13645 (25, 25),
13646 (26, 63),
13647 (27, 39),
13648 (28, 28),
13649 (29, 29),
13650 (30, 30),
13651 (31, 31),
13652 (32, 64),
13653 (33, 79),
13654 (34, 127),
13655 (35, 123),
13656 (36, 91),
13657 (37, 108),
13658 (38, 80),
13659 (39, 125),
13660 (40, 77),
13661 (41, 93),
13662 (42, 92),
13663 (43, 78),
13664 (44, 107),
13665 (45, 96),
13666 (46, 75),
13667 (47, 97),
13668 (48, 240),
13669 (49, 241),
13670 (50, 242),
13671 (51, 243),
13672 (52, 244),
13673 (53, 245),
13674 (54, 246),
13675 (55, 247),
13676 (56, 248),
13677 (57, 249),
13678 (58, 122),
13679 (59, 94),
13680 (60, 76),
13681 (61, 126),
13682 (62, 110),
13683 (63, 111),
13684 (64, 124),
13685 (65, 193),
13686 (66, 194),
13687 (67, 195),
13688 (68, 196),
13689 (69, 197),
13690 (70, 198),
13691 (71, 199),
13692 (72, 200),
13693 (73, 201),
13694 (74, 209),
13695 (75, 210),
13696 (76, 211),
13697 (77, 212),
13698 (78, 213),
13699 (79, 214),
13700 (80, 215),
13701 (81, 216),
13702 (82, 217),
13703 (83, 226),
13704 (84, 227),
13705 (85, 228),
13706 (86, 229),
13707 (87, 230),
13708 (88, 231),
13709 (89, 232),
13710 (90, 233),
13711 (91, 74),
13712 (92, 224),
13713 (93, 90),
13714 (94, 95),
13715 (95, 109),
13716 (96, 106),
13717 (97, 129),
13718 (98, 130),
13719 (99, 131),
13720 (100, 132),
13721 (101, 133),
13722 (102, 134),
13723 (103, 135),
13724 (104, 136),
13725 (105, 137),
13726 (106, 145),
13727 (107, 146),
13728 (108, 147),
13729 (109, 148),
13730 (110, 149),
13731 (111, 150),
13732 (112, 151),
13733 (113, 152),
13734 (114, 153),
13735 (115, 162),
13736 (116, 163),
13737 (117, 164),
13738 (118, 165),
13739 (119, 166),
13740 (120, 167),
13741 (121, 168),
13742 (122, 169),
13743 (123, 192),
13744 (124, 187),
13745 (125, 208),
13746 (126, 161),
13747 (127, 7),
13748 (128, 32),
13749 (129, 33),
13750 (130, 34),
13751 (131, 35),
13752 (132, 36),
13753 (133, 21),
13754 (134, 6),
13755 (135, 23),
13756 (136, 40),
13757 (137, 41),
13758 (138, 42),
13759 (139, 43),
13760 (140, 44),
13761 (141, 9),
13762 (142, 10),
13763 (143, 27),
13764 (144, 48),
13765 (145, 49),
13766 (146, 26),
13767 (147, 51),
13768 (148, 52),
13769 (149, 53),
13770 (150, 54),
13771 (151, 8),
13772 (152, 56),
13773 (153, 57),
13774 (154, 58),
13775 (155, 59),
13776 (156, 4),
13777 (157, 20),
13778 (158, 62),
13779 (159, 255),
13780 (160, 65),
13781 (173, 202),
13782 (1548, 66),
13783 (1563, 67),
13784 (1567, 68),
13785 (1776, 112),
13786 (1777, 113),
13787 (1778, 114),
13788 (1779, 115),
13789 (1780, 116),
13790 (1781, 117),
13791 (1782, 118),
13792 (1783, 119),
13793 (1784, 120),
13794 (1785, 121),
13795 (63739, 72),
13796 (64342, 82),
13797 (64344, 83),
13798 (64358, 87),
13799 (64360, 88),
13800 (64378, 101),
13801 (64380, 102),
13802 (64392, 139),
13803 (64394, 144),
13804 (64396, 142),
13805 (64398, 185),
13806 (64402, 188),
13807 (64404, 189),
13808 (64414, 206),
13809 (64422, 221),
13810 (64424, 222),
13811 (64425, 223),
13812 (64426, 225),
13813 (64430, 252),
13814 (64432, 251),
13815 (64508, 238),
13816 (64509, 239),
13817 (64510, 250),
13818 (65148, 253),
13819 (65149, 254),
13820 (65152, 234),
13821 (65153, 69),
13822 (65157, 219),
13823 (65161, 235),
13824 (65162, 236),
13825 (65163, 237),
13826 (65165, 70),
13827 (65166, 71),
13828 (65167, 73),
13829 (65169, 81),
13830 (65171, 84),
13831 (65173, 85),
13832 (65175, 86),
13833 (65177, 89),
13834 (65179, 98),
13835 (65181, 99),
13836 (65183, 100),
13837 (65185, 103),
13838 (65187, 104),
13839 (65189, 105),
13840 (65191, 128),
13841 (65193, 138),
13842 (65195, 140),
13843 (65197, 141),
13844 (65199, 143),
13845 (65201, 154),
13846 (65203, 155),
13847 (65205, 156),
13848 (65207, 157),
13849 (65209, 158),
13850 (65211, 159),
13851 (65213, 160),
13852 (65215, 170),
13853 (65219, 171),
13854 (65223, 172),
13855 (65225, 173),
13856 (65226, 174),
13857 (65227, 175),
13858 (65228, 176),
13859 (65229, 177),
13860 (65230, 178),
13861 (65231, 179),
13862 (65232, 180),
13863 (65233, 181),
13864 (65235, 182),
13865 (65237, 183),
13866 (65239, 184),
13867 (65243, 186),
13868 (65245, 190),
13869 (65247, 191),
13870 (65248, 203),
13871 (65249, 204),
13872 (65251, 205),
13873 (65253, 207),
13874 (65255, 218),
13875 (65261, 220),
13876];
13877
13878impl_ebcdic_encoder_and_decoder!(
13879 IBM1026,
13880 "IBM1026",
13881 IBM1026Encoder,
13882 IBM1026Decoder,
13883 IBM_1026_ENCODE_TABLE,
13884 IBM_1026_DECODE_TABLE
13885);
13886const IBM_1026_DECODE_TABLE: [char; 256] = [
13887 '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13888 '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13889 '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13890 '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13891 '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13892 '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13893 '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13894 '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{7b}', '\u{f1}',
13895 '\u{c7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
13896 '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{11e}', '\u{130}',
13897 '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
13898 '\u{c1}', '\u{c3}', '\u{c5}', '\u{5b}', '\u{d1}', '\u{15f}', '\u{2c}', '\u{25}', '\u{5f}',
13899 '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
13900 '\u{cf}', '\u{cc}', '\u{131}', '\u{3a}', '\u{d6}', '\u{15e}', '\u{27}', '\u{3d}', '\u{dc}',
13901 '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
13902 '\u{69}', '\u{ab}', '\u{bb}', '\u{7d}', '\u{60}', '\u{a6}', '\u{b1}', '\u{b0}', '\u{6a}',
13903 '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
13904 '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
13905 '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{5d}',
13906 '\u{24}', '\u{40}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
13907 '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
13908 '\u{d7}', '\u{e7}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
13909 '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{11f}',
13910 '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13911 '\u{b9}', '\u{fb}', '\u{5c}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{fc}', '\u{f7}', '\u{53}',
13912 '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
13913 '\u{23}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
13914 '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{22}', '\u{d9}',
13915 '\u{da}', '\u{9f}',
13916];
13917const IBM_1026_ENCODE_TABLE: &[(u16, u8)] = &[
13918 (0, 0),
13919 (1, 1),
13920 (2, 2),
13921 (3, 3),
13922 (4, 55),
13923 (5, 45),
13924 (6, 46),
13925 (7, 47),
13926 (8, 22),
13927 (9, 5),
13928 (10, 37),
13929 (11, 11),
13930 (12, 12),
13931 (13, 13),
13932 (14, 14),
13933 (15, 15),
13934 (16, 16),
13935 (17, 17),
13936 (18, 18),
13937 (19, 19),
13938 (20, 60),
13939 (21, 61),
13940 (22, 50),
13941 (23, 38),
13942 (24, 24),
13943 (25, 25),
13944 (26, 63),
13945 (27, 39),
13946 (28, 28),
13947 (29, 29),
13948 (30, 30),
13949 (31, 31),
13950 (32, 64),
13951 (33, 79),
13952 (34, 252),
13953 (35, 236),
13954 (36, 173),
13955 (37, 108),
13956 (38, 80),
13957 (39, 125),
13958 (40, 77),
13959 (41, 93),
13960 (42, 92),
13961 (43, 78),
13962 (44, 107),
13963 (45, 96),
13964 (46, 75),
13965 (47, 97),
13966 (48, 240),
13967 (49, 241),
13968 (50, 242),
13969 (51, 243),
13970 (52, 244),
13971 (53, 245),
13972 (54, 246),
13973 (55, 247),
13974 (56, 248),
13975 (57, 249),
13976 (58, 122),
13977 (59, 94),
13978 (60, 76),
13979 (61, 126),
13980 (62, 110),
13981 (63, 111),
13982 (64, 174),
13983 (65, 193),
13984 (66, 194),
13985 (67, 195),
13986 (68, 196),
13987 (69, 197),
13988 (70, 198),
13989 (71, 199),
13990 (72, 200),
13991 (73, 201),
13992 (74, 209),
13993 (75, 210),
13994 (76, 211),
13995 (77, 212),
13996 (78, 213),
13997 (79, 214),
13998 (80, 215),
13999 (81, 216),
14000 (82, 217),
14001 (83, 226),
14002 (84, 227),
14003 (85, 228),
14004 (86, 229),
14005 (87, 230),
14006 (88, 231),
14007 (89, 232),
14008 (90, 233),
14009 (91, 104),
14010 (92, 220),
14011 (93, 172),
14012 (94, 95),
14013 (95, 109),
14014 (96, 141),
14015 (97, 129),
14016 (98, 130),
14017 (99, 131),
14018 (100, 132),
14019 (101, 133),
14020 (102, 134),
14021 (103, 135),
14022 (104, 136),
14023 (105, 137),
14024 (106, 145),
14025 (107, 146),
14026 (108, 147),
14027 (109, 148),
14028 (110, 149),
14029 (111, 150),
14030 (112, 151),
14031 (113, 152),
14032 (114, 153),
14033 (115, 162),
14034 (116, 163),
14035 (117, 164),
14036 (118, 165),
14037 (119, 166),
14038 (120, 167),
14039 (121, 168),
14040 (122, 169),
14041 (123, 72),
14042 (124, 187),
14043 (125, 140),
14044 (126, 204),
14045 (127, 7),
14046 (128, 32),
14047 (129, 33),
14048 (130, 34),
14049 (131, 35),
14050 (132, 36),
14051 (133, 21),
14052 (134, 6),
14053 (135, 23),
14054 (136, 40),
14055 (137, 41),
14056 (138, 42),
14057 (139, 43),
14058 (140, 44),
14059 (141, 9),
14060 (142, 10),
14061 (143, 27),
14062 (144, 48),
14063 (145, 49),
14064 (146, 26),
14065 (147, 51),
14066 (148, 52),
14067 (149, 53),
14068 (150, 54),
14069 (151, 8),
14070 (152, 56),
14071 (153, 57),
14072 (154, 58),
14073 (155, 59),
14074 (156, 4),
14075 (157, 20),
14076 (158, 62),
14077 (159, 255),
14078 (160, 65),
14079 (161, 170),
14080 (162, 176),
14081 (163, 177),
14082 (164, 159),
14083 (165, 178),
14084 (166, 142),
14085 (167, 181),
14086 (168, 189),
14087 (169, 180),
14088 (170, 154),
14089 (171, 138),
14090 (172, 186),
14091 (173, 202),
14092 (174, 175),
14093 (175, 188),
14094 (176, 144),
14095 (177, 143),
14096 (178, 234),
14097 (179, 250),
14098 (180, 190),
14099 (181, 160),
14100 (182, 182),
14101 (183, 179),
14102 (184, 157),
14103 (185, 218),
14104 (186, 155),
14105 (187, 139),
14106 (188, 183),
14107 (189, 184),
14108 (190, 185),
14109 (191, 171),
14110 (192, 100),
14111 (193, 101),
14112 (194, 98),
14113 (195, 102),
14114 (196, 99),
14115 (197, 103),
14116 (198, 158),
14117 (199, 74),
14118 (200, 116),
14119 (201, 113),
14120 (202, 114),
14121 (203, 115),
14122 (204, 120),
14123 (205, 117),
14124 (206, 118),
14125 (207, 119),
14126 (209, 105),
14127 (210, 237),
14128 (211, 238),
14129 (212, 235),
14130 (213, 239),
14131 (214, 123),
14132 (215, 191),
14133 (216, 128),
14134 (217, 253),
14135 (218, 254),
14136 (219, 251),
14137 (220, 127),
14138 (223, 89),
14139 (224, 68),
14140 (225, 69),
14141 (226, 66),
14142 (227, 70),
14143 (228, 67),
14144 (229, 71),
14145 (230, 156),
14146 (231, 192),
14147 (232, 84),
14148 (233, 81),
14149 (234, 82),
14150 (235, 83),
14151 (236, 88),
14152 (237, 85),
14153 (238, 86),
14154 (239, 87),
14155 (241, 73),
14156 (242, 205),
14157 (243, 206),
14158 (244, 203),
14159 (245, 207),
14160 (246, 161),
14161 (247, 225),
14162 (248, 112),
14163 (249, 221),
14164 (250, 222),
14165 (251, 219),
14166 (252, 224),
14167 (255, 223),
14168 (286, 90),
14169 (287, 208),
14170 (304, 91),
14171 (305, 121),
14172 (350, 124),
14173 (351, 106),
14174];
14175
14176#[cfg(test)]
14177mod tests {
14178 use super::*;
14179
14180 #[test]
14181 fn ebcdic_decoding_tests() {
14182 let doc = [
14183 0x4c, 0x6f, 0xa7, 0x94, 0x93, 0x40, 0xa5, 0x85, 0x99, 0xa2, 0x89, 0x96, 0x95, 0x7e,
14184 0x7f, 0xf1, 0x4b, 0xf0, 0x7f, 0x40, 0x85, 0x95, 0x83, 0x96, 0x84, 0x89, 0x95, 0x87,
14185 0x7e, 0x7f, 0xc3, 0x97, 0xf0, 0xf3, 0xf7, 0x7f, 0x6f, 0x6e, 0x25, 0x4c, 0x97, 0x6e,
14186 0x84, 0x81, 0xa3, 0x81, 0x4c, 0x61, 0x97, 0x6e,
14187 ];
14188
14189 let mut buf = String::with_capacity(1024);
14190 IBM037Decoder.decode(&doc, &mut buf, true).ok();
14191 assert_eq!(
14192 buf,
14193 "<?xml version=\"1.0\" encoding=\"Cp037\"?>\n<p>data</p>"
14194 );
14195 }
14196}