use std::boxed::Box;
use std::default::Default;
use std::sync::Once;
use fnv::FnvHashMap;
use m4ri_rust::friendly::BinMatrix;
use m4ri_rust::friendly::BinVector;
use crate::codes::BinaryCode;
#[derive(Clone, Serialize)]
pub struct BogosrndCode18_6;
static INIT: Once = Once::new();
static mut GENERATOR_MATRIX: *const BinMatrix = 0 as *const BinMatrix;
static mut PARITY_MATRIX: *const BinMatrix = 0 as *const BinMatrix;
static mut PARITY_MATRIX_T: *const BinMatrix = 0 as *const BinMatrix;
static mut SYNDROME_MAP: *const FnvHashMap<u64, &'static [usize; 1]> = 0 as *const FnvHashMap<u64, &'static [usize; 1]>;
fn init() {
INIT.call_once(|| {
unsafe {
let matrix = Box::new(BinMatrix::from_slices(&[
&[ 177345 ],
&[ 241538 ],
&[ 101636 ],
&[ 125000 ],
&[ 15376 ],
&[ 226848 ],
], 18));
GENERATOR_MATRIX = Box::into_raw(matrix);
let matrix = Box::new(BinMatrix::from_slices(&[
&[ 159745 ],
&[ 229378 ],
&[ 180228 ],
&[ 241672 ],
&[ 102416 ],
&[ 258080 ],
&[ 114752 ],
&[ 127104 ],
&[ 82176 ],
&[ 29184 ],
&[ 87040 ],
&[ 223232 ],
], 18));
let matrix_t = Box::new(matrix.transposed());
PARITY_MATRIX = Box::into_raw(matrix);
PARITY_MATRIX_T = Box::into_raw(matrix_t);
let mut map = Box::new(FnvHashMap::with_capacity_and_hasher(4096, Default::default()));
map.insert(0, &[0]); map.insert(1, &[1]); map.insert(2, &[2]); map.insert(3, &[3]); map.insert(4, &[4]); map.insert(5, &[5]); map.insert(6, &[6]); map.insert(7, &[7]); map.insert(8, &[8]); map.insert(9, &[9]); map.insert(10, &[10]); map.insert(11, &[11]); map.insert(12, &[12]); map.insert(13, &[13]); map.insert(14, &[14]); map.insert(15, &[133152]); map.insert(16, &[16]); map.insert(17, &[17]); map.insert(18, &[18]); map.insert(19, &[19]); map.insert(20, &[20]); map.insert(21, &[21]); map.insert(22, &[22]); map.insert(23, &[23]); map.insert(24, &[24]); map.insert(25, &[25]); map.insert(26, &[26]); map.insert(27, &[27]); map.insert(28, &[28]); map.insert(29, &[29]); map.insert(30, &[82433]); map.insert(31, &[82432]); map.insert(32, &[32]); map.insert(33, &[33]); map.insert(34, &[34]); map.insert(35, &[35]); map.insert(36, &[36]); map.insert(37, &[37]); map.insert(38, &[38]); map.insert(39, &[133128]); map.insert(40, &[40]); map.insert(41, &[41]); map.insert(42, &[42]); map.insert(43, &[133124]); map.insert(44, &[44]); map.insert(45, &[133122]); map.insert(46, &[133121]); map.insert(47, &[133120]); map.insert(48, &[48]); map.insert(49, &[49]); map.insert(50, &[50]); map.insert(51, &[51]); map.insert(52, &[52]); map.insert(53, &[53]); map.insert(54, &[54]); map.insert(55, &[133144]); map.insert(56, &[56]); map.insert(57, &[57]); map.insert(58, &[58]); map.insert(59, &[133140]); map.insert(60, &[32962]); map.insert(61, &[133138]); map.insert(62, &[32960]); map.insert(63, &[133136]); map.insert(64, &[64]); map.insert(65, &[65]); map.insert(66, &[66]); map.insert(67, &[67]); map.insert(68, &[68]); map.insert(69, &[69]); map.insert(70, &[70]); map.insert(71, &[71]); map.insert(72, &[72]); map.insert(73, &[73]); map.insert(74, &[74]); map.insert(75, &[75]); map.insert(76, &[76]); map.insert(77, &[77]); map.insert(78, &[78]); map.insert(79, &[133216]); map.insert(80, &[80]); map.insert(81, &[81]); map.insert(82, &[82]); map.insert(83, &[83]); map.insert(84, &[84]); map.insert(85, &[85]); map.insert(86, &[86]); map.insert(87, &[43520]); map.insert(88, &[88]); map.insert(89, &[89]); map.insert(90, &[90]); map.insert(91, &[91]); map.insert(92, &[32930]); map.insert(93, &[32931]); map.insert(94, &[32928]); map.insert(95, &[32929]); map.insert(96, &[96]); map.insert(97, &[97]); map.insert(98, &[98]); map.insert(99, &[99]); map.insert(100, &[100]); map.insert(101, &[101]); map.insert(102, &[102]); map.insert(103, &[133192]); map.insert(104, &[104]); map.insert(105, &[105]); map.insert(106, &[106]); map.insert(107, &[133188]); map.insert(108, &[32914]); map.insert(109, &[133186]); map.insert(110, &[32912]); map.insert(111, &[133184]); map.insert(112, &[112]); map.insert(113, &[113]); map.insert(114, &[114]); map.insert(115, &[151808]); map.insert(116, &[32906]); map.insert(117, &[32907]); map.insert(118, &[32904]); map.insert(119, &[32905]); map.insert(120, &[32902]); map.insert(121, &[32903]); map.insert(122, &[32900]); map.insert(123, &[32901]); map.insert(124, &[32898]); map.insert(125, &[32899]); map.insert(126, &[32896]); map.insert(127, &[32897]); map.insert(128, &[128]); map.insert(129, &[129]); map.insert(130, &[130]); map.insert(131, &[131]); map.insert(132, &[132]); map.insert(133, &[133]); map.insert(134, &[134]); map.insert(135, &[135]); map.insert(136, &[136]); map.insert(137, &[137]); map.insert(138, &[138]); map.insert(139, &[139]); map.insert(140, &[140]); map.insert(141, &[141]); map.insert(142, &[142]); map.insert(143, &[133280]); map.insert(144, &[144]); map.insert(145, &[145]); map.insert(146, &[146]); map.insert(147, &[147]); map.insert(148, &[148]); map.insert(149, &[149]); map.insert(150, &[150]); map.insert(151, &[151]); map.insert(152, &[152]); map.insert(153, &[153]); map.insert(154, &[154]); map.insert(155, &[155]); map.insert(156, &[32866]); map.insert(157, &[32867]); map.insert(158, &[32864]); map.insert(159, &[32865]); map.insert(160, &[160]); map.insert(161, &[161]); map.insert(162, &[162]); map.insert(163, &[163]); map.insert(164, &[164]); map.insert(165, &[165]); map.insert(166, &[166]); map.insert(167, &[133256]); map.insert(168, &[168]); map.insert(169, &[10752]); map.insert(170, &[170]); map.insert(171, &[10754]); map.insert(172, &[32850]); map.insert(173, &[133250]); map.insert(174, &[32848]); map.insert(175, &[133248]); map.insert(176, &[176]); map.insert(177, &[177]); map.insert(178, &[178]); map.insert(179, &[179]); map.insert(180, &[32842]); map.insert(181, &[32843]); map.insert(182, &[32840]); map.insert(183, &[32841]); map.insert(184, &[5633]); map.insert(185, &[5632]); map.insert(186, &[32836]); map.insert(187, &[32837]); map.insert(188, &[32834]); map.insert(189, &[32835]); map.insert(190, &[32832]); map.insert(191, &[32833]); map.insert(192, &[192]); map.insert(193, &[193]); map.insert(194, &[194]); map.insert(195, &[195]); map.insert(196, &[196]); map.insert(197, &[197]); map.insert(198, &[198]); map.insert(199, &[199]); map.insert(200, &[200]); map.insert(201, &[201]); map.insert(202, &[202]); map.insert(203, &[203]); map.insert(204, &[32818]); map.insert(205, &[32819]); map.insert(206, &[32816]); map.insert(207, &[32817]); map.insert(208, &[208]); map.insert(209, &[165888]); map.insert(210, &[210]); map.insert(211, &[165890]); map.insert(212, &[32810]); map.insert(213, &[165892]); map.insert(214, &[32808]); map.insert(215, &[32809]); map.insert(216, &[32806]); map.insert(217, &[165896]); map.insert(218, &[32804]); map.insert(219, &[32805]); map.insert(220, &[32802]); map.insert(221, &[32803]); map.insert(222, &[32800]); map.insert(223, &[32801]); map.insert(224, &[224]); map.insert(225, &[225]); map.insert(226, &[226]); map.insert(227, &[227]); map.insert(228, &[32794]); map.insert(229, &[32795]); map.insert(230, &[32792]); map.insert(231, &[32793]); map.insert(232, &[32790]); map.insert(233, &[10816]); map.insert(234, &[32788]); map.insert(235, &[32789]); map.insert(236, &[32786]); map.insert(237, &[32787]); map.insert(238, &[32784]); map.insert(239, &[32785]); map.insert(240, &[32782]); map.insert(241, &[165920]); map.insert(242, &[32780]); map.insert(243, &[32781]); map.insert(244, &[32778]); map.insert(245, &[32779]); map.insert(246, &[32776]); map.insert(247, &[32777]); map.insert(248, &[32774]); map.insert(249, &[32775]); map.insert(250, &[32772]); map.insert(251, &[32773]); map.insert(252, &[32770]); map.insert(253, &[32771]); map.insert(254, &[32768]); map.insert(255, &[32769]); map.insert(256, &[256]); map.insert(257, &[257]); map.insert(258, &[258]); map.insert(259, &[259]); map.insert(260, &[260]); map.insert(261, &[261]); map.insert(262, &[262]); map.insert(263, &[263]); map.insert(264, &[264]); map.insert(265, &[265]); map.insert(266, &[266]); map.insert(267, &[267]); map.insert(268, &[268]); map.insert(269, &[269]); map.insert(270, &[270]); map.insert(271, &[133408]); map.insert(272, &[272]); map.insert(273, &[273]); map.insert(274, &[274]); map.insert(275, &[275]); map.insert(276, &[276]); map.insert(277, &[277]); map.insert(278, &[278]); map.insert(279, &[279]); map.insert(280, &[280]); map.insert(281, &[281]); map.insert(282, &[282]); map.insert(283, &[283]); map.insert(284, &[284]); map.insert(285, &[285]); map.insert(286, &[82689]); map.insert(287, &[82688]); map.insert(288, &[288]); map.insert(289, &[289]); map.insert(290, &[290]); map.insert(291, &[291]); map.insert(292, &[292]); map.insert(293, &[293]); map.insert(294, &[294]); map.insert(295, &[133384]); map.insert(296, &[296]); map.insert(297, &[297]); map.insert(298, &[298]); map.insert(299, &[133380]); map.insert(300, &[300]); map.insert(301, &[133378]); map.insert(302, &[133377]); map.insert(303, &[133376]); map.insert(304, &[304]); map.insert(305, &[305]); map.insert(306, &[306]); map.insert(307, &[151616]); map.insert(308, &[308]); map.insert(309, &[309]); map.insert(310, &[310]); map.insert(311, &[151620]); map.insert(312, &[312]); map.insert(313, &[313]); map.insert(314, &[314]); map.insert(315, &[133396]); map.insert(316, &[33218]); map.insert(317, &[133394]); map.insert(318, &[33216]); map.insert(319, &[133392]); map.insert(320, &[320]); map.insert(321, &[321]); map.insert(322, &[322]); map.insert(323, &[323]); map.insert(324, &[324]); map.insert(325, &[325]); map.insert(326, &[326]); map.insert(327, &[327]); map.insert(328, &[328]); map.insert(329, &[329]); map.insert(330, &[330]); map.insert(331, &[331]); map.insert(332, &[25600]); map.insert(333, &[25601]); map.insert(334, &[25602]); map.insert(335, &[25603]); map.insert(336, &[336]); map.insert(337, &[337]); map.insert(338, &[338]); map.insert(339, &[151584]); map.insert(340, &[340]); map.insert(341, &[197760]); map.insert(342, &[342]); map.insert(343, &[197762]); map.insert(344, &[22532]); map.insert(345, &[22533]); map.insert(346, &[22534]); map.insert(347, &[151592]); map.insert(348, &[22528]); map.insert(349, &[22529]); map.insert(350, &[22530]); map.insert(351, &[22531]); map.insert(352, &[352]); map.insert(353, &[353]); map.insert(354, &[354]); map.insert(355, &[151568]); map.insert(356, &[356]); map.insert(357, &[357]); map.insert(358, &[358]); map.insert(359, &[151572]); map.insert(360, &[360]); map.insert(361, &[361]); map.insert(362, &[77952]); map.insert(363, &[77953]); map.insert(364, &[25632]); map.insert(365, &[25633]); map.insert(366, &[33168]); map.insert(367, &[133440]); map.insert(368, &[368]); map.insert(369, &[151554]); map.insert(370, &[151553]); map.insert(371, &[151552]); map.insert(372, &[33162]); map.insert(373, &[151558]); map.insert(374, &[33160]); map.insert(375, &[151556]); map.insert(376, &[33158]); map.insert(377, &[151562]); map.insert(378, &[33156]); map.insert(379, &[151560]); map.insert(380, &[33154]); map.insert(381, &[33155]); map.insert(382, &[33152]); map.insert(383, &[33153]); map.insert(384, &[384]); map.insert(385, &[385]); map.insert(386, &[386]); map.insert(387, &[387]); map.insert(388, &[388]); map.insert(389, &[389]); map.insert(390, &[390]); map.insert(391, &[391]); map.insert(392, &[392]); map.insert(393, &[393]); map.insert(394, &[394]); map.insert(395, &[395]); map.insert(396, &[396]); map.insert(397, &[184320]); map.insert(398, &[398]); map.insert(399, &[184322]); map.insert(400, &[400]); map.insert(401, &[401]); map.insert(402, &[402]); map.insert(403, &[403]); map.insert(404, &[404]); map.insert(405, &[197696]); map.insert(406, &[406]); map.insert(407, &[197698]); map.insert(408, &[408]); map.insert(409, &[409]); map.insert(410, &[410]); map.insert(411, &[411]); map.insert(412, &[33122]); map.insert(413, &[197704]); map.insert(414, &[33120]); map.insert(415, &[33121]); map.insert(416, &[416]); map.insert(417, &[417]); map.insert(418, &[418]); map.insert(419, &[419]); map.insert(420, &[420]); map.insert(421, &[421]); map.insert(422, &[422]); map.insert(423, &[133512]); map.insert(424, &[424]); map.insert(425, &[11008]); map.insert(426, &[77888]); map.insert(427, &[77889]); map.insert(428, &[33106]); map.insert(429, &[133506]); map.insert(430, &[33104]); map.insert(431, &[133504]); map.insert(432, &[432]); map.insert(433, &[433]); map.insert(434, &[58368]); map.insert(435, &[58369]); map.insert(436, &[33098]); map.insert(437, &[197728]); map.insert(438, &[33096]); map.insert(439, &[33097]); map.insert(440, &[5889]); map.insert(441, &[5888]); map.insert(442, &[33092]); map.insert(443, &[33093]); map.insert(444, &[33090]); map.insert(445, &[33091]); map.insert(446, &[33088]); map.insert(447, &[33089]); map.insert(448, &[448]); map.insert(449, &[449]); map.insert(450, &[450]); map.insert(451, &[451]); map.insert(452, &[452]); map.insert(453, &[197648]); map.insert(454, &[454]); map.insert(455, &[197650]); map.insert(456, &[456]); map.insert(457, &[457]); map.insert(458, &[77856]); map.insert(459, &[77857]); map.insert(460, &[25728]); map.insert(461, &[25729]); map.insert(462, &[33072]); map.insert(463, &[33073]); map.insert(464, &[464]); map.insert(465, &[197636]); map.insert(466, &[466]); map.insert(467, &[197638]); map.insert(468, &[197633]); map.insert(469, &[197632]); map.insert(470, &[33064]); map.insert(471, &[197634]); map.insert(472, &[33062]); map.insert(473, &[197644]); map.insert(474, &[33060]); map.insert(475, &[33061]); map.insert(476, &[33058]); map.insert(477, &[197640]); map.insert(478, &[33056]); map.insert(479, &[33057]); map.insert(480, &[480]); map.insert(481, &[481]); map.insert(482, &[77832]); map.insert(483, &[77833]); map.insert(484, &[19969]); map.insert(485, &[19968]); map.insert(486, &[33048]); map.insert(487, &[33049]); map.insert(488, &[77826]); map.insert(489, &[77827]); map.insert(490, &[77824]); map.insert(491, &[77825]); map.insert(492, &[33042]); map.insert(493, &[33043]); map.insert(494, &[33040]); map.insert(495, &[33041]); map.insert(496, &[33038]); map.insert(497, &[151682]); map.insert(498, &[33036]); map.insert(499, &[151680]); map.insert(500, &[33034]); map.insert(501, &[197664]); map.insert(502, &[33032]); map.insert(503, &[33033]); map.insert(504, &[33030]); map.insert(505, &[33031]); map.insert(506, &[33028]); map.insert(507, &[33029]); map.insert(508, &[33026]); map.insert(509, &[33027]); map.insert(510, &[33024]); map.insert(511, &[33025]); map.insert(512, &[512]); map.insert(513, &[513]); map.insert(514, &[514]); map.insert(515, &[515]); map.insert(516, &[516]); map.insert(517, &[517]); map.insert(518, &[518]); map.insert(519, &[519]); map.insert(520, &[520]); map.insert(521, &[521]); map.insert(522, &[522]); map.insert(523, &[523]); map.insert(524, &[524]); map.insert(525, &[525]); map.insert(526, &[81937]); map.insert(527, &[81936]); map.insert(528, &[528]); map.insert(529, &[529]); map.insert(530, &[530]); map.insert(531, &[531]); map.insert(532, &[532]); map.insert(533, &[533]); map.insert(534, &[81929]); map.insert(535, &[81928]); map.insert(536, &[536]); map.insert(537, &[537]); map.insert(538, &[81925]); map.insert(539, &[81924]); map.insert(540, &[81923]); map.insert(541, &[81922]); map.insert(542, &[81921]); map.insert(543, &[81920]); map.insert(544, &[544]); map.insert(545, &[545]); map.insert(546, &[546]); map.insert(547, &[547]); map.insert(548, &[548]); map.insert(549, &[549]); map.insert(550, &[550]); map.insert(551, &[133640]); map.insert(552, &[552]); map.insert(553, &[10368]); map.insert(554, &[554]); map.insert(555, &[10370]); map.insert(556, &[556]); map.insert(557, &[133634]); map.insert(558, &[133633]); map.insert(559, &[133632]); map.insert(560, &[560]); map.insert(561, &[561]); map.insert(562, &[562]); map.insert(563, &[563]); map.insert(564, &[564]); map.insert(565, &[565]); map.insert(566, &[81961]); map.insert(567, &[81960]); map.insert(568, &[5249]); map.insert(569, &[5248]); map.insert(570, &[5251]); map.insert(571, &[5250]); map.insert(572, &[81955]); map.insert(573, &[81954]); map.insert(574, &[81953]); map.insert(575, &[81952]); map.insert(576, &[576]); map.insert(577, &[577]); map.insert(578, &[578]); map.insert(579, &[579]); map.insert(580, &[580]); map.insert(581, &[581]); map.insert(582, &[37889]); map.insert(583, &[37888]); map.insert(584, &[584]); map.insert(585, &[585]); map.insert(586, &[586]); map.insert(587, &[587]); map.insert(588, &[588]); map.insert(589, &[589]); map.insert(590, &[37897]); map.insert(591, &[37896]); map.insert(592, &[592]); map.insert(593, &[593]); map.insert(594, &[594]); map.insert(595, &[43012]); map.insert(596, &[596]); map.insert(597, &[43010]); map.insert(598, &[43009]); map.insert(599, &[43008]); map.insert(600, &[600]); map.insert(601, &[601]); map.insert(602, &[81989]); map.insert(603, &[81988]); map.insert(604, &[81987]); map.insert(605, &[81986]); map.insert(606, &[81985]); map.insert(607, &[81984]); map.insert(608, &[608]); map.insert(609, &[609]); map.insert(610, &[610]); map.insert(611, &[611]); map.insert(612, &[612]); map.insert(613, &[613]); map.insert(614, &[37921]); map.insert(615, &[37920]); map.insert(616, &[616]); map.insert(617, &[10432]); map.insert(618, &[618]); map.insert(619, &[10434]); map.insert(620, &[200960]); map.insert(621, &[200961]); map.insert(622, &[33424]); map.insert(623, &[133696]); map.insert(624, &[172040]); map.insert(625, &[172041]); map.insert(626, &[172042]); map.insert(627, &[43044]); map.insert(628, &[33418]); map.insert(629, &[43042]); map.insert(630, &[33416]); map.insert(631, &[43040]); map.insert(632, &[172032]); map.insert(633, &[172033]); map.insert(634, &[172034]); map.insert(635, &[172035]); map.insert(636, &[33410]); map.insert(637, &[33411]); map.insert(638, &[33408]); map.insert(639, &[33409]); map.insert(640, &[640]); map.insert(641, &[641]); map.insert(642, &[642]); map.insert(643, &[643]); map.insert(644, &[139266]); map.insert(645, &[139267]); map.insert(646, &[139264]); map.insert(647, &[139265]); map.insert(648, &[648]); map.insert(649, &[10272]); map.insert(650, &[650]); map.insert(651, &[10274]); map.insert(652, &[139274]); map.insert(653, &[10276]); map.insert(654, &[139272]); map.insert(655, &[139273]); map.insert(656, &[656]); map.insert(657, &[657]); map.insert(658, &[658]); map.insert(659, &[659]); map.insert(660, &[139282]); map.insert(661, &[139283]); map.insert(662, &[139280]); map.insert(663, &[139281]); map.insert(664, &[5153]); map.insert(665, &[5152]); map.insert(666, &[5155]); map.insert(667, &[5154]); map.insert(668, &[82051]); map.insert(669, &[82050]); map.insert(670, &[82049]); map.insert(671, &[82048]); map.insert(672, &[672]); map.insert(673, &[10248]); map.insert(674, &[674]); map.insert(675, &[10250]); map.insert(676, &[139298]); map.insert(677, &[10252]); map.insert(678, &[139296]); map.insert(679, &[139297]); map.insert(680, &[10241]); map.insert(681, &[10240]); map.insert(682, &[10243]); map.insert(683, &[10242]); map.insert(684, &[10245]); map.insert(685, &[10244]); map.insert(686, &[139304]); map.insert(687, &[10246]); map.insert(688, &[5129]); map.insert(689, &[5128]); map.insert(690, &[5131]); map.insert(691, &[5130]); map.insert(692, &[5133]); map.insert(693, &[5132]); map.insert(694, &[33352]); map.insert(695, &[33353]); map.insert(696, &[5121]); map.insert(697, &[5120]); map.insert(698, &[5123]); map.insert(699, &[5122]); map.insert(700, &[5125]); map.insert(701, &[5124]); map.insert(702, &[33344]); map.insert(703, &[33345]); map.insert(704, &[704]); map.insert(705, &[705]); map.insert(706, &[706]); map.insert(707, &[707]); map.insert(708, &[139330]); map.insert(709, &[139331]); map.insert(710, &[139328]); map.insert(711, &[139329]); map.insert(712, &[712]); map.insert(713, &[10336]); map.insert(714, &[148736]); map.insert(715, &[148737]); map.insert(716, &[139338]); map.insert(717, &[10340]); map.insert(718, &[139336]); map.insert(719, &[139337]); map.insert(720, &[720]); map.insert(721, &[166400]); map.insert(722, &[722]); map.insert(723, &[166402]); map.insert(724, &[33322]); map.insert(725, &[43138]); map.insert(726, &[33320]); map.insert(727, &[43136]); map.insert(728, &[5217]); map.insert(729, &[5216]); map.insert(730, &[33316]); map.insert(731, &[33317]); map.insert(732, &[33314]); map.insert(733, &[33315]); map.insert(734, &[33312]); map.insert(735, &[33313]); map.insert(736, &[114689]); map.insert(737, &[114688]); map.insert(738, &[114691]); map.insert(739, &[114690]); map.insert(740, &[114693]); map.insert(741, &[114692]); map.insert(742, &[33304]); map.insert(743, &[33305]); map.insert(744, &[10305]); map.insert(745, &[10304]); map.insert(746, &[33300]); map.insert(747, &[10306]); map.insert(748, &[33298]); map.insert(749, &[10308]); map.insert(750, &[33296]); map.insert(751, &[33297]); map.insert(752, &[5193]); map.insert(753, &[5192]); map.insert(754, &[33292]); map.insert(755, &[33293]); map.insert(756, &[33290]); map.insert(757, &[28928]); map.insert(758, &[33288]); map.insert(759, &[33289]); map.insert(760, &[5185]); map.insert(761, &[5184]); map.insert(762, &[33284]); map.insert(763, &[33285]); map.insert(764, &[33282]); map.insert(765, &[33283]); map.insert(766, &[33280]); map.insert(767, &[33281]); map.insert(768, &[768]); map.insert(769, &[769]); map.insert(770, &[770]); map.insert(771, &[771]); map.insert(772, &[772]); map.insert(773, &[773]); map.insert(774, &[774]); map.insert(775, &[775]); map.insert(776, &[776]); map.insert(777, &[777]); map.insert(778, &[778]); map.insert(779, &[61440]); map.insert(780, &[780]); map.insert(781, &[781]); map.insert(782, &[82193]); map.insert(783, &[82192]); map.insert(784, &[784]); map.insert(785, &[785]); map.insert(786, &[786]); map.insert(787, &[74816]); map.insert(788, &[788]); map.insert(789, &[789]); map.insert(790, &[82185]); map.insert(791, &[82184]); map.insert(792, &[792]); map.insert(793, &[793]); map.insert(794, &[82181]); map.insert(795, &[82180]); map.insert(796, &[82179]); map.insert(797, &[82178]); map.insert(798, &[82177]); map.insert(799, &[82176]); map.insert(800, &[800]); map.insert(801, &[801]); map.insert(802, &[802]); map.insert(803, &[803]); map.insert(804, &[804]); map.insert(805, &[805]); map.insert(806, &[806]); map.insert(807, &[133896]); map.insert(808, &[808]); map.insert(809, &[10624]); map.insert(810, &[810]); map.insert(811, &[10626]); map.insert(812, &[200768]); map.insert(813, &[200769]); map.insert(814, &[133889]); map.insert(815, &[133888]); map.insert(816, &[816]); map.insert(817, &[817]); map.insert(818, &[818]); map.insert(819, &[74848]); map.insert(820, &[181248]); map.insert(821, &[181249]); map.insert(822, &[181250]); map.insert(823, &[82216]); map.insert(824, &[5505]); map.insert(825, &[5504]); map.insert(826, &[5507]); map.insert(827, &[5506]); map.insert(828, &[181256]); map.insert(829, &[82210]); map.insert(830, &[82209]); map.insert(831, &[82208]); map.insert(832, &[832]); map.insert(833, &[833]); map.insert(834, &[71681]); map.insert(835, &[71680]); map.insert(836, &[836]); map.insert(837, &[837]); map.insert(838, &[71685]); map.insert(839, &[71684]); map.insert(840, &[840]); map.insert(841, &[841]); map.insert(842, &[148608]); map.insert(843, &[71688]); map.insert(844, &[200736]); map.insert(845, &[200737]); map.insert(846, &[200738]); map.insert(847, &[71692]); map.insert(848, &[848]); map.insert(849, &[74754]); map.insert(850, &[74753]); map.insert(851, &[74752]); map.insert(852, &[852]); map.insert(853, &[74758]); map.insert(854, &[74757]); map.insert(855, &[74756]); map.insert(856, &[23044]); map.insert(857, &[74762]); map.insert(858, &[74761]); map.insert(859, &[74760]); map.insert(860, &[23040]); map.insert(861, &[23041]); map.insert(862, &[82241]); map.insert(863, &[82240]); map.insert(864, &[864]); map.insert(865, &[865]); map.insert(866, &[71713]); map.insert(867, &[71712]); map.insert(868, &[200712]); map.insert(869, &[19584]); map.insert(870, &[200714]); map.insert(871, &[19586]); map.insert(872, &[200708]); map.insert(873, &[200709]); map.insert(874, &[200710]); map.insert(875, &[71720]); map.insert(876, &[200704]); map.insert(877, &[200705]); map.insert(878, &[200706]); map.insert(879, &[200707]); map.insert(880, &[172296]); map.insert(881, &[74786]); map.insert(882, &[74785]); map.insert(883, &[74784]); map.insert(884, &[28801]); map.insert(885, &[28800]); map.insert(886, &[33672]); map.insert(887, &[28802]); map.insert(888, &[172288]); map.insert(889, &[172289]); map.insert(890, &[172290]); map.insert(891, &[74792]); map.insert(892, &[200720]); map.insert(893, &[200721]); map.insert(894, &[33664]); map.insert(895, &[33665]); map.insert(896, &[896]); map.insert(897, &[897]); map.insert(898, &[898]); map.insert(899, &[899]); map.insert(900, &[139522]); map.insert(901, &[139523]); map.insert(902, &[139520]); map.insert(903, &[139521]); map.insert(904, &[904]); map.insert(905, &[10528]); map.insert(906, &[148544]); map.insert(907, &[148545]); map.insert(908, &[139530]); map.insert(909, &[10532]); map.insert(910, &[139528]); map.insert(911, &[139529]); map.insert(912, &[912]); map.insert(913, &[913]); map.insert(914, &[233472]); map.insert(915, &[233473]); map.insert(916, &[139538]); map.insert(917, &[28768]); map.insert(918, &[139536]); map.insert(919, &[139537]); map.insert(920, &[5409]); map.insert(921, &[5408]); map.insert(922, &[233480]); map.insert(923, &[5410]); map.insert(924, &[82307]); map.insert(925, &[82306]); map.insert(926, &[82305]); map.insert(927, &[82304]); map.insert(928, &[928]); map.insert(929, &[10504]); map.insert(930, &[930]); map.insert(931, &[10506]); map.insert(932, &[19521]); map.insert(933, &[19520]); map.insert(934, &[139552]); map.insert(935, &[139553]); map.insert(936, &[10497]); map.insert(937, &[10496]); map.insert(938, &[10499]); map.insert(939, &[10498]); map.insert(940, &[10501]); map.insert(941, &[10500]); map.insert(942, &[139560]); map.insert(943, &[10502]); map.insert(944, &[5385]); map.insert(945, &[5384]); map.insert(946, &[233504]); map.insert(947, &[5386]); map.insert(948, &[28737]); map.insert(949, &[28736]); map.insert(950, &[33608]); map.insert(951, &[28738]); map.insert(952, &[5377]); map.insert(953, &[5376]); map.insert(954, &[5379]); map.insert(955, &[5378]); map.insert(956, &[5381]); map.insert(957, &[5380]); map.insert(958, &[33600]); map.insert(959, &[33601]); map.insert(960, &[960]); map.insert(961, &[961]); map.insert(962, &[148488]); map.insert(963, &[71808]); map.insert(964, &[19489]); map.insert(965, &[19488]); map.insert(966, &[139584]); map.insert(967, &[139585]); map.insert(968, &[148482]); map.insert(969, &[148483]); map.insert(970, &[148480]); map.insert(971, &[148481]); map.insert(972, &[148486]); map.insert(973, &[19496]); map.insert(974, &[148484]); map.insert(975, &[148485]); map.insert(976, &[976]); map.insert(977, &[74882]); map.insert(978, &[74881]); map.insert(979, &[74880]); map.insert(980, &[28705]); map.insert(981, &[28704]); map.insert(982, &[33576]); map.insert(983, &[28706]); map.insert(984, &[148498]); map.insert(985, &[5472]); map.insert(986, &[148496]); map.insert(987, &[148497]); map.insert(988, &[33570]); map.insert(989, &[28712]); map.insert(990, &[33568]); map.insert(991, &[33569]); map.insert(992, &[19461]); map.insert(993, &[19460]); map.insert(994, &[148520]); map.insert(995, &[19462]); map.insert(996, &[19457]); map.insert(997, &[19456]); map.insert(998, &[19459]); map.insert(999, &[19458]); map.insert(1000, &[10561]); map.insert(1001, &[10560]); map.insert(1002, &[148512]); map.insert(1003, &[148513]); map.insert(1004, &[200832]); map.insert(1005, &[19464]); map.insert(1006, &[33552]); map.insert(1007, &[33553]); map.insert(1008, &[28677]); map.insert(1009, &[28676]); map.insert(1010, &[33548]); map.insert(1011, &[28678]); map.insert(1012, &[28673]); map.insert(1013, &[28672]); map.insert(1014, &[33544]); map.insert(1015, &[28674]); map.insert(1016, &[5441]); map.insert(1017, &[5440]); map.insert(1018, &[33540]); map.insert(1019, &[33541]); map.insert(1020, &[33538]); map.insert(1021, &[28680]); map.insert(1022, &[33536]); map.insert(1023, &[33537]); map.insert(1024, &[1024]); map.insert(1025, &[1025]); map.insert(1026, &[1026]); map.insert(1027, &[1027]); map.insert(1028, &[1028]); map.insert(1029, &[1029]); map.insert(1030, &[1030]); map.insert(1031, &[1031]); map.insert(1032, &[1032]); map.insert(1033, &[1033]); map.insert(1034, &[1034]); map.insert(1035, &[1035]); map.insert(1036, &[1036]); map.insert(1037, &[1037]); map.insert(1038, &[1038]); map.insert(1039, &[134176]); map.insert(1040, &[1040]); map.insert(1041, &[1041]); map.insert(1042, &[1042]); map.insert(1043, &[1043]); map.insert(1044, &[1044]); map.insert(1045, &[1045]); map.insert(1046, &[1046]); map.insert(1047, &[1047]); map.insert(1048, &[1048]); map.insert(1049, &[1049]); map.insert(1050, &[1050]); map.insert(1051, &[1051]); map.insert(1052, &[1052]); map.insert(1053, &[1053]); map.insert(1054, &[143393]); map.insert(1055, &[143392]); map.insert(1056, &[1056]); map.insert(1057, &[1057]); map.insert(1058, &[1058]); map.insert(1059, &[1059]); map.insert(1060, &[1060]); map.insert(1061, &[1061]); map.insert(1062, &[1062]); map.insert(1063, &[134152]); map.insert(1064, &[1064]); map.insert(1065, &[1065]); map.insert(1066, &[1066]); map.insert(1067, &[134148]); map.insert(1068, &[1068]); map.insert(1069, &[134146]); map.insert(1070, &[134145]); map.insert(1071, &[134144]); map.insert(1072, &[1072]); map.insert(1073, &[1073]); map.insert(1074, &[1074]); map.insert(1075, &[1075]); map.insert(1076, &[1076]); map.insert(1077, &[1077]); map.insert(1078, &[143369]); map.insert(1079, &[143368]); map.insert(1080, &[4737]); map.insert(1081, &[4736]); map.insert(1082, &[4739]); map.insert(1083, &[4738]); map.insert(1084, &[143363]); map.insert(1085, &[143362]); map.insert(1086, &[143361]); map.insert(1087, &[143360]); map.insert(1088, &[1088]); map.insert(1089, &[1089]); map.insert(1090, &[1090]); map.insert(1091, &[1091]); map.insert(1092, &[1092]); map.insert(1093, &[1093]); map.insert(1094, &[37377]); map.insert(1095, &[37376]); map.insert(1096, &[1096]); map.insert(1097, &[1097]); map.insert(1098, &[1098]); map.insert(1099, &[1099]); map.insert(1100, &[24832]); map.insert(1101, &[24833]); map.insert(1102, &[24834]); map.insert(1103, &[37384]); map.insert(1104, &[1104]); map.insert(1105, &[1105]); map.insert(1106, &[1106]); map.insert(1107, &[74496]); map.insert(1108, &[1108]); map.insert(1109, &[196992]); map.insert(1110, &[37393]); map.insert(1111, &[37392]); map.insert(1112, &[1112]); map.insert(1113, &[1113]); map.insert(1114, &[1114]); map.insert(1115, &[74504]); map.insert(1116, &[24848]); map.insert(1117, &[24849]); map.insert(1118, &[33952]); map.insert(1119, &[33953]); map.insert(1120, &[1120]); map.insert(1121, &[1121]); map.insert(1122, &[1122]); map.insert(1123, &[1123]); map.insert(1124, &[1124]); map.insert(1125, &[1125]); map.insert(1126, &[37409]); map.insert(1127, &[37408]); map.insert(1128, &[1128]); map.insert(1129, &[1129]); map.insert(1130, &[1130]); map.insert(1131, &[134212]); map.insert(1132, &[24864]); map.insert(1133, &[24865]); map.insert(1134, &[33936]); map.insert(1135, &[134208]); map.insert(1136, &[1136]); map.insert(1137, &[1137]); map.insert(1138, &[1138]); map.insert(1139, &[74528]); map.insert(1140, &[33930]); map.insert(1141, &[197024]); map.insert(1142, &[33928]); map.insert(1143, &[33929]); map.insert(1144, &[4801]); map.insert(1145, &[4800]); map.insert(1146, &[33924]); map.insert(1147, &[33925]); map.insert(1148, &[33922]); map.insert(1149, &[33923]); map.insert(1150, &[33920]); map.insert(1151, &[33921]); map.insert(1152, &[1152]); map.insert(1153, &[1153]); map.insert(1154, &[1154]); map.insert(1155, &[1155]); map.insert(1156, &[1156]); map.insert(1157, &[1157]); map.insert(1158, &[1158]); map.insert(1159, &[1159]); map.insert(1160, &[1160]); map.insert(1161, &[1161]); map.insert(1162, &[1162]); map.insert(1163, &[1163]); map.insert(1164, &[1164]); map.insert(1165, &[1165]); map.insert(1166, &[1166]); map.insert(1167, &[134304]); map.insert(1168, &[1168]); map.insert(1169, &[1169]); map.insert(1170, &[1170]); map.insert(1171, &[1171]); map.insert(1172, &[1172]); map.insert(1173, &[196928]); map.insert(1174, &[137728]); map.insert(1175, &[137729]); map.insert(1176, &[4641]); map.insert(1177, &[4640]); map.insert(1178, &[4643]); map.insert(1179, &[4642]); map.insert(1180, &[4645]); map.insert(1181, &[4644]); map.insert(1182, &[33888]); map.insert(1183, &[33889]); map.insert(1184, &[1184]); map.insert(1185, &[1185]); map.insert(1186, &[1186]); map.insert(1187, &[1187]); map.insert(1188, &[86018]); map.insert(1189, &[86019]); map.insert(1190, &[86016]); map.insert(1191, &[86017]); map.insert(1192, &[4625]); map.insert(1193, &[4624]); map.insert(1194, &[4627]); map.insert(1195, &[4626]); map.insert(1196, &[4629]); map.insert(1197, &[4628]); map.insert(1198, &[86024]); map.insert(1199, &[134272]); map.insert(1200, &[4617]); map.insert(1201, &[4616]); map.insert(1202, &[57600]); map.insert(1203, &[4618]); map.insert(1204, &[4621]); map.insert(1205, &[4620]); map.insert(1206, &[33864]); map.insert(1207, &[33865]); map.insert(1208, &[4609]); map.insert(1209, &[4608]); map.insert(1210, &[4611]); map.insert(1211, &[4610]); map.insert(1212, &[4613]); map.insert(1213, &[4612]); map.insert(1214, &[33856]); map.insert(1215, &[33857]); map.insert(1216, &[1216]); map.insert(1217, &[1217]); map.insert(1218, &[1218]); map.insert(1219, &[1219]); map.insert(1220, &[1220]); map.insert(1221, &[196880]); map.insert(1222, &[37505]); map.insert(1223, &[37504]); map.insert(1224, &[1224]); map.insert(1225, &[1225]); map.insert(1226, &[148224]); map.insert(1227, &[148225]); map.insert(1228, &[24960]); map.insert(1229, &[24961]); map.insert(1230, &[33840]); map.insert(1231, &[33841]); map.insert(1232, &[1232]); map.insert(1233, &[196868]); map.insert(1234, &[1234]); map.insert(1235, &[196870]); map.insert(1236, &[196865]); map.insert(1237, &[196864]); map.insert(1238, &[33832]); map.insert(1239, &[196866]); map.insert(1240, &[4705]); map.insert(1241, &[4704]); map.insert(1242, &[33828]); map.insert(1243, &[33829]); map.insert(1244, &[33826]); map.insert(1245, &[196872]); map.insert(1246, &[33824]); map.insert(1247, &[33825]); map.insert(1248, &[1248]); map.insert(1249, &[1249]); map.insert(1250, &[1250]); map.insert(1251, &[1251]); map.insert(1252, &[19201]); map.insert(1253, &[19200]); map.insert(1254, &[33816]); map.insert(1255, &[33817]); map.insert(1256, &[4689]); map.insert(1257, &[4688]); map.insert(1258, &[33812]); map.insert(1259, &[33813]); map.insert(1260, &[33810]); map.insert(1261, &[33811]); map.insert(1262, &[33808]); map.insert(1263, &[33809]); map.insert(1264, &[4681]); map.insert(1265, &[4680]); map.insert(1266, &[33804]); map.insert(1267, &[33805]); map.insert(1268, &[33802]); map.insert(1269, &[196896]); map.insert(1270, &[33800]); map.insert(1271, &[33801]); map.insert(1272, &[4673]); map.insert(1273, &[4672]); map.insert(1274, &[33796]); map.insert(1275, &[33797]); map.insert(1276, &[33794]); map.insert(1277, &[33795]); map.insert(1278, &[33792]); map.insert(1279, &[33793]); map.insert(1280, &[1280]); map.insert(1281, &[1281]); map.insert(1282, &[1282]); map.insert(1283, &[1283]); map.insert(1284, &[1284]); map.insert(1285, &[1285]); map.insert(1286, &[1286]); map.insert(1287, &[1287]); map.insert(1288, &[1288]); map.insert(1289, &[1289]); map.insert(1290, &[1290]); map.insert(1291, &[229408]); map.insert(1292, &[24640]); map.insert(1293, &[24641]); map.insert(1294, &[24642]); map.insert(1295, &[24643]); map.insert(1296, &[1296]); map.insert(1297, &[1297]); map.insert(1298, &[1298]); map.insert(1299, &[74304]); map.insert(1300, &[1300]); map.insert(1301, &[196800]); map.insert(1302, &[1302]); map.insert(1303, &[196802]); map.insert(1304, &[1304]); map.insert(1305, &[1305]); map.insert(1306, &[51713]); map.insert(1307, &[51712]); map.insert(1308, &[24656]); map.insert(1309, &[24657]); map.insert(1310, &[24658]); map.insert(1311, &[51716]); map.insert(1312, &[1312]); map.insert(1313, &[1313]); map.insert(1314, &[1314]); map.insert(1315, &[229384]); map.insert(1316, &[1316]); map.insert(1317, &[1317]); map.insert(1318, &[1318]); map.insert(1319, &[229388]); map.insert(1320, &[1320]); map.insert(1321, &[229378]); map.insert(1322, &[229377]); map.insert(1323, &[229376]); map.insert(1324, &[24672]); map.insert(1325, &[24673]); map.insert(1326, &[229381]); map.insert(1327, &[229380]); map.insert(1328, &[1328]); map.insert(1329, &[1329]); map.insert(1330, &[57472]); map.insert(1331, &[57473]); map.insert(1332, &[180736]); map.insert(1333, &[180737]); map.insert(1334, &[180738]); map.insert(1335, &[143624]); map.insert(1336, &[4993]); map.insert(1337, &[4992]); map.insert(1338, &[67776]); map.insert(1339, &[229392]); map.insert(1340, &[180744]); map.insert(1341, &[143618]); map.insert(1342, &[143617]); map.insert(1343, &[143616]); map.insert(1344, &[1344]); map.insert(1345, &[1345]); map.insert(1346, &[1346]); map.insert(1347, &[74256]); map.insert(1348, &[24584]); map.insert(1349, &[24585]); map.insert(1350, &[24586]); map.insert(1351, &[37632]); map.insert(1352, &[24580]); map.insert(1353, &[24581]); map.insert(1354, &[24582]); map.insert(1355, &[24583]); map.insert(1356, &[24576]); map.insert(1357, &[24577]); map.insert(1358, &[24578]); map.insert(1359, &[24579]); map.insert(1360, &[1360]); map.insert(1361, &[74242]); map.insert(1362, &[74241]); map.insert(1363, &[74240]); map.insert(1364, &[196737]); map.insert(1365, &[196736]); map.insert(1366, &[196739]); map.insert(1367, &[196738]); map.insert(1368, &[24596]); map.insert(1369, &[24597]); map.insert(1370, &[67744]); map.insert(1371, &[74248]); map.insert(1372, &[24592]); map.insert(1373, &[24593]); map.insert(1374, &[24594]); map.insert(1375, &[24595]); map.insert(1376, &[1376]); map.insert(1377, &[1377]); map.insert(1378, &[157697]); map.insert(1379, &[157696]); map.insert(1380, &[24616]); map.insert(1381, &[19072]); map.insert(1382, &[24618]); map.insert(1383, &[19074]); map.insert(1384, &[24612]); map.insert(1385, &[24613]); map.insert(1386, &[67728]); map.insert(1387, &[229440]); map.insert(1388, &[24608]); map.insert(1389, &[24609]); map.insert(1390, &[24610]); map.insert(1391, &[24611]); map.insert(1392, &[67722]); map.insert(1393, &[74274]); map.insert(1394, &[67720]); map.insert(1395, &[74272]); map.insert(1396, &[196769]); map.insert(1397, &[196768]); map.insert(1398, &[67724]); map.insert(1399, &[196770]); map.insert(1400, &[67714]); map.insert(1401, &[67715]); map.insert(1402, &[67712]); map.insert(1403, &[67713]); map.insert(1404, &[24624]); map.insert(1405, &[24625]); map.insert(1406, &[67716]); map.insert(1407, &[67717]); map.insert(1408, &[1408]); map.insert(1409, &[1409]); map.insert(1410, &[1410]); map.insert(1411, &[1411]); map.insert(1412, &[1412]); map.insert(1413, &[196688]); map.insert(1414, &[1414]); map.insert(1415, &[196690]); map.insert(1416, &[1416]); map.insert(1417, &[1417]); map.insert(1418, &[148032]); map.insert(1419, &[148033]); map.insert(1420, &[24768]); map.insert(1421, &[24769]); map.insert(1422, &[24770]); map.insert(1423, &[24771]); map.insert(1424, &[1424]); map.insert(1425, &[196676]); map.insert(1426, &[57376]); map.insert(1427, &[57377]); map.insert(1428, &[196673]); map.insert(1429, &[196672]); map.insert(1430, &[196675]); map.insert(1431, &[196674]); map.insert(1432, &[4897]); map.insert(1433, &[4896]); map.insert(1434, &[67680]); map.insert(1435, &[67681]); map.insert(1436, &[196681]); map.insert(1437, &[196680]); map.insert(1438, &[67684]); map.insert(1439, &[196682]); map.insert(1440, &[1440]); map.insert(1441, &[1441]); map.insert(1442, &[57360]); map.insert(1443, &[57361]); map.insert(1444, &[19009]); map.insert(1445, &[19008]); map.insert(1446, &[86272]); map.insert(1447, &[86273]); map.insert(1448, &[4881]); map.insert(1449, &[4880]); map.insert(1450, &[67664]); map.insert(1451, &[229504]); map.insert(1452, &[107009]); map.insert(1453, &[107008]); map.insert(1454, &[67668]); map.insert(1455, &[107010]); map.insert(1456, &[57346]); map.insert(1457, &[4872]); map.insert(1458, &[57344]); map.insert(1459, &[57345]); map.insert(1460, &[196705]); map.insert(1461, &[196704]); map.insert(1462, &[57348]); map.insert(1463, &[57349]); map.insert(1464, &[4865]); map.insert(1465, &[4864]); map.insert(1466, &[67648]); map.insert(1467, &[67649]); map.insert(1468, &[4869]); map.insert(1469, &[4868]); map.insert(1470, &[67652]); map.insert(1471, &[67653]); map.insert(1472, &[1472]); map.insert(1473, &[196628]); map.insert(1474, &[147976]); map.insert(1475, &[147977]); map.insert(1476, &[196625]); map.insert(1477, &[196624]); map.insert(1478, &[196627]); map.insert(1479, &[196626]); map.insert(1480, &[147970]); map.insert(1481, &[147971]); map.insert(1482, &[147968]); map.insert(1483, &[147969]); map.insert(1484, &[24704]); map.insert(1485, &[24705]); map.insert(1486, &[24706]); map.insert(1487, &[24707]); map.insert(1488, &[196613]); map.insert(1489, &[196612]); map.insert(1490, &[67624]); map.insert(1491, &[196614]); map.insert(1492, &[196609]); map.insert(1493, &[196608]); map.insert(1494, &[196611]); map.insert(1495, &[196610]); map.insert(1496, &[67618]); map.insert(1497, &[196620]); map.insert(1498, &[67616]); map.insert(1499, &[67617]); map.insert(1500, &[196617]); map.insert(1501, &[196616]); map.insert(1502, &[67620]); map.insert(1503, &[196618]); map.insert(1504, &[18949]); map.insert(1505, &[18948]); map.insert(1506, &[67608]); map.insert(1507, &[67609]); map.insert(1508, &[18945]); map.insert(1509, &[18944]); map.insert(1510, &[18947]); map.insert(1511, &[18946]); map.insert(1512, &[67602]); map.insert(1513, &[67603]); map.insert(1514, &[67600]); map.insert(1515, &[67601]); map.insert(1516, &[24736]); map.insert(1517, &[18952]); map.insert(1518, &[67604]); map.insert(1519, &[67605]); map.insert(1520, &[67594]); map.insert(1521, &[196644]); map.insert(1522, &[67592]); map.insert(1523, &[67593]); map.insert(1524, &[196641]); map.insert(1525, &[196640]); map.insert(1526, &[67596]); map.insert(1527, &[196642]); map.insert(1528, &[67586]); map.insert(1529, &[67587]); map.insert(1530, &[67584]); map.insert(1531, &[67585]); map.insert(1532, &[67590]); map.insert(1533, &[196648]); map.insert(1534, &[67588]); map.insert(1535, &[67589]); map.insert(1536, &[1536]); map.insert(1537, &[1537]); map.insert(1538, &[1538]); map.insert(1539, &[1539]); map.insert(1540, &[1540]); map.insert(1541, &[1541]); map.insert(1542, &[36929]); map.insert(1543, &[36928]); map.insert(1544, &[1544]); map.insert(1545, &[1545]); map.insert(1546, &[1546]); map.insert(1547, &[1547]); map.insert(1548, &[1548]); map.insert(1549, &[1549]); map.insert(1550, &[36937]); map.insert(1551, &[36936]); map.insert(1552, &[1552]); map.insert(1553, &[1553]); map.insert(1554, &[1554]); map.insert(1555, &[74048]); map.insert(1556, &[1556]); map.insert(1557, &[1557]); map.insert(1558, &[137344]); map.insert(1559, &[82952]); map.insert(1560, &[4257]); map.insert(1561, &[4256]); map.insert(1562, &[4259]); map.insert(1563, &[4258]); map.insert(1564, &[82947]); map.insert(1565, &[82946]); map.insert(1566, &[82945]); map.insert(1567, &[82944]); map.insert(1568, &[1568]); map.insert(1569, &[1569]); map.insert(1570, &[1570]); map.insert(1571, &[1571]); map.insert(1572, &[1572]); map.insert(1573, &[1573]); map.insert(1574, &[36961]); map.insert(1575, &[36960]); map.insert(1576, &[4241]); map.insert(1577, &[4240]); map.insert(1578, &[4243]); map.insert(1579, &[4242]); map.insert(1580, &[4245]); map.insert(1581, &[4244]); map.insert(1582, &[134657]); map.insert(1583, &[134656]); map.insert(1584, &[4233]); map.insert(1585, &[4232]); map.insert(1586, &[4235]); map.insert(1587, &[4234]); map.insert(1588, &[180480]); map.insert(1589, &[4236]); map.insert(1590, &[180482]); map.insert(1591, &[4238]); map.insert(1592, &[4225]); map.insert(1593, &[4224]); map.insert(1594, &[4227]); map.insert(1595, &[4226]); map.insert(1596, &[4229]); map.insert(1597, &[4228]); map.insert(1598, &[4231]); map.insert(1599, &[4230]); map.insert(1600, &[1600]); map.insert(1601, &[1601]); map.insert(1602, &[36869]); map.insert(1603, &[36868]); map.insert(1604, &[36867]); map.insert(1605, &[36866]); map.insert(1606, &[36865]); map.insert(1607, &[36864]); map.insert(1608, &[1608]); map.insert(1609, &[1609]); map.insert(1610, &[147840]); map.insert(1611, &[36876]); map.insert(1612, &[25344]); map.insert(1613, &[36874]); map.insert(1614, &[36873]); map.insert(1615, &[36872]); map.insert(1616, &[1616]); map.insert(1617, &[73986]); map.insert(1618, &[73985]); map.insert(1619, &[73984]); map.insert(1620, &[36883]); map.insert(1621, &[36882]); map.insert(1622, &[36881]); map.insert(1623, &[36880]); map.insert(1624, &[4321]); map.insert(1625, &[4320]); map.insert(1626, &[73993]); map.insert(1627, &[73992]); map.insert(1628, &[25360]); map.insert(1629, &[36890]); map.insert(1630, &[36889]); map.insert(1631, &[36888]); map.insert(1632, &[1632]); map.insert(1633, &[1633]); map.insert(1634, &[36901]); map.insert(1635, &[36900]); map.insert(1636, &[36899]); map.insert(1637, &[36898]); map.insert(1638, &[36897]); map.insert(1639, &[36896]); map.insert(1640, &[169984]); map.insert(1641, &[4304]); map.insert(1642, &[169986]); map.insert(1643, &[4306]); map.insert(1644, &[169988]); map.insert(1645, &[36906]); map.insert(1646, &[36905]); map.insert(1647, &[36904]); map.insert(1648, &[4297]); map.insert(1649, &[4296]); map.insert(1650, &[74017]); map.insert(1651, &[74016]); map.insert(1652, &[180544]); map.insert(1653, &[36914]); map.insert(1654, &[36913]); map.insert(1655, &[36912]); map.insert(1656, &[4289]); map.insert(1657, &[4288]); map.insert(1658, &[4291]); map.insert(1659, &[4290]); map.insert(1660, &[4293]); map.insert(1661, &[4292]); map.insert(1662, &[34432]); map.insert(1663, &[34433]); map.insert(1664, &[1664]); map.insert(1665, &[1665]); map.insert(1666, &[1666]); map.insert(1667, &[1667]); map.insert(1668, &[140290]); map.insert(1669, &[140291]); map.insert(1670, &[140288]); map.insert(1671, &[140289]); map.insert(1672, &[4145]); map.insert(1673, &[4144]); map.insert(1674, &[147776]); map.insert(1675, &[4146]); map.insert(1676, &[4149]); map.insert(1677, &[4148]); map.insert(1678, &[140296]); map.insert(1679, &[140297]); map.insert(1680, &[4137]); map.insert(1681, &[4136]); map.insert(1682, &[137220]); map.insert(1683, &[4138]); map.insert(1684, &[137218]); map.insert(1685, &[4140]); map.insert(1686, &[137216]); map.insert(1687, &[137217]); map.insert(1688, &[4129]); map.insert(1689, &[4128]); map.insert(1690, &[4131]); map.insert(1691, &[4130]); map.insert(1692, &[4133]); map.insert(1693, &[4132]); map.insert(1694, &[137224]); map.insert(1695, &[4134]); map.insert(1696, &[4121]); map.insert(1697, &[4120]); map.insert(1698, &[4123]); map.insert(1699, &[4122]); map.insert(1700, &[4125]); map.insert(1701, &[4124]); map.insert(1702, &[140320]); map.insert(1703, &[140321]); map.insert(1704, &[4113]); map.insert(1705, &[4112]); map.insert(1706, &[4115]); map.insert(1707, &[4114]); map.insert(1708, &[4117]); map.insert(1709, &[4116]); map.insert(1710, &[4119]); map.insert(1711, &[4118]); map.insert(1712, &[4105]); map.insert(1713, &[4104]); map.insert(1714, &[4107]); map.insert(1715, &[4106]); map.insert(1716, &[4109]); map.insert(1717, &[4108]); map.insert(1718, &[137248]); map.insert(1719, &[4110]); map.insert(1720, &[4097]); map.insert(1721, &[4096]); map.insert(1722, &[4099]); map.insert(1723, &[4098]); map.insert(1724, &[4101]); map.insert(1725, &[4100]); map.insert(1726, &[4103]); map.insert(1727, &[4102]); map.insert(1728, &[1728]); map.insert(1729, &[1729]); map.insert(1730, &[147720]); map.insert(1731, &[36996]); map.insert(1732, &[36995]); map.insert(1733, &[36994]); map.insert(1734, &[36993]); map.insert(1735, &[36992]); map.insert(1736, &[147714]); map.insert(1737, &[4208]); map.insert(1738, &[147712]); map.insert(1739, &[147713]); map.insert(1740, &[147718]); map.insert(1741, &[37002]); map.insert(1742, &[147716]); map.insert(1743, &[37000]); map.insert(1744, &[4201]); map.insert(1745, &[4200]); map.insert(1746, &[74113]); map.insert(1747, &[74112]); map.insert(1748, &[197377]); map.insert(1749, &[197376]); map.insert(1750, &[137280]); map.insert(1751, &[37008]); map.insert(1752, &[4193]); map.insert(1753, &[4192]); map.insert(1754, &[147728]); map.insert(1755, &[4194]); map.insert(1756, &[4197]); map.insert(1757, &[4196]); map.insert(1758, &[34336]); map.insert(1759, &[34337]); map.insert(1760, &[18693]); map.insert(1761, &[18692]); map.insert(1762, &[147752]); map.insert(1763, &[18694]); map.insert(1764, &[18689]); map.insert(1765, &[18688]); map.insert(1766, &[18691]); map.insert(1767, &[18690]); map.insert(1768, &[4177]); map.insert(1769, &[4176]); map.insert(1770, &[147744]); map.insert(1771, &[4178]); map.insert(1772, &[4181]); map.insert(1773, &[4180]); map.insert(1774, &[34320]); map.insert(1775, &[34321]); map.insert(1776, &[4169]); map.insert(1777, &[4168]); map.insert(1778, &[4171]); map.insert(1779, &[4170]); map.insert(1780, &[4173]); map.insert(1781, &[4172]); map.insert(1782, &[34312]); map.insert(1783, &[34313]); map.insert(1784, &[4161]); map.insert(1785, &[4160]); map.insert(1786, &[4163]); map.insert(1787, &[4162]); map.insert(1788, &[4165]); map.insert(1789, &[4164]); map.insert(1790, &[34304]); map.insert(1791, &[34305]); map.insert(1792, &[1792]); map.insert(1793, &[1793]); map.insert(1794, &[1794]); map.insert(1795, &[73808]); map.insert(1796, &[1796]); map.insert(1797, &[1797]); map.insert(1798, &[37185]); map.insert(1799, &[37184]); map.insert(1800, &[1800]); map.insert(1801, &[1801]); map.insert(1802, &[147648]); map.insert(1803, &[51216]); map.insert(1804, &[25152]); map.insert(1805, &[25153]); map.insert(1806, &[25154]); map.insert(1807, &[51220]); map.insert(1808, &[1808]); map.insert(1809, &[73794]); map.insert(1810, &[73793]); map.insert(1811, &[73792]); map.insert(1812, &[180256]); map.insert(1813, &[180257]); map.insert(1814, &[73797]); map.insert(1815, &[73796]); map.insert(1816, &[51203]); map.insert(1817, &[51202]); map.insert(1818, &[51201]); map.insert(1819, &[51200]); map.insert(1820, &[180264]); map.insert(1821, &[51206]); map.insert(1822, &[51205]); map.insert(1823, &[51204]); map.insert(1824, &[1824]); map.insert(1825, &[1825]); map.insert(1826, &[1826]); map.insert(1827, &[229896]); map.insert(1828, &[180240]); map.insert(1829, &[18624]); map.insert(1830, &[180242]); map.insert(1831, &[18626]); map.insert(1832, &[4497]); map.insert(1833, &[4496]); map.insert(1834, &[229889]); map.insert(1835, &[229888]); map.insert(1836, &[106625]); map.insert(1837, &[106624]); map.insert(1838, &[106627]); map.insert(1839, &[106626]); map.insert(1840, &[180228]); map.insert(1841, &[4488]); map.insert(1842, &[73825]); map.insert(1843, &[73824]); map.insert(1844, &[180224]); map.insert(1845, &[180225]); map.insert(1846, &[180226]); map.insert(1847, &[180227]); map.insert(1848, &[4481]); map.insert(1849, &[4480]); map.insert(1850, &[4483]); map.insert(1851, &[4482]); map.insert(1852, &[180232]); map.insert(1853, &[4484]); map.insert(1854, &[180234]); map.insert(1855, &[4486]); map.insert(1856, &[1856]); map.insert(1857, &[73746]); map.insert(1858, &[73745]); map.insert(1859, &[73744]); map.insert(1860, &[25096]); map.insert(1861, &[37122]); map.insert(1862, &[37121]); map.insert(1863, &[37120]); map.insert(1864, &[147586]); map.insert(1865, &[147587]); map.insert(1866, &[147584]); map.insert(1867, &[147585]); map.insert(1868, &[25088]); map.insert(1869, &[25089]); map.insert(1870, &[25090]); map.insert(1871, &[37128]); map.insert(1872, &[73731]); map.insert(1873, &[73730]); map.insert(1874, &[73729]); map.insert(1875, &[73728]); map.insert(1876, &[73735]); map.insert(1877, &[73734]); map.insert(1878, &[73733]); map.insert(1879, &[73732]); map.insert(1880, &[73739]); map.insert(1881, &[73738]); map.insert(1882, &[73737]); map.insert(1883, &[73736]); map.insert(1884, &[25104]); map.insert(1885, &[25105]); map.insert(1886, &[73741]); map.insert(1887, &[73740]); map.insert(1888, &[18565]); map.insert(1889, &[18564]); map.insert(1890, &[73777]); map.insert(1891, &[73776]); map.insert(1892, &[18561]); map.insert(1893, &[18560]); map.insert(1894, &[18563]); map.insert(1895, &[18562]); map.insert(1896, &[147618]); map.insert(1897, &[18572]); map.insert(1898, &[147616]); map.insert(1899, &[147617]); map.insert(1900, &[25120]); map.insert(1901, &[18568]); map.insert(1902, &[25122]); map.insert(1903, &[18570]); map.insert(1904, &[73763]); map.insert(1905, &[73762]); map.insert(1906, &[73761]); map.insert(1907, &[73760]); map.insert(1908, &[180288]); map.insert(1909, &[18576]); map.insert(1910, &[73765]); map.insert(1911, &[73764]); map.insert(1912, &[4545]); map.insert(1913, &[4544]); map.insert(1914, &[68224]); map.insert(1915, &[73768]); map.insert(1916, &[206848]); map.insert(1917, &[206849]); map.insert(1918, &[206850]); map.insert(1919, &[73772]); map.insert(1920, &[1920]); map.insert(1921, &[1921]); map.insert(1922, &[147528]); map.insert(1923, &[147529]); map.insert(1924, &[18529]); map.insert(1925, &[18528]); map.insert(1926, &[140544]); map.insert(1927, &[140545]); map.insert(1928, &[147522]); map.insert(1929, &[4400]); map.insert(1930, &[147520]); map.insert(1931, &[147521]); map.insert(1932, &[106529]); map.insert(1933, &[106528]); map.insert(1934, &[147524]); map.insert(1935, &[147525]); map.insert(1936, &[4393]); map.insert(1937, &[4392]); map.insert(1938, &[73921]); map.insert(1939, &[73920]); map.insert(1940, &[197185]); map.insert(1941, &[197184]); map.insert(1942, &[137472]); map.insert(1943, &[137473]); map.insert(1944, &[4385]); map.insert(1945, &[4384]); map.insert(1946, &[147536]); map.insert(1947, &[4386]); map.insert(1948, &[4389]); map.insert(1949, &[4388]); map.insert(1950, &[147540]); map.insert(1951, &[4390]); map.insert(1952, &[18501]); map.insert(1953, &[18500]); map.insert(1954, &[147560]); map.insert(1955, &[18502]); map.insert(1956, &[18497]); map.insert(1957, &[18496]); map.insert(1958, &[18499]); map.insert(1959, &[18498]); map.insert(1960, &[4369]); map.insert(1961, &[4368]); map.insert(1962, &[147552]); map.insert(1963, &[4370]); map.insert(1964, &[106497]); map.insert(1965, &[106496]); map.insert(1966, &[106499]); map.insert(1967, &[106498]); map.insert(1968, &[4361]); map.insert(1969, &[4360]); map.insert(1970, &[57856]); map.insert(1971, &[4362]); map.insert(1972, &[180352]); map.insert(1973, &[4364]); map.insert(1974, &[180354]); map.insert(1975, &[4366]); map.insert(1976, &[4353]); map.insert(1977, &[4352]); map.insert(1978, &[4355]); map.insert(1979, &[4354]); map.insert(1980, &[4357]); map.insert(1981, &[4356]); map.insert(1982, &[4359]); map.insert(1983, &[4358]); map.insert(1984, &[147466]); map.insert(1985, &[18468]); map.insert(1986, &[147464]); map.insert(1987, &[147465]); map.insert(1988, &[18465]); map.insert(1989, &[18464]); map.insert(1990, &[147468]); map.insert(1991, &[18466]); map.insert(1992, &[147458]); map.insert(1993, &[147459]); map.insert(1994, &[147456]); map.insert(1995, &[147457]); map.insert(1996, &[147462]); map.insert(1997, &[18472]); map.insert(1998, &[147460]); map.insert(1999, &[147461]); map.insert(2000, &[73859]); map.insert(2001, &[73858]); map.insert(2002, &[73857]); map.insert(2003, &[73856]); map.insert(2004, &[197121]); map.insert(2005, &[197120]); map.insert(2006, &[197123]); map.insert(2007, &[197122]); map.insert(2008, &[147474]); map.insert(2009, &[4448]); map.insert(2010, &[147472]); map.insert(2011, &[147473]); map.insert(2012, &[197129]); map.insert(2013, &[197128]); map.insert(2014, &[147476]); map.insert(2015, &[147477]); map.insert(2016, &[18437]); map.insert(2017, &[18436]); map.insert(2018, &[147496]); map.insert(2019, &[18438]); map.insert(2020, &[18433]); map.insert(2021, &[18432]); map.insert(2022, &[18435]); map.insert(2023, &[18434]); map.insert(2024, &[147490]); map.insert(2025, &[18444]); map.insert(2026, &[147488]); map.insert(2027, &[147489]); map.insert(2028, &[18441]); map.insert(2029, &[18440]); map.insert(2030, &[147492]); map.insert(2031, &[18442]); map.insert(2032, &[18453]); map.insert(2033, &[18452]); map.insert(2034, &[68104]); map.insert(2035, &[73888]); map.insert(2036, &[18449]); map.insert(2037, &[18448]); map.insert(2038, &[18451]); map.insert(2039, &[18450]); map.insert(2040, &[4417]); map.insert(2041, &[4416]); map.insert(2042, &[68096]); map.insert(2043, &[68097]); map.insert(2044, &[4421]); map.insert(2045, &[4420]); map.insert(2046, &[68100]); map.insert(2047, &[68101]); map.insert(2048, &[2048]); map.insert(2049, &[2049]); map.insert(2050, &[2050]); map.insert(2051, &[2051]); map.insert(2052, &[2052]); map.insert(2053, &[2053]); map.insert(2054, &[2054]); map.insert(2055, &[131112]); map.insert(2056, &[2056]); map.insert(2057, &[2057]); map.insert(2058, &[2058]); map.insert(2059, &[131108]); map.insert(2060, &[2060]); map.insert(2061, &[131106]); map.insert(2062, &[131105]); map.insert(2063, &[131104]); map.insert(2064, &[2064]); map.insert(2065, &[2065]); map.insert(2066, &[2066]); map.insert(2067, &[2067]); map.insert(2068, &[2068]); map.insert(2069, &[2069]); map.insert(2070, &[2070]); map.insert(2071, &[131128]); map.insert(2072, &[2072]); map.insert(2073, &[2073]); map.insert(2074, &[2074]); map.insert(2075, &[131124]); map.insert(2076, &[2076]); map.insert(2077, &[131122]); map.insert(2078, &[131121]); map.insert(2079, &[131120]); map.insert(2080, &[2080]); map.insert(2081, &[2081]); map.insert(2082, &[2082]); map.insert(2083, &[131084]); map.insert(2084, &[2084]); map.insert(2085, &[131082]); map.insert(2086, &[131081]); map.insert(2087, &[131080]); map.insert(2088, &[2088]); map.insert(2089, &[131078]); map.insert(2090, &[131077]); map.insert(2091, &[131076]); map.insert(2092, &[131075]); map.insert(2093, &[131074]); map.insert(2094, &[131073]); map.insert(2095, &[131072]); map.insert(2096, &[2096]); map.insert(2097, &[2097]); map.insert(2098, &[2098]); map.insert(2099, &[131100]); map.insert(2100, &[2100]); map.insert(2101, &[131098]); map.insert(2102, &[131097]); map.insert(2103, &[131096]); map.insert(2104, &[2104]); map.insert(2105, &[131094]); map.insert(2106, &[131093]); map.insert(2107, &[131092]); map.insert(2108, &[131091]); map.insert(2109, &[131090]); map.insert(2110, &[131089]); map.insert(2111, &[131088]); map.insert(2112, &[2112]); map.insert(2113, &[2113]); map.insert(2114, &[2114]); map.insert(2115, &[2115]); map.insert(2116, &[2116]); map.insert(2117, &[2117]); map.insert(2118, &[2118]); map.insert(2119, &[131176]); map.insert(2120, &[2120]); map.insert(2121, &[2121]); map.insert(2122, &[2122]); map.insert(2123, &[131172]); map.insert(2124, &[2124]); map.insert(2125, &[131170]); map.insert(2126, &[131169]); map.insert(2127, &[131168]); map.insert(2128, &[2128]); map.insert(2129, &[163968]); map.insert(2130, &[2130]); map.insert(2131, &[163970]); map.insert(2132, &[2132]); map.insert(2133, &[41474]); map.insert(2134, &[41473]); map.insert(2135, &[41472]); map.insert(2136, &[20740]); map.insert(2137, &[163976]); map.insert(2138, &[20742]); map.insert(2139, &[163978]); map.insert(2140, &[20736]); map.insert(2141, &[20737]); map.insert(2142, &[20738]); map.insert(2143, &[41480]); map.insert(2144, &[2144]); map.insert(2145, &[2145]); map.insert(2146, &[2146]); map.insert(2147, &[131148]); map.insert(2148, &[2148]); map.insert(2149, &[131146]); map.insert(2150, &[131145]); map.insert(2151, &[131144]); map.insert(2152, &[2152]); map.insert(2153, &[131142]); map.insert(2154, &[131141]); map.insert(2155, &[131140]); map.insert(2156, &[131139]); map.insert(2157, &[131138]); map.insert(2158, &[131137]); map.insert(2159, &[131136]); map.insert(2160, &[2160]); map.insert(2161, &[164000]); map.insert(2162, &[2162]); map.insert(2163, &[164002]); map.insert(2164, &[34954]); map.insert(2165, &[131162]); map.insert(2166, &[34952]); map.insert(2167, &[131160]); map.insert(2168, &[34950]); map.insert(2169, &[131158]); map.insert(2170, &[34948]); map.insert(2171, &[131156]); map.insert(2172, &[34946]); map.insert(2173, &[131154]); map.insert(2174, &[34944]); map.insert(2175, &[131152]); map.insert(2176, &[2176]); map.insert(2177, &[2177]); map.insert(2178, &[2178]); map.insert(2179, &[2179]); map.insert(2180, &[2180]); map.insert(2181, &[2181]); map.insert(2182, &[2182]); map.insert(2183, &[131240]); map.insert(2184, &[2184]); map.insert(2185, &[8736]); map.insert(2186, &[2186]); map.insert(2187, &[8738]); map.insert(2188, &[2188]); map.insert(2189, &[131234]); map.insert(2190, &[131233]); map.insert(2191, &[131232]); map.insert(2192, &[2192]); map.insert(2193, &[163904]); map.insert(2194, &[2194]); map.insert(2195, &[163906]); map.insert(2196, &[2196]); map.insert(2197, &[163908]); map.insert(2198, &[90144]); map.insert(2199, &[90145]); map.insert(2200, &[2200]); map.insert(2201, &[163912]); map.insert(2202, &[2202]); map.insert(2203, &[163914]); map.insert(2204, &[34914]); map.insert(2205, &[131250]); map.insert(2206, &[34912]); map.insert(2207, &[131248]); map.insert(2208, &[2208]); map.insert(2209, &[8712]); map.insert(2210, &[2210]); map.insert(2211, &[8714]); map.insert(2212, &[2212]); map.insert(2213, &[131210]); map.insert(2214, &[131209]); map.insert(2215, &[131208]); map.insert(2216, &[8705]); map.insert(2217, &[8704]); map.insert(2218, &[8707]); map.insert(2219, &[8706]); map.insert(2220, &[131203]); map.insert(2221, &[131202]); map.insert(2222, &[131201]); map.insert(2223, &[131200]); map.insert(2224, &[2224]); map.insert(2225, &[8728]); map.insert(2226, &[90116]); map.insert(2227, &[90117]); map.insert(2228, &[90114]); map.insert(2229, &[90115]); map.insert(2230, &[90112]); map.insert(2231, &[90113]); map.insert(2232, &[8721]); map.insert(2233, &[8720]); map.insert(2234, &[34884]); map.insert(2235, &[8722]); map.insert(2236, &[34882]); map.insert(2237, &[131218]); map.insert(2238, &[34880]); map.insert(2239, &[131216]); map.insert(2240, &[2240]); map.insert(2241, &[163856]); map.insert(2242, &[2242]); map.insert(2243, &[163858]); map.insert(2244, &[2244]); map.insert(2245, &[163860]); map.insert(2246, &[2246]); map.insert(2247, &[163862]); map.insert(2248, &[2248]); map.insert(2249, &[163864]); map.insert(2250, &[2250]); map.insert(2251, &[163866]); map.insert(2252, &[34866]); map.insert(2253, &[131298]); map.insert(2254, &[34864]); map.insert(2255, &[131296]); map.insert(2256, &[163841]); map.insert(2257, &[163840]); map.insert(2258, &[163843]); map.insert(2259, &[163842]); map.insert(2260, &[163845]); map.insert(2261, &[163844]); map.insert(2262, &[34856]); map.insert(2263, &[163846]); map.insert(2264, &[163849]); map.insert(2265, &[163848]); map.insert(2266, &[34852]); map.insert(2267, &[163850]); map.insert(2268, &[34850]); map.insert(2269, &[163852]); map.insert(2270, &[34848]); map.insert(2271, &[34849]); map.insert(2272, &[2272]); map.insert(2273, &[8776]); map.insert(2274, &[2274]); map.insert(2275, &[8778]); map.insert(2276, &[18177]); map.insert(2277, &[18176]); map.insert(2278, &[34840]); map.insert(2279, &[131272]); map.insert(2280, &[8769]); map.insert(2281, &[8768]); map.insert(2282, &[34836]); map.insert(2283, &[8770]); map.insert(2284, &[34834]); map.insert(2285, &[131266]); map.insert(2286, &[34832]); map.insert(2287, &[131264]); map.insert(2288, &[163873]); map.insert(2289, &[163872]); map.insert(2290, &[34828]); map.insert(2291, &[163874]); map.insert(2292, &[34826]); map.insert(2293, &[163876]); map.insert(2294, &[34824]); map.insert(2295, &[34825]); map.insert(2296, &[34822]); map.insert(2297, &[163880]); map.insert(2298, &[34820]); map.insert(2299, &[34821]); map.insert(2300, &[34818]); map.insert(2301, &[34819]); map.insert(2302, &[34816]); map.insert(2303, &[34817]); map.insert(2304, &[2304]); map.insert(2305, &[2305]); map.insert(2306, &[2306]); map.insert(2307, &[2307]); map.insert(2308, &[2308]); map.insert(2309, &[2309]); map.insert(2310, &[2310]); map.insert(2311, &[131368]); map.insert(2312, &[2312]); map.insert(2313, &[2313]); map.insert(2314, &[2314]); map.insert(2315, &[131364]); map.insert(2316, &[2316]); map.insert(2317, &[131362]); map.insert(2318, &[131361]); map.insert(2319, &[131360]); map.insert(2320, &[2320]); map.insert(2321, &[2321]); map.insert(2322, &[2322]); map.insert(2323, &[2323]); map.insert(2324, &[2324]); map.insert(2325, &[2325]); map.insert(2326, &[2326]); map.insert(2327, &[131384]); map.insert(2328, &[20548]); map.insert(2329, &[20549]); map.insert(2330, &[50689]); map.insert(2331, &[50688]); map.insert(2332, &[20544]); map.insert(2333, &[20545]); map.insert(2334, &[20546]); map.insert(2335, &[131376]); map.insert(2336, &[2336]); map.insert(2337, &[2337]); map.insert(2338, &[2338]); map.insert(2339, &[131340]); map.insert(2340, &[2340]); map.insert(2341, &[131338]); map.insert(2342, &[131337]); map.insert(2343, &[131336]); map.insert(2344, &[2344]); map.insert(2345, &[131334]); map.insert(2346, &[131333]); map.insert(2347, &[131332]); map.insert(2348, &[131331]); map.insert(2349, &[131330]); map.insert(2350, &[131329]); map.insert(2351, &[131328]); map.insert(2352, &[2352]); map.insert(2353, &[2353]); map.insert(2354, &[2354]); map.insert(2355, &[131356]); map.insert(2356, &[2356]); map.insert(2357, &[131354]); map.insert(2358, &[131353]); map.insert(2359, &[131352]); map.insert(2360, &[66754]); map.insert(2361, &[131350]); map.insert(2362, &[66752]); map.insert(2363, &[131348]); map.insert(2364, &[20576]); map.insert(2365, &[131346]); map.insert(2366, &[131345]); map.insert(2367, &[131344]); map.insert(2368, &[2368]); map.insert(2369, &[2369]); map.insert(2370, &[70145]); map.insert(2371, &[70144]); map.insert(2372, &[2372]); map.insert(2373, &[2373]); map.insert(2374, &[70149]); map.insert(2375, &[70148]); map.insert(2376, &[20500]); map.insert(2377, &[20501]); map.insert(2378, &[70153]); map.insert(2379, &[70152]); map.insert(2380, &[20496]); map.insert(2381, &[20497]); map.insert(2382, &[20498]); map.insert(2383, &[131424]); map.insert(2384, &[20492]); map.insert(2385, &[164224]); map.insert(2386, &[70161]); map.insert(2387, &[70160]); map.insert(2388, &[20488]); map.insert(2389, &[20489]); map.insert(2390, &[20490]); map.insert(2391, &[41728]); map.insert(2392, &[20484]); map.insert(2393, &[20485]); map.insert(2394, &[20486]); map.insert(2395, &[20487]); map.insert(2396, &[20480]); map.insert(2397, &[20481]); map.insert(2398, &[20482]); map.insert(2399, &[20483]); map.insert(2400, &[2400]); map.insert(2401, &[2401]); map.insert(2402, &[70177]); map.insert(2403, &[70176]); map.insert(2404, &[18049]); map.insert(2405, &[18048]); map.insert(2406, &[131401]); map.insert(2407, &[131400]); map.insert(2408, &[66706]); map.insert(2409, &[131398]); map.insert(2410, &[66704]); map.insert(2411, &[131396]); map.insert(2412, &[20528]); map.insert(2413, &[131394]); map.insert(2414, &[131393]); map.insert(2415, &[131392]); map.insert(2416, &[66698]); map.insert(2417, &[153602]); map.insert(2418, &[66696]); map.insert(2419, &[153600]); map.insert(2420, &[20520]); map.insert(2421, &[20521]); map.insert(2422, &[20522]); map.insert(2423, &[153604]); map.insert(2424, &[66690]); map.insert(2425, &[66691]); map.insert(2426, &[66688]); map.insert(2427, &[66689]); map.insert(2428, &[20512]); map.insert(2429, &[20513]); map.insert(2430, &[20514]); map.insert(2431, &[131408]); map.insert(2432, &[2432]); map.insert(2433, &[2433]); map.insert(2434, &[2434]); map.insert(2435, &[2435]); map.insert(2436, &[2436]); map.insert(2437, &[2437]); map.insert(2438, &[2438]); map.insert(2439, &[131496]); map.insert(2440, &[2440]); map.insert(2441, &[8992]); map.insert(2442, &[2442]); map.insert(2443, &[8994]); map.insert(2444, &[2444]); map.insert(2445, &[131490]); map.insert(2446, &[131489]); map.insert(2447, &[131488]); map.insert(2448, &[2448]); map.insert(2449, &[164160]); map.insert(2450, &[2450]); map.insert(2451, &[164162]); map.insert(2452, &[2452]); map.insert(2453, &[164164]); map.insert(2454, &[90400]); map.insert(2455, &[90401]); map.insert(2456, &[66658]); map.insert(2457, &[164168]); map.insert(2458, &[66656]); map.insert(2459, &[66657]); map.insert(2460, &[20672]); map.insert(2461, &[20673]); map.insert(2462, &[20674]); map.insert(2463, &[131504]); map.insert(2464, &[53250]); map.insert(2465, &[8968]); map.insert(2466, &[53248]); map.insert(2467, &[53249]); map.insert(2468, &[17985]); map.insert(2469, &[17984]); map.insert(2470, &[53252]); map.insert(2471, &[131464]); map.insert(2472, &[8961]); map.insert(2473, &[8960]); map.insert(2474, &[53256]); map.insert(2475, &[8962]); map.insert(2476, &[131459]); map.insert(2477, &[131458]); map.insert(2478, &[131457]); map.insert(2479, &[131456]); map.insert(2480, &[66634]); map.insert(2481, &[8984]); map.insert(2482, &[66632]); map.insert(2483, &[66633]); map.insert(2484, &[90370]); map.insert(2485, &[102920]); map.insert(2486, &[90368]); map.insert(2487, &[90369]); map.insert(2488, &[66626]); map.insert(2489, &[8976]); map.insert(2490, &[66624]); map.insert(2491, &[66625]); map.insert(2492, &[102913]); map.insert(2493, &[102912]); map.insert(2494, &[66628]); map.insert(2495, &[131472]); map.insert(2496, &[2496]); map.insert(2497, &[164112]); map.insert(2498, &[70273]); map.insert(2499, &[70272]); map.insert(2500, &[17953]); map.insert(2501, &[17952]); map.insert(2502, &[17955]); map.insert(2503, &[17954]); map.insert(2504, &[66610]); map.insert(2505, &[164120]); map.insert(2506, &[66608]); map.insert(2507, &[66609]); map.insert(2508, &[20624]); map.insert(2509, &[20625]); map.insert(2510, &[20626]); map.insert(2511, &[131552]); map.insert(2512, &[164097]); map.insert(2513, &[164096]); map.insert(2514, &[66600]); map.insert(2515, &[164098]); map.insert(2516, &[20616]); map.insert(2517, &[164100]); map.insert(2518, &[20618]); map.insert(2519, &[164102]); map.insert(2520, &[66594]); map.insert(2521, &[164104]); map.insert(2522, &[66592]); map.insert(2523, &[66593]); map.insert(2524, &[20608]); map.insert(2525, &[20609]); map.insert(2526, &[20610]); map.insert(2527, &[20611]); map.insert(2528, &[17925]); map.insert(2529, &[17924]); map.insert(2530, &[66584]); map.insert(2531, &[66585]); map.insert(2532, &[17921]); map.insert(2533, &[17920]); map.insert(2534, &[17923]); map.insert(2535, &[17922]); map.insert(2536, &[66578]); map.insert(2537, &[9024]); map.insert(2538, &[66576]); map.insert(2539, &[66577]); map.insert(2540, &[17929]); map.insert(2541, &[17928]); map.insert(2542, &[66580]); map.insert(2543, &[131520]); map.insert(2544, &[66570]); map.insert(2545, &[164128]); map.insert(2546, &[66568]); map.insert(2547, &[66569]); map.insert(2548, &[17937]); map.insert(2549, &[17936]); map.insert(2550, &[66572]); map.insert(2551, &[66573]); map.insert(2552, &[66562]); map.insert(2553, &[66563]); map.insert(2554, &[66560]); map.insert(2555, &[66561]); map.insert(2556, &[66566]); map.insert(2557, &[66567]); map.insert(2558, &[66564]); map.insert(2559, &[66565]); map.insert(2560, &[2560]); map.insert(2561, &[2561]); map.insert(2562, &[2562]); map.insert(2563, &[2563]); map.insert(2564, &[2564]); map.insert(2565, &[2565]); map.insert(2566, &[2566]); map.insert(2567, &[131624]); map.insert(2568, &[2568]); map.insert(2569, &[8352]); map.insert(2570, &[2570]); map.insert(2571, &[8354]); map.insert(2572, &[2572]); map.insert(2573, &[131618]); map.insert(2574, &[131617]); map.insert(2575, &[131616]); map.insert(2576, &[2576]); map.insert(2577, &[2577]); map.insert(2578, &[2578]); map.insert(2579, &[41028]); map.insert(2580, &[2580]); map.insert(2581, &[41026]); map.insert(2582, &[41025]); map.insert(2583, &[41024]); map.insert(2584, &[2584]); map.insert(2585, &[8368]); map.insert(2586, &[83973]); map.insert(2587, &[83972]); map.insert(2588, &[83971]); map.insert(2589, &[83970]); map.insert(2590, &[83969]); map.insert(2591, &[83968]); map.insert(2592, &[2592]); map.insert(2593, &[8328]); map.insert(2594, &[2594]); map.insert(2595, &[8330]); map.insert(2596, &[2596]); map.insert(2597, &[131594]); map.insert(2598, &[131593]); map.insert(2599, &[131592]); map.insert(2600, &[8321]); map.insert(2601, &[8320]); map.insert(2602, &[8323]); map.insert(2603, &[8322]); map.insert(2604, &[131587]); map.insert(2605, &[131586]); map.insert(2606, &[131585]); map.insert(2607, &[131584]); map.insert(2608, &[212992]); map.insert(2609, &[212993]); map.insert(2610, &[212994]); map.insert(2611, &[212995]); map.insert(2612, &[212996]); map.insert(2613, &[212997]); map.insert(2614, &[131609]); map.insert(2615, &[131608]); map.insert(2616, &[8337]); map.insert(2617, &[8336]); map.insert(2618, &[8339]); map.insert(2619, &[8338]); map.insert(2620, &[131603]); map.insert(2621, &[131602]); map.insert(2622, &[131601]); map.insert(2623, &[131600]); map.insert(2624, &[2624]); map.insert(2625, &[2625]); map.insert(2626, &[69889]); map.insert(2627, &[69888]); map.insert(2628, &[2628]); map.insert(2629, &[40978]); map.insert(2630, &[40977]); map.insert(2631, &[40976]); map.insert(2632, &[2632]); map.insert(2633, &[8416]); map.insert(2634, &[69897]); map.insert(2635, &[69896]); map.insert(2636, &[2636]); map.insert(2637, &[40986]); map.insert(2638, &[40985]); map.insert(2639, &[40984]); map.insert(2640, &[2640]); map.insert(2641, &[40966]); map.insert(2642, &[40965]); map.insert(2643, &[40964]); map.insert(2644, &[40963]); map.insert(2645, &[40962]); map.insert(2646, &[40961]); map.insert(2647, &[40960]); map.insert(2648, &[21252]); map.insert(2649, &[40974]); map.insert(2650, &[40973]); map.insert(2651, &[40972]); map.insert(2652, &[21248]); map.insert(2653, &[40970]); map.insert(2654, &[40969]); map.insert(2655, &[40968]); map.insert(2656, &[2656]); map.insert(2657, &[8392]); map.insert(2658, &[69921]); map.insert(2659, &[69920]); map.insert(2660, &[17793]); map.insert(2661, &[17792]); map.insert(2662, &[131657]); map.insert(2663, &[131656]); map.insert(2664, &[8385]); map.insert(2665, &[8384]); map.insert(2666, &[8387]); map.insert(2667, &[8386]); map.insert(2668, &[131651]); map.insert(2669, &[131650]); map.insert(2670, &[131649]); map.insert(2671, &[131648]); map.insert(2672, &[213056]); map.insert(2673, &[213057]); map.insert(2674, &[40997]); map.insert(2675, &[40996]); map.insert(2676, &[40995]); map.insert(2677, &[40994]); map.insert(2678, &[40993]); map.insert(2679, &[40992]); map.insert(2680, &[174080]); map.insert(2681, &[8400]); map.insert(2682, &[174082]); map.insert(2683, &[8402]); map.insert(2684, &[35458]); map.insert(2685, &[41002]); map.insert(2686, &[35456]); map.insert(2687, &[41000]); map.insert(2688, &[2688]); map.insert(2689, &[8232]); map.insert(2690, &[2690]); map.insert(2691, &[8234]); map.insert(2692, &[141314]); map.insert(2693, &[8236]); map.insert(2694, &[141312]); map.insert(2695, &[141313]); map.insert(2696, &[8225]); map.insert(2697, &[8224]); map.insert(2698, &[8227]); map.insert(2699, &[8226]); map.insert(2700, &[8229]); map.insert(2701, &[8228]); map.insert(2702, &[141320]); map.insert(2703, &[8230]); map.insert(2704, &[2704]); map.insert(2705, &[8248]); map.insert(2706, &[136196]); map.insert(2707, &[136197]); map.insert(2708, &[136194]); map.insert(2709, &[136195]); map.insert(2710, &[136192]); map.insert(2711, &[136193]); map.insert(2712, &[8241]); map.insert(2713, &[8240]); map.insert(2714, &[8243]); map.insert(2715, &[8242]); map.insert(2716, &[8245]); map.insert(2717, &[8244]); map.insert(2718, &[136200]); map.insert(2719, &[84096]); map.insert(2720, &[8201]); map.insert(2721, &[8200]); map.insert(2722, &[8203]); map.insert(2723, &[8202]); map.insert(2724, &[8205]); map.insert(2725, &[8204]); map.insert(2726, &[141344]); map.insert(2727, &[8206]); map.insert(2728, &[8193]); map.insert(2729, &[8192]); map.insert(2730, &[8195]); map.insert(2731, &[8194]); map.insert(2732, &[8197]); map.insert(2733, &[8196]); map.insert(2734, &[8199]); map.insert(2735, &[8198]); map.insert(2736, &[8217]); map.insert(2737, &[8216]); map.insert(2738, &[8219]); map.insert(2739, &[8218]); map.insert(2740, &[8221]); map.insert(2741, &[8220]); map.insert(2742, &[136224]); map.insert(2743, &[136225]); map.insert(2744, &[8209]); map.insert(2745, &[8208]); map.insert(2746, &[8211]); map.insert(2747, &[8210]); map.insert(2748, &[8213]); map.insert(2749, &[8212]); map.insert(2750, &[35392]); map.insert(2751, &[8214]); map.insert(2752, &[2752]); map.insert(2753, &[8296]); map.insert(2754, &[70017]); map.insert(2755, &[70016]); map.insert(2756, &[17697]); map.insert(2757, &[17696]); map.insert(2758, &[141376]); map.insert(2759, &[41104]); map.insert(2760, &[8289]); map.insert(2761, &[8288]); map.insert(2762, &[8291]); map.insert(2763, &[8290]); map.insert(2764, &[8293]); map.insert(2765, &[8292]); map.insert(2766, &[245760]); map.insert(2767, &[245761]); map.insert(2768, &[164353]); map.insert(2769, &[164352]); map.insert(2770, &[164355]); map.insert(2771, &[164354]); map.insert(2772, &[41091]); map.insert(2773, &[41090]); map.insert(2774, &[41089]); map.insert(2775, &[41088]); map.insert(2776, &[164361]); map.insert(2777, &[164360]); map.insert(2778, &[35364]); map.insert(2779, &[164362]); map.insert(2780, &[35362]); map.insert(2781, &[41098]); map.insert(2782, &[35360]); map.insert(2783, &[41096]); map.insert(2784, &[8265]); map.insert(2785, &[8264]); map.insert(2786, &[8267]); map.insert(2787, &[8266]); map.insert(2788, &[17665]); map.insert(2789, &[17664]); map.insert(2790, &[17667]); map.insert(2791, &[17666]); map.insert(2792, &[8257]); map.insert(2793, &[8256]); map.insert(2794, &[8259]); map.insert(2795, &[8258]); map.insert(2796, &[8261]); map.insert(2797, &[8260]); map.insert(2798, &[35344]); map.insert(2799, &[8262]); map.insert(2800, &[8281]); map.insert(2801, &[8280]); map.insert(2802, &[35340]); map.insert(2803, &[8282]); map.insert(2804, &[17681]); map.insert(2805, &[17680]); map.insert(2806, &[35336]); map.insert(2807, &[41120]); map.insert(2808, &[8273]); map.insert(2809, &[8272]); map.insert(2810, &[35332]); map.insert(2811, &[8274]); map.insert(2812, &[35330]); map.insert(2813, &[8276]); map.insert(2814, &[35328]); map.insert(2815, &[35329]); map.insert(2816, &[2816]); map.insert(2817, &[2817]); map.insert(2818, &[69697]); map.insert(2819, &[69696]); map.insert(2820, &[2820]); map.insert(2821, &[2821]); map.insert(2822, &[69701]); map.insert(2823, &[69700]); map.insert(2824, &[2824]); map.insert(2825, &[8608]); map.insert(2826, &[69705]); map.insert(2827, &[69704]); map.insert(2828, &[2828]); map.insert(2829, &[131874]); map.insert(2830, &[131873]); map.insert(2831, &[131872]); map.insert(2832, &[2832]); map.insert(2833, &[2833]); map.insert(2834, &[50185]); map.insert(2835, &[50184]); map.insert(2836, &[2836]); map.insert(2837, &[41282]); map.insert(2838, &[41281]); map.insert(2839, &[41280]); map.insert(2840, &[50179]); map.insert(2841, &[50178]); map.insert(2842, &[50177]); map.insert(2843, &[50176]); map.insert(2844, &[21056]); map.insert(2845, &[21057]); map.insert(2846, &[50181]); map.insert(2847, &[50180]); map.insert(2848, &[2848]); map.insert(2849, &[8584]); map.insert(2850, &[69729]); map.insert(2851, &[69728]); map.insert(2852, &[17601]); map.insert(2853, &[17600]); map.insert(2854, &[131849]); map.insert(2855, &[131848]); map.insert(2856, &[8577]); map.insert(2857, &[8576]); map.insert(2858, &[8579]); map.insert(2859, &[8578]); map.insert(2860, &[131843]); map.insert(2861, &[131842]); map.insert(2862, &[131841]); map.insert(2863, &[131840]); map.insert(2864, &[213248]); map.insert(2865, &[213249]); map.insert(2866, &[213250]); map.insert(2867, &[50216]); map.insert(2868, &[213252]); map.insert(2869, &[102536]); map.insert(2870, &[131865]); map.insert(2871, &[131864]); map.insert(2872, &[8593]); map.insert(2873, &[8592]); map.insert(2874, &[50209]); map.insert(2875, &[50208]); map.insert(2876, &[102529]); map.insert(2877, &[102528]); map.insert(2878, &[131857]); map.insert(2879, &[131856]); map.insert(2880, &[69635]); map.insert(2881, &[69634]); map.insert(2882, &[69633]); map.insert(2883, &[69632]); map.insert(2884, &[69639]); map.insert(2885, &[69638]); map.insert(2886, &[69637]); map.insert(2887, &[69636]); map.insert(2888, &[69643]); map.insert(2889, &[69642]); map.insert(2890, &[69641]); map.insert(2891, &[69640]); map.insert(2892, &[21008]); map.insert(2893, &[21009]); map.insert(2894, &[69645]); map.insert(2895, &[69644]); map.insert(2896, &[69651]); map.insert(2897, &[69650]); map.insert(2898, &[69649]); map.insert(2899, &[69648]); map.insert(2900, &[21000]); map.insert(2901, &[41218]); map.insert(2902, &[41217]); map.insert(2903, &[41216]); map.insert(2904, &[20996]); map.insert(2905, &[20997]); map.insert(2906, &[69657]); map.insert(2907, &[69656]); map.insert(2908, &[20992]); map.insert(2909, &[20993]); map.insert(2910, &[20994]); map.insert(2911, &[41224]); map.insert(2912, &[69667]); map.insert(2913, &[69666]); map.insert(2914, &[69665]); map.insert(2915, &[69664]); map.insert(2916, &[17537]); map.insert(2917, &[17536]); map.insert(2918, &[17539]); map.insert(2919, &[17538]); map.insert(2920, &[8641]); map.insert(2921, &[8640]); map.insert(2922, &[69673]); map.insert(2923, &[69672]); map.insert(2924, &[202752]); map.insert(2925, &[17544]); map.insert(2926, &[131905]); map.insert(2927, &[131904]); map.insert(2928, &[213312]); map.insert(2929, &[69682]); map.insert(2930, &[69681]); map.insert(2931, &[69680]); map.insert(2932, &[17553]); map.insert(2933, &[17552]); map.insert(2934, &[41249]); map.insert(2935, &[41248]); map.insert(2936, &[67202]); map.insert(2937, &[8656]); map.insert(2938, &[67200]); map.insert(2939, &[67201]); map.insert(2940, &[21024]); map.insert(2941, &[21025]); map.insert(2942, &[21026]); map.insert(2943, &[41256]); map.insert(2944, &[2944]); map.insert(2945, &[8488]); map.insert(2946, &[69825]); map.insert(2947, &[69824]); map.insert(2948, &[17505]); map.insert(2949, &[17504]); map.insert(2950, &[141568]); map.insert(2951, &[141569]); map.insert(2952, &[8481]); map.insert(2953, &[8480]); map.insert(2954, &[8483]); map.insert(2955, &[8482]); map.insert(2956, &[8485]); map.insert(2957, &[8484]); map.insert(2958, &[141576]); map.insert(2959, &[8486]); map.insert(2960, &[2960]); map.insert(2961, &[8504]); map.insert(2962, &[136452]); map.insert(2963, &[50312]); map.insert(2964, &[136450]); map.insert(2965, &[102440]); map.insert(2966, &[136448]); map.insert(2967, &[136449]); map.insert(2968, &[8497]); map.insert(2969, &[8496]); map.insert(2970, &[50305]); map.insert(2971, &[50304]); map.insert(2972, &[102433]); map.insert(2973, &[102432]); map.insert(2974, &[136456]); map.insert(2975, &[102434]); map.insert(2976, &[8457]); map.insert(2977, &[8456]); map.insert(2978, &[53760]); map.insert(2979, &[8458]); map.insert(2980, &[17473]); map.insert(2981, &[17472]); map.insert(2982, &[17475]); map.insert(2983, &[17474]); map.insert(2984, &[8449]); map.insert(2985, &[8448]); map.insert(2986, &[8451]); map.insert(2987, &[8450]); map.insert(2988, &[8453]); map.insert(2989, &[8452]); map.insert(2990, &[8455]); map.insert(2991, &[8454]); map.insert(2992, &[8473]); map.insert(2993, &[8472]); map.insert(2994, &[67144]); map.insert(2995, &[8474]); map.insert(2996, &[102409]); map.insert(2997, &[102408]); map.insert(2998, &[136480]); map.insert(2999, &[102410]); map.insert(3000, &[8465]); map.insert(3001, &[8464]); map.insert(3002, &[67136]); map.insert(3003, &[8466]); map.insert(3004, &[102401]); map.insert(3005, &[102400]); map.insert(3006, &[102403]); map.insert(3007, &[102402]); map.insert(3008, &[69763]); map.insert(3009, &[69762]); map.insert(3010, &[69761]); map.insert(3011, &[69760]); map.insert(3012, &[17441]); map.insert(3013, &[17440]); map.insert(3014, &[17443]); map.insert(3015, &[17442]); map.insert(3016, &[8545]); map.insert(3017, &[8544]); map.insert(3018, &[150528]); map.insert(3019, &[69768]); map.insert(3020, &[17449]); map.insert(3021, &[17448]); map.insert(3022, &[150532]); map.insert(3023, &[17450]); map.insert(3024, &[164609]); map.insert(3025, &[164608]); map.insert(3026, &[69777]); map.insert(3027, &[69776]); map.insert(3028, &[17457]); map.insert(3029, &[17456]); map.insert(3030, &[41345]); map.insert(3031, &[41344]); map.insert(3032, &[67106]); map.insert(3033, &[164616]); map.insert(3034, &[67104]); map.insert(3035, &[67105]); map.insert(3036, &[21120]); map.insert(3037, &[21121]); map.insert(3038, &[21122]); map.insert(3039, &[41352]); map.insert(3040, &[17413]); map.insert(3041, &[17412]); map.insert(3042, &[17415]); map.insert(3043, &[17414]); map.insert(3044, &[17409]); map.insert(3045, &[17408]); map.insert(3046, &[17411]); map.insert(3047, &[17410]); map.insert(3048, &[8513]); map.insert(3049, &[8512]); map.insert(3050, &[67088]); map.insert(3051, &[8514]); map.insert(3052, &[17417]); map.insert(3053, &[17416]); map.insert(3054, &[17419]); map.insert(3055, &[17418]); map.insert(3056, &[17429]); map.insert(3057, &[17428]); map.insert(3058, &[67080]); map.insert(3059, &[67081]); map.insert(3060, &[17425]); map.insert(3061, &[17424]); map.insert(3062, &[17427]); map.insert(3063, &[17426]); map.insert(3064, &[67074]); map.insert(3065, &[8528]); map.insert(3066, &[67072]); map.insert(3067, &[67073]); map.insert(3068, &[17433]); map.insert(3069, &[17432]); map.insert(3070, &[67076]); map.insert(3071, &[67077]); map.insert(3072, &[3072]); map.insert(3073, &[3073]); map.insert(3074, &[3074]); map.insert(3075, &[3075]); map.insert(3076, &[3076]); map.insert(3077, &[3077]); map.insert(3078, &[3078]); map.insert(3079, &[132136]); map.insert(3080, &[3080]); map.insert(3081, &[3081]); map.insert(3082, &[3082]); map.insert(3083, &[132132]); map.insert(3084, &[3084]); map.insert(3085, &[132130]); map.insert(3086, &[132129]); map.insert(3087, &[132128]); map.insert(3088, &[12288]); map.insert(3089, &[12289]); map.insert(3090, &[12290]); map.insert(3091, &[12291]); map.insert(3092, &[12292]); map.insert(3093, &[12293]); map.insert(3094, &[12294]); map.insert(3095, &[12295]); map.insert(3096, &[12296]); map.insert(3097, &[12297]); map.insert(3098, &[12298]); map.insert(3099, &[49920]); map.insert(3100, &[12300]); map.insert(3101, &[12301]); map.insert(3102, &[132145]); map.insert(3103, &[132144]); map.insert(3104, &[3104]); map.insert(3105, &[3105]); map.insert(3106, &[3106]); map.insert(3107, &[132108]); map.insert(3108, &[3108]); map.insert(3109, &[132106]); map.insert(3110, &[132105]); map.insert(3111, &[132104]); map.insert(3112, &[3112]); map.insert(3113, &[132102]); map.insert(3114, &[132101]); map.insert(3115, &[132100]); map.insert(3116, &[132099]); map.insert(3117, &[132098]); map.insert(3118, &[132097]); map.insert(3119, &[132096]); map.insert(3120, &[12320]); map.insert(3121, &[12321]); map.insert(3122, &[12322]); map.insert(3123, &[12323]); map.insert(3124, &[12324]); map.insert(3125, &[12325]); map.insert(3126, &[132121]); map.insert(3127, &[132120]); map.insert(3128, &[12328]); map.insert(3129, &[6784]); map.insert(3130, &[65984]); map.insert(3131, &[132116]); map.insert(3132, &[132115]); map.insert(3133, &[132114]); map.insert(3134, &[132113]); map.insert(3135, &[132112]); map.insert(3136, &[3136]); map.insert(3137, &[3137]); map.insert(3138, &[3138]); map.insert(3139, &[3139]); map.insert(3140, &[3140]); map.insert(3141, &[3141]); map.insert(3142, &[39425]); map.insert(3143, &[39424]); map.insert(3144, &[3144]); map.insert(3145, &[3145]); map.insert(3146, &[3146]); map.insert(3147, &[132196]); map.insert(3148, &[26880]); map.insert(3149, &[26881]); map.insert(3150, &[132193]); map.insert(3151, &[132192]); map.insert(3152, &[12352]); map.insert(3153, &[12353]); map.insert(3154, &[12354]); map.insert(3155, &[12355]); map.insert(3156, &[12356]); map.insert(3157, &[12357]); map.insert(3158, &[42497]); map.insert(3159, &[42496]); map.insert(3160, &[12360]); map.insert(3161, &[12361]); map.insert(3162, &[65952]); map.insert(3163, &[65953]); map.insert(3164, &[21760]); map.insert(3165, &[21761]); map.insert(3166, &[21762]); map.insert(3167, &[42504]); map.insert(3168, &[3168]); map.insert(3169, &[3169]); map.insert(3170, &[155905]); map.insert(3171, &[155904]); map.insert(3172, &[17281]); map.insert(3173, &[17280]); map.insert(3174, &[132169]); map.insert(3175, &[132168]); map.insert(3176, &[168448]); map.insert(3177, &[168449]); map.insert(3178, &[65936]); map.insert(3179, &[132164]); map.insert(3180, &[132163]); map.insert(3181, &[132162]); map.insert(3182, &[132161]); map.insert(3183, &[132160]); map.insert(3184, &[12384]); map.insert(3185, &[12385]); map.insert(3186, &[65928]); map.insert(3187, &[65929]); map.insert(3188, &[12388]); map.insert(3189, &[17296]); map.insert(3190, &[65932]); map.insert(3191, &[132184]); map.insert(3192, &[65922]); map.insert(3193, &[65923]); map.insert(3194, &[65920]); map.insert(3195, &[65921]); map.insert(3196, &[65926]); map.insert(3197, &[132178]); map.insert(3198, &[65924]); map.insert(3199, &[132176]); map.insert(3200, &[3200]); map.insert(3201, &[3201]); map.insert(3202, &[3202]); map.insert(3203, &[3203]); map.insert(3204, &[3204]); map.insert(3205, &[3205]); map.insert(3206, &[135696]); map.insert(3207, &[135697]); map.insert(3208, &[3208]); map.insert(3209, &[9760]); map.insert(3210, &[3210]); map.insert(3211, &[9762]); map.insert(3212, &[3212]); map.insert(3213, &[132258]); map.insert(3214, &[132257]); map.insert(3215, &[132256]); map.insert(3216, &[12416]); map.insert(3217, &[12417]); map.insert(3218, &[12418]); map.insert(3219, &[12419]); map.insert(3220, &[135682]); map.insert(3221, &[135683]); map.insert(3222, &[135680]); map.insert(3223, &[135681]); map.insert(3224, &[12424]); map.insert(3225, &[6688]); map.insert(3226, &[65888]); map.insert(3227, &[65889]); map.insert(3228, &[135690]); map.insert(3229, &[6692]); map.insert(3230, &[135688]); map.insert(3231, &[135689]); map.insert(3232, &[3232]); map.insert(3233, &[9736]); map.insert(3234, &[3234]); map.insert(3235, &[9738]); map.insert(3236, &[17217]); map.insert(3237, &[17216]); map.insert(3238, &[88064]); map.insert(3239, &[132232]); map.insert(3240, &[9729]); map.insert(3241, &[9728]); map.insert(3242, &[65872]); map.insert(3243, &[9730]); map.insert(3244, &[132227]); map.insert(3245, &[132226]); map.insert(3246, &[132225]); map.insert(3247, &[132224]); map.insert(3248, &[12448]); map.insert(3249, &[6664]); map.insert(3250, &[65864]); map.insert(3251, &[65865]); map.insert(3252, &[135714]); map.insert(3253, &[6668]); map.insert(3254, &[135712]); map.insert(3255, &[135713]); map.insert(3256, &[6657]); map.insert(3257, &[6656]); map.insert(3258, &[65856]); map.insert(3259, &[65857]); map.insert(3260, &[6661]); map.insert(3261, &[6660]); map.insert(3262, &[65860]); map.insert(3263, &[132240]); map.insert(3264, &[3264]); map.insert(3265, &[164880]); map.insert(3266, &[3266]); map.insert(3267, &[164882]); map.insert(3268, &[17185]); map.insert(3269, &[17184]); map.insert(3270, &[45096]); map.insert(3271, &[17186]); map.insert(3272, &[65842]); map.insert(3273, &[164888]); map.insert(3274, &[65840]); map.insert(3275, &[65841]); map.insert(3276, &[45090]); map.insert(3277, &[17192]); map.insert(3278, &[45088]); map.insert(3279, &[45089]); map.insert(3280, &[164865]); map.insert(3281, &[164864]); map.insert(3282, &[65832]); map.insert(3283, &[164866]); map.insert(3284, &[164869]); map.insert(3285, &[164868]); map.insert(3286, &[135744]); map.insert(3287, &[135745]); map.insert(3288, &[65826]); map.insert(3289, &[164872]); map.insert(3290, &[65824]); map.insert(3291, &[65825]); map.insert(3292, &[65830]); map.insert(3293, &[164876]); map.insert(3294, &[65828]); map.insert(3295, &[65829]); map.insert(3296, &[17157]); map.insert(3297, &[17156]); map.insert(3298, &[65816]); map.insert(3299, &[65817]); map.insert(3300, &[17153]); map.insert(3301, &[17152]); map.insert(3302, &[45064]); map.insert(3303, &[17154]); map.insert(3304, &[65810]); map.insert(3305, &[9792]); map.insert(3306, &[65808]); map.insert(3307, &[65809]); map.insert(3308, &[45058]); map.insert(3309, &[17160]); map.insert(3310, &[45056]); map.insert(3311, &[45057]); map.insert(3312, &[65802]); map.insert(3313, &[164896]); map.insert(3314, &[65800]); map.insert(3315, &[65801]); map.insert(3316, &[17169]); map.insert(3317, &[17168]); map.insert(3318, &[65804]); map.insert(3319, &[65805]); map.insert(3320, &[65794]); map.insert(3321, &[65795]); map.insert(3322, &[65792]); map.insert(3323, &[65793]); map.insert(3324, &[65798]); map.insert(3325, &[65799]); map.insert(3326, &[65796]); map.insert(3327, &[65797]); map.insert(3328, &[98308]); map.insert(3329, &[98309]); map.insert(3330, &[98310]); map.insert(3331, &[98311]); map.insert(3332, &[98304]); map.insert(3333, &[98305]); map.insert(3334, &[98306]); map.insert(3335, &[98307]); map.insert(3336, &[98316]); map.insert(3337, &[98317]); map.insert(3338, &[49681]); map.insert(3339, &[49680]); map.insert(3340, &[98312]); map.insert(3341, &[98313]); map.insert(3342, &[98314]); map.insert(3343, &[132384]); map.insert(3344, &[12544]); map.insert(3345, &[12545]); map.insert(3346, &[12546]); map.insert(3347, &[49672]); map.insert(3348, &[98320]); map.insert(3349, &[98321]); map.insert(3350, &[98322]); map.insert(3351, &[98323]); map.insert(3352, &[12552]); map.insert(3353, &[49666]); map.insert(3354, &[49665]); map.insert(3355, &[49664]); map.insert(3356, &[98328]); map.insert(3357, &[98329]); map.insert(3358, &[49669]); map.insert(3359, &[49668]); map.insert(3360, &[98340]); map.insert(3361, &[98341]); map.insert(3362, &[155713]); map.insert(3363, &[155712]); map.insert(3364, &[98336]); map.insert(3365, &[98337]); map.insert(3366, &[98338]); map.insert(3367, &[132360]); map.insert(3368, &[65746]); map.insert(3369, &[132358]); map.insert(3370, &[65744]); map.insert(3371, &[132356]); map.insert(3372, &[98344]); map.insert(3373, &[132354]); map.insert(3374, &[132353]); map.insert(3375, &[132352]); map.insert(3376, &[12576]); map.insert(3377, &[12577]); map.insert(3378, &[65736]); map.insert(3379, &[65737]); map.insert(3380, &[98352]); map.insert(3381, &[98353]); map.insert(3382, &[98354]); map.insert(3383, &[132376]); map.insert(3384, &[65730]); map.insert(3385, &[65731]); map.insert(3386, &[65728]); map.insert(3387, &[65729]); map.insert(3388, &[65734]); map.insert(3389, &[132370]); map.insert(3390, &[65732]); map.insert(3391, &[132368]); map.insert(3392, &[98372]); map.insert(3393, &[98373]); map.insert(3394, &[155681]); map.insert(3395, &[155680]); map.insert(3396, &[98368]); map.insert(3397, &[98369]); map.insert(3398, &[98370]); map.insert(3399, &[98371]); map.insert(3400, &[26628]); map.insert(3401, &[26629]); map.insert(3402, &[65712]); map.insert(3403, &[65713]); map.insert(3404, &[26624]); map.insert(3405, &[26625]); map.insert(3406, &[26626]); map.insert(3407, &[26627]); map.insert(3408, &[12608]); map.insert(3409, &[12609]); map.insert(3410, &[65704]); map.insert(3411, &[76288]); map.insert(3412, &[21512]); map.insert(3413, &[198784]); map.insert(3414, &[21514]); map.insert(3415, &[198786]); map.insert(3416, &[65698]); map.insert(3417, &[65699]); map.insert(3418, &[65696]); map.insert(3419, &[65697]); map.insert(3420, &[21504]); map.insert(3421, &[21505]); map.insert(3422, &[21506]); map.insert(3423, &[21507]); map.insert(3424, &[155651]); map.insert(3425, &[155650]); map.insert(3426, &[155649]); map.insert(3427, &[155648]); map.insert(3428, &[17025]); map.insert(3429, &[17024]); map.insert(3430, &[17027]); map.insert(3431, &[17026]); map.insert(3432, &[65682]); map.insert(3433, &[65683]); map.insert(3434, &[65680]); map.insert(3435, &[65681]); map.insert(3436, &[26656]); map.insert(3437, &[17032]); map.insert(3438, &[65684]); map.insert(3439, &[132416]); map.insert(3440, &[65674]); map.insert(3441, &[65675]); map.insert(3442, &[65672]); map.insert(3443, &[65673]); map.insert(3444, &[17041]); map.insert(3445, &[17040]); map.insert(3446, &[65676]); map.insert(3447, &[65677]); map.insert(3448, &[65666]); map.insert(3449, &[65667]); map.insert(3450, &[65664]); map.insert(3451, &[65665]); map.insert(3452, &[65670]); map.insert(3453, &[65671]); map.insert(3454, &[65668]); map.insert(3455, &[65669]); map.insert(3456, &[98436]); map.insert(3457, &[98437]); map.insert(3458, &[98438]); map.insert(3459, &[98439]); map.insert(3460, &[98432]); map.insert(3461, &[98433]); map.insert(3462, &[98434]); map.insert(3463, &[98435]); map.insert(3464, &[65650]); map.insert(3465, &[10016]); map.insert(3466, &[65648]); map.insert(3467, &[65649]); map.insert(3468, &[98440]); map.insert(3469, &[98441]); map.insert(3470, &[98442]); map.insert(3471, &[132512]); map.insert(3472, &[12672]); map.insert(3473, &[12673]); map.insert(3474, &[65640]); map.insert(3475, &[65641]); map.insert(3476, &[98448]); map.insert(3477, &[198720]); map.insert(3478, &[135936]); map.insert(3479, &[135937]); map.insert(3480, &[65634]); map.insert(3481, &[65635]); map.insert(3482, &[65632]); map.insert(3483, &[65633]); map.insert(3484, &[188417]); map.insert(3485, &[188416]); map.insert(3486, &[65636]); map.insert(3487, &[65637]); map.insert(3488, &[16965]); map.insert(3489, &[16964]); map.insert(3490, &[65624]); map.insert(3491, &[65625]); map.insert(3492, &[16961]); map.insert(3493, &[16960]); map.insert(3494, &[16963]); map.insert(3495, &[16962]); map.insert(3496, &[65618]); map.insert(3497, &[9984]); map.insert(3498, &[65616]); map.insert(3499, &[65617]); map.insert(3500, &[16969]); map.insert(3501, &[16968]); map.insert(3502, &[65620]); map.insert(3503, &[132480]); map.insert(3504, &[65610]); map.insert(3505, &[65611]); map.insert(3506, &[65608]); map.insert(3507, &[65609]); map.insert(3508, &[16977]); map.insert(3509, &[16976]); map.insert(3510, &[65612]); map.insert(3511, &[65613]); map.insert(3512, &[65602]); map.insert(3513, &[65603]); map.insert(3514, &[65600]); map.insert(3515, &[65601]); map.insert(3516, &[65606]); map.insert(3517, &[65607]); map.insert(3518, &[65604]); map.insert(3519, &[65605]); map.insert(3520, &[16933]); map.insert(3521, &[16932]); map.insert(3522, &[65592]); map.insert(3523, &[65593]); map.insert(3524, &[16929]); map.insert(3525, &[16928]); map.insert(3526, &[16931]); map.insert(3527, &[16930]); map.insert(3528, &[65586]); map.insert(3529, &[65587]); map.insert(3530, &[65584]); map.insert(3531, &[65585]); map.insert(3532, &[26752]); map.insert(3533, &[16936]); map.insert(3534, &[65588]); map.insert(3535, &[65589]); map.insert(3536, &[65578]); map.insert(3537, &[198660]); map.insert(3538, &[65576]); map.insert(3539, &[65577]); map.insert(3540, &[198657]); map.insert(3541, &[198656]); map.insert(3542, &[65580]); map.insert(3543, &[198658]); map.insert(3544, &[65570]); map.insert(3545, &[65571]); map.insert(3546, &[65568]); map.insert(3547, &[65569]); map.insert(3548, &[65574]); map.insert(3549, &[198664]); map.insert(3550, &[65572]); map.insert(3551, &[65573]); map.insert(3552, &[16901]); map.insert(3553, &[16900]); map.insert(3554, &[65560]); map.insert(3555, &[65561]); map.insert(3556, &[16897]); map.insert(3557, &[16896]); map.insert(3558, &[16899]); map.insert(3559, &[16898]); map.insert(3560, &[65554]); map.insert(3561, &[65555]); map.insert(3562, &[65552]); map.insert(3563, &[65553]); map.insert(3564, &[16905]); map.insert(3565, &[16904]); map.insert(3566, &[65556]); map.insert(3567, &[65557]); map.insert(3568, &[65546]); map.insert(3569, &[65547]); map.insert(3570, &[65544]); map.insert(3571, &[65545]); map.insert(3572, &[16913]); map.insert(3573, &[16912]); map.insert(3574, &[65548]); map.insert(3575, &[65549]); map.insert(3576, &[65538]); map.insert(3577, &[65539]); map.insert(3578, &[65536]); map.insert(3579, &[65537]); map.insert(3580, &[65542]); map.insert(3581, &[65543]); map.insert(3582, &[65540]); map.insert(3583, &[65541]); map.insert(3584, &[3584]); map.insert(3585, &[3585]); map.insert(3586, &[3586]); map.insert(3587, &[3587]); map.insert(3588, &[3588]); map.insert(3589, &[3589]); map.insert(3590, &[135312]); map.insert(3591, &[38976]); map.insert(3592, &[3592]); map.insert(3593, &[9376]); map.insert(3594, &[49425]); map.insert(3595, &[49424]); map.insert(3596, &[3596]); map.insert(3597, &[132642]); map.insert(3598, &[132641]); map.insert(3599, &[132640]); map.insert(3600, &[12800]); map.insert(3601, &[12801]); map.insert(3602, &[12802]); map.insert(3603, &[49416]); map.insert(3604, &[135298]); map.insert(3605, &[135299]); map.insert(3606, &[135296]); map.insert(3607, &[135297]); map.insert(3608, &[12808]); map.insert(3609, &[49410]); map.insert(3610, &[49409]); map.insert(3611, &[49408]); map.insert(3612, &[135306]); map.insert(3613, &[49414]); map.insert(3614, &[135304]); map.insert(3615, &[49412]); map.insert(3616, &[3616]); map.insert(3617, &[9352]); map.insert(3618, &[3618]); map.insert(3619, &[9354]); map.insert(3620, &[16833]); map.insert(3621, &[16832]); map.insert(3622, &[132617]); map.insert(3623, &[132616]); map.insert(3624, &[9345]); map.insert(3625, &[9344]); map.insert(3626, &[9347]); map.insert(3627, &[9346]); map.insert(3628, &[132611]); map.insert(3629, &[132610]); map.insert(3630, &[132609]); map.insert(3631, &[132608]); map.insert(3632, &[12832]); map.insert(3633, &[6280]); map.insert(3634, &[12834]); map.insert(3635, &[6282]); map.insert(3636, &[135330]); map.insert(3637, &[6284]); map.insert(3638, &[135328]); map.insert(3639, &[135329]); map.insert(3640, &[6273]); map.insert(3641, &[6272]); map.insert(3642, &[6275]); map.insert(3643, &[6274]); map.insert(3644, &[6277]); map.insert(3645, &[6276]); map.insert(3646, &[132625]); map.insert(3647, &[132624]); map.insert(3648, &[3648]); map.insert(3649, &[3649]); map.insert(3650, &[38917]); map.insert(3651, &[38916]); map.insert(3652, &[38915]); map.insert(3653, &[38914]); map.insert(3654, &[38913]); map.insert(3655, &[38912]); map.insert(3656, &[167968]); map.insert(3657, &[167969]); map.insert(3658, &[167970]); map.insert(3659, &[38924]); map.insert(3660, &[167972]); map.insert(3661, &[38922]); map.insert(3662, &[38921]); map.insert(3663, &[38920]); map.insert(3664, &[12864]); map.insert(3665, &[12865]); map.insert(3666, &[41989]); map.insert(3667, &[41988]); map.insert(3668, &[41987]); map.insert(3669, &[41986]); map.insert(3670, &[41985]); map.insert(3671, &[41984]); map.insert(3672, &[12872]); map.insert(3673, &[49474]); map.insert(3674, &[49473]); map.insert(3675, &[49472]); map.insert(3676, &[205088]); map.insert(3677, &[41994]); map.insert(3678, &[41993]); map.insert(3679, &[41992]); map.insert(3680, &[167944]); map.insert(3681, &[16772]); map.insert(3682, &[167946]); map.insert(3683, &[16774]); map.insert(3684, &[16769]); map.insert(3685, &[16768]); map.insert(3686, &[16771]); map.insert(3687, &[16770]); map.insert(3688, &[167936]); map.insert(3689, &[167937]); map.insert(3690, &[167938]); map.insert(3691, &[167939]); map.insert(3692, &[167940]); map.insert(3693, &[16776]); map.insert(3694, &[132673]); map.insert(3695, &[132672]); map.insert(3696, &[167960]); map.insert(3697, &[16788]); map.insert(3698, &[66440]); map.insert(3699, &[42020]); map.insert(3700, &[16785]); map.insert(3701, &[16784]); map.insert(3702, &[42017]); map.insert(3703, &[42016]); map.insert(3704, &[167952]); map.insert(3705, &[6336]); map.insert(3706, &[66432]); map.insert(3707, &[66433]); map.insert(3708, &[205056]); map.insert(3709, &[205057]); map.insert(3710, &[205058]); map.insert(3711, &[42024]); map.insert(3712, &[3712]); map.insert(3713, &[9256]); map.insert(3714, &[135188]); map.insert(3715, &[135189]); map.insert(3716, &[135186]); map.insert(3717, &[16736]); map.insert(3718, &[135184]); map.insert(3719, &[135185]); map.insert(3720, &[9249]); map.insert(3721, &[9248]); map.insert(3722, &[9251]); map.insert(3723, &[9250]); map.insert(3724, &[9253]); map.insert(3725, &[9252]); map.insert(3726, &[135192]); map.insert(3727, &[135193]); map.insert(3728, &[135174]); map.insert(3729, &[6184]); map.insert(3730, &[135172]); map.insert(3731, &[135173]); map.insert(3732, &[135170]); map.insert(3733, &[135171]); map.insert(3734, &[135168]); map.insert(3735, &[135169]); map.insert(3736, &[6177]); map.insert(3737, &[6176]); map.insert(3738, &[135180]); map.insert(3739, &[6178]); map.insert(3740, &[135178]); map.insert(3741, &[6180]); map.insert(3742, &[135176]); map.insert(3743, &[135177]); map.insert(3744, &[9225]); map.insert(3745, &[9224]); map.insert(3746, &[9227]); map.insert(3747, &[9226]); map.insert(3748, &[16705]); map.insert(3749, &[16704]); map.insert(3750, &[135216]); map.insert(3751, &[16706]); map.insert(3752, &[9217]); map.insert(3753, &[9216]); map.insert(3754, &[9219]); map.insert(3755, &[9218]); map.insert(3756, &[9221]); map.insert(3757, &[9220]); map.insert(3758, &[9223]); map.insert(3759, &[9222]); map.insert(3760, &[6153]); map.insert(3761, &[6152]); map.insert(3762, &[135204]); map.insert(3763, &[6154]); map.insert(3764, &[135202]); map.insert(3765, &[6156]); map.insert(3766, &[135200]); map.insert(3767, &[135201]); map.insert(3768, &[6145]); map.insert(3769, &[6144]); map.insert(3770, &[6147]); map.insert(3771, &[6146]); map.insert(3772, &[6149]); map.insert(3773, &[6148]); map.insert(3774, &[135208]); map.insert(3775, &[6150]); map.insert(3776, &[16677]); map.insert(3777, &[16676]); map.insert(3778, &[135252]); map.insert(3779, &[16678]); map.insert(3780, &[16673]); map.insert(3781, &[16672]); map.insert(3782, &[135248]); map.insert(3783, &[16674]); map.insert(3784, &[9313]); map.insert(3785, &[9312]); map.insert(3786, &[149760]); map.insert(3787, &[149761]); map.insert(3788, &[16681]); map.insert(3789, &[16680]); map.insert(3790, &[149764]); map.insert(3791, &[16682]); map.insert(3792, &[165377]); map.insert(3793, &[165376]); map.insert(3794, &[135236]); map.insert(3795, &[135237]); map.insert(3796, &[135234]); map.insert(3797, &[16688]); map.insert(3798, &[135232]); map.insert(3799, &[135233]); map.insert(3800, &[6241]); map.insert(3801, &[6240]); map.insert(3802, &[66336]); map.insert(3803, &[66337]); map.insert(3804, &[135242]); map.insert(3805, &[6244]); map.insert(3806, &[135240]); map.insert(3807, &[135241]); map.insert(3808, &[16645]); map.insert(3809, &[16644]); map.insert(3810, &[16647]); map.insert(3811, &[16646]); map.insert(3812, &[16641]); map.insert(3813, &[16640]); map.insert(3814, &[16643]); map.insert(3815, &[16642]); map.insert(3816, &[9281]); map.insert(3817, &[9280]); map.insert(3818, &[66320]); map.insert(3819, &[9282]); map.insert(3820, &[16649]); map.insert(3821, &[16648]); map.insert(3822, &[45568]); map.insert(3823, &[16650]); map.insert(3824, &[16661]); map.insert(3825, &[16660]); map.insert(3826, &[66312]); map.insert(3827, &[66313]); map.insert(3828, &[16657]); map.insert(3829, &[16656]); map.insert(3830, &[135264]); map.insert(3831, &[16658]); map.insert(3832, &[6209]); map.insert(3833, &[6208]); map.insert(3834, &[66304]); map.insert(3835, &[66305]); map.insert(3836, &[6213]); map.insert(3837, &[6212]); map.insert(3838, &[66308]); map.insert(3839, &[66309]); map.insert(3840, &[98820]); map.insert(3841, &[98821]); map.insert(3842, &[49177]); map.insert(3843, &[49176]); map.insert(3844, &[98816]); map.insert(3845, &[98817]); map.insert(3846, &[98818]); map.insert(3847, &[98819]); map.insert(3848, &[49171]); map.insert(3849, &[49170]); map.insert(3850, &[49169]); map.insert(3851, &[49168]); map.insert(3852, &[98824]); map.insert(3853, &[98825]); map.insert(3854, &[49173]); map.insert(3855, &[49172]); map.insert(3856, &[13056]); map.insert(3857, &[49162]); map.insert(3858, &[49161]); map.insert(3859, &[49160]); map.insert(3860, &[98832]); map.insert(3861, &[98833]); map.insert(3862, &[135552]); map.insert(3863, &[49164]); map.insert(3864, &[49155]); map.insert(3865, &[49154]); map.insert(3866, &[49153]); map.insert(3867, &[49152]); map.insert(3868, &[49159]); map.insert(3869, &[49158]); map.insert(3870, &[49157]); map.insert(3871, &[49156]); map.insert(3872, &[16581]); map.insert(3873, &[16580]); map.insert(3874, &[16583]); map.insert(3875, &[16582]); map.insert(3876, &[16577]); map.insert(3877, &[16576]); map.insert(3878, &[16579]); map.insert(3879, &[16578]); map.insert(3880, &[9601]); map.insert(3881, &[9600]); map.insert(3882, &[49201]); map.insert(3883, &[49200]); map.insert(3884, &[16585]); map.insert(3885, &[16584]); map.insert(3886, &[132865]); map.insert(3887, &[132864]); map.insert(3888, &[182276]); map.insert(3889, &[49194]); map.insert(3890, &[49193]); map.insert(3891, &[49192]); map.insert(3892, &[182272]); map.insert(3893, &[16592]); map.insert(3894, &[182274]); map.insert(3895, &[16594]); map.insert(3896, &[49187]); map.insert(3897, &[49186]); map.insert(3898, &[49185]); map.insert(3899, &[49184]); map.insert(3900, &[204864]); map.insert(3901, &[204865]); map.insert(3902, &[49189]); map.insert(3903, &[49188]); map.insert(3904, &[70659]); map.insert(3905, &[70658]); map.insert(3906, &[70657]); map.insert(3907, &[70656]); map.insert(3908, &[16545]); map.insert(3909, &[16544]); map.insert(3910, &[16547]); map.insert(3911, &[16546]); map.insert(3912, &[149634]); map.insert(3913, &[70666]); map.insert(3914, &[149632]); map.insert(3915, &[70664]); map.insert(3916, &[27136]); map.insert(3917, &[16552]); map.insert(3918, &[27138]); map.insert(3919, &[16554]); map.insert(3920, &[75779]); map.insert(3921, &[75778]); map.insert(3922, &[75777]); map.insert(3923, &[75776]); map.insert(3924, &[16561]); map.insert(3925, &[16560]); map.insert(3926, &[75781]); map.insert(3927, &[75780]); map.insert(3928, &[49219]); map.insert(3929, &[49218]); map.insert(3930, &[49217]); map.insert(3931, &[49216]); map.insert(3932, &[204832]); map.insert(3933, &[204833]); map.insert(3934, &[49221]); map.insert(3935, &[49220]); map.insert(3936, &[16517]); map.insert(3937, &[16516]); map.insert(3938, &[16519]); map.insert(3939, &[16518]); map.insert(3940, &[16513]); map.insert(3941, &[16512]); map.insert(3942, &[16515]); map.insert(3943, &[16514]); map.insert(3944, &[168192]); map.insert(3945, &[16524]); map.insert(3946, &[66192]); map.insert(3947, &[66193]); map.insert(3948, &[16521]); map.insert(3949, &[16520]); map.insert(3950, &[16523]); map.insert(3951, &[16522]); map.insert(3952, &[16533]); map.insert(3953, &[16532]); map.insert(3954, &[66184]); map.insert(3955, &[75808]); map.insert(3956, &[16529]); map.insert(3957, &[16528]); map.insert(3958, &[16531]); map.insert(3959, &[16530]); map.insert(3960, &[66178]); map.insert(3961, &[66179]); map.insert(3962, &[66176]); map.insert(3963, &[66177]); map.insert(3964, &[204800]); map.insert(3965, &[204801]); map.insert(3966, &[204802]); map.insert(3967, &[204803]); map.insert(3968, &[16485]); map.insert(3969, &[16484]); map.insert(3970, &[237568]); map.insert(3971, &[237569]); map.insert(3972, &[16481]); map.insert(3973, &[16480]); map.insert(3974, &[135440]); map.insert(3975, &[16482]); map.insert(3976, &[9505]); map.insert(3977, &[9504]); map.insert(3978, &[149568]); map.insert(3979, &[49296]); map.insert(3980, &[16489]); map.insert(3981, &[16488]); map.insert(3982, &[149572]); map.insert(3983, &[16490]); map.insert(3984, &[135430]); map.insert(3985, &[49290]); map.insert(3986, &[135428]); map.insert(3987, &[49288]); map.insert(3988, &[135426]); map.insert(3989, &[16496]); map.insert(3990, &[135424]); map.insert(3991, &[135425]); map.insert(3992, &[49283]); map.insert(3993, &[49282]); map.insert(3994, &[49281]); map.insert(3995, &[49280]); map.insert(3996, &[135434]); map.insert(3997, &[49286]); map.insert(3998, &[135432]); map.insert(3999, &[49284]); map.insert(4000, &[16453]); map.insert(4001, &[16452]); map.insert(4002, &[16455]); map.insert(4003, &[16454]); map.insert(4004, &[16449]); map.insert(4005, &[16448]); map.insert(4006, &[16451]); map.insert(4007, &[16450]); map.insert(4008, &[9473]); map.insert(4009, &[9472]); map.insert(4010, &[66128]); map.insert(4011, &[9474]); map.insert(4012, &[16457]); map.insert(4013, &[16456]); map.insert(4014, &[16459]); map.insert(4015, &[16458]); map.insert(4016, &[16469]); map.insert(4017, &[16468]); map.insert(4018, &[66120]); map.insert(4019, &[66121]); map.insert(4020, &[16465]); map.insert(4021, &[16464]); map.insert(4022, &[135456]); map.insert(4023, &[16466]); map.insert(4024, &[6401]); map.insert(4025, &[6400]); map.insert(4026, &[66112]); map.insert(4027, &[66113]); map.insert(4028, &[6405]); map.insert(4029, &[6404]); map.insert(4030, &[66116]); map.insert(4031, &[66117]); map.insert(4032, &[16421]); map.insert(4033, &[16420]); map.insert(4034, &[149512]); map.insert(4035, &[16422]); map.insert(4036, &[16417]); map.insert(4037, &[16416]); map.insert(4038, &[16419]); map.insert(4039, &[16418]); map.insert(4040, &[149506]); map.insert(4041, &[16428]); map.insert(4042, &[149504]); map.insert(4043, &[149505]); map.insert(4044, &[16425]); map.insert(4045, &[16424]); map.insert(4046, &[149508]); map.insert(4047, &[16426]); map.insert(4048, &[16437]); map.insert(4049, &[16436]); map.insert(4050, &[66088]); map.insert(4051, &[75904]); map.insert(4052, &[16433]); map.insert(4053, &[16432]); map.insert(4054, &[135488]); map.insert(4055, &[16434]); map.insert(4056, &[66082]); map.insert(4057, &[66083]); map.insert(4058, &[66080]); map.insert(4059, &[66081]); map.insert(4060, &[16441]); map.insert(4061, &[16440]); map.insert(4062, &[66084]); map.insert(4063, &[66085]); map.insert(4064, &[16389]); map.insert(4065, &[16388]); map.insert(4066, &[16391]); map.insert(4067, &[16390]); map.insert(4068, &[16385]); map.insert(4069, &[16384]); map.insert(4070, &[16387]); map.insert(4071, &[16386]); map.insert(4072, &[16397]); map.insert(4073, &[16396]); map.insert(4074, &[66064]); map.insert(4075, &[66065]); map.insert(4076, &[16393]); map.insert(4077, &[16392]); map.insert(4078, &[16395]); map.insert(4079, &[16394]); map.insert(4080, &[16405]); map.insert(4081, &[16404]); map.insert(4082, &[66056]); map.insert(4083, &[66057]); map.insert(4084, &[16401]); map.insert(4085, &[16400]); map.insert(4086, &[16403]); map.insert(4087, &[16402]); map.insert(4088, &[66050]); map.insert(4089, &[66051]); map.insert(4090, &[66048]); map.insert(4091, &[66049]); map.insert(4092, &[16409]); map.insert(4093, &[16408]); map.insert(4094, &[66052]); map.insert(4095, &[66053]);
SYNDROME_MAP = Box::into_raw(map);
}
});
}
impl BogosrndCode18_6 {
fn parity_check_matrix_transposed(&self) -> &BinMatrix {
init();
unsafe {
PARITY_MATRIX_T.as_ref().unwrap()
}
}
}
impl BinaryCode for BogosrndCode18_6 {
fn name(&self) -> String {
"[18, 6] Bogosrnd code".to_owned()
}
fn length(&self) -> usize {
18
}
fn dimension(&self) -> usize {
6
}
fn generator_matrix(&self) -> &BinMatrix {
init();
unsafe {
GENERATOR_MATRIX.as_ref().unwrap()
}
}
fn parity_check_matrix(&self) -> &BinMatrix {
init();
unsafe {
PARITY_MATRIX.as_ref().unwrap()
}
}
fn decode_to_code(&self, c: &BinVector) -> Result<BinVector, &str> {
init();
let map = unsafe {
SYNDROME_MAP.as_ref().unwrap()
};
debug_assert_eq!(c.len(), self.length(), "the length doesn't match the expected length (length of the code)");
let he = c * self.parity_check_matrix_transposed();
let mut error = BinVector::with_capacity(18);
let stor = unsafe { error.get_storage_mut() };
let errbytes = map[&he.as_u64()];
debug_assert_eq!(errbytes.len(), 18 / 64 + if 18 % 64 != 0 { 1 } else { 0 });
stor.clear();
stor.extend_from_slice(&errbytes[..]);
unsafe { error.set_len(18) };
debug_assert_eq!(error.len(), self.length(), "internal: the error vector is of the wrong length");
let result = c + &error;
debug_assert_eq!(result.len(), self.length(), "internal: the result vector is of the wrong length");
debug_assert_eq!((&result * self.parity_check_matrix_transposed()).count_ones(), 0);
Ok(result)
}
fn decode_to_message(&self, c: &BinVector) -> Result<BinVector, &str> {
let mut codeword = self.decode_to_code(c)?;
codeword.truncate(6);
Ok(codeword)
}
fn decode_slice(&self, c: &mut [u64]) {
init();
debug_assert_eq!(c[18 / 64] & !((1 << 18) - 1), 0, "this message has excess bits");
let map = unsafe {
SYNDROME_MAP.as_ref().unwrap()
};
let he = &BinMatrix::from_slices(&[&c[..]], self.length()) * self.parity_check_matrix_transposed();
let error = map[unsafe { &he.get_word_unchecked(0, 0) }];
c.iter_mut().zip(error.iter().copied()).for_each(|(sample, error)| *sample ^= error as u64);
}
}
#[cfg(test)]
mod tests {
use super::*;
use m4ri_rust::friendly::BinVector;
use crate::oracle::Sample;
#[test]
fn size() {
let code = BogosrndCode18_6.generator_matrix();
assert_eq!(code.ncols(), 18);
assert_eq!(code.nrows(), 6);
}
#[test]
fn test_decode_sample() {
let code = BogosrndCode18_6;
for _ in 0..1000 {
let vec = BinVector::random(code.length());
let mut sample_a = Sample::from_binvector(&vec, false);
let mut sample_b = Sample::from_binvector(&vec, true);
let decoded_vec = code.decode_to_message(&vec).unwrap();
println!("decoded_vec: {:?}", decoded_vec);
let decoded_vec_sample_a = Sample::from_binvector(&decoded_vec, false);
let decoded_vec_sample_b = Sample::from_binvector(&decoded_vec, true);
code.decode_sample(&mut sample_a);
code.decode_sample(&mut sample_b);
assert_eq!(sample_a.get_product(), false);
assert_eq!(sample_b.get_product(), true);
assert_eq!(sample_a, decoded_vec_sample_a);
assert_eq!(sample_b, decoded_vec_sample_b);
}
}
#[test]
fn random_decode_tests() {
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, true, false, false, true, false, false, false, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, false, false, false, true, false, false, false, true, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, true, true, true, false, false, true, false, false, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, true, false, true]);
let codeword = BinVector::from_bools(&[false, false, true, true, true, true, true, false, true, true, true, true, false, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, true, false, false, false, true, false, true, false, false, true, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, true, false, false, true, true, true, false, false, false, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, false, false, false, false, false, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, false, true, true, true, true, false, false, true, false, false, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, false, false, true, true, true, false, false, true, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, false, true, false, true, true, false, true, false, false, false, false, true]);
let codeword = BinVector::from_bools(&[false, true, true, false, true, false, false, true, false, true, true, true, true, false, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, true, true, false, false, true, false, true, true, false, false, true, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, true, true, false, false, true, true, true, true, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, false, false, true, false, true, true, false, false, true, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, true, false, true, false, true, true, true, true, false, false, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, false, false, false, false, false, true, true, true, true, false, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, false, true, true, true, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, true, false, false, true, true, false, true, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, true, false, true, false, true, true, true, true, false, false, true, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, true, true, false, false, true, true, true, true, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, true, true, true, true, false, true, true, true, true, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, true, true, true, false, true, true, true, true, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, false, false, false, true, true, false, true, true, false, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, false, false, true, false, true, true, false, true, true, false, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, false, true, false, true, false, true, true, true, false, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, false, false, true, true, true, false, true, false, true, false, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, true, true, false, false, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, false, false, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, false, true, true, true, false, true, true, false, false, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, false, false, false, true, false, false, false, true, false, false, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, false, true, false, true, false, true, false, false, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, false, false, true, false, true, false, true, false, false, true, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, true, true, true, false, true, true, false, false, true, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, true, true, true, false, false, true, true, true, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, true, false, true, true, false, false, true, true, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, true, false, false, false, false, false, true, true, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, false, true, true, true, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, true, true, false, false, false, false, false, false, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, false, true, false, false, false, false, false, true, false, false, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, false, true, true, true, true, true, false, true, true, true, true, false, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, true, true, false, false, false, true, true, true, false, false, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, true, true, false, false, false, true, true, true, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, false, false, true, false, true, false, false, false, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, false, true, true, true, true, true, true, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, true, true, true, false, false, true, true, false, true, true, false, true, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, true, false, true, true, false, true, false, true, true, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[false, true, false, true, true, false, true, true, true, true, false, true, true, true, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, true, true, false, false, true, false, false, false, false, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, true, false, false, true, true, true, false, false, false, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, false, true, false, false, true, true, false, false, true, false, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, false, true, false, true, true, true, false, false, true, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, true, false, true, false, true, true, true, true, false, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, false, true, false, true, true, true, false, false, true, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, false, false, true, true, false, true, true, false, true, false, true, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, false, true, false, false, true, true, false, true, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, false, false, true, false, false, true, false, false, false, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, false, false, false, false, true, false, false, false, false, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, false, true, true, false, false, true, false, true, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, true, true, true, true, true, true, false, false, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, false, true, true, true, false, true, false, true, false, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, false, true, true, false, true, false, true, false, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, true, true, false, true, false, false, false, true, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, true, true, true, true, true, true, true, false, false, true, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, true, true, false, false, false, true, true, true, true, false, false, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, false, true, true, true, true, false, false, true, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, true, true, true, true, true, true, false, false, true, true, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, true, false, true, false, true, true, false, false, false, true, false, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, false, true, false, true, true, true, false, false, true, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, true, false, true, true, false, true, false, true, true, false, false, false, true]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, false, true, true, false, false, true, false, true, true, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, true, false, true, true, true, true, true, true, true, false, false, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, false, false, true, true, true, false, false, true, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, true, true, false, false, true, true, true, false, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, true, true, true, false, true, true, true, true, false, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, true, false, true, true, true, false, false, true, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, false, true, false, true, true, true, true, true, true, false, false, true, true, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, false, false, true, false, false, false, false, false, false, false, true, true, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, false, false, true, false, true, false, false, true, false, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, false, true, false, false, false, false, true, false, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, true, true, false, true, true, true, false, false, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, false, false, true, true, true, false, false, true, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, false, true, false, false, true, true, false, true, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, false, true, false, false, true, true, false, true, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, false, false, false, true, false, true, false, false, true, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, true, false, true, true, false, true, false, false, true, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, false, true, true, true, false, true, true, true, true, false, false, false, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, true, false, false, true, true, true, false, true, true, false, true, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, true, false, true, false, true, true, true, true, false, false, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, false, true, true, true, false, false, true, false, false, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, false, false, true, true, true, false, false, true, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, false, true, true, true, false, false, true, false, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, false, false, false, true, false, false, true, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, true, true, true, false, false, true, false, false, true, true, true, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, true, false, true, true, false, true, false, false, true, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, true, false, false, true, true, false, false, true, true, true, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, false, true, true, false, true, true, true, false, false, true, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, false, true, true, false, true, false, true, true, false, true, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, false, false, true, false, false, false, true, true, false, true, false, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, false, true, true, false, true, false, true, true, false, true, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, true, false, true, false, false, true, true, false, false, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, false, true, false, false, true, false, true, false, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, false, false, false, false, false, true, false, true, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, false, false, true, false, true, false, false, true, false, true, false, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, false, false, true, true, true, true, false, false, true, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, false, false, false, false, true, true, false, false, true, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, false, false, true, true, false, false, true, false, false, false, false, false, true, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, true, true, false, false, false, true, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, false, true, true, false, false, false, true, false, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, true, false, true, false, false, true, false, false, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, true, false, false, true, true, true, false, false, false, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, true, true, false, false, true, false, false, true, true, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, false, false, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, true, false, false, true, true, true, false, true, true, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, false, true, false, false, true, true, false, true, true, true, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, false, true, true, false, false, true, true, true, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, true, true, false, true, false, false, false, true, false, true, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, false, true, true, false, true, true, true, true, false, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, false, true, true, false, true, false, true, true, false, true, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, false, true, true, true, false, false, false, true, false, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, false, true, false, true, false, true, false, false, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, true, false, true, false, false, false, true, false, true, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, false, false, false, false, false, true, false, false, true, true, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, true, true, true, false, false, true, true, false, true, true, false, true, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, false, false, true, true, false, true, true, true, true, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, false, false, true, false, false, true, true, true, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, true, true, false, false, true, true, false, false, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, true, true, true, true, true, true, true, false, false, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, false, true, true, false, false, true, false, false, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, true, true, true, false, true, false, false, false, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, false, false, false, true, false, false, false, true, false, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, false, true, true, false, true, false, false, false, true, false, true, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, false, true, true, true, true, true, true, false, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, true, true, true, false, true, true, true, false, true, true, false, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, true, false, true, false, false, false, true, false, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, true, false, true, true, true, false, true, true, false, false, true, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, true, true, true, false, true, true, true, false, true, true, false, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, true, true, false, false, false, true, true, true, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, true, true, true, false, false, true, true, true, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, true, false, false, false, true, true, true, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, true, true, false, false, false, true, true, true, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, true, true, true, false, false, false, false, true, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, false, true, false, false, true, false, true, false, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, true, true, false, true, false, false, true, false, true, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, true, false, false, false, false, true, false, true, true, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, true, false, true, false, true, false, true, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, false, true, true, false, true, false, true, false, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, false, true, false, true, false, false, false, false, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, true, false, true, false, true, false, false, true, true, false, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, false, false, true, false, false, false, true, false, true, true, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, false, true, true, false, false, true, false, true, true, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, false, false, false, true, true, false, false, false, false, true, true, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, false, false, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, false, false, true, false, false, true, false, true, false, false, false, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, false, false, true, true, true, false, false, false, true, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, true, false, true, false, true, true, true, true, false, false, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, false, false, true, true, false, true, true, true, false, false, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, true, true, true, true, true, true, true, false, false, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, false, false, false, true, false, false, false, true, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, true, false, true, true, false, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, false, true, false, false, false, true, true, true, false, false, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, true, false, true, false, true, false, false, true, false, true, false, false, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, true, false, false, false, true, false, true, false, false, false, false, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, true, false, false, true, false, false, true, false, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, true, false, true, false, false, false, false, false, true, false, false, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, true, false, false, false, true, false, true, true, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, true, true, false, false, true, false, true, true, false, false, false, false, true, false]);
let codeword = BinVector::from_bools(&[false, true, false, true, true, true, true, true, true, false, true, true, false, false, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, false, true, false, false, false, false, true, false, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, true, false, true, false, false, true, false, true, false, false, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, false, true, true, true, false, true, true, true, false, false, true, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, true, true, true, true, true, true, true, false, false, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, false, true, false, false, false, true, false, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, false, true, true, false, false, false, true, false, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, false, true, true, true, true, false, true, true, false, true, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, true, false, true, false, true, false, true, false, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, false, true, true, false, true, false, false, false, true, false, true, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, false, true, true, false, true, false, true, false, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, true, true, true, false, true, true, true, true, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, false, false, false, true, false, true, true, true, false, false, false, false, true, false]);
let codeword = BinVector::from_bools(&[false, true, false, false, false, false, false, true, true, true, true, true, false, true, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, false, true, false, true, false, true, false, false, false, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, false, false, true, true, true, true, true, false, false, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, false, true, true, false, true, false, true, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, true, true, true, false, true, false, false, false, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, true, false, true, false, true, true, true, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[false, true, false, false, false, false, false, true, true, true, true, true, false, true, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, true, false, false, true, true, true, false, true, true, false, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, false, false, false, true, false, false, false, true, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, false, true, false, true, false, false, false, true, true, true, false, false, false, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, false, false, true, true, false, false, false, true, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, true, true, false, false, false, true, true, false, false, false, true, false, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, false, false, true, false, false, true, true, false, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, false, true, false, false, true, true, false, true, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, false, false, false, false, true, false, true, true, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, false, false, false, false, false, true, true, true, true, true, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, true, true, true, true, false, true, true, true, true, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, true, true, true, false, true, true, true, true, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, false, true, false, true, false, true, false, true, false, false, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, true, true, false, true, false, false, true, false, true, false, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, false, true, true, true, false, false, true, false, false, true, true, true, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, false, false, false, true, false, true, true, false, true, false, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, false, true, true, true, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, true, true, true, true, false, false, false, true, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, false, true, false, true, true, true, true, true, true, false, false, true, true, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, false, true, true, false, false, true, true, true, true, false, true, true, true]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, false, true, true, false, false, true, false, true, true, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, true, false, false, false, true, false, true, false, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, false, false, true, false, true, false, false, true, true, true, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, true, false, false, false, false, true, true, false, false, true, true, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, true, true, true, true, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, false, true, true, true, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, false, false, false, true, false, true, true, true, false, false, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, false, false, true, false, false, true, true, true, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, false, true, false, false, false, true, true, false, true, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, false, true, false, false, false, true, true, false, true, true, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, true, true, false, false, false, true, false, true, false, true, true, false, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, true, true, false, true, false, false, false, true, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, true, true, false, true, false, false, false, true, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, true, false, false, false, true, true, true, false, false, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, false, false, true, false, true, false, true, false, false, true, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, false, true, false, false, true, true, true, true, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, true, true, false, false, true, true, true, true, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, true, false, true, false, false, true, true, false, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, true, true, true, false, false, true, true, false, true, true, false, true, true, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, true, true, true, true, false, true, true, true, true, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, true, true, true, false, true, true, true, true, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, false, true, true, true, false, false, false, true, false, true, true, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, false, false, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, false, true, false, true, false, false, false, true, false, false, false, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, true, false, true, false, false, false, false, false, true, false, false, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, true, false, true, false, true, true, false, false, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, false, true, true, false, true, false, true, false, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, false, true, false, false, true, false, true, false, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, false, true, false, false, true, false, true, false, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, true, true, false, false, false, true, false, false, false, false, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, false, false, false, false, true, false, false, false, false, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, false, true, false, false, true, false, true, false, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, false, true, false, false, true, false, true, false, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, true, false, true, false, false, true, true, true, false, false, true, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, true, true, false, false, false, true, true, true, true, false, false, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, true, false, true, false, true, false, false, true, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, false, true, true, true, false, false, false, true, false, true, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, false, true, false, false, false, false, true, false, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, false, true, true, true, false, false, false, true, false, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, false, false, true, true, false, false, true, true, true, false, false, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, true, true, false, true, false, true, true, true, false, false, true, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, true, true, false, false, true, true, true, true, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, false, false, true, false, false, false, false, true, true, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, true, true, false, false, true, false, false, false, false, false, true, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, true, false, false, false, true, false, false, false, false, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, false, true, false, true, true, true, true, false, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, false, true, false, true, true, true, false, false, true, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, false, true, true, true, false, true, true, false, true, true, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, true, false, true, false, true, true, true, true, false, false, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, true, true, false, false, true, true, false, false, true, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, true, false, false, false, true, false, false, false, true, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, true, false, true, true, false, false, true, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, true, false, true, false, false, false, false, false, true, false, false, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, false, false, false, false, false, true, false, true, true, false, false, false, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, true, false, true, true, false, false, true, true, true, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, true, false, true, false, true, false, false, true, true, false, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, false, false, true, false, true, true, false, false, false, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, false, false, false, false, true, false, false, false, false, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, true, true, true, false, true, false, true, true, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, true, true, true, false, true, true, true, true, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, false, true, true, true, false, false, true, true, false, true, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, false, false, true, false, true, true, false, false, false, true, false, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, true, false, true, true, true, false, false, false, true, false, false, false, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, true, true, false, true, false, false, false, true, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, true, true, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, false, false, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, false, true, false, false, true, false, true, false, true, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, false, true, false, true, false, false, true, false, true, false, false, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, false, true, true, true, true, true, false, true, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, true, true, true, false, true, false, false, false, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, false, true, true, false, false, false, true, false, true, false, false, false, false, true, true]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, true, false, false, false, true, false, true, false, false, true, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, false, true, true, true, false, false, true, true, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, true, false, false, false, true, false, true, true, false, false, true, true, false, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, true, true, false, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, true, false, false, false, false, true, false, true, true, false, true, true, false, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, false, true, true, false, false, true, true, false, true, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, false, true, true, false, true, false, true, false, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, true, true, true, true, true, false, false, false, false, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, false, false, false, false, true, true, true, false, true, false, false, false, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, false, true, false, false, false, true, true, false, true, true, false, true, false, false, true]);
let codeword = BinVector::from_bools(&[false, false, true, true, true, false, true, false, true, false, false, true, true, false, true, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, true, false, false, true, false, true, false, true, false, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, false, true, true, false, true, false, false, false, true, false, true, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, true, false, true, false, true, false, false, false, true, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, false, true, true, false, true, false, true, true, true, true, false, false, true, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, false, true, true, false, false, true, true, false, true, false, false, false, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, true, true, false, false, true, true, true, true, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, true, false, true, false, false, true, false, false, true, true, true, true, false, true]);
let codeword = BinVector::from_bools(&[true, true, true, false, true, false, true, false, false, true, false, true, false, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, true, true, true, false, false, true, false, false, true, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, true, false, true, true, false, true, false, false, true, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, false, false, true, true, true, true, false, false, false, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, false, false, false, true, true, true, false, true, true, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, true, false, false, false, false, true, true, false, false, true, true, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, false, false, true, true, true, true, true, true, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, true, true, true, false, false, true, true, true, true, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, false, false, false, false, true, true, false, true, false, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, false, true, false, false, false, false, true, true, false, false, true, true, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, false, true, false, true, true, false, true, true, false, false, true, true, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, true, true, false, true, false, true, true, true, false, false, false, true, false, true]);
let codeword = BinVector::from_bools(&[false, true, true, false, true, false, false, true, false, true, true, true, true, false, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, false, true, true, true, true, true, false, false, true, false, false, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, false, true, true, false, true, true, false, false, true, false, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, true, false, true, true, false, false, false, false, true, false, true, true, true]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, false, false, true, true, true, false, false, true, false, false, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, true, false, true, false, false, false, true, true, true, false, false, false, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, false, true, false, false, false, false, false, true, true, true, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, true, false, true, true, false, true, false, false, false, true, true, false, true, true]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, false, false, true, false, true, true, true, true, true, false, true, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, false, true, false, false, true, true, false, true, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, false, false, false, true, false, false, true, false, false, false, true, false, false, false, true]);
let codeword = BinVector::from_bools(&[false, true, true, false, false, false, false, true, false, true, false, false, false, true, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, false, false, true, false, false, false, true, false, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, true, true, false, true, true, false, false, false, true, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, false, true, false, false, false, false, true, false, true, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, false, false, false, false, false, false, true, true, true, true, false, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, false, false, false, false, false, true, true, true, true, true, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, true, true, false, false, true, false, false, true, true, true, false, false, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, false, false, true, true, false, true, false, true, false, false, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, false, false, false, false, true, true, true, false, false, false, true, false, true, false]);
let codeword = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, true, true, false, false, false, true, true, true, true, false, false, true, true, true, true]);
let codeword = BinVector::from_bools(&[true, true, false, true, true, false, false, false, true, true, true, true, false, false, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, true, false, true, false, true, false, true, false, true, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, true, true, false, true, false, false, false, true, false, true, false, true, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, true, true, false, false, true, false, true, false, true, true, false, false, true, true]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, true, false, false, false, false, true, false, true, true, false, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, true, false, true, false, false, true, false, false, true, true, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, false, false, false, false, true, false, false, false, false, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, false, true, false, true, false, true, true, true, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[true, false, false, true, false, true, false, true, false, true, false, true, false, true, false, false, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, false, false, true, false, false, true, true, false, true, true, false, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, true, true, false, true, true, false, false, true, true, true, true, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, false, false, true, false, true, true, false, false, true, true, true, true, false, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, false, true, false, true, true, true, false, true, true, true, false, true, false]);
let codeword = BinVector::from_bools(&[true, true, false, false, true, false, true, false, true, true, true, false, false, true, false, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, false, false, false, false, false, false, true, true, false, true, false, false, true, true, true, true, false]);
let codeword = BinVector::from_bools(&[false, true, false, false, true, true, false, true, true, false, true, false, false, true, true, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, false, false, true, true, true, false, false, true, false, false, true, false, true, true, false]);
let codeword = BinVector::from_bools(&[true, true, true, false, false, true, true, false, false, false, false, false, false, true, true, true, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, true, true, true, false, true, true, false, true, false, true, false, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[true, true, true, true, true, false, false, false, false, true, false, false, false, false, true, false, true, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, false, false, false, false, true, true, true, true, false, true, false, true, false, false, false]);
let codeword = BinVector::from_bools(&[false, true, false, true, false, false, true, true, true, true, true, false, false, false, true, false, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[true, true, false, true, true, true, true, true, false, false, true, false, false, false, false, true, false, false]);
let codeword = BinVector::from_bools(&[false, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, false, false]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, true, false, true, false, true, true, true, false, false, false, false, false, true, false, true, false, true]);
let codeword = BinVector::from_bools(&[false, false, false, true, true, true, true, false, false, true, false, false, false, true, false, true, false, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
{
let code = BogosrndCode18_6;
let randvec = BinVector::from_bools(&[false, false, true, true, true, true, true, false, true, false, false, false, false, false, false, false, true, false]);
let codeword = BinVector::from_bools(&[false, false, true, true, false, true, true, false, true, true, false, false, true, false, false, false, true, true]);
assert_eq!(code.decode_to_code(&randvec), Ok(codeword));
}
}
#[test]
fn test_generator_representation() {
init();
let generator_matrix = unsafe { GENERATOR_MATRIX.as_ref().unwrap() };
let first_row = generator_matrix.get_window(0, 0, 1, generator_matrix.ncols());
let vector = BinVector::from_bools(&[ true, false, false, false, false, false, true, true, false, false, true, false, true, true, false, true, false, true ]);
assert_eq!(vector, first_row.as_vector());
}
}