using System; using System.Data; using System.Linq; using System.Text; using System.Drawing; using System.Text.RegularExpressions; using System.Security.Cryptography; using System.Collections.Generic; namespace PKHeX { public partial class PKX { // Data public static uint LCRNG(uint seed) { uint a = 0x41C64E6D; uint c = 0x00006073; seed = (seed * a + c) & 0xFFFFFFFF; return seed; } public static DataTable SpeciesTable() { DataTable table = new DataTable(); table.Columns.Add("Species", typeof(int)); table.Columns.Add("EXP Growth", typeof(int)); table.Columns.Add("BST HP", typeof(int)); table.Columns.Add("BST ATK", typeof(int)); table.Columns.Add("BST DEF", typeof(int)); table.Columns.Add("BST SpA", typeof(int)); table.Columns.Add("BST SpD", typeof(int)); table.Columns.Add("BST Spe", typeof(int)); table.Columns.Add("GT ID", typeof(int)); table.Rows.Add(0, 0, 0, 0, 0, 0, 0, 0, 256); table.Rows.Add(1, 3, 45, 49, 49, 65, 65, 45, 32); table.Rows.Add(2, 3, 60, 62, 63, 80, 80, 60, 32); table.Rows.Add(3, 3, 80, 82, 83, 100, 100, 80, 32); table.Rows.Add(4, 3, 39, 52, 43, 60, 50, 65, 32); table.Rows.Add(5, 3, 58, 64, 58, 80, 65, 80, 32); table.Rows.Add(6, 3, 78, 84, 78, 109, 85, 100, 32); table.Rows.Add(7, 3, 44, 48, 65, 50, 64, 43, 32); table.Rows.Add(8, 3, 59, 63, 80, 65, 80, 58, 32); table.Rows.Add(9, 3, 79, 83, 100, 85, 105, 78, 32); table.Rows.Add(10, 2, 45, 30, 35, 20, 20, 45, 128); table.Rows.Add(11, 2, 50, 20, 55, 25, 25, 30, 128); table.Rows.Add(12, 2, 60, 45, 50, 90, 80, 70, 128); table.Rows.Add(13, 2, 40, 35, 30, 20, 20, 50, 128); table.Rows.Add(14, 2, 45, 25, 50, 25, 25, 35, 128); table.Rows.Add(15, 2, 65, 90, 40, 45, 80, 75, 128); table.Rows.Add(16, 3, 40, 45, 40, 35, 35, 56, 128); table.Rows.Add(17, 3, 63, 60, 55, 50, 50, 71, 128); table.Rows.Add(18, 3, 83, 80, 75, 70, 70, 101, 128); table.Rows.Add(19, 2, 30, 56, 35, 25, 35, 72, 128); table.Rows.Add(20, 2, 55, 81, 60, 50, 70, 97, 128); table.Rows.Add(21, 2, 40, 60, 30, 31, 31, 70, 128); table.Rows.Add(22, 2, 65, 90, 65, 61, 61, 100, 128); table.Rows.Add(23, 2, 35, 60, 44, 40, 54, 55, 128); table.Rows.Add(24, 2, 60, 85, 69, 65, 79, 80, 128); table.Rows.Add(25, 2, 35, 55, 40, 50, 50, 90, 128); table.Rows.Add(26, 2, 60, 90, 55, 90, 80, 110, 128); table.Rows.Add(27, 2, 50, 75, 85, 20, 30, 40, 128); table.Rows.Add(28, 2, 75, 100, 110, 45, 55, 65, 128); table.Rows.Add(29, 3, 55, 47, 52, 40, 40, 41, 257); table.Rows.Add(30, 3, 70, 62, 67, 55, 55, 56, 257); table.Rows.Add(31, 3, 90, 92, 87, 75, 85, 76, 257); table.Rows.Add(32, 3, 46, 57, 40, 40, 40, 50, 256); table.Rows.Add(33, 3, 61, 72, 57, 55, 55, 65, 256); table.Rows.Add(34, 3, 81, 102, 77, 85, 75, 85, 256); table.Rows.Add(35, 1, 70, 45, 48, 60, 65, 35, 192); table.Rows.Add(36, 1, 95, 70, 73, 95, 90, 60, 192); table.Rows.Add(37, 2, 38, 41, 40, 50, 65, 65, 192); table.Rows.Add(38, 2, 73, 76, 75, 81, 100, 100, 192); table.Rows.Add(39, 1, 115, 45, 20, 45, 25, 20, 192); table.Rows.Add(40, 1, 140, 70, 45, 85, 50, 45, 192); table.Rows.Add(41, 2, 40, 45, 35, 30, 40, 55, 128); table.Rows.Add(42, 2, 75, 80, 70, 65, 75, 90, 128); table.Rows.Add(43, 3, 45, 50, 55, 75, 65, 30, 128); table.Rows.Add(44, 3, 60, 65, 70, 85, 75, 40, 128); table.Rows.Add(45, 3, 75, 80, 85, 110, 90, 50, 128); table.Rows.Add(46, 2, 35, 70, 55, 45, 55, 25, 128); table.Rows.Add(47, 2, 60, 95, 80, 60, 80, 30, 128); table.Rows.Add(48, 2, 60, 55, 50, 40, 55, 45, 128); table.Rows.Add(49, 2, 70, 65, 60, 90, 75, 90, 128); table.Rows.Add(50, 2, 10, 55, 25, 35, 45, 95, 128); table.Rows.Add(51, 2, 35, 80, 50, 50, 70, 120, 128); table.Rows.Add(52, 2, 40, 45, 35, 40, 40, 90, 128); table.Rows.Add(53, 2, 65, 70, 60, 65, 65, 115, 128); table.Rows.Add(54, 2, 50, 52, 48, 65, 50, 55, 128); table.Rows.Add(55, 2, 80, 82, 78, 95, 80, 85, 128); table.Rows.Add(56, 2, 40, 80, 35, 35, 45, 70, 128); table.Rows.Add(57, 2, 65, 105, 60, 60, 70, 95, 128); table.Rows.Add(58, 4, 55, 70, 45, 70, 50, 60, 64); table.Rows.Add(59, 4, 90, 110, 80, 100, 80, 95, 64); table.Rows.Add(60, 3, 40, 50, 40, 40, 40, 90, 128); table.Rows.Add(61, 3, 65, 65, 65, 50, 50, 90, 128); table.Rows.Add(62, 3, 90, 95, 95, 70, 90, 70, 128); table.Rows.Add(63, 3, 25, 20, 15, 105, 55, 90, 64); table.Rows.Add(64, 3, 40, 35, 30, 120, 70, 105, 64); table.Rows.Add(65, 3, 55, 50, 45, 135, 95, 120, 64); table.Rows.Add(66, 3, 70, 80, 50, 35, 35, 35, 64); table.Rows.Add(67, 3, 80, 100, 70, 50, 60, 45, 64); table.Rows.Add(68, 3, 90, 130, 80, 65, 85, 55, 64); table.Rows.Add(69, 3, 50, 75, 35, 70, 30, 40, 128); table.Rows.Add(70, 3, 65, 90, 50, 85, 45, 55, 128); table.Rows.Add(71, 3, 80, 105, 65, 100, 70, 70, 128); table.Rows.Add(72, 4, 40, 40, 35, 50, 100, 70, 128); table.Rows.Add(73, 4, 80, 70, 65, 80, 120, 100, 128); table.Rows.Add(74, 3, 40, 80, 100, 30, 30, 20, 128); table.Rows.Add(75, 3, 55, 95, 115, 45, 45, 35, 128); table.Rows.Add(76, 3, 80, 120, 130, 55, 65, 45, 128); table.Rows.Add(77, 2, 50, 85, 55, 65, 65, 90, 128); table.Rows.Add(78, 2, 65, 100, 70, 80, 80, 105, 128); table.Rows.Add(79, 2, 90, 65, 65, 40, 40, 15, 128); table.Rows.Add(80, 2, 95, 75, 110, 100, 80, 30, 128); table.Rows.Add(81, 2, 25, 35, 70, 95, 55, 45, 258); table.Rows.Add(82, 2, 50, 60, 95, 120, 70, 70, 258); table.Rows.Add(83, 2, 52, 65, 55, 58, 62, 60, 128); table.Rows.Add(84, 2, 35, 85, 45, 35, 35, 75, 128); table.Rows.Add(85, 2, 60, 110, 70, 60, 60, 100, 128); table.Rows.Add(86, 2, 65, 45, 55, 45, 70, 45, 128); table.Rows.Add(87, 2, 90, 70, 80, 70, 95, 70, 128); table.Rows.Add(88, 2, 80, 80, 50, 40, 50, 25, 128); table.Rows.Add(89, 2, 105, 105, 75, 65, 100, 50, 128); table.Rows.Add(90, 4, 30, 65, 100, 45, 25, 40, 128); table.Rows.Add(91, 4, 50, 95, 180, 85, 45, 70, 128); table.Rows.Add(92, 3, 30, 35, 30, 100, 35, 80, 128); table.Rows.Add(93, 3, 45, 50, 45, 115, 55, 95, 128); table.Rows.Add(94, 3, 60, 65, 60, 130, 75, 110, 128); table.Rows.Add(95, 2, 35, 45, 160, 30, 45, 70, 128); table.Rows.Add(96, 2, 60, 48, 45, 43, 90, 42, 128); table.Rows.Add(97, 2, 85, 73, 70, 73, 115, 67, 128); table.Rows.Add(98, 2, 30, 105, 90, 25, 25, 50, 128); table.Rows.Add(99, 2, 55, 130, 115, 50, 50, 75, 128); table.Rows.Add(100, 2, 40, 30, 50, 55, 55, 100, 258); table.Rows.Add(101, 2, 60, 50, 70, 80, 80, 140, 258); table.Rows.Add(102, 4, 60, 40, 80, 60, 45, 40, 128); table.Rows.Add(103, 4, 95, 95, 85, 125, 65, 55, 128); table.Rows.Add(104, 2, 50, 50, 95, 40, 50, 35, 128); table.Rows.Add(105, 2, 60, 80, 110, 50, 80, 45, 128); table.Rows.Add(106, 2, 50, 120, 53, 35, 110, 87, 256); table.Rows.Add(107, 2, 50, 105, 79, 35, 110, 76, 256); table.Rows.Add(108, 2, 90, 55, 75, 60, 75, 30, 128); table.Rows.Add(109, 2, 40, 65, 95, 60, 45, 35, 128); table.Rows.Add(110, 2, 65, 90, 120, 85, 70, 60, 128); table.Rows.Add(111, 4, 80, 85, 95, 30, 30, 25, 128); table.Rows.Add(112, 4, 105, 130, 120, 45, 45, 40, 128); table.Rows.Add(113, 1, 250, 5, 5, 35, 105, 50, 257); table.Rows.Add(114, 2, 65, 55, 115, 100, 40, 60, 128); table.Rows.Add(115, 2, 105, 95, 80, 40, 80, 90, 257); table.Rows.Add(116, 2, 30, 40, 70, 70, 25, 60, 128); table.Rows.Add(117, 2, 55, 65, 95, 95, 45, 85, 128); table.Rows.Add(118, 2, 45, 67, 60, 35, 50, 63, 128); table.Rows.Add(119, 2, 80, 92, 65, 65, 80, 68, 128); table.Rows.Add(120, 4, 30, 45, 55, 70, 55, 85, 258); table.Rows.Add(121, 4, 60, 75, 85, 100, 85, 115, 258); table.Rows.Add(122, 2, 40, 45, 65, 100, 120, 90, 128); table.Rows.Add(123, 2, 70, 110, 80, 55, 80, 105, 128); table.Rows.Add(124, 2, 65, 50, 35, 115, 95, 95, 257); table.Rows.Add(125, 2, 65, 83, 57, 95, 85, 105, 64); table.Rows.Add(126, 2, 65, 95, 57, 100, 85, 93, 64); table.Rows.Add(127, 4, 65, 125, 100, 55, 70, 85, 128); table.Rows.Add(128, 4, 75, 100, 95, 40, 70, 110, 256); table.Rows.Add(129, 4, 20, 10, 55, 15, 20, 80, 128); table.Rows.Add(130, 4, 95, 125, 79, 60, 100, 81, 128); table.Rows.Add(131, 4, 130, 85, 80, 85, 95, 60, 128); table.Rows.Add(132, 2, 48, 48, 48, 48, 48, 48, 258); table.Rows.Add(133, 2, 55, 55, 50, 45, 65, 55, 32); table.Rows.Add(134, 2, 130, 65, 60, 110, 95, 65, 32); table.Rows.Add(135, 2, 65, 65, 60, 110, 95, 130, 32); table.Rows.Add(136, 2, 65, 130, 60, 95, 110, 65, 32); table.Rows.Add(137, 2, 65, 60, 70, 85, 75, 40, 258); table.Rows.Add(138, 2, 35, 40, 100, 90, 55, 35, 32); table.Rows.Add(139, 2, 70, 60, 125, 115, 70, 55, 32); table.Rows.Add(140, 2, 30, 80, 90, 55, 45, 55, 32); table.Rows.Add(141, 2, 60, 115, 105, 65, 70, 80, 32); table.Rows.Add(142, 4, 80, 105, 65, 60, 75, 130, 32); table.Rows.Add(143, 4, 160, 110, 65, 65, 110, 30, 32); table.Rows.Add(144, 4, 90, 85, 100, 95, 125, 85, 258); table.Rows.Add(145, 4, 90, 90, 85, 125, 90, 100, 258); table.Rows.Add(146, 4, 90, 100, 90, 125, 85, 90, 258); table.Rows.Add(147, 4, 41, 64, 45, 50, 50, 50, 128); table.Rows.Add(148, 4, 61, 84, 65, 70, 70, 70, 128); table.Rows.Add(149, 4, 91, 134, 95, 100, 100, 80, 128); table.Rows.Add(150, 4, 106, 110, 90, 154, 90, 130, 258); table.Rows.Add(151, 3, 100, 100, 100, 100, 100, 100, 258); table.Rows.Add(152, 3, 45, 49, 65, 49, 65, 45, 32); table.Rows.Add(153, 3, 60, 62, 80, 63, 80, 60, 32); table.Rows.Add(154, 3, 80, 82, 100, 83, 100, 80, 32); table.Rows.Add(155, 3, 39, 52, 43, 60, 50, 65, 32); table.Rows.Add(156, 3, 58, 64, 58, 80, 65, 80, 32); table.Rows.Add(157, 3, 78, 84, 78, 109, 85, 100, 32); table.Rows.Add(158, 3, 50, 65, 64, 44, 48, 43, 32); table.Rows.Add(159, 3, 65, 80, 80, 59, 63, 58, 32); table.Rows.Add(160, 3, 85, 105, 100, 79, 83, 78, 32); table.Rows.Add(161, 2, 35, 46, 34, 35, 45, 20, 128); table.Rows.Add(162, 2, 85, 76, 64, 45, 55, 90, 128); table.Rows.Add(163, 2, 60, 30, 30, 36, 56, 50, 128); table.Rows.Add(164, 2, 100, 50, 50, 76, 96, 70, 128); table.Rows.Add(165, 1, 40, 20, 30, 40, 80, 55, 128); table.Rows.Add(166, 1, 55, 35, 50, 55, 110, 85, 128); table.Rows.Add(167, 1, 40, 60, 40, 40, 40, 30, 128); table.Rows.Add(168, 1, 70, 90, 70, 60, 60, 40, 128); table.Rows.Add(169, 2, 85, 90, 80, 70, 80, 130, 128); table.Rows.Add(170, 4, 75, 38, 38, 56, 56, 67, 128); table.Rows.Add(171, 4, 125, 58, 58, 76, 76, 67, 128); table.Rows.Add(172, 2, 20, 40, 15, 35, 35, 60, 128); table.Rows.Add(173, 1, 50, 25, 28, 45, 55, 15, 192); table.Rows.Add(174, 1, 90, 30, 15, 40, 20, 15, 192); table.Rows.Add(175, 1, 35, 20, 65, 40, 65, 20, 32); table.Rows.Add(176, 1, 55, 40, 85, 80, 105, 40, 32); table.Rows.Add(177, 2, 40, 50, 45, 70, 45, 70, 128); table.Rows.Add(178, 2, 65, 75, 70, 95, 70, 95, 128); table.Rows.Add(179, 3, 55, 40, 40, 65, 45, 35, 128); table.Rows.Add(180, 3, 70, 55, 55, 80, 60, 45, 128); table.Rows.Add(181, 3, 90, 75, 85, 115, 90, 55, 128); table.Rows.Add(182, 3, 75, 80, 95, 90, 100, 50, 128); table.Rows.Add(183, 1, 70, 20, 50, 20, 50, 40, 128); table.Rows.Add(184, 1, 100, 50, 80, 60, 80, 50, 128); table.Rows.Add(185, 2, 70, 100, 115, 30, 65, 30, 128); table.Rows.Add(186, 3, 90, 75, 75, 90, 100, 70, 128); table.Rows.Add(187, 3, 35, 35, 40, 35, 55, 50, 128); table.Rows.Add(188, 3, 55, 45, 50, 45, 65, 80, 128); table.Rows.Add(189, 3, 75, 55, 70, 55, 95, 110, 128); table.Rows.Add(190, 1, 55, 70, 55, 40, 55, 85, 128); table.Rows.Add(191, 3, 30, 30, 30, 30, 30, 30, 128); table.Rows.Add(192, 3, 75, 75, 55, 105, 85, 30, 128); table.Rows.Add(193, 2, 65, 65, 45, 75, 45, 95, 128); table.Rows.Add(194, 2, 55, 45, 45, 25, 25, 15, 128); table.Rows.Add(195, 2, 95, 85, 85, 65, 65, 35, 128); table.Rows.Add(196, 2, 65, 65, 60, 130, 95, 110, 32); table.Rows.Add(197, 2, 95, 65, 110, 60, 130, 65, 32); table.Rows.Add(198, 3, 60, 85, 42, 85, 42, 91, 128); table.Rows.Add(199, 2, 95, 75, 80, 100, 110, 30, 128); table.Rows.Add(200, 1, 60, 60, 60, 85, 85, 85, 128); table.Rows.Add(201, 2, 48, 72, 48, 72, 48, 48, 258); table.Rows.Add(202, 2, 190, 33, 58, 33, 58, 33, 128); table.Rows.Add(203, 2, 70, 80, 65, 90, 65, 85, 128); table.Rows.Add(204, 2, 50, 65, 90, 35, 35, 15, 128); table.Rows.Add(205, 2, 75, 90, 140, 60, 60, 40, 128); table.Rows.Add(206, 2, 100, 70, 70, 65, 65, 45, 128); table.Rows.Add(207, 3, 65, 75, 105, 35, 65, 85, 128); table.Rows.Add(208, 2, 75, 85, 200, 55, 65, 30, 128); table.Rows.Add(209, 1, 60, 80, 50, 40, 40, 30, 192); table.Rows.Add(210, 1, 90, 120, 75, 60, 60, 45, 192); table.Rows.Add(211, 2, 65, 95, 75, 55, 55, 85, 128); table.Rows.Add(212, 2, 70, 130, 100, 55, 80, 65, 128); table.Rows.Add(213, 3, 20, 10, 230, 10, 230, 5, 128); table.Rows.Add(214, 4, 80, 125, 75, 40, 95, 85, 128); table.Rows.Add(215, 3, 55, 95, 55, 35, 75, 115, 128); table.Rows.Add(216, 2, 60, 80, 50, 50, 50, 40, 128); table.Rows.Add(217, 2, 90, 130, 75, 75, 75, 55, 128); table.Rows.Add(218, 2, 40, 40, 40, 70, 40, 20, 128); table.Rows.Add(219, 2, 50, 50, 120, 80, 80, 30, 128); table.Rows.Add(220, 4, 50, 50, 40, 30, 30, 50, 128); table.Rows.Add(221, 4, 100, 100, 80, 60, 60, 50, 128); table.Rows.Add(222, 1, 55, 55, 85, 65, 85, 35, 192); table.Rows.Add(223, 2, 35, 65, 35, 65, 35, 65, 128); table.Rows.Add(224, 2, 75, 105, 75, 105, 75, 45, 128); table.Rows.Add(225, 1, 45, 55, 45, 65, 45, 75, 128); table.Rows.Add(226, 4, 65, 40, 70, 80, 140, 70, 128); table.Rows.Add(227, 4, 65, 80, 140, 40, 70, 70, 128); table.Rows.Add(228, 4, 45, 60, 30, 80, 50, 65, 128); table.Rows.Add(229, 4, 75, 90, 50, 110, 80, 95, 128); table.Rows.Add(230, 2, 75, 95, 95, 95, 95, 85, 128); table.Rows.Add(231, 2, 90, 60, 60, 40, 40, 40, 128); table.Rows.Add(232, 2, 90, 120, 120, 60, 60, 50, 128); table.Rows.Add(233, 2, 85, 80, 90, 105, 95, 60, 258); table.Rows.Add(234, 4, 73, 95, 62, 85, 65, 85, 128); table.Rows.Add(235, 1, 55, 20, 35, 20, 45, 75, 128); table.Rows.Add(236, 2, 35, 35, 35, 35, 35, 35, 256); table.Rows.Add(237, 2, 50, 95, 95, 35, 110, 70, 256); table.Rows.Add(238, 2, 45, 30, 15, 85, 65, 65, 257); table.Rows.Add(239, 2, 45, 63, 37, 65, 55, 95, 64); table.Rows.Add(240, 2, 45, 75, 37, 70, 55, 83, 64); table.Rows.Add(241, 4, 95, 80, 105, 40, 70, 100, 257); table.Rows.Add(242, 1, 255, 10, 10, 75, 135, 55, 257); table.Rows.Add(243, 4, 90, 85, 75, 115, 100, 115, 258); table.Rows.Add(244, 4, 115, 115, 85, 90, 75, 100, 258); table.Rows.Add(245, 4, 100, 75, 115, 90, 115, 85, 258); table.Rows.Add(246, 4, 50, 64, 50, 45, 50, 41, 128); table.Rows.Add(247, 4, 70, 84, 70, 65, 70, 51, 128); table.Rows.Add(248, 4, 100, 134, 110, 95, 100, 61, 128); table.Rows.Add(249, 4, 106, 90, 130, 90, 154, 110, 258); table.Rows.Add(250, 4, 106, 130, 90, 110, 154, 90, 258); table.Rows.Add(251, 3, 100, 100, 100, 100, 100, 100, 258); table.Rows.Add(252, 3, 40, 45, 35, 65, 55, 70, 32); table.Rows.Add(253, 3, 50, 65, 45, 85, 65, 95, 32); table.Rows.Add(254, 3, 70, 85, 65, 105, 85, 120, 32); table.Rows.Add(255, 3, 45, 60, 40, 70, 50, 45, 32); table.Rows.Add(256, 3, 60, 85, 60, 85, 60, 55, 32); table.Rows.Add(257, 3, 80, 120, 70, 110, 70, 80, 32); table.Rows.Add(258, 3, 50, 70, 50, 50, 50, 40, 32); table.Rows.Add(259, 3, 70, 85, 70, 60, 70, 50, 32); table.Rows.Add(260, 3, 100, 110, 90, 85, 90, 60, 32); table.Rows.Add(261, 2, 35, 55, 35, 30, 30, 35, 128); table.Rows.Add(262, 2, 70, 90, 70, 60, 60, 70, 128); table.Rows.Add(263, 2, 38, 30, 41, 30, 41, 60, 128); table.Rows.Add(264, 2, 78, 70, 61, 50, 61, 100, 128); table.Rows.Add(265, 2, 45, 45, 35, 20, 30, 20, 128); table.Rows.Add(266, 2, 50, 35, 55, 25, 25, 15, 128); table.Rows.Add(267, 2, 60, 70, 50, 100, 50, 65, 128); table.Rows.Add(268, 2, 50, 35, 55, 25, 25, 15, 128); table.Rows.Add(269, 2, 60, 50, 70, 50, 90, 65, 128); table.Rows.Add(270, 3, 40, 30, 30, 40, 50, 30, 128); table.Rows.Add(271, 3, 60, 50, 50, 60, 70, 50, 128); table.Rows.Add(272, 3, 80, 70, 70, 90, 100, 70, 128); table.Rows.Add(273, 3, 40, 40, 50, 30, 30, 30, 128); table.Rows.Add(274, 3, 70, 70, 40, 60, 40, 60, 128); table.Rows.Add(275, 3, 90, 100, 60, 90, 60, 80, 128); table.Rows.Add(276, 3, 40, 55, 30, 30, 30, 85, 128); table.Rows.Add(277, 3, 60, 85, 60, 50, 50, 125, 128); table.Rows.Add(278, 2, 40, 30, 30, 55, 30, 85, 128); table.Rows.Add(279, 2, 60, 50, 100, 85, 70, 65, 128); table.Rows.Add(280, 4, 28, 25, 25, 45, 35, 40, 128); table.Rows.Add(281, 4, 38, 35, 35, 65, 55, 50, 128); table.Rows.Add(282, 4, 68, 65, 65, 125, 115, 80, 128); table.Rows.Add(283, 2, 40, 30, 32, 50, 52, 65, 128); table.Rows.Add(284, 2, 70, 60, 62, 80, 82, 60, 128); table.Rows.Add(285, 5, 60, 40, 60, 40, 60, 35, 128); table.Rows.Add(286, 5, 60, 130, 80, 60, 60, 70, 128); table.Rows.Add(287, 4, 60, 60, 60, 35, 35, 30, 128); table.Rows.Add(288, 4, 80, 80, 80, 55, 55, 90, 128); table.Rows.Add(289, 4, 150, 160, 100, 95, 65, 100, 128); table.Rows.Add(290, 0, 31, 45, 90, 30, 30, 40, 128); table.Rows.Add(291, 0, 61, 90, 45, 50, 50, 160, 128); table.Rows.Add(292, 0, 1, 90, 45, 30, 30, 40, 258); table.Rows.Add(293, 3, 64, 51, 23, 51, 23, 28, 128); table.Rows.Add(294, 3, 84, 71, 43, 71, 43, 48, 128); table.Rows.Add(295, 3, 104, 91, 63, 91, 73, 68, 128); table.Rows.Add(296, 5, 72, 60, 30, 20, 30, 25, 64); table.Rows.Add(297, 5, 144, 120, 60, 40, 60, 50, 64); table.Rows.Add(298, 1, 50, 20, 40, 20, 40, 20, 192); table.Rows.Add(299, 2, 30, 45, 135, 45, 90, 30, 128); table.Rows.Add(300, 1, 50, 45, 45, 35, 35, 50, 192); table.Rows.Add(301, 1, 70, 65, 65, 55, 55, 70, 192); table.Rows.Add(302, 3, 50, 75, 75, 65, 65, 50, 128); table.Rows.Add(303, 1, 50, 85, 85, 55, 55, 50, 128); table.Rows.Add(304, 4, 50, 70, 100, 40, 40, 30, 128); table.Rows.Add(305, 4, 60, 90, 140, 50, 50, 40, 128); table.Rows.Add(306, 4, 70, 110, 180, 60, 60, 50, 128); table.Rows.Add(307, 2, 30, 40, 55, 40, 55, 60, 128); table.Rows.Add(308, 2, 60, 60, 75, 60, 75, 80, 128); table.Rows.Add(309, 4, 40, 45, 40, 65, 40, 65, 128); table.Rows.Add(310, 4, 70, 75, 60, 105, 60, 105, 128); table.Rows.Add(311, 2, 60, 50, 40, 85, 75, 95, 128); table.Rows.Add(312, 2, 60, 40, 50, 75, 85, 95, 128); table.Rows.Add(313, 0, 65, 73, 55, 47, 75, 85, 256); table.Rows.Add(314, 5, 65, 47, 55, 73, 75, 85, 257); table.Rows.Add(315, 3, 50, 60, 45, 100, 80, 65, 128); table.Rows.Add(316, 5, 70, 43, 53, 43, 53, 40, 128); table.Rows.Add(317, 5, 100, 73, 83, 73, 83, 55, 128); table.Rows.Add(318, 4, 45, 90, 20, 65, 20, 65, 128); table.Rows.Add(319, 4, 70, 120, 40, 95, 40, 95, 128); table.Rows.Add(320, 5, 130, 70, 35, 70, 35, 60, 128); table.Rows.Add(321, 5, 170, 90, 45, 90, 45, 60, 128); table.Rows.Add(322, 2, 60, 60, 40, 65, 45, 35, 128); table.Rows.Add(323, 2, 70, 100, 70, 105, 75, 40, 128); table.Rows.Add(324, 2, 70, 85, 140, 85, 70, 20, 128); table.Rows.Add(325, 1, 60, 25, 35, 70, 80, 60, 128); table.Rows.Add(326, 1, 80, 45, 65, 90, 110, 80, 128); table.Rows.Add(327, 1, 60, 60, 60, 60, 60, 60, 128); table.Rows.Add(328, 3, 45, 100, 45, 45, 45, 10, 128); table.Rows.Add(329, 3, 50, 70, 50, 50, 50, 70, 128); table.Rows.Add(330, 3, 80, 100, 80, 80, 80, 100, 128); table.Rows.Add(331, 3, 50, 85, 40, 85, 40, 35, 128); table.Rows.Add(332, 3, 70, 115, 60, 115, 60, 55, 128); table.Rows.Add(333, 0, 45, 40, 60, 40, 75, 50, 128); table.Rows.Add(334, 0, 75, 70, 90, 70, 105, 80, 128); table.Rows.Add(335, 0, 73, 115, 60, 60, 60, 90, 128); table.Rows.Add(336, 5, 73, 100, 60, 100, 60, 65, 128); table.Rows.Add(337, 1, 70, 55, 65, 95, 85, 70, 258); table.Rows.Add(338, 1, 70, 95, 85, 55, 65, 70, 258); table.Rows.Add(339, 2, 50, 48, 43, 46, 41, 60, 128); table.Rows.Add(340, 2, 110, 78, 73, 76, 71, 60, 128); table.Rows.Add(341, 5, 43, 80, 65, 50, 35, 35, 128); table.Rows.Add(342, 5, 63, 120, 85, 90, 55, 55, 128); table.Rows.Add(343, 2, 40, 40, 55, 40, 70, 55, 258); table.Rows.Add(344, 2, 60, 70, 105, 70, 120, 75, 258); table.Rows.Add(345, 0, 66, 41, 77, 61, 87, 23, 32); table.Rows.Add(346, 0, 86, 81, 97, 81, 107, 43, 32); table.Rows.Add(347, 0, 45, 95, 50, 40, 50, 75, 32); table.Rows.Add(348, 0, 75, 125, 100, 70, 80, 45, 32); table.Rows.Add(349, 0, 20, 15, 20, 10, 55, 80, 128); table.Rows.Add(350, 0, 95, 60, 79, 100, 125, 81, 128); table.Rows.Add(351, 2, 70, 70, 70, 70, 70, 70, 128); table.Rows.Add(352, 3, 60, 90, 70, 60, 120, 40, 128); table.Rows.Add(353, 1, 44, 75, 35, 63, 33, 45, 128); table.Rows.Add(354, 1, 64, 115, 65, 83, 63, 65, 128); table.Rows.Add(355, 1, 20, 40, 90, 30, 90, 25, 128); table.Rows.Add(356, 1, 40, 70, 130, 60, 130, 25, 128); table.Rows.Add(357, 4, 99, 68, 83, 72, 87, 51, 128); table.Rows.Add(358, 1, 65, 50, 70, 95, 80, 65, 128); table.Rows.Add(359, 3, 65, 130, 60, 75, 60, 75, 128); table.Rows.Add(360, 2, 95, 23, 48, 23, 48, 23, 128); table.Rows.Add(361, 2, 50, 50, 50, 50, 50, 50, 128); table.Rows.Add(362, 2, 80, 80, 80, 80, 80, 80, 128); table.Rows.Add(363, 3, 70, 40, 50, 55, 50, 25, 128); table.Rows.Add(364, 3, 90, 60, 70, 75, 70, 45, 128); table.Rows.Add(365, 3, 110, 80, 90, 95, 90, 65, 128); table.Rows.Add(366, 0, 35, 64, 85, 74, 55, 32, 128); table.Rows.Add(367, 0, 55, 104, 105, 94, 75, 52, 128); table.Rows.Add(368, 0, 55, 84, 105, 114, 75, 52, 128); table.Rows.Add(369, 4, 100, 90, 130, 45, 65, 55, 32); table.Rows.Add(370, 1, 43, 30, 55, 40, 65, 97, 192); table.Rows.Add(371, 4, 45, 75, 60, 40, 30, 50, 128); table.Rows.Add(372, 4, 65, 95, 100, 60, 50, 50, 128); table.Rows.Add(373, 4, 95, 135, 80, 110, 80, 100, 128); table.Rows.Add(374, 4, 40, 55, 80, 35, 60, 30, 258); table.Rows.Add(375, 4, 60, 75, 100, 55, 80, 50, 258); table.Rows.Add(376, 4, 80, 135, 130, 95, 90, 70, 258); table.Rows.Add(377, 4, 80, 100, 200, 50, 100, 50, 258); table.Rows.Add(378, 4, 80, 50, 100, 100, 200, 50, 258); table.Rows.Add(379, 4, 80, 75, 150, 75, 150, 50, 258); table.Rows.Add(380, 4, 80, 80, 90, 110, 130, 110, 257); table.Rows.Add(381, 4, 80, 90, 80, 130, 110, 110, 256); table.Rows.Add(382, 4, 100, 100, 90, 150, 140, 90, 258); table.Rows.Add(383, 4, 100, 150, 140, 100, 90, 90, 258); table.Rows.Add(384, 4, 105, 150, 90, 150, 90, 95, 258); table.Rows.Add(385, 4, 100, 100, 100, 100, 100, 100, 258); table.Rows.Add(386, 4, 50, 180, 20, 180, 20, 150, 258); table.Rows.Add(387, 3, 55, 68, 64, 45, 55, 31, 32); table.Rows.Add(388, 3, 75, 89, 85, 55, 65, 36, 32); table.Rows.Add(389, 3, 95, 109, 105, 75, 85, 56, 32); table.Rows.Add(390, 3, 44, 58, 44, 58, 44, 61, 32); table.Rows.Add(391, 3, 64, 78, 52, 78, 52, 81, 32); table.Rows.Add(392, 3, 76, 104, 71, 104, 71, 108, 32); table.Rows.Add(393, 3, 53, 51, 53, 61, 56, 40, 32); table.Rows.Add(394, 3, 64, 66, 68, 81, 76, 50, 32); table.Rows.Add(395, 3, 84, 86, 88, 111, 101, 60, 32); table.Rows.Add(396, 3, 40, 55, 30, 30, 30, 60, 128); table.Rows.Add(397, 3, 55, 75, 50, 40, 40, 80, 128); table.Rows.Add(398, 3, 85, 120, 70, 50, 60, 100, 128); table.Rows.Add(399, 2, 59, 45, 40, 35, 40, 31, 128); table.Rows.Add(400, 2, 79, 85, 60, 55, 60, 71, 128); table.Rows.Add(401, 3, 37, 25, 41, 25, 41, 25, 128); table.Rows.Add(402, 3, 77, 85, 51, 55, 51, 65, 128); table.Rows.Add(403, 3, 45, 65, 34, 40, 34, 45, 128); table.Rows.Add(404, 3, 60, 85, 49, 60, 49, 60, 128); table.Rows.Add(405, 3, 80, 120, 79, 95, 79, 70, 128); table.Rows.Add(406, 3, 40, 30, 35, 50, 70, 55, 128); table.Rows.Add(407, 3, 60, 70, 65, 125, 105, 90, 128); table.Rows.Add(408, 0, 67, 125, 40, 30, 30, 58, 32); table.Rows.Add(409, 0, 97, 165, 60, 65, 50, 58, 32); table.Rows.Add(410, 0, 30, 42, 118, 42, 88, 30, 32); table.Rows.Add(411, 0, 60, 52, 168, 47, 138, 30, 32); table.Rows.Add(412, 2, 40, 29, 45, 29, 45, 36, 128); table.Rows.Add(413, 2, 60, 59, 85, 79, 105, 36, 257); table.Rows.Add(414, 2, 70, 94, 50, 94, 50, 66, 256); table.Rows.Add(415, 3, 30, 30, 42, 30, 42, 70, 32); table.Rows.Add(416, 3, 70, 80, 102, 80, 102, 40, 257); table.Rows.Add(417, 2, 60, 45, 70, 45, 90, 95, 128); table.Rows.Add(418, 2, 55, 65, 35, 60, 30, 85, 128); table.Rows.Add(419, 2, 85, 105, 55, 85, 50, 115, 128); table.Rows.Add(420, 2, 45, 35, 45, 62, 53, 35, 128); table.Rows.Add(421, 2, 70, 60, 70, 87, 78, 85, 128); table.Rows.Add(422, 2, 76, 48, 48, 57, 62, 34, 128); table.Rows.Add(423, 2, 111, 83, 68, 92, 82, 39, 128); table.Rows.Add(424, 1, 75, 100, 66, 60, 66, 115, 128); table.Rows.Add(425, 5, 90, 50, 34, 60, 44, 70, 128); table.Rows.Add(426, 5, 150, 80, 44, 90, 54, 80, 128); table.Rows.Add(427, 2, 55, 66, 44, 44, 56, 85, 128); table.Rows.Add(428, 2, 65, 76, 84, 54, 96, 105, 128); table.Rows.Add(429, 1, 60, 60, 60, 105, 105, 105, 128); table.Rows.Add(430, 3, 100, 125, 52, 105, 52, 71, 128); table.Rows.Add(431, 1, 49, 55, 42, 42, 37, 85, 192); table.Rows.Add(432, 1, 71, 82, 64, 64, 59, 112, 192); table.Rows.Add(433, 1, 45, 30, 50, 65, 50, 45, 128); table.Rows.Add(434, 2, 63, 63, 47, 41, 41, 74, 128); table.Rows.Add(435, 2, 103, 93, 67, 71, 61, 84, 128); table.Rows.Add(436, 2, 57, 24, 86, 24, 86, 23, 258); table.Rows.Add(437, 2, 67, 89, 116, 79, 116, 33, 258); table.Rows.Add(438, 2, 50, 80, 95, 10, 45, 10, 128); table.Rows.Add(439, 2, 20, 25, 45, 70, 90, 60, 128); table.Rows.Add(440, 1, 100, 5, 5, 15, 65, 30, 257); table.Rows.Add(441, 3, 76, 65, 45, 92, 42, 91, 128); table.Rows.Add(442, 2, 50, 92, 108, 92, 108, 35, 128); table.Rows.Add(443, 4, 58, 70, 45, 40, 45, 42, 128); table.Rows.Add(444, 4, 68, 90, 65, 50, 55, 82, 128); table.Rows.Add(445, 4, 108, 130, 95, 80, 85, 102, 128); table.Rows.Add(446, 4, 135, 85, 40, 40, 85, 5, 32); table.Rows.Add(447, 3, 40, 70, 40, 35, 40, 60, 32); table.Rows.Add(448, 3, 70, 110, 70, 115, 70, 90, 32); table.Rows.Add(449, 4, 68, 72, 78, 38, 42, 32, 128); table.Rows.Add(450, 4, 108, 112, 118, 68, 72, 47, 128); table.Rows.Add(451, 4, 40, 50, 90, 30, 55, 65, 128); table.Rows.Add(452, 4, 70, 90, 110, 60, 75, 95, 128); table.Rows.Add(453, 2, 48, 61, 40, 61, 40, 50, 128); table.Rows.Add(454, 2, 83, 106, 65, 86, 65, 85, 128); table.Rows.Add(455, 4, 74, 100, 72, 90, 72, 46, 128); table.Rows.Add(456, 0, 49, 49, 56, 49, 61, 66, 128); table.Rows.Add(457, 0, 69, 69, 76, 69, 86, 91, 128); table.Rows.Add(458, 4, 45, 20, 50, 60, 120, 50, 128); table.Rows.Add(459, 4, 60, 62, 50, 62, 60, 40, 128); table.Rows.Add(460, 4, 90, 92, 75, 92, 85, 60, 128); table.Rows.Add(461, 3, 70, 120, 65, 45, 85, 125, 128); table.Rows.Add(462, 2, 70, 70, 115, 130, 90, 60, 258); table.Rows.Add(463, 2, 110, 85, 95, 80, 95, 50, 128); table.Rows.Add(464, 4, 115, 140, 130, 55, 55, 40, 128); table.Rows.Add(465, 2, 100, 100, 125, 110, 50, 50, 128); table.Rows.Add(466, 2, 75, 123, 67, 95, 85, 95, 64); table.Rows.Add(467, 2, 75, 95, 67, 125, 95, 83, 64); table.Rows.Add(468, 1, 85, 50, 95, 120, 115, 80, 32); table.Rows.Add(469, 2, 86, 76, 86, 116, 56, 95, 128); table.Rows.Add(470, 2, 65, 110, 130, 60, 65, 95, 32); table.Rows.Add(471, 2, 65, 60, 110, 130, 95, 65, 32); table.Rows.Add(472, 3, 75, 95, 125, 45, 75, 95, 128); table.Rows.Add(473, 4, 110, 130, 80, 70, 60, 80, 128); table.Rows.Add(474, 2, 85, 80, 70, 135, 75, 90, 258); table.Rows.Add(475, 4, 68, 125, 65, 65, 115, 80, 256); table.Rows.Add(476, 2, 60, 55, 145, 75, 150, 40, 128); table.Rows.Add(477, 1, 45, 100, 135, 65, 135, 45, 128); table.Rows.Add(478, 2, 70, 80, 70, 80, 70, 110, 257); table.Rows.Add(479, 2, 50, 65, 107, 105, 107, 86, 258); table.Rows.Add(480, 4, 75, 75, 130, 75, 130, 95, 258); table.Rows.Add(481, 4, 80, 105, 105, 105, 105, 80, 258); table.Rows.Add(482, 4, 75, 125, 70, 125, 70, 115, 258); table.Rows.Add(483, 4, 100, 120, 120, 150, 100, 90, 258); table.Rows.Add(484, 4, 90, 120, 100, 150, 120, 100, 258); table.Rows.Add(485, 4, 91, 90, 106, 130, 106, 77, 128); table.Rows.Add(486, 4, 110, 160, 110, 80, 110, 100, 258); table.Rows.Add(487, 4, 150, 100, 120, 100, 120, 90, 258); table.Rows.Add(488, 4, 120, 70, 120, 75, 130, 85, 257); table.Rows.Add(489, 4, 80, 80, 80, 80, 80, 80, 258); table.Rows.Add(490, 4, 100, 100, 100, 100, 100, 100, 258); table.Rows.Add(491, 4, 70, 90, 90, 135, 90, 125, 258); table.Rows.Add(492, 3, 100, 100, 100, 100, 100, 100, 258); table.Rows.Add(493, 4, 120, 120, 120, 120, 120, 120, 258); table.Rows.Add(494, 4, 100, 100, 100, 100, 100, 100, 258); table.Rows.Add(495, 3, 45, 45, 55, 45, 55, 63, 32); table.Rows.Add(496, 3, 60, 60, 75, 60, 75, 83, 32); table.Rows.Add(497, 3, 75, 75, 95, 75, 95, 113, 32); table.Rows.Add(498, 3, 65, 63, 45, 45, 45, 45, 32); table.Rows.Add(499, 3, 90, 93, 55, 70, 55, 55, 32); table.Rows.Add(500, 3, 110, 123, 65, 100, 65, 65, 32); table.Rows.Add(501, 3, 55, 55, 45, 63, 45, 45, 32); table.Rows.Add(502, 3, 75, 75, 60, 83, 60, 60, 32); table.Rows.Add(503, 3, 95, 100, 85, 108, 70, 70, 32); table.Rows.Add(504, 2, 45, 55, 39, 35, 39, 42, 128); table.Rows.Add(505, 2, 60, 85, 69, 60, 69, 77, 128); table.Rows.Add(506, 3, 45, 60, 45, 25, 45, 55, 128); table.Rows.Add(507, 3, 65, 80, 65, 35, 65, 60, 128); table.Rows.Add(508, 3, 85, 110, 90, 45, 90, 80, 128); table.Rows.Add(509, 2, 41, 50, 37, 50, 37, 66, 128); table.Rows.Add(510, 2, 64, 88, 50, 88, 50, 106, 128); table.Rows.Add(511, 2, 50, 53, 48, 53, 48, 64, 32); table.Rows.Add(512, 2, 75, 98, 63, 98, 63, 101, 32); table.Rows.Add(513, 2, 50, 53, 48, 53, 48, 64, 32); table.Rows.Add(514, 2, 75, 98, 63, 98, 63, 101, 32); table.Rows.Add(515, 2, 50, 53, 48, 53, 48, 64, 32); table.Rows.Add(516, 2, 75, 98, 63, 98, 63, 101, 32); table.Rows.Add(517, 1, 76, 25, 45, 67, 55, 24, 128); table.Rows.Add(518, 1, 116, 55, 85, 107, 95, 29, 128); table.Rows.Add(519, 3, 50, 55, 50, 36, 30, 43, 128); table.Rows.Add(520, 3, 62, 77, 62, 50, 42, 65, 128); table.Rows.Add(521, 3, 80, 115, 80, 65, 55, 93, 128); table.Rows.Add(522, 2, 45, 60, 32, 50, 32, 76, 128); table.Rows.Add(523, 2, 75, 100, 63, 80, 63, 116, 128); table.Rows.Add(524, 3, 55, 75, 85, 25, 25, 15, 128); table.Rows.Add(525, 3, 70, 105, 105, 50, 40, 20, 128); table.Rows.Add(526, 3, 85, 135, 130, 60, 80, 25, 128); table.Rows.Add(527, 2, 55, 45, 43, 55, 43, 72, 128); table.Rows.Add(528, 2, 67, 57, 55, 77, 55, 114, 128); table.Rows.Add(529, 2, 60, 85, 40, 30, 45, 68, 128); table.Rows.Add(530, 2, 110, 135, 60, 50, 65, 88, 128); table.Rows.Add(531, 1, 103, 60, 86, 60, 86, 50, 128); table.Rows.Add(532, 3, 75, 80, 55, 25, 35, 35, 64); table.Rows.Add(533, 3, 85, 105, 85, 40, 50, 40, 64); table.Rows.Add(534, 3, 105, 140, 95, 55, 65, 45, 64); table.Rows.Add(535, 3, 50, 50, 40, 50, 40, 64, 128); table.Rows.Add(536, 3, 75, 65, 55, 65, 55, 69, 128); table.Rows.Add(537, 3, 105, 95, 75, 85, 75, 74, 128); table.Rows.Add(538, 2, 120, 100, 85, 30, 85, 45, 256); table.Rows.Add(539, 2, 75, 125, 75, 30, 75, 85, 256); table.Rows.Add(540, 3, 45, 53, 70, 40, 60, 42, 128); table.Rows.Add(541, 3, 55, 63, 90, 50, 80, 42, 128); table.Rows.Add(542, 3, 75, 103, 80, 70, 80, 92, 128); table.Rows.Add(543, 3, 30, 45, 59, 30, 39, 57, 128); table.Rows.Add(544, 3, 40, 55, 99, 40, 79, 47, 128); table.Rows.Add(545, 3, 60, 100, 89, 55, 69, 112, 128); table.Rows.Add(546, 2, 40, 27, 60, 37, 50, 66, 128); table.Rows.Add(547, 2, 60, 67, 85, 77, 75, 116, 128); table.Rows.Add(548, 2, 45, 35, 50, 70, 50, 30, 257); table.Rows.Add(549, 2, 70, 60, 75, 110, 75, 90, 257); table.Rows.Add(550, 2, 70, 92, 65, 80, 55, 98, 128); table.Rows.Add(551, 3, 50, 72, 35, 35, 35, 65, 128); table.Rows.Add(552, 3, 60, 82, 45, 45, 45, 74, 128); table.Rows.Add(553, 3, 95, 117, 80, 65, 70, 92, 128); table.Rows.Add(554, 3, 70, 90, 45, 15, 45, 50, 128); table.Rows.Add(555, 3, 105, 140, 55, 30, 55, 95, 128); table.Rows.Add(556, 2, 75, 86, 67, 106, 67, 60, 128); table.Rows.Add(557, 2, 50, 65, 85, 35, 35, 55, 128); table.Rows.Add(558, 2, 70, 95, 125, 65, 75, 45, 128); table.Rows.Add(559, 2, 50, 75, 70, 35, 70, 48, 128); table.Rows.Add(560, 2, 65, 90, 115, 45, 115, 58, 128); table.Rows.Add(561, 2, 72, 58, 80, 103, 80, 97, 128); table.Rows.Add(562, 2, 38, 30, 85, 55, 65, 30, 128); table.Rows.Add(563, 2, 58, 50, 145, 95, 105, 30, 128); table.Rows.Add(564, 2, 54, 78, 103, 53, 45, 22, 32); table.Rows.Add(565, 2, 74, 108, 133, 83, 65, 32, 32); table.Rows.Add(566, 2, 55, 112, 45, 74, 45, 70, 32); table.Rows.Add(567, 2, 75, 140, 65, 112, 65, 110, 32); table.Rows.Add(568, 2, 50, 50, 62, 40, 62, 65, 128); table.Rows.Add(569, 2, 80, 95, 82, 60, 82, 75, 128); table.Rows.Add(570, 3, 40, 65, 40, 80, 40, 65, 32); table.Rows.Add(571, 3, 60, 105, 60, 120, 60, 105, 32); table.Rows.Add(572, 1, 55, 50, 40, 40, 40, 75, 192); table.Rows.Add(573, 1, 75, 95, 60, 65, 60, 115, 192); table.Rows.Add(574, 3, 45, 30, 50, 55, 65, 45, 192); table.Rows.Add(575, 3, 60, 45, 70, 75, 85, 55, 192); table.Rows.Add(576, 3, 70, 55, 95, 95, 110, 65, 192); table.Rows.Add(577, 3, 45, 30, 40, 105, 50, 20, 128); table.Rows.Add(578, 3, 65, 40, 50, 125, 60, 30, 128); table.Rows.Add(579, 3, 110, 65, 75, 125, 85, 30, 128); table.Rows.Add(580, 2, 62, 44, 50, 44, 50, 55, 128); table.Rows.Add(581, 2, 75, 87, 63, 87, 63, 98, 128); table.Rows.Add(582, 4, 36, 50, 50, 65, 60, 44, 128); table.Rows.Add(583, 4, 51, 65, 65, 80, 75, 59, 128); table.Rows.Add(584, 4, 71, 95, 85, 110, 95, 79, 128); table.Rows.Add(585, 2, 60, 60, 50, 40, 50, 75, 128); table.Rows.Add(586, 2, 80, 100, 70, 60, 70, 95, 128); table.Rows.Add(587, 2, 55, 75, 60, 75, 60, 103, 128); table.Rows.Add(588, 2, 50, 75, 45, 40, 45, 60, 128); table.Rows.Add(589, 2, 70, 135, 105, 60, 105, 20, 128); table.Rows.Add(590, 2, 69, 55, 45, 55, 55, 15, 128); table.Rows.Add(591, 2, 114, 85, 70, 85, 80, 30, 128); table.Rows.Add(592, 2, 55, 40, 50, 65, 85, 40, 128); table.Rows.Add(593, 2, 100, 60, 70, 85, 105, 60, 128); table.Rows.Add(594, 1, 165, 75, 80, 40, 45, 65, 128); table.Rows.Add(595, 2, 50, 47, 50, 57, 50, 65, 128); table.Rows.Add(596, 2, 70, 77, 60, 97, 60, 108, 128); table.Rows.Add(597, 2, 44, 50, 91, 24, 86, 10, 128); table.Rows.Add(598, 2, 74, 94, 131, 54, 116, 20, 128); table.Rows.Add(599, 3, 40, 55, 70, 45, 60, 30, 258); table.Rows.Add(600, 3, 60, 80, 95, 70, 85, 50, 258); table.Rows.Add(601, 3, 60, 100, 115, 70, 85, 90, 258); table.Rows.Add(602, 4, 35, 55, 40, 45, 40, 60, 128); table.Rows.Add(603, 4, 65, 85, 70, 75, 70, 40, 128); table.Rows.Add(604, 4, 85, 115, 80, 105, 80, 50, 128); table.Rows.Add(605, 2, 55, 55, 55, 85, 55, 30, 128); table.Rows.Add(606, 2, 75, 75, 75, 125, 95, 40, 128); table.Rows.Add(607, 3, 50, 30, 55, 65, 55, 20, 128); table.Rows.Add(608, 3, 60, 40, 60, 95, 60, 55, 128); table.Rows.Add(609, 3, 60, 55, 90, 145, 90, 80, 128); table.Rows.Add(610, 4, 46, 87, 60, 30, 40, 57, 128); table.Rows.Add(611, 4, 66, 117, 70, 40, 50, 67, 128); table.Rows.Add(612, 4, 76, 147, 90, 60, 70, 97, 128); table.Rows.Add(613, 2, 55, 70, 40, 60, 40, 40, 128); table.Rows.Add(614, 2, 95, 110, 80, 70, 80, 50, 128); table.Rows.Add(615, 2, 70, 50, 30, 95, 135, 105, 258); table.Rows.Add(616, 2, 50, 40, 85, 40, 65, 25, 128); table.Rows.Add(617, 2, 80, 70, 40, 100, 60, 145, 128); table.Rows.Add(618, 2, 109, 66, 84, 81, 99, 32, 128); table.Rows.Add(619, 3, 45, 85, 50, 55, 50, 65, 128); table.Rows.Add(620, 3, 65, 125, 60, 95, 60, 105, 128); table.Rows.Add(621, 2, 77, 120, 90, 60, 90, 48, 128); table.Rows.Add(622, 2, 59, 74, 50, 35, 50, 35, 258); table.Rows.Add(623, 2, 89, 124, 80, 55, 80, 55, 258); table.Rows.Add(624, 2, 45, 85, 70, 40, 40, 60, 128); table.Rows.Add(625, 2, 65, 125, 100, 60, 70, 70, 128); table.Rows.Add(626, 2, 95, 110, 95, 40, 95, 55, 128); table.Rows.Add(627, 4, 70, 83, 50, 37, 50, 60, 256); table.Rows.Add(628, 4, 100, 123, 75, 57, 75, 80, 256); table.Rows.Add(629, 4, 70, 55, 75, 45, 65, 60, 257); table.Rows.Add(630, 4, 110, 65, 105, 55, 95, 80, 257); table.Rows.Add(631, 2, 85, 97, 66, 105, 66, 65, 128); table.Rows.Add(632, 2, 58, 109, 112, 48, 48, 109, 128); table.Rows.Add(633, 4, 52, 65, 50, 45, 50, 38, 128); table.Rows.Add(634, 4, 72, 85, 70, 65, 70, 58, 128); table.Rows.Add(635, 4, 92, 105, 90, 125, 90, 98, 128); table.Rows.Add(636, 4, 55, 85, 55, 50, 55, 60, 128); table.Rows.Add(637, 4, 85, 60, 65, 135, 105, 100, 128); table.Rows.Add(638, 4, 91, 90, 129, 90, 72, 108, 258); table.Rows.Add(639, 4, 91, 129, 90, 72, 90, 108, 258); table.Rows.Add(640, 4, 91, 90, 72, 90, 129, 108, 258); table.Rows.Add(641, 4, 79, 115, 70, 125, 80, 111, 256); table.Rows.Add(642, 4, 79, 115, 70, 125, 80, 111, 256); table.Rows.Add(643, 4, 100, 120, 100, 150, 120, 90, 258); table.Rows.Add(644, 4, 100, 150, 120, 120, 100, 90, 258); table.Rows.Add(645, 4, 89, 125, 90, 115, 80, 101, 256); table.Rows.Add(646, 4, 125, 130, 90, 130, 90, 95, 258); table.Rows.Add(647, 4, 91, 72, 90, 129, 90, 108, 258); table.Rows.Add(648, 4, 100, 77, 77, 128, 128, 90, 258); table.Rows.Add(649, 4, 71, 120, 95, 120, 95, 99, 258); table.Rows.Add(650, 3, 56, 61, 65, 48, 45, 33, 32); table.Rows.Add(651, 3, 61, 78, 95, 56, 58, 57, 32); table.Rows.Add(652, 3, 88, 107, 122, 74, 75, 64, 32); table.Rows.Add(653, 3, 40, 45, 40, 62, 60, 60, 32); table.Rows.Add(654, 3, 59, 59, 58, 90, 70, 73, 32); table.Rows.Add(655, 3, 75, 69, 72, 114, 100, 104, 32); table.Rows.Add(656, 3, 41, 56, 40, 62, 44, 71, 32); table.Rows.Add(657, 3, 54, 63, 52, 83, 56, 97, 32); table.Rows.Add(658, 3, 72, 95, 67, 103, 71, 122, 32); table.Rows.Add(659, 2, 38, 36, 38, 32, 36, 57, 128); table.Rows.Add(660, 2, 85, 56, 77, 50, 77, 78, 128); table.Rows.Add(661, 3, 45, 50, 43, 40, 38, 62, 128); table.Rows.Add(662, 3, 62, 73, 55, 56, 52, 84, 128); table.Rows.Add(663, 3, 78, 81, 71, 74, 69, 126, 128); table.Rows.Add(664, 2, 38, 35, 40, 27, 25, 35, 128); table.Rows.Add(665, 2, 45, 22, 60, 27, 30, 29, 128); table.Rows.Add(666, 2, 80, 52, 50, 90, 50, 89, 128); table.Rows.Add(667, 3, 62, 50, 58, 73, 54, 72, 192); table.Rows.Add(668, 3, 86, 68, 72, 109, 66, 106, 192); table.Rows.Add(669, 2, 44, 38, 39, 61, 79, 42, 257); table.Rows.Add(670, 2, 54, 45, 47, 75, 98, 52, 257); table.Rows.Add(671, 2, 78, 65, 68, 112, 154, 75, 257); table.Rows.Add(672, 2, 66, 65, 48, 62, 57, 52, 128); table.Rows.Add(673, 2, 123, 100, 62, 97, 81, 68, 128); table.Rows.Add(674, 2, 67, 82, 62, 46, 48, 43, 128); table.Rows.Add(675, 2, 95, 124, 78, 69, 71, 58, 128); table.Rows.Add(676, 2, 75, 80, 60, 65, 90, 102, 128); table.Rows.Add(677, 2, 62, 48, 54, 63, 60, 68, 128); table.Rows.Add(678, 2, 74, 48, 76, 83, 81, 104, 128); table.Rows.Add(679, 2, 45, 80, 100, 35, 37, 28, 128); table.Rows.Add(680, 2, 59, 110, 150, 45, 49, 35, 128); table.Rows.Add(681, 2, 60, 50, 150, 50, 150, 60, 128); table.Rows.Add(682, 2, 78, 52, 60, 63, 65, 23, 128); table.Rows.Add(683, 2, 101, 72, 72, 99, 89, 29, 128); table.Rows.Add(684, 2, 62, 48, 66, 59, 57, 49, 128); table.Rows.Add(685, 2, 82, 80, 86, 85, 75, 72, 128); table.Rows.Add(686, 2, 53, 54, 37, 46, 45, 45, 128); table.Rows.Add(687, 2, 86, 92, 88, 68, 75, 73, 128); table.Rows.Add(688, 2, 42, 52, 67, 39, 56, 50, 128); table.Rows.Add(689, 2, 72, 105, 115, 54, 86, 68, 128); table.Rows.Add(690, 2, 50, 60, 60, 60, 60, 30, 128); table.Rows.Add(691, 2, 65, 75, 90, 97, 123, 44, 128); table.Rows.Add(692, 4, 50, 53, 62, 58, 63, 44, 128); table.Rows.Add(693, 4, 71, 73, 88, 120, 89, 59, 128); table.Rows.Add(694, 2, 44, 38, 33, 61, 43, 70, 128); table.Rows.Add(695, 2, 62, 55, 52, 109, 94, 109, 128); table.Rows.Add(696, 2, 58, 89, 77, 45, 45, 48, 32); table.Rows.Add(697, 2, 82, 121, 119, 69, 59, 71, 32); table.Rows.Add(698, 2, 77, 59, 50, 67, 63, 46, 32); table.Rows.Add(699, 2, 123, 77, 72, 99, 92, 58, 32); table.Rows.Add(700, 2, 95, 65, 65, 110, 130, 60, 32); table.Rows.Add(701, 2, 78, 92, 75, 74, 63, 118, 128); table.Rows.Add(702, 2, 67, 58, 57, 81, 67, 101, 128); table.Rows.Add(703, 4, 50, 50, 150, 50, 150, 50, 258); table.Rows.Add(704, 4, 45, 50, 35, 55, 75, 40, 128); table.Rows.Add(705, 4, 68, 75, 53, 83, 113, 60, 128); table.Rows.Add(706, 4, 90, 100, 70, 110, 150, 80, 128); table.Rows.Add(707, 1, 57, 80, 91, 80, 87, 75, 128); table.Rows.Add(708, 2, 43, 70, 48, 50, 60, 38, 128); table.Rows.Add(709, 2, 85, 110, 76, 65, 82, 56, 128); table.Rows.Add(710, 2, 49, 66, 70, 44, 55, 51, 128); table.Rows.Add(711, 2, 65, 90, 122, 58, 75, 84, 128); table.Rows.Add(712, 2, 55, 69, 85, 32, 35, 28, 128); table.Rows.Add(713, 2, 95, 117, 184, 44, 46, 28, 128); table.Rows.Add(714, 2, 40, 30, 35, 45, 40, 55, 128); table.Rows.Add(715, 2, 85, 70, 80, 97, 80, 123, 128); table.Rows.Add(716, 4, 126, 131, 95, 131, 98, 99, 258); table.Rows.Add(717, 4, 126, 131, 95, 131, 98, 99, 258); table.Rows.Add(718, 4, 108, 100, 121, 81, 95, 95, 258); table.Rows.Add(719, 4, 50, 100, 150, 100, 150, 50, 258); // Diancie table.Rows.Add(720, 4, 80, 110, 60, 150, 130, 70, 258); // Hoopa table.Rows.Add(721, 4, 80, 110, 120, 130, 90, 70, 258); // Volcanion table.Rows.Add(722, 4, 100, 100, 100, 100, 100, 100, 258); return table; } public static DataTable Friendship() { DataTable table = new DataTable(); table.Columns.Add("Species", typeof(int)); table.Columns.Add("Friendship", typeof(byte)); table.Rows.Add(0, 0); table.Rows.Add(1, 70); table.Rows.Add(2, 70); table.Rows.Add(3, 70); table.Rows.Add(4, 70); table.Rows.Add(5, 70); table.Rows.Add(6, 70); table.Rows.Add(7, 70); table.Rows.Add(8, 70); table.Rows.Add(9, 70); table.Rows.Add(10, 70); table.Rows.Add(11, 70); table.Rows.Add(12, 70); table.Rows.Add(13, 70); table.Rows.Add(14, 70); table.Rows.Add(15, 70); table.Rows.Add(16, 70); table.Rows.Add(17, 70); table.Rows.Add(18, 70); table.Rows.Add(19, 70); table.Rows.Add(20, 70); table.Rows.Add(21, 70); table.Rows.Add(22, 70); table.Rows.Add(23, 70); table.Rows.Add(24, 70); table.Rows.Add(25, 70); table.Rows.Add(26, 70); table.Rows.Add(27, 70); table.Rows.Add(28, 70); table.Rows.Add(29, 70); table.Rows.Add(30, 70); table.Rows.Add(31, 70); table.Rows.Add(32, 70); table.Rows.Add(33, 70); table.Rows.Add(34, 70); table.Rows.Add(35, 140); table.Rows.Add(36, 140); table.Rows.Add(37, 70); table.Rows.Add(38, 70); table.Rows.Add(39, 70); table.Rows.Add(40, 70); table.Rows.Add(41, 70); table.Rows.Add(42, 70); table.Rows.Add(43, 70); table.Rows.Add(44, 70); table.Rows.Add(45, 70); table.Rows.Add(46, 70); table.Rows.Add(47, 70); table.Rows.Add(48, 70); table.Rows.Add(49, 70); table.Rows.Add(50, 70); table.Rows.Add(51, 70); table.Rows.Add(52, 70); table.Rows.Add(53, 70); table.Rows.Add(54, 70); table.Rows.Add(55, 70); table.Rows.Add(56, 70); table.Rows.Add(57, 70); table.Rows.Add(58, 70); table.Rows.Add(59, 70); table.Rows.Add(60, 70); table.Rows.Add(61, 70); table.Rows.Add(62, 70); table.Rows.Add(63, 70); table.Rows.Add(64, 70); table.Rows.Add(65, 70); table.Rows.Add(66, 70); table.Rows.Add(67, 70); table.Rows.Add(68, 70); table.Rows.Add(69, 70); table.Rows.Add(70, 70); table.Rows.Add(71, 70); table.Rows.Add(72, 70); table.Rows.Add(73, 70); table.Rows.Add(74, 70); table.Rows.Add(75, 70); table.Rows.Add(76, 70); table.Rows.Add(77, 70); table.Rows.Add(78, 70); table.Rows.Add(79, 70); table.Rows.Add(80, 70); table.Rows.Add(81, 70); table.Rows.Add(82, 70); table.Rows.Add(83, 70); table.Rows.Add(84, 70); table.Rows.Add(85, 70); table.Rows.Add(86, 70); table.Rows.Add(87, 70); table.Rows.Add(88, 70); table.Rows.Add(89, 70); table.Rows.Add(90, 70); table.Rows.Add(91, 70); table.Rows.Add(92, 70); table.Rows.Add(93, 70); table.Rows.Add(94, 70); table.Rows.Add(95, 70); table.Rows.Add(96, 70); table.Rows.Add(97, 70); table.Rows.Add(98, 70); table.Rows.Add(99, 70); table.Rows.Add(100, 70); table.Rows.Add(101, 70); table.Rows.Add(102, 70); table.Rows.Add(103, 70); table.Rows.Add(104, 70); table.Rows.Add(105, 70); table.Rows.Add(106, 70); table.Rows.Add(107, 70); table.Rows.Add(108, 70); table.Rows.Add(109, 70); table.Rows.Add(110, 70); table.Rows.Add(111, 70); table.Rows.Add(112, 70); table.Rows.Add(113, 140); table.Rows.Add(114, 70); table.Rows.Add(115, 70); table.Rows.Add(116, 70); table.Rows.Add(117, 70); table.Rows.Add(118, 70); table.Rows.Add(119, 70); table.Rows.Add(120, 70); table.Rows.Add(121, 70); table.Rows.Add(122, 70); table.Rows.Add(123, 70); table.Rows.Add(124, 70); table.Rows.Add(125, 70); table.Rows.Add(126, 70); table.Rows.Add(127, 70); table.Rows.Add(128, 70); table.Rows.Add(129, 70); table.Rows.Add(130, 70); table.Rows.Add(131, 70); table.Rows.Add(132, 70); table.Rows.Add(133, 70); table.Rows.Add(134, 70); table.Rows.Add(135, 70); table.Rows.Add(136, 70); table.Rows.Add(137, 70); table.Rows.Add(138, 70); table.Rows.Add(139, 70); table.Rows.Add(140, 70); table.Rows.Add(141, 70); table.Rows.Add(142, 70); table.Rows.Add(143, 70); table.Rows.Add(144, 35); table.Rows.Add(145, 35); table.Rows.Add(146, 35); table.Rows.Add(147, 35); table.Rows.Add(148, 35); table.Rows.Add(149, 35); table.Rows.Add(150, 0); table.Rows.Add(151, 100); table.Rows.Add(152, 70); table.Rows.Add(153, 70); table.Rows.Add(154, 70); table.Rows.Add(155, 70); table.Rows.Add(156, 70); table.Rows.Add(157, 70); table.Rows.Add(158, 70); table.Rows.Add(159, 70); table.Rows.Add(160, 70); table.Rows.Add(161, 70); table.Rows.Add(162, 70); table.Rows.Add(163, 70); table.Rows.Add(164, 70); table.Rows.Add(165, 70); table.Rows.Add(166, 70); table.Rows.Add(167, 70); table.Rows.Add(168, 70); table.Rows.Add(169, 70); table.Rows.Add(170, 70); table.Rows.Add(171, 70); table.Rows.Add(172, 70); table.Rows.Add(173, 140); table.Rows.Add(174, 70); table.Rows.Add(175, 70); table.Rows.Add(176, 70); table.Rows.Add(177, 70); table.Rows.Add(178, 70); table.Rows.Add(179, 70); table.Rows.Add(180, 70); table.Rows.Add(181, 70); table.Rows.Add(182, 70); table.Rows.Add(183, 70); table.Rows.Add(184, 70); table.Rows.Add(185, 70); table.Rows.Add(186, 70); table.Rows.Add(187, 70); table.Rows.Add(188, 70); table.Rows.Add(189, 70); table.Rows.Add(190, 70); table.Rows.Add(191, 70); table.Rows.Add(192, 70); table.Rows.Add(193, 70); table.Rows.Add(194, 70); table.Rows.Add(195, 70); table.Rows.Add(196, 70); table.Rows.Add(197, 35); table.Rows.Add(198, 35); table.Rows.Add(199, 70); table.Rows.Add(200, 35); table.Rows.Add(201, 70); table.Rows.Add(202, 70); table.Rows.Add(203, 70); table.Rows.Add(204, 70); table.Rows.Add(205, 70); table.Rows.Add(206, 70); table.Rows.Add(207, 70); table.Rows.Add(208, 70); table.Rows.Add(209, 70); table.Rows.Add(210, 70); table.Rows.Add(211, 70); table.Rows.Add(212, 70); table.Rows.Add(213, 70); table.Rows.Add(214, 70); table.Rows.Add(215, 35); table.Rows.Add(216, 70); table.Rows.Add(217, 70); table.Rows.Add(218, 70); table.Rows.Add(219, 70); table.Rows.Add(220, 70); table.Rows.Add(221, 70); table.Rows.Add(222, 70); table.Rows.Add(223, 70); table.Rows.Add(224, 70); table.Rows.Add(225, 70); table.Rows.Add(226, 70); table.Rows.Add(227, 70); table.Rows.Add(228, 35); table.Rows.Add(229, 35); table.Rows.Add(230, 70); table.Rows.Add(231, 70); table.Rows.Add(232, 70); table.Rows.Add(233, 70); table.Rows.Add(234, 70); table.Rows.Add(235, 70); table.Rows.Add(236, 70); table.Rows.Add(237, 70); table.Rows.Add(238, 70); table.Rows.Add(239, 70); table.Rows.Add(240, 70); table.Rows.Add(241, 70); table.Rows.Add(242, 140); table.Rows.Add(243, 35); table.Rows.Add(244, 35); table.Rows.Add(245, 35); table.Rows.Add(246, 35); table.Rows.Add(247, 35); table.Rows.Add(248, 35); table.Rows.Add(249, 0); table.Rows.Add(250, 0); table.Rows.Add(251, 100); table.Rows.Add(252, 70); table.Rows.Add(253, 70); table.Rows.Add(254, 70); table.Rows.Add(255, 70); table.Rows.Add(256, 70); table.Rows.Add(257, 70); table.Rows.Add(258, 70); table.Rows.Add(259, 70); table.Rows.Add(260, 70); table.Rows.Add(261, 70); table.Rows.Add(262, 70); table.Rows.Add(263, 70); table.Rows.Add(264, 70); table.Rows.Add(265, 70); table.Rows.Add(266, 70); table.Rows.Add(267, 70); table.Rows.Add(268, 70); table.Rows.Add(269, 70); table.Rows.Add(270, 70); table.Rows.Add(271, 70); table.Rows.Add(272, 70); table.Rows.Add(273, 70); table.Rows.Add(274, 70); table.Rows.Add(275, 70); table.Rows.Add(276, 70); table.Rows.Add(277, 70); table.Rows.Add(278, 70); table.Rows.Add(279, 70); table.Rows.Add(280, 35); table.Rows.Add(281, 35); table.Rows.Add(282, 35); table.Rows.Add(283, 70); table.Rows.Add(284, 70); table.Rows.Add(285, 70); table.Rows.Add(286, 70); table.Rows.Add(287, 70); table.Rows.Add(288, 70); table.Rows.Add(289, 70); table.Rows.Add(290, 70); table.Rows.Add(291, 70); table.Rows.Add(292, 70); table.Rows.Add(293, 70); table.Rows.Add(294, 70); table.Rows.Add(295, 70); table.Rows.Add(296, 70); table.Rows.Add(297, 70); table.Rows.Add(298, 70); table.Rows.Add(299, 70); table.Rows.Add(300, 70); table.Rows.Add(301, 70); table.Rows.Add(302, 35); table.Rows.Add(303, 70); table.Rows.Add(304, 35); table.Rows.Add(305, 35); table.Rows.Add(306, 35); table.Rows.Add(307, 70); table.Rows.Add(308, 70); table.Rows.Add(309, 70); table.Rows.Add(310, 70); table.Rows.Add(311, 70); table.Rows.Add(312, 70); table.Rows.Add(313, 70); table.Rows.Add(314, 70); table.Rows.Add(315, 70); table.Rows.Add(316, 70); table.Rows.Add(317, 70); table.Rows.Add(318, 35); table.Rows.Add(319, 35); table.Rows.Add(320, 70); table.Rows.Add(321, 70); table.Rows.Add(322, 70); table.Rows.Add(323, 70); table.Rows.Add(324, 70); table.Rows.Add(325, 70); table.Rows.Add(326, 70); table.Rows.Add(327, 70); table.Rows.Add(328, 70); table.Rows.Add(329, 70); table.Rows.Add(330, 70); table.Rows.Add(331, 35); table.Rows.Add(332, 35); table.Rows.Add(333, 70); table.Rows.Add(334, 70); table.Rows.Add(335, 70); table.Rows.Add(336, 70); table.Rows.Add(337, 70); table.Rows.Add(338, 70); table.Rows.Add(339, 70); table.Rows.Add(340, 70); table.Rows.Add(341, 70); table.Rows.Add(342, 70); table.Rows.Add(343, 70); table.Rows.Add(344, 70); table.Rows.Add(345, 70); table.Rows.Add(346, 70); table.Rows.Add(347, 70); table.Rows.Add(348, 70); table.Rows.Add(349, 70); table.Rows.Add(350, 70); table.Rows.Add(351, 70); table.Rows.Add(352, 70); table.Rows.Add(353, 35); table.Rows.Add(354, 35); table.Rows.Add(355, 35); table.Rows.Add(356, 35); table.Rows.Add(357, 70); table.Rows.Add(358, 70); table.Rows.Add(359, 35); table.Rows.Add(360, 70); table.Rows.Add(361, 70); table.Rows.Add(362, 70); table.Rows.Add(363, 70); table.Rows.Add(364, 70); table.Rows.Add(365, 70); table.Rows.Add(366, 70); table.Rows.Add(367, 70); table.Rows.Add(368, 70); table.Rows.Add(369, 70); table.Rows.Add(370, 70); table.Rows.Add(371, 35); table.Rows.Add(372, 35); table.Rows.Add(373, 35); table.Rows.Add(374, 35); table.Rows.Add(375, 35); table.Rows.Add(376, 35); table.Rows.Add(377, 35); table.Rows.Add(378, 35); table.Rows.Add(379, 35); table.Rows.Add(380, 90); table.Rows.Add(381, 90); table.Rows.Add(382, 0); table.Rows.Add(383, 0); table.Rows.Add(384, 0); table.Rows.Add(385, 100); table.Rows.Add(386, 0); table.Rows.Add(387, 70); table.Rows.Add(388, 70); table.Rows.Add(389, 70); table.Rows.Add(390, 70); table.Rows.Add(391, 70); table.Rows.Add(392, 70); table.Rows.Add(393, 70); table.Rows.Add(394, 70); table.Rows.Add(395, 70); table.Rows.Add(396, 70); table.Rows.Add(397, 70); table.Rows.Add(398, 70); table.Rows.Add(399, 70); table.Rows.Add(400, 70); table.Rows.Add(401, 70); table.Rows.Add(402, 70); table.Rows.Add(403, 70); table.Rows.Add(404, 100); table.Rows.Add(405, 70); table.Rows.Add(406, 70); table.Rows.Add(407, 70); table.Rows.Add(408, 70); table.Rows.Add(409, 70); table.Rows.Add(410, 70); table.Rows.Add(411, 70); table.Rows.Add(412, 70); table.Rows.Add(413, 70); table.Rows.Add(414, 70); table.Rows.Add(415, 70); table.Rows.Add(416, 70); table.Rows.Add(417, 100); table.Rows.Add(418, 70); table.Rows.Add(419, 70); table.Rows.Add(420, 70); table.Rows.Add(421, 70); table.Rows.Add(422, 70); table.Rows.Add(423, 70); table.Rows.Add(424, 100); table.Rows.Add(425, 70); table.Rows.Add(426, 70); table.Rows.Add(427, 0); table.Rows.Add(428, 140); table.Rows.Add(429, 35); table.Rows.Add(430, 35); table.Rows.Add(431, 70); table.Rows.Add(432, 70); table.Rows.Add(433, 70); table.Rows.Add(434, 70); table.Rows.Add(435, 70); table.Rows.Add(436, 70); table.Rows.Add(437, 70); table.Rows.Add(438, 70); table.Rows.Add(439, 70); table.Rows.Add(440, 140); table.Rows.Add(441, 35); table.Rows.Add(442, 70); table.Rows.Add(443, 70); table.Rows.Add(444, 70); table.Rows.Add(445, 70); table.Rows.Add(446, 70); table.Rows.Add(447, 70); table.Rows.Add(448, 70); table.Rows.Add(449, 70); table.Rows.Add(450, 70); table.Rows.Add(451, 70); table.Rows.Add(452, 70); table.Rows.Add(453, 100); table.Rows.Add(454, 70); table.Rows.Add(455, 70); table.Rows.Add(456, 70); table.Rows.Add(457, 70); table.Rows.Add(458, 70); table.Rows.Add(459, 70); table.Rows.Add(460, 70); table.Rows.Add(461, 35); table.Rows.Add(462, 70); table.Rows.Add(463, 70); table.Rows.Add(464, 70); table.Rows.Add(465, 70); table.Rows.Add(466, 70); table.Rows.Add(467, 70); table.Rows.Add(468, 70); table.Rows.Add(469, 70); table.Rows.Add(470, 35); table.Rows.Add(471, 35); table.Rows.Add(472, 70); table.Rows.Add(473, 70); table.Rows.Add(474, 70); table.Rows.Add(475, 35); table.Rows.Add(476, 70); table.Rows.Add(477, 35); table.Rows.Add(478, 70); table.Rows.Add(479, 70); table.Rows.Add(480, 140); table.Rows.Add(481, 140); table.Rows.Add(482, 140); table.Rows.Add(483, 0); table.Rows.Add(484, 0); table.Rows.Add(485, 100); table.Rows.Add(486, 0); table.Rows.Add(487, 0); table.Rows.Add(488, 100); table.Rows.Add(489, 70); table.Rows.Add(490, 70); table.Rows.Add(491, 0); table.Rows.Add(492, 100); table.Rows.Add(493, 0); table.Rows.Add(494, 100); table.Rows.Add(495, 70); table.Rows.Add(496, 70); table.Rows.Add(497, 70); table.Rows.Add(498, 70); table.Rows.Add(499, 70); table.Rows.Add(500, 70); table.Rows.Add(501, 70); table.Rows.Add(502, 70); table.Rows.Add(503, 70); table.Rows.Add(504, 70); table.Rows.Add(505, 70); table.Rows.Add(506, 70); table.Rows.Add(507, 70); table.Rows.Add(508, 70); table.Rows.Add(509, 70); table.Rows.Add(510, 70); table.Rows.Add(511, 70); table.Rows.Add(512, 70); table.Rows.Add(513, 70); table.Rows.Add(514, 70); table.Rows.Add(515, 70); table.Rows.Add(516, 70); table.Rows.Add(517, 70); table.Rows.Add(518, 70); table.Rows.Add(519, 70); table.Rows.Add(520, 70); table.Rows.Add(521, 70); table.Rows.Add(522, 70); table.Rows.Add(523, 70); table.Rows.Add(524, 70); table.Rows.Add(525, 70); table.Rows.Add(526, 70); table.Rows.Add(527, 70); table.Rows.Add(528, 70); table.Rows.Add(529, 70); table.Rows.Add(530, 70); table.Rows.Add(531, 70); table.Rows.Add(532, 70); table.Rows.Add(533, 70); table.Rows.Add(534, 70); table.Rows.Add(535, 70); table.Rows.Add(536, 70); table.Rows.Add(537, 70); table.Rows.Add(538, 70); table.Rows.Add(539, 70); table.Rows.Add(540, 70); table.Rows.Add(541, 70); table.Rows.Add(542, 70); table.Rows.Add(543, 70); table.Rows.Add(544, 70); table.Rows.Add(545, 70); table.Rows.Add(546, 70); table.Rows.Add(547, 70); table.Rows.Add(548, 70); table.Rows.Add(549, 70); table.Rows.Add(550, 70); table.Rows.Add(551, 70); table.Rows.Add(552, 70); table.Rows.Add(553, 70); table.Rows.Add(554, 70); table.Rows.Add(555, 70); table.Rows.Add(556, 70); table.Rows.Add(557, 70); table.Rows.Add(558, 70); table.Rows.Add(559, 35); table.Rows.Add(560, 70); table.Rows.Add(561, 70); table.Rows.Add(562, 70); table.Rows.Add(563, 70); table.Rows.Add(564, 70); table.Rows.Add(565, 70); table.Rows.Add(566, 70); table.Rows.Add(567, 70); table.Rows.Add(568, 70); table.Rows.Add(569, 70); table.Rows.Add(570, 70); table.Rows.Add(571, 70); table.Rows.Add(572, 70); table.Rows.Add(573, 70); table.Rows.Add(574, 70); table.Rows.Add(575, 70); table.Rows.Add(576, 70); table.Rows.Add(577, 70); table.Rows.Add(578, 70); table.Rows.Add(579, 70); table.Rows.Add(580, 70); table.Rows.Add(581, 70); table.Rows.Add(582, 70); table.Rows.Add(583, 70); table.Rows.Add(584, 70); table.Rows.Add(585, 70); table.Rows.Add(586, 70); table.Rows.Add(587, 70); table.Rows.Add(588, 70); table.Rows.Add(589, 70); table.Rows.Add(590, 70); table.Rows.Add(591, 70); table.Rows.Add(592, 70); table.Rows.Add(593, 70); table.Rows.Add(594, 70); table.Rows.Add(595, 70); table.Rows.Add(596, 70); table.Rows.Add(597, 70); table.Rows.Add(598, 70); table.Rows.Add(599, 70); table.Rows.Add(600, 70); table.Rows.Add(601, 70); table.Rows.Add(602, 70); table.Rows.Add(603, 70); table.Rows.Add(604, 70); table.Rows.Add(605, 70); table.Rows.Add(606, 70); table.Rows.Add(607, 70); table.Rows.Add(608, 70); table.Rows.Add(609, 70); table.Rows.Add(610, 35); table.Rows.Add(611, 35); table.Rows.Add(612, 35); table.Rows.Add(613, 70); table.Rows.Add(614, 70); table.Rows.Add(615, 70); table.Rows.Add(616, 70); table.Rows.Add(617, 70); table.Rows.Add(618, 70); table.Rows.Add(619, 70); table.Rows.Add(620, 70); table.Rows.Add(621, 70); table.Rows.Add(622, 70); table.Rows.Add(623, 70); table.Rows.Add(624, 35); table.Rows.Add(625, 35); table.Rows.Add(626, 70); table.Rows.Add(627, 70); table.Rows.Add(628, 70); table.Rows.Add(629, 35); table.Rows.Add(630, 35); table.Rows.Add(631, 70); table.Rows.Add(632, 70); table.Rows.Add(633, 35); table.Rows.Add(634, 35); table.Rows.Add(635, 35); table.Rows.Add(636, 70); table.Rows.Add(637, 70); table.Rows.Add(638, 35); table.Rows.Add(639, 35); table.Rows.Add(640, 35); table.Rows.Add(641, 90); table.Rows.Add(642, 90); table.Rows.Add(643, 0); table.Rows.Add(644, 0); table.Rows.Add(645, 90); table.Rows.Add(646, 0); table.Rows.Add(647, 35); table.Rows.Add(648, 100); table.Rows.Add(649, 0); table.Rows.Add(650, 70); table.Rows.Add(651, 70); table.Rows.Add(652, 70); table.Rows.Add(653, 70); table.Rows.Add(654, 70); table.Rows.Add(655, 70); table.Rows.Add(656, 70); table.Rows.Add(657, 70); table.Rows.Add(658, 70); table.Rows.Add(659, 70); table.Rows.Add(660, 70); table.Rows.Add(661, 70); table.Rows.Add(662, 70); table.Rows.Add(663, 70); table.Rows.Add(664, 70); table.Rows.Add(665, 70); table.Rows.Add(666, 70); table.Rows.Add(667, 70); table.Rows.Add(668, 70); table.Rows.Add(669, 70); table.Rows.Add(670, 70); table.Rows.Add(671, 70); table.Rows.Add(672, 70); table.Rows.Add(673, 70); table.Rows.Add(674, 70); table.Rows.Add(675, 70); table.Rows.Add(676, 70); table.Rows.Add(677, 70); table.Rows.Add(678, 70); table.Rows.Add(679, 70); table.Rows.Add(680, 70); table.Rows.Add(681, 70); table.Rows.Add(682, 70); table.Rows.Add(683, 70); table.Rows.Add(684, 70); table.Rows.Add(685, 70); table.Rows.Add(686, 70); table.Rows.Add(687, 70); table.Rows.Add(688, 70); table.Rows.Add(689, 70); table.Rows.Add(690, 70); table.Rows.Add(691, 70); table.Rows.Add(692, 70); table.Rows.Add(693, 70); table.Rows.Add(694, 70); table.Rows.Add(695, 70); table.Rows.Add(696, 70); table.Rows.Add(697, 70); table.Rows.Add(698, 70); table.Rows.Add(699, 70); table.Rows.Add(700, 70); table.Rows.Add(701, 70); table.Rows.Add(702, 70); table.Rows.Add(703, 70); table.Rows.Add(704, 35); table.Rows.Add(705, 35); table.Rows.Add(706, 35); table.Rows.Add(707, 70); table.Rows.Add(708, 70); table.Rows.Add(709, 70); table.Rows.Add(710, 70); table.Rows.Add(711, 70); table.Rows.Add(712, 70); table.Rows.Add(713, 70); table.Rows.Add(714, 70); table.Rows.Add(715, 70); table.Rows.Add(716, 0); table.Rows.Add(717, 0); table.Rows.Add(718, 0); table.Rows.Add(719, 70); table.Rows.Add(720, 100); table.Rows.Add(721, 100); table.Rows.Add(722, 0); return table; } public static DataTable MovePPTable() { DataTable table = new DataTable(); table.Columns.Add("Move", typeof(int)); table.Columns.Add("PP", typeof(int)); table.Rows.Add(0, 0); table.Rows.Add(1, 35); table.Rows.Add(2, 25); table.Rows.Add(3, 10); table.Rows.Add(4, 15); table.Rows.Add(5, 20); table.Rows.Add(6, 20); table.Rows.Add(7, 15); table.Rows.Add(8, 15); table.Rows.Add(9, 15); table.Rows.Add(10, 35); table.Rows.Add(11, 30); table.Rows.Add(12, 5); table.Rows.Add(13, 10); table.Rows.Add(14, 20); table.Rows.Add(15, 30); table.Rows.Add(16, 35); table.Rows.Add(17, 35); table.Rows.Add(18, 20); table.Rows.Add(19, 15); table.Rows.Add(20, 20); table.Rows.Add(21, 20); table.Rows.Add(22, 25); table.Rows.Add(23, 20); table.Rows.Add(24, 30); table.Rows.Add(25, 5); table.Rows.Add(26, 10); table.Rows.Add(27, 15); table.Rows.Add(28, 15); table.Rows.Add(29, 15); table.Rows.Add(30, 25); table.Rows.Add(31, 20); table.Rows.Add(32, 5); table.Rows.Add(33, 35); table.Rows.Add(34, 15); table.Rows.Add(35, 20); table.Rows.Add(36, 20); table.Rows.Add(37, 10); table.Rows.Add(38, 15); table.Rows.Add(39, 30); table.Rows.Add(40, 35); table.Rows.Add(41, 20); table.Rows.Add(42, 20); table.Rows.Add(43, 30); table.Rows.Add(44, 25); table.Rows.Add(45, 40); table.Rows.Add(46, 20); table.Rows.Add(47, 15); table.Rows.Add(48, 20); table.Rows.Add(49, 20); table.Rows.Add(50, 20); table.Rows.Add(51, 30); table.Rows.Add(52, 25); table.Rows.Add(53, 15); table.Rows.Add(54, 30); table.Rows.Add(55, 25); table.Rows.Add(56, 5); table.Rows.Add(57, 15); table.Rows.Add(58, 10); table.Rows.Add(59, 5); table.Rows.Add(60, 20); table.Rows.Add(61, 20); table.Rows.Add(62, 20); table.Rows.Add(63, 5); table.Rows.Add(64, 35); table.Rows.Add(65, 20); table.Rows.Add(66, 25); table.Rows.Add(67, 20); table.Rows.Add(68, 20); table.Rows.Add(69, 20); table.Rows.Add(70, 15); table.Rows.Add(71, 25); table.Rows.Add(72, 15); table.Rows.Add(73, 10); table.Rows.Add(74, 20); table.Rows.Add(75, 25); table.Rows.Add(76, 10); table.Rows.Add(77, 35); table.Rows.Add(78, 30); table.Rows.Add(79, 15); table.Rows.Add(80, 10); table.Rows.Add(81, 40); table.Rows.Add(82, 10); table.Rows.Add(83, 15); table.Rows.Add(84, 30); table.Rows.Add(85, 15); table.Rows.Add(86, 20); table.Rows.Add(87, 10); table.Rows.Add(88, 15); table.Rows.Add(89, 10); table.Rows.Add(90, 5); table.Rows.Add(91, 10); table.Rows.Add(92, 10); table.Rows.Add(93, 25); table.Rows.Add(94, 10); table.Rows.Add(95, 20); table.Rows.Add(96, 40); table.Rows.Add(97, 30); table.Rows.Add(98, 30); table.Rows.Add(99, 20); table.Rows.Add(100, 20); table.Rows.Add(101, 15); table.Rows.Add(102, 10); table.Rows.Add(103, 40); table.Rows.Add(104, 15); table.Rows.Add(105, 10); table.Rows.Add(106, 30); table.Rows.Add(107, 10); table.Rows.Add(108, 20); table.Rows.Add(109, 10); table.Rows.Add(110, 40); table.Rows.Add(111, 40); table.Rows.Add(112, 20); table.Rows.Add(113, 30); table.Rows.Add(114, 30); table.Rows.Add(115, 20); table.Rows.Add(116, 30); table.Rows.Add(117, 10); table.Rows.Add(118, 10); table.Rows.Add(119, 20); table.Rows.Add(120, 5); table.Rows.Add(121, 10); table.Rows.Add(122, 30); table.Rows.Add(123, 20); table.Rows.Add(124, 20); table.Rows.Add(125, 20); table.Rows.Add(126, 5); table.Rows.Add(127, 15); table.Rows.Add(128, 10); table.Rows.Add(129, 20); table.Rows.Add(130, 10); table.Rows.Add(131, 15); table.Rows.Add(132, 35); table.Rows.Add(133, 20); table.Rows.Add(134, 15); table.Rows.Add(135, 10); table.Rows.Add(136, 10); table.Rows.Add(137, 30); table.Rows.Add(138, 15); table.Rows.Add(139, 40); table.Rows.Add(140, 20); table.Rows.Add(141, 15); table.Rows.Add(142, 10); table.Rows.Add(143, 5); table.Rows.Add(144, 10); table.Rows.Add(145, 30); table.Rows.Add(146, 10); table.Rows.Add(147, 15); table.Rows.Add(148, 20); table.Rows.Add(149, 15); table.Rows.Add(150, 40); table.Rows.Add(151, 20); table.Rows.Add(152, 10); table.Rows.Add(153, 5); table.Rows.Add(154, 15); table.Rows.Add(155, 10); table.Rows.Add(156, 10); table.Rows.Add(157, 10); table.Rows.Add(158, 15); table.Rows.Add(159, 30); table.Rows.Add(160, 30); table.Rows.Add(161, 10); table.Rows.Add(162, 10); table.Rows.Add(163, 20); table.Rows.Add(164, 10); table.Rows.Add(165, 1); table.Rows.Add(166, 1); table.Rows.Add(167, 10); table.Rows.Add(168, 25); table.Rows.Add(169, 10); table.Rows.Add(170, 5); table.Rows.Add(171, 15); table.Rows.Add(172, 25); table.Rows.Add(173, 15); table.Rows.Add(174, 10); table.Rows.Add(175, 15); table.Rows.Add(176, 30); table.Rows.Add(177, 5); table.Rows.Add(178, 40); table.Rows.Add(179, 15); table.Rows.Add(180, 10); table.Rows.Add(181, 25); table.Rows.Add(182, 10); table.Rows.Add(183, 30); table.Rows.Add(184, 10); table.Rows.Add(185, 20); table.Rows.Add(186, 10); table.Rows.Add(187, 10); table.Rows.Add(188, 10); table.Rows.Add(189, 10); table.Rows.Add(190, 10); table.Rows.Add(191, 20); table.Rows.Add(192, 5); table.Rows.Add(193, 40); table.Rows.Add(194, 5); table.Rows.Add(195, 5); table.Rows.Add(196, 15); table.Rows.Add(197, 5); table.Rows.Add(198, 10); table.Rows.Add(199, 5); table.Rows.Add(200, 10); table.Rows.Add(201, 10); table.Rows.Add(202, 10); table.Rows.Add(203, 10); table.Rows.Add(204, 20); table.Rows.Add(205, 20); table.Rows.Add(206, 40); table.Rows.Add(207, 15); table.Rows.Add(208, 10); table.Rows.Add(209, 20); table.Rows.Add(210, 20); table.Rows.Add(211, 25); table.Rows.Add(212, 5); table.Rows.Add(213, 15); table.Rows.Add(214, 10); table.Rows.Add(215, 5); table.Rows.Add(216, 20); table.Rows.Add(217, 15); table.Rows.Add(218, 20); table.Rows.Add(219, 25); table.Rows.Add(220, 20); table.Rows.Add(221, 5); table.Rows.Add(222, 30); table.Rows.Add(223, 5); table.Rows.Add(224, 10); table.Rows.Add(225, 20); table.Rows.Add(226, 40); table.Rows.Add(227, 5); table.Rows.Add(228, 20); table.Rows.Add(229, 40); table.Rows.Add(230, 20); table.Rows.Add(231, 15); table.Rows.Add(232, 35); table.Rows.Add(233, 10); table.Rows.Add(234, 5); table.Rows.Add(235, 5); table.Rows.Add(236, 5); table.Rows.Add(237, 15); table.Rows.Add(238, 5); table.Rows.Add(239, 20); table.Rows.Add(240, 5); table.Rows.Add(241, 5); table.Rows.Add(242, 15); table.Rows.Add(243, 20); table.Rows.Add(244, 10); table.Rows.Add(245, 5); table.Rows.Add(246, 5); table.Rows.Add(247, 15); table.Rows.Add(248, 10); table.Rows.Add(249, 15); table.Rows.Add(250, 15); table.Rows.Add(251, 10); table.Rows.Add(252, 10); table.Rows.Add(253, 10); table.Rows.Add(254, 20); table.Rows.Add(255, 10); table.Rows.Add(256, 10); table.Rows.Add(257, 10); table.Rows.Add(258, 10); table.Rows.Add(259, 15); table.Rows.Add(260, 15); table.Rows.Add(261, 15); table.Rows.Add(262, 10); table.Rows.Add(263, 20); table.Rows.Add(264, 20); table.Rows.Add(265, 10); table.Rows.Add(266, 20); table.Rows.Add(267, 20); table.Rows.Add(268, 20); table.Rows.Add(269, 20); table.Rows.Add(270, 20); table.Rows.Add(271, 10); table.Rows.Add(272, 10); table.Rows.Add(273, 10); table.Rows.Add(274, 20); table.Rows.Add(275, 20); table.Rows.Add(276, 5); table.Rows.Add(277, 15); table.Rows.Add(278, 10); table.Rows.Add(279, 10); table.Rows.Add(280, 15); table.Rows.Add(281, 10); table.Rows.Add(282, 20); table.Rows.Add(283, 5); table.Rows.Add(284, 5); table.Rows.Add(285, 10); table.Rows.Add(286, 10); table.Rows.Add(287, 20); table.Rows.Add(288, 5); table.Rows.Add(289, 10); table.Rows.Add(290, 20); table.Rows.Add(291, 10); table.Rows.Add(292, 20); table.Rows.Add(293, 20); table.Rows.Add(294, 20); table.Rows.Add(295, 5); table.Rows.Add(296, 5); table.Rows.Add(297, 15); table.Rows.Add(298, 20); table.Rows.Add(299, 10); table.Rows.Add(300, 15); table.Rows.Add(301, 20); table.Rows.Add(302, 15); table.Rows.Add(303, 10); table.Rows.Add(304, 10); table.Rows.Add(305, 15); table.Rows.Add(306, 10); table.Rows.Add(307, 5); table.Rows.Add(308, 5); table.Rows.Add(309, 10); table.Rows.Add(310, 15); table.Rows.Add(311, 10); table.Rows.Add(312, 5); table.Rows.Add(313, 20); table.Rows.Add(314, 25); table.Rows.Add(315, 5); table.Rows.Add(316, 40); table.Rows.Add(317, 15); table.Rows.Add(318, 5); table.Rows.Add(319, 40); table.Rows.Add(320, 15); table.Rows.Add(321, 20); table.Rows.Add(322, 20); table.Rows.Add(323, 5); table.Rows.Add(324, 15); table.Rows.Add(325, 20); table.Rows.Add(326, 20); table.Rows.Add(327, 15); table.Rows.Add(328, 15); table.Rows.Add(329, 5); table.Rows.Add(330, 10); table.Rows.Add(331, 30); table.Rows.Add(332, 20); table.Rows.Add(333, 30); table.Rows.Add(334, 15); table.Rows.Add(335, 5); table.Rows.Add(336, 40); table.Rows.Add(337, 15); table.Rows.Add(338, 5); table.Rows.Add(339, 20); table.Rows.Add(340, 5); table.Rows.Add(341, 15); table.Rows.Add(342, 25); table.Rows.Add(343, 25); table.Rows.Add(344, 15); table.Rows.Add(345, 20); table.Rows.Add(346, 15); table.Rows.Add(347, 20); table.Rows.Add(348, 15); table.Rows.Add(349, 20); table.Rows.Add(350, 10); table.Rows.Add(351, 20); table.Rows.Add(352, 20); table.Rows.Add(353, 5); table.Rows.Add(354, 5); table.Rows.Add(355, 10); table.Rows.Add(356, 5); table.Rows.Add(357, 40); table.Rows.Add(358, 10); table.Rows.Add(359, 10); table.Rows.Add(360, 5); table.Rows.Add(361, 10); table.Rows.Add(362, 10); table.Rows.Add(363, 15); table.Rows.Add(364, 10); table.Rows.Add(365, 20); table.Rows.Add(366, 15); table.Rows.Add(367, 30); table.Rows.Add(368, 10); table.Rows.Add(369, 20); table.Rows.Add(370, 5); table.Rows.Add(371, 10); table.Rows.Add(372, 10); table.Rows.Add(373, 15); table.Rows.Add(374, 10); table.Rows.Add(375, 10); table.Rows.Add(376, 5); table.Rows.Add(377, 15); table.Rows.Add(378, 5); table.Rows.Add(379, 10); table.Rows.Add(380, 10); table.Rows.Add(381, 30); table.Rows.Add(382, 20); table.Rows.Add(383, 20); table.Rows.Add(384, 10); table.Rows.Add(385, 10); table.Rows.Add(386, 5); table.Rows.Add(387, 5); table.Rows.Add(388, 10); table.Rows.Add(389, 5); table.Rows.Add(390, 20); table.Rows.Add(391, 10); table.Rows.Add(392, 20); table.Rows.Add(393, 10); table.Rows.Add(394, 15); table.Rows.Add(395, 10); table.Rows.Add(396, 20); table.Rows.Add(397, 20); table.Rows.Add(398, 20); table.Rows.Add(399, 15); table.Rows.Add(400, 15); table.Rows.Add(401, 10); table.Rows.Add(402, 15); table.Rows.Add(403, 15); table.Rows.Add(404, 15); table.Rows.Add(405, 10); table.Rows.Add(406, 10); table.Rows.Add(407, 10); table.Rows.Add(408, 20); table.Rows.Add(409, 10); table.Rows.Add(410, 30); table.Rows.Add(411, 5); table.Rows.Add(412, 10); table.Rows.Add(413, 15); table.Rows.Add(414, 10); table.Rows.Add(415, 10); table.Rows.Add(416, 5); table.Rows.Add(417, 20); table.Rows.Add(418, 30); table.Rows.Add(419, 10); table.Rows.Add(420, 30); table.Rows.Add(421, 15); table.Rows.Add(422, 15); table.Rows.Add(423, 15); table.Rows.Add(424, 15); table.Rows.Add(425, 30); table.Rows.Add(426, 10); table.Rows.Add(427, 20); table.Rows.Add(428, 15); table.Rows.Add(429, 10); table.Rows.Add(430, 10); table.Rows.Add(431, 20); table.Rows.Add(432, 15); table.Rows.Add(433, 5); table.Rows.Add(434, 5); table.Rows.Add(435, 15); table.Rows.Add(436, 15); table.Rows.Add(437, 5); table.Rows.Add(438, 10); table.Rows.Add(439, 5); table.Rows.Add(440, 20); table.Rows.Add(441, 5); table.Rows.Add(442, 15); table.Rows.Add(443, 20); table.Rows.Add(444, 5); table.Rows.Add(445, 20); table.Rows.Add(446, 20); table.Rows.Add(447, 20); table.Rows.Add(448, 20); table.Rows.Add(449, 10); table.Rows.Add(450, 20); table.Rows.Add(451, 10); table.Rows.Add(452, 15); table.Rows.Add(453, 20); table.Rows.Add(454, 15); table.Rows.Add(455, 10); table.Rows.Add(456, 10); table.Rows.Add(457, 5); table.Rows.Add(458, 10); table.Rows.Add(459, 5); table.Rows.Add(460, 5); table.Rows.Add(461, 10); table.Rows.Add(462, 5); table.Rows.Add(463, 5); table.Rows.Add(464, 10); table.Rows.Add(465, 5); table.Rows.Add(466, 5); table.Rows.Add(467, 5); table.Rows.Add(468, 15); table.Rows.Add(469, 10); table.Rows.Add(470, 10); table.Rows.Add(471, 10); table.Rows.Add(472, 10); table.Rows.Add(473, 10); table.Rows.Add(474, 10); table.Rows.Add(475, 15); table.Rows.Add(476, 20); table.Rows.Add(477, 15); table.Rows.Add(478, 10); table.Rows.Add(479, 15); table.Rows.Add(480, 10); table.Rows.Add(481, 15); table.Rows.Add(482, 10); table.Rows.Add(483, 20); table.Rows.Add(484, 10); table.Rows.Add(485, 15); table.Rows.Add(486, 10); table.Rows.Add(487, 20); table.Rows.Add(488, 20); table.Rows.Add(489, 20); table.Rows.Add(490, 20); table.Rows.Add(491, 20); table.Rows.Add(492, 15); table.Rows.Add(493, 15); table.Rows.Add(494, 15); table.Rows.Add(495, 15); table.Rows.Add(496, 15); table.Rows.Add(497, 15); table.Rows.Add(498, 20); table.Rows.Add(499, 15); table.Rows.Add(500, 10); table.Rows.Add(501, 15); table.Rows.Add(502, 15); table.Rows.Add(503, 15); table.Rows.Add(504, 15); table.Rows.Add(505, 10); table.Rows.Add(506, 10); table.Rows.Add(507, 10); table.Rows.Add(508, 10); table.Rows.Add(509, 10); table.Rows.Add(510, 15); table.Rows.Add(511, 15); table.Rows.Add(512, 15); table.Rows.Add(513, 15); table.Rows.Add(514, 5); table.Rows.Add(515, 5); table.Rows.Add(516, 15); table.Rows.Add(517, 5); table.Rows.Add(518, 10); table.Rows.Add(519, 10); table.Rows.Add(520, 10); table.Rows.Add(521, 20); table.Rows.Add(522, 20); table.Rows.Add(523, 20); table.Rows.Add(524, 10); table.Rows.Add(525, 10); table.Rows.Add(526, 30); table.Rows.Add(527, 15); table.Rows.Add(528, 15); table.Rows.Add(529, 10); table.Rows.Add(530, 15); table.Rows.Add(531, 25); table.Rows.Add(532, 10); table.Rows.Add(533, 15); table.Rows.Add(534, 10); table.Rows.Add(535, 10); table.Rows.Add(536, 10); table.Rows.Add(537, 20); table.Rows.Add(538, 10); table.Rows.Add(539, 10); table.Rows.Add(540, 10); table.Rows.Add(541, 10); table.Rows.Add(542, 10); table.Rows.Add(543, 15); table.Rows.Add(544, 15); table.Rows.Add(545, 5); table.Rows.Add(546, 5); table.Rows.Add(547, 10); table.Rows.Add(548, 10); table.Rows.Add(549, 10); table.Rows.Add(550, 5); table.Rows.Add(551, 5); table.Rows.Add(552, 10); table.Rows.Add(553, 5); table.Rows.Add(554, 5); table.Rows.Add(555, 15); table.Rows.Add(556, 10); table.Rows.Add(557, 5); table.Rows.Add(558, 5); table.Rows.Add(559, 5); table.Rows.Add(560, 10); table.Rows.Add(561, 10); table.Rows.Add(562, 10); table.Rows.Add(563, 10); table.Rows.Add(564, 20); table.Rows.Add(565, 25); table.Rows.Add(566, 10); table.Rows.Add(567, 20); table.Rows.Add(568, 30); table.Rows.Add(569, 25); table.Rows.Add(570, 20); table.Rows.Add(571, 20); table.Rows.Add(572, 15); table.Rows.Add(573, 20); table.Rows.Add(574, 15); table.Rows.Add(575, 20); table.Rows.Add(576, 20); table.Rows.Add(577, 10); table.Rows.Add(578, 10); table.Rows.Add(579, 10); table.Rows.Add(580, 10); table.Rows.Add(581, 10); table.Rows.Add(582, 20); table.Rows.Add(583, 10); table.Rows.Add(584, 30); table.Rows.Add(585, 15); table.Rows.Add(586, 10); table.Rows.Add(587, 10); table.Rows.Add(588, 10); table.Rows.Add(589, 20); table.Rows.Add(590, 20); table.Rows.Add(591, 5); table.Rows.Add(592, 5); table.Rows.Add(593, 5); table.Rows.Add(594, 20); table.Rows.Add(595, 10); table.Rows.Add(596, 10); table.Rows.Add(597, 20); table.Rows.Add(598, 15); table.Rows.Add(599, 20); table.Rows.Add(600, 20); table.Rows.Add(601, 10); table.Rows.Add(602, 20); table.Rows.Add(603, 30); table.Rows.Add(604, 10); table.Rows.Add(605, 10); table.Rows.Add(606, 40); table.Rows.Add(607, 40); table.Rows.Add(608, 30); table.Rows.Add(609, 20); table.Rows.Add(610, 40); table.Rows.Add(611, 20); table.Rows.Add(612, 20); table.Rows.Add(613, 10); table.Rows.Add(614, 10); table.Rows.Add(615, 10); table.Rows.Add(616, 10); table.Rows.Add(617, 5); table.Rows.Add(618, 10); table.Rows.Add(619, 10); table.Rows.Add(620, 5); table.Rows.Add(621, 5); return table; } public static DataTable ExpTable() { DataTable table = new DataTable(); table.Columns.Add("Level", typeof(int)); table.Columns.Add("0 - Erratic", typeof(uint)); table.Columns.Add("1 - Fast", typeof(uint)); table.Columns.Add("2 - MF", typeof(uint)); table.Columns.Add("3 - MS", typeof(uint)); table.Columns.Add("4 - Slow", typeof(uint)); table.Columns.Add("5 - Fluctuating", typeof(uint)); table.Rows.Add(0, 0, 0, 0, 0, 0, 0); table.Rows.Add(1, 0, 0, 0, 0, 0, 0); table.Rows.Add(2, 15, 6, 8, 9, 10, 4); table.Rows.Add(3, 52, 21, 27, 57, 33, 13); table.Rows.Add(4, 122, 51, 64, 96, 80, 32); table.Rows.Add(5, 237, 100, 125, 135, 156, 65); table.Rows.Add(6, 406, 172, 216, 179, 270, 112); table.Rows.Add(7, 637, 274, 343, 236, 428, 178); table.Rows.Add(8, 942, 409, 512, 314, 640, 276); table.Rows.Add(9, 1326, 583, 729, 419, 911, 393); table.Rows.Add(10, 1800, 800, 1000, 560, 1250, 540); table.Rows.Add(11, 2369, 1064, 1331, 742, 1663, 745); table.Rows.Add(12, 3041, 1382, 1728, 973, 2160, 967); table.Rows.Add(13, 3822, 1757, 2197, 1261, 2746, 1230); table.Rows.Add(14, 4719, 2195, 2744, 1612, 3430, 1591); table.Rows.Add(15, 5737, 2700, 3375, 2035, 4218, 1957); table.Rows.Add(16, 6881, 3276, 4096, 2535, 5120, 2457); table.Rows.Add(17, 8155, 3930, 4913, 3120, 6141, 3046); table.Rows.Add(18, 9564, 4665, 5832, 3798, 7290, 3732); table.Rows.Add(19, 11111, 5487, 6859, 4575, 8573, 4526); table.Rows.Add(20, 12800, 6400, 8000, 5460, 10000, 5440); table.Rows.Add(21, 14632, 7408, 9261, 6458, 11576, 6482); table.Rows.Add(22, 16610, 8518, 10648, 7577, 13310, 7666); table.Rows.Add(23, 18737, 9733, 12167, 8825, 15208, 9003); table.Rows.Add(24, 21012, 11059, 13824, 10208, 17280, 10506); table.Rows.Add(25, 23437, 12500, 15625, 11735, 19531, 12187); table.Rows.Add(26, 26012, 14060, 17576, 13411, 21970, 14060); table.Rows.Add(27, 28737, 15746, 19683, 15244, 24603, 16140); table.Rows.Add(28, 31610, 17561, 21952, 17242, 27440, 18439); table.Rows.Add(29, 34632, 19511, 24389, 19411, 30486, 20974); table.Rows.Add(30, 37800, 21600, 27000, 21760, 33750, 23760); table.Rows.Add(31, 41111, 23832, 29791, 24294, 37238, 26811); table.Rows.Add(32, 44564, 26214, 32768, 27021, 40960, 30146); table.Rows.Add(33, 48155, 28749, 35937, 29949, 44921, 33780); table.Rows.Add(34, 51881, 31443, 39304, 33084, 49130, 37731); table.Rows.Add(35, 55737, 34300, 42875, 36435, 53593, 42017); table.Rows.Add(36, 59719, 37324, 46656, 40007, 58320, 46656); table.Rows.Add(37, 63822, 40522, 50653, 43808, 63316, 50653); table.Rows.Add(38, 68041, 43897, 54872, 47846, 68590, 55969); table.Rows.Add(39, 72369, 47455, 59319, 52127, 74148, 60505); table.Rows.Add(40, 76800, 51200, 64000, 56660, 80000, 66560); table.Rows.Add(41, 81326, 55136, 68921, 61450, 86151, 71677); table.Rows.Add(42, 85942, 59270, 74088, 66505, 92610, 78533); table.Rows.Add(43, 90637, 63605, 79507, 71833, 99383, 84277); table.Rows.Add(44, 95406, 68147, 85184, 77440, 106480, 91998); table.Rows.Add(45, 100237, 72900, 91125, 83335, 113906, 98415); table.Rows.Add(46, 105122, 77868, 97336, 89523, 121670, 107069); table.Rows.Add(47, 110052, 83058, 103823, 96012, 129778, 114205); table.Rows.Add(48, 115015, 88473, 110592, 102810, 138240, 123863); table.Rows.Add(49, 120001, 94119, 117649, 109923, 147061, 131766); table.Rows.Add(50, 125000, 100000, 125000, 117360, 156250, 142500); table.Rows.Add(51, 131324, 106120, 132651, 125126, 165813, 151222); table.Rows.Add(52, 137795, 112486, 140608, 133229, 175760, 163105); table.Rows.Add(53, 144410, 119101, 148877, 141677, 186096, 172697); table.Rows.Add(54, 151165, 125971, 157464, 150476, 196830, 185807); table.Rows.Add(55, 158056, 133100, 166375, 159635, 207968, 196322); table.Rows.Add(56, 165079, 140492, 175616, 169159, 219520, 210739); table.Rows.Add(57, 172229, 148154, 185193, 179056, 231491, 222231); table.Rows.Add(58, 179503, 156089, 195112, 189334, 243890, 238036); table.Rows.Add(59, 186894, 164303, 205379, 199999, 256723, 250562); table.Rows.Add(60, 194400, 172800, 216000, 211060, 270000, 267840); table.Rows.Add(61, 202013, 181584, 226981, 222522, 283726, 281456); table.Rows.Add(62, 209728, 190662, 238328, 234393, 297910, 300293); table.Rows.Add(63, 217540, 200037, 250047, 246681, 312558, 315059); table.Rows.Add(64, 225443, 209715, 262144, 259392, 327680, 335544); table.Rows.Add(65, 233431, 219700, 274625, 272535, 343281, 351520); table.Rows.Add(66, 241496, 229996, 287496, 286115, 359370, 373744); table.Rows.Add(67, 249633, 240610, 300763, 300140, 375953, 390991); table.Rows.Add(68, 257834, 251545, 314432, 314618, 393040, 415050); table.Rows.Add(69, 267406, 262807, 328509, 329555, 410636, 433631); table.Rows.Add(70, 276458, 274400, 343000, 344960, 428750, 459620); table.Rows.Add(71, 286328, 286328, 357911, 360838, 447388, 479600); table.Rows.Add(72, 296358, 298598, 373248, 377197, 466560, 507617); table.Rows.Add(73, 305767, 311213, 389017, 394045, 486271, 529063); table.Rows.Add(74, 316074, 324179, 405224, 411388, 506530, 559209); table.Rows.Add(75, 326531, 337500, 421875, 429235, 527343, 582187); table.Rows.Add(76, 336255, 351180, 438976, 447591, 548720, 614566); table.Rows.Add(77, 346965, 365226, 456533, 466464, 570666, 639146); table.Rows.Add(78, 357812, 379641, 474552, 485862, 593190, 673863); table.Rows.Add(79, 367807, 394431, 493039, 505791, 616298, 700115); table.Rows.Add(80, 378880, 409600, 512000, 526260, 640000, 737280); table.Rows.Add(81, 390077, 425152, 531441, 547274, 664301, 765275); table.Rows.Add(82, 400293, 441094, 551368, 568841, 689210, 804997); table.Rows.Add(83, 411686, 457429, 571787, 590969, 714733, 834809); table.Rows.Add(84, 423190, 474163, 592704, 613664, 740880, 877201); table.Rows.Add(85, 433572, 491300, 614125, 636935, 767656, 908905); table.Rows.Add(86, 445239, 508844, 636056, 660787, 795070, 954084); table.Rows.Add(87, 457001, 526802, 658503, 685228, 823128, 987754); table.Rows.Add(88, 467489, 545177, 681472, 710266, 851840, 1035837); table.Rows.Add(89, 479378, 563975, 704969, 735907, 881211, 1071552); table.Rows.Add(90, 491346, 583200, 729000, 762160, 911250, 1122660); table.Rows.Add(91, 501878, 602856, 753571, 789030, 941963, 1160499); table.Rows.Add(92, 513934, 622950, 778688, 816525, 973360, 1214753); table.Rows.Add(93, 526049, 643485, 804357, 844653, 1005446, 1254796); table.Rows.Add(94, 536557, 664467, 830584, 873420, 1038230, 1312322); table.Rows.Add(95, 548720, 685900, 857375, 902835, 1071718, 1354652); table.Rows.Add(96, 560922, 707788, 884736, 932903, 1105920, 1415577); table.Rows.Add(97, 571333, 730138, 912673, 963632, 1140841, 1460276); table.Rows.Add(98, 583539, 752953, 941192, 995030, 1176490, 1524731); table.Rows.Add(99, 591882, 776239, 970299, 1027103, 1212873, 1571884); table.Rows.Add(100, 600000, 800000, 1000000, 1059860, 1250000, 1640000); return table; } public static DataTable NatureTable() { DataTable table = new DataTable(); table.Columns.Add("Nature", typeof(int)); table.Columns.Add("A", typeof(int)); table.Columns.Add("D", typeof(int)); table.Columns.Add("Spe", typeof(int)); table.Columns.Add("SpA", typeof(int)); table.Columns.Add("SpD", typeof(int)); table.Rows.Add(0, 10, 10, 10, 10, 10); table.Rows.Add(1, 11, 9, 10, 10, 10); table.Rows.Add(2, 11, 10, 9, 10, 10); table.Rows.Add(3, 11, 10, 10, 9, 10); table.Rows.Add(4, 11, 10, 10, 10, 9); table.Rows.Add(5, 9, 11, 10, 10, 10); table.Rows.Add(6, 10, 10, 10, 10, 10); table.Rows.Add(7, 10, 11, 9, 10, 10); table.Rows.Add(8, 10, 11, 10, 9, 10); table.Rows.Add(9, 10, 11, 10, 10, 9); table.Rows.Add(10, 9, 10, 11, 10, 10); table.Rows.Add(11, 10, 9, 11, 10, 10); table.Rows.Add(12, 10, 10, 10, 10, 10); table.Rows.Add(13, 10, 10, 11, 9, 10); table.Rows.Add(14, 10, 10, 11, 10, 9); table.Rows.Add(15, 9, 10, 10, 11, 10); table.Rows.Add(16, 10, 9, 10, 11, 10); table.Rows.Add(17, 10, 10, 9, 11, 10); table.Rows.Add(18, 10, 10, 10, 10, 10); table.Rows.Add(19, 10, 10, 10, 11, 9); table.Rows.Add(20, 9, 10, 10, 10, 11); table.Rows.Add(21, 10, 9, 10, 10, 11); table.Rows.Add(22, 10, 10, 9, 10, 11); table.Rows.Add(23, 10, 10, 10, 9, 11); table.Rows.Add(24, 10, 10, 10, 10, 10); return table; } // Stat Fetching public static int getMovePP(int move, int ppup) { return (getBasePP(move) * (5 + ppup) / 5); } public static int getBasePP(int move) { if (move < 0) { move = 0; } DataTable movepptable = MovePPTable(); return (int)movepptable.Rows[move][1]; } public static byte getBaseFriendship(int species) { return ((byte)PKX.Friendship().Rows[species][1]); } public static int getLevel(int species, ref uint exp) { if (exp == 0) { return 1; } int tl = 1; // Initial Level DataTable spectable = PKX.SpeciesTable(); DataTable table = PKX.ExpTable(); int growth = (int)spectable.Rows[species][1]; if ((uint)table.Rows[tl][growth + 1] < exp) { while ((uint)table.Rows[tl][growth + 1] < exp) { // While EXP for guessed level is below our current exp tl += 1; if (tl == 100) { exp = getEXP(100, species); return tl; } // when calcexp exceeds our exp, we exit loop } if ((uint)table.Rows[tl][growth + 1] == exp) // Matches level threshold return tl; else return (tl - 1); } else return tl; } public static uint getEXP(int level, int species) { // Fetch Growth if ((level == 0) || (level == 1)) return 0; if (level > 100) level = 100; DataTable spectable = PKX.SpeciesTable(); int growth = (int)spectable.Rows[species][1]; uint exp = (uint)PKX.ExpTable().Rows[level][growth+1]; return exp; } public static int getGender(string s) { if (s == "♂" || s == "M") return 0; else if (s == "♀" || s == "F") return 1; else return 2; } // Manipulation public static byte[] shuffleArray(byte[] pkx, uint sv) { byte[] ekx = new Byte[260]; Array.Copy(pkx, ekx, 8); // Now to shuffle the blocks // Define Shuffle Order Structure byte[] aloc = new byte[] { 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 2, 3, 1, 1, 2, 3, 2, 3, 1, 1, 2, 3, 2, 3 }; byte[] bloc = new byte[] { 1, 1, 2, 3, 2, 3, 0, 0, 0, 0, 0, 0, 2, 3, 1, 1, 3, 2, 2, 3, 1, 1, 3, 2 }; byte[] cloc = new byte[] { 2, 3, 1, 1, 3, 2, 2, 3, 1, 1, 3, 2, 0, 0, 0, 0, 0, 0, 3, 2, 3, 2, 1, 1 }; byte[] dloc = new byte[] { 3, 2, 3, 2, 1, 1, 3, 2, 3, 2, 1, 1, 3, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0 }; // Get Shuffle Order byte[] shlog = new byte[] { aloc[sv], bloc[sv], cloc[sv], dloc[sv] }; // UnShuffle Away! for (int b = 0; b < 4; b++) Array.Copy(pkx, 8 + 56 * shlog[b], ekx, 8 + 56 * b, 56); // Fill the Battle Stats back if (pkx.Length > 232) Array.Copy(pkx, 232, ekx, 232, 28); return ekx; } public static byte[] decryptArray(byte[] ekx) { byte[] pkx = new Byte[0x104]; Array.Copy(ekx, pkx, ekx.Length); uint pv = BitConverter.ToUInt32(pkx, 0); uint sv = (((pv & 0x3E000) >> 0xD) % 24); uint seed = pv; // Decrypt Blocks with RNG Seed for (int i = 8; i < 232; i += 2) { int pre = pkx[i] + ((pkx[i + 1]) << 8); seed = PKX.LCRNG(seed); int seedxor = (int)((seed) >> 16); int post = (pre ^ seedxor); pkx[i] = (byte)((post) & 0xFF); pkx[i + 1] = (byte)(((post) >> 8) & 0xFF); } // Deshuffle pkx = shuffleArray(pkx, sv); // Decrypt the Party Stats seed = pv; for (int i = 232; i < 260; i += 2) { int pre = pkx[i] + ((pkx[i + 1]) << 8); seed = PKX.LCRNG(seed); int seedxor = (int)((seed) >> 16); int post = (pre ^ seedxor); pkx[i] = (byte)((post) & 0xFF); pkx[i + 1] = (byte)(((post) >> 8) & 0xFF); } return pkx; } public static byte[] encryptArray(byte[] pkx) { // Shuffle uint pv = BitConverter.ToUInt32(pkx, 0); uint sv = (((pv & 0x3E000) >> 0xD) % 24); byte[] ekxdata = new Byte[pkx.Length]; Array.Copy(pkx, ekxdata, pkx.Length); // If I unshuffle 11 times, the 12th (decryption) will always decrypt to ABCD. // 2 x 3 x 4 = 12 (possible unshuffle loops -> total iterations) for (int i = 0; i < 11; i++) ekxdata = shuffleArray(ekxdata, sv); uint seed = pv; // Encrypt Blocks with RNG Seed for (int i = 8; i < 232; i += 2) { int pre = ekxdata[i] + ((ekxdata[i + 1]) << 8); seed = PKX.LCRNG(seed); int seedxor = (int)((seed) >> 16); int post = (pre ^ seedxor); ekxdata[i] = (byte)((post) & 0xFF); ekxdata[i + 1] = (byte)(((post) >> 8) & 0xFF); } // Encrypt the Party Stats seed = pv; for (int i = 232; i < 260; i += 2) { int pre = ekxdata[i] + ((ekxdata[i + 1]) << 8); seed = PKX.LCRNG(seed); int seedxor = (int)((seed) >> 16); int post = (pre ^ seedxor); ekxdata[i] = (byte)((post) & 0xFF); ekxdata[i + 1] = (byte)(((post) >> 8) & 0xFF); } // Done return ekxdata; } public static ushort getCHK(byte[] data) { ushort chk = 0; for (int i = 8; i < 232; i += 2) // Loop through the entire PKX chk += BitConverter.ToUInt16(data, i); return chk; } public static bool verifychk(byte[] input) { ushort checksum = 0; if (input.Length == 100 || input.Length == 80) // Gen 3 Files { for (int i = 32; i < 80; i += 2) checksum += BitConverter.ToUInt16(input, i); return (checksum == BitConverter.ToUInt16(input, 28)); } else { if (input.Length == 236 || input.Length == 220 || input.Length == 136) // Gen 4/5 Array.Resize(ref input, 136); else if (input.Length == 232 || input.Length == 260) // Gen 6 Array.Resize(ref input, 232); else throw new Exception("Wrong sized input array to verifychecksum"); ushort chk = 0; for (int i = 8; i < input.Length; i += 2) chk += BitConverter.ToUInt16(input, i); return (chk == BitConverter.ToUInt16(input, 0x6)); } } public static UInt16 getPSV(UInt32 PID) { return Convert.ToUInt16(((PID >> 16) ^ (PID & 0xFFFF)) >> 4); } public static UInt16 getTSV(UInt16 TID, UInt16 SID) { return Convert.ToUInt16((TID ^ SID) >> 4); } public static uint getRandomPID(int species, int cg) { int gt = (int)SpeciesTable().Rows[species][8]; uint pid = (uint)Util.rnd32(); if (gt > 255) return pid; while (true) // Loop until we find a suitable PID { uint gv = (pid & 0xFF); if (cg == 2) // Genderless break; // PID Passes else if ((cg == 1) && (gv < gt)) // Female break; // PID Passes else if ((cg == 0) && (gv >= gt)) break; // PID Passes pid = (uint)Util.rnd32(); } return pid; } // Object #region Define private Image pksprite; private uint mEC, mPID, mIV32, mexp, mHP_EV, mATK_EV, mDEF_EV, mSPA_EV, mSPD_EV, mSPE_EV, mHP_IV, mATK_IV, mDEF_IV, mSPE_IV, mSPA_IV, mSPD_IV, mcnt_cool, mcnt_beauty, mcnt_cute, mcnt_smart, mcnt_tough, mcnt_sheen, mmarkings, mhptype; private string mnicknamestr, mgenderstring, mnotOT, mot, mSpeciesName, mNatureName, mHPName, mAbilityName, mMove1N, mMove2N, mMove3N, mMove4N; private int mability, mabilitynum, mnature, mfeflag, mgenderflag, maltforms, mPKRS_Strain, mPKRS_Duration, mmetlevel, motgender; private bool misegg, misnick, misshiny; private ushort mspecies, mhelditem, mTID, mSID, mTSV, mESV, mmove1, mmove2, mmove3, mmove4, mmove1_pp, mmove2_pp, mmove3_pp, mmove4_pp, mmove1_ppu, mmove2_ppu, mmove3_ppu, mmove4_ppu, meggmove1, meggmove2, meggmove3, meggmove4, mchk, mOTfriendship, mOTaffection, megg_year, megg_month, megg_day, mmet_year, mmet_month, mmet_day, meggloc, mmetloc, mball, mencountertype, mgamevers, mcountryID, mregionID, mdsregID, motlang; #endregion public Image pkimg { get { return pksprite; } } public string Nickname { get { return mnicknamestr; } } public string Species { get { return mSpeciesName; } } public string Nature { get { return mNatureName; } } public string Gender { get { return mgenderstring; } } public string ESV { get { return mESV.ToString("0000"); } } public string HP_Type { get { return mHPName; } } public string Ability { get { return mAbilityName; } } public string Move1 { get { return mMove1N; } } public string Move2 { get { return mMove2N; } } public string Move3 { get { return mMove3N; } } public string Move4 { get { return mMove4N; } } #region Extraneous public string EC { get { return mEC.ToString("X8"); } } public string PID { get { return mPID.ToString("X8"); } } public uint HP_IV { get { return mHP_IV; } } public uint ATK_IV { get { return mATK_IV; } } public uint DEF_IV { get { return mDEF_IV; } } public uint SPA_IV { get { return mSPA_IV; } } public uint SPD_IV { get { return mSPD_IV; } } public uint SPE_IV { get { return mSPE_IV; } } public uint EXP { get { return mexp; } } public uint HP_EV { get { return mHP_EV; } } public uint ATK_EV { get { return mATK_EV; } } public uint DEF_EV { get { return mDEF_EV; } } public uint SPA_EV { get { return mSPA_EV; } } public uint SPD_EV { get { return mSPD_EV; } } public uint SPE_EV { get { return mSPE_EV; } } public uint Cool { get { return mcnt_cool; } } public uint Beauty { get { return mcnt_beauty; } } public uint Cute { get { return mcnt_cute; } } public uint Smart { get { return mcnt_smart; } } public uint Tough { get { return mcnt_tough; } } public uint Sheen { get { return mcnt_sheen; } } public uint Markings { get { return mmarkings; } } public string NotOT { get { return mnotOT; } } public string OT { get { return mot; } } public int AbilityNum { get { return mabilitynum; } } public int FatefulFlag { get { return mfeflag; } } public int GenderFlag { get { return mgenderflag; } } public int AltForms { get { return maltforms; } } public int PKRS_Strain { get { return mPKRS_Strain; } } public int PKRS_Days { get { return mPKRS_Duration; } } public int MetLevel { get { return mmetlevel; } } public int OT_Gender { get { return motgender; } } public bool IsEgg { get { return misegg; } } public bool IsNicknamed { get { return misnick; } } public bool IsShiny { get { return misshiny; } } public ushort HeldItem { get { return mhelditem; } } public ushort TID { get { return mTID; } } public ushort SID { get { return mSID; } } public ushort TSV { get { return mTSV; } } public ushort Move1_PP { get { return mmove1_pp; } } public ushort Move2_PP { get { return mmove2_pp; } } public ushort Move3_PP { get { return mmove3_pp; } } public ushort Move4_PP { get { return mmove4_pp; } } public ushort Move1_PPUp { get { return mmove1_ppu; } } public ushort Move2_PPUp { get { return mmove2_ppu; } } public ushort Move3_PPUp { get { return mmove3_ppu; } } public ushort Move4_PPUp { get { return mmove4_ppu; } } public ushort EggMove1 { get { return meggmove1; } } public ushort EggMove2 { get { return meggmove2; } } public ushort EggMove3 { get { return meggmove3; } } public ushort EggMove4 { get { return meggmove4; } } public ushort Checksum { get { return mchk; } } public ushort mFriendship { get { return mOTfriendship; } } public ushort OT_Affection { get { return mOTaffection; } } public ushort Egg_Year { get { return megg_year; } } public ushort Egg_Day { get { return megg_month; } } public ushort Egg_Month { get { return megg_day; } } public ushort Met_Year { get { return mmet_year; } } public ushort Met_Day { get { return mmet_month; } } public ushort Met_Month { get { return mmet_day; } } public ushort Egg_Location { get { return meggloc; } } public ushort Met_Location { get { return mmetloc; } } public ushort Ball { get { return mball; } } public ushort Encounter { get { return mencountertype; } } public ushort GameVersion { get { return mgamevers; } } public ushort CountryID { get { return mcountryID; } } public ushort RegionID { get { return mregionID; } } public ushort DSRegionID { get { return mdsregID; } } public ushort OTLang { get { return motlang; } } #endregion public PKX(byte[] pkx) { mnicknamestr = ""; mnotOT = ""; mot = ""; mEC = BitConverter.ToUInt32(pkx, 0); mchk = BitConverter.ToUInt16(pkx, 6); mspecies = BitConverter.ToUInt16(pkx, 0x08); mhelditem = BitConverter.ToUInt16(pkx, 0x0A); mTID = BitConverter.ToUInt16(pkx, 0x0C); mSID = BitConverter.ToUInt16(pkx, 0x0E); mexp = BitConverter.ToUInt32(pkx, 0x10); mability = pkx[0x14]; mabilitynum = pkx[0x15]; // 0x16, 0x17 - unknown mPID = BitConverter.ToUInt32(pkx, 0x18); mnature = pkx[0x1C]; mfeflag = pkx[0x1D] % 2; mgenderflag = (pkx[0x1D] >> 1) & 0x3; maltforms = (pkx[0x1D] >> 3); mHP_EV = pkx[0x1E]; mATK_EV = pkx[0x1F]; mDEF_EV = pkx[0x20]; mSPA_EV = pkx[0x22]; mSPD_EV = pkx[0x23]; mSPE_EV = pkx[0x21]; mcnt_cool = pkx[0x24]; mcnt_beauty = pkx[0x25]; mcnt_cute = pkx[0x26]; mcnt_smart = pkx[0x27]; mcnt_tough = pkx[0x28]; mcnt_sheen = pkx[0x29]; mmarkings = pkx[0x2A]; mPKRS_Strain = pkx[0x2B] >> 4; mPKRS_Duration = pkx[0x2B] % 0x10; // Block B mnicknamestr = Util.TrimFromZero(Encoding.Unicode.GetString(pkx, 0x40, 24)); // 0x58, 0x59 - unused mmove1 = BitConverter.ToUInt16(pkx, 0x5A); mmove2 = BitConverter.ToUInt16(pkx, 0x5C); mmove3 = BitConverter.ToUInt16(pkx, 0x5E); mmove4 = BitConverter.ToUInt16(pkx, 0x60); mmove1_pp = pkx[0x62]; mmove2_pp = pkx[0x63]; mmove3_pp = pkx[0x64]; mmove4_pp = pkx[0x65]; mmove1_ppu = pkx[0x66]; mmove2_ppu = pkx[0x67]; mmove3_ppu = pkx[0x68]; mmove4_ppu = pkx[0x69]; meggmove1 = BitConverter.ToUInt16(pkx, 0x6A); meggmove2 = BitConverter.ToUInt16(pkx, 0x6C); meggmove3 = BitConverter.ToUInt16(pkx, 0x6E); meggmove4 = BitConverter.ToUInt16(pkx, 0x70); // 0x72 - Super Training Flag - Passed with pkx to new form // 0x73 - unused/unknown mIV32 = BitConverter.ToUInt32(pkx, 0x74); mHP_IV = mIV32 & 0x1F; mATK_IV = (mIV32 >> 5) & 0x1F; mDEF_IV = (mIV32 >> 10) & 0x1F; mSPE_IV = (mIV32 >> 15) & 0x1F; mSPA_IV = (mIV32 >> 20) & 0x1F; mSPD_IV = (mIV32 >> 25) & 0x1F; misegg = Convert.ToBoolean((mIV32 >> 30) & 1); misnick = Convert.ToBoolean((mIV32 >> 31)); // Block C mnotOT = Util.TrimFromZero(Encoding.Unicode.GetString(pkx, 0x78, 24)); bool notOTG = Convert.ToBoolean(pkx[0x92]); // Memory Editor edits everything else with pkx in a new form // Block D mot = Util.TrimFromZero(Encoding.Unicode.GetString(pkx, 0xB0, 24)); // 0xC8, 0xC9 - unused mOTfriendship = pkx[0xCA]; mOTaffection = pkx[0xCB]; // Handled by Memory Editor // 0xCC, 0xCD, 0xCE, 0xCF, 0xD0 megg_year = pkx[0xD1]; megg_month = pkx[0xD2]; megg_day = pkx[0xD3]; mmet_year = pkx[0xD4]; mmet_month = pkx[0xD5]; mmet_day = pkx[0xD6]; // 0xD7 - unused meggloc = BitConverter.ToUInt16(pkx, 0xD8); mmetloc = BitConverter.ToUInt16(pkx, 0xDA); mball = pkx[0xDC]; mmetlevel = pkx[0xDD] & 0x7F; motgender = (pkx[0xDD]) >> 7; mencountertype = pkx[0xDE]; mgamevers = pkx[0xDF]; mcountryID = pkx[0xE0]; mregionID = pkx[0xE1]; mdsregID = pkx[0xE2]; motlang = pkx[0xE3]; if (mgenderflag == 0) mgenderstring = "♂"; else if (mgenderflag == 1) mgenderstring = "♀"; else mgenderstring = "-"; mhptype = (15 * ((mHP_IV & 1) + 2 * (mATK_IV & 1) + 4 * (mDEF_IV & 1) + 8 * (mSPE_IV & 1) + 16 * (mSPA_IV & 1) + 32 * (mSPD_IV & 1))) / 63 + 1; mTSV = (ushort)((mTID ^ mSID) >> 4); mESV = (ushort)(((mPID >> 16) ^ (mPID & 0xFFFF)) >> 4); misshiny = (mTSV == mESV); // Nidoran Gender Fixing Text if (!Convert.ToBoolean(misnick)) { if (mnicknamestr.Contains((char)0xE08F)) mnicknamestr = Regex.Replace(mnicknamestr, "\uE08F", "\u2640"); else if (mnicknamestr.Contains((char)0xE08E)) mnicknamestr = Regex.Replace(mnicknamestr, "\uE08E", "\u2642"); } { int species = BitConverter.ToInt16(pkx, 0x08); // Get Species uint isegg = (BitConverter.ToUInt32(pkx, 0x74) >> 30) & 1; int altforms = (pkx[0x1D] >> 3); int gender = (pkx[0x1D] >> 1) & 0x3; string file; if (isegg == 1) { file = "egg"; } else { file = "_" + species.ToString(); if (altforms > 0) // Alt Form Handling file = file + "_" + altforms.ToString(); else if ((species == 521) && (gender == 1)) // Unfezant file = "_" + species.ToString() + "f"; } if (species == 0) file = "_0"; pksprite = (Image)Properties.Resources.ResourceManager.GetObject(file); } try { mSpeciesName = Form1.specieslist[mspecies]; mNatureName = Form1.natures[mnature]; mHPName = Form1.types[mhptype]; mAbilityName = Form1.abilitylist[mability]; mMove1N = Form1.movelist[mmove1]; mMove2N = Form1.movelist[mmove2]; mMove3N = Form1.movelist[mmove3]; mMove4N = Form1.movelist[mmove4]; } catch { return; } } // Save File Related internal static int detectSAVIndex(byte[] data, ref int savindex) { SHA256 mySHA256 = SHA256Managed.Create(); { byte[] difihash1 = new Byte[0x12C]; byte[] difihash2 = new Byte[0x12C]; Array.Copy(data, 0x330, difihash1, 0, 0x12C); Array.Copy(data, 0x200, difihash2, 0, 0x12C); byte[] hashValue1 = mySHA256.ComputeHash(difihash1); byte[] hashValue2 = mySHA256.ComputeHash(difihash2); byte[] actualhash = new Byte[0x20]; Array.Copy(data, 0x16C, actualhash, 0, 0x20); if (hashValue1.SequenceEqual(actualhash)) { Console.WriteLine("Active DIFI 2 - Save 1."); savindex = 0; } else if (hashValue2.SequenceEqual(actualhash)) { Console.WriteLine("Active DIFI 1 - Save 2."); savindex = 1; } else { Console.WriteLine("ERROR: NO ACTIVE DIFI HASH MATCH"); savindex = 2; } } if ((data[0x168] ^ 1) != savindex && savindex != 2) { Console.WriteLine("ERROR: ACTIVE BLOCK MISMATCH"); savindex = 2; } return savindex; } internal static ushort ccitt16(byte[] data) { ushort crc = 0xFFFF; for (int i = 0; i < data.Length; i++) { crc ^= (ushort)(data[i] << 8); for (int j = 0; j < 8; j++) { if ((crc & 0x8000) > 0) crc = (ushort)((crc << 1) ^ 0x1021); else crc <<= 1; } } return crc; } } }