diff --git a/common/defaults/korea.ipv4.php b/common/defaults/korea.ipv4.php new file mode 100644 index 000000000..d2ce958aa --- /dev/null +++ b/common/defaults/korea.ipv4.php @@ -0,0 +1,3863 @@ + + array ( + 0 => '17498112', + 1 => '17563647', + ), + 1 => + array ( + 0 => '17825792', + 1 => '17842175', + ), + 2 => + array ( + 0 => '23068672', + 1 => '24117247', + ), + 3 => + array ( + 0 => '28311552', + 1 => '28442623', + ), + 4 => + array ( + 0 => '29949952', + 1 => '30015487', + ), + 5 => + array ( + 0 => '30408704', + 1 => '33554431', + ), + 6 => + array ( + 0 => '234889216', + 1 => '234913791', + ), + 7 => + array ( + 0 => '235143168', + 1 => '235405311', + ), + 8 => + array ( + 0 => '236978176', + 1 => '241172479', + ), + 9 => + array ( + 0 => '243302400', + 1 => '243400703', + ), + 10 => + array ( + 0 => '243924992', + 1 => '243990527', + ), + 11 => + array ( + 0 => '247484416', + 1 => '247488511', + ), + 12 => + array ( + 0 => '248381440', + 1 => '248446975', + ), + 13 => + array ( + 0 => '453045248', + 1 => '453046271', + ), + 14 => + array ( + 0 => '453050368', + 1 => '453115903', + ), + 15 => + array ( + 0 => '455278592', + 1 => '455344127', + ), + 16 => + array ( + 0 => '459309056', + 1 => '459325439', + ), + 17 => + array ( + 0 => '459571200', + 1 => '459735039', + ), + 18 => + array ( + 0 => '460283904', + 1 => '460292095', + ), + 19 => + array ( + 0 => '460357632', + 1 => '460423167', + ), + 20 => + array ( + 0 => '460554240', + 1 => '460587007', + ), + 21 => + array ( + 0 => '460603392', + 1 => '460718079', + ), + 22 => + array ( + 0 => '460734464', + 1 => '460865535', + ), + 23 => + array ( + 0 => '461012992', + 1 => '461045759', + ), + 24 => + array ( + 0 => '461144064', + 1 => '461209599', + ), + 25 => + array ( + 0 => '461242368', + 1 => '461258751', + ), + 26 => + array ( + 0 => '463470592', + 1 => '465043455', + ), + 27 => + array ( + 0 => '468189184', + 1 => '468713471', + ), + 28 => + array ( + 0 => '469712896', + 1 => '469729279', + ), + 29 => + array ( + 0 => '606470144', + 1 => '606601215', + ), + 30 => + array ( + 0 => '654573568', + 1 => '654835711', + ), + 31 => + array ( + 0 => '655360000', + 1 => '656408575', + ), + 32 => + array ( + 0 => '661651456', + 1 => '662700031', + ), + 33 => + array ( + 0 => '705167360', + 1 => '707788799', + ), + 34 => + array ( + 0 => '710017024', + 1 => '710082559', + ), + 35 => + array ( + 0 => '736126976', + 1 => '736127999', + ), + 36 => + array ( + 0 => '736326656', + 1 => '736328703', + ), + 37 => + array ( + 0 => '736403456', + 1 => '736404479', + ), + 38 => + array ( + 0 => '736493568', + 1 => '736494591', + ), + 39 => + array ( + 0 => '736513024', + 1 => '736515071', + ), + 40 => + array ( + 0 => '736548864', + 1 => '736549887', + ), + 41 => + array ( + 0 => '737241088', + 1 => '737243135', + ), + 42 => + array ( + 0 => '737308672', + 1 => '737309695', + ), + 43 => + array ( + 0 => '737400832', + 1 => '737401855', + ), + 44 => + array ( + 0 => '737581056', + 1 => '737582079', + ), + 45 => + array ( + 0 => '737634304', + 1 => '737635327', + ), + 46 => + array ( + 0 => '737656832', + 1 => '737657855', + ), + 47 => + array ( + 0 => '737843200', + 1 => '737844223', + ), + 48 => + array ( + 0 => '737900544', + 1 => '737901567', + ), + 49 => + array ( + 0 => '738128896', + 1 => '738129919', + ), + 50 => + array ( + 0 => '738195456', + 1 => '738197503', + ), + 51 => + array ( + 0 => '759204864', + 1 => '759206911', + ), + 52 => + array ( + 0 => '759207936', + 1 => '759208959', + ), + 53 => + array ( + 0 => '759213056', + 1 => '759214079', + ), + 54 => + array ( + 0 => '762337280', + 1 => '762345471', + ), + 55 => + array ( + 0 => '762353664', + 1 => '762358783', + ), + 56 => + array ( + 0 => '762391552', + 1 => '762393599', + ), + 57 => + array ( + 0 => '762550272', + 1 => '762551295', + ), + 58 => + array ( + 0 => '762645504', + 1 => '762646527', + ), + 59 => + array ( + 0 => '762810368', + 1 => '762811391', + ), + 60 => + array ( + 0 => '762855424', + 1 => '762857471', + ), + 61 => + array ( + 0 => '762946560', + 1 => '762947583', + ), + 62 => + array ( + 0 => '763226112', + 1 => '763227135', + ), + 63 => + array ( + 0 => '822149120', + 1 => '822214655', + ), + 64 => + array ( + 0 => '823132160', + 1 => '824180735', + ), + 65 => + array ( + 0 => '825360384', + 1 => '825361407', + ), + 66 => + array ( + 0 => '825364480', + 1 => '825376767', + ), + 67 => + array ( + 0 => '825393152', + 1 => '825409535', + ), + 68 => + array ( + 0 => '825753600', + 1 => '826277887', + ), + 69 => + array ( + 0 => '830521344', + 1 => '830529535', + ), + 70 => + array ( + 0 => '831389696', + 1 => '831512575', + ), + 71 => + array ( + 0 => '832569344', + 1 => '833617919', + ), + 72 => + array ( + 0 => '837566464', + 1 => '837599231', + ), + 73 => + array ( + 0 => '837697536', + 1 => '837746687', + ), + 74 => + array ( + 0 => '837779456', + 1 => '837795839', + ), + 75 => + array ( + 0 => '838205440', + 1 => '838238207', + ), + 76 => + array ( + 0 => '838270976', + 1 => '838336511', + ), + 77 => + array ( + 0 => '838729728', + 1 => '838795263', + ), + 78 => + array ( + 0 => '974979072', + 1 => '975044607', + ), + 79 => + array ( + 0 => '977354752', + 1 => '977371135', + ), + 80 => + array ( + 0 => '977797120', + 1 => '978321407', + ), + 81 => + array ( + 0 => '978594816', + 1 => '978595839', + ), + 82 => + array ( + 0 => '978788352', + 1 => '978796543', + ), + 83 => + array ( + 0 => '979763200', + 1 => '979894271', + ), + 84 => + array ( + 0 => '980942848', + 1 => '981467135', + ), + 85 => + array ( + 0 => '982171648', + 1 => '982188031', + ), + 86 => + array ( + 0 => '982253568', + 1 => '982515711', + ), + 87 => + array ( + 0 => '982581248', + 1 => '982614015', + ), + 88 => + array ( + 0 => '982695936', + 1 => '982712319', + ), + 89 => + array ( + 0 => '982757376', + 1 => '982759423', + ), + 90 => + array ( + 0 => '982777856', + 1 => '983039999', + ), + 91 => + array ( + 0 => '984875008', + 1 => '984956927', + ), + 92 => + array ( + 0 => '985137152', + 1 => '985202687', + ), + 93 => + array ( + 0 => '987758592', + 1 => '988807167', + ), + 94 => + array ( + 0 => '989855744', + 1 => '991952895', + ), + 95 => + array ( + 0 => '995540992', + 1 => '995557375', + ), + 96 => + array ( + 0 => '999686144', + 1 => '999751679', + ), + 97 => + array ( + 0 => '999800832', + 1 => '999817215', + ), + 98 => + array ( + 0 => '999849984', + 1 => '999866367', + ), + 99 => + array ( + 0 => '1002045440', + 1 => '1002176511', + ), + 100 => + array ( + 0 => '1019478016', + 1 => '1019609087', + ), + 101 => + array ( + 0 => '1023213568', + 1 => '1023238143', + ), + 102 => + array ( + 0 => '1023721472', + 1 => '1023737855', + ), + 103 => + array ( + 0 => '1023778816', + 1 => '1023787007', + ), + 104 => + array ( + 0 => '1024380928', + 1 => '1024381951', + ), + 105 => + array ( + 0 => '1025507328', + 1 => '1026293759', + ), + 106 => + array ( + 0 => '1026539520', + 1 => '1026555903', + ), + 107 => + array ( + 0 => '1028128768', + 1 => '1029046271', + ), + 108 => + array ( + 0 => '1029701632', + 1 => '1030027263', + ), + 109 => + array ( + 0 => '1030029312', + 1 => '1030086655', + ), + 110 => + array ( + 0 => '1030091776', + 1 => '1030092799', + ), + 111 => + array ( + 0 => '1030094848', + 1 => '1030627327', + ), + 112 => + array ( + 0 => '1030631424', + 1 => '1030701055', + ), + 113 => + array ( + 0 => '1030713344', + 1 => '1030733823', + ), + 114 => + array ( + 0 => '1030746112', + 1 => '1030750207', + ), + 115 => + array ( + 0 => '1039511552', + 1 => '1039515647', + ), + 116 => + array ( + 0 => '1039523840', + 1 => '1039532031', + ), + 117 => + array ( + 0 => '1039613952', + 1 => '1039638527', + ), + 118 => + array ( + 0 => '1039646720', + 1 => '1039654911', + ), + 119 => + array ( + 0 => '1039708160', + 1 => '1039720447', + ), + 120 => + array ( + 0 => '1039753216', + 1 => '1039769599', + ), + 121 => + array ( + 0 => '1039785984', + 1 => '1039871999', + ), + 122 => + array ( + 0 => '1039876096', + 1 => '1039925247', + ), + 123 => + array ( + 0 => '1039929344', + 1 => '1039941631', + ), + 124 => + array ( + 0 => '1039949824', + 1 => '1040187391', + ), + 125 => + array ( + 0 => '1694566400', + 1 => '1694568447', + ), + 126 => + array ( + 0 => '1694572544', + 1 => '1694580735', + ), + 127 => + array ( + 0 => '1697988608', + 1 => '1697996799', + ), + 128 => + array ( + 0 => '1698103296', + 1 => '1698136063', + ), + 129 => + array ( + 0 => '1699676160', + 1 => '1699741695', + ), + 130 => + array ( + 0 => '1701150720', + 1 => '1701183487', + ), + 131 => + array ( + 0 => '1707737088', + 1 => '1707802623', + ), + 132 => + array ( + 0 => '1709899776', + 1 => '1709965311', + ), + 133 => + array ( + 0 => '1710882816', + 1 => '1710948351', + ), + 134 => + array ( + 0 => '1728203776', + 1 => '1728204799', + ), + 135 => + array ( + 0 => '1728205824', + 1 => '1728206847', + ), + 136 => + array ( + 0 => '1728207872', + 1 => '1728208895', + ), + 137 => + array ( + 0 => '1728259072', + 1 => '1728260095', + ), + 138 => + array ( + 0 => '1728327680', + 1 => '1728328703', + ), + 139 => + array ( + 0 => '1728353280', + 1 => '1728354303', + ), + 140 => + array ( + 0 => '1728360448', + 1 => '1728362495', + ), + 141 => + array ( + 0 => '1728413696', + 1 => '1728414719', + ), + 142 => + array ( + 0 => '1728417792', + 1 => '1728418815', + ), + 143 => + array ( + 0 => '1728464896', + 1 => '1728465919', + ), + 144 => + array ( + 0 => '1728466944', + 1 => '1728467967', + ), + 145 => + array ( + 0 => '1728472064', + 1 => '1728473087', + ), + 146 => + array ( + 0 => '1728490496', + 1 => '1728491519', + ), + 147 => + array ( + 0 => '1728520192', + 1 => '1728521215', + ), + 148 => + array ( + 0 => '1728560640', + 1 => '1728561151', + ), + 149 => + array ( + 0 => '1728574464', + 1 => '1728575487', + ), + 150 => + array ( + 0 => '1728603136', + 1 => '1728604159', + ), + 151 => + array ( + 0 => '1728636416', + 1 => '1728636671', + ), + 152 => + array ( + 0 => '1728651264', + 1 => '1728652287', + ), + 153 => + array ( + 0 => '1728675840', + 1 => '1728676863', + ), + 154 => + array ( + 0 => '1728732160', + 1 => '1728733183', + ), + 155 => + array ( + 0 => '1728763904', + 1 => '1728764927', + ), + 156 => + array ( + 0 => '1728780288', + 1 => '1728781311', + ), + 157 => + array ( + 0 => '1728785408', + 1 => '1728786431', + ), + 158 => + array ( + 0 => '1728788480', + 1 => '1728789503', + ), + 159 => + array ( + 0 => '1728806912', + 1 => '1728807935', + ), + 160 => + array ( + 0 => '1728837632', + 1 => '1728838655', + ), + 161 => + array ( + 0 => '1728903168', + 1 => '1728905215', + ), + 162 => + array ( + 0 => '1728918528', + 1 => '1728919551', + ), + 163 => + array ( + 0 => '1728946176', + 1 => '1728947199', + ), + 164 => + array ( + 0 => '1729330176', + 1 => '1729331199', + ), + 165 => + array ( + 0 => '1729378816', + 1 => '1729379071', + ), + 166 => + array ( + 0 => '1729393664', + 1 => '1729394687', + ), + 167 => + array ( + 0 => '1729480704', + 1 => '1729481727', + ), + 168 => + array ( + 0 => '1729551360', + 1 => '1729552383', + ), + 169 => + array ( + 0 => '1729581056', + 1 => '1729583103', + ), + 170 => + array ( + 0 => '1729628160', + 1 => '1729629183', + ), + 171 => + array ( + 0 => '1729695744', + 1 => '1729696767', + ), + 172 => + array ( + 0 => '1729855488', + 1 => '1729856511', + ), + 173 => + array ( + 0 => '1729860608', + 1 => '1729861631', + ), + 174 => + array ( + 0 => '1729903616', + 1 => '1729905663', + ), + 175 => + array ( + 0 => '1730046976', + 1 => '1730047999', + ), + 176 => + array ( + 0 => '1730060288', + 1 => '1730061311', + ), + 177 => + array ( + 0 => '1730071552', + 1 => '1730072575', + ), + 178 => + array ( + 0 => '1730130944', + 1 => '1730131967', + ), + 179 => + array ( + 0 => '1730549760', + 1 => '1730550783', + ), + 180 => + array ( + 0 => '1730618368', + 1 => '1730619391', + ), + 181 => + array ( + 0 => '1730852864', + 1 => '1730853887', + ), + 182 => + array ( + 0 => '1730887680', + 1 => '1730887935', + ), + 183 => + array ( + 0 => '1730902016', + 1 => '1730903039', + ), + 184 => + array ( + 0 => '1731275776', + 1 => '1731276799', + ), + 185 => + array ( + 0 => '1731340288', + 1 => '1731341311', + ), + 186 => + array ( + 0 => '1731438592', + 1 => '1731441663', + ), + 187 => + array ( + 0 => '1731442688', + 1 => '1731447807', + ), + 188 => + array ( + 0 => '1731457024', + 1 => '1731461119', + ), + 189 => + array ( + 0 => '1731512320', + 1 => '1731513343', + ), + 190 => + array ( + 0 => '1731555840', + 1 => '1731556095', + ), + 191 => + array ( + 0 => '1731666688', + 1 => '1731666943', + ), + 192 => + array ( + 0 => '1731705856', + 1 => '1731706879', + ), + 193 => + array ( + 0 => '1731804160', + 1 => '1731805183', + ), + 194 => + array ( + 0 => '1731959808', + 1 => '1731960831', + ), + 195 => + array ( + 0 => '1732016128', + 1 => '1732018175', + ), + 196 => + array ( + 0 => '1732174848', + 1 => '1732175871', + ), + 197 => + array ( + 0 => '1740794880', + 1 => '1740795903', + ), + 198 => + array ( + 0 => '1740831744', + 1 => '1740832767', + ), + 199 => + array ( + 0 => '1741572608', + 1 => '1741573119', + ), + 200 => + array ( + 0 => '1741794304', + 1 => '1741795327', + ), + 201 => + array ( + 0 => '1742882816', + 1 => '1742884863', + ), + 202 => + array ( + 0 => '1742888960', + 1 => '1742889983', + ), + 203 => + array ( + 0 => '1743100928', + 1 => '1743101951', + ), + 204 => + array ( + 0 => '1743155200', + 1 => '1743156223', + ), + 205 => + array ( + 0 => '1743224832', + 1 => '1743225855', + ), + 206 => + array ( + 0 => '1743389696', + 1 => '1743390719', + ), + 207 => + array ( + 0 => '1743460352', + 1 => '1743461375', + ), + 208 => + array ( + 0 => '1743590400', + 1 => '1743591423', + ), + 209 => + array ( + 0 => '1743714304', + 1 => '1743715327', + ), + 210 => + array ( + 0 => '1743745024', + 1 => '1743746047', + ), + 211 => + array ( + 0 => '1743776768', + 1 => '1743778815', + ), + 212 => + array ( + 0 => '1743789056', + 1 => '1743790079', + ), + 213 => + array ( + 0 => '1743794176', + 1 => '1743795199', + ), + 214 => + array ( + 0 => '1744029696', + 1 => '1744030719', + ), + 215 => + array ( + 0 => '1744054272', + 1 => '1744055295', + ), + 216 => + array ( + 0 => '1744071680', + 1 => '1744072703', + ), + 217 => + array ( + 0 => '1744189440', + 1 => '1744190463', + ), + 218 => + array ( + 0 => '1744235520', + 1 => '1744236543', + ), + 219 => + array ( + 0 => '1744296960', + 1 => '1744297983', + ), + 220 => + array ( + 0 => '1744300032', + 1 => '1744301055', + ), + 221 => + array ( + 0 => '1744332800', + 1 => '1744333823', + ), + 222 => + array ( + 0 => '1744378880', + 1 => '1744379903', + ), + 223 => + array ( + 0 => '1744529408', + 1 => '1744530431', + ), + 224 => + array ( + 0 => '1744695296', + 1 => '1744696319', + ), + 225 => + array ( + 0 => '1779040256', + 1 => '1779073023', + ), + 226 => + array ( + 0 => '1784676352', + 1 => '1785200639', + ), + 227 => + array ( + 0 => '1794113536', + 1 => '1795162111', + ), + 228 => + array ( + 0 => '1845772288', + 1 => '1845788671', + ), + 229 => + array ( + 0 => '1845854208', + 1 => '1845886975', + ), + 230 => + array ( + 0 => '1846018048', + 1 => '1846542335', + ), + 231 => + array ( + 0 => '1847738368', + 1 => '1847754751', + ), + 232 => + array ( + 0 => '1847787520', + 1 => '1847803903', + ), + 233 => + array ( + 0 => '1847812096', + 1 => '1847853055', + ), + 234 => + array ( + 0 => '1848385536', + 1 => '1848393727', + ), + 235 => + array ( + 0 => '1848426496', + 1 => '1848639487', + ), + 236 => + array ( + 0 => '1849950208', + 1 => '1850212351', + ), + 237 => + array ( + 0 => '1850490880', + 1 => '1850507263', + ), + 238 => + array ( + 0 => '1850510336', + 1 => '1850511359', + ), + 239 => + array ( + 0 => '1851528192', + 1 => '1851528959', + ), + 240 => + array ( + 0 => '1851555840', + 1 => '1851588607', + ), + 241 => + array ( + 0 => '1851594752', + 1 => '1851596799', + ), + 242 => + array ( + 0 => '1851617280', + 1 => '1851637759', + ), + 243 => + array ( + 0 => '1856307200', + 1 => '1856315391', + ), + 244 => + array ( + 0 => '1856323584', + 1 => '1856339967', + ), + 245 => + array ( + 0 => '1856791552', + 1 => '1856798719', + ), + 246 => + array ( + 0 => '1860722688', + 1 => '1860723711', + ), + 247 => + array ( + 0 => '1866563584', + 1 => '1866579967', + ), + 248 => + array ( + 0 => '1866715136', + 1 => '1866727423', + ), + 249 => + array ( + 0 => '1868267520', + 1 => '1868283903', + ), + 250 => + array ( + 0 => '1868348416', + 1 => '1868349439', + ), + 251 => + array ( + 0 => '1870004224', + 1 => '1870036991', + ), + 252 => + array ( + 0 => '1873477632', + 1 => '1873510399', + ), + 253 => + array ( + 0 => '1876557824', + 1 => '1876688895', + ), + 254 => + array ( + 0 => '1876762624', + 1 => '1876764671', + ), + 255 => + array ( + 0 => '1883799552', + 1 => '1883832319', + ), + 256 => + array ( + 0 => '1884028928', + 1 => '1884159999', + ), + 257 => + array ( + 0 => '1885995008', + 1 => '1886191615', + ), + 258 => + array ( + 0 => '1886199808', + 1 => '1886207999', + ), + 259 => + array ( + 0 => '1886978048', + 1 => '1886986239', + ), + 260 => + array ( + 0 => '1887027200', + 1 => '1887043583', + ), + 261 => + array ( + 0 => '1887764480', + 1 => '1887813631', + ), + 262 => + array ( + 0 => '1887993856', + 1 => '1888026623', + ), + 263 => + array ( + 0 => '1888071680', + 1 => '1888073727', + ), + 264 => + array ( + 0 => '1888239616', + 1 => '1888255999', + ), + 265 => + array ( + 0 => '1888260096', + 1 => '1888264191', + ), + 266 => + array ( + 0 => '1888272384', + 1 => '1888288767', + ), + 267 => + array ( + 0 => '1888485376', + 1 => '1891631103', + ), + 268 => + array ( + 0 => '1891942400', + 1 => '1891950591', + ), + 269 => + array ( + 0 => '1892941824', + 1 => '1893015551', + ), + 270 => + array ( + 0 => '1893072896', + 1 => '1893138431', + ), + 271 => + array ( + 0 => '1893203968', + 1 => '1893728255', + ), + 272 => + array ( + 0 => '1896480768', + 1 => '1896497151', + ), + 273 => + array ( + 0 => '1897201664', + 1 => '1897209855', + ), + 274 => + array ( + 0 => '1897758720', + 1 => '1897779199', + ), + 275 => + array ( + 0 => '1897791488', + 1 => '1897824255', + ), + 276 => + array ( + 0 => '1899268096', + 1 => '1899270143', + ), + 277 => + array ( + 0 => '1899282432', + 1 => '1899290623', + ), + 278 => + array ( + 0 => '1899724800', + 1 => '1899741183', + ), + 279 => + array ( + 0 => '1899757568', + 1 => '1899831295', + ), + 280 => + array ( + 0 => '1899849728', + 1 => '1899850751', + ), + 281 => + array ( + 0 => '1904361472', + 1 => '1904369663', + ), + 282 => + array ( + 0 => '1904377856', + 1 => '1904476159', + ), + 283 => + array ( + 0 => '1908424704', + 1 => '1908441087', + ), + 284 => + array ( + 0 => '1908756480', + 1 => '1908760575', + ), + 285 => + array ( + 0 => '1908801536', + 1 => '1908899839', + ), + 286 => + array ( + 0 => '1909981184', + 1 => '1910112255', + ), + 287 => + array ( + 0 => '1914503168', + 1 => '1914544127', + ), + 288 => + array ( + 0 => '1914568704', + 1 => '1914576895', + ), + 289 => + array ( + 0 => '1914580992', + 1 => '1914585087', + ), + 290 => + array ( + 0 => '1914601472', + 1 => '1914634239', + ), + 291 => + array ( + 0 => '1914642432', + 1 => '1914650623', + ), + 292 => + array ( + 0 => '1914662912', + 1 => '1914667007', + ), + 293 => + array ( + 0 => '1916010496', + 1 => '1916141567', + ), + 294 => + array ( + 0 => '1917190144', + 1 => '1917321215', + ), + 295 => + array ( + 0 => '1919680512', + 1 => '1919729663', + ), + 296 => + array ( + 0 => '1919844352', + 1 => '1919877119', + ), + 297 => + array ( + 0 => '1919885312', + 1 => '1919893503', + ), + 298 => + array ( + 0 => '1919926272', + 1 => '1919942655', + ), + 299 => + array ( + 0 => '1921073152', + 1 => '1921089535', + ), + 300 => + array ( + 0 => '1921105920', + 1 => '1921122303', + ), + 301 => + array ( + 0 => '1921843200', + 1 => '1921851391', + ), + 302 => + array ( + 0 => '1921853440', + 1 => '1921855487', + ), + 303 => + array ( + 0 => '1921900544', + 1 => '1921908735', + ), + 304 => + array ( + 0 => '1925644288', + 1 => '1925660671', + ), + 305 => + array ( + 0 => '1925677056', + 1 => '1926234111', + ), + 306 => + array ( + 0 => '1929379840', + 1 => '1930952703', + ), + 307 => + array ( + 0 => '1931436032', + 1 => '1931444223', + ), + 308 => + array ( + 0 => '1932001280', + 1 => '1932132351', + ), + 309 => + array ( + 0 => '1933836288', + 1 => '1933901823', + ), + 310 => + array ( + 0 => '1933926400', + 1 => '1933934591', + ), + 311 => + array ( + 0 => '1934032896', + 1 => '1934098431', + ), + 312 => + array ( + 0 => '1934925824', + 1 => '1934927871', + ), + 313 => + array ( + 0 => '1934991360', + 1 => '1934999551', + ), + 314 => + array ( + 0 => '1935015936', + 1 => '1935081471', + ), + 315 => + array ( + 0 => '1935147008', + 1 => '1935671295', + ), + 316 => + array ( + 0 => '1937686528', + 1 => '1937702911', + ), + 317 => + array ( + 0 => '1938292736', + 1 => '1938948095', + ), + 318 => + array ( + 0 => '1939865600', + 1 => '1939898367', + ), + 319 => + array ( + 0 => '1939931136', + 1 => '1939996671', + ), + 320 => + array ( + 0 => '1940238336', + 1 => '1940240383', + ), + 321 => + array ( + 0 => '1941053440', + 1 => '1941057535', + ), + 322 => + array ( + 0 => '1941061632', + 1 => '1941069823', + ), + 323 => + array ( + 0 => '1941655552', + 1 => '1941657599', + ), + 324 => + array ( + 0 => '1948254208', + 1 => '1949302783', + ), + 325 => + array ( + 0 => '1950547968', + 1 => '1950580735', + ), + 326 => + array ( + 0 => '1950621696', + 1 => '1950629887', + ), + 327 => + array ( + 0 => '1951662080', + 1 => '1951727615', + ), + 328 => + array ( + 0 => '1952030720', + 1 => '1952038911', + ), + 329 => + array ( + 0 => '1952110592', + 1 => '1952112639', + ), + 330 => + array ( + 0 => '1952292864', + 1 => '1952317439', + ), + 331 => + array ( + 0 => '1954021376', + 1 => '1954545663', + ), + 332 => + array ( + 0 => '1958825984', + 1 => '1958830079', + ), + 333 => + array ( + 0 => '1959239680', + 1 => '1959241727', + ), + 334 => + array ( + 0 => '1959264256', + 1 => '1959395327', + ), + 335 => + array ( + 0 => '1960050688', + 1 => '1960058879', + ), + 336 => + array ( + 0 => '1962885120', + 1 => '1962901503', + ), + 337 => + array ( + 0 => '1963982848', + 1 => '1964113919', + ), + 338 => + array ( + 0 => '1964265472', + 1 => '1964269567', + ), + 339 => + array ( + 0 => '1964294144', + 1 => '1964310527', + ), + 340 => + array ( + 0 => '1966342144', + 1 => '1966407679', + ), + 341 => + array ( + 0 => '1966424064', + 1 => '1966440447', + ), + 342 => + array ( + 0 => '1966456832', + 1 => '1966473215', + ), + 343 => + array ( + 0 => '1966571520', + 1 => '1966587903', + ), + 344 => + array ( + 0 => '1966768128', + 1 => '1966772223', + ), + 345 => + array ( + 0 => '1970143232', + 1 => '1970210303', + ), + 346 => + array ( + 0 => '1970144768', + 1 => '1970211071', + ), + 347 => + array ( + 0 => '1970145536', + 1 => '1970274303', + ), + 348 => + array ( + 0 => '1970995200', + 1 => '1971060735', + ), + 349 => + array ( + 0 => '1981808640', + 1 => '1983905791', + ), + 350 => + array ( + 0 => '1984135168', + 1 => '1984151551', + ), + 351 => + array ( + 0 => '1985675264', + 1 => '1985708031', + ), + 352 => + array ( + 0 => '1985712128', + 1 => '1985716223', + ), + 353 => + array ( + 0 => '1986510848', + 1 => '1986519039', + ), + 354 => + array ( + 0 => '1986764800', + 1 => '1986768895', + ), + 355 => + array ( + 0 => '1988083712', + 1 => '1988362239', + ), + 356 => + array ( + 0 => '1988870144', + 1 => '1988886527', + ), + 357 => + array ( + 0 => '1991245824', + 1 => '1991311359', + ), + 358 => + array ( + 0 => '1993867264', + 1 => '1994391551', + ), + 359 => + array ( + 0 => '1995046912', + 1 => '1995177983', + ), + 360 => + array ( + 0 => '1997602816', + 1 => '1997611007', + ), + 361 => + array ( + 0 => '1997619200', + 1 => '1997635583', + ), + 362 => + array ( + 0 => '1997684736', + 1 => '1997701119', + ), + 363 => + array ( + 0 => '1998487552', + 1 => '1998503935', + ), + 364 => + array ( + 0 => '1998581760', + 1 => '1998585855', + ), + 365 => + array ( + 0 => '1999282176', + 1 => '1999290367', + ), + 366 => + array ( + 0 => '2000191488', + 1 => '2000224255', + ), + 367 => + array ( + 0 => '2000355328', + 1 => '2000371711', + ), + 368 => + array ( + 0 => '2000674816', + 1 => '2001207295', + ), + 369 => + array ( + 0 => '2001420288', + 1 => '2001453055', + ), + 370 => + array ( + 0 => '2001559552', + 1 => '2001567743', + ), + 371 => + array ( + 0 => '2001870848', + 1 => '2001879039', + ), + 372 => + array ( + 0 => '2006216704', + 1 => '2006228991', + ), + 373 => + array ( + 0 => '2006253568', + 1 => '2006319103', + ), + 374 => + array ( + 0 => '2007040000', + 1 => '2007048191', + ), + 375 => + array ( + 0 => '2009071616', + 1 => '2011168767', + ), + 376 => + array ( + 0 => '2011951104', + 1 => '2011953151', + ), + 377 => + array ( + 0 => '2015199232', + 1 => '2015203327', + ), + 378 => + array ( + 0 => '2016559104', + 1 => '2016583679', + ), + 379 => + array ( + 0 => '2018050048', + 1 => '2018115583', + ), + 380 => + array ( + 0 => '2022195200', + 1 => '2022211583', + ), + 381 => + array ( + 0 => '2022572032', + 1 => '2022637567', + ), + 382 => + array ( + 0 => '2022678528', + 1 => '2022703103', + ), + 383 => + array ( + 0 => '2030059520', + 1 => '2030108671', + ), + 384 => + array ( + 0 => '2030125056', + 1 => '2030141439', + ), + 385 => + array ( + 0 => '2033324032', + 1 => '2033328127', + ), + 386 => + array ( + 0 => '2033336320', + 1 => '2033352703', + ), + 387 => + array ( + 0 => '2033377280', + 1 => '2033385471', + ), + 388 => + array ( + 0 => '2033516544', + 1 => '2033582079', + ), + 389 => + array ( + 0 => '2033631232', + 1 => '2033647615', + ), + 390 => + array ( + 0 => '2033664000', + 1 => '2033696767', + ), + 391 => + array ( + 0 => '2034237440', + 1 => '2034499583', + ), + 392 => + array ( + 0 => '2035154944', + 1 => '2035220479', + ), + 393 => + array ( + 0 => '2035810304', + 1 => '2035875839', + ), + 394 => + array ( + 0 => '2036613120', + 1 => '2036629503', + ), + 395 => + array ( + 0 => '2036711424', + 1 => '2036715519', + ), + 396 => + array ( + 0 => '2036719616', + 1 => '2036727807', + ), + 397 => + array ( + 0 => '2038169600', + 1 => '2038366207', + ), + 398 => + array ( + 0 => '2038382592', + 1 => '2038415359', + ), + 399 => + array ( + 0 => '2038431744', + 1 => '2042626047', + ), + 400 => + array ( + 0 => '2043166720', + 1 => '2043183103', + ), + 401 => + array ( + 0 => '2046558208', + 1 => '2046705663', + ), + 402 => + array ( + 0 => '2046722048', + 1 => '2046754815', + ), + 403 => + array ( + 0 => '2046822400', + 1 => '2046824447', + ), + 404 => + array ( + 0 => '2046828544', + 1 => '2046836735', + ), + 405 => + array ( + 0 => '2048917504', + 1 => '2049966079', + ), + 406 => + array ( + 0 => '2050048000', + 1 => '2050064383', + ), + 407 => + array ( + 0 => '2053341184', + 1 => '2053373951', + ), + 408 => + array ( + 0 => '2053382144', + 1 => '2053390335', + ), + 409 => + array ( + 0 => '2053439488', + 1 => '2053505023', + ), + 410 => + array ( + 0 => '2055217152', + 1 => '2055229439', + ), + 411 => + array ( + 0 => '2055241728', + 1 => '2055274495', + ), + 412 => + array ( + 0 => '2055327744', + 1 => '2055329791', + ), + 413 => + array ( + 0 => '2055335936', + 1 => '2055340031', + ), + 414 => + array ( + 0 => '2056806400', + 1 => '2056814591', + ), + 415 => + array ( + 0 => '2056847360', + 1 => '2056912895', + ), + 416 => + array ( + 0 => '2059878400', + 1 => '2059927551', + ), + 417 => + array ( + 0 => '2060066816', + 1 => '2060075007', + ), + 418 => + array ( + 0 => '2060091392', + 1 => '2060189695', + ), + 419 => + array ( + 0 => '2063351808', + 1 => '2063368191', + ), + 420 => + array ( + 0 => '2063384576', + 1 => '2063392767', + ), + 421 => + array ( + 0 => '2063499264', + 1 => '2063532031', + ), + 422 => + array ( + 0 => '2063597568', + 1 => '2063601663', + ), + 423 => + array ( + 0 => '2065694720', + 1 => '2066743295', + ), + 424 => + array ( + 0 => '2070061056', + 1 => '2070077439', + ), + 425 => + array ( + 0 => '2070102016', + 1 => '2070118399', + ), + 426 => + array ( + 0 => '2070192128', + 1 => '2070200319', + ), + 427 => + array ( + 0 => '2070679552', + 1 => '2070683647', + ), + 428 => + array ( + 0 => '2070716416', + 1 => '2070724607', + ), + 429 => + array ( + 0 => '2070740992', + 1 => '2070806527', + ), + 430 => + array ( + 0 => '2070872064', + 1 => '2070937599', + ), + 431 => + array ( + 0 => '2072772608', + 1 => '2073034751', + ), + 432 => + array ( + 0 => '2076639232', + 1 => '2076671999', + ), + 433 => + array ( + 0 => '2076721152', + 1 => '2076737535', + ), + 434 => + array ( + 0 => '2077491200', + 1 => '2077753343', + ), + 435 => + array ( + 0 => '2078539776', + 1 => '2078670847', + ), + 436 => + array ( + 0 => '2079850496', + 1 => '2079916031', + ), + 437 => + array ( + 0 => '2079981568', + 1 => '2080112639', + ), + 438 => + array ( + 0 => '2080260096', + 1 => '2080268287', + ), + 439 => + array ( + 0 => '2080276480', + 1 => '2080309247', + ), + 440 => + array ( + 0 => '2080374784', + 1 => '2080636927', + ), + 441 => + array ( + 0 => '2080702464', + 1 => '2080767999', + ), + 442 => + array ( + 0 => '2082209792', + 1 => '2082258943', + ), + 443 => + array ( + 0 => '2083389440', + 1 => '2083454975', + ), + 444 => + array ( + 0 => '2083520512', + 1 => '2084569087', + ), + 445 => + array ( + 0 => '2084745216', + 1 => '2084749311', + ), + 446 => + array ( + 0 => '2084753408', + 1 => '2084757503', + ), + 447 => + array ( + 0 => '2085617664', + 1 => '2085683199', + ), + 448 => + array ( + 0 => '2087649280', + 1 => '2087714815', + ), + 449 => + array ( + 0 => '2089287680', + 1 => '2089549823', + ), + 450 => + array ( + 0 => '2089943040', + 1 => '2089959423', + ), + 451 => + array ( + 0 => '2090434560', + 1 => '2090467327', + ), + 452 => + array ( + 0 => '2093088768', + 1 => '2093154303', + ), + 453 => + array ( + 0 => '2093195264', + 1 => '2093203455', + ), + 454 => + array ( + 0 => '2093211648', + 1 => '2093219839', + ), + 455 => + array ( + 0 => '2093318144', + 1 => '2093342719', + ), + 456 => + array ( + 0 => '2093350912', + 1 => '2093383679', + ), + 457 => + array ( + 0 => '2093416448', + 1 => '2093432831', + ), + 458 => + array ( + 0 => '2093449216', + 1 => '2093481983', + ), + 459 => + array ( + 0 => '2094530560', + 1 => '2094596095', + ), + 460 => + array ( + 0 => '2094645248', + 1 => '2094653439', + ), + 461 => + array ( + 0 => '2096300032', + 1 => '2096332799', + ), + 462 => + array ( + 0 => '2097053696', + 1 => '2097086463', + ), + 463 => + array ( + 0 => '2097643520', + 1 => '2097676287', + ), + 464 => + array ( + 0 => '2099216384', + 1 => '2099232767', + ), + 465 => + array ( + 0 => '2100876800', + 1 => '2100877055', + ), + 466 => + array ( + 0 => '2100887552', + 1 => '2100953087', + ), + 467 => + array ( + 0 => '2101084160', + 1 => '2101108735', + ), + 468 => + array ( + 0 => '2101149696', + 1 => '2101182463', + ), + 469 => + array ( + 0 => '2101270528', + 1 => '2101272575', + ), + 470 => + array ( + 0 => '2105540608', + 1 => '2107637759', + ), + 471 => + array ( + 0 => '2108686336', + 1 => '2109734911', + ), + 472 => + array ( + 0 => '2110799872', + 1 => '2110816255', + ), + 473 => + array ( + 0 => '2110832640', + 1 => '2110865407', + ), + 474 => + array ( + 0 => '2110898176', + 1 => '2110914559', + ), + 475 => + array ( + 0 => '2112880640', + 1 => '2113683455', + ), + 476 => + array ( + 0 => '2156265472', + 1 => '2156331007', + ), + 477 => + array ( + 0 => '2180907008', + 1 => '2180972543', + ), + 478 => + array ( + 0 => '2253062144', + 1 => '2253127679', + ), + 479 => + array ( + 0 => '2302935040', + 1 => '2303000575', + ), + 480 => + array ( + 0 => '2341863424', + 1 => '2341928959', + ), + 481 => + array ( + 0 => '2380201984', + 1 => '2380267519', + ), + 482 => + array ( + 0 => '2415394816', + 1 => '2415460351', + ), + 483 => + array ( + 0 => '2466643968', + 1 => '2466709503', + ), + 484 => + array ( + 0 => '2469068800', + 1 => '2469134335', + ), + 485 => + array ( + 0 => '2469265408', + 1 => '2469396479', + ), + 486 => + array ( + 0 => '2523612160', + 1 => '2523613183', + ), + 487 => + array ( + 0 => '2523615232', + 1 => '2523617279', + ), + 488 => + array ( + 0 => '2525093888', + 1 => '2525094911', + ), + 489 => + array ( + 0 => '2526412800', + 1 => '2526478335', + ), + 490 => + array ( + 0 => '2528575488', + 1 => '2528641023', + ), + 491 => + array ( + 0 => '2529492992', + 1 => '2529558527', + ), + 492 => + array ( + 0 => '2532475904', + 1 => '2532476927', + ), + 493 => + array ( + 0 => '2532478976', + 1 => '2532479999', + ), + 494 => + array ( + 0 => '2556624896', + 1 => '2556690431', + ), + 495 => + array ( + 0 => '2559901696', + 1 => '2559967231', + ), + 496 => + array ( + 0 => '2584346624', + 1 => '2584412159', + ), + 497 => + array ( + 0 => '2615541760', + 1 => '2615607295', + ), + 498 => + array ( + 0 => '2626879488', + 1 => '2626945023', + ), + 499 => + array ( + 0 => '2646933504', + 1 => '2646999039', + ), + 500 => + array ( + 0 => '2653683712', + 1 => '2653749247', + ), + 501 => + array ( + 0 => '2709127168', + 1 => '2709192703', + ), + 502 => + array ( + 0 => '2738199552', + 1 => '2738200575', + ), + 503 => + array ( + 0 => '2744647680', + 1 => '2744713215', + ), + 504 => + array ( + 0 => '2746482688', + 1 => '2746548223', + ), + 505 => + array ( + 0 => '2748645376', + 1 => '2748710911', + ), + 506 => + array ( + 0 => '2749235200', + 1 => '2749300735', + ), + 507 => + array ( + 0 => '2749693952', + 1 => '2749759487', + ), + 508 => + array ( + 0 => '2750349312', + 1 => '2750414847', + ), + 509 => + array ( + 0 => '2751397888', + 1 => '2751463423', + ), + 510 => + array ( + 0 => '2759589888', + 1 => '2759720959', + ), + 511 => + array ( + 0 => '2776891392', + 1 => '2777022463', + ), + 512 => + array ( + 0 => '2777481216', + 1 => '2777546751', + ), + 513 => + array ( + 0 => '2780430336', + 1 => '2780495871', + ), + 514 => + array ( + 0 => '2780954624', + 1 => '2781020159', + ), + 515 => + array ( + 0 => '2782199808', + 1 => '2782265343', + ), + 516 => + array ( + 0 => '2783248384', + 1 => '2783313919', + ), + 517 => + array ( + 0 => '2784165888', + 1 => '2784296959', + ), + 518 => + array ( + 0 => '2784362496', + 1 => '2784428031', + ), + 519 => + array ( + 0 => '2790195200', + 1 => '2790260735', + ), + 520 => + array ( + 0 => '2791768064', + 1 => '2791899135', + ), + 521 => + array ( + 0 => '2793209856', + 1 => '2793275391', + ), + 522 => + array ( + 0 => '2823684096', + 1 => '2823749631', + ), + 523 => + array ( + 0 => '2826108928', + 1 => '2826174463', + ), + 524 => + array ( + 0 => '2826829824', + 1 => '2826895359', + ), + 525 => + array ( + 0 => '2827157504', + 1 => '2827223039', + ), + 526 => + array ( + 0 => '2828664832', + 1 => '2828730367', + ), + 527 => + array ( + 0 => '2830893056', + 1 => '2830958591', + ), + 528 => + array ( + 0 => '2832924672', + 1 => '2832990207', + ), + 529 => + array ( + 0 => '2834825216', + 1 => '2834956287', + ), + 530 => + array ( + 0 => '2844524544', + 1 => '2844590079', + ), + 531 => + array ( + 0 => '2848980992', + 1 => '2850029567', + ), + 532 => + array ( + 0 => '2937856000', + 1 => '2937860095', + ), + 533 => + array ( + 0 => '2938699776', + 1 => '2938703871', + ), + 534 => + array ( + 0 => '2939002880', + 1 => '2939004927', + ), + 535 => + array ( + 0 => '2939011072', + 1 => '2939027455', + ), + 536 => + array ( + 0 => '2942976000', + 1 => '2942992383', + ), + 537 => + array ( + 0 => '2943041536', + 1 => '2943057919', + ), + 538 => + array ( + 0 => '2943291392', + 1 => '2943295487', + ), + 539 => + array ( + 0 => '2943352832', + 1 => '2944401407', + ), + 540 => + array ( + 0 => '2946367488', + 1 => '2946375679', + ), + 541 => + array ( + 0 => '2947579904', + 1 => '2947583999', + ), + 542 => + array ( + 0 => '2948595712', + 1 => '2952790015', + ), + 543 => + array ( + 0 => '3024093184', + 1 => '3024617471', + ), + 544 => + array ( + 0 => '3025141760', + 1 => '3025403903', + ), + 545 => + array ( + 0 => '3025944576', + 1 => '3025960959', + ), + 546 => + array ( + 0 => '3025989632', + 1 => '3025993727', + ), + 547 => + array ( + 0 => '3028484096', + 1 => '3028500479', + ), + 548 => + array ( + 0 => '3028549632', + 1 => '3028811775', + ), + 549 => + array ( + 0 => '3029644288', + 1 => '3029645311', + ), + 550 => + array ( + 0 => '3029778432', + 1 => '3029788671', + ), + 551 => + array ( + 0 => '3031826432', + 1 => '3031891967', + ), + 552 => + array ( + 0 => '3032301568', + 1 => '3032317951', + ), + 553 => + array ( + 0 => '3032330240', + 1 => '3032334335', + ), + 554 => + array ( + 0 => '3033661440', + 1 => '3033694207', + ), + 555 => + array ( + 0 => '3033710592', + 1 => '3033712639', + ), + 556 => + array ( + 0 => '3033726976', + 1 => '3033743359', + ), + 557 => + array ( + 0 => '3034578944', + 1 => '3035103231', + ), + 558 => + array ( + 0 => '3035217920', + 1 => '3035234303', + ), + 559 => + array ( + 0 => '3035365376', + 1 => '3035627519', + ), + 560 => + array ( + 0 => '3055484928', + 1 => '3055550463', + ), + 561 => + array ( + 0 => '3056734208', + 1 => '3056746495', + ), + 562 => + array ( + 0 => '3064029184', + 1 => '3064135679', + ), + 563 => + array ( + 0 => '3064168448', + 1 => '3064201215', + ), + 564 => + array ( + 0 => '3064725504', + 1 => '3064791039', + ), + 565 => + array ( + 0 => '3064811520', + 1 => '3064823807', + ), + 566 => + array ( + 0 => '3064832000', + 1 => '3064840191', + ), + 567 => + array ( + 0 => '3066036224', + 1 => '3066560511', + ), + 568 => + array ( + 0 => '3067084800', + 1 => '3068657663', + ), + 569 => + array ( + 0 => '3068993536', + 1 => '3069018111', + ), + 570 => + array ( + 0 => '3069034496', + 1 => '3069050879', + ), + 571 => + array ( + 0 => '3069968384', + 1 => '3069984767', + ), + 572 => + array ( + 0 => '3070001152', + 1 => '3070033919', + ), + 573 => + array ( + 0 => '3070197760', + 1 => '3070230527', + ), + 574 => + array ( + 0 => '3075375104', + 1 => '3075383295', + ), + 575 => + array ( + 0 => '3075391488', + 1 => '3075407871', + ), + 576 => + array ( + 0 => '3075915776', + 1 => '3075932159', + ), + 577 => + array ( + 0 => '3076161536', + 1 => '3076169727', + ), + 578 => + array ( + 0 => '3076243456', + 1 => '3076259839', + ), + 579 => + array ( + 0 => '3076521984', + 1 => '3078619135', + ), + 580 => + array ( + 0 => '3221576192', + 1 => '3221576447', + ), + 581 => + array ( + 0 => '3227779584', + 1 => '3227779839', + ), + 582 => + array ( + 0 => '3228045056', + 1 => '3228045311', + ), + 583 => + array ( + 0 => '3234014976', + 1 => '3234015487', + ), + 584 => + array ( + 0 => '3234564608', + 1 => '3234566911', + ), + 585 => + array ( + 0 => '3237345536', + 1 => '3237346303', + ), + 586 => + array ( + 0 => '3237548032', + 1 => '3237552127', + ), + 587 => + array ( + 0 => '3389198336', + 1 => '3389202431', + ), + 588 => + array ( + 0 => '3389562880', + 1 => '3389571071', + ), + 589 => + array ( + 0 => '3389938176', + 1 => '3389938687', + ), + 590 => + array ( + 0 => '3389941504', + 1 => '3389941759', + ), + 591 => + array ( + 0 => '3389957376', + 1 => '3389957631', + ), + 592 => + array ( + 0 => '3390329600', + 1 => '3390330111', + ), + 593 => + array ( + 0 => '3390333696', + 1 => '3390333951', + ), + 594 => + array ( + 0 => '3390338816', + 1 => '3390339071', + ), + 595 => + array ( + 0 => '3390341120', + 1 => '3390375935', + ), + 596 => + array ( + 0 => '3390963712', + 1 => '3390972671', + ), + 597 => + array ( + 0 => '3390972928', + 1 => '3390973695', + ), + 598 => + array ( + 0 => '3390973952', + 1 => '3390977023', + ), + 599 => + array ( + 0 => '3390977536', + 1 => '3390978047', + ), + 600 => + array ( + 0 => '3390978560', + 1 => '3390978815', + ), + 601 => + array ( + 0 => '3390979072', + 1 => '3391068671', + ), + 602 => + array ( + 0 => '3391068928', + 1 => '3391069183', + ), + 603 => + array ( + 0 => '3391074304', + 1 => '3391075583', + ), + 604 => + array ( + 0 => '3391075840', + 1 => '3391082495', + ), + 605 => + array ( + 0 => '3391083520', + 1 => '3391085567', + ), + 606 => + array ( + 0 => '3391086592', + 1 => '3391094783', + ), + 607 => + array ( + 0 => '3391827968', + 1 => '3391832063', + ), + 608 => + array ( + 0 => '3392919552', + 1 => '3392921599', + ), + 609 => + array ( + 0 => '3393511424', + 1 => '3393519615', + ), + 610 => + array ( + 0 => '3393815552', + 1 => '3393816575', + ), + 611 => + array ( + 0 => '3394635776', + 1 => '3394637823', + ), + 612 => + array ( + 0 => '3394862080', + 1 => '3394863103', + ), + 613 => + array ( + 0 => '3394893824', + 1 => '3394894847', + ), + 614 => + array ( + 0 => '3397283840', + 1 => '3397285887', + ), + 615 => + array ( + 0 => '3397411840', + 1 => '3397412351', + ), + 616 => + array ( + 0 => '3397588992', + 1 => '3397591039', + ), + 617 => + array ( + 0 => '3397718016', + 1 => '3397722111', + ), + 618 => + array ( + 0 => '3397939200', + 1 => '3397951487', + ), + 619 => + array ( + 0 => '3398873088', + 1 => '3398877183', + ), + 620 => + array ( + 0 => '3399389184', + 1 => '3399393279', + ), + 621 => + array ( + 0 => '3399712768', + 1 => '3399720959', + ), + 622 => + array ( + 0 => '3399825408', + 1 => '3399826431', + ), + 623 => + array ( + 0 => '3399995392', + 1 => '3399999487', + ), + 624 => + array ( + 0 => '3400267776', + 1 => '3400268799', + ), + 625 => + array ( + 0 => '3400423424', + 1 => '3400424447', + ), + 626 => + array ( + 0 => '3400773632', + 1 => '3400775679', + ), + 627 => + array ( + 0 => '3406946816', + 1 => '3406947071', + ), + 628 => + array ( + 0 => '3411085312', + 1 => '3411086335', + ), + 629 => + array ( + 0 => '3411116032', + 1 => '3411124223', + ), + 630 => + array ( + 0 => '3411204864', + 1 => '3411205631', + ), + 631 => + array ( + 0 => '3411210240', + 1 => '3411212287', + ), + 632 => + array ( + 0 => '3411247104', + 1 => '3411249151', + ), + 633 => + array ( + 0 => '3411254784', + 1 => '3411255295', + ), + 634 => + array ( + 0 => '3411341312', + 1 => '3411345407', + ), + 635 => + array ( + 0 => '3411681280', + 1 => '3411689471', + ), + 636 => + array ( + 0 => '3412369408', + 1 => '3412377599', + ), + 637 => + array ( + 0 => '3412918272', + 1 => '3412926463', + ), + 638 => + array ( + 0 => '3413884928', + 1 => '3413893119', + ), + 639 => + array ( + 0 => '3414204416', + 1 => '3414220799', + ), + 640 => + array ( + 0 => '3414223872', + 1 => '3414224895', + ), + 641 => + array ( + 0 => '3414230528', + 1 => '3414231039', + ), + 642 => + array ( + 0 => '3414310912', + 1 => '3414327295', + ), + 643 => + array ( + 0 => '3414339584', + 1 => '3414343679', + ), + 644 => + array ( + 0 => '3414466560', + 1 => '3414474751', + ), + 645 => + array ( + 0 => '3414532096', + 1 => '3414540287', + ), + 646 => + array ( + 0 => '3415121920', + 1 => '3415130111', + ), + 647 => + array ( + 0 => '3415136256', + 1 => '3415136767', + ), + 648 => + array ( + 0 => '3415568384', + 1 => '3415572479', + ), + 649 => + array ( + 0 => '3415777280', + 1 => '3415785471', + ), + 650 => + array ( + 0 => '3415838720', + 1 => '3415842815', + ), + 651 => + array ( + 0 => '3416707072', + 1 => '3416709119', + ), + 652 => + array ( + 0 => '3416851456', + 1 => '3416851967', + ), + 653 => + array ( + 0 => '3416940544', + 1 => '3416948735', + ), + 654 => + array ( + 0 => '3417022464', + 1 => '3417030655', + ), + 655 => + array ( + 0 => '3417137152', + 1 => '3417145343', + ), + 656 => + array ( + 0 => '3417251840', + 1 => '3417260031', + ), + 657 => + array ( + 0 => '3417291776', + 1 => '3417292799', + ), + 658 => + array ( + 0 => '3418227712', + 1 => '3418228735', + ), + 659 => + array ( + 0 => '3418233344', + 1 => '3418233855', + ), + 660 => + array ( + 0 => '3419344896', + 1 => '3419348991', + ), + 661 => + array ( + 0 => '3419541504', + 1 => '3419553791', + ), + 662 => + array ( + 0 => '3419693056', + 1 => '3419701247', + ), + 663 => + array ( + 0 => '3419709440', + 1 => '3419717631', + ), + 664 => + array ( + 0 => '3419914240', + 1 => '3419922431', + ), + 665 => + array ( + 0 => '3419971584', + 1 => '3419979775', + ), + 666 => + array ( + 0 => '3420048384', + 1 => '3420061695', + ), + 667 => + array ( + 0 => '3420413952', + 1 => '3420422143', + ), + 668 => + array ( + 0 => '3420434688', + 1 => '3420434943', + ), + 669 => + array ( + 0 => '3420454912', + 1 => '3421077503', + ), + 670 => + array ( + 0 => '3421084160', + 1 => '3421084927', + ), + 671 => + array ( + 0 => '3421093888', + 1 => '3421503487', + ), + 672 => + array ( + 0 => '3421536256', + 1 => '3421544447', + ), + 673 => + array ( + 0 => '3421552640', + 1 => '3421611519', + ), + 674 => + array ( + 0 => '3421611776', + 1 => '3421613823', + ), + 675 => + array ( + 0 => '3421614080', + 1 => '3421624319', + ), + 676 => + array ( + 0 => '3421625344', + 1 => '3421663231', + ), + 677 => + array ( + 0 => '3421665280', + 1 => '3421716479', + ), + 678 => + array ( + 0 => '3421703168', + 1 => '3421705215', + ), + 679 => + array ( + 0 => '3421732864', + 1 => '3422296063', + ), + 680 => + array ( + 0 => '3422296832', + 1 => '3422367743', + ), + 681 => + array ( + 0 => '3422371840', + 1 => '3422415103', + ), + 682 => + array ( + 0 => '3422415360', + 1 => '3422420991', + ), + 683 => + array ( + 0 => '3422421248', + 1 => '3422421503', + ), + 684 => + array ( + 0 => '3422429184', + 1 => '3422429695', + ), + 685 => + array ( + 0 => '3422431232', + 1 => '3422431487', + ), + 686 => + array ( + 0 => '3422433792', + 1 => '3422435583', + ), + 687 => + array ( + 0 => '3422445568', + 1 => '3422543359', + ), + 688 => + array ( + 0 => '3422543872', + 1 => '3422546687', + ), + 689 => + array ( + 0 => '3422546944', + 1 => '3422552063', + ), + 690 => + array ( + 0 => '3523223552', + 1 => '3523231743', + ), + 691 => + array ( + 0 => '3523354624', + 1 => '3523362815', + ), + 692 => + array ( + 0 => '3523500032', + 1 => '3523502079', + ), + 693 => + array ( + 0 => '3523532800', + 1 => '3523534847', + ), + 694 => + array ( + 0 => '3524313088', + 1 => '3524329471', + ), + 695 => + array ( + 0 => '3527008256', + 1 => '3527016447', + ), + 696 => + array ( + 0 => '3528966144', + 1 => '3528974335', + ), + 697 => + array ( + 0 => '3529089024', + 1 => '3529097215', + ), + 698 => + array ( + 0 => '3529113600', + 1 => '3529622527', + ), + 699 => + array ( + 0 => '3529629696', + 1 => '3529834495', + ), + 700 => + array ( + 0 => '3529850880', + 1 => '3530506239', + ), + 701 => + array ( + 0 => '3530510336', + 1 => '3530518527', + ), + 702 => + array ( + 0 => '3530522624', + 1 => '3530702847', + ), + 703 => + array ( + 0 => '3530708992', + 1 => '3530711039', + ), + 704 => + array ( + 0 => '3530713088', + 1 => '3530715135', + ), + 705 => + array ( + 0 => '3530727424', + 1 => '3530735615', + ), + 706 => + array ( + 0 => '3530739712', + 1 => '3531538431', + ), + 707 => + array ( + 0 => '3531546624', + 1 => '3531603967', + ), + 708 => + array ( + 0 => '3534880768', + 1 => '3535273983', + ), + 709 => + array ( + 0 => '3535814656', + 1 => '3535822847', + ), + 710 => + array ( + 0 => '3536584704', + 1 => '3536846847', + ), + 711 => + array ( + 0 => '3537027072', + 1 => '3537047551', + ), + 712 => + array ( + 0 => '3537059840', + 1 => '3537068031', + ), + 713 => + array ( + 0 => '3537371136', + 1 => '3537526783', + ), + 714 => + array ( + 0 => '3537534976', + 1 => '3537739775', + ), + 715 => + array ( + 0 => '3537743872', + 1 => '3537895423', + ), + 716 => + array ( + 0 => '3542089728', + 1 => '3542306815', + ), + 717 => + array ( + 0 => '3542310912', + 1 => '3542311935', + ), + 718 => + array ( + 0 => '3542315008', + 1 => '3542376447', + ), + 719 => + array ( + 0 => '3542384640', + 1 => '3543114751', + ), + 720 => + array ( + 0 => '3543117824', + 1 => '3543134207', + ), + 721 => + array ( + 0 => '3543138304', + 1 => '3544014847', + ), + 722 => + array ( + 0 => '3544018944', + 1 => '3544145919', + ), + 723 => + array ( + 0 => '3544154112', + 1 => '3544186879', + ), + 724 => + array ( + 0 => '3546808320', + 1 => '3547856895', + ), + 725 => + array ( + 0 => '3551002624', + 1 => '3551313919', + ), + 726 => + array ( + 0 => '3551318016', + 1 => '3552456703', + ), + 727 => + array ( + 0 => '3552473088', + 1 => '3552481279', + ), + 728 => + array ( + 0 => '3552501760', + 1 => '3552514047', + ), + 729 => + array ( + 0 => '3552518144', + 1 => '3552522239', + ), + 730 => + array ( + 0 => '3552526336', + 1 => '3552534527', + ), + 731 => + array ( + 0 => '3552538624', + 1 => '3552546815', + ), + 732 => + array ( + 0 => '3552550912', + 1 => '3552559103', + ), + 733 => + array ( + 0 => '3552571392', + 1 => '3555287039', + ), + 734 => + array ( + 0 => '3555295232', + 1 => '3555389439', + ), + 735 => + array ( + 0 => '3555390464', + 1 => '3555393535', + ), + 736 => + array ( + 0 => '3555401728', + 1 => '3555561471', + ), + 737 => + array ( + 0 => '3555565568', + 1 => '3556696063', + ), + 738 => + array ( + 0 => '3556703232', + 1 => '3556769791', + ), + 739 => + array ( + 0 => '3659792384', + 1 => '3659890687', + ), + 740 => + array ( + 0 => '3659907072', + 1 => '3660054527', + ), + 741 => + array ( + 0 => '3660578816', + 1 => '3661103103', + ), + 742 => + array ( + 0 => '3664084992', + 1 => '3664117759', + ), + 743 => + array ( + 0 => '3666870272', + 1 => '3667918847', + ), + 744 => + array ( + 0 => '3671130112', + 1 => '3671195647', + ), + 745 => + array ( + 0 => '3672637440', + 1 => '3673161727', + ), + 746 => + array ( + 0 => '3689938944', + 1 => '3690070015', + ), + 747 => + array ( + 0 => '3690463232', + 1 => '3690987519', + ), + 748 => + array ( + 0 => '3695181824', + 1 => '3697278975', + ), + 749 => + array ( + 0 => '3697737728', + 1 => '3697803263', + ), + 750 => + array ( + 0 => '3698589696', + 1 => '3699376127', + ), + 751 => + array ( + 0 => '3700752384', + 1 => '3700817919', + ), + 752 => + array ( + 0 => '3706060800', + 1 => '3706126335', + ), + 753 => + array ( + 0 => '3716431872', + 1 => '3716440063', + ), + 754 => + array ( + 0 => '3716493312', + 1 => '3716497407', + ), + 755 => + array ( + 0 => '3716513792', + 1 => '3716530175', + ), + 756 => + array ( + 0 => '3716808704', + 1 => '3718840319', + ), + 757 => + array ( + 0 => '3730833408', + 1 => '3732602879', + ), + 758 => + array ( + 0 => '3739680768', + 1 => '3739697151', + ), + 759 => + array ( + 0 => '3739746304', + 1 => '3740270591', + ), + 760 => + array ( + 0 => '3741024256', + 1 => '3741057023', + ), + 761 => + array ( + 0 => '3743055872', + 1 => '3743088639', + ), + 762 => + array ( + 0 => '3743186944', + 1 => '3743219711', + ), + 763 => + array ( + 0 => '3743416320', + 1 => '3745513471', + ), + 764 => + array ( + 0 => '3749855232', + 1 => '3749969919', + ), + 765 => + array ( + 0 => '3752165376', + 1 => '3752198143', + ), + 766 => + array ( + 0 => '3752329216', + 1 => '3752853503', + ), + 767 => + array ( + 0 => '3754033152', + 1 => '3754164223', + ), + 768 => + array ( + 0 => '3755868160', + 1 => '3755933695', + ), + 769 => + array ( + 0 => '3757899776', + 1 => '3757965311', + ), + 770 => + array ( + 0 => '3758080000', + 1 => '3758088191', + ), +); diff --git a/common/defaults/korea.ipv6.php b/common/defaults/korea.ipv6.php new file mode 100644 index 000000000..291776383 --- /dev/null +++ b/common/defaults/korea.ipv6.php @@ -0,0 +1,503 @@ + + array ( + 0 => '2001000000000000', + 1 => '2001000fffffffff', + ), + 1 => + array ( + 0 => '2001022000000000', + 1 => '20010220ffffffff', + ), + 2 => + array ( + 0 => '2001023000000000', + 1 => '20010230ffffffff', + ), + 3 => + array ( + 0 => '2001027000000000', + 1 => '20010270ffffffff', + ), + 4 => + array ( + 0 => '2001028000000000', + 1 => '20010280ffffffff', + ), + 5 => + array ( + 0 => '2001029000000000', + 1 => '20010290ffffffff', + ), + 6 => + array ( + 0 => '200102b000000000', + 1 => '200102b0ffffffff', + ), + 7 => + array ( + 0 => '200102b800000000', + 1 => '200102b8ffffffff', + ), + 8 => + array ( + 0 => '200102d800000000', + 1 => '200102d8ffffffff', + ), + 9 => + array ( + 0 => '2001032000000000', + 1 => '20010320ffffffff', + ), + 10 => + array ( + 0 => '2001033000000000', + 1 => '20010330ffffffff', + ), + 11 => + array ( + 0 => '2001037800000000', + 1 => '20010378ffffffff', + ), + 12 => + array ( + 0 => '2001039000000000', + 1 => '20010390ffffffff', + ), + 13 => + array ( + 0 => '200103a800000000', + 1 => '200103a8ffffffff', + ), + 14 => + array ( + 0 => '200107fa00000002', + 1 => '200107fa00000002', + ), + 15 => + array ( + 0 => '200107fa00080000', + 1 => '200107fa0008ffff', + ), + 16 => + array ( + 0 => '20010c4800000000', + 1 => '20010c48ffffffff', + ), + 17 => + array ( + 0 => '20010c9800000000', + 1 => '20010c98ffffffff', + ), + 18 => + array ( + 0 => '20010cf000000000', + 1 => '20010cf0ffffffff', + ), + 19 => + array ( + 0 => '20010d3800000000', + 1 => '20010d38ffffffff', + ), + 20 => + array ( + 0 => '20010dc500000000', + 1 => '20010dc5ffffffff', + ), + 21 => + array ( + 0 => '20010dcc00000000', + 1 => '20010dccffffffff', + ), + 22 => + array ( + 0 => '20010ea000000000', + 1 => '20010ea0ffffffff', + ), + 23 => + array ( + 0 => '20010ea800000000', + 1 => '20010ea8ffffffff', + ), + 24 => + array ( + 0 => '20010eb800000000', + 1 => '20010eb8ffffffff', + ), + 25 => + array ( + 0 => '20010ed000000000', + 1 => '20010ed0ffffffff', + ), + 26 => + array ( + 0 => '20010ee800000000', + 1 => '20010ee8ffffffff', + ), + 27 => + array ( + 0 => '20010ef000000000', + 1 => '20010ef0ffffffff', + ), + 28 => + array ( + 0 => '20010ef800000000', + 1 => '20010ef8ffffffff', + ), + 29 => + array ( + 0 => '20010f2800000000', + 1 => '20010f28ffffffff', + ), + 30 => + array ( + 0 => '20010f4800000000', + 1 => '20010f48ffffffff', + ), + 31 => + array ( + 0 => '24033e0000000000', + 1 => '24033e00ffffffff', + ), + 32 => + array ( + 0 => '2001443000000000', + 1 => '20014430ffffffff', + ), + 33 => + array ( + 0 => '2400000000000000', + 1 => '24000fffffffffff', + ), + 34 => + array ( + 0 => '2400180000000000', + 1 => '24001800ffffffff', + ), + 35 => + array ( + 0 => '2400330000000000', + 1 => '24003300ffffffff', + ), + 36 => + array ( + 0 => '2400478000000000', + 1 => '24004780ffffffff', + ), + 37 => + array ( + 0 => '2400498000000000', + 1 => '24004980ffffffff', + ), + 38 => + array ( + 0 => '24009f8000000000', + 1 => '24009f80ffffffff', + ), + 39 => + array ( + 0 => '2400a58000000000', + 1 => '2400a580ffffffff', + ), + 40 => + array ( + 0 => '2400ab0000000000', + 1 => '2400ab00ffffffff', + ), + 41 => + array ( + 0 => '2400cf0000000000', + 1 => '2400cf00ffffffff', + ), + 42 => + array ( + 0 => '2400fd8000000000', + 1 => '2400fd80ffffffff', + ), + 43 => + array ( + 0 => '2401270000000000', + 1 => '24012700ffffffff', + ), + 44 => + array ( + 0 => '2401400000000000', + 1 => '24014000ffffffff', + ), + 45 => + array ( + 0 => '2401a00000000000', + 1 => '2401a000ffffffff', + ), + 46 => + array ( + 0 => '2401a80000000000', + 1 => '2401a800ffffffff', + ), + 47 => + array ( + 0 => '2401c50000000000', + 1 => '2401c500ffffffff', + ), + 48 => + array ( + 0 => '2402000000000000', + 1 => '240200ffffffffff', + ), + 49 => + array ( + 0 => '24021a0000000000', + 1 => '24021a00ffffffff', + ), + 50 => + array ( + 0 => '2402310000000000', + 1 => '24023100ffffffff', + ), + 51 => + array ( + 0 => '2402580000000000', + 1 => '24025800ffffffff', + ), + 52 => + array ( + 0 => '2402610000000000', + 1 => '24026100ffffffff', + ), + 53 => + array ( + 0 => '2402700000000000', + 1 => '24027000ffffffff', + ), + 54 => + array ( + 0 => '2402be0000000000', + 1 => '2402be00ffffffff', + ), + 55 => + array ( + 0 => '2402de0000000000', + 1 => '2402de00ffffffff', + ), + 56 => + array ( + 0 => '2402f40000000000', + 1 => '2402f400ffffffff', + ), + 57 => + array ( + 0 => '2403370000000000', + 1 => '24033700ffffffff', + ), + 58 => + array ( + 0 => '2403630000000000', + 1 => '24036300ffffffff', + ), + 59 => + array ( + 0 => '2403650000000000', + 1 => '24036500ffffffff', + ), + 60 => + array ( + 0 => '2404000000000000', + 1 => '2404000fffffffff', + ), + 61 => + array ( + 0 => '2404080000000000', + 1 => '24040800ffffffff', + ), + 62 => + array ( + 0 => '2404230000000000', + 1 => '24042300ffffffff', + ), + 63 => + array ( + 0 => '2404460000000000', + 1 => '24044600ffffffff', + ), + 64 => + array ( + 0 => '2405350000000000', + 1 => '24053500ffffffff', + ), + 65 => + array ( + 0 => '2405430000000000', + 1 => '24054300ffffffff', + ), + 66 => + array ( + 0 => '2405580000000000', + 1 => '24055800ffffffff', + ), + 67 => + array ( + 0 => '20010e6000000000', + 1 => '20010e60ffffffff', + ), + 68 => + array ( + 0 => '20010e7000000000', + 1 => '20010e70ffffffff', + ), + 69 => + array ( + 0 => '20010e7800000000', + 1 => '20010e78ffffffff', + ), + 70 => + array ( + 0 => '20010e9800000000', + 1 => '20010e98ffffffff', + ), + 71 => + array ( + 0 => '24009e8000000000', + 1 => '24009e80ffffffff', + ), + 72 => + array ( + 0 => '2400e18000000000', + 1 => '2400e180ffffffff', + ), + 73 => + array ( + 0 => '2401e20000000000', + 1 => '2401e200ffffffff', + ), + 74 => + array ( + 0 => '24053d0000000000', + 1 => '24053d00ffffffff', + ), + 75 => + array ( + 0 => '24055f0000000000', + 1 => '24055f00ffffffff', + ), + 76 => + array ( + 0 => '24057b0000000000', + 1 => '24057b00ffffffff', + ), + 77 => + array ( + 0 => '2405860000000000', + 1 => '24058600ffffffff', + ), + 78 => + array ( + 0 => '2405950000000000', + 1 => '24059500ffffffff', + ), + 79 => + array ( + 0 => '2405c00000000000', + 1 => '2405c000ffffffff', + ), + 80 => + array ( + 0 => '2406400000000000', + 1 => '24064000ffffffff', + ), + 81 => + array ( + 0 => '2406590000000000', + 1 => '24065900ffffffff', + ), + 82 => + array ( + 0 => '2406660000000000', + 1 => '24066600ffffffff', + ), + 83 => + array ( + 0 => '2406680000000000', + 1 => '24066800ffffffff', + ), + 84 => + array ( + 0 => '24066a0000000000', + 1 => '24066a00ffffffff', + ), + 85 => + array ( + 0 => '2406ad0000000000', + 1 => '2406ad00ffffffff', + ), + 86 => + array ( + 0 => '2406b00000000000', + 1 => '2406b000ffffffff', + ), + 87 => + array ( + 0 => '2406d00000000000', + 1 => '2406d000ffffffff', + ), + 88 => + array ( + 0 => '2406d70000000000', + 1 => '2406d700ffffffff', + ), + 89 => + array ( + 0 => '24070b0000000000', + 1 => '24070b00ffffffff', + ), + 90 => + array ( + 0 => '2407200000000000', + 1 => '24072000ffffffff', + ), + 91 => + array ( + 0 => '2407350000000000', + 1 => '24073500ffffffff', + ), + 92 => + array ( + 0 => '2407650000000000', + 1 => '24076500ffffffff', + ), + 93 => + array ( + 0 => '2407670000000000', + 1 => '24076700ffffffff', + ), + 94 => + array ( + 0 => '2407910000000000', + 1 => '24079100ffffffff', + ), + 95 => + array ( + 0 => '2407b20000000000', + 1 => '2407b200ffffffff', + ), + 96 => + array ( + 0 => '2407b80000000000', + 1 => '2407b800ffffffff', + ), + 97 => + array ( + 0 => '2407c00000000000', + 1 => '2407c000ffffffff', + ), + 98 => + array ( + 0 => '2407c70000000000', + 1 => '2407c700ffffffff', + ), +); diff --git a/common/framework/korea.php b/common/framework/korea.php new file mode 100644 index 000000000..67f02e7e4 --- /dev/null +++ b/common/framework/korea.php @@ -0,0 +1,453 @@ + date('ymd')) + { + return false; + } + + // Calculate the checksum. + $sum = 0; + for ($i = 0; $i < 12; $i++) + { + $sum += $code[$i] * (($i % 8) + 2); + } + $checksum = (11 - ($sum % 11)) % 10; + if (in_array((int)($code[6]), array(1, 2, 3, 4, 9, 0))) + { + return $checksum === (int)($code[12]); + } + else + { + if (substr($code, 7, 2) % 2 !== 0) + { + return false; + } + else + { + return (($checksum + 2) % 10) === (int)($code[12]); + } + } + } + + /** + * Check if the given string is a valid corporation registration number (법인등록번호). + * + * This method only checks the format. + * It does not check that the number is actually in use. + * + * @param string $code + * @return bool + */ + public static function isValidCorporationNumber($code) + { + // Return false if the format is obviously wrong. + if (!preg_match('/^[0-9]{6}-?[0-9]{7}$/', $code)) + { + return false; + } + + // Remove hyphen. + $code = str_replace('-', '', $code); + + // Calculate the checksum. + $sum = 0; + for ($i = 0; $i < 12; $i++) + { + $sum += $code[$i] * (($i % 2) + 1); + } + $checksum = (10 - ($sum % 10)) % 10; + + // Check the 7th and 13th digits. + if ($code[6] !== '0') + { + return false; + } + return $checksum === (int)($code[12]); + } + + /** + * Check if the given string is a valid business registration number (사업자등록번호). + * + * This method only checks the format. + * It does not check that the number is actually in use. + * + * @param string $code + * @return bool + */ + public static function isValidBusinessNumber($code) + { + // Return false if the format is obviously wrong. + if (!preg_match('/^[0-9]{3}-?[0-9]{2}-?[0-9]{5}$/', $code)) + { + return false; + } + + // Remove hyphen. + $code = str_replace('-', '', $code); + + // Calculate the checksum. + $sum = 0; + $sum += $code[0] + ($code[1] * 3) + ($code[2] * 7); + $sum += $code[3] + ($code[4] * 3) + ($code[5] * 7); + $sum += $code[6] + ($code[7] * 3) + ($code[8] * 5); + $sum += floor(($code[8] * 5) / 10); + $checksum = (10 - ($sum % 10)) % 10; + + // Check the last digit. + return $checksum === (int)($code[9]); + } + + /** + * Check if the given IP address is Korean. + * + * This method may return incorrect results if the IP allocation databases + * (korea.ipv4.php, korea.ipv6.php) are out of date. + * + * @param string $ip + * @return bool + */ + public static function isKoreanIP($ip) + { + // Extract the IPv4 address from an "IPv4-mapped IPv6" address. + if (preg_match('/::ffff:(?:0+:)?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/', $ip, $matches)) $ip = $matches[1]; + + // Return false if the IP address is not in the right format. + if (!filter_var($ip, \FILTER_VALIDATE_IP)) return false; + + // Check IPv4. + if (filter_var($ip, \FILTER_VALIDATE_IP, ['flags' => \FILTER_FLAG_IPV4])) + { + // Convert to integer. + $ipnum = sprintf('%u', ip2long($ip)); + + // Treat local addresses as Korean. + if ($ipnum >= 167772160 && $ipnum <= 184549375) return true; // 10.0.0.0/8 + if ($ipnum >= 2130706432 && $ipnum <= 2147483647) return true; // 127.0.0.0/8 + if ($ipnum >= 3232235520 && $ipnum <= 3232301055) return true; // 192.168.0.0/16 + if ($ipnum >= 2886729728 && $ipnum <= 2887778303) return true; // 172.16.0.0/20 + + // Check the IPv4 allocation database. + $ranges = (include \RX_BASEDIR . 'common/defaults/korea.ipv4.php'); + foreach ($ranges as $range) + { + if ($ipnum >= $range[0] && $ipnum <= $range[1]) return true; + } + return false; + } + + // Check IPv6. + elseif (function_exists('inet_pton')) + { + // Convert to hexadecimal format. + $ipbin = strtolower(bin2hex(inet_pton($ip))); + + // Treat local addresses as Korean. + if ($ipbin == '00000000000000000000000000000001') return true; // ::1 + if (preg_match('/^f(?:[cd]|e80{13})/', $ipbin)) return true; // fc00::/8, fd00::/8, fe80::/64 + + // Check the IPv6 allocation database. + $ranges = (include \RX_BASEDIR . 'common/defaults/korea.ipv6.php'); + foreach ($ranges as $range) + { + if (strncmp($ipbin, $range[0], 16) >= 0 && strncmp($ipbin, $range[1], 16) <= 0) return true; + } + return false; + } + + return false; + } + + /** + * Check if the given email address is hosted by a Korean portal site. + * + * This can be used to tell which recipients may subscribe to the KISA RBL (kisarbl.or.kr). + * If the domain is not found, this method returns false. + * + * @param string $domain + * @param bool $clear_cache (optional) + * @return bool + */ + public static function isKoreanEmailAddress($email_address, $clear_cache = false) + { + // Clear the cache if requested. + if ($clear_cache) + { + self::$_domain_cache = array(); + } + + // Get the domain from the email address. + if ($pos = strpos($email_address, '@')) + { + $domain = substr($email_address, $pos + 1); + } + else + { + $domain = $email_address; + } + $domain = rtrim(strtolower($domain), '.'); + + // Return cached result if available. + if (array_key_exists($domain, self::$_domain_cache)) + { + return self::$_domain_cache[$domain]; + } + + // Shortcut for known domains. + if (in_array($domain, self::$known_korean)) + { + return self::$_domain_cache[$domain] = true; + } + if (in_array($domain, self::$known_foreign)) + { + return self::$_domain_cache[$domain] = false; + } + + // For unknown domains, check the MX record. + $mx = self::_getDNSRecords($domain, \DNS_MX); + + $i = 0; + foreach ($mx as $mx) + { + $mx = rtrim($mx, '.'); + foreach (self::$known_korean as $portal) + { + if ($mx === $portal || ends_with('.' . $portal, $mx)) + { + return self::$_domain_cache[$domain] = true; + } + } + foreach (self::$known_foreign as $portal) + { + if ($mx === $portal || ends_with('.' . $portal, $mx)) + { + return self::$_domain_cache[$domain] = false; + } + } + foreach (self::_getDNSRecords($domain, \DNS_A) as $mx_ip) + { + return self::$_domain_cache[$domain] = self::isKoreanIP($mx_ip); + } + if (++$i > 2) + { + break; + } + } + + return self::$_domain_cache[$domain] = false; + } + + /** + * Get the DNS records of a domain. + * + * @param string $domain + * @param int $type + * @return array + */ + protected static function _getDNSRecords($domain, $type) + { + $records = dns_get_record($domain, $type); + if (!$records) + { + return array(); + } + + $result = array(); + foreach ($records as $record) + { + if (isset($record['pri']) && isset($record['target'])) + { + $result[intval($record['pri'])] = $record['target']; + } + elseif (isset($record['target'])) + { + $result[] = $record['target']; + } + elseif (isset($record['ip']) || isset($record['ipv6'])) + { + $result[] = isset($record['ip']) ? $record['ip'] : $record['ipv6']; + } + elseif (isset($record['txt'])) + { + $result[] = $record['txt']; + } + } + + ksort($result); + return $result; + } + + /** + * Prevent multiple lookups for the same domain. + */ + protected static $_domain_cache = array(); + + /** + * Domains known to be Korean and subscribed to the KISA RBL. + */ + public static $known_korean = array( + 'hanmail.net', + 'hanmail2.net', + 'daum.net', + 'paran.com', + 'tistory.com', + 'naver.com', + 'navercorp.com', + 'nate.com', + 'cyworld.com', + 'dreamwiz.com', + 'korea.com', + 'dreamx.com', + 'chol.com', + 'chollian.net', + 'hanmir.com', + 'hitel.com', + 'freechal.com', + 'empas.com', + 'empal.com', + 'hanafos.com', + ); + + /** + * Domains known to be foreign. + */ + public static $known_foreign = array( + 'gmail.com', + 'googlemail.com', + 'google.com', + 'yahoo.com', + 'yahoo.co.kr', + 'hotmail.com', + 'hotmail.co.kr', + 'live.com', + 'outlook.com', + 'msn.com', + 'me.com', + 'mac.com', + 'icloud.com', + 'facebook.com', + 'aol.com', + 'gmx.com', + 'mail.com', + 'fastmail.com', + 'fastmail.fm', + 'runbox.com', + 'inbox.com', + 'lycos.com', + 'zoho.com', + ); +} diff --git a/tests/unit/framework/KoreaTest.php b/tests/unit/framework/KoreaTest.php new file mode 100644 index 000000000..958af741b --- /dev/null +++ b/tests/unit/framework/KoreaTest.php @@ -0,0 +1,107 @@ +assertEquals('1588-0000', Rhymix\Framework\Korea::formatPhoneNumber('1588-0000')); + $this->assertEquals('02-345-6789', Rhymix\Framework\Korea::formatPhoneNumber('+82 23456789')); + $this->assertEquals('02-3000-5000', Rhymix\Framework\Korea::formatPhoneNumber('0230005000')); + $this->assertEquals('031-222-3333', Rhymix\Framework\Korea::formatPhoneNumber('82-0312-2233-33')); + $this->assertEquals('031-2222-3333', Rhymix\Framework\Korea::formatPhoneNumber('03122223333')); + $this->assertEquals('011-444-5555', Rhymix\Framework\Korea::formatPhoneNumber('011 444 5555')); + $this->assertEquals('010-6666-7777', Rhymix\Framework\Korea::formatPhoneNumber('82+1066667777')); + $this->assertEquals('0303-456-7890', Rhymix\Framework\Korea::formatPhoneNumber('03034567890')); + $this->assertEquals('0505-987-6543', Rhymix\Framework\Korea::formatPhoneNumber('050-5987-6543')); + $this->assertEquals('070-7432-1000', Rhymix\Framework\Korea::formatPhoneNumber('0707-432-1000')); + } + + public function testIsValidPhoneNumber() + { + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('1588-0000')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('02-345-6789')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('+82-2-345-6789')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('+82-02-2345-6789')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('053-444-5555')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('053-4444-5555')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('011-444-5555')); + $this->assertTrue(Rhymix\Framework\Korea::isValidPhoneNumber('010-4444-5555')); + $this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('010-4444-55555')); + $this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('010-1234-5678')); + $this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('02-123-4567')); + $this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('02-123456')); + $this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('03-456-7890')); + $this->assertFalse(Rhymix\Framework\Korea::isValidPhoneNumber('090-9876-5432')); + } + + public function testIsValidMobilePhoneNumber() + { + $this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('011-345-6789')); + $this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('010-2345-6789')); + $this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('+82-11-345-6789')); + $this->assertTrue(Rhymix\Framework\Korea::isValidMobilePhoneNumber('82 010-2345-6789')); + $this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('010-1111-1111')); + $this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('02-345-6789')); + $this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('063-9876-5432')); + $this->assertFalse(Rhymix\Framework\Korea::isValidMobilePhoneNumber('070-7654-3210')); + } + + public function testIsValidJuminNumber() + { + // These numbers are fake. + $this->assertTrue(Rhymix\Framework\Korea::isValidJuminNumber('123456-3456787')); + $this->assertFalse(Rhymix\Framework\Korea::isValidJuminNumber('123456-3456788')); + } + + public function testIsValidCorporationNumber() + { + // These numbers are fake. + $this->assertTrue(Rhymix\Framework\Korea::isValidCorporationNumber('123456-0123453')); + $this->assertFalse(Rhymix\Framework\Korea::isValidCorporationNumber('123456-0123454')); + } + + public function testIsValidBusinessNumber() + { + // These numbers are fake. + $this->assertTrue(Rhymix\Framework\Korea::isValidBusinessNumber('123-45-67891')); + $this->assertFalse(Rhymix\Framework\Korea::isValidBusinessNumber('123-45-67892')); + } + + public function testIsKoreanIP() + { + // Private IP ranges. + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('10.12.34.210')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('127.0.123.45')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('192.168.10.1')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('::1')); + + // Korean IP ranges. + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('115.71.233.0')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('114.207.12.3')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('2001:0320::1')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanIP('2407:B800::F')); + + // Foreign IP ranges. + $this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('216.58.197.0')); + $this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('170.14.168.0')); + $this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('2001:41d0:8:e8ad::1')); + $this->assertFalse(Rhymix\Framework\Korea::isKoreanIP('2404:6800:4005:802::200e')); + } + + public function testIsKoreanEmailAddress() + { + // Test Korean portals. + $this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@naver.com')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@hanmail.net')); + $this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@worksmobile.com')); + + // Test foreign portals. + $this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@gmail.com')); + $this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@hotmail.com')); + $this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@yahoo.com')); + + // Test third-party MX services. + $this->assertTrue(Rhymix\Framework\Korea::isKoreanEmailAddress('test@woorimail.com')); + $this->assertFalse(Rhymix\Framework\Korea::isKoreanEmailAddress('test@rhymix.org')); + } +} diff --git a/tools/korea_ip_ranges/korea.ipv4.parser.php b/tools/korea_ip_ranges/korea.ipv4.parser.php new file mode 100644 index 000000000..26fba1ce3 --- /dev/null +++ b/tools/korea_ip_ranges/korea.ipv4.parser.php @@ -0,0 +1,89 @@ + array( + 'user_agent' => 'Mozilla/5.0 (compatible; IP range generator)', + 'header' => 'Referer: ' . $referer_url . "\r\n", + ), +))); +$content = gzdecode($content); +if (!$content) +{ + exit 2; +} + +/** + * Load IP range data. + */ +$ranges = array(); +$content = explode("\n", $content); +foreach ($content as $line) +{ + $line = explode("\t", $line); + if (count($line) < 2) continue; + $start = trim($line[0]); + $end = trim($line[1]); + $ranges[$start] = array($start, $end); +} + +/** + * Sort the ranges. + */ +ksort($ranges); +$ranges = array_values($ranges); +$count = count($ranges); + +/** + * Merge adjacent ranges. + */ +for ($i = 0; $i < $count; $i++) +{ + if ($i == 0) continue; + $previous_i = $i - 1; + while (true) + { + if ($ranges[$previous_i] !== null) break; + $previous_i--; + } + + if ($ranges[$i][0] == $ranges[$previous_i][1] + 1) + { + $ranges[$previous_i][1] = $ranges[$i][1]; + $ranges[$i] = null; + } +} + +/** + * Organize into final format. + */ +$ranges_final = array(); +foreach ($ranges as $range) +{ + if ($range !== null) $ranges_final[] = $range; +} + +/** + * Save to file. + */ +$content = '<' . '?php' . "\n\n" . '/**' . "\n" . ' * Source: ' . $referer_url . "\n"; +$content .= ' * Last Updated: ' . date('Y-m-d') . "\n" . ' */' . "\n"; +$content .= 'return ' . var_export($ranges_final, true) . ';' . "\n"; +file_put_contents('korea.ipv4.php', $content); + +/** + * Report status. + */ +echo count($ranges_final) . ' IPv4 ranges saved.' . PHP_EOL; diff --git a/tools/korea_ip_ranges/korea.ipv6.parser.php b/tools/korea_ip_ranges/korea.ipv6.parser.php new file mode 100644 index 000000000..a4052e7e9 --- /dev/null +++ b/tools/korea_ip_ranges/korea.ipv6.parser.php @@ -0,0 +1,92 @@ + array( + 'user_agent' => 'Mozilla/5.0 (compatible; IP range generator)', + 'header' => 'Referer: ' . $referer_url . "\r\n", + ), +))); +if (!$content) +{ + exit 2; +} + +/** + * Parse the HTML/Excel document. + */ +$regex = '#