1use super::*; 2 3fn new_vdp() -> Vdp { 4 Vdp::new( 5 TimingMode::Ntsc, 6 VdpConfig { 7 enforce_sprite_limits: true, 8 non_linear_color_scale: false, 9 color_adjustment: DarkenColors::No, 10 deinterlace: true, 11 render_vertical_border: false, 12 render_horizontal_border: false, 13 plane_a_enabled: true, 14 plane_b_enabled: true, 15 window_enabled: true, 16 sprites_enabled: true, 17 }, 18 ) 19} 20 21fn v_counter_test(expected: &[u8], vdp: &mut Vdp) { 22 for (line, expected) in expected.iter().copied().enumerate() { 23 vdp.state.scanline = line as u16; 24 let VCounter { counter, .. } = vdp.v_counter(0); 25 assert_eq!( 26 expected, counter, 27 "V counter for line {line}: expected 0x{expected:02X}, actual 0x{counter:02X}" 28 ) 29 } 30} 31 32#[test] 33fn v_counter_ntsc_progressive() { 34 const EXPECTED: &[u8; NTSC_SCANLINES_PER_FRAME as usize] = &[ 35 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 36 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 37 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 38 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 39 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 40 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 41 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 42 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 43 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 44 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 45 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 46 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 47 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 48 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 49 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 50 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 51 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 52 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 53 ]; 54 55 let mut vdp = new_vdp(); 56 vdp.timing_mode = TimingMode::Ntsc; 57 v_counter_test(EXPECTED, &mut vdp); 58} 59 60#[test] 61fn v_counter_pal_v28_progressive() { 62 const EXPECTED: &[u8; PAL_SCANLINES_PER_FRAME as usize] = &[ 63 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 64 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 65 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 66 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 67 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 68 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 69 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 70 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 71 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 72 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 73 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 74 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 75 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 76 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 77 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 78 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 79 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 80 0xFF, 0x00, 0x01, 0x02, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 81 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 82 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 83 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 84 ]; 85 86 let mut vdp = new_vdp(); 87 vdp.timing_mode = TimingMode::Pal; 88 vdp.registers.vertical_display_size = VerticalDisplaySize::TwentyEightCell; 89 v_counter_test(EXPECTED, &mut vdp); 90} 91 92#[test] 93fn v_counter_pal_v30_progressive() { 94 const EXPECTED: &[u8; PAL_SCANLINES_PER_FRAME as usize] = &[ 95 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 96 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 97 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 98 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 99 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 100 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 101 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 102 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 103 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 104 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 105 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 106 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 107 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 108 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 109 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 110 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 111 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 112 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0xD2, 0xD3, 0xD4, 113 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 114 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 115 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 116 ]; 117 118 let mut vdp = new_vdp(); 119 vdp.timing_mode = TimingMode::Pal; 120 vdp.registers.vertical_display_size = VerticalDisplaySize::ThirtyCell; 121 v_counter_test(EXPECTED, &mut vdp); 122} 123 124#[test] 125fn v_counter_ntsc_interlaced_single_even_frame() { 126 const EXPECTED: &[u8; NTSC_SCANLINES_PER_FRAME as usize] = &[ 127 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 128 0x0E, 0x10, 0x10, 0x12, 0x12, 0x14, 0x14, 0x16, 0x16, 0x18, 0x18, 0x1A, 0x1A, 0x1C, 0x1C, 129 0x1E, 0x1E, 0x20, 0x20, 0x22, 0x22, 0x24, 0x24, 0x26, 0x26, 0x28, 0x28, 0x2A, 0x2A, 0x2C, 130 0x2C, 0x2E, 0x2E, 0x30, 0x30, 0x32, 0x32, 0x34, 0x34, 0x36, 0x36, 0x38, 0x38, 0x3A, 0x3A, 131 0x3C, 0x3C, 0x3E, 0x3E, 0x40, 0x40, 0x42, 0x42, 0x44, 0x44, 0x46, 0x46, 0x48, 0x48, 0x4A, 132 0x4A, 0x4C, 0x4C, 0x4E, 0x4E, 0x50, 0x50, 0x52, 0x52, 0x54, 0x54, 0x56, 0x56, 0x58, 0x58, 133 0x5A, 0x5A, 0x5C, 0x5C, 0x5E, 0x5E, 0x60, 0x60, 0x62, 0x62, 0x64, 0x64, 0x66, 0x66, 0x68, 134 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6E, 0x6E, 0x70, 0x70, 0x72, 0x72, 0x74, 0x74, 0x76, 0x76, 135 0x78, 0x78, 0x7A, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 136 0x86, 0x88, 0x88, 0x8A, 0x8A, 0x8C, 0x8C, 0x8E, 0x8E, 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 137 0x96, 0x96, 0x98, 0x98, 0x9A, 0x9A, 0x9C, 0x9C, 0x9E, 0x9E, 0xA0, 0xA0, 0xA2, 0xA2, 0xA4, 138 0xA4, 0xA6, 0xA6, 0xA8, 0xA8, 0xAA, 0xAA, 0xAC, 0xAC, 0xAE, 0xAE, 0xB0, 0xB0, 0xB2, 0xB2, 139 0xB4, 0xB4, 0xB6, 0xB6, 0xB8, 0xB8, 0xBA, 0xBA, 0xBC, 0xBC, 0xBE, 0xBE, 0xC0, 0xC0, 0xC2, 140 0xC2, 0xC4, 0xC4, 0xC6, 0xC6, 0xC8, 0xC8, 0xCA, 0xCA, 0xCC, 0xCC, 0xCE, 0xCE, 0xD0, 0xD0, 141 0xD2, 0xD2, 0xD4, 0xD4, 0xD6, 0xD6, 0xD8, 0xD8, 0xDA, 0xDA, 0xDC, 0xDC, 0xDE, 0xDE, 0xE0, 142 0xE0, 0xE2, 0xE2, 0xE4, 0xE4, 0xE6, 0xE6, 0xE8, 0xE8, 0xEA, 0xE5, 0xE7, 0xE7, 0xE9, 0xE9, 143 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 0xF3, 0xF5, 0xF5, 0xF7, 0xF7, 0xF9, 144 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 145 ]; 146 147 let mut vdp = new_vdp(); 148 vdp.timing_mode = TimingMode::Ntsc; 149 vdp.registers.interlacing_mode = InterlacingMode::Interlaced; 150 vdp.state.interlaced_frame = true; 151 vdp.state.interlaced_odd = false; 152 v_counter_test(EXPECTED, &mut vdp); 153} 154 155#[test] 156fn v_counter_ntsc_interlaced_single_odd_frame() { 157 const EXPECTED: &[u8; (NTSC_SCANLINES_PER_FRAME + 1) as usize] = &[ 158 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 159 0x0E, 0x10, 0x10, 0x12, 0x12, 0x14, 0x14, 0x16, 0x16, 0x18, 0x18, 0x1A, 0x1A, 0x1C, 0x1C, 160 0x1E, 0x1E, 0x20, 0x20, 0x22, 0x22, 0x24, 0x24, 0x26, 0x26, 0x28, 0x28, 0x2A, 0x2A, 0x2C, 161 0x2C, 0x2E, 0x2E, 0x30, 0x30, 0x32, 0x32, 0x34, 0x34, 0x36, 0x36, 0x38, 0x38, 0x3A, 0x3A, 162 0x3C, 0x3C, 0x3E, 0x3E, 0x40, 0x40, 0x42, 0x42, 0x44, 0x44, 0x46, 0x46, 0x48, 0x48, 0x4A, 163 0x4A, 0x4C, 0x4C, 0x4E, 0x4E, 0x50, 0x50, 0x52, 0x52, 0x54, 0x54, 0x56, 0x56, 0x58, 0x58, 164 0x5A, 0x5A, 0x5C, 0x5C, 0x5E, 0x5E, 0x60, 0x60, 0x62, 0x62, 0x64, 0x64, 0x66, 0x66, 0x68, 165 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6E, 0x6E, 0x70, 0x70, 0x72, 0x72, 0x74, 0x74, 0x76, 0x76, 166 0x78, 0x78, 0x7A, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 167 0x86, 0x88, 0x88, 0x8A, 0x8A, 0x8C, 0x8C, 0x8E, 0x8E, 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 168 0x96, 0x96, 0x98, 0x98, 0x9A, 0x9A, 0x9C, 0x9C, 0x9E, 0x9E, 0xA0, 0xA0, 0xA2, 0xA2, 0xA4, 169 0xA4, 0xA6, 0xA6, 0xA8, 0xA8, 0xAA, 0xAA, 0xAC, 0xAC, 0xAE, 0xAE, 0xB0, 0xB0, 0xB2, 0xB2, 170 0xB4, 0xB4, 0xB6, 0xB6, 0xB8, 0xB8, 0xBA, 0xBA, 0xBC, 0xBC, 0xBE, 0xBE, 0xC0, 0xC0, 0xC2, 171 0xC2, 0xC4, 0xC4, 0xC6, 0xC6, 0xC8, 0xC8, 0xCA, 0xCA, 0xCC, 0xCC, 0xCE, 0xCE, 0xD0, 0xD0, 172 0xD2, 0xD2, 0xD4, 0xD4, 0xD6, 0xD6, 0xD8, 0xD8, 0xDA, 0xDA, 0xDC, 0xDC, 0xDE, 0xDE, 0xE0, 173 0xE0, 0xE2, 0xE2, 0xE4, 0xE4, 0xE6, 0xE6, 0xE8, 0xE8, 0xEA, 0xE5, 0xE5, 0xE7, 0xE7, 0xE9, 174 0xE9, 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 0xF3, 0xF5, 0xF5, 0xF7, 0xF7, 175 0xF9, 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 176 ]; 177 178 let mut vdp = new_vdp(); 179 vdp.timing_mode = TimingMode::Ntsc; 180 vdp.registers.interlacing_mode = InterlacingMode::Interlaced; 181 vdp.state.interlaced_frame = true; 182 vdp.state.interlaced_odd = true; 183 v_counter_test(EXPECTED, &mut vdp); 184} 185 186#[test] 187fn v_counter_pal_v28_interlaced_single_even_frame() { 188 const EXPECTED: &[u8; (PAL_SCANLINES_PER_FRAME - 1) as usize] = &[ 189 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 190 0x0E, 0x10, 0x10, 0x12, 0x12, 0x14, 0x14, 0x16, 0x16, 0x18, 0x18, 0x1A, 0x1A, 0x1C, 0x1C, 191 0x1E, 0x1E, 0x20, 0x20, 0x22, 0x22, 0x24, 0x24, 0x26, 0x26, 0x28, 0x28, 0x2A, 0x2A, 0x2C, 192 0x2C, 0x2E, 0x2E, 0x30, 0x30, 0x32, 0x32, 0x34, 0x34, 0x36, 0x36, 0x38, 0x38, 0x3A, 0x3A, 193 0x3C, 0x3C, 0x3E, 0x3E, 0x40, 0x40, 0x42, 0x42, 0x44, 0x44, 0x46, 0x46, 0x48, 0x48, 0x4A, 194 0x4A, 0x4C, 0x4C, 0x4E, 0x4E, 0x50, 0x50, 0x52, 0x52, 0x54, 0x54, 0x56, 0x56, 0x58, 0x58, 195 0x5A, 0x5A, 0x5C, 0x5C, 0x5E, 0x5E, 0x60, 0x60, 0x62, 0x62, 0x64, 0x64, 0x66, 0x66, 0x68, 196 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6E, 0x6E, 0x70, 0x70, 0x72, 0x72, 0x74, 0x74, 0x76, 0x76, 197 0x78, 0x78, 0x7A, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 198 0x86, 0x88, 0x88, 0x8A, 0x8A, 0x8C, 0x8C, 0x8E, 0x8E, 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 199 0x96, 0x96, 0x98, 0x98, 0x9A, 0x9A, 0x9C, 0x9C, 0x9E, 0x9E, 0xA0, 0xA0, 0xA2, 0xA2, 0xA4, 200 0xA4, 0xA6, 0xA6, 0xA8, 0xA8, 0xAA, 0xAA, 0xAC, 0xAC, 0xAE, 0xAE, 0xB0, 0xB0, 0xB2, 0xB2, 201 0xB4, 0xB4, 0xB6, 0xB6, 0xB8, 0xB8, 0xBA, 0xBA, 0xBC, 0xBC, 0xBE, 0xBE, 0xC0, 0xC0, 0xC2, 202 0xC2, 0xC4, 0xC4, 0xC6, 0xC6, 0xC8, 0xC8, 0xCA, 0xCA, 0xCC, 0xCC, 0xCE, 0xCE, 0xD0, 0xD0, 203 0xD2, 0xD2, 0xD4, 0xD4, 0xD6, 0xD6, 0xD8, 0xD8, 0xDA, 0xDA, 0xDC, 0xDC, 0xDE, 0xDE, 0xE0, 204 0xE0, 0xE2, 0xE2, 0xE4, 0xE4, 0xE6, 0xE6, 0xE8, 0xE8, 0xEA, 0xEA, 0xEC, 0xEC, 0xEE, 0xEE, 205 0xF0, 0xF0, 0xF2, 0xF2, 0xF4, 0xF4, 0xF6, 0xF6, 0xF8, 0xF8, 0xFA, 0xFA, 0xFC, 0xFC, 0xFE, 206 0xFE, 0x01, 0x01, 0xCB, 0xCB, 0xCD, 0xCD, 0xCF, 0xCF, 0xD1, 0xD1, 0xD3, 0xD3, 0xD5, 0xD5, 207 0xD7, 0xD7, 0xD9, 0xD9, 0xDB, 0xDB, 0xDD, 0xDD, 0xDF, 0xDF, 0xE1, 0xE1, 0xE3, 0xE3, 0xE5, 208 0xE5, 0xE7, 0xE7, 0xE9, 0xE9, 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 0xF3, 209 0xF5, 0xF5, 0xF7, 0xF7, 0xF9, 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 210 ]; 211 212 let mut vdp = new_vdp(); 213 vdp.timing_mode = TimingMode::Pal; 214 vdp.registers.vertical_display_size = VerticalDisplaySize::TwentyEightCell; 215 vdp.registers.interlacing_mode = InterlacingMode::Interlaced; 216 vdp.state.interlaced_frame = true; 217 vdp.state.interlaced_odd = false; 218 v_counter_test(EXPECTED, &mut vdp); 219} 220 221#[test] 222fn v_counter_pal_v28_interlaced_single_odd_frame() { 223 const EXPECTED: &[u8; PAL_SCANLINES_PER_FRAME as usize] = &[ 224 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 225 0x0E, 0x10, 0x10, 0x12, 0x12, 0x14, 0x14, 0x16, 0x16, 0x18, 0x18, 0x1A, 0x1A, 0x1C, 0x1C, 226 0x1E, 0x1E, 0x20, 0x20, 0x22, 0x22, 0x24, 0x24, 0x26, 0x26, 0x28, 0x28, 0x2A, 0x2A, 0x2C, 227 0x2C, 0x2E, 0x2E, 0x30, 0x30, 0x32, 0x32, 0x34, 0x34, 0x36, 0x36, 0x38, 0x38, 0x3A, 0x3A, 228 0x3C, 0x3C, 0x3E, 0x3E, 0x40, 0x40, 0x42, 0x42, 0x44, 0x44, 0x46, 0x46, 0x48, 0x48, 0x4A, 229 0x4A, 0x4C, 0x4C, 0x4E, 0x4E, 0x50, 0x50, 0x52, 0x52, 0x54, 0x54, 0x56, 0x56, 0x58, 0x58, 230 0x5A, 0x5A, 0x5C, 0x5C, 0x5E, 0x5E, 0x60, 0x60, 0x62, 0x62, 0x64, 0x64, 0x66, 0x66, 0x68, 231 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6E, 0x6E, 0x70, 0x70, 0x72, 0x72, 0x74, 0x74, 0x76, 0x76, 232 0x78, 0x78, 0x7A, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 233 0x86, 0x88, 0x88, 0x8A, 0x8A, 0x8C, 0x8C, 0x8E, 0x8E, 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 234 0x96, 0x96, 0x98, 0x98, 0x9A, 0x9A, 0x9C, 0x9C, 0x9E, 0x9E, 0xA0, 0xA0, 0xA2, 0xA2, 0xA4, 235 0xA4, 0xA6, 0xA6, 0xA8, 0xA8, 0xAA, 0xAA, 0xAC, 0xAC, 0xAE, 0xAE, 0xB0, 0xB0, 0xB2, 0xB2, 236 0xB4, 0xB4, 0xB6, 0xB6, 0xB8, 0xB8, 0xBA, 0xBA, 0xBC, 0xBC, 0xBE, 0xBE, 0xC0, 0xC0, 0xC2, 237 0xC2, 0xC4, 0xC4, 0xC6, 0xC6, 0xC8, 0xC8, 0xCA, 0xCA, 0xCC, 0xCC, 0xCE, 0xCE, 0xD0, 0xD0, 238 0xD2, 0xD2, 0xD4, 0xD4, 0xD6, 0xD6, 0xD8, 0xD8, 0xDA, 0xDA, 0xDC, 0xDC, 0xDE, 0xDE, 0xE0, 239 0xE0, 0xE2, 0xE2, 0xE4, 0xE4, 0xE6, 0xE6, 0xE8, 0xE8, 0xEA, 0xEA, 0xEC, 0xEC, 0xEE, 0xEE, 240 0xF0, 0xF0, 0xF2, 0xF2, 0xF4, 0xF4, 0xF6, 0xF6, 0xF8, 0xF8, 0xFA, 0xFA, 0xFC, 0xFC, 0xFE, 241 0xFE, 0x01, 0x01, 0xC9, 0xCB, 0xCB, 0xCD, 0xCD, 0xCF, 0xCF, 0xD1, 0xD1, 0xD3, 0xD3, 0xD5, 242 0xD5, 0xD7, 0xD7, 0xD9, 0xD9, 0xDB, 0xDB, 0xDD, 0xDD, 0xDF, 0xDF, 0xE1, 0xE1, 0xE3, 0xE3, 243 0xE5, 0xE5, 0xE7, 0xE7, 0xE9, 0xE9, 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 244 0xF3, 0xF5, 0xF5, 0xF7, 0xF7, 0xF9, 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 245 ]; 246 247 let mut vdp = new_vdp(); 248 vdp.timing_mode = TimingMode::Pal; 249 vdp.registers.vertical_display_size = VerticalDisplaySize::TwentyEightCell; 250 vdp.registers.interlacing_mode = InterlacingMode::Interlaced; 251 vdp.state.interlaced_frame = true; 252 vdp.state.interlaced_odd = true; 253 v_counter_test(EXPECTED, &mut vdp); 254} 255 256#[test] 257fn v_counter_pal_v30_interlaced_single_even_frame() { 258 const EXPECTED: &[u8; (PAL_SCANLINES_PER_FRAME - 1) as usize] = &[ 259 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 260 0x0E, 0x10, 0x10, 0x12, 0x12, 0x14, 0x14, 0x16, 0x16, 0x18, 0x18, 0x1A, 0x1A, 0x1C, 0x1C, 261 0x1E, 0x1E, 0x20, 0x20, 0x22, 0x22, 0x24, 0x24, 0x26, 0x26, 0x28, 0x28, 0x2A, 0x2A, 0x2C, 262 0x2C, 0x2E, 0x2E, 0x30, 0x30, 0x32, 0x32, 0x34, 0x34, 0x36, 0x36, 0x38, 0x38, 0x3A, 0x3A, 263 0x3C, 0x3C, 0x3E, 0x3E, 0x40, 0x40, 0x42, 0x42, 0x44, 0x44, 0x46, 0x46, 0x48, 0x48, 0x4A, 264 0x4A, 0x4C, 0x4C, 0x4E, 0x4E, 0x50, 0x50, 0x52, 0x52, 0x54, 0x54, 0x56, 0x56, 0x58, 0x58, 265 0x5A, 0x5A, 0x5C, 0x5C, 0x5E, 0x5E, 0x60, 0x60, 0x62, 0x62, 0x64, 0x64, 0x66, 0x66, 0x68, 266 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6E, 0x6E, 0x70, 0x70, 0x72, 0x72, 0x74, 0x74, 0x76, 0x76, 267 0x78, 0x78, 0x7A, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 268 0x86, 0x88, 0x88, 0x8A, 0x8A, 0x8C, 0x8C, 0x8E, 0x8E, 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 269 0x96, 0x96, 0x98, 0x98, 0x9A, 0x9A, 0x9C, 0x9C, 0x9E, 0x9E, 0xA0, 0xA0, 0xA2, 0xA2, 0xA4, 270 0xA4, 0xA6, 0xA6, 0xA8, 0xA8, 0xAA, 0xAA, 0xAC, 0xAC, 0xAE, 0xAE, 0xB0, 0xB0, 0xB2, 0xB2, 271 0xB4, 0xB4, 0xB6, 0xB6, 0xB8, 0xB8, 0xBA, 0xBA, 0xBC, 0xBC, 0xBE, 0xBE, 0xC0, 0xC0, 0xC2, 272 0xC2, 0xC4, 0xC4, 0xC6, 0xC6, 0xC8, 0xC8, 0xCA, 0xCA, 0xCC, 0xCC, 0xCE, 0xCE, 0xD0, 0xD0, 273 0xD2, 0xD2, 0xD4, 0xD4, 0xD6, 0xD6, 0xD8, 0xD8, 0xDA, 0xDA, 0xDC, 0xDC, 0xDE, 0xDE, 0xE0, 274 0xE0, 0xE2, 0xE2, 0xE4, 0xE4, 0xE6, 0xE6, 0xE8, 0xE8, 0xEA, 0xEA, 0xEC, 0xEC, 0xEE, 0xEE, 275 0xF0, 0xF0, 0xF2, 0xF2, 0xF4, 0xF4, 0xF6, 0xF6, 0xF8, 0xF8, 0xFA, 0xFA, 0xFC, 0xFC, 0xFE, 276 0xFE, 0x01, 0x01, 0x03, 0x03, 0x05, 0x05, 0x07, 0x07, 0x09, 0x09, 0xD3, 0xD3, 0xD5, 0xD5, 277 0xD7, 0xD7, 0xD9, 0xD9, 0xDB, 0xDB, 0xDD, 0xDD, 0xDF, 0xDF, 0xE1, 0xE1, 0xE3, 0xE3, 0xE5, 278 0xE5, 0xE7, 0xE7, 0xE9, 0xE9, 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 0xF3, 279 0xF5, 0xF5, 0xF7, 0xF7, 0xF9, 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 280 ]; 281 282 let mut vdp = new_vdp(); 283 vdp.timing_mode = TimingMode::Pal; 284 vdp.registers.vertical_display_size = VerticalDisplaySize::ThirtyCell; 285 vdp.registers.interlacing_mode = InterlacingMode::Interlaced; 286 vdp.state.interlaced_frame = true; 287 vdp.state.interlaced_odd = false; 288 v_counter_test(EXPECTED, &mut vdp); 289} 290 291#[test] 292fn v_counter_pal_v30_interlaced_single_odd_frame() { 293 const EXPECTED: &[u8; PAL_SCANLINES_PER_FRAME as usize] = &[ 294 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0A, 0x0C, 0x0C, 0x0E, 295 0x0E, 0x10, 0x10, 0x12, 0x12, 0x14, 0x14, 0x16, 0x16, 0x18, 0x18, 0x1A, 0x1A, 0x1C, 0x1C, 296 0x1E, 0x1E, 0x20, 0x20, 0x22, 0x22, 0x24, 0x24, 0x26, 0x26, 0x28, 0x28, 0x2A, 0x2A, 0x2C, 297 0x2C, 0x2E, 0x2E, 0x30, 0x30, 0x32, 0x32, 0x34, 0x34, 0x36, 0x36, 0x38, 0x38, 0x3A, 0x3A, 298 0x3C, 0x3C, 0x3E, 0x3E, 0x40, 0x40, 0x42, 0x42, 0x44, 0x44, 0x46, 0x46, 0x48, 0x48, 0x4A, 299 0x4A, 0x4C, 0x4C, 0x4E, 0x4E, 0x50, 0x50, 0x52, 0x52, 0x54, 0x54, 0x56, 0x56, 0x58, 0x58, 300 0x5A, 0x5A, 0x5C, 0x5C, 0x5E, 0x5E, 0x60, 0x60, 0x62, 0x62, 0x64, 0x64, 0x66, 0x66, 0x68, 301 0x68, 0x6A, 0x6A, 0x6C, 0x6C, 0x6E, 0x6E, 0x70, 0x70, 0x72, 0x72, 0x74, 0x74, 0x76, 0x76, 302 0x78, 0x78, 0x7A, 0x7A, 0x7C, 0x7C, 0x7E, 0x7E, 0x80, 0x80, 0x82, 0x82, 0x84, 0x84, 0x86, 303 0x86, 0x88, 0x88, 0x8A, 0x8A, 0x8C, 0x8C, 0x8E, 0x8E, 0x90, 0x90, 0x92, 0x92, 0x94, 0x94, 304 0x96, 0x96, 0x98, 0x98, 0x9A, 0x9A, 0x9C, 0x9C, 0x9E, 0x9E, 0xA0, 0xA0, 0xA2, 0xA2, 0xA4, 305 0xA4, 0xA6, 0xA6, 0xA8, 0xA8, 0xAA, 0xAA, 0xAC, 0xAC, 0xAE, 0xAE, 0xB0, 0xB0, 0xB2, 0xB2, 306 0xB4, 0xB4, 0xB6, 0xB6, 0xB8, 0xB8, 0xBA, 0xBA, 0xBC, 0xBC, 0xBE, 0xBE, 0xC0, 0xC0, 0xC2, 307 0xC2, 0xC4, 0xC4, 0xC6, 0xC6, 0xC8, 0xC8, 0xCA, 0xCA, 0xCC, 0xCC, 0xCE, 0xCE, 0xD0, 0xD0, 308 0xD2, 0xD2, 0xD4, 0xD4, 0xD6, 0xD6, 0xD8, 0xD8, 0xDA, 0xDA, 0xDC, 0xDC, 0xDE, 0xDE, 0xE0, 309 0xE0, 0xE2, 0xE2, 0xE4, 0xE4, 0xE6, 0xE6, 0xE8, 0xE8, 0xEA, 0xEA, 0xEC, 0xEC, 0xEE, 0xEE, 310 0xF0, 0xF0, 0xF2, 0xF2, 0xF4, 0xF4, 0xF6, 0xF6, 0xF8, 0xF8, 0xFA, 0xFA, 0xFC, 0xFC, 0xFE, 311 0xFE, 0x01, 0x01, 0x03, 0x03, 0x05, 0x05, 0x07, 0x07, 0x09, 0x09, 0xD1, 0xD3, 0xD3, 0xD5, 312 0xD5, 0xD7, 0xD7, 0xD9, 0xD9, 0xDB, 0xDB, 0xDD, 0xDD, 0xDF, 0xDF, 0xE1, 0xE1, 0xE3, 0xE3, 313 0xE5, 0xE5, 0xE7, 0xE7, 0xE9, 0xE9, 0xEB, 0xEB, 0xED, 0xED, 0xEF, 0xEF, 0xF1, 0xF1, 0xF3, 314 0xF3, 0xF5, 0xF5, 0xF7, 0xF7, 0xF9, 0xF9, 0xFB, 0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 315 ]; 316 317 let mut vdp = new_vdp(); 318 vdp.timing_mode = TimingMode::Pal; 319 vdp.registers.vertical_display_size = VerticalDisplaySize::ThirtyCell; 320 vdp.registers.interlacing_mode = InterlacingMode::Interlaced; 321 vdp.state.interlaced_frame = true; 322 vdp.state.interlaced_odd = true; 323 v_counter_test(EXPECTED, &mut vdp); 324} 325 326#[test] 327fn v_counter_ntsc_interlaced_double_even_frame() { 328 const EXPECTED: &[u8; NTSC_SCANLINES_PER_FRAME as usize] = &[ 329 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 330 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 331 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 332 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 333 0x78, 0x7A, 0x7C, 0x7E, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 334 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 335 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 336 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 337 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 338 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23, 0x25, 0x27, 0x29, 0x2B, 339 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 340 0x4B, 0x4D, 0x4F, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x63, 0x65, 0x67, 341 0x69, 0x6B, 0x6D, 0x6F, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81, 0x83, 0x85, 342 0x87, 0x89, 0x8B, 0x8D, 0x8F, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 343 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 344 0xC3, 0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 345 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 346 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 0xFF, 347 ]; 348 349 let mut vdp = new_vdp(); 350 vdp.timing_mode = TimingMode::Ntsc; 351 vdp.registers.interlacing_mode = InterlacingMode::InterlacedDouble; 352 vdp.state.interlaced_frame = true; 353 vdp.state.interlaced_odd = false; 354 v_counter_test(EXPECTED, &mut vdp); 355} 356 357#[test] 358fn v_counter_ntsc_interlaced_double_odd_frame() { 359 const EXPECTED: &[u8; (NTSC_SCANLINES_PER_FRAME + 1) as usize] = &[ 360 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 361 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 362 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 363 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 364 0x78, 0x7A, 0x7C, 0x7E, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 365 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 366 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 367 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 368 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 369 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23, 0x25, 0x27, 0x29, 0x2B, 370 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 371 0x4B, 0x4D, 0x4F, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x63, 0x65, 0x67, 372 0x69, 0x6B, 0x6D, 0x6F, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81, 0x83, 0x85, 373 0x87, 0x89, 0x8B, 0x8D, 0x8F, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 374 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 375 0xC3, 0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 376 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 377 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 0xFF, 378 ]; 379 380 let mut vdp = new_vdp(); 381 vdp.timing_mode = TimingMode::Ntsc; 382 vdp.registers.interlacing_mode = InterlacingMode::InterlacedDouble; 383 vdp.state.interlaced_frame = true; 384 vdp.state.interlaced_odd = true; 385 v_counter_test(EXPECTED, &mut vdp); 386} 387 388#[test] 389fn v_counter_pal_v28_interlaced_double_even_frame() { 390 const EXPECTED: &[u8; (PAL_SCANLINES_PER_FRAME - 1) as usize] = &[ 391 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 392 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 393 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 394 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 395 0x78, 0x7A, 0x7C, 0x7E, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 396 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 397 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 398 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 399 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 400 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23, 0x25, 0x27, 0x29, 0x2B, 401 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 402 0x4B, 0x4D, 0x4F, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x63, 0x65, 0x67, 403 0x69, 0x6B, 0x6D, 0x6F, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81, 0x83, 0x85, 404 0x87, 0x89, 0x8B, 0x8D, 0x8F, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 405 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 406 0xC3, 0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 407 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 408 0xFF, 0x00, 0x02, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 0xA5, 0xA7, 0xA9, 0xAB, 409 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 0xC3, 0xC5, 0xC7, 0xC9, 410 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 0xE7, 411 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 0xFF, 412 ]; 413 414 let mut vdp = new_vdp(); 415 vdp.timing_mode = TimingMode::Pal; 416 vdp.registers.vertical_display_size = VerticalDisplaySize::TwentyEightCell; 417 vdp.registers.interlacing_mode = InterlacingMode::InterlacedDouble; 418 vdp.state.interlaced_frame = true; 419 vdp.state.interlaced_odd = false; 420 v_counter_test(EXPECTED, &mut vdp); 421} 422 423#[test] 424fn v_counter_pal_v28_interlaced_double_odd_frame() { 425 const EXPECTED: &[u8; PAL_SCANLINES_PER_FRAME as usize] = &[ 426 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 427 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 428 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 429 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 430 0x78, 0x7A, 0x7C, 0x7E, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 431 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 432 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 433 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 434 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 435 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23, 0x25, 0x27, 0x29, 0x2B, 436 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 437 0x4B, 0x4D, 0x4F, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x63, 0x65, 0x67, 438 0x69, 0x6B, 0x6D, 0x6F, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81, 0x83, 0x85, 439 0x87, 0x89, 0x8B, 0x8D, 0x8F, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 440 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 441 0xC3, 0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 442 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 443 0xFF, 0x00, 0x02, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 0xA5, 0xA7, 0xA9, 444 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 0xC3, 0xC5, 0xC7, 445 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 446 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 0xFF, 447 ]; 448 449 let mut vdp = new_vdp(); 450 vdp.timing_mode = TimingMode::Pal; 451 vdp.registers.vertical_display_size = VerticalDisplaySize::TwentyEightCell; 452 vdp.registers.interlacing_mode = InterlacingMode::InterlacedDouble; 453 vdp.state.interlaced_frame = true; 454 vdp.state.interlaced_odd = true; 455 v_counter_test(EXPECTED, &mut vdp); 456} 457 458#[test] 459fn v_counter_pal_v30_interlaced_double_even_frame() { 460 const EXPECTED: &[u8; (PAL_SCANLINES_PER_FRAME - 1) as usize] = &[ 461 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 462 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 463 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 464 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 465 0x78, 0x7A, 0x7C, 0x7E, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 466 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 467 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 468 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 469 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 470 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23, 0x25, 0x27, 0x29, 0x2B, 471 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 472 0x4B, 0x4D, 0x4F, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x63, 0x65, 0x67, 473 0x69, 0x6B, 0x6D, 0x6F, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81, 0x83, 0x85, 474 0x87, 0x89, 0x8B, 0x8D, 0x8F, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 475 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 476 0xC3, 0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 477 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 478 0xFF, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0xA5, 0xA7, 0xA9, 0xAB, 479 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 0xC3, 0xC5, 0xC7, 0xC9, 480 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 0xE7, 481 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 0xFF, 482 ]; 483 484 let mut vdp = new_vdp(); 485 vdp.timing_mode = TimingMode::Pal; 486 vdp.registers.vertical_display_size = VerticalDisplaySize::ThirtyCell; 487 vdp.registers.interlacing_mode = InterlacingMode::InterlacedDouble; 488 vdp.state.interlaced_frame = true; 489 vdp.state.interlaced_odd = false; 490 v_counter_test(EXPECTED, &mut vdp); 491} 492 493#[test] 494fn v_counter_pal_v30_interlaced_double_odd_frame() { 495 const EXPECTED: &[u8; PAL_SCANLINES_PER_FRAME as usize] = &[ 496 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 497 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2E, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3A, 498 0x3C, 0x3E, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x58, 499 0x5A, 0x5C, 0x5E, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6A, 0x6C, 0x6E, 0x70, 0x72, 0x74, 0x76, 500 0x78, 0x7A, 0x7C, 0x7E, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8A, 0x8C, 0x8E, 0x90, 0x92, 0x94, 501 0x96, 0x98, 0x9A, 0x9C, 0x9E, 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE, 0xB0, 0xB2, 502 0xB4, 0xB6, 0xB8, 0xBA, 0xBC, 0xBE, 0xC0, 0xC2, 0xC4, 0xC6, 0xC8, 0xCA, 0xCC, 0xCE, 0xD0, 503 0xD2, 0xD4, 0xD6, 0xD8, 0xDA, 0xDC, 0xDE, 0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xEC, 0xEE, 504 0xF0, 0xF2, 0xF4, 0xF6, 0xF8, 0xFA, 0xFC, 0xFE, 0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 505 0x0F, 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23, 0x25, 0x27, 0x29, 0x2B, 506 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x45, 0x47, 0x49, 507 0x4B, 0x4D, 0x4F, 0x51, 0x53, 0x55, 0x57, 0x59, 0x5B, 0x5D, 0x5F, 0x61, 0x63, 0x65, 0x67, 508 0x69, 0x6B, 0x6D, 0x6F, 0x71, 0x73, 0x75, 0x77, 0x79, 0x7B, 0x7D, 0x7F, 0x81, 0x83, 0x85, 509 0x87, 0x89, 0x8B, 0x8D, 0x8F, 0x91, 0x93, 0x95, 0x97, 0x99, 0x9B, 0x9D, 0x9F, 0xA1, 0xA3, 510 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 511 0xC3, 0xC5, 0xC7, 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 512 0xE1, 0xE3, 0xE5, 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 513 0xFF, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0xA3, 0xA5, 0xA7, 0xA9, 514 0xAB, 0xAD, 0xAF, 0xB1, 0xB3, 0xB5, 0xB7, 0xB9, 0xBB, 0xBD, 0xBF, 0xC1, 0xC3, 0xC5, 0xC7, 515 0xC9, 0xCB, 0xCD, 0xCF, 0xD1, 0xD3, 0xD5, 0xD7, 0xD9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE3, 0xE5, 516 0xE7, 0xE9, 0xEB, 0xED, 0xEF, 0xF1, 0xF3, 0xF5, 0xF7, 0xF9, 0xFB, 0xFD, 0xFF, 517 ]; 518 519 let mut vdp = new_vdp(); 520 vdp.timing_mode = TimingMode::Pal; 521 vdp.registers.vertical_display_size = VerticalDisplaySize::ThirtyCell; 522 vdp.registers.interlacing_mode = InterlacingMode::InterlacedDouble; 523 vdp.state.interlaced_frame = true; 524 vdp.state.interlaced_odd = true; 525 v_counter_test(EXPECTED, &mut vdp); 526} 527 528fn h_counter_test( 529 expected_pixels: &[u16; 3420], 530 expected_h: &[u16; 3420], 531 pixel_fn: fn(u64) -> u16, 532 h_fn: fn(u16) -> u16, 533) { 534 for mclk in 0..3420 { 535 let pixel = pixel_fn(mclk); 536 let h = h_fn(pixel); 537 538 assert_eq!( 539 pixel, expected_pixels[mclk as usize], 540 "Pixel mismatch for mclk={mclk}: expected {}, got {pixel}", 541 expected_pixels[mclk as usize] 542 ); 543 assert_eq!( 544 h, expected_h[mclk as usize], 545 "Internal H mismatch for mclk={mclk}: expected 0x{:03X}, got 0x{h:03X}", 546 expected_h[mclk as usize] 547 ); 548 } 549} 550 551#[test] 552fn h_counter_h32() { 553 const EXPECTED_PIXELS: &[u16; 3420] = &[ 554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 555 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 556 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 557 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 558 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 559 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 560 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 561 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 562 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 563 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 564 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 565 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 566 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 567 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 568 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 569 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 570 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 571 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 572 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 573 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 574 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 575 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 576 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 577 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 578 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 579 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 580 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 581 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 582 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 583 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 584 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 585 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 586 75, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 587 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 588 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 82, 589 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 590 85, 85, 85, 85, 85, 85, 85, 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 591 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 592 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 593 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 94, 94, 94, 594 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 595 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 596 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 597 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, 102, 102, 598 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 104, 599 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, 106, 106, 600 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 601 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 602 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 603 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, 604 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 605 115, 115, 115, 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 606 117, 117, 117, 117, 117, 117, 117, 117, 117, 118, 118, 118, 118, 118, 118, 118, 118, 118, 607 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 608 120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 609 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 610 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 126, 611 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 612 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 613 129, 129, 129, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 131, 131, 131, 131, 131, 614 131, 131, 131, 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 133, 133, 133, 615 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 616 135, 135, 135, 135, 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, 136, 617 136, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, 138, 138, 138, 138, 138, 618 138, 138, 138, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, 140, 140, 140, 619 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 620 142, 142, 142, 142, 142, 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 621 144, 144, 144, 144, 144, 144, 144, 144, 144, 145, 145, 145, 145, 145, 145, 145, 145, 145, 622 145, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147, 147, 147, 147, 147, 623 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 149, 624 149, 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 151, 151, 151, 625 151, 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 153, 626 153, 153, 153, 153, 153, 153, 153, 153, 153, 154, 154, 154, 154, 154, 154, 154, 154, 154, 627 154, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 156, 156, 156, 156, 156, 156, 156, 628 156, 156, 156, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, 158, 629 158, 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 630 160, 160, 160, 160, 160, 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, 631 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 163, 163, 163, 163, 163, 163, 632 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, 165, 165, 165, 165, 165, 633 165, 165, 165, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 167, 634 167, 167, 167, 167, 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 635 169, 169, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 636 171, 171, 171, 171, 171, 171, 171, 171, 171, 172, 172, 172, 172, 172, 172, 172, 172, 172, 637 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 174, 174, 174, 174, 174, 174, 174, 638 174, 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 176, 176, 176, 176, 176, 639 176, 176, 176, 176, 176, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 178, 178, 178, 640 178, 178, 178, 178, 178, 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 180, 641 180, 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 642 181, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, 183, 183, 183, 183, 183, 643 183, 183, 183, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 185, 185, 185, 185, 185, 644 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 645 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 189, 646 189, 189, 189, 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 190, 190, 190, 190, 190, 647 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, 648 192, 192, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 649 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, 650 196, 196, 196, 196, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 198, 651 198, 198, 198, 198, 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, 199, 199, 199, 199, 652 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 201, 201, 201, 201, 201, 201, 201, 653 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 203, 203, 203, 203, 203, 654 203, 203, 203, 203, 203, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, 205, 205, 655 205, 205, 205, 205, 205, 205, 205, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, 656 207, 207, 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 657 208, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 210, 210, 210, 210, 210, 210, 210, 658 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, 212, 212, 659 212, 212, 212, 212, 212, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 214, 214, 214, 660 214, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 661 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 217, 217, 217, 217, 217, 217, 217, 217, 662 217, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, 219, 663 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 664 221, 221, 221, 221, 221, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 223, 223, 223, 665 223, 223, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 666 225, 225, 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 226, 226, 667 226, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, 228, 228, 228, 228, 228, 228, 668 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 669 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 670 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 234, 671 234, 234, 234, 234, 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235, 235, 672 235, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, 237, 673 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239, 239, 674 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 675 241, 241, 241, 241, 241, 241, 241, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243, 676 243, 243, 243, 243, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 677 244, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 246, 246, 678 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 679 248, 248, 248, 248, 248, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 680 250, 250, 250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 252, 681 252, 252, 252, 252, 252, 252, 252, 252, 252, 253, 253, 253, 253, 253, 253, 253, 253, 253, 682 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 683 255, 255, 255, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 257, 684 257, 257, 257, 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 259, 259, 259, 685 259, 259, 259, 259, 259, 259, 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 686 261, 261, 261, 261, 261, 261, 261, 261, 261, 262, 262, 262, 262, 262, 262, 262, 262, 262, 687 262, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 264, 264, 264, 264, 264, 264, 264, 688 264, 264, 264, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, 266, 266, 266, 689 266, 266, 266, 266, 266, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 268, 268, 268, 690 268, 268, 268, 268, 268, 268, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 270, 691 270, 270, 270, 270, 270, 270, 270, 270, 270, 271, 271, 271, 271, 271, 271, 271, 271, 271, 692 271, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 273, 273, 273, 273, 273, 273, 693 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 694 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 277, 277, 277, 695 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 279, 696 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 697 280, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, 282, 282, 698 282, 282, 282, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 699 284, 284, 284, 284, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 700 286, 286, 286, 286, 286, 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, 701 288, 288, 288, 288, 288, 288, 288, 288, 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, 702 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 291, 291, 291, 291, 291, 291, 703 291, 291, 291, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 293, 293, 293, 293, 293, 704 293, 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 705 295, 295, 295, 295, 295, 295, 295, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 297, 706 297, 297, 297, 297, 297, 297, 297, 297, 297, 298, 298, 298, 298, 298, 298, 298, 298, 298, 707 298, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 300, 300, 300, 300, 300, 300, 708 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 302, 302, 302, 302, 302, 709 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 304, 304, 304, 710 304, 304, 304, 304, 304, 304, 304, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 711 306, 306, 306, 306, 306, 306, 306, 306, 306, 307, 307, 307, 307, 307, 307, 307, 307, 307, 712 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, 309, 309, 309, 309, 713 309, 309, 309, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, 311, 311, 714 311, 311, 311, 311, 311, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 313, 313, 313, 715 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 315, 716 315, 315, 315, 315, 315, 315, 315, 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, 717 316, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 318, 318, 318, 318, 318, 318, 318, 718 318, 318, 318, 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, 320, 320, 320, 320, 320, 719 320, 320, 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 322, 322, 322, 720 322, 322, 322, 322, 322, 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 324, 721 324, 324, 324, 324, 324, 324, 324, 324, 324, 325, 325, 325, 325, 325, 325, 325, 325, 325, 722 325, 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, 327, 327, 327, 327, 327, 327, 327, 723 327, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 329, 329, 329, 329, 329, 724 329, 329, 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, 331, 331, 725 331, 331, 331, 331, 331, 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 333, 726 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, 334, 334, 334, 334, 334, 334, 334, 334, 727 334, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 336, 336, 336, 336, 336, 336, 336, 728 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 338, 338, 338, 338, 338, 729 338, 338, 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, 340, 730 340, 340, 340, 340, 340, 340, 340, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 731 ]; 732 const EXPECTED_H: &[u16; 3420] = &[ 733 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x001, 0x001, 0x001, 734 0x001, 0x001, 0x001, 0x001, 0x001, 0x001, 0x001, 0x002, 0x002, 0x002, 0x002, 0x002, 0x002, 735 0x002, 0x002, 0x002, 0x002, 0x003, 0x003, 0x003, 0x003, 0x003, 0x003, 0x003, 0x003, 0x003, 736 0x003, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x005, 0x005, 737 0x005, 0x005, 0x005, 0x005, 0x005, 0x005, 0x005, 0x005, 0x006, 0x006, 0x006, 0x006, 0x006, 738 0x006, 0x006, 0x006, 0x006, 0x006, 0x007, 0x007, 0x007, 0x007, 0x007, 0x007, 0x007, 0x007, 739 0x007, 0x007, 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x009, 740 0x009, 0x009, 0x009, 0x009, 0x009, 0x009, 0x009, 0x009, 0x009, 0x00A, 0x00A, 0x00A, 0x00A, 741 0x00A, 0x00A, 0x00A, 0x00A, 0x00A, 0x00A, 0x00B, 0x00B, 0x00B, 0x00B, 0x00B, 0x00B, 0x00B, 742 0x00B, 0x00B, 0x00B, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 743 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00E, 0x00E, 0x00E, 744 0x00E, 0x00E, 0x00E, 0x00E, 0x00E, 0x00E, 0x00E, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 745 0x00F, 0x00F, 0x00F, 0x00F, 0x010, 0x010, 0x010, 0x010, 0x010, 0x010, 0x010, 0x010, 0x010, 746 0x010, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 0x012, 0x012, 747 0x012, 0x012, 0x012, 0x012, 0x012, 0x012, 0x012, 0x012, 0x013, 0x013, 0x013, 0x013, 0x013, 748 0x013, 0x013, 0x013, 0x013, 0x013, 0x014, 0x014, 0x014, 0x014, 0x014, 0x014, 0x014, 0x014, 749 0x014, 0x014, 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x016, 750 0x016, 0x016, 0x016, 0x016, 0x016, 0x016, 0x016, 0x016, 0x016, 0x017, 0x017, 0x017, 0x017, 751 0x017, 0x017, 0x017, 0x017, 0x017, 0x017, 0x018, 0x018, 0x018, 0x018, 0x018, 0x018, 0x018, 752 0x018, 0x018, 0x018, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 753 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01B, 0x01B, 0x01B, 754 0x01B, 0x01B, 0x01B, 0x01B, 0x01B, 0x01B, 0x01B, 0x01C, 0x01C, 0x01C, 0x01C, 0x01C, 0x01C, 755 0x01C, 0x01C, 0x01C, 0x01C, 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 756 0x01D, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01F, 0x01F, 757 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x020, 0x020, 0x020, 0x020, 0x020, 758 0x020, 0x020, 0x020, 0x020, 0x020, 0x021, 0x021, 0x021, 0x021, 0x021, 0x021, 0x021, 0x021, 759 0x021, 0x021, 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x023, 760 0x023, 0x023, 0x023, 0x023, 0x023, 0x023, 0x023, 0x023, 0x023, 0x024, 0x024, 0x024, 0x024, 761 0x024, 0x024, 0x024, 0x024, 0x024, 0x024, 0x025, 0x025, 0x025, 0x025, 0x025, 0x025, 0x025, 762 0x025, 0x025, 0x025, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 763 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x028, 0x028, 0x028, 764 0x028, 0x028, 0x028, 0x028, 0x028, 0x028, 0x028, 0x029, 0x029, 0x029, 0x029, 0x029, 0x029, 765 0x029, 0x029, 0x029, 0x029, 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 766 0x02A, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02C, 0x02C, 767 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02D, 0x02D, 0x02D, 0x02D, 0x02D, 768 0x02D, 0x02D, 0x02D, 0x02D, 0x02D, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 769 0x02E, 0x02E, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x030, 770 0x030, 0x030, 0x030, 0x030, 0x030, 0x030, 0x030, 0x030, 0x030, 0x031, 0x031, 0x031, 0x031, 771 0x031, 0x031, 0x031, 0x031, 0x031, 0x031, 0x032, 0x032, 0x032, 0x032, 0x032, 0x032, 0x032, 772 0x032, 0x032, 0x032, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 773 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x035, 0x035, 0x035, 774 0x035, 0x035, 0x035, 0x035, 0x035, 0x035, 0x035, 0x036, 0x036, 0x036, 0x036, 0x036, 0x036, 775 0x036, 0x036, 0x036, 0x036, 0x037, 0x037, 0x037, 0x037, 0x037, 0x037, 0x037, 0x037, 0x037, 776 0x037, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 0x039, 0x039, 777 0x039, 0x039, 0x039, 0x039, 0x039, 0x039, 0x039, 0x039, 0x03A, 0x03A, 0x03A, 0x03A, 0x03A, 778 0x03A, 0x03A, 0x03A, 0x03A, 0x03A, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 779 0x03B, 0x03B, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03D, 780 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 0x03E, 0x03E, 0x03E, 0x03E, 781 0x03E, 0x03E, 0x03E, 0x03E, 0x03E, 0x03E, 0x03F, 0x03F, 0x03F, 0x03F, 0x03F, 0x03F, 0x03F, 782 0x03F, 0x03F, 0x03F, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 783 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x042, 0x042, 0x042, 784 0x042, 0x042, 0x042, 0x042, 0x042, 0x042, 0x042, 0x043, 0x043, 0x043, 0x043, 0x043, 0x043, 785 0x043, 0x043, 0x043, 0x043, 0x044, 0x044, 0x044, 0x044, 0x044, 0x044, 0x044, 0x044, 0x044, 786 0x044, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 0x046, 0x046, 787 0x046, 0x046, 0x046, 0x046, 0x046, 0x046, 0x046, 0x046, 0x047, 0x047, 0x047, 0x047, 0x047, 788 0x047, 0x047, 0x047, 0x047, 0x047, 0x048, 0x048, 0x048, 0x048, 0x048, 0x048, 0x048, 0x048, 789 0x048, 0x048, 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x04A, 790 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 0x04B, 0x04B, 0x04B, 0x04B, 791 0x04B, 0x04B, 0x04B, 0x04B, 0x04B, 0x04B, 0x04C, 0x04C, 0x04C, 0x04C, 0x04C, 0x04C, 0x04C, 792 0x04C, 0x04C, 0x04C, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 793 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04F, 0x04F, 0x04F, 794 0x04F, 0x04F, 0x04F, 0x04F, 0x04F, 0x04F, 0x04F, 0x050, 0x050, 0x050, 0x050, 0x050, 0x050, 795 0x050, 0x050, 0x050, 0x050, 0x051, 0x051, 0x051, 0x051, 0x051, 0x051, 0x051, 0x051, 0x051, 796 0x051, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 0x053, 0x053, 797 0x053, 0x053, 0x053, 0x053, 0x053, 0x053, 0x053, 0x053, 0x054, 0x054, 0x054, 0x054, 0x054, 798 0x054, 0x054, 0x054, 0x054, 0x054, 0x055, 0x055, 0x055, 0x055, 0x055, 0x055, 0x055, 0x055, 799 0x055, 0x055, 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x057, 800 0x057, 0x057, 0x057, 0x057, 0x057, 0x057, 0x057, 0x057, 0x057, 0x058, 0x058, 0x058, 0x058, 801 0x058, 0x058, 0x058, 0x058, 0x058, 0x058, 0x059, 0x059, 0x059, 0x059, 0x059, 0x059, 0x059, 802 0x059, 0x059, 0x059, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 803 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05C, 0x05C, 0x05C, 804 0x05C, 0x05C, 0x05C, 0x05C, 0x05C, 0x05C, 0x05C, 0x05D, 0x05D, 0x05D, 0x05D, 0x05D, 0x05D, 805 0x05D, 0x05D, 0x05D, 0x05D, 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 806 0x05E, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x060, 0x060, 807 0x060, 0x060, 0x060, 0x060, 0x060, 0x060, 0x060, 0x060, 0x061, 0x061, 0x061, 0x061, 0x061, 808 0x061, 0x061, 0x061, 0x061, 0x061, 0x062, 0x062, 0x062, 0x062, 0x062, 0x062, 0x062, 0x062, 809 0x062, 0x062, 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x064, 810 0x064, 0x064, 0x064, 0x064, 0x064, 0x064, 0x064, 0x064, 0x064, 0x065, 0x065, 0x065, 0x065, 811 0x065, 0x065, 0x065, 0x065, 0x065, 0x065, 0x066, 0x066, 0x066, 0x066, 0x066, 0x066, 0x066, 812 0x066, 0x066, 0x066, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 813 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x069, 0x069, 0x069, 814 0x069, 0x069, 0x069, 0x069, 0x069, 0x069, 0x069, 0x06A, 0x06A, 0x06A, 0x06A, 0x06A, 0x06A, 815 0x06A, 0x06A, 0x06A, 0x06A, 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 816 0x06B, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06D, 0x06D, 817 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06E, 0x06E, 0x06E, 0x06E, 0x06E, 818 0x06E, 0x06E, 0x06E, 0x06E, 0x06E, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 819 0x06F, 0x06F, 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x071, 820 0x071, 0x071, 0x071, 0x071, 0x071, 0x071, 0x071, 0x071, 0x071, 0x072, 0x072, 0x072, 0x072, 821 0x072, 0x072, 0x072, 0x072, 0x072, 0x072, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 0x073, 822 0x073, 0x073, 0x073, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 823 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x076, 0x076, 0x076, 824 0x076, 0x076, 0x076, 0x076, 0x076, 0x076, 0x076, 0x077, 0x077, 0x077, 0x077, 0x077, 0x077, 825 0x077, 0x077, 0x077, 0x077, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 826 0x078, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 0x07A, 0x07A, 827 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07B, 0x07B, 0x07B, 0x07B, 0x07B, 828 0x07B, 0x07B, 0x07B, 0x07B, 0x07B, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 829 0x07C, 0x07C, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07E, 830 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 0x07F, 0x07F, 0x07F, 0x07F, 831 0x07F, 0x07F, 0x07F, 0x07F, 0x07F, 0x07F, 0x080, 0x080, 0x080, 0x080, 0x080, 0x080, 0x080, 832 0x080, 0x080, 0x080, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 833 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x083, 0x083, 0x083, 834 0x083, 0x083, 0x083, 0x083, 0x083, 0x083, 0x083, 0x084, 0x084, 0x084, 0x084, 0x084, 0x084, 835 0x084, 0x084, 0x084, 0x084, 0x085, 0x085, 0x085, 0x085, 0x085, 0x085, 0x085, 0x085, 0x085, 836 0x085, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 0x087, 0x087, 837 0x087, 0x087, 0x087, 0x087, 0x087, 0x087, 0x087, 0x087, 0x088, 0x088, 0x088, 0x088, 0x088, 838 0x088, 0x088, 0x088, 0x088, 0x088, 0x089, 0x089, 0x089, 0x089, 0x089, 0x089, 0x089, 0x089, 839 0x089, 0x089, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08B, 840 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 0x08C, 0x08C, 0x08C, 0x08C, 841 0x08C, 0x08C, 0x08C, 0x08C, 0x08C, 0x08C, 0x08D, 0x08D, 0x08D, 0x08D, 0x08D, 0x08D, 0x08D, 842 0x08D, 0x08D, 0x08D, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 843 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x090, 0x090, 0x090, 844 0x090, 0x090, 0x090, 0x090, 0x090, 0x090, 0x090, 0x091, 0x091, 0x091, 0x091, 0x091, 0x091, 845 0x091, 0x091, 0x091, 0x091, 0x092, 0x092, 0x092, 0x092, 0x092, 0x092, 0x092, 0x092, 0x092, 846 0x092, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 0x094, 0x094, 847 0x094, 0x094, 0x094, 0x094, 0x094, 0x094, 0x094, 0x094, 0x095, 0x095, 0x095, 0x095, 0x095, 848 0x095, 0x095, 0x095, 0x095, 0x095, 0x096, 0x096, 0x096, 0x096, 0x096, 0x096, 0x096, 0x096, 849 0x096, 0x096, 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x098, 850 0x098, 0x098, 0x098, 0x098, 0x098, 0x098, 0x098, 0x098, 0x098, 0x099, 0x099, 0x099, 0x099, 851 0x099, 0x099, 0x099, 0x099, 0x099, 0x099, 0x09A, 0x09A, 0x09A, 0x09A, 0x09A, 0x09A, 0x09A, 852 0x09A, 0x09A, 0x09A, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 853 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09D, 0x09D, 0x09D, 854 0x09D, 0x09D, 0x09D, 0x09D, 0x09D, 0x09D, 0x09D, 0x09E, 0x09E, 0x09E, 0x09E, 0x09E, 0x09E, 855 0x09E, 0x09E, 0x09E, 0x09E, 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 856 0x09F, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A1, 0x0A1, 857 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A2, 0x0A2, 0x0A2, 0x0A2, 0x0A2, 858 0x0A2, 0x0A2, 0x0A2, 0x0A2, 0x0A2, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 859 0x0A3, 0x0A3, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A5, 860 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 861 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A7, 0x0A7, 0x0A7, 0x0A7, 0x0A7, 0x0A7, 0x0A7, 862 0x0A7, 0x0A7, 0x0A7, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 863 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0AA, 0x0AA, 0x0AA, 864 0x0AA, 0x0AA, 0x0AA, 0x0AA, 0x0AA, 0x0AA, 0x0AA, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 865 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 866 0x0AC, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AE, 0x0AE, 867 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AF, 0x0AF, 0x0AF, 0x0AF, 0x0AF, 868 0x0AF, 0x0AF, 0x0AF, 0x0AF, 0x0AF, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 869 0x0B0, 0x0B0, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B2, 870 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 871 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B4, 0x0B4, 0x0B4, 0x0B4, 0x0B4, 0x0B4, 0x0B4, 872 0x0B4, 0x0B4, 0x0B4, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 873 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B7, 0x0B7, 0x0B7, 874 0x0B7, 0x0B7, 0x0B7, 0x0B7, 0x0B7, 0x0B7, 0x0B7, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 875 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 876 0x0B9, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BB, 0x0BB, 877 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BC, 0x0BC, 0x0BC, 0x0BC, 0x0BC, 878 0x0BC, 0x0BC, 0x0BC, 0x0BC, 0x0BC, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 879 0x0BD, 0x0BD, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BF, 880 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 881 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C1, 0x0C1, 0x0C1, 0x0C1, 0x0C1, 0x0C1, 0x0C1, 882 0x0C1, 0x0C1, 0x0C1, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 883 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C4, 0x0C4, 0x0C4, 884 0x0C4, 0x0C4, 0x0C4, 0x0C4, 0x0C4, 0x0C4, 0x0C4, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 885 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 886 0x0C6, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C8, 0x0C8, 887 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C9, 0x0C9, 0x0C9, 0x0C9, 0x0C9, 888 0x0C9, 0x0C9, 0x0C9, 0x0C9, 0x0C9, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 889 0x0CA, 0x0CA, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CC, 890 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 891 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CE, 0x0CE, 0x0CE, 0x0CE, 0x0CE, 0x0CE, 0x0CE, 892 0x0CE, 0x0CE, 0x0CE, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 893 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D1, 0x0D1, 0x0D1, 894 0x0D1, 0x0D1, 0x0D1, 0x0D1, 0x0D1, 0x0D1, 0x0D1, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 895 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 896 0x0D3, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D5, 0x0D5, 897 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D6, 0x0D6, 0x0D6, 0x0D6, 0x0D6, 898 0x0D6, 0x0D6, 0x0D6, 0x0D6, 0x0D6, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 899 0x0D7, 0x0D7, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D9, 900 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 901 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DB, 0x0DB, 0x0DB, 0x0DB, 0x0DB, 0x0DB, 0x0DB, 902 0x0DB, 0x0DB, 0x0DB, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 903 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DE, 0x0DE, 0x0DE, 904 0x0DE, 0x0DE, 0x0DE, 0x0DE, 0x0DE, 0x0DE, 0x0DE, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 905 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 906 0x0E0, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E2, 0x0E2, 907 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E3, 0x0E3, 0x0E3, 0x0E3, 0x0E3, 908 0x0E3, 0x0E3, 0x0E3, 0x0E3, 0x0E3, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 909 0x0E4, 0x0E4, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E6, 910 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 911 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E8, 0x0E8, 0x0E8, 0x0E8, 0x0E8, 0x0E8, 0x0E8, 912 0x0E8, 0x0E8, 0x0E8, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 913 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EB, 0x0EB, 0x0EB, 914 0x0EB, 0x0EB, 0x0EB, 0x0EB, 0x0EB, 0x0EB, 0x0EB, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 915 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 916 0x0ED, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EF, 0x0EF, 917 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0F0, 0x0F0, 0x0F0, 0x0F0, 0x0F0, 918 0x0F0, 0x0F0, 0x0F0, 0x0F0, 0x0F0, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 919 0x0F1, 0x0F1, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F3, 920 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 921 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F5, 0x0F5, 0x0F5, 0x0F5, 0x0F5, 0x0F5, 0x0F5, 922 0x0F5, 0x0F5, 0x0F5, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 923 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F8, 0x0F8, 0x0F8, 924 0x0F8, 0x0F8, 0x0F8, 0x0F8, 0x0F8, 0x0F8, 0x0F8, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 925 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 926 0x0FA, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FC, 0x0FC, 927 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FD, 0x0FD, 0x0FD, 0x0FD, 0x0FD, 928 0x0FD, 0x0FD, 0x0FD, 0x0FD, 0x0FD, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 929 0x0FE, 0x0FE, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x100, 930 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x101, 0x101, 0x101, 0x101, 931 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 0x102, 932 0x102, 0x102, 0x102, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 933 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x105, 0x105, 0x105, 934 0x105, 0x105, 0x105, 0x105, 0x105, 0x105, 0x105, 0x106, 0x106, 0x106, 0x106, 0x106, 0x106, 935 0x106, 0x106, 0x106, 0x106, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 936 0x107, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x109, 0x109, 937 0x109, 0x109, 0x109, 0x109, 0x109, 0x109, 0x109, 0x109, 0x10A, 0x10A, 0x10A, 0x10A, 0x10A, 938 0x10A, 0x10A, 0x10A, 0x10A, 0x10A, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 939 0x10B, 0x10B, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10D, 940 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 0x10E, 0x10E, 0x10E, 0x10E, 941 0x10E, 0x10E, 0x10E, 0x10E, 0x10E, 0x10E, 0x10F, 0x10F, 0x10F, 0x10F, 0x10F, 0x10F, 0x10F, 942 0x10F, 0x10F, 0x10F, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 943 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x112, 0x112, 0x112, 944 0x112, 0x112, 0x112, 0x112, 0x112, 0x112, 0x112, 0x113, 0x113, 0x113, 0x113, 0x113, 0x113, 945 0x113, 0x113, 0x113, 0x113, 0x114, 0x114, 0x114, 0x114, 0x114, 0x114, 0x114, 0x114, 0x114, 946 0x114, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 0x116, 0x116, 947 0x116, 0x116, 0x116, 0x116, 0x116, 0x116, 0x116, 0x116, 0x117, 0x117, 0x117, 0x117, 0x117, 948 0x117, 0x117, 0x117, 0x117, 0x117, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 949 0x118, 0x118, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x11A, 950 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 0x11B, 0x11B, 0x11B, 0x11B, 951 0x11B, 0x11B, 0x11B, 0x11B, 0x11B, 0x11B, 0x11C, 0x11C, 0x11C, 0x11C, 0x11C, 0x11C, 0x11C, 952 0x11C, 0x11C, 0x11C, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 953 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11F, 0x11F, 0x11F, 954 0x11F, 0x11F, 0x11F, 0x11F, 0x11F, 0x11F, 0x11F, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 955 0x120, 0x120, 0x120, 0x120, 0x121, 0x121, 0x121, 0x121, 0x121, 0x121, 0x121, 0x121, 0x121, 956 0x121, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 0x123, 0x123, 957 0x123, 0x123, 0x123, 0x123, 0x123, 0x123, 0x123, 0x123, 0x124, 0x124, 0x124, 0x124, 0x124, 958 0x124, 0x124, 0x124, 0x124, 0x124, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 959 0x125, 0x125, 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x127, 960 0x127, 0x127, 0x127, 0x127, 0x127, 0x127, 0x127, 0x127, 0x127, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 961 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 962 0x1D3, 0x1D3, 0x1D3, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 963 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D6, 0x1D6, 0x1D6, 964 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D7, 0x1D7, 0x1D7, 0x1D7, 0x1D7, 0x1D7, 965 0x1D7, 0x1D7, 0x1D7, 0x1D7, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 966 0x1D8, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1DA, 0x1DA, 967 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DB, 0x1DB, 0x1DB, 0x1DB, 0x1DB, 968 0x1DB, 0x1DB, 0x1DB, 0x1DB, 0x1DB, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 969 0x1DC, 0x1DC, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DE, 970 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DF, 0x1DF, 0x1DF, 0x1DF, 971 0x1DF, 0x1DF, 0x1DF, 0x1DF, 0x1DF, 0x1DF, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 972 0x1E0, 0x1E0, 0x1E0, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 973 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E3, 0x1E3, 0x1E3, 974 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 975 0x1E4, 0x1E4, 0x1E4, 0x1E4, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 976 0x1E5, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E7, 0x1E7, 977 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 978 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 979 0x1E9, 0x1E9, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EB, 980 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 981 0x1EC, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 982 0x1ED, 0x1ED, 0x1ED, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 983 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1F0, 0x1F0, 0x1F0, 984 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F1, 0x1F1, 0x1F1, 0x1F1, 0x1F1, 0x1F1, 985 0x1F1, 0x1F1, 0x1F1, 0x1F1, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 986 0x1F2, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F4, 0x1F4, 987 0x1F4, 0x1F4, 0x1F4, 0x1F4, 0x1F4, 0x1F4, 0x1F4, 0x1F4, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 988 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 989 0x1F6, 0x1F6, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F8, 990 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F9, 0x1F9, 0x1F9, 0x1F9, 991 0x1F9, 0x1F9, 0x1F9, 0x1F9, 0x1F9, 0x1F9, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 992 0x1FA, 0x1FA, 0x1FA, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 993 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FD, 0x1FD, 0x1FD, 994 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FE, 0x1FE, 0x1FE, 0x1FE, 0x1FE, 0x1FE, 995 0x1FE, 0x1FE, 0x1FE, 0x1FE, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 996 0x1FF, 997 ]; 998 999 h_counter_test( 1000 EXPECTED_PIXELS, 1001 EXPECTED_H, 1002 scanline_mclk_to_pixel_h32, 1003 pixel_to_internal_h_h32, 1004 ); 1005} 1006 1007#[test] 1008fn h_counter_h40() { 1009 const EXPECTED_PIXELS: &[u16; 3420] = &[ 1010 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 1011 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 1012 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 1013 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 1014 13, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 1015 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 1016 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 1017 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 1018 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 1019 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 1020 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 1021 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 1022 36, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 1023 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 42, 42, 42, 1024 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 1025 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, 48, 48, 1026 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 1027 51, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 54, 1028 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 1029 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 1030 59, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 1031 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 1032 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 1033 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 1034 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 1035 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 77, 1036 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 1037 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, 82, 1038 82, 83, 83, 83, 83, 83, 83, 83, 83, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 1039 85, 85, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 88, 1040 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 1041 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 94, 94, 94, 1042 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 1043 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 1044 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 102, 102, 1045 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 104, 104, 104, 104, 1046 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 106, 106, 106, 106, 106, 106, 1047 106, 106, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 1048 109, 109, 109, 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 1049 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, 1050 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 1051 115, 115, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 1052 118, 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 1053 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 1054 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 124, 124, 1055 124, 124, 125, 125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126, 126, 126, 1056 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 1057 129, 129, 129, 129, 129, 129, 130, 130, 130, 130, 130, 130, 130, 130, 131, 131, 131, 131, 1058 131, 131, 131, 131, 132, 132, 132, 132, 132, 132, 132, 132, 133, 133, 133, 133, 133, 133, 1059 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 1060 136, 136, 136, 136, 136, 136, 136, 136, 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, 1061 138, 138, 138, 138, 138, 138, 139, 139, 139, 139, 139, 139, 139, 139, 140, 140, 140, 140, 1062 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 142, 142, 1063 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144, 144, 144, 144, 144, 144, 1064 145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 1065 147, 147, 147, 147, 147, 147, 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, 149, 149, 1066 149, 149, 149, 149, 150, 150, 150, 150, 150, 150, 150, 150, 151, 151, 151, 151, 151, 151, 1067 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, 153, 1068 154, 154, 154, 154, 154, 154, 154, 154, 155, 155, 155, 155, 155, 155, 155, 155, 156, 156, 1069 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157, 157, 157, 158, 158, 158, 158, 1070 158, 158, 158, 158, 159, 159, 159, 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 1071 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, 162, 162, 162, 162, 162, 1072 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, 1073 165, 165, 165, 165, 165, 165, 166, 166, 166, 166, 166, 166, 166, 166, 167, 167, 167, 167, 1074 167, 167, 167, 167, 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, 169, 169, 169, 169, 1075 169, 169, 170, 170, 170, 170, 170, 170, 170, 170, 171, 171, 171, 171, 171, 171, 171, 171, 1076 172, 172, 172, 172, 172, 172, 172, 172, 173, 173, 173, 173, 173, 173, 173, 173, 174, 174, 1077 174, 174, 174, 174, 174, 174, 175, 175, 175, 175, 175, 175, 175, 175, 176, 176, 176, 176, 1078 176, 176, 176, 176, 177, 177, 177, 177, 177, 177, 177, 177, 178, 178, 178, 178, 178, 178, 1079 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 180, 180, 180, 180, 180, 180, 180, 180, 1080 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, 182, 182, 183, 183, 1081 183, 183, 183, 183, 183, 183, 184, 184, 184, 184, 184, 184, 184, 184, 185, 185, 185, 185, 1082 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, 1083 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, 1084 190, 190, 190, 190, 190, 190, 190, 190, 191, 191, 191, 191, 191, 191, 191, 191, 192, 192, 1085 192, 192, 192, 192, 192, 192, 193, 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 1086 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, 196, 1087 196, 196, 197, 197, 197, 197, 197, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 198, 1088 199, 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, 201, 201, 1089 201, 201, 201, 201, 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, 203, 203, 203, 203, 1090 203, 203, 203, 203, 204, 204, 204, 204, 204, 204, 204, 204, 205, 205, 205, 205, 205, 205, 1091 205, 205, 206, 206, 206, 206, 206, 206, 206, 206, 207, 207, 207, 207, 207, 207, 207, 207, 1092 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209, 209, 209, 209, 209, 210, 210, 1093 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, 212, 1094 212, 212, 212, 212, 213, 213, 213, 213, 213, 213, 213, 213, 214, 214, 214, 214, 214, 214, 1095 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, 216, 216, 216, 216, 216, 216, 216, 216, 1096 217, 217, 217, 217, 217, 217, 217, 217, 218, 218, 218, 218, 218, 218, 218, 218, 219, 219, 1097 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 1098 221, 221, 221, 221, 222, 222, 222, 222, 222, 222, 222, 222, 223, 223, 223, 223, 223, 223, 1099 223, 223, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, 1100 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227, 227, 228, 228, 1101 228, 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 1102 230, 230, 230, 230, 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, 1103 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 234, 234, 234, 234, 234, 234, 234, 234, 1104 235, 235, 235, 235, 235, 235, 235, 235, 236, 236, 236, 236, 236, 236, 236, 236, 237, 237, 1105 237, 237, 237, 237, 237, 237, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239, 1106 239, 239, 239, 239, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 1107 241, 241, 242, 242, 242, 242, 242, 242, 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, 1108 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245, 245, 245, 245, 245, 245, 246, 246, 1109 246, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 248, 1110 248, 248, 248, 248, 249, 249, 249, 249, 249, 249, 249, 249, 250, 250, 250, 250, 250, 250, 1111 250, 250, 251, 251, 251, 251, 251, 251, 251, 251, 252, 252, 252, 252, 252, 252, 252, 252, 1112 253, 253, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 255, 255, 1113 255, 255, 255, 255, 255, 255, 256, 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, 1114 257, 257, 257, 257, 258, 258, 258, 258, 258, 258, 258, 258, 259, 259, 259, 259, 259, 259, 1115 259, 259, 260, 260, 260, 260, 260, 260, 260, 260, 261, 261, 261, 261, 261, 261, 261, 261, 1116 262, 262, 262, 262, 262, 262, 262, 262, 263, 263, 263, 263, 263, 263, 263, 263, 264, 264, 1117 264, 264, 264, 264, 264, 264, 265, 265, 265, 265, 265, 265, 265, 265, 266, 266, 266, 266, 1118 266, 266, 266, 266, 267, 267, 267, 267, 267, 267, 267, 267, 268, 268, 268, 268, 268, 268, 1119 268, 268, 269, 269, 269, 269, 269, 269, 269, 269, 270, 270, 270, 270, 270, 270, 270, 270, 1120 271, 271, 271, 271, 271, 271, 271, 271, 272, 272, 272, 272, 272, 272, 272, 272, 273, 273, 1121 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 1122 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 1123 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279, 1124 280, 280, 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 1125 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, 283, 283, 283, 283, 284, 284, 284, 284, 1126 284, 284, 284, 284, 285, 285, 285, 285, 285, 285, 285, 285, 286, 286, 286, 286, 286, 286, 1127 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 288, 288, 288, 288, 288, 288, 288, 288, 1128 289, 289, 289, 289, 289, 289, 289, 289, 290, 290, 290, 290, 290, 290, 290, 290, 291, 291, 1129 291, 291, 291, 291, 291, 291, 292, 292, 292, 292, 292, 292, 292, 292, 293, 293, 293, 293, 1130 293, 293, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 1131 295, 295, 296, 296, 296, 296, 296, 296, 296, 296, 297, 297, 297, 297, 297, 297, 297, 297, 1132 298, 298, 298, 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, 300, 300, 1133 300, 300, 300, 300, 300, 300, 301, 301, 301, 301, 301, 301, 301, 301, 302, 302, 302, 302, 1134 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, 304, 304, 304, 304, 304, 304, 1135 304, 304, 305, 305, 305, 305, 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, 1136 307, 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, 309, 309, 1137 309, 309, 309, 309, 309, 309, 310, 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, 311, 1138 311, 311, 311, 311, 312, 312, 312, 312, 312, 312, 312, 312, 313, 313, 313, 313, 313, 313, 1139 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, 1140 316, 316, 316, 316, 316, 316, 316, 316, 317, 317, 317, 317, 317, 317, 317, 317, 318, 318, 1141 318, 318, 318, 318, 318, 318, 319, 319, 319, 319, 319, 319, 319, 319, 320, 320, 320, 320, 1142 320, 320, 320, 320, 321, 321, 321, 321, 321, 321, 321, 321, 322, 322, 322, 322, 322, 322, 1143 322, 322, 323, 323, 323, 323, 323, 323, 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, 1144 325, 325, 325, 325, 325, 325, 325, 325, 326, 326, 326, 326, 326, 326, 326, 326, 327, 327, 1145 327, 327, 327, 327, 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, 329, 329, 329, 329, 1146 329, 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 1147 331, 331, 332, 332, 332, 332, 332, 332, 332, 332, 333, 333, 333, 333, 333, 333, 333, 333, 1148 334, 334, 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, 335, 335, 335, 335, 336, 336, 1149 336, 336, 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, 338, 338, 338, 338, 1150 338, 338, 338, 338, 339, 339, 339, 339, 339, 339, 339, 339, 340, 340, 340, 340, 340, 340, 1151 340, 340, 341, 341, 341, 341, 341, 341, 341, 341, 342, 342, 342, 342, 342, 342, 342, 342, 1152 343, 343, 343, 343, 343, 343, 343, 343, 344, 344, 344, 344, 344, 344, 344, 344, 345, 345, 1153 345, 345, 345, 345, 345, 345, 346, 346, 346, 346, 346, 346, 346, 346, 347, 347, 347, 347, 1154 347, 347, 347, 347, 348, 348, 348, 348, 348, 348, 348, 348, 349, 349, 349, 349, 349, 349, 1155 349, 349, 350, 350, 350, 350, 350, 350, 350, 350, 351, 351, 351, 351, 351, 351, 351, 351, 1156 352, 352, 352, 352, 352, 352, 352, 352, 353, 353, 353, 353, 353, 353, 353, 353, 354, 354, 1157 354, 354, 354, 354, 354, 354, 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, 356, 356, 1158 356, 356, 356, 356, 357, 357, 357, 357, 357, 357, 357, 357, 358, 358, 358, 358, 358, 358, 1159 358, 358, 359, 359, 359, 359, 359, 359, 359, 359, 360, 360, 360, 360, 360, 360, 360, 360, 1160 361, 361, 361, 361, 361, 361, 361, 361, 362, 362, 362, 362, 362, 362, 362, 362, 363, 363, 1161 363, 363, 363, 363, 363, 363, 364, 364, 364, 364, 364, 364, 364, 364, 365, 365, 365, 365, 1162 365, 365, 365, 365, 366, 366, 366, 366, 366, 366, 366, 366, 367, 367, 367, 367, 367, 367, 1163 367, 367, 368, 368, 368, 368, 368, 368, 368, 368, 369, 369, 369, 369, 369, 369, 369, 369, 1164 369, 369, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 371, 371, 371, 371, 371, 371, 1165 371, 371, 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 373, 373, 373, 373, 1166 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, 374, 374, 374, 374, 375, 375, 1167 375, 375, 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, 376, 376, 376, 376, 376, 377, 1168 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, 1169 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, 380, 380, 380, 380, 380, 380, 380, 380, 1170 380, 380, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, 382, 382, 382, 382, 382, 1171 382, 382, 382, 382, 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, 384, 384, 384, 384, 1172 384, 384, 384, 384, 384, 384, 385, 385, 385, 385, 385, 385, 385, 385, 386, 386, 386, 386, 1173 386, 386, 386, 386, 386, 386, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 388, 388, 1174 388, 388, 388, 388, 388, 388, 388, 388, 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 1175 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391, 1176 391, 391, 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, 393, 393, 393, 393, 393, 393, 1177 393, 393, 393, 394, 394, 394, 394, 394, 394, 394, 394, 394, 395, 395, 395, 395, 395, 395, 1178 395, 395, 395, 395, 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 397, 397, 397, 397, 1179 397, 397, 397, 397, 397, 397, 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 399, 399, 1180 399, 399, 399, 399, 399, 399, 399, 399, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 1181 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 402, 402, 402, 402, 402, 402, 402, 402, 1182 403, 403, 403, 403, 403, 403, 403, 403, 404, 404, 404, 404, 404, 404, 404, 404, 405, 405, 1183 405, 405, 405, 405, 405, 405, 406, 406, 406, 406, 406, 406, 406, 406, 407, 407, 407, 407, 1184 407, 407, 407, 407, 408, 408, 408, 408, 408, 408, 408, 408, 409, 409, 409, 409, 409, 409, 1185 409, 409, 410, 410, 410, 410, 410, 410, 410, 410, 411, 411, 411, 411, 411, 411, 411, 411, 1186 412, 412, 412, 412, 412, 412, 412, 412, 413, 413, 413, 413, 413, 413, 413, 413, 414, 414, 1187 414, 414, 414, 414, 414, 414, 415, 415, 415, 415, 415, 415, 415, 415, 416, 416, 416, 416, 1188 416, 416, 416, 416, 417, 417, 417, 417, 417, 417, 417, 417, 418, 418, 418, 418, 418, 418, 1189 418, 418, 419, 419, 419, 419, 419, 419, 419, 419, 1190 ]; 1191 const EXPECTED_H: &[u16; 3420] = &[ 1192 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x001, 0x001, 0x001, 0x001, 0x001, 1193 0x001, 0x001, 0x001, 0x002, 0x002, 0x002, 0x002, 0x002, 0x002, 0x002, 0x002, 0x003, 0x003, 1194 0x003, 0x003, 0x003, 0x003, 0x003, 0x003, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 0x004, 1195 0x004, 0x005, 0x005, 0x005, 0x005, 0x005, 0x005, 0x005, 0x005, 0x006, 0x006, 0x006, 0x006, 1196 0x006, 0x006, 0x006, 0x006, 0x007, 0x007, 0x007, 0x007, 0x007, 0x007, 0x007, 0x007, 0x008, 1197 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x008, 0x009, 0x009, 0x009, 0x009, 0x009, 0x009, 1198 0x009, 0x009, 0x00A, 0x00A, 0x00A, 0x00A, 0x00A, 0x00A, 0x00A, 0x00A, 0x00B, 0x00B, 0x00B, 1199 0x00B, 0x00B, 0x00B, 0x00B, 0x00B, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 0x00C, 1200 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00D, 0x00E, 0x00E, 0x00E, 0x00E, 0x00E, 1201 0x00E, 0x00E, 0x00E, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x010, 0x010, 1202 0x010, 0x010, 0x010, 0x010, 0x010, 0x010, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 0x011, 1203 0x011, 0x012, 0x012, 0x012, 0x012, 0x012, 0x012, 0x012, 0x012, 0x013, 0x013, 0x013, 0x013, 1204 0x013, 0x013, 0x013, 0x013, 0x014, 0x014, 0x014, 0x014, 0x014, 0x014, 0x014, 0x014, 0x015, 1205 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x015, 0x016, 0x016, 0x016, 0x016, 0x016, 0x016, 1206 0x016, 0x016, 0x017, 0x017, 0x017, 0x017, 0x017, 0x017, 0x017, 0x017, 0x018, 0x018, 0x018, 1207 0x018, 0x018, 0x018, 0x018, 0x018, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 0x019, 1208 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01A, 0x01B, 0x01B, 0x01B, 0x01B, 0x01B, 1209 0x01B, 0x01B, 0x01B, 0x01C, 0x01C, 0x01C, 0x01C, 0x01C, 0x01C, 0x01C, 0x01C, 0x01D, 0x01D, 1210 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 0x01D, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 0x01E, 1211 0x01E, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x01F, 0x020, 0x020, 0x020, 0x020, 1212 0x020, 0x020, 0x020, 0x020, 0x021, 0x021, 0x021, 0x021, 0x021, 0x021, 0x021, 0x021, 0x022, 1213 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x022, 0x023, 0x023, 0x023, 0x023, 0x023, 0x023, 1214 0x023, 0x023, 0x024, 0x024, 0x024, 0x024, 0x024, 0x024, 0x024, 0x024, 0x025, 0x025, 0x025, 1215 0x025, 0x025, 0x025, 0x025, 0x025, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 0x026, 1216 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x027, 0x028, 0x028, 0x028, 0x028, 0x028, 1217 0x028, 0x028, 0x028, 0x029, 0x029, 0x029, 0x029, 0x029, 0x029, 0x029, 0x029, 0x02A, 0x02A, 1218 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 0x02A, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 0x02B, 1219 0x02B, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02C, 0x02D, 0x02D, 0x02D, 0x02D, 1220 0x02D, 0x02D, 0x02D, 0x02D, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02E, 0x02F, 1221 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x02F, 0x030, 0x030, 0x030, 0x030, 0x030, 0x030, 1222 0x030, 0x030, 0x031, 0x031, 0x031, 0x031, 0x031, 0x031, 0x031, 0x031, 0x032, 0x032, 0x032, 1223 0x032, 0x032, 0x032, 0x032, 0x032, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 0x033, 1224 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x034, 0x035, 0x035, 0x035, 0x035, 0x035, 1225 0x035, 0x035, 0x035, 0x036, 0x036, 0x036, 0x036, 0x036, 0x036, 0x036, 0x036, 0x037, 0x037, 1226 0x037, 0x037, 0x037, 0x037, 0x037, 0x037, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 0x038, 1227 0x038, 0x039, 0x039, 0x039, 0x039, 0x039, 0x039, 0x039, 0x039, 0x03A, 0x03A, 0x03A, 0x03A, 1228 0x03A, 0x03A, 0x03A, 0x03A, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03B, 0x03C, 1229 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03C, 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 0x03D, 1230 0x03D, 0x03D, 0x03E, 0x03E, 0x03E, 0x03E, 0x03E, 0x03E, 0x03E, 0x03E, 0x03F, 0x03F, 0x03F, 1231 0x03F, 0x03F, 0x03F, 0x03F, 0x03F, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 1232 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x041, 0x042, 0x042, 0x042, 0x042, 0x042, 1233 0x042, 0x042, 0x042, 0x043, 0x043, 0x043, 0x043, 0x043, 0x043, 0x043, 0x043, 0x044, 0x044, 1234 0x044, 0x044, 0x044, 0x044, 0x044, 0x044, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 0x045, 1235 0x045, 0x046, 0x046, 0x046, 0x046, 0x046, 0x046, 0x046, 0x046, 0x047, 0x047, 0x047, 0x047, 1236 0x047, 0x047, 0x047, 0x047, 0x048, 0x048, 0x048, 0x048, 0x048, 0x048, 0x048, 0x048, 0x049, 1237 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x049, 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 0x04A, 1238 0x04A, 0x04A, 0x04B, 0x04B, 0x04B, 0x04B, 0x04B, 0x04B, 0x04B, 0x04B, 0x04C, 0x04C, 0x04C, 1239 0x04C, 0x04C, 0x04C, 0x04C, 0x04C, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 0x04D, 1240 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04E, 0x04F, 0x04F, 0x04F, 0x04F, 0x04F, 1241 0x04F, 0x04F, 0x04F, 0x050, 0x050, 0x050, 0x050, 0x050, 0x050, 0x050, 0x050, 0x051, 0x051, 1242 0x051, 0x051, 0x051, 0x051, 0x051, 0x051, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 0x052, 1243 0x052, 0x053, 0x053, 0x053, 0x053, 0x053, 0x053, 0x053, 0x053, 0x054, 0x054, 0x054, 0x054, 1244 0x054, 0x054, 0x054, 0x054, 0x055, 0x055, 0x055, 0x055, 0x055, 0x055, 0x055, 0x055, 0x056, 1245 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x056, 0x057, 0x057, 0x057, 0x057, 0x057, 0x057, 1246 0x057, 0x057, 0x058, 0x058, 0x058, 0x058, 0x058, 0x058, 0x058, 0x058, 0x059, 0x059, 0x059, 1247 0x059, 0x059, 0x059, 0x059, 0x059, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 0x05A, 1248 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05B, 0x05C, 0x05C, 0x05C, 0x05C, 0x05C, 1249 0x05C, 0x05C, 0x05C, 0x05D, 0x05D, 0x05D, 0x05D, 0x05D, 0x05D, 0x05D, 0x05D, 0x05E, 0x05E, 1250 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 0x05E, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 0x05F, 1251 0x05F, 0x060, 0x060, 0x060, 0x060, 0x060, 0x060, 0x060, 0x060, 0x061, 0x061, 0x061, 0x061, 1252 0x061, 0x061, 0x061, 0x061, 0x062, 0x062, 0x062, 0x062, 0x062, 0x062, 0x062, 0x062, 0x063, 1253 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x063, 0x064, 0x064, 0x064, 0x064, 0x064, 0x064, 1254 0x064, 0x064, 0x065, 0x065, 0x065, 0x065, 0x065, 0x065, 0x065, 0x065, 0x066, 0x066, 0x066, 1255 0x066, 0x066, 0x066, 0x066, 0x066, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 0x067, 1256 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x068, 0x069, 0x069, 0x069, 0x069, 0x069, 1257 0x069, 0x069, 0x069, 0x06A, 0x06A, 0x06A, 0x06A, 0x06A, 0x06A, 0x06A, 0x06A, 0x06B, 0x06B, 1258 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 0x06B, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 0x06C, 1259 0x06C, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06D, 0x06E, 0x06E, 0x06E, 0x06E, 1260 0x06E, 0x06E, 0x06E, 0x06E, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x06F, 0x070, 1261 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x070, 0x071, 0x071, 0x071, 0x071, 0x071, 0x071, 1262 0x071, 0x071, 0x072, 0x072, 0x072, 0x072, 0x072, 0x072, 0x072, 0x072, 0x073, 0x073, 0x073, 1263 0x073, 0x073, 0x073, 0x073, 0x073, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 0x074, 1264 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x075, 0x076, 0x076, 0x076, 0x076, 0x076, 1265 0x076, 0x076, 0x076, 0x077, 0x077, 0x077, 0x077, 0x077, 0x077, 0x077, 0x077, 0x078, 0x078, 1266 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 0x079, 1267 0x079, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07A, 0x07B, 0x07B, 0x07B, 0x07B, 1268 0x07B, 0x07B, 0x07B, 0x07B, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07C, 0x07D, 1269 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07D, 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 0x07E, 1270 0x07E, 0x07E, 0x07F, 0x07F, 0x07F, 0x07F, 0x07F, 0x07F, 0x07F, 0x07F, 0x080, 0x080, 0x080, 1271 0x080, 0x080, 0x080, 0x080, 0x080, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 0x081, 1272 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x082, 0x083, 0x083, 0x083, 0x083, 0x083, 1273 0x083, 0x083, 0x083, 0x084, 0x084, 0x084, 0x084, 0x084, 0x084, 0x084, 0x084, 0x085, 0x085, 1274 0x085, 0x085, 0x085, 0x085, 0x085, 0x085, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 0x086, 1275 0x086, 0x087, 0x087, 0x087, 0x087, 0x087, 0x087, 0x087, 0x087, 0x088, 0x088, 0x088, 0x088, 1276 0x088, 0x088, 0x088, 0x088, 0x089, 0x089, 0x089, 0x089, 0x089, 0x089, 0x089, 0x089, 0x08A, 1277 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08A, 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 0x08B, 1278 0x08B, 0x08B, 0x08C, 0x08C, 0x08C, 0x08C, 0x08C, 0x08C, 0x08C, 0x08C, 0x08D, 0x08D, 0x08D, 1279 0x08D, 0x08D, 0x08D, 0x08D, 0x08D, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 0x08E, 1280 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x08F, 0x090, 0x090, 0x090, 0x090, 0x090, 1281 0x090, 0x090, 0x090, 0x091, 0x091, 0x091, 0x091, 0x091, 0x091, 0x091, 0x091, 0x092, 0x092, 1282 0x092, 0x092, 0x092, 0x092, 0x092, 0x092, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 0x093, 1283 0x093, 0x094, 0x094, 0x094, 0x094, 0x094, 0x094, 0x094, 0x094, 0x095, 0x095, 0x095, 0x095, 1284 0x095, 0x095, 0x095, 0x095, 0x096, 0x096, 0x096, 0x096, 0x096, 0x096, 0x096, 0x096, 0x097, 1285 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x097, 0x098, 0x098, 0x098, 0x098, 0x098, 0x098, 1286 0x098, 0x098, 0x099, 0x099, 0x099, 0x099, 0x099, 0x099, 0x099, 0x099, 0x09A, 0x09A, 0x09A, 1287 0x09A, 0x09A, 0x09A, 0x09A, 0x09A, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 0x09B, 1288 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09C, 0x09D, 0x09D, 0x09D, 0x09D, 0x09D, 1289 0x09D, 0x09D, 0x09D, 0x09E, 0x09E, 0x09E, 0x09E, 0x09E, 0x09E, 0x09E, 0x09E, 0x09F, 0x09F, 1290 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 0x09F, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 0x0A0, 1291 0x0A0, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A1, 0x0A2, 0x0A2, 0x0A2, 0x0A2, 1292 0x0A2, 0x0A2, 0x0A2, 0x0A2, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A3, 0x0A4, 1293 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A4, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 0x0A5, 1294 0x0A5, 0x0A5, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A6, 0x0A7, 0x0A7, 0x0A7, 1295 0x0A7, 0x0A7, 0x0A7, 0x0A7, 0x0A7, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 0x0A8, 1296 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0A9, 0x0AA, 0x0AA, 0x0AA, 0x0AA, 0x0AA, 1297 0x0AA, 0x0AA, 0x0AA, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AB, 0x0AC, 0x0AC, 1298 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AC, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 0x0AD, 1299 0x0AD, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AE, 0x0AF, 0x0AF, 0x0AF, 0x0AF, 1300 0x0AF, 0x0AF, 0x0AF, 0x0AF, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B0, 0x0B1, 1301 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B1, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 0x0B2, 1302 0x0B2, 0x0B2, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B3, 0x0B4, 0x0B4, 0x0B4, 1303 0x0B4, 0x0B4, 0x0B4, 0x0B4, 0x0B4, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 0x0B5, 1304 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B6, 0x0B7, 0x0B7, 0x0B7, 0x0B7, 0x0B7, 1305 0x0B7, 0x0B7, 0x0B7, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B8, 0x0B9, 0x0B9, 1306 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0B9, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 0x0BA, 1307 0x0BA, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BB, 0x0BC, 0x0BC, 0x0BC, 0x0BC, 1308 0x0BC, 0x0BC, 0x0BC, 0x0BC, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BD, 0x0BE, 1309 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BE, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 0x0BF, 1310 0x0BF, 0x0BF, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C0, 0x0C1, 0x0C1, 0x0C1, 1311 0x0C1, 0x0C1, 0x0C1, 0x0C1, 0x0C1, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 0x0C2, 1312 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C3, 0x0C4, 0x0C4, 0x0C4, 0x0C4, 0x0C4, 1313 0x0C4, 0x0C4, 0x0C4, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C5, 0x0C6, 0x0C6, 1314 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C6, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 0x0C7, 1315 0x0C7, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C8, 0x0C9, 0x0C9, 0x0C9, 0x0C9, 1316 0x0C9, 0x0C9, 0x0C9, 0x0C9, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CA, 0x0CB, 1317 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CB, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 0x0CC, 1318 0x0CC, 0x0CC, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CD, 0x0CE, 0x0CE, 0x0CE, 1319 0x0CE, 0x0CE, 0x0CE, 0x0CE, 0x0CE, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 0x0CF, 1320 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D0, 0x0D1, 0x0D1, 0x0D1, 0x0D1, 0x0D1, 1321 0x0D1, 0x0D1, 0x0D1, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D2, 0x0D3, 0x0D3, 1322 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D3, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 0x0D4, 1323 0x0D4, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D5, 0x0D6, 0x0D6, 0x0D6, 0x0D6, 1324 0x0D6, 0x0D6, 0x0D6, 0x0D6, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D7, 0x0D8, 1325 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D8, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 0x0D9, 1326 0x0D9, 0x0D9, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DA, 0x0DB, 0x0DB, 0x0DB, 1327 0x0DB, 0x0DB, 0x0DB, 0x0DB, 0x0DB, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 0x0DC, 1328 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DD, 0x0DE, 0x0DE, 0x0DE, 0x0DE, 0x0DE, 1329 0x0DE, 0x0DE, 0x0DE, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0DF, 0x0E0, 0x0E0, 1330 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E0, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 0x0E1, 1331 0x0E1, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E2, 0x0E3, 0x0E3, 0x0E3, 0x0E3, 1332 0x0E3, 0x0E3, 0x0E3, 0x0E3, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E4, 0x0E5, 1333 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E5, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 0x0E6, 1334 0x0E6, 0x0E6, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E7, 0x0E8, 0x0E8, 0x0E8, 1335 0x0E8, 0x0E8, 0x0E8, 0x0E8, 0x0E8, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 0x0E9, 1336 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EA, 0x0EB, 0x0EB, 0x0EB, 0x0EB, 0x0EB, 1337 0x0EB, 0x0EB, 0x0EB, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0EC, 0x0ED, 0x0ED, 1338 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0ED, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 0x0EE, 1339 0x0EE, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0EF, 0x0F0, 0x0F0, 0x0F0, 0x0F0, 1340 0x0F0, 0x0F0, 0x0F0, 0x0F0, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F1, 0x0F2, 1341 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F2, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 0x0F3, 1342 0x0F3, 0x0F3, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F4, 0x0F5, 0x0F5, 0x0F5, 1343 0x0F5, 0x0F5, 0x0F5, 0x0F5, 0x0F5, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 0x0F6, 1344 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F7, 0x0F8, 0x0F8, 0x0F8, 0x0F8, 0x0F8, 1345 0x0F8, 0x0F8, 0x0F8, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0F9, 0x0FA, 0x0FA, 1346 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FA, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 0x0FB, 1347 0x0FB, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FD, 0x0FD, 0x0FD, 0x0FD, 1348 0x0FD, 0x0FD, 0x0FD, 0x0FD, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FE, 0x0FF, 1349 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x0FF, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 1350 0x100, 0x100, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x101, 0x102, 0x102, 0x102, 1351 0x102, 0x102, 0x102, 0x102, 0x102, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 0x103, 1352 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x104, 0x105, 0x105, 0x105, 0x105, 0x105, 1353 0x105, 0x105, 0x105, 0x106, 0x106, 0x106, 0x106, 0x106, 0x106, 0x106, 0x106, 0x107, 0x107, 1354 0x107, 0x107, 0x107, 0x107, 0x107, 0x107, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 1355 0x108, 0x109, 0x109, 0x109, 0x109, 0x109, 0x109, 0x109, 0x109, 0x10A, 0x10A, 0x10A, 0x10A, 1356 0x10A, 0x10A, 0x10A, 0x10A, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10B, 0x10C, 1357 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10C, 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 0x10D, 1358 0x10D, 0x10D, 0x10E, 0x10E, 0x10E, 0x10E, 0x10E, 0x10E, 0x10E, 0x10E, 0x10F, 0x10F, 0x10F, 1359 0x10F, 0x10F, 0x10F, 0x10F, 0x10F, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 1360 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x111, 0x112, 0x112, 0x112, 0x112, 0x112, 1361 0x112, 0x112, 0x112, 0x113, 0x113, 0x113, 0x113, 0x113, 0x113, 0x113, 0x113, 0x114, 0x114, 1362 0x114, 0x114, 0x114, 0x114, 0x114, 0x114, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 0x115, 1363 0x115, 0x116, 0x116, 0x116, 0x116, 0x116, 0x116, 0x116, 0x116, 0x117, 0x117, 0x117, 0x117, 1364 0x117, 0x117, 0x117, 0x117, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x118, 0x119, 1365 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x119, 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 0x11A, 1366 0x11A, 0x11A, 0x11B, 0x11B, 0x11B, 0x11B, 0x11B, 0x11B, 0x11B, 0x11B, 0x11C, 0x11C, 0x11C, 1367 0x11C, 0x11C, 0x11C, 0x11C, 0x11C, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 0x11D, 1368 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11E, 0x11F, 0x11F, 0x11F, 0x11F, 0x11F, 1369 0x11F, 0x11F, 0x11F, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x121, 0x121, 1370 0x121, 0x121, 0x121, 0x121, 0x121, 0x121, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 0x122, 1371 0x122, 0x123, 0x123, 0x123, 0x123, 0x123, 0x123, 0x123, 0x123, 0x124, 0x124, 0x124, 0x124, 1372 0x124, 0x124, 0x124, 0x124, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x125, 0x126, 1373 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x126, 0x127, 0x127, 0x127, 0x127, 0x127, 0x127, 1374 0x127, 0x127, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x129, 0x129, 0x129, 1375 0x129, 0x129, 0x129, 0x129, 0x129, 0x12A, 0x12A, 0x12A, 0x12A, 0x12A, 0x12A, 0x12A, 0x12A, 1376 0x12B, 0x12B, 0x12B, 0x12B, 0x12B, 0x12B, 0x12B, 0x12B, 0x12C, 0x12C, 0x12C, 0x12C, 0x12C, 1377 0x12C, 0x12C, 0x12C, 0x12D, 0x12D, 0x12D, 0x12D, 0x12D, 0x12D, 0x12D, 0x12D, 0x12E, 0x12E, 1378 0x12E, 0x12E, 0x12E, 0x12E, 0x12E, 0x12E, 0x12F, 0x12F, 0x12F, 0x12F, 0x12F, 0x12F, 0x12F, 1379 0x12F, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x131, 0x131, 0x131, 0x131, 1380 0x131, 0x131, 0x131, 0x131, 0x132, 0x132, 0x132, 0x132, 0x132, 0x132, 0x132, 0x132, 0x133, 1381 0x133, 0x133, 0x133, 0x133, 0x133, 0x133, 0x133, 0x134, 0x134, 0x134, 0x134, 0x134, 0x134, 1382 0x134, 0x134, 0x135, 0x135, 0x135, 0x135, 0x135, 0x135, 0x135, 0x135, 0x136, 0x136, 0x136, 1383 0x136, 0x136, 0x136, 0x136, 0x136, 0x137, 0x137, 0x137, 0x137, 0x137, 0x137, 0x137, 0x137, 1384 0x138, 0x138, 0x138, 0x138, 0x138, 0x138, 0x138, 0x138, 0x139, 0x139, 0x139, 0x139, 0x139, 1385 0x139, 0x139, 0x139, 0x13A, 0x13A, 0x13A, 0x13A, 0x13A, 0x13A, 0x13A, 0x13A, 0x13B, 0x13B, 1386 0x13B, 0x13B, 0x13B, 0x13B, 0x13B, 0x13B, 0x13C, 0x13C, 0x13C, 0x13C, 0x13C, 0x13C, 0x13C, 1387 0x13C, 0x13D, 0x13D, 0x13D, 0x13D, 0x13D, 0x13D, 0x13D, 0x13D, 0x13E, 0x13E, 0x13E, 0x13E, 1388 0x13E, 0x13E, 0x13E, 0x13E, 0x13F, 0x13F, 0x13F, 0x13F, 0x13F, 0x13F, 0x13F, 0x13F, 0x140, 1389 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x141, 0x141, 0x141, 0x141, 0x141, 0x141, 1390 0x141, 0x141, 0x142, 0x142, 0x142, 0x142, 0x142, 0x142, 0x142, 0x142, 0x143, 0x143, 0x143, 1391 0x143, 0x143, 0x143, 0x143, 0x143, 0x144, 0x144, 0x144, 0x144, 0x144, 0x144, 0x144, 0x144, 1392 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x145, 0x146, 0x146, 0x146, 0x146, 0x146, 1393 0x146, 0x146, 0x146, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147, 0x147, 0x148, 0x148, 1394 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x149, 0x149, 0x149, 0x149, 0x149, 0x149, 0x149, 1395 0x149, 0x14A, 0x14A, 0x14A, 0x14A, 0x14A, 0x14A, 0x14A, 0x14A, 0x14B, 0x14B, 0x14B, 0x14B, 1396 0x14B, 0x14B, 0x14B, 0x14B, 0x14C, 0x14C, 0x14C, 0x14C, 0x14C, 0x14C, 0x14C, 0x14C, 0x14D, 1397 0x14D, 0x14D, 0x14D, 0x14D, 0x14D, 0x14D, 0x14D, 0x14E, 0x14E, 0x14E, 0x14E, 0x14E, 0x14E, 1398 0x14E, 0x14E, 0x14F, 0x14F, 0x14F, 0x14F, 0x14F, 0x14F, 0x14F, 0x14F, 0x150, 0x150, 0x150, 1399 0x150, 0x150, 0x150, 0x150, 0x150, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 0x151, 1400 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x152, 0x153, 0x153, 0x153, 0x153, 0x153, 1401 0x153, 0x153, 0x153, 0x154, 0x154, 0x154, 0x154, 0x154, 0x154, 0x154, 0x154, 0x155, 0x155, 1402 0x155, 0x155, 0x155, 0x155, 0x155, 0x155, 0x156, 0x156, 0x156, 0x156, 0x156, 0x156, 0x156, 1403 0x156, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x157, 0x158, 0x158, 0x158, 0x158, 1404 0x158, 0x158, 0x158, 0x158, 0x159, 0x159, 0x159, 0x159, 0x159, 0x159, 0x159, 0x159, 0x15A, 1405 0x15A, 0x15A, 0x15A, 0x15A, 0x15A, 0x15A, 0x15A, 0x15B, 0x15B, 0x15B, 0x15B, 0x15B, 0x15B, 1406 0x15B, 0x15B, 0x15C, 0x15C, 0x15C, 0x15C, 0x15C, 0x15C, 0x15C, 0x15C, 0x15D, 0x15D, 0x15D, 1407 0x15D, 0x15D, 0x15D, 0x15D, 0x15D, 0x15E, 0x15E, 0x15E, 0x15E, 0x15E, 0x15E, 0x15E, 0x15E, 1408 0x15F, 0x15F, 0x15F, 0x15F, 0x15F, 0x15F, 0x15F, 0x15F, 0x160, 0x160, 0x160, 0x160, 0x160, 1409 0x160, 0x160, 0x160, 0x161, 0x161, 0x161, 0x161, 0x161, 0x161, 0x161, 0x161, 0x162, 0x162, 1410 0x162, 0x162, 0x162, 0x162, 0x162, 0x162, 0x163, 0x163, 0x163, 0x163, 0x163, 0x163, 0x163, 1411 0x163, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x164, 0x165, 0x165, 0x165, 0x165, 1412 0x165, 0x165, 0x165, 0x165, 0x166, 0x166, 0x166, 0x166, 0x166, 0x166, 0x166, 0x166, 0x167, 1413 0x167, 0x167, 0x167, 0x167, 0x167, 0x167, 0x167, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 1414 0x168, 0x168, 0x169, 0x169, 0x169, 0x169, 0x169, 0x169, 0x169, 0x169, 0x16A, 0x16A, 0x16A, 1415 0x16A, 0x16A, 0x16A, 0x16A, 0x16A, 0x16B, 0x16B, 0x16B, 0x16B, 0x16B, 0x16B, 0x16B, 0x16B, 1416 0x16C, 0x16C, 0x16C, 0x16C, 0x16C, 0x16C, 0x16C, 0x16C, 0x1C9, 0x1C9, 0x1C9, 0x1C9, 0x1C9, 1417 0x1C9, 0x1C9, 0x1C9, 0x1CA, 0x1CA, 0x1CA, 0x1CA, 0x1CA, 0x1CA, 0x1CA, 0x1CA, 0x1CB, 0x1CB, 1418 0x1CB, 0x1CB, 0x1CB, 0x1CB, 0x1CB, 0x1CB, 0x1CC, 0x1CC, 0x1CC, 0x1CC, 0x1CC, 0x1CC, 0x1CC, 1419 0x1CC, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CD, 0x1CE, 0x1CE, 1420 0x1CE, 0x1CE, 0x1CE, 0x1CE, 0x1CE, 0x1CE, 0x1CE, 0x1CE, 0x1CF, 0x1CF, 0x1CF, 0x1CF, 0x1CF, 1421 0x1CF, 0x1CF, 0x1CF, 0x1CF, 0x1CF, 0x1D0, 0x1D0, 0x1D0, 0x1D0, 0x1D0, 0x1D0, 0x1D0, 0x1D0, 1422 0x1D0, 0x1D0, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D1, 0x1D2, 1423 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D2, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 1424 0x1D3, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 0x1D3, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 0x1D4, 1425 0x1D4, 0x1D4, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D5, 0x1D6, 0x1D6, 1426 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D6, 0x1D7, 0x1D7, 0x1D7, 0x1D7, 0x1D7, 1427 0x1D7, 0x1D7, 0x1D7, 0x1D7, 0x1D7, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 0x1D8, 1428 0x1D8, 0x1D8, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1D9, 0x1DA, 1429 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DA, 0x1DB, 0x1DB, 0x1DB, 0x1DB, 1430 0x1DB, 0x1DB, 0x1DB, 0x1DB, 0x1DB, 0x1DB, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 0x1DC, 1431 0x1DC, 0x1DC, 0x1DC, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DD, 0x1DE, 0x1DE, 1432 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DE, 0x1DF, 0x1DF, 0x1DF, 0x1DF, 0x1DF, 1433 0x1DF, 0x1DF, 0x1DF, 0x1DF, 0x1DF, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 1434 0x1E0, 0x1E0, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E1, 0x1E2, 1435 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E2, 0x1E3, 0x1E3, 0x1E3, 0x1E3, 1436 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E3, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 0x1E4, 1437 0x1E4, 0x1E4, 0x1E4, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E5, 0x1E6, 1438 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E6, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 1439 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E7, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 0x1E8, 1440 0x1E8, 0x1E8, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1E9, 0x1EA, 1441 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EA, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 1442 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EB, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 0x1EC, 1443 0x1EC, 0x1EC, 0x1EC, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 0x1ED, 1444 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EE, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 0x1EF, 1445 0x1EF, 0x1EF, 0x1EF, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F0, 0x1F1, 0x1F1, 1446 0x1F1, 0x1F1, 0x1F1, 0x1F1, 0x1F1, 0x1F1, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 0x1F2, 1447 0x1F2, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F3, 0x1F4, 0x1F4, 0x1F4, 0x1F4, 1448 0x1F4, 0x1F4, 0x1F4, 0x1F4, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F5, 0x1F6, 1449 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F6, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 0x1F7, 1450 0x1F7, 0x1F7, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F8, 0x1F9, 0x1F9, 0x1F9, 1451 0x1F9, 0x1F9, 0x1F9, 0x1F9, 0x1F9, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 0x1FA, 1452 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FB, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 0x1FC, 1453 0x1FC, 0x1FC, 0x1FC, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FD, 0x1FE, 0x1FE, 1454 0x1FE, 0x1FE, 0x1FE, 0x1FE, 0x1FE, 0x1FE, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 0x1FF, 1455 0x1FF, 1456 ]; 1457 1458 h_counter_test( 1459 EXPECTED_PIXELS, 1460 EXPECTED_H, 1461 scanline_mclk_to_pixel_h40, 1462 pixel_to_internal_h_h40, 1463 ); 1464}