diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php
index 2433b9809..cc21eef86 100644
--- a/classes/context/Context.class.php
+++ b/classes/context/Context.class.php
@@ -686,7 +686,7 @@ class Context
public function checkSSO()
{
// pass if it's not GET request or XE is not yet installed
- if(!config('use_sso') || isCrawler())
+ if(!config('use_sso') || Rhymix\Framework\UA::isRobot())
{
return TRUE;
}
diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php
index 5bfe6f292..cc38f6416 100644
--- a/classes/file/FileHandler.class.php
+++ b/classes/file/FileHandler.class.php
@@ -8,7 +8,6 @@
*/
class FileHandler
{
-
/**
* Changes path of target file, directory into absolute path
*
@@ -17,12 +16,7 @@ class FileHandler
*/
public static function getRealPath($source)
{
- if(strlen($source) >= 2 && substr_compare($source, './', 0, 2) === 0)
- {
- return _XE_PATH_ . substr($source, 2);
- }
-
- return $source;
+ return (strncmp($source, './', 2) === 0) ? (\RX_BASEDIR . substr($source, 2)) : $source;
}
/**
@@ -33,64 +27,11 @@ class FileHandler
* @param string $source_dir Path of source directory
* @param string $target_dir Path of target dir
* @param string $filter Regex to filter files. If file matches this regex, the file is not copied.
- * @param string $type If set as 'force'. Even if the file exists in target, the file is copied.
* @return void
*/
- public static function copyDir($source_dir, $target_dir, $filter = null, $type = null)
+ public static function copyDir($source_dir, $target_dir, $filter = null)
{
- $source_dir = self::getRealPath($source_dir);
- $target_dir = self::getRealPath($target_dir);
- if(!is_dir($source_dir))
- {
- return FALSE;
- }
-
- // generate when no target exists
- self::makeDir($target_dir);
-
- if(substr($source_dir, -1) != DIRECTORY_SEPARATOR)
- {
- $source_dir .= DIRECTORY_SEPARATOR;
- }
-
- if(substr($target_dir, -1) != DIRECTORY_SEPARATOR)
- {
- $target_dir .= DIRECTORY_SEPARATOR;
- }
-
- $oDir = dir($source_dir);
- while($file = $oDir->read())
- {
- if($file{0} == '.')
- {
- continue;
- }
-
- if($filter && preg_match($filter, $file))
- {
- continue;
- }
-
- if(is_dir($source_dir . $file))
- {
- self::copyDir($source_dir . $file, $target_dir . $file, $type);
- }
- else
- {
- if($type == 'force')
- {
- @unlink($target_dir . $file);
- }
- else
- {
- if(!file_exists($target_dir . $file))
- {
- @copy($source_dir . $file, $target_dir . $file);
- }
- }
- }
- }
- $oDir->close();
+ return Rhymix\Framework\Storage::copyDirectory(self::getRealPath($source_dir), self::getRealPath($target_dir), $filter);
}
/**
@@ -104,18 +45,7 @@ class FileHandler
public static function copyFile($source, $target, $force = 'Y')
{
setlocale(LC_CTYPE, 'en_US.UTF8', 'ko_KR.UTF8');
- $source = self::getRealPath($source);
- $target_dir = self::getRealPath(dirname($target));
- $target = basename($target);
-
- self::makeDir($target_dir);
-
- if($force == 'Y')
- {
- @unlink($target_dir . DIRECTORY_SEPARATOR . $target);
- }
-
- @copy($source, $target_dir . DIRECTORY_SEPARATOR . $target);
+ return Rhymix\Framework\Storage::copy(self::getRealPath($source), self::getRealPath($target));
}
/**
@@ -126,12 +56,7 @@ class FileHandler
*/
public static function readFile($filename)
{
- if(($filename = self::exists($filename)) === FALSE || filesize($filename) < 1)
- {
- return;
- }
-
- return @file_get_contents($filename);
+ return Rhymix\Framework\Storage::read(self::getRealPath($filename));
}
/**
@@ -144,22 +69,7 @@ class FileHandler
*/
public static function writeFile($filename, $buff, $mode = "w")
{
- $filename = self::getRealPath($filename);
- $pathinfo = pathinfo($filename);
- self::makeDir($pathinfo['dirname']);
-
- $flags = 0;
- if(strtolower($mode) == 'a')
- {
- $flags = FILE_APPEND;
- }
-
- @file_put_contents($filename, $buff, $flags|LOCK_EX);
- @chmod($filename, 0644);
- if(function_exists('opcache_invalidate') && substr($filename, -4) === '.php')
- {
- @opcache_invalidate($filename, true);
- }
+ return Rhymix\Framework\Storage::write(self::getRealPath($filename), $buff, $mode);
}
/**
@@ -170,16 +80,7 @@ class FileHandler
*/
public static function removeFile($filename)
{
- if(($filename = self::exists($filename)) === false)
- {
- return false;
- }
- $status = @unlink($filename);
- if(function_exists('opcache_invalidate') && substr($filename, -4) === '.php')
- {
- @opcache_invalidate($filename, true);
- }
- return $status;
+ return Rhymix\Framework\Storage::delete(self::getRealPath($filename));
}
/**
@@ -193,7 +94,7 @@ class FileHandler
*/
public static function rename($source, $target)
{
- return @rename(self::getRealPath($source), self::getRealPath($target));
+ return Rhymix\Framework\Storage::move(self::getRealPath($source), self::getRealPath($target));
}
/**
@@ -205,12 +106,7 @@ class FileHandler
*/
public static function moveFile($source, $target)
{
- if(($source = self::exists($source)) !== FALSE)
- {
- self::removeFile($target);
- return self::rename($source, $target);
- }
- return FALSE;
+ return Rhymix\Framework\Storage::move(self::getRealPath($source), self::getRealPath($target));
}
/**
@@ -224,7 +120,7 @@ class FileHandler
*/
public static function moveDir($source_dir, $target_dir)
{
- self::rename($source_dir, $target_dir);
+ return Rhymix\Framework\Storage::move(self::getRealPath($source_dir), self::getRealPath($target_dir));
}
/**
@@ -240,45 +136,31 @@ class FileHandler
*/
public static function readDir($path, $filter = '', $to_lower = FALSE, $concat_prefix = FALSE)
{
- $path = self::getRealPath($path);
+ $list = Rhymix\Framework\Storage::readDirectory(self::getRealPath($path), $concat_prefix, true, false);
+ if (!$list)
+ {
+ return array();
+ }
+
$output = array();
-
- if(substr($path, -1) != '/')
+ foreach ($list as $filename)
{
- $path .= '/';
- }
-
- if(!is_dir($path))
- {
- return $output;
- }
-
- $files = scandir($path);
- foreach($files as $file)
- {
- if($file{0} == '.' || ($filter && !preg_match($filter, $file)))
+ $filename = str_replace(array('/\\', '//'), '/', $filename);
+ $basename = $concat_prefix ? basename($filename) : $filename;
+ if ($basename[0] === '.' || ($filter && !preg_match($filter, $basename)))
{
continue;
}
-
- if($to_lower)
+ if ($to_lower)
{
- $file = strtolower($file);
+ $filename = strtolower($filename);
}
-
if($filter)
{
- $file = preg_replace($filter, '$1', $file);
+ $filename = preg_replace($filter, '$1', $filename);
}
-
- if($concat_prefix)
- {
- $file = sprintf('%s%s', str_replace(_XE_PATH_, '', $path), $file);
- }
-
- $output[] = str_replace(array('/\\', '//'), '/', $file);
+ $output[] = $filename;
}
-
return $output;
}
@@ -292,16 +174,11 @@ class FileHandler
*/
public static function makeDir($path_string)
{
- if(self::exists($path_string) !== FALSE)
+ if (!ini_get('safe_mode'))
{
- return TRUE;
- }
-
- if(!ini_get('safe_mode'))
- {
- @mkdir($path_string, 0755, TRUE);
- @chmod($path_string, 0755);
+ return Rhymix\Framework\Storage::createDirectory(self::getRealPath($path_string));
}
+
// if safe_mode is on, use FTP
else
{
@@ -372,37 +249,7 @@ class FileHandler
*/
public static function removeDir($path)
{
- if(($path = self::isDir($path)) === FALSE)
- {
- return;
- }
-
- if(self::isDir($path))
- {
- $files = array_diff(scandir($path), array('..', '.'));
-
- foreach($files as $file)
- {
- if(($target = self::getRealPath($path . DIRECTORY_SEPARATOR . $file)) === FALSE)
- {
- continue;
- }
-
- if(is_dir($target))
- {
- self::removeDir($target);
- }
- else
- {
- unlink($target);
- }
- }
- rmdir($path);
- }
- else
- {
- unlink($path);
- }
+ return Rhymix\Framework\Storage::deleteDirectory(self::getRealPath($path));
}
/**
@@ -413,27 +260,14 @@ class FileHandler
*/
public static function removeBlankDir($path)
{
- if(($path = self::isDir($path)) === FALSE)
+ $path = self::getRealPath($path);
+ if (Rhymix\Framework\Storage::isEmptyDirectory($path))
{
- return;
+ return Rhymix\Framework\Storage::deleteDirectory($path);
}
-
- $files = array_diff(scandir($path), array('..', '.'));
-
- if(count($files) < 1)
+ else
{
- rmdir($path);
- return;
- }
-
- foreach($files as $file)
- {
- if(($target = self::isDir($path . DIRECTORY_SEPARATOR . $file)) === FALSE)
- {
- continue;
- }
-
- self::removeBlankDir($target);
+ return false;
}
}
@@ -447,37 +281,7 @@ class FileHandler
*/
public static function removeFilesInDir($path)
{
- if(($path = self::getRealPath($path)) === FALSE)
- {
- return;
- }
-
- if(is_dir($path))
- {
- $files = array_diff(scandir($path), array('..', '.'));
-
- foreach($files as $file)
- {
- if(($target = self::getRealPath($path . DIRECTORY_SEPARATOR . $file)) === FALSE)
- {
- continue;
- }
-
- if(is_dir($target))
- {
- self::removeFilesInDir($target);
- }
- else
- {
- unlink($target);
- }
- }
- }
- else
- {
- if(self::exists($path)) unlink($path);
- }
-
+ return Rhymix\Framework\Storage::deleteDirectory(self::getRealPath($path), false);
}
/**
@@ -584,7 +388,14 @@ class FileHandler
if($response->success)
{
- return $response->body;
+ if (isset($request_config['filename']))
+ {
+ return true;
+ }
+ else
+ {
+ return $response->body;
+ }
}
else
{
@@ -611,13 +422,9 @@ class FileHandler
*/
public static function getRemoteFile($url, $target_filename, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array(), $cookies = array(), $post_data = array(), $request_config = array())
{
- if(!($body = self::getRemoteResource($url, $body, $timeout, $method, $content_type, $headers,$cookies,$post_data,$request_config)))
- {
- return FALSE;
- }
-
- self::writeFile($target_filename, $body);
- return TRUE;
+ $request_config['filename'] = $target_filename;
+ $success = self::getRemoteResource($url, $body, $timeout, $method, $content_type, $headers, $cookies, $post_data, $request_config);
+ return $success ? true : false;
}
/**
@@ -658,12 +465,17 @@ class FileHandler
$channels = 6; //for png
}
$memoryNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $channels / 8 + $K64 ) * $TWEAKFACTOR);
- $availableMemory = self::returnBytes(ini_get('memory_limit')) - memory_get_usage();
+ $memoryLimit = self::returnBytes(ini_get('memory_limit'));
+ if($memoryLimit < 0)
+ {
+ return true;
+ }
+ $availableMemory = $memoryLimit - memory_get_usage();
if($availableMemory < $memoryNeeded)
{
- return FALSE;
+ return false;
}
- return TRUE;
+ return false;
}
/**
@@ -882,19 +694,13 @@ class FileHandler
*/
public static function readIniFile($filename)
{
- if(($filename = self::exists($filename)) === FALSE)
+ if(!Rhymix\Framework\Storage::isReadable($filename))
{
- return FALSE;
- }
- $arr = parse_ini_file($filename, TRUE);
- if(is_array($arr) && count($arr) > 0)
- {
- return $arr;
- }
- else
- {
- return array();
+ return false;
}
+
+ $arr = parse_ini_file($filename, true);
+ return is_array($arr) ? $arr : array();
}
/**
@@ -966,11 +772,9 @@ class FileHandler
*/
public static function openFile($filename, $mode)
{
- $pathinfo = pathinfo($filename);
- self::makeDir($pathinfo['dirname']);
-
- require_once("FileObject.class.php");
- return new FileObject($filename, $mode);
+ $filename = self::getRealPath($filename);
+ Rhymix\Framework\Storage::createDirectory(dirname($filename));
+ return new FileObject($filename, $mode);
}
/**
@@ -981,7 +785,7 @@ class FileHandler
*/
public static function hasContent($filename)
{
- return (is_readable($filename) && (filesize($filename) > 0));
+ return Rhymix\Framework\Storage::getSize(self::getRealPath($filename)) > 0;
}
/**
@@ -993,7 +797,7 @@ class FileHandler
public static function exists($filename)
{
$filename = self::getRealPath($filename);
- return file_exists($filename) ? $filename : FALSE;
+ return Rhymix\Framework\Storage::exists($filename) ? $filename : false;
}
/**
@@ -1005,7 +809,7 @@ class FileHandler
public static function isDir($path)
{
$path = self::getRealPath($path);
- return is_dir($path) ? $path : FALSE;
+ return Rhymix\Framework\Storage::isDirectory($path) ? $path : false;
}
/**
@@ -1017,22 +821,7 @@ class FileHandler
public static function isWritableDir($path)
{
$path = self::getRealPath($path);
- if(is_dir($path)==FALSE)
- {
- return FALSE;
- }
-
- $checkFile = $path . '/_CheckWritableDir';
-
- $fp = fopen($checkFile, 'w');
- if(!is_resource($fp))
- {
- return FALSE;
- }
- fclose($fp);
-
- self::removeFile($checkFile);
- return TRUE;
+ return Rhymix\Framework\Storage::isDirectory($path) && Rhymix\Framework\Storage::isWritable($path);
}
}
diff --git a/classes/mail/Mail.class.php b/classes/mail/Mail.class.php
index c2d9725db..465e623be 100644
--- a/classes/mail/Mail.class.php
+++ b/classes/mail/Mail.class.php
@@ -460,81 +460,7 @@ class Mail
*/
function returnMIMEType($filename)
{
- preg_match("|\.([a-z0-9]{2,4})$|i", $filename, $fileSuffix);
- switch(strtolower($fileSuffix[1]))
- {
- case "js" :
- return "application/x-javascript";
- case "json" :
- return "application/json";
- case "jpg" :
- case "jpeg" :
- case "jpe" :
- return "image/jpg";
- case "png" :
- case "gif" :
- case "bmp" :
- case "tiff" :
- return "image/" . strtolower($fileSuffix[1]);
- case "css" :
- return "text/css";
- case "xml" :
- return "application/xml";
- case "doc" :
- case "docx" :
- return "application/msword";
- case "xls" :
- case "xlt" :
- case "xlm" :
- case "xld" :
- case "xla" :
- case "xlc" :
- case "xlw" :
- case "xll" :
- return "application/vnd.ms-excel";
- case "ppt" :
- case "pps" :
- return "application/vnd.ms-powerpoint";
- case "rtf" :
- return "application/rtf";
- case "pdf" :
- return "application/pdf";
- case "html" :
- case "htm" :
- case "php" :
- return "text/html";
- case "txt" :
- return "text/plain";
- case "mpeg" :
- case "mpg" :
- case "mpe" :
- return "video/mpeg";
- case "mp3" :
- return "audio/mpeg3";
- case "wav" :
- return "audio/wav";
- case "aiff" :
- case "aif" :
- return "audio/aiff";
- case "avi" :
- return "video/msvideo";
- case "wmv" :
- return "video/x-ms-wmv";
- case "mov" :
- return "video/quicktime";
- case "zip" :
- return "application/zip";
- case "tar" :
- return "application/x-tar";
- case "swf" :
- return "application/x-shockwave-flash";
- default :
- if(function_exists("mime_content_type"))
- {
- $fileSuffix = mime_content_type($filename);
- }
- return "unknown/" . trim($fileSuffix[0], ".");
- }
+ return Rhymix\Framework\MIME::getTypeByFilename($filename);
}
}
diff --git a/classes/mobile/Mobile.class.php b/classes/mobile/Mobile.class.php
index 5b3528621..65b4276e3 100644
--- a/classes/mobile/Mobile.class.php
+++ b/classes/mobile/Mobile.class.php
@@ -55,9 +55,6 @@ class Mobile
return $this->ismobile = false;
}
- $xe_web_path = Context::pathToUrl(_XE_PATH_);
-
- // default setting. if there is cookie for a device, XE do not have to check if it is mobile or not and it will enhance performace of the server.
$this->ismobile = FALSE;
$m = Context::get('m');
@@ -87,28 +84,14 @@ class Mobile
}
else
{
- $this->ismobile = FALSE;
- setcookie("mobile", FALSE, 0, $xe_web_path);
- setcookie("user-agent", FALSE, 0, $xe_web_path);
- if(!self::isMobilePadCheckByAgent() && self::isMobileCheckByAgent())
- {
- $this->ismobile = TRUE;
- }
+ setcookie("mobile", FALSE, 0, RX_BASEURL);
+ setcookie("user-agent", FALSE, 0, RX_BASEURL);
+ $this->ismobile = Rhymix\Framework\UA::isMobile() && !Rhymix\Framework\UA::isTablet();
}
}
else
{
- if(self::isMobilePadCheckByAgent())
- {
- $this->ismobile = FALSE;
- }
- else
- {
- if(self::isMobileCheckByAgent())
- {
- $this->ismobile = TRUE;
- }
- }
+ $this->ismobile = Rhymix\Framework\UA::isMobile() && !Rhymix\Framework\UA::isTablet();
}
if($this->ismobile !== NULL)
@@ -118,18 +101,18 @@ class Mobile
if($_COOKIE['mobile'] != 'true')
{
$_COOKIE['mobile'] = 'true';
- setcookie("mobile", 'true', 0, $xe_web_path);
+ setcookie("mobile", 'true', 0, RX_BASEURL);
}
}
elseif(isset($_COOKIE['mobile']) && $_COOKIE['mobile'] != 'false')
{
$_COOKIE['mobile'] = 'false';
- setcookie("mobile", 'false', 0, $xe_web_path);
+ setcookie("mobile", 'false', 0, RX_BASEURL);
}
if(isset($_COOKIE['mobile']) && $_COOKIE['user-agent'] != md5($_SERVER['HTTP_USER_AGENT']))
{
- setcookie("user-agent", md5($_SERVER['HTTP_USER_AGENT']), 0, $xe_web_path);
+ setcookie("user-agent", md5($_SERVER['HTTP_USER_AGENT']), 0, RX_BASEURL);
}
}
@@ -143,31 +126,7 @@ class Mobile
*/
public static function isMobileCheckByAgent()
{
- static $UACheck;
- if(isset($UACheck))
- {
- return $UACheck;
- }
-
- $oMobile = Mobile::getInstance();
- $mobileAgent = array('iPod', 'iPhone', 'Android', 'BlackBerry', 'SymbianOS', 'Bada', 'Tizen', 'Kindle', 'Wii', 'SCH-', 'SPH-', 'CANU-', 'Windows Phone', 'Windows CE', 'POLARIS', 'Palm', 'Dorothy Browser', 'Mobile', 'Opera Mobi', 'Opera Mini', 'Minimo', 'AvantGo', 'NetFront', 'Nokia', 'LGPlayer', 'SonyEricsson', 'HTC');
-
- if($oMobile->isMobilePadCheckByAgent())
- {
- $UACheck = TRUE;
- return TRUE;
- }
-
- foreach($mobileAgent as $agent)
- {
- if(stripos($_SERVER['HTTP_USER_AGENT'], $agent) !== FALSE)
- {
- $UACheck = TRUE;
- return TRUE;
- }
- }
- $UACheck = FALSE;
- return FALSE;
+ return Rhymix\Framework\UA::isMobile();
}
/**
@@ -177,45 +136,7 @@ class Mobile
*/
public static function isMobilePadCheckByAgent()
{
- static $UACheck;
- if(isset($UACheck))
- {
- return $UACheck;
- }
- $padAgent = array('iPad', 'Android', 'webOS', 'hp-tablet', 'PlayBook');
-
- // Android with 'Mobile' string is not a tablet-like device, and 'Andoroid' without 'Mobile' string is a tablet-like device.
- // $exceptionAgent[0] contains exception agents for all exceptions.
- $exceptionAgent = array(0 => array('Opera Mini', 'Opera Mobi'), 'Android' => 'Mobile');
-
- foreach($padAgent as $agent)
- {
- if(strpos($_SERVER['HTTP_USER_AGENT'], $agent) !== FALSE)
- {
- if(!isset($exceptionAgent[$agent]))
- {
- $UACheck = TRUE;
- return TRUE;
- }
- elseif(strpos($_SERVER['HTTP_USER_AGENT'], $exceptionAgent[$agent]) === FALSE)
- {
- // If the agent is the Android, that can be either tablet and mobile phone.
- foreach($exceptionAgent[0] as $val)
- {
- if(strpos($_SERVER['HTTP_USER_AGENT'], $val) !== FALSE)
- {
- $UACheck = FALSE;
- return FALSE;
- }
- }
- $UACheck = TRUE;
- return TRUE;
- }
- }
- }
-
- $UACheck = FALSE;
- return FALSE;
+ return Rhymix\Framework\UA::isTablet();
}
/**
diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php
index dcad62e66..e2a6511a0 100644
--- a/classes/module/ModuleHandler.class.php
+++ b/classes/module/ModuleHandler.class.php
@@ -238,7 +238,7 @@ class ModuleHandler extends Handler
}
// redirect, if site_srl of module_info is different from one of site's module_info
- if($module_info && $module_info->site_srl != $site_module_info->site_srl && !isCrawler())
+ if($module_info && $module_info->site_srl != $site_module_info->site_srl && !Rhymix\Framework\UA::isRobot())
{
// If the module is of virtual site
if($module_info->site_srl)
@@ -1289,6 +1289,8 @@ class ModuleHandler extends Handler
$statusMessageList = array(
'100' => 'Continue',
'101' => 'Switching Protocols',
+ '102' => 'Processing',
+ '103' => 'Checkpoint',
'200' => 'OK',
'201' => 'Created',
'202' => 'Accepted',
@@ -1296,13 +1298,18 @@ class ModuleHandler extends Handler
'204' => 'No Content',
'205' => 'Reset Content',
'206' => 'Partial Content',
+ '207' => 'Multi-Status',
+ '208' => 'Already Reported',
+ '226' => 'IM Used',
'300' => 'Multiple Choices',
'301' => 'Moved Permanently',
'302' => 'Found',
'303' => 'See Other',
'304' => 'Not Modified',
'305' => 'Use Proxy',
+ '306' => 'Switch Proxy',
'307' => 'Temporary Redirect',
+ '308' => 'Permanent Redirect',
'400' => 'Bad Request',
'401' => 'Unauthorized',
'402' => 'Payment Required',
@@ -1316,19 +1323,39 @@ class ModuleHandler extends Handler
'410' => 'Gone',
'411' => 'Length Required',
'412' => 'Precondition Failed',
- '413' => 'Request Entity Too Large',
- '414' => 'Request-URI Too Long',
+ '413' => 'Payload Too Large',
+ '414' => 'URI Too Long',
'415' => 'Unsupported Media Type',
- '416' => 'Requested Range Not Satisfiable',
+ '416' => 'Range Not Satisfiable',
'417' => 'Expectation Failed',
+ '418' => 'I\'m a teapot',
+ '420' => 'Enhance Your Calm',
+ '421' => 'Misdirected Request',
+ '422' => 'Unprocessable Entity',
+ '423' => 'Locked',
+ '424' => 'Failed Dependency',
+ '425' => 'Unordered Collection',
+ '426' => 'Upgrade Required',
+ '428' => 'Precondition Required',
+ '429' => 'Too Many Requests',
+ '431' => 'Request Header Fields Too Large',
+ '444' => 'No Response',
+ '449' => 'Retry With',
+ '451' => 'Unavailable For Legal Reasons',
'500' => 'Internal Server Error',
'501' => 'Not Implemented',
'502' => 'Bad Gateway',
'503' => 'Service Unavailable',
'504' => 'Gateway Timeout',
'505' => 'HTTP Version Not Supported',
+ '506' => 'Variant Also Negotiates',
+ '507' => 'Insufficient Storage',
+ '508' => 'Loop Detected',
+ '509' => 'Bandwidth Limit Exceeded',
+ '510' => 'Not Extended',
+ '511' => 'Network Authentication Required',
);
- $statusMessage = $statusMessageList[$code];
+ $statusMessage = $statusMessageList[strval($code)];
if(!$statusMessage)
{
$statusMessage = 'OK';
diff --git a/common/defaults/countries.php b/common/defaults/countries.php
new file mode 100644
index 000000000..b84843d13
--- /dev/null
+++ b/common/defaults/countries.php
@@ -0,0 +1,2259 @@
+ 'AF',
+ 'iso_3166_1_alpha3' => 'AFG',
+ 'iso_3166_1_numeric' => '004',
+ 'cctld' => 'af',
+ 'name_english' => 'Afghanistan',
+ 'name_korean' => '아프가니스탄',
+ 'name_native' => 'افغانستان',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AL',
+ 'iso_3166_1_alpha3' => 'ALB',
+ 'iso_3166_1_numeric' => '008',
+ 'cctld' => 'al',
+ 'name_english' => 'Albania',
+ 'name_korean' => '알바니아',
+ 'name_native' => 'Shqipëria',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AQ',
+ 'iso_3166_1_alpha3' => 'ATA',
+ 'iso_3166_1_numeric' => '010',
+ 'cctld' => 'aq',
+ 'name_english' => 'Antarctica',
+ 'name_korean' => '남극',
+ 'name_native' => 'Antarctica',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'DZ',
+ 'iso_3166_1_alpha3' => 'DZA',
+ 'iso_3166_1_numeric' => '012',
+ 'cctld' => 'dz',
+ 'name_english' => 'Algeria',
+ 'name_korean' => '알제리',
+ 'name_native' => 'الجزائر',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AS',
+ 'iso_3166_1_alpha3' => 'ASM',
+ 'iso_3166_1_numeric' => '016',
+ 'cctld' => 'as',
+ 'name_english' => 'American Samoa',
+ 'name_korean' => '아메리칸 사모아',
+ 'name_native' => 'Amerika Sāmoa',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AD',
+ 'iso_3166_1_alpha3' => 'AND',
+ 'iso_3166_1_numeric' => '020',
+ 'cctld' => 'ad',
+ 'name_english' => 'Andorra',
+ 'name_korean' => '안도라',
+ 'name_native' => 'Andorra',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AO',
+ 'iso_3166_1_alpha3' => 'AGO',
+ 'iso_3166_1_numeric' => '024',
+ 'cctld' => 'ao',
+ 'name_english' => 'Angola',
+ 'name_korean' => '앙골라',
+ 'name_native' => 'Angola',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AG',
+ 'iso_3166_1_alpha3' => 'ATG',
+ 'iso_3166_1_numeric' => '028',
+ 'cctld' => 'ag',
+ 'name_english' => 'Antigua and Barbuda',
+ 'name_korean' => '앤티가 바부다',
+ 'name_native' => 'Antigua and Barbuda',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AZ',
+ 'iso_3166_1_alpha3' => 'AZE',
+ 'iso_3166_1_numeric' => '031',
+ 'cctld' => 'az',
+ 'name_english' => 'Azerbaijan',
+ 'name_korean' => '아제르바이잔',
+ 'name_native' => 'Azərbaycan',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AR',
+ 'iso_3166_1_alpha3' => 'ARG',
+ 'iso_3166_1_numeric' => '032',
+ 'cctld' => 'ar',
+ 'name_english' => 'Argentina',
+ 'name_korean' => '아르헨티나',
+ 'name_native' => 'Argentina',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AU',
+ 'iso_3166_1_alpha3' => 'AUS',
+ 'iso_3166_1_numeric' => '036',
+ 'cctld' => 'au',
+ 'name_english' => 'Australia',
+ 'name_korean' => '호주',
+ 'name_native' => 'Australia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AT',
+ 'iso_3166_1_alpha3' => 'AUT',
+ 'iso_3166_1_numeric' => '040',
+ 'cctld' => 'at',
+ 'name_english' => 'Austria',
+ 'name_korean' => '오스트리아',
+ 'name_native' => 'Österreich',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BS',
+ 'iso_3166_1_alpha3' => 'BHS',
+ 'iso_3166_1_numeric' => '044',
+ 'cctld' => 'bs',
+ 'name_english' => 'Bahamas',
+ 'name_korean' => '바하마',
+ 'name_native' => 'Bahamas',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BH',
+ 'iso_3166_1_alpha3' => 'BHR',
+ 'iso_3166_1_numeric' => '048',
+ 'cctld' => 'bh',
+ 'name_english' => 'Bahrain',
+ 'name_korean' => '바레인',
+ 'name_native' => 'البحرين',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BD',
+ 'iso_3166_1_alpha3' => 'BGD',
+ 'iso_3166_1_numeric' => '050',
+ 'cctld' => 'bd',
+ 'name_english' => 'Bangladesh',
+ 'name_korean' => '방글라데시',
+ 'name_native' => 'বাংলাদেশ',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AM',
+ 'iso_3166_1_alpha3' => 'ARM',
+ 'iso_3166_1_numeric' => '051',
+ 'cctld' => 'am',
+ 'name_english' => 'Armenia',
+ 'name_korean' => '아르메니아',
+ 'name_native' => 'Հայաստան',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BB',
+ 'iso_3166_1_alpha3' => 'BRB',
+ 'iso_3166_1_numeric' => '052',
+ 'cctld' => 'bb',
+ 'name_english' => 'Barbados',
+ 'name_korean' => '바베이도스',
+ 'name_native' => 'Barbados',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BE',
+ 'iso_3166_1_alpha3' => 'BEL',
+ 'iso_3166_1_numeric' => '056',
+ 'cctld' => 'be',
+ 'name_english' => 'Belgium',
+ 'name_korean' => '벨기에',
+ 'name_native' => 'België, Belgique, Belgien',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BM',
+ 'iso_3166_1_alpha3' => 'BMU',
+ 'iso_3166_1_numeric' => '060',
+ 'cctld' => 'bm',
+ 'name_english' => 'Bermuda',
+ 'name_korean' => '버뮤다',
+ 'name_native' => 'Bermuda',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BT',
+ 'iso_3166_1_alpha3' => 'BTN',
+ 'iso_3166_1_numeric' => '064',
+ 'cctld' => 'bt',
+ 'name_english' => 'Bhutan',
+ 'name_korean' => '부탄',
+ 'name_native' => 'འབྲུག་ཡུལ',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BO',
+ 'iso_3166_1_alpha3' => 'BOL',
+ 'iso_3166_1_numeric' => '068',
+ 'cctld' => 'bo',
+ 'name_english' => 'Bolivia (Plurinational State of)',
+ 'name_korean' => '볼리비아',
+ 'name_native' => 'Bolivia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BA',
+ 'iso_3166_1_alpha3' => 'BIH',
+ 'iso_3166_1_numeric' => '070',
+ 'cctld' => 'ba',
+ 'name_english' => 'Bosnia and Herzegovina',
+ 'name_korean' => '보스니아 헤르체고비나',
+ 'name_native' => 'Bosna i Hercegovina',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BW',
+ 'iso_3166_1_alpha3' => 'BWA',
+ 'iso_3166_1_numeric' => '072',
+ 'cctld' => 'bw',
+ 'name_english' => 'Botswana',
+ 'name_korean' => '보츠와나',
+ 'name_native' => 'Botswana',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BV',
+ 'iso_3166_1_alpha3' => 'BVT',
+ 'iso_3166_1_numeric' => '074',
+ 'cctld' => 'bv',
+ 'name_english' => 'Bouvet Island',
+ 'name_korean' => '부베 섬',
+ 'name_native' => 'Bouvet Island',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BR',
+ 'iso_3166_1_alpha3' => 'BRA',
+ 'iso_3166_1_numeric' => '076',
+ 'cctld' => 'br',
+ 'name_english' => 'Brazil',
+ 'name_korean' => '브라질',
+ 'name_native' => 'Brasil',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BZ',
+ 'iso_3166_1_alpha3' => 'BLZ',
+ 'iso_3166_1_numeric' => '084',
+ 'cctld' => 'bz',
+ 'name_english' => 'Belize',
+ 'name_korean' => '벨리즈',
+ 'name_native' => 'Belize',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IO',
+ 'iso_3166_1_alpha3' => 'IOT',
+ 'iso_3166_1_numeric' => '086',
+ 'cctld' => 'io',
+ 'name_english' => 'British Indian Ocean Territory',
+ 'name_korean' => '영국령 인도양 지역',
+ 'name_native' => 'British Indian Ocean Territory',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SB',
+ 'iso_3166_1_alpha3' => 'SLB',
+ 'iso_3166_1_numeric' => '090',
+ 'cctld' => 'sb',
+ 'name_english' => 'Solomon Islands',
+ 'name_korean' => '솔로몬 제도',
+ 'name_native' => 'Solomon Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VG',
+ 'iso_3166_1_alpha3' => 'VGB',
+ 'iso_3166_1_numeric' => '092',
+ 'cctld' => 'vg',
+ 'name_english' => 'Virgin Islands (British)',
+ 'name_korean' => '영국령 버진아일랜드',
+ 'name_native' => 'Virgin Islands (British)',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BN',
+ 'iso_3166_1_alpha3' => 'BRN',
+ 'iso_3166_1_numeric' => '096',
+ 'cctld' => 'bn',
+ 'name_english' => 'Brunei',
+ 'name_korean' => '브루나이',
+ 'name_native' => 'بروني',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BG',
+ 'iso_3166_1_alpha3' => 'BGR',
+ 'iso_3166_1_numeric' => '100',
+ 'cctld' => 'bg',
+ 'name_english' => 'Bulgaria',
+ 'name_korean' => '불가리아',
+ 'name_native' => 'Bulgariya',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MM',
+ 'iso_3166_1_alpha3' => 'MMR',
+ 'iso_3166_1_numeric' => '104',
+ 'cctld' => 'mm',
+ 'name_english' => 'Myanmar',
+ 'name_korean' => '미얀마 (버마)',
+ 'name_native' => 'Myanma',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BI',
+ 'iso_3166_1_alpha3' => 'BDI',
+ 'iso_3166_1_numeric' => '108',
+ 'cctld' => 'bi',
+ 'name_english' => 'Burundi',
+ 'name_korean' => '부룬디',
+ 'name_native' => 'Burundi',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BY',
+ 'iso_3166_1_alpha3' => 'BLR',
+ 'iso_3166_1_numeric' => '112',
+ 'cctld' => 'by',
+ 'name_english' => 'Belarus',
+ 'name_korean' => '벨라루스',
+ 'name_native' => 'Беларусь',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KH',
+ 'iso_3166_1_alpha3' => 'KHM',
+ 'iso_3166_1_numeric' => '116',
+ 'cctld' => 'kh',
+ 'name_english' => 'Cambodia',
+ 'name_korean' => '캄보디아',
+ 'name_native' => 'កម្ពុជា',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CM',
+ 'iso_3166_1_alpha3' => 'CMR',
+ 'iso_3166_1_numeric' => '120',
+ 'cctld' => 'cm',
+ 'name_english' => 'Cameroon',
+ 'name_korean' => '카메룬',
+ 'name_native' => 'Cameroun',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CA',
+ 'iso_3166_1_alpha3' => 'CAN',
+ 'iso_3166_1_numeric' => '124',
+ 'cctld' => 'ca',
+ 'name_english' => 'Canada',
+ 'name_korean' => '캐나다',
+ 'name_native' => 'Canada',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CV',
+ 'iso_3166_1_alpha3' => 'CPV',
+ 'iso_3166_1_numeric' => '132',
+ 'cctld' => 'cv',
+ 'name_english' => 'Cabo Verde',
+ 'name_korean' => '카보베르데',
+ 'name_native' => 'Cabo Verde',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KY',
+ 'iso_3166_1_alpha3' => 'CYM',
+ 'iso_3166_1_numeric' => '136',
+ 'cctld' => 'ky',
+ 'name_english' => 'Cayman Islands',
+ 'name_korean' => '케이맨 제도',
+ 'name_native' => 'Cayman Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CF',
+ 'iso_3166_1_alpha3' => 'CAF',
+ 'iso_3166_1_numeric' => '140',
+ 'cctld' => 'cf',
+ 'name_english' => 'Central African Republic',
+ 'name_korean' => '중앙아프리카 공화국',
+ 'name_native' => 'République Centrafricaine',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LK',
+ 'iso_3166_1_alpha3' => 'LKA',
+ 'iso_3166_1_numeric' => '144',
+ 'cctld' => 'lk',
+ 'name_english' => 'Sri Lanka',
+ 'name_korean' => '스리랑카',
+ 'name_native' => 'ශ්රී ලංකාව, இலங்கை',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TD',
+ 'iso_3166_1_alpha3' => 'TCD',
+ 'iso_3166_1_numeric' => '148',
+ 'cctld' => 'td',
+ 'name_english' => 'Chad',
+ 'name_korean' => '차드',
+ 'name_native' => 'Tchad',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CL',
+ 'iso_3166_1_alpha3' => 'CHL',
+ 'iso_3166_1_numeric' => '152',
+ 'cctld' => 'cl',
+ 'name_english' => 'Chile',
+ 'name_korean' => '칠레',
+ 'name_native' => 'Chile',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CN',
+ 'iso_3166_1_alpha3' => 'CHN',
+ 'iso_3166_1_numeric' => '156',
+ 'cctld' => 'cn',
+ 'name_english' => 'China',
+ 'name_korean' => '중국',
+ 'name_native' => '中国',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TW',
+ 'iso_3166_1_alpha3' => 'TWN',
+ 'iso_3166_1_numeric' => '158',
+ 'cctld' => 'tw',
+ 'name_english' => 'Taiwan (Republic of China)',
+ 'name_korean' => '대만',
+ 'name_native' => '臺灣 (中華民國)',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CX',
+ 'iso_3166_1_alpha3' => 'CXR',
+ 'iso_3166_1_numeric' => '162',
+ 'cctld' => 'cx',
+ 'name_english' => 'Christmas Island',
+ 'name_korean' => '크리스마스 섬',
+ 'name_native' => 'Christmas Island',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CC',
+ 'iso_3166_1_alpha3' => 'CCK',
+ 'iso_3166_1_numeric' => '166',
+ 'cctld' => 'cc',
+ 'name_english' => 'Cocos (Keeling) Islands',
+ 'name_korean' => '코코스 제도',
+ 'name_native' => 'Cocos (Keeling) Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CO',
+ 'iso_3166_1_alpha3' => 'COL',
+ 'iso_3166_1_numeric' => '170',
+ 'cctld' => 'co',
+ 'name_english' => 'Colombia',
+ 'name_korean' => '콜롬비아',
+ 'name_native' => 'Colombia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KM',
+ 'iso_3166_1_alpha3' => 'COM',
+ 'iso_3166_1_numeric' => '174',
+ 'cctld' => 'km',
+ 'name_english' => 'Comoros',
+ 'name_korean' => '코모로',
+ 'name_native' => 'Komori',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'YT',
+ 'iso_3166_1_alpha3' => 'MYT',
+ 'iso_3166_1_numeric' => '175',
+ 'cctld' => 'yt',
+ 'name_english' => 'Mayotte',
+ 'name_korean' => '마요트',
+ 'name_native' => 'Mayotte',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CG',
+ 'iso_3166_1_alpha3' => 'COG',
+ 'iso_3166_1_numeric' => '178',
+ 'cctld' => 'cg',
+ 'name_english' => 'Congo (Republic of)',
+ 'name_korean' => '콩고',
+ 'name_native' => 'République du Congo',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CD',
+ 'iso_3166_1_alpha3' => 'COD',
+ 'iso_3166_1_numeric' => '180',
+ 'cctld' => 'cd',
+ 'name_english' => 'Congo (Democratic Republic of the)',
+ 'name_korean' => '콩고 민주 공화국',
+ 'name_native' => 'République démocratique du Congo',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CK',
+ 'iso_3166_1_alpha3' => 'COK',
+ 'iso_3166_1_numeric' => '184',
+ 'cctld' => 'ck',
+ 'name_english' => 'Cook Islands',
+ 'name_korean' => '쿡 제도',
+ 'name_native' => 'Cook Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CR',
+ 'iso_3166_1_alpha3' => 'CRI',
+ 'iso_3166_1_numeric' => '188',
+ 'cctld' => 'cr',
+ 'name_english' => 'Costa Rica',
+ 'name_korean' => '코스타리카',
+ 'name_native' => 'Costa Rica',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'HR',
+ 'iso_3166_1_alpha3' => 'HRV',
+ 'iso_3166_1_numeric' => '191',
+ 'cctld' => 'hr',
+ 'name_english' => 'Croatia',
+ 'name_korean' => '크로아티아',
+ 'name_native' => 'Hrvatska',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CU',
+ 'iso_3166_1_alpha3' => 'CUB',
+ 'iso_3166_1_numeric' => '192',
+ 'cctld' => 'cu',
+ 'name_english' => 'Cuba',
+ 'name_korean' => '쿠바',
+ 'name_native' => 'Cuba',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CY',
+ 'iso_3166_1_alpha3' => 'CYP',
+ 'iso_3166_1_numeric' => '196',
+ 'cctld' => 'cy',
+ 'name_english' => 'Cyprus',
+ 'name_korean' => '키프로스',
+ 'name_native' => 'Κύπρος',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CZ',
+ 'iso_3166_1_alpha3' => 'CZE',
+ 'iso_3166_1_numeric' => '203',
+ 'cctld' => 'cz',
+ 'name_english' => 'Czech Republic',
+ 'name_korean' => '체코',
+ 'name_native' => 'Česká republika',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BJ',
+ 'iso_3166_1_alpha3' => 'BEN',
+ 'iso_3166_1_numeric' => '204',
+ 'cctld' => 'bj',
+ 'name_english' => 'Benin',
+ 'name_korean' => '베냉',
+ 'name_native' => 'Bénin',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'DK',
+ 'iso_3166_1_alpha3' => 'DNK',
+ 'iso_3166_1_numeric' => '208',
+ 'cctld' => 'dk',
+ 'name_english' => 'Denmark',
+ 'name_korean' => '덴마크',
+ 'name_native' => 'Danmark',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'DM',
+ 'iso_3166_1_alpha3' => 'DMA',
+ 'iso_3166_1_numeric' => '212',
+ 'cctld' => 'dm',
+ 'name_english' => 'Dominica',
+ 'name_korean' => '도미니카 연방',
+ 'name_native' => 'Dominica',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'DO',
+ 'iso_3166_1_alpha3' => 'DOM',
+ 'iso_3166_1_numeric' => '214',
+ 'cctld' => 'do',
+ 'name_english' => 'Dominican Republic',
+ 'name_korean' => '도미니카 공화국',
+ 'name_native' => 'República Dominicana',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'EC',
+ 'iso_3166_1_alpha3' => 'ECU',
+ 'iso_3166_1_numeric' => '218',
+ 'cctld' => 'ec',
+ 'name_english' => 'Ecuador',
+ 'name_korean' => '에콰도르',
+ 'name_native' => 'Ecuador',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SV',
+ 'iso_3166_1_alpha3' => 'SLV',
+ 'iso_3166_1_numeric' => '222',
+ 'cctld' => 'sv',
+ 'name_english' => 'El Salvador',
+ 'name_korean' => '엘살바도르',
+ 'name_native' => 'El Salvador',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GQ',
+ 'iso_3166_1_alpha3' => 'GNQ',
+ 'iso_3166_1_numeric' => '226',
+ 'cctld' => 'gq',
+ 'name_english' => 'Equatorial Guinea',
+ 'name_korean' => '적도기니',
+ 'name_native' => 'Guinea Ecuatorial',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ET',
+ 'iso_3166_1_alpha3' => 'ETH',
+ 'iso_3166_1_numeric' => '231',
+ 'cctld' => 'et',
+ 'name_english' => 'Ethiopia',
+ 'name_korean' => '에티오피아',
+ 'name_native' => 'ኢትዮጵያ',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ER',
+ 'iso_3166_1_alpha3' => 'ERI',
+ 'iso_3166_1_numeric' => '232',
+ 'cctld' => 'er',
+ 'name_english' => 'Eritrea',
+ 'name_korean' => '에리트레아',
+ 'name_native' => 'إرتريا',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'EE',
+ 'iso_3166_1_alpha3' => 'EST',
+ 'iso_3166_1_numeric' => '233',
+ 'cctld' => 'ee',
+ 'name_english' => 'Estonia',
+ 'name_korean' => '에스토니아',
+ 'name_native' => 'Eesti',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'FO',
+ 'iso_3166_1_alpha3' => 'FRO',
+ 'iso_3166_1_numeric' => '234',
+ 'cctld' => 'fo',
+ 'name_english' => 'Faroe Islands',
+ 'name_korean' => '페로 제도',
+ 'name_native' => 'Føroyar',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'FK',
+ 'iso_3166_1_alpha3' => 'FLK',
+ 'iso_3166_1_numeric' => '238',
+ 'cctld' => 'fk',
+ 'name_english' => 'Falkland Islands (Malvinas)',
+ 'name_korean' => '포클랜드 제도',
+ 'name_native' => 'Falkland Islands (Malvinas)',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GS',
+ 'iso_3166_1_alpha3' => 'SGS',
+ 'iso_3166_1_numeric' => '239',
+ 'cctld' => 'gs',
+ 'name_english' => 'South Georgia and the South Sandwich Islands',
+ 'name_korean' => '사우스조지아 사우스샌드위치 제도',
+ 'name_native' => 'South Georgia and the South Sandwich Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'FJ',
+ 'iso_3166_1_alpha3' => 'FJI',
+ 'iso_3166_1_numeric' => '242',
+ 'cctld' => 'fj',
+ 'name_english' => 'Fiji',
+ 'name_korean' => '피지',
+ 'name_native' => 'Fiji',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'FI',
+ 'iso_3166_1_alpha3' => 'FIN',
+ 'iso_3166_1_numeric' => '246',
+ 'cctld' => 'fi',
+ 'name_english' => 'Finland',
+ 'name_korean' => '핀란드',
+ 'name_native' => 'Suomi',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AX',
+ 'iso_3166_1_alpha3' => 'ALA',
+ 'iso_3166_1_numeric' => '248',
+ 'cctld' => 'ax',
+ 'name_english' => 'Åland Islands',
+ 'name_korean' => '올란드 제도',
+ 'name_native' => 'Åland Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'FR',
+ 'iso_3166_1_alpha3' => 'FRA',
+ 'iso_3166_1_numeric' => '250',
+ 'cctld' => 'fr',
+ 'name_english' => 'France',
+ 'name_korean' => '프랑스',
+ 'name_native' => 'France',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GF',
+ 'iso_3166_1_alpha3' => 'GUF',
+ 'iso_3166_1_numeric' => '254',
+ 'cctld' => 'gf',
+ 'name_english' => 'French Guiana',
+ 'name_korean' => '프랑스령 기아나',
+ 'name_native' => 'Guyane',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PF',
+ 'iso_3166_1_alpha3' => 'PYF',
+ 'iso_3166_1_numeric' => '258',
+ 'cctld' => 'pf',
+ 'name_english' => 'French Polynesia',
+ 'name_korean' => '프랑스령 폴리네시아',
+ 'name_native' => 'Polynésie française',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TF',
+ 'iso_3166_1_alpha3' => 'ATF',
+ 'iso_3166_1_numeric' => '260',
+ 'cctld' => 'tf',
+ 'name_english' => 'French Southern and Antarctic Lands',
+ 'name_korean' => '프랑스령 남방 및 남극 지역',
+ 'name_native' => 'Terres australes et antarctiques françaises',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'DJ',
+ 'iso_3166_1_alpha3' => 'DJI',
+ 'iso_3166_1_numeric' => '262',
+ 'cctld' => 'dj',
+ 'name_english' => 'Djibouti',
+ 'name_korean' => '지부티',
+ 'name_native' => 'جيبوتي',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GA',
+ 'iso_3166_1_alpha3' => 'GAB',
+ 'iso_3166_1_numeric' => '266',
+ 'cctld' => 'ga',
+ 'name_english' => 'Gabon',
+ 'name_korean' => '가봉',
+ 'name_native' => 'Gabon',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GE',
+ 'iso_3166_1_alpha3' => 'GEO',
+ 'iso_3166_1_numeric' => '268',
+ 'cctld' => 'ge',
+ 'name_english' => 'Georgia',
+ 'name_korean' => '그루지아',
+ 'name_native' => 'საქართველო',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GM',
+ 'iso_3166_1_alpha3' => 'GMB',
+ 'iso_3166_1_numeric' => '270',
+ 'cctld' => 'gm',
+ 'name_english' => 'Gambia',
+ 'name_korean' => '감비아',
+ 'name_native' => 'Gambia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PS',
+ 'iso_3166_1_alpha3' => 'PSE',
+ 'iso_3166_1_numeric' => '275',
+ 'cctld' => 'ps',
+ 'name_english' => 'Palestine',
+ 'name_korean' => '팔레스타인',
+ 'name_native' => 'فلسطين',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'DE',
+ 'iso_3166_1_alpha3' => 'DEU',
+ 'iso_3166_1_numeric' => '276',
+ 'cctld' => 'de',
+ 'name_english' => 'Germany',
+ 'name_korean' => '독일',
+ 'name_native' => 'Deutschland',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GH',
+ 'iso_3166_1_alpha3' => 'GHA',
+ 'iso_3166_1_numeric' => '288',
+ 'cctld' => 'gh',
+ 'name_english' => 'Ghana',
+ 'name_korean' => '가나',
+ 'name_native' => 'Ghana',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GI',
+ 'iso_3166_1_alpha3' => 'GIB',
+ 'iso_3166_1_numeric' => '292',
+ 'cctld' => 'gi',
+ 'name_english' => 'Gibraltar',
+ 'name_korean' => '지브롤터',
+ 'name_native' => 'Gibraltar',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KI',
+ 'iso_3166_1_alpha3' => 'KIR',
+ 'iso_3166_1_numeric' => '296',
+ 'cctld' => 'ki',
+ 'name_english' => 'Kiribati',
+ 'name_korean' => '키리바시',
+ 'name_native' => 'Kiribati',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GR',
+ 'iso_3166_1_alpha3' => 'GRC',
+ 'iso_3166_1_numeric' => '300',
+ 'cctld' => 'gr',
+ 'name_english' => 'Greece',
+ 'name_korean' => '그리스',
+ 'name_native' => 'Ελλάς',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GL',
+ 'iso_3166_1_alpha3' => 'GRL',
+ 'iso_3166_1_numeric' => '304',
+ 'cctld' => 'gl',
+ 'name_english' => 'Greenland',
+ 'name_korean' => '그린란드',
+ 'name_native' => 'Grønland, Kalaallit Nunaat',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GD',
+ 'iso_3166_1_alpha3' => 'GRD',
+ 'iso_3166_1_numeric' => '308',
+ 'cctld' => 'gd',
+ 'name_english' => 'Grenada',
+ 'name_korean' => '그레나다',
+ 'name_native' => 'Grenada',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GP',
+ 'iso_3166_1_alpha3' => 'GLP',
+ 'iso_3166_1_numeric' => '312',
+ 'cctld' => 'gp',
+ 'name_english' => 'Guadeloupe',
+ 'name_korean' => '과들루프',
+ 'name_native' => 'Guadeloupe',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GU',
+ 'iso_3166_1_alpha3' => 'GUM',
+ 'iso_3166_1_numeric' => '316',
+ 'cctld' => 'gu',
+ 'name_english' => 'Guam',
+ 'name_korean' => '괌',
+ 'name_native' => 'Guam, Guåhån',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GT',
+ 'iso_3166_1_alpha3' => 'GTM',
+ 'iso_3166_1_numeric' => '320',
+ 'cctld' => 'gt',
+ 'name_english' => 'Guatemala',
+ 'name_korean' => '과테말라',
+ 'name_native' => 'Guatemala',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GN',
+ 'iso_3166_1_alpha3' => 'GIN',
+ 'iso_3166_1_numeric' => '324',
+ 'cctld' => 'gn',
+ 'name_english' => 'Guinea',
+ 'name_korean' => '기니',
+ 'name_native' => 'Guinée, Gine',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GY',
+ 'iso_3166_1_alpha3' => 'GUY',
+ 'iso_3166_1_numeric' => '328',
+ 'cctld' => 'gy',
+ 'name_english' => 'Guyana',
+ 'name_korean' => '가이아나',
+ 'name_native' => 'Guyana',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'HT',
+ 'iso_3166_1_alpha3' => 'HTI',
+ 'iso_3166_1_numeric' => '332',
+ 'cctld' => 'ht',
+ 'name_english' => 'Haiti',
+ 'name_korean' => '아이티',
+ 'name_native' => 'Haïti, Ayiti',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'HM',
+ 'iso_3166_1_alpha3' => 'HMD',
+ 'iso_3166_1_numeric' => '334',
+ 'cctld' => 'hm',
+ 'name_english' => 'Heard Island and McDonald Islands',
+ 'name_korean' => '허드 맥도널드 제도',
+ 'name_native' => 'Heard Island and McDonald Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VA',
+ 'iso_3166_1_alpha3' => 'VAT',
+ 'iso_3166_1_numeric' => '336',
+ 'cctld' => 'va',
+ 'name_english' => 'Vatican City',
+ 'name_korean' => '바티칸',
+ 'name_native' => 'E Civitate Vaticana',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'HN',
+ 'iso_3166_1_alpha3' => 'HND',
+ 'iso_3166_1_numeric' => '340',
+ 'cctld' => 'hn',
+ 'name_english' => 'Honduras',
+ 'name_korean' => '온두라스',
+ 'name_native' => 'Honduras',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'HK',
+ 'iso_3166_1_alpha3' => 'HKG',
+ 'iso_3166_1_numeric' => '344',
+ 'cctld' => 'hk',
+ 'name_english' => 'Hong Kong',
+ 'name_korean' => '홍콩',
+ 'name_native' => '香港',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'HU',
+ 'iso_3166_1_alpha3' => 'HUN',
+ 'iso_3166_1_numeric' => '348',
+ 'cctld' => 'hu',
+ 'name_english' => 'Hungary',
+ 'name_korean' => '헝가리',
+ 'name_native' => 'Magyarország',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IS',
+ 'iso_3166_1_alpha3' => 'ISL',
+ 'iso_3166_1_numeric' => '352',
+ 'cctld' => 'is',
+ 'name_english' => 'Iceland',
+ 'name_korean' => '아이슬란드',
+ 'name_native' => 'Ísland',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IN',
+ 'iso_3166_1_alpha3' => 'IND',
+ 'iso_3166_1_numeric' => '356',
+ 'cctld' => 'in',
+ 'name_english' => 'India',
+ 'name_korean' => '인도',
+ 'name_native' => 'Bhārat Gaṇarājya, भारत, ভারত',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ID',
+ 'iso_3166_1_alpha3' => 'IDN',
+ 'iso_3166_1_numeric' => '360',
+ 'cctld' => 'id',
+ 'name_english' => 'Indonesia',
+ 'name_korean' => '인도네시아',
+ 'name_native' => 'Indonesia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IR',
+ 'iso_3166_1_alpha3' => 'IRN',
+ 'iso_3166_1_numeric' => '364',
+ 'cctld' => 'ir',
+ 'name_english' => 'Iran',
+ 'name_korean' => '이란',
+ 'name_native' => 'ایران',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IQ',
+ 'iso_3166_1_alpha3' => 'IRQ',
+ 'iso_3166_1_numeric' => '368',
+ 'cctld' => 'iq',
+ 'name_english' => 'Iraq',
+ 'name_korean' => '이라크',
+ 'name_native' => 'العراق',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IE',
+ 'iso_3166_1_alpha3' => 'IRL',
+ 'iso_3166_1_numeric' => '372',
+ 'cctld' => 'ie',
+ 'name_english' => 'Ireland',
+ 'name_korean' => '아일랜드',
+ 'name_native' => 'Éire',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IL',
+ 'iso_3166_1_alpha3' => 'ISR',
+ 'iso_3166_1_numeric' => '376',
+ 'cctld' => 'il',
+ 'name_english' => 'Israel',
+ 'name_korean' => '이스라엘',
+ 'name_native' => 'ישראל',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IT',
+ 'iso_3166_1_alpha3' => 'ITA',
+ 'iso_3166_1_numeric' => '380',
+ 'cctld' => 'it',
+ 'name_english' => 'Italy',
+ 'name_korean' => '이탈리아',
+ 'name_native' => 'Italia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CI',
+ 'iso_3166_1_alpha3' => 'CIV',
+ 'iso_3166_1_numeric' => '384',
+ 'cctld' => 'ci',
+ 'name_english' => 'Côte d\'Ivoire',
+ 'name_korean' => '코트디부아르',
+ 'name_native' => 'Côte d\'Ivoire',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'JM',
+ 'iso_3166_1_alpha3' => 'JAM',
+ 'iso_3166_1_numeric' => '388',
+ 'cctld' => 'jm',
+ 'name_english' => 'Jamaica',
+ 'name_korean' => '자메이카',
+ 'name_native' => 'Jamaica',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'JP',
+ 'iso_3166_1_alpha3' => 'JPN',
+ 'iso_3166_1_numeric' => '392',
+ 'cctld' => 'jp',
+ 'name_english' => 'Japan',
+ 'name_korean' => '일본',
+ 'name_native' => '日本',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KZ',
+ 'iso_3166_1_alpha3' => 'KAZ',
+ 'iso_3166_1_numeric' => '398',
+ 'cctld' => 'kz',
+ 'name_english' => 'Kazakhstan',
+ 'name_korean' => '카자흐스탄',
+ 'name_native' => 'Қазақстан',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'JO',
+ 'iso_3166_1_alpha3' => 'JOR',
+ 'iso_3166_1_numeric' => '400',
+ 'cctld' => 'jo',
+ 'name_english' => 'Jordan',
+ 'name_korean' => '요르단',
+ 'name_native' => 'الأردن',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KE',
+ 'iso_3166_1_alpha3' => 'KEN',
+ 'iso_3166_1_numeric' => '404',
+ 'cctld' => 'ke',
+ 'name_english' => 'Kenya',
+ 'name_korean' => '케냐',
+ 'name_native' => 'Kenya',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KP',
+ 'iso_3166_1_alpha3' => 'PRK',
+ 'iso_3166_1_numeric' => '408',
+ 'cctld' => 'kp',
+ 'name_english' => 'Korea (Democratic People\'s Republic of)',
+ 'name_korean' => '북한',
+ 'name_native' => '조선민주주의인민공화국',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KR',
+ 'iso_3166_1_alpha3' => 'KOR',
+ 'iso_3166_1_numeric' => '410',
+ 'cctld' => 'kr',
+ 'name_english' => 'Korea (Republic of)',
+ 'name_korean' => '대한민국',
+ 'name_native' => '대한민국',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KW',
+ 'iso_3166_1_alpha3' => 'KWT',
+ 'iso_3166_1_numeric' => '414',
+ 'cctld' => 'kw',
+ 'name_english' => 'Kuwait',
+ 'name_korean' => '쿠웨이트',
+ 'name_native' => 'دولة الكويت',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KG',
+ 'iso_3166_1_alpha3' => 'KGZ',
+ 'iso_3166_1_numeric' => '417',
+ 'cctld' => 'kg',
+ 'name_english' => 'Kyrgyzstan',
+ 'name_korean' => '키르기스스탄',
+ 'name_native' => 'Кыргызстан',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LA',
+ 'iso_3166_1_alpha3' => 'LAO',
+ 'iso_3166_1_numeric' => '418',
+ 'cctld' => 'la',
+ 'name_english' => 'Laos',
+ 'name_korean' => '라오스',
+ 'name_native' => 'ປະເທດລາວ',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LB',
+ 'iso_3166_1_alpha3' => 'LBN',
+ 'iso_3166_1_numeric' => '422',
+ 'cctld' => 'lb',
+ 'name_english' => 'Lebanon',
+ 'name_korean' => '레바논',
+ 'name_native' => 'لبنان',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LS',
+ 'iso_3166_1_alpha3' => 'LSO',
+ 'iso_3166_1_numeric' => '426',
+ 'cctld' => 'ls',
+ 'name_english' => 'Lesotho',
+ 'name_korean' => '레소토',
+ 'name_native' => 'Lesotho',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LV',
+ 'iso_3166_1_alpha3' => 'LVA',
+ 'iso_3166_1_numeric' => '428',
+ 'cctld' => 'lv',
+ 'name_english' => 'Latvia',
+ 'name_korean' => '라트비아',
+ 'name_native' => 'Latvija',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LR',
+ 'iso_3166_1_alpha3' => 'LBR',
+ 'iso_3166_1_numeric' => '430',
+ 'cctld' => 'lr',
+ 'name_english' => 'Liberia',
+ 'name_korean' => '라이베리아',
+ 'name_native' => 'Liberia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LY',
+ 'iso_3166_1_alpha3' => 'LBY',
+ 'iso_3166_1_numeric' => '434',
+ 'cctld' => 'ly',
+ 'name_english' => 'Libya',
+ 'name_korean' => '리비아',
+ 'name_native' => 'ليبيا',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LI',
+ 'iso_3166_1_alpha3' => 'LIE',
+ 'iso_3166_1_numeric' => '438',
+ 'cctld' => 'li',
+ 'name_english' => 'Liechtenstein',
+ 'name_korean' => '리히텐슈타인',
+ 'name_native' => 'Liechtenstein',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LT',
+ 'iso_3166_1_alpha3' => 'LTU',
+ 'iso_3166_1_numeric' => '440',
+ 'cctld' => 'lt',
+ 'name_english' => 'Lithuania',
+ 'name_korean' => '리투아니아',
+ 'name_native' => 'Lietuva',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LU',
+ 'iso_3166_1_alpha3' => 'LUX',
+ 'iso_3166_1_numeric' => '442',
+ 'cctld' => 'lu',
+ 'name_english' => 'Luxembourg',
+ 'name_korean' => '룩셈부르크',
+ 'name_native' => 'Lëtzebuerg',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MO',
+ 'iso_3166_1_alpha3' => 'MAC',
+ 'iso_3166_1_numeric' => '446',
+ 'cctld' => 'mo',
+ 'name_english' => 'Macau',
+ 'name_korean' => '마카오',
+ 'name_native' => '澳門',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MG',
+ 'iso_3166_1_alpha3' => 'MDG',
+ 'iso_3166_1_numeric' => '450',
+ 'cctld' => 'mg',
+ 'name_english' => 'Madagascar',
+ 'name_korean' => '마다가스카',
+ 'name_native' => 'Madagasikara',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MW',
+ 'iso_3166_1_alpha3' => 'MWI',
+ 'iso_3166_1_numeric' => '454',
+ 'cctld' => 'mw',
+ 'name_english' => 'Malawi',
+ 'name_korean' => '말라위',
+ 'name_native' => 'Malawi',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MY',
+ 'iso_3166_1_alpha3' => 'MYS',
+ 'iso_3166_1_numeric' => '458',
+ 'cctld' => 'my',
+ 'name_english' => 'Malaysia',
+ 'name_korean' => '말레이시아',
+ 'name_native' => 'Malaysia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MV',
+ 'iso_3166_1_alpha3' => 'MDV',
+ 'iso_3166_1_numeric' => '462',
+ 'cctld' => 'mv',
+ 'name_english' => 'Maldives',
+ 'name_korean' => '몰디브',
+ 'name_native' => 'ދިވެހިރާއްޖެ',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ML',
+ 'iso_3166_1_alpha3' => 'MLI',
+ 'iso_3166_1_numeric' => '466',
+ 'cctld' => 'ml',
+ 'name_english' => 'Mali',
+ 'name_korean' => '말리',
+ 'name_native' => 'Mali',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MT',
+ 'iso_3166_1_alpha3' => 'MLT',
+ 'iso_3166_1_numeric' => '470',
+ 'cctld' => 'mt',
+ 'name_english' => 'Malta',
+ 'name_korean' => '몰타',
+ 'name_native' => 'Malta',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MQ',
+ 'iso_3166_1_alpha3' => 'MTQ',
+ 'iso_3166_1_numeric' => '474',
+ 'cctld' => 'mq',
+ 'name_english' => 'Martinique',
+ 'name_korean' => '마르티니크',
+ 'name_native' => 'Martinique',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MR',
+ 'iso_3166_1_alpha3' => 'MRT',
+ 'iso_3166_1_numeric' => '478',
+ 'cctld' => 'mr',
+ 'name_english' => 'Mauritania',
+ 'name_korean' => '모리타니',
+ 'name_native' => 'موريتانيا',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MU',
+ 'iso_3166_1_alpha3' => 'MUS',
+ 'iso_3166_1_numeric' => '480',
+ 'cctld' => 'mu',
+ 'name_english' => 'Mauritius',
+ 'name_korean' => '모리셔스',
+ 'name_native' => 'Maurice',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MX',
+ 'iso_3166_1_alpha3' => 'MEX',
+ 'iso_3166_1_numeric' => '484',
+ 'cctld' => 'mx',
+ 'name_english' => 'Mexico',
+ 'name_korean' => '멕시코',
+ 'name_native' => 'México',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MC',
+ 'iso_3166_1_alpha3' => 'MCO',
+ 'iso_3166_1_numeric' => '492',
+ 'cctld' => 'mc',
+ 'name_english' => 'Monaco',
+ 'name_korean' => '모나코',
+ 'name_native' => 'Monaco',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MN',
+ 'iso_3166_1_alpha3' => 'MNG',
+ 'iso_3166_1_numeric' => '496',
+ 'cctld' => 'mn',
+ 'name_english' => 'Mongolia',
+ 'name_korean' => '몽골',
+ 'name_native' => 'Монгол Улс',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MD',
+ 'iso_3166_1_alpha3' => 'MDA',
+ 'iso_3166_1_numeric' => '498',
+ 'cctld' => 'md',
+ 'name_english' => 'Moldova (Republic of)',
+ 'name_korean' => '몰도바',
+ 'name_native' => 'Moldova',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ME',
+ 'iso_3166_1_alpha3' => 'MNE',
+ 'iso_3166_1_numeric' => '499',
+ 'cctld' => 'me',
+ 'name_english' => 'Montenegro',
+ 'name_korean' => '몬테네그로',
+ 'name_native' => 'Црна Гора',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MS',
+ 'iso_3166_1_alpha3' => 'MSR',
+ 'iso_3166_1_numeric' => '500',
+ 'cctld' => 'ms',
+ 'name_english' => 'Montserrat',
+ 'name_korean' => '몬트세랫',
+ 'name_native' => 'Montserrat',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MA',
+ 'iso_3166_1_alpha3' => 'MAR',
+ 'iso_3166_1_numeric' => '504',
+ 'cctld' => 'ma',
+ 'name_english' => 'Morocco',
+ 'name_korean' => '모로코',
+ 'name_native' => 'المغرب',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MZ',
+ 'iso_3166_1_alpha3' => 'MOZ',
+ 'iso_3166_1_numeric' => '508',
+ 'cctld' => 'mz',
+ 'name_english' => 'Mozambique',
+ 'name_korean' => '모잠비크',
+ 'name_native' => 'Moçambique',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'OM',
+ 'iso_3166_1_alpha3' => 'OMN',
+ 'iso_3166_1_numeric' => '512',
+ 'cctld' => 'om',
+ 'name_english' => 'Oman',
+ 'name_korean' => '오만',
+ 'name_native' => 'عُمان',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NA',
+ 'iso_3166_1_alpha3' => 'NAM',
+ 'iso_3166_1_numeric' => '516',
+ 'cctld' => 'na',
+ 'name_english' => 'Namibia',
+ 'name_korean' => '나미비아',
+ 'name_native' => 'Namibia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NR',
+ 'iso_3166_1_alpha3' => 'NRU',
+ 'iso_3166_1_numeric' => '520',
+ 'cctld' => 'nr',
+ 'name_english' => 'Nauru',
+ 'name_korean' => '나우루',
+ 'name_native' => 'Naoero',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NP',
+ 'iso_3166_1_alpha3' => 'NPL',
+ 'iso_3166_1_numeric' => '524',
+ 'cctld' => 'np',
+ 'name_english' => 'Nepal',
+ 'name_korean' => '네팔',
+ 'name_native' => 'नेपाल',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NL',
+ 'iso_3166_1_alpha3' => 'NLD',
+ 'iso_3166_1_numeric' => '528',
+ 'cctld' => 'nl',
+ 'name_english' => 'Netherlands',
+ 'name_korean' => '네덜란드',
+ 'name_native' => 'Nederland',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AN',
+ 'iso_3166_1_alpha3' => 'ANT',
+ 'iso_3166_1_numeric' => '530',
+ 'cctld' => 'an',
+ 'name_english' => 'Netherlands Antilles',
+ 'name_korean' => '네덜란드령 안틸레스',
+ 'name_native' => 'Nederlandse Antillen',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CW',
+ 'iso_3166_1_alpha3' => 'CUW',
+ 'iso_3166_1_numeric' => '531',
+ 'cctld' => 'cw',
+ 'name_english' => 'Curaçao',
+ 'name_korean' => '퀴라소',
+ 'name_native' => 'Curaçao',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AW',
+ 'iso_3166_1_alpha3' => 'ABW',
+ 'iso_3166_1_numeric' => '533',
+ 'cctld' => 'aw',
+ 'name_english' => 'Aruba',
+ 'name_korean' => '아루바',
+ 'name_native' => 'Aruba',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SX',
+ 'iso_3166_1_alpha3' => 'SXM',
+ 'iso_3166_1_numeric' => '534',
+ 'cctld' => 'sx',
+ 'name_english' => 'Sint Maarten (Dutch)',
+ 'name_korean' => '신트마르턴 (네덜란드령)',
+ 'name_native' => 'Sint Maarten',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BQ',
+ 'iso_3166_1_alpha3' => 'BES',
+ 'iso_3166_1_numeric' => '535',
+ 'cctld' => 'bq',
+ 'name_english' => 'Caribbean Netherlands',
+ 'name_korean' => '네덜란드령 카리브',
+ 'name_native' => 'Caribisch Nederland',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NC',
+ 'iso_3166_1_alpha3' => 'NCL',
+ 'iso_3166_1_numeric' => '540',
+ 'cctld' => 'nc',
+ 'name_english' => 'New Caledonia',
+ 'name_korean' => '누벨칼레도니',
+ 'name_native' => 'Nouvelle-Calédonie',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VU',
+ 'iso_3166_1_alpha3' => 'VUT',
+ 'iso_3166_1_numeric' => '548',
+ 'cctld' => 'vu',
+ 'name_english' => 'Vanuatu',
+ 'name_korean' => '바누아투',
+ 'name_native' => 'Vanuatu',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NZ',
+ 'iso_3166_1_alpha3' => 'NZL',
+ 'iso_3166_1_numeric' => '554',
+ 'cctld' => 'nz',
+ 'name_english' => 'New Zealand',
+ 'name_korean' => '뉴질랜드',
+ 'name_native' => 'New Zealand',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NI',
+ 'iso_3166_1_alpha3' => 'NIC',
+ 'iso_3166_1_numeric' => '558',
+ 'cctld' => 'ni',
+ 'name_english' => 'Nicaragua',
+ 'name_korean' => '니카라과',
+ 'name_native' => 'Nicaragua',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NE',
+ 'iso_3166_1_alpha3' => 'NER',
+ 'iso_3166_1_numeric' => '562',
+ 'cctld' => 'ne',
+ 'name_english' => 'Niger',
+ 'name_korean' => '니제르',
+ 'name_native' => 'Niger',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NG',
+ 'iso_3166_1_alpha3' => 'NGA',
+ 'iso_3166_1_numeric' => '566',
+ 'cctld' => 'ng',
+ 'name_english' => 'Nigeria',
+ 'name_korean' => '나이지리아',
+ 'name_native' => 'Nigeria',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NU',
+ 'iso_3166_1_alpha3' => 'NIU',
+ 'iso_3166_1_numeric' => '570',
+ 'cctld' => 'nu',
+ 'name_english' => 'Niue',
+ 'name_korean' => '니우에',
+ 'name_native' => 'Niuē',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NF',
+ 'iso_3166_1_alpha3' => 'NFK',
+ 'iso_3166_1_numeric' => '574',
+ 'cctld' => 'nf',
+ 'name_english' => 'Norfolk Island',
+ 'name_korean' => '노퍽 섬',
+ 'name_native' => 'Norfolk Island',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'NO',
+ 'iso_3166_1_alpha3' => 'NOR',
+ 'iso_3166_1_numeric' => '578',
+ 'cctld' => 'no',
+ 'name_english' => 'Norway',
+ 'name_korean' => '노르웨이',
+ 'name_native' => 'Norge',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MP',
+ 'iso_3166_1_alpha3' => 'MNP',
+ 'iso_3166_1_numeric' => '580',
+ 'cctld' => 'mp',
+ 'name_english' => 'Northern Mariana Islands',
+ 'name_korean' => '북마리아나 제도',
+ 'name_native' => 'Northern Mariana Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'UM',
+ 'iso_3166_1_alpha3' => 'UMI',
+ 'iso_3166_1_numeric' => '581',
+ 'cctld' => 'um',
+ 'name_english' => 'United States Minor Outlying Islands',
+ 'name_korean' => '미국령 군소 제도',
+ 'name_native' => 'United States Minor Outlying Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'FM',
+ 'iso_3166_1_alpha3' => 'FSM',
+ 'iso_3166_1_numeric' => '583',
+ 'cctld' => 'fm',
+ 'name_english' => 'Federated States of Micronesia',
+ 'name_korean' => '미크로네시아 연방',
+ 'name_native' => 'Federated States of Micronesia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MH',
+ 'iso_3166_1_alpha3' => 'MHL',
+ 'iso_3166_1_numeric' => '584',
+ 'cctld' => 'mh',
+ 'name_english' => 'Marshall Islands',
+ 'name_korean' => '마셜 제도',
+ 'name_native' => 'Marshall Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PW',
+ 'iso_3166_1_alpha3' => 'PLW',
+ 'iso_3166_1_numeric' => '585',
+ 'cctld' => 'pw',
+ 'name_english' => 'Palau',
+ 'name_korean' => '팔라우',
+ 'name_native' => 'Belau',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PK',
+ 'iso_3166_1_alpha3' => 'PAK',
+ 'iso_3166_1_numeric' => '586',
+ 'cctld' => 'pk',
+ 'name_english' => 'Pakistan',
+ 'name_korean' => '파키스탄',
+ 'name_native' => 'پاکستان',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PA',
+ 'iso_3166_1_alpha3' => 'PAN',
+ 'iso_3166_1_numeric' => '591',
+ 'cctld' => 'pa',
+ 'name_english' => 'Panama',
+ 'name_korean' => '파나마',
+ 'name_native' => 'Panamá',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PG',
+ 'iso_3166_1_alpha3' => 'PNG',
+ 'iso_3166_1_numeric' => '598',
+ 'cctld' => 'pg',
+ 'name_english' => 'Papua New Guinea',
+ 'name_korean' => '파푸아 뉴기니',
+ 'name_native' => 'Papua New Guinea',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PY',
+ 'iso_3166_1_alpha3' => 'PRY',
+ 'iso_3166_1_numeric' => '600',
+ 'cctld' => 'py',
+ 'name_english' => 'Paraguay',
+ 'name_korean' => '파라과이',
+ 'name_native' => 'Paraguay',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PE',
+ 'iso_3166_1_alpha3' => 'PER',
+ 'iso_3166_1_numeric' => '604',
+ 'cctld' => 'pe',
+ 'name_english' => 'Peru',
+ 'name_korean' => '페루',
+ 'name_native' => 'Perú',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PH',
+ 'iso_3166_1_alpha3' => 'PHL',
+ 'iso_3166_1_numeric' => '608',
+ 'cctld' => 'ph',
+ 'name_english' => 'Philippines',
+ 'name_korean' => '필리핀',
+ 'name_native' => 'Pilipinas',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PN',
+ 'iso_3166_1_alpha3' => 'PCN',
+ 'iso_3166_1_numeric' => '612',
+ 'cctld' => 'pn',
+ 'name_english' => 'Pitcairn Islands',
+ 'name_korean' => '핏케언 제도',
+ 'name_native' => 'Pitcairn Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PL',
+ 'iso_3166_1_alpha3' => 'POL',
+ 'iso_3166_1_numeric' => '616',
+ 'cctld' => 'pl',
+ 'name_english' => 'Poland',
+ 'name_korean' => '폴란드',
+ 'name_native' => 'Polska',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PT',
+ 'iso_3166_1_alpha3' => 'PRT',
+ 'iso_3166_1_numeric' => '620',
+ 'cctld' => 'pt',
+ 'name_english' => 'Portugal',
+ 'name_korean' => '포르투갈',
+ 'name_native' => 'Portugal',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GW',
+ 'iso_3166_1_alpha3' => 'GNB',
+ 'iso_3166_1_numeric' => '624',
+ 'cctld' => 'gw',
+ 'name_english' => 'Guinea-Bissau',
+ 'name_korean' => '기니비사우',
+ 'name_native' => 'Guiné-Bissau',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TL',
+ 'iso_3166_1_alpha3' => 'TLS',
+ 'iso_3166_1_numeric' => '626',
+ 'cctld' => 'tl',
+ 'name_english' => 'Timor-Leste',
+ 'name_korean' => '동티모르',
+ 'name_native' => 'Timor Lorosa\'e',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PR',
+ 'iso_3166_1_alpha3' => 'PRI',
+ 'iso_3166_1_numeric' => '630',
+ 'cctld' => 'pr',
+ 'name_english' => 'Puerto Rico',
+ 'name_korean' => '푸에르토리코',
+ 'name_native' => 'Puerto Rico',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'QA',
+ 'iso_3166_1_alpha3' => 'QAT',
+ 'iso_3166_1_numeric' => '634',
+ 'cctld' => 'qa',
+ 'name_english' => 'Qatar',
+ 'name_korean' => '카타르',
+ 'name_native' => 'قطر',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'RE',
+ 'iso_3166_1_alpha3' => 'REU',
+ 'iso_3166_1_numeric' => '638',
+ 'cctld' => 're',
+ 'name_english' => 'Réunion',
+ 'name_korean' => '레위니옹',
+ 'name_native' => 'Réunion',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'RO',
+ 'iso_3166_1_alpha3' => 'ROU',
+ 'iso_3166_1_numeric' => '642',
+ 'cctld' => 'ro',
+ 'name_english' => 'Romania',
+ 'name_korean' => '루마니아',
+ 'name_native' => 'România',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'RU',
+ 'iso_3166_1_alpha3' => 'RUS',
+ 'iso_3166_1_numeric' => '643',
+ 'cctld' => 'ru',
+ 'name_english' => 'Russia',
+ 'name_korean' => '러시아',
+ 'name_native' => 'Россия',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'RW',
+ 'iso_3166_1_alpha3' => 'RWA',
+ 'iso_3166_1_numeric' => '646',
+ 'cctld' => 'rw',
+ 'name_english' => 'Rwanda',
+ 'name_korean' => '르완다',
+ 'name_native' => 'Rwanda',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BL',
+ 'iso_3166_1_alpha3' => 'BLM',
+ 'iso_3166_1_numeric' => '652',
+ 'cctld' => 'bl',
+ 'name_english' => 'Saint-Barthélemy',
+ 'name_korean' => '생바르텔레미',
+ 'name_native' => 'Saint-Barthélemy',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SH',
+ 'iso_3166_1_alpha3' => 'SHN',
+ 'iso_3166_1_numeric' => '654',
+ 'cctld' => 'sh',
+ 'name_english' => 'Saint Helena, Ascension and Tristan da Cunha',
+ 'name_korean' => '세인트헬레나',
+ 'name_native' => 'Saint Helena, Ascension and Tristan da Cunha',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'KN',
+ 'iso_3166_1_alpha3' => 'KNA',
+ 'iso_3166_1_numeric' => '659',
+ 'cctld' => 'kn',
+ 'name_english' => 'Saint Kitts and Nevis',
+ 'name_korean' => '세인트키츠 네비스',
+ 'name_native' => 'Saint Kitts and Nevis',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AI',
+ 'iso_3166_1_alpha3' => 'AIA',
+ 'iso_3166_1_numeric' => '660',
+ 'cctld' => 'ai',
+ 'name_english' => 'Anguilla',
+ 'name_korean' => '앵귈라',
+ 'name_native' => 'Anguilla',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'LC',
+ 'iso_3166_1_alpha3' => 'LCA',
+ 'iso_3166_1_numeric' => '662',
+ 'cctld' => 'lc',
+ 'name_english' => 'Saint Lucia',
+ 'name_korean' => '세인트루시아',
+ 'name_native' => 'Saint Lucia',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MF',
+ 'iso_3166_1_alpha3' => 'MAF',
+ 'iso_3166_1_numeric' => '663',
+ 'cctld' => 'mf',
+ 'name_english' => 'Saint-Martin (French)',
+ 'name_korean' => '생마르탱 (프랑스령)',
+ 'name_native' => 'Saint-Martin',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'PM',
+ 'iso_3166_1_alpha3' => 'SPM',
+ 'iso_3166_1_numeric' => '666',
+ 'cctld' => 'pm',
+ 'name_english' => 'Saint Pierre and Miquelon',
+ 'name_korean' => '생피에르 미클롱',
+ 'name_native' => 'Saint-Pierre et Miquelon',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VC',
+ 'iso_3166_1_alpha3' => 'VCT',
+ 'iso_3166_1_numeric' => '670',
+ 'cctld' => 'vc',
+ 'name_english' => 'Saint Vincent and the Grenadines',
+ 'name_korean' => '세인트빈센트 그레나',
+ 'name_native' => 'Saint Vincent and the Grenadines',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SM',
+ 'iso_3166_1_alpha3' => 'SMR',
+ 'iso_3166_1_numeric' => '674',
+ 'cctld' => 'sm',
+ 'name_english' => 'San Marino',
+ 'name_korean' => '산마리노',
+ 'name_native' => 'San Marino',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ST',
+ 'iso_3166_1_alpha3' => 'STP',
+ 'iso_3166_1_numeric' => '678',
+ 'cctld' => 'st',
+ 'name_english' => 'Sao Tome and Principe',
+ 'name_korean' => '상투메 프린시페',
+ 'name_native' => 'São Tomé e Príncipe',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SA',
+ 'iso_3166_1_alpha3' => 'SAU',
+ 'iso_3166_1_numeric' => '682',
+ 'cctld' => 'sa',
+ 'name_english' => 'Saudi Arabia',
+ 'name_korean' => '사우디아라비아',
+ 'name_native' => 'المملكة العربية السعودية',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SN',
+ 'iso_3166_1_alpha3' => 'SEN',
+ 'iso_3166_1_numeric' => '686',
+ 'cctld' => 'sn',
+ 'name_english' => 'Senegal',
+ 'name_korean' => '세네갈',
+ 'name_native' => 'Sénégal',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'RS',
+ 'iso_3166_1_alpha3' => 'SRB',
+ 'iso_3166_1_numeric' => '688',
+ 'cctld' => 'rs',
+ 'name_english' => 'Serbia',
+ 'name_korean' => '세르비아',
+ 'name_native' => 'Србија',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SC',
+ 'iso_3166_1_alpha3' => 'SYC',
+ 'iso_3166_1_numeric' => '690',
+ 'cctld' => 'sc',
+ 'name_english' => 'Seychelles',
+ 'name_korean' => '세이셸',
+ 'name_native' => 'Sesel',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SL',
+ 'iso_3166_1_alpha3' => 'SLE',
+ 'iso_3166_1_numeric' => '694',
+ 'cctld' => 'sl',
+ 'name_english' => 'Sierra Leone',
+ 'name_korean' => '시에라리온',
+ 'name_native' => 'Sierra Leone',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SG',
+ 'iso_3166_1_alpha3' => 'SGP',
+ 'iso_3166_1_numeric' => '702',
+ 'cctld' => 'sg',
+ 'name_english' => 'Singapore',
+ 'name_korean' => '싱가포르',
+ 'name_native' => 'Singapura',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SK',
+ 'iso_3166_1_alpha3' => 'SVK',
+ 'iso_3166_1_numeric' => '703',
+ 'cctld' => 'sk',
+ 'name_english' => 'Slovakia',
+ 'name_korean' => '슬로바키아',
+ 'name_native' => 'Slovensko',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VN',
+ 'iso_3166_1_alpha3' => 'VNM',
+ 'iso_3166_1_numeric' => '704',
+ 'cctld' => 'vn',
+ 'name_english' => 'Viet Nam',
+ 'name_korean' => '베트남',
+ 'name_native' => 'Việt Nam',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SI',
+ 'iso_3166_1_alpha3' => 'SVN',
+ 'iso_3166_1_numeric' => '705',
+ 'cctld' => 'si',
+ 'name_english' => 'Slovenia',
+ 'name_korean' => '슬로베니아',
+ 'name_native' => 'Slovenija',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SO',
+ 'iso_3166_1_alpha3' => 'SOM',
+ 'iso_3166_1_numeric' => '706',
+ 'cctld' => 'so',
+ 'name_english' => 'Somalia',
+ 'name_korean' => '소말리아',
+ 'name_native' => 'الصومال',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ZA',
+ 'iso_3166_1_alpha3' => 'ZAF',
+ 'iso_3166_1_numeric' => '710',
+ 'cctld' => 'za',
+ 'name_english' => 'South Africa',
+ 'name_korean' => '남아프리카 공화국',
+ 'name_native' => 'South Africa',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ZW',
+ 'iso_3166_1_alpha3' => 'ZWE',
+ 'iso_3166_1_numeric' => '716',
+ 'cctld' => 'zw',
+ 'name_english' => 'Zimbabwe',
+ 'name_korean' => '짐바브웨',
+ 'name_native' => 'Zimbabwe',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ES',
+ 'iso_3166_1_alpha3' => 'ESP',
+ 'iso_3166_1_numeric' => '724',
+ 'cctld' => 'es',
+ 'name_english' => 'Spain',
+ 'name_korean' => '스페인',
+ 'name_native' => 'España',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SS',
+ 'iso_3166_1_alpha3' => 'SSD',
+ 'iso_3166_1_numeric' => '728',
+ 'cctld' => 'ss',
+ 'name_english' => 'South Sudan',
+ 'name_korean' => '남수단',
+ 'name_native' => 'South Sudan',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SD',
+ 'iso_3166_1_alpha3' => 'SDN',
+ 'iso_3166_1_numeric' => '729',
+ 'cctld' => 'sd',
+ 'name_english' => 'Sudan',
+ 'name_korean' => '수단',
+ 'name_native' => 'السودان',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'EH',
+ 'iso_3166_1_alpha3' => 'ESH',
+ 'iso_3166_1_numeric' => '732',
+ 'cctld' => 'eh',
+ 'name_english' => 'Western Sahara',
+ 'name_korean' => '서사하라',
+ 'name_native' => 'الصحراء الغربية',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SR',
+ 'iso_3166_1_alpha3' => 'SUR',
+ 'iso_3166_1_numeric' => '740',
+ 'cctld' => 'sr',
+ 'name_english' => 'Suriname',
+ 'name_korean' => '수리남',
+ 'name_native' => 'Suriname',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SJ',
+ 'iso_3166_1_alpha3' => 'SJM',
+ 'iso_3166_1_numeric' => '744',
+ 'cctld' => 'sj',
+ 'name_english' => 'Svalbard',
+ 'name_korean' => '스발바르',
+ 'name_native' => 'Svalbard',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SZ',
+ 'iso_3166_1_alpha3' => 'SWZ',
+ 'iso_3166_1_numeric' => '748',
+ 'cctld' => 'sz',
+ 'name_english' => 'Swaziland',
+ 'name_korean' => '스와질란드',
+ 'name_native' => 'Umbuso weSwatini',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SE',
+ 'iso_3166_1_alpha3' => 'SWE',
+ 'iso_3166_1_numeric' => '752',
+ 'cctld' => 'se',
+ 'name_english' => 'Sweden',
+ 'name_korean' => '스웨덴',
+ 'name_native' => 'Sverige',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'CH',
+ 'iso_3166_1_alpha3' => 'CHE',
+ 'iso_3166_1_numeric' => '756',
+ 'cctld' => 'ch',
+ 'name_english' => 'Switzerland',
+ 'name_korean' => '스위스',
+ 'name_native' => 'Schweiz, Suisse, Svizzera, Svizra',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'SY',
+ 'iso_3166_1_alpha3' => 'SYR',
+ 'iso_3166_1_numeric' => '760',
+ 'cctld' => 'sy',
+ 'name_english' => 'Syria',
+ 'name_korean' => '시리아',
+ 'name_native' => 'سورية',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TJ',
+ 'iso_3166_1_alpha3' => 'TJK',
+ 'iso_3166_1_numeric' => '762',
+ 'cctld' => 'tj',
+ 'name_english' => 'Tajikistan',
+ 'name_korean' => '타지키스탄',
+ 'name_native' => 'Тоҷикистон',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TH',
+ 'iso_3166_1_alpha3' => 'THA',
+ 'iso_3166_1_numeric' => '764',
+ 'cctld' => 'th',
+ 'name_english' => 'Thailand',
+ 'name_korean' => '태국',
+ 'name_native' => 'ประเทศไทย',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TG',
+ 'iso_3166_1_alpha3' => 'TGO',
+ 'iso_3166_1_numeric' => '768',
+ 'cctld' => 'tg',
+ 'name_english' => 'Togo',
+ 'name_korean' => '토고',
+ 'name_native' => 'Togo',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TK',
+ 'iso_3166_1_alpha3' => 'TKL',
+ 'iso_3166_1_numeric' => '772',
+ 'cctld' => 'tk',
+ 'name_english' => 'Tokelau',
+ 'name_korean' => '토켈라우',
+ 'name_native' => 'Tokelau',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TO',
+ 'iso_3166_1_alpha3' => 'TON',
+ 'iso_3166_1_numeric' => '776',
+ 'cctld' => 'to',
+ 'name_english' => 'Tonga',
+ 'name_korean' => '통가',
+ 'name_native' => 'Tonga',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TT',
+ 'iso_3166_1_alpha3' => 'TTO',
+ 'iso_3166_1_numeric' => '780',
+ 'cctld' => 'tt',
+ 'name_english' => 'Trinidad and Tobago',
+ 'name_korean' => '트리니다드 토바고',
+ 'name_native' => 'Trinidad and Tobago',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'AE',
+ 'iso_3166_1_alpha3' => 'ARE',
+ 'iso_3166_1_numeric' => '784',
+ 'cctld' => 'ae',
+ 'name_english' => 'United Arab Emirates',
+ 'name_korean' => '아랍에미리트',
+ 'name_native' => 'الإمارات العربيّة المتّحدة',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TN',
+ 'iso_3166_1_alpha3' => 'TUN',
+ 'iso_3166_1_numeric' => '788',
+ 'cctld' => 'tn',
+ 'name_english' => 'Tunisia',
+ 'name_korean' => '튀니지',
+ 'name_native' => 'تونس',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TR',
+ 'iso_3166_1_alpha3' => 'TUR',
+ 'iso_3166_1_numeric' => '792',
+ 'cctld' => 'tr',
+ 'name_english' => 'Turkey',
+ 'name_korean' => '터키',
+ 'name_native' => 'Türkiye',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TM',
+ 'iso_3166_1_alpha3' => 'TKM',
+ 'iso_3166_1_numeric' => '795',
+ 'cctld' => 'tm',
+ 'name_english' => 'Turkmenistan',
+ 'name_korean' => '투르크메니스탄',
+ 'name_native' => 'Türkmenistan',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TC',
+ 'iso_3166_1_alpha3' => 'TCA',
+ 'iso_3166_1_numeric' => '796',
+ 'cctld' => 'tc',
+ 'name_english' => 'Turks and Caicos Islands',
+ 'name_korean' => '터크스 케이커스 제도',
+ 'name_native' => 'Turks and Caicos Islands',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TV',
+ 'iso_3166_1_alpha3' => 'TUV',
+ 'iso_3166_1_numeric' => '798',
+ 'cctld' => 'tv',
+ 'name_english' => 'Tuvalu',
+ 'name_korean' => '투발루',
+ 'name_native' => 'Tuvalu',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'UG',
+ 'iso_3166_1_alpha3' => 'UGA',
+ 'iso_3166_1_numeric' => '800',
+ 'cctld' => 'ug',
+ 'name_english' => 'Uganda',
+ 'name_korean' => '우간다',
+ 'name_native' => 'Uganda',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'UA',
+ 'iso_3166_1_alpha3' => 'UKR',
+ 'iso_3166_1_numeric' => '804',
+ 'cctld' => 'ua',
+ 'name_english' => 'Ukraine',
+ 'name_korean' => '우크라이나',
+ 'name_native' => 'Україна',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'MK',
+ 'iso_3166_1_alpha3' => 'MKD',
+ 'iso_3166_1_numeric' => '807',
+ 'cctld' => 'mk',
+ 'name_english' => 'Macedonia',
+ 'name_korean' => '마케도니아',
+ 'name_native' => 'Македонија',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'EG',
+ 'iso_3166_1_alpha3' => 'EGY',
+ 'iso_3166_1_numeric' => '818',
+ 'cctld' => 'eg',
+ 'name_english' => 'Egypt',
+ 'name_korean' => '이집트',
+ 'name_native' => 'مصر',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GB',
+ 'iso_3166_1_alpha3' => 'GBR',
+ 'iso_3166_1_numeric' => '826',
+ 'cctld' => 'gb',
+ 'name_english' => 'United Kingdom',
+ 'name_korean' => '영국',
+ 'name_native' => 'United Kingdom',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'GG',
+ 'iso_3166_1_alpha3' => 'GGY',
+ 'iso_3166_1_numeric' => '831',
+ 'cctld' => 'gg',
+ 'name_english' => 'Guernsey',
+ 'name_korean' => '건지 섬',
+ 'name_native' => 'Guernsey',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'JE',
+ 'iso_3166_1_alpha3' => 'JEY',
+ 'iso_3166_1_numeric' => '832',
+ 'cctld' => 'je',
+ 'name_english' => 'Jersey',
+ 'name_korean' => '저지 섬',
+ 'name_native' => 'Jersey',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'IM',
+ 'iso_3166_1_alpha3' => 'IMN',
+ 'iso_3166_1_numeric' => '833',
+ 'cctld' => 'im',
+ 'name_english' => 'Isle of Man',
+ 'name_korean' => '맨 섬',
+ 'name_native' => 'Isle of Man',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'TZ',
+ 'iso_3166_1_alpha3' => 'TZA',
+ 'iso_3166_1_numeric' => '834',
+ 'cctld' => 'tz',
+ 'name_english' => 'Tanzania',
+ 'name_korean' => '탄자니아',
+ 'name_native' => 'Tanzania',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'US',
+ 'iso_3166_1_alpha3' => 'USA',
+ 'iso_3166_1_numeric' => '840',
+ 'cctld' => 'us',
+ 'name_english' => 'United States of America',
+ 'name_korean' => '미국',
+ 'name_native' => 'United States of America',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VI',
+ 'iso_3166_1_alpha3' => 'VIR',
+ 'iso_3166_1_numeric' => '850',
+ 'cctld' => 'vi',
+ 'name_english' => 'Virgin Islands (U.S.)',
+ 'name_korean' => '미국령 버진아일랜드',
+ 'name_native' => 'Virgin Islands (U.S.)',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'BF',
+ 'iso_3166_1_alpha3' => 'BFA',
+ 'iso_3166_1_numeric' => '854',
+ 'cctld' => 'bf',
+ 'name_english' => 'Burkina Faso',
+ 'name_korean' => '부르키나파소',
+ 'name_native' => 'Burkina Faso',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'UY',
+ 'iso_3166_1_alpha3' => 'URY',
+ 'iso_3166_1_numeric' => '858',
+ 'cctld' => 'uy',
+ 'name_english' => 'Uruguay',
+ 'name_korean' => '우루과이',
+ 'name_native' => 'Uruguay',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'UZ',
+ 'iso_3166_1_alpha3' => 'UZB',
+ 'iso_3166_1_numeric' => '860',
+ 'cctld' => 'uz',
+ 'name_english' => 'Uzbekistan',
+ 'name_korean' => '우즈베키스탄',
+ 'name_native' => 'Ўзбекистон',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'VE',
+ 'iso_3166_1_alpha3' => 'VEN',
+ 'iso_3166_1_numeric' => '862',
+ 'cctld' => 've',
+ 'name_english' => 'Venezuela',
+ 'name_korean' => '베네수엘라',
+ 'name_native' => 'Venezuela',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'WF',
+ 'iso_3166_1_alpha3' => 'WLF',
+ 'iso_3166_1_numeric' => '876',
+ 'cctld' => 'wf',
+ 'name_english' => 'Wallis and Futuna',
+ 'name_korean' => '왈리스 퓌튀나',
+ 'name_native' => 'Wallis-et-Futuna',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'WS',
+ 'iso_3166_1_alpha3' => 'WSM',
+ 'iso_3166_1_numeric' => '882',
+ 'cctld' => 'ws',
+ 'name_english' => 'Samoa',
+ 'name_korean' => '사모아',
+ 'name_native' => 'Samoa',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'YE',
+ 'iso_3166_1_alpha3' => 'YEM',
+ 'iso_3166_1_numeric' => '887',
+ 'cctld' => 'ye',
+ 'name_english' => 'Yemen',
+ 'name_korean' => '예멘',
+ 'name_native' => 'اليمن',
+ ),
+ array(
+ 'iso_3166_1_alpha2' => 'ZM',
+ 'iso_3166_1_alpha3' => 'ZMB',
+ 'iso_3166_1_numeric' => '894',
+ 'cctld' => 'zm',
+ 'name_english' => 'Zambia',
+ 'name_korean' => '잠비아',
+ 'name_native' => 'Zambia',
+ ),
+);
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/calendar.php b/common/framework/calendar.php
new file mode 100644
index 000000000..67aaafbe4
--- /dev/null
+++ b/common/framework/calendar.php
@@ -0,0 +1,132 @@
+ftp_info);
$buff = ' DateTime::formatTimestamp('Y-m-d H:i:s', RX_TIME),
+ 'timestamp' => DateTime::formatTimestamp('Y-m-d H:i:s', \RX_TIME),
'url' => getCurrentPageUrl(),
'request' => (object)array(
'method' => $_SERVER['REQUEST_METHOD'] . ($_SERVER['REQUEST_METHOD'] !== \Context::getRequestMethod() ? (' (' . \Context::getRequestMethod() . ')') : ''),
diff --git a/common/framework/filters/htmlfilter.php b/common/framework/filters/htmlfilter.php
index 032e0e47b..dc6e6a7b6 100644
--- a/common/framework/filters/htmlfilter.php
+++ b/common/framework/filters/htmlfilter.php
@@ -3,6 +3,7 @@
namespace Rhymix\Framework\Filters;
use Rhymix\Framework\Security;
+use Rhymix\Framework\Storage;
/**
* The HTML filter class.
@@ -126,8 +127,8 @@ class HTMLFilter
$config->set('URI.SafeIframeRegexp', MediaFilter::getIframeWhitelistRegex());
// Set the serializer path.
- $config->set('Cache.SerializerPath', RX_BASEDIR . 'files/cache/htmlpurifier');
- \FileHandler::makeDir(RX_BASEDIR . 'files/cache/htmlpurifier');
+ $config->set('Cache.SerializerPath', \RX_BASEDIR . 'files/cache/htmlpurifier');
+ Storage::createDirectory(\RX_BASEDIR . 'files/cache/htmlpurifier');
// Modify the HTML definition to support editor components and widgets.
$def = $config->getHTMLDefinition(true);
@@ -313,8 +314,8 @@ class HTMLFilter
// flexbox
$info['display'] = new \HTMLPurifier_AttrDef_Enum(array(
- 'block', 'flex', '-webkit-flex', 'inline', 'inline-block', 'inline-flex', '-webkit-inline-flex', 'inline-table',
- 'list-item', 'run-in', 'compact', 'marker', 'table', 'table-row-group', 'table-header-group', 'table-footer-group',
+ 'block', 'flex', '-webkit-flex', 'inline', 'inline-block', 'inline-flex', '-webkit-inline-flex', 'inline-table',
+ 'list-item', 'run-in', 'compact', 'marker', 'table', 'table-row-group', 'table-header-group', 'table-footer-group',
'table-row', 'table-column-group', 'table-column', 'table-cell', 'table-caption',
'none', 'initial', 'inherit',
));
diff --git a/common/framework/filters/ipfilter.php b/common/framework/filters/ipfilter.php
index 096ab4b2c..e62443d87 100644
--- a/common/framework/filters/ipfilter.php
+++ b/common/framework/filters/ipfilter.php
@@ -140,7 +140,7 @@ class IpFilter
return false;
}
- $cloudflare_ranges = (include RX_BASEDIR . 'common/defaults/cloudflare.php');
+ $cloudflare_ranges = (include \RX_BASEDIR . 'common/defaults/cloudflare.php');
foreach ($cloudflare_ranges as $cloudflare_range)
{
if (self::inRange($_SERVER['REMOTE_ADDR'], $cloudflare_range))
diff --git a/common/framework/filters/mediafilter.php b/common/framework/filters/mediafilter.php
index 867030dda..11fe04f4e 100644
--- a/common/framework/filters/mediafilter.php
+++ b/common/framework/filters/mediafilter.php
@@ -198,7 +198,7 @@ class MediaFilter
*/
protected static function _loadWhitelists($custom_whitelist = array())
{
- $default_whitelist = (include RX_BASEDIR . 'common/defaults/whitelist.php');
+ $default_whitelist = (include \RX_BASEDIR . 'common/defaults/whitelist.php');
self::$_object_whitelist = array();
self::$_iframe_whitelist = array();
diff --git a/common/framework/formatter.php b/common/framework/formatter.php
new file mode 100644
index 000000000..da2e87b9b
--- /dev/null
+++ b/common/framework/formatter.php
@@ -0,0 +1,311 @@
+ instead of
to separate lines.
+ if ($options & self::TEXT_NEWLINE_AS_P)
+ {
+ $lines = array_map('trim', explode("\n", escape(trim($text))));
+ $result = '';
+ foreach ($lines as $line)
+ {
+ $result .= "
$line
\n"; + } + return $result; + } + + // This option uses to separate paragraphs.
+ if ($options & self::TEXT_DOUBLE_NEWLINE_AS_P)
+ {
+ $lines = preg_replace('!(
)+\s*$!', '', nl2br(escape(trim($text))));
+ $lines = preg_split('!(
\s*)+
!', $lines);
+ foreach ($lines as $line)
+ {
+ $result .= "
\n" . trim($line) . "\n
\n"; + } + return $result; + } + + // The default is to use tags.
+ $html = preg_replace('!
]*>\s*!i', "\n", $html);
+ $html = preg_replace('!
]*>\s*!i', '', $html); + $html = preg_replace('!
]*>\s*!i', "\n\n", $html); + + // Encode links and images to preserve essential information. + $html = preg_replace_callback('!]*href="([^>"]+)"[^>]*>([^<]*)!i', function($matches) { + return trim($matches[2] . ' <' . $matches[1] . '>'); + }, $html); + $html = preg_replace_callback('!{param}'); + $parser->addCodeDefinition($builder->build()); + $builder = new \JBBCode\CodeDefinitionBuilder('code', '
{param}');
+ $builder->setParseContent(false);
+ $parser->addCodeDefinition($builder->build());
+
+ $parser->parse($bbcode);
+ $html = $parser->getAsHtml();
+ return Filters\HTMLFilter::clean($html);
+ }
+
+ /**
+ * Apply smart quotes and other stylistic enhancements to HTML.
+ *
+ * @param string $html
+ * @return string
+ */
+ public static function applySmartQuotes($html)
+ {
+ return \Michelf\SmartyPants::defaultTransform($html, 'qbBdDiew');
+ }
+
+ /**
+ * Compile LESS into CSS.
+ *
+ * @param string|array $source_filename
+ * @param string $target_filename
+ * @param array $variables (optional)
+ * @parsm bool $minify (optional)
+ * @return bool
+ */
+ public static function compileLESS($source_filename, $target_filename, $variables = array(), $minify = false)
+ {
+ // Get the cleaned and concatenated content.
+ $content = self::_concatenate($source_filename, $target_filename);
+
+ // Compile!
+ try
+ {
+ $less_compiler = new \lessc;
+ $less_compiler->setFormatter($minify ? 'compressed' : 'lessjs');
+ $less_compiler->setImportDir(array(dirname(is_array($source_filename) ? array_first($source_filename) : $source_filename)));
+ if ($variables)
+ {
+ $less_compiler->setVariables($variables);
+ }
+
+ $content = '@charset "UTF-8";' . "\n" . $less_compiler->compile($content) . "\n";
+ $result = true;
+ }
+ catch (\Exception $e)
+ {
+ $content = '/*' . "\n" . 'Error while compiling LESS:' . "\n" . $e->getMessage() . "\n" . '*/' . "\n";
+ $result = false;
+ }
+
+ // Save the result to the target file.
+ Storage::write($target_filename, $content);
+ return $result;
+ }
+
+ /**
+ * Compile SCSS into CSS.
+ *
+ * @param string|array $source_filename
+ * @param string $target_filename
+ * @param array $variables (optional)
+ * @parsm bool $minify (optional)
+ * @return bool
+ */
+ public static function compileSCSS($source_filename, $target_filename, $variables = array(), $minify = false)
+ {
+ // Get the cleaned and concatenated content.
+ $content = self::_concatenate($source_filename, $target_filename);
+
+ // Compile!
+ try
+ {
+ $scss_compiler = new \scssc;
+ $scss_compiler->setFormatter($minify ? 'scss_formatter_compressed' : 'scss_formatter');
+ $scss_compiler->setImportPaths(array(dirname(is_array($source_filename) ? array_first($source_filename) : $source_filename)));
+ if ($variables)
+ {
+ $scss_compiler->setVariables($variables);
+ }
+
+ $content = '@charset "UTF-8";' . "\n" . $scss_compiler->compile($content) . "\n";
+ $result = true;
+ }
+ catch (\Exception $e)
+ {
+ $content = '/*' . "\n" . 'Error while compiling SCSS:' . "\n" . $e->getMessage() . "\n" . '*/' . "\n";
+ $result = false;
+ }
+
+ // Save the result to the target file.
+ Storage::write($target_filename, $content);
+ return $result;
+ }
+
+ /**
+ * Minify CSS.
+ *
+ * @param string|array $source_filename
+ * @param string $target_filename
+ * @return bool
+ */
+ public static function minifyCSS($source_filename, $target_filename)
+ {
+ $minifier = new \MatthiasMullie\Minify\CSS($source_filename);
+ $content = $minifier->execute($target_filename);
+ Storage::write($target_filename, $content);
+ return strlen($content) ? true : false;
+ }
+
+ /**
+ * Minify JS.
+ *
+ * @param string|array $source_filename
+ * @param string $target_filename
+ * @return bool
+ */
+ public static function minifyJS($source_filename, $target_filename)
+ {
+ $minifier = new \MatthiasMullie\Minify\JS($source_filename);
+ $content = $minifier->execute($target_filename);
+ Storage::write($target_filename, $content);
+ return strlen($content) ? true : false;
+ }
+
+ /**
+ * CSS concatenation subroutine for compileLESS() and compileSCSS().
+ *
+ * @param string|array $source_filename
+ * @param string $target_filename
+ * @return string
+ */
+ protected static function _concatenate($source_filename, $target_filename)
+ {
+ $result = '';
+
+ if (!is_array($source_filename))
+ {
+ $source_filename = array($source_filename);
+ }
+ foreach ($source_filename as $filename)
+ {
+ $content = utf8_clean(file_get_contents($filename));
+ $path_converter = new \MatthiasMullie\PathConverter\Converter($filename, $target_filename);
+ $content = preg_replace_callback('/\burl\\(([^)]+)\\)/iU', function($matches) use ($path_converter) {
+ $url = trim($matches[1], '\'"');
+ if (!strlen($url) || $url[0] === '/')
+ {
+ return $matches[0];
+ }
+ else
+ {
+ return 'url("' . escape_dqstr($path_converter->convert($url)) . '")';
+ }
+ }, $content);
+ unset($path_converter);
+ $result .= trim($content) . "\n\n";
+ }
+
+ return $result;
+ }
+}
diff --git a/common/framework/i18n.php b/common/framework/i18n.php
new file mode 100644
index 000000000..fe3ee894b
--- /dev/null
+++ b/common/framework/i18n.php
@@ -0,0 +1,78 @@
+iso_3166_1_alpha2, $b->iso_3166_1_alpha2);
+ });
+ break;
+ case self::SORT_CODE_3:
+ uasort($result, function($a, $b) {
+ return strcmp($a->iso_3166_1_alpha3, $b->iso_3166_1_alpha3);
+ });
+ break;
+ case self::SORT_CODE_NUMERIC:
+ uasort($result, function($a, $b) {
+ return strcmp($a->iso_3166_1_numeric, $b->iso_3166_1_numeric);
+ });
+ break;
+ case self::SORT_CCTLD:
+ uasort($result, function($a, $b) {
+ return strcmp($a->cctld, $b->cctld);
+ });
+ break;
+ case self::SORT_NAME_ENGLISH:
+ uasort($result, function($a, $b) {
+ return strcmp($a->name_english, $b->name_english);
+ });
+ break;
+ case self::SORT_NAME_KOREAN:
+ uasort($result, function($a, $b) {
+ return strcmp($a->name_korean, $b->name_korean);
+ });
+ break;
+ case self::SORT_NAME_NATIVE:
+ uasort($result, function($a, $b) {
+ return strcmp($a->name_native, $b->name_native);
+ });
+ break;
+ }
+
+ return $result;
+ }
+}
diff --git a/common/framework/korea.php b/common/framework/korea.php
new file mode 100644
index 000000000..5996decb5
--- /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, array('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/common/framework/lang.php b/common/framework/lang.php
index 023ece8d7..7880be069 100644
--- a/common/framework/lang.php
+++ b/common/framework/lang.php
@@ -75,19 +75,19 @@ class Lang
if ($name === 'common')
{
- $this->loadDirectory(RX_BASEDIR . 'common/lang', 'common');
+ $this->loadDirectory(\RX_BASEDIR . 'common/lang', 'common');
}
- elseif (file_exists(RX_BASEDIR . "plugins/$name/lang"))
+ elseif (file_exists(\RX_BASEDIR . "plugins/$name/lang"))
{
- $this->loadDirectory(RX_BASEDIR . "plugins/$name/lang", $name);
+ $this->loadDirectory(\RX_BASEDIR . "plugins/$name/lang", $name);
}
- elseif (file_exists(RX_BASEDIR . "modules/$name/lang"))
+ elseif (file_exists(\RX_BASEDIR . "modules/$name/lang"))
{
- $this->loadDirectory(RX_BASEDIR . "modules/$name/lang", $name);
+ $this->loadDirectory(\RX_BASEDIR . "modules/$name/lang", $name);
}
- elseif (file_exists(RX_BASEDIR . "addons/$name/lang"))
+ elseif (file_exists(\RX_BASEDIR . "addons/$name/lang"))
{
- $this->loadDirectory(RX_BASEDIR . "addons/$name/lang", $name);
+ $this->loadDirectory(\RX_BASEDIR . "addons/$name/lang", $name);
}
}
@@ -163,7 +163,7 @@ class Lang
*/
public static function getSupportedList()
{
- return (include RX_BASEDIR . 'common/defaults/lang.php');
+ return (include \RX_BASEDIR . 'common/defaults/lang.php');
}
/**
diff --git a/common/framework/mime.php b/common/framework/mime.php
new file mode 100644
index 000000000..00488659a
--- /dev/null
+++ b/common/framework/mime.php
@@ -0,0 +1,152 @@
+ $mime)
+ {
+ if (!strncasecmp($type, $mime, strlen($type))) return $extension;
+ }
+ return false;
+ }
+
+ /**
+ * The default MIME type for unknown extensions.
+ */
+ protected static $_default = 'application/octet-stream';
+
+ /**
+ * The list of known MIME types.
+ */
+ protected static $_types = array(
+
+ // Text-based document formats.
+ 'html' => 'text/html',
+ 'htm' => 'text/html',
+ 'shtml' => 'text/html',
+ 'txt' => 'text/plain',
+ 'text' => 'text/plain',
+ 'log' => 'text/plain',
+ 'rtf' => 'text/rtf',
+ 'xml' => 'text/xml',
+ 'xsl' => 'text/xml',
+ 'css' => 'text/css',
+ 'csv' => 'text/csv',
+
+ // Binary document formats.
+ 'doc' => 'application/msword',
+ 'dot' => 'application/msword',
+ 'xls' => 'application/vnd.ms-excel',
+ 'ppt' => 'application/vnd.ms-powerpoint',
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+ 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
+ 'odt' => 'application/vnd.oasis.opendocument.text',
+ 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+ 'odp' => 'application/vnd.oasis.opendocument.presentation',
+ 'odg' => 'application/vnd.oasis.opendocument.graphics',
+ 'odb' => 'application/vnd.oasis.opendocument.database',
+ 'pdf' => 'application/pdf',
+
+ // Images.
+ 'bmp' => 'image/bmp',
+ 'gif' => 'image/gif',
+ 'jpg' => 'image/jpeg',
+ 'jpeg' => 'image/jpeg',
+ 'jpe' => 'image/jpeg',
+ 'png' => 'image/png',
+ 'svg' => 'image/svg+xml',
+ 'tiff' => 'image/tiff',
+ 'tif' => 'image/tiff',
+ 'ico' => 'image/vnd.microsoft.icon',
+
+ // Audio.
+ 'mid' => 'audio/midi',
+ 'midi' => 'audio/midi',
+ 'mpga' => 'audio/mpeg',
+ 'mp2' => 'audio/mpeg',
+ 'mp3' => 'audio/mpeg',
+ 'aif' => 'audio/x-aiff',
+ 'aiff' => 'audio/x-aiff',
+ 'ra' => 'audio/x-realaudio',
+ 'wav' => 'audio/x-wav',
+ 'ogg' => 'audio/ogg',
+
+ // Video.
+ 'avi' => 'video/x-msvideo',
+ 'flv' => 'video/x-flv',
+ 'mpeg' => 'video/mpeg',
+ 'mpg' => 'video/mpeg',
+ 'mpe' => 'video/mpeg',
+ 'mp4' => 'video/mpeg',
+ 'qt' => 'video/quicktime',
+ 'mov' => 'video/quicktime',
+ 'movie' => 'video/x-sgi-movie',
+ 'rv' => 'video/vnd.rn-realvideo',
+ 'dvi' => 'application/x-dvi',
+
+ // Other multimedia file formats.
+ 'psd' => 'application/x-photoshop',
+ 'swf' => 'application/x-shockwave-flash',
+ 'ai' => 'application/postscript',
+ 'eps' => 'application/postscript',
+ 'ps' => 'application/postscript',
+ 'mif' => 'application/vnd.mif',
+ 'xul' => 'application/vnd.mozilla.xul+xml',
+
+ // Source code formats.
+ 'phps' => 'application/x-httpd-php-source',
+ 'js' => 'application/x-javascript',
+
+ // Archives.
+ 'bz2' => 'application/x-bzip',
+ 'gz' => 'application/x-gzip',
+ 'tar' => 'application/x-tar',
+ 'tgz' => 'application/x-tar',
+ 'gtar' => 'application/x-gtar',
+ 'rar' => 'application/x-rar-compressed',
+ 'zip' => 'application/x-zip',
+
+ // RFC822 email message.
+ 'eml' => 'message/rfc822',
+ );
+}
diff --git a/common/framework/pagination.php b/common/framework/pagination.php
new file mode 100644
index 000000000..cc26906e4
--- /dev/null
+++ b/common/framework/pagination.php
@@ -0,0 +1,153 @@
+ $total_pages)
+ {
+ $last_shown = $total_pages;
+ }
+ }
+ else
+ {
+ $first_shown = $current_page - floor(($count - 1) / 2);
+ if ($first_shown < 1)
+ {
+ $first_shown = 1;
+ }
+ $last_shown = $first_shown + $count - 1;
+ if ($last_shown > $total_pages)
+ {
+ $last_shown = $total_pages;
+ $first_shown = max(1, $last_shown - $count + 1);
+ }
+ }
+
+ // Open the This is quoted text.+ +This example belongs to the test suite for Rhymix. diff --git a/tests/_data/formatter/html2markdown.source.html b/tests/_data/formatter/html2markdown.source.html new file mode 100644 index 000000000..7cbbfc29b --- /dev/null +++ b/tests/_data/formatter/html2markdown.source.html @@ -0,0 +1,13 @@ +
This is a Markdown document. +These lines belong in the same paragraph. +Markdown usually ignores single line breaks. +
+ +This is a link.
+This is an
.
+
+This is a sample text file.
+This is a paragraph with multiple lines.
+This is the third line.
+
+This is another paragraph. +
+
+This is a SPAN element that will be stripped away.
+This is a link that will be preserved.
+This is an
that will be preserved.
+
This is a Markdown document. +These lines belong in the same paragraph. +Markdown usually ignores single line breaks.
+ +This is an indented code segment.
+All Markdown variants will recognize it.
+
+
+This is a fenced code segment.
+Only Markdown Extra will recognize it.
This is a link.
+This is an
.
This is a Markdown document.
+These lines belong in the same paragraph.
+Markdown usually ignores single line breaks.
This is an indented code segment.
+All Markdown variants will recognize it.
+
+
+This is a fenced code segment.
+Only Markdown Extra will recognize it.
This is a link.
+This is an
.
This is a Markdown document.
+These lines belong in the same paragraph.
+Markdown usually ignores single line breaks.
This is an indented code segment.
+All Markdown variants will recognize it.
+
+
+This is a fenced code segment.
+Only Markdown Extra will recognize it.
+
+
+This is a link.
+This is an
.
This paragraph contains "dumb quotes" and short -- dashes.
+This paragraph contains ``backtick quotes'' and 'long' --- dashes...
diff --git a/tests/_data/formatter/smartypants.target.html b/tests/_data/formatter/smartypants.target.html new file mode 100644 index 000000000..5985b066f --- /dev/null +++ b/tests/_data/formatter/smartypants.target.html @@ -0,0 +1,2 @@ +This paragraph contains “dumb quotes” and short — dashes.
+This paragraph contains “backtick quotes” and ’long’ – dashes…
diff --git a/tests/_data/formatter/text2html.source.txt b/tests/_data/formatter/text2html.source.txt new file mode 100644 index 000000000..f4d3abac0 --- /dev/null +++ b/tests/_data/formatter/text2html.source.txt @@ -0,0 +1,9 @@ +This is a sample text file. +Some of these lines are close together. + +Other lines are separated by two newlines. + + +Or three newlines. +This is atag
that will be escaped if encoded. +Hello world! diff --git a/tests/_data/formatter/text2html.target1.html b/tests/_data/formatter/text2html.target1.html new file mode 100644 index 000000000..602a5b86b --- /dev/null +++ b/tests/_data/formatter/text2html.target1.html @@ -0,0 +1,9 @@ +This is a sample text file.This is a sample text file.
+Some of these lines are close together.
+ +Other lines are separated by two newlines.
+ + +Or three newlines.
+This is a <p>tag</p> that will be escaped if encoded.
+Hello world!
diff --git a/tests/_data/formatter/text2html.target3.html b/tests/_data/formatter/text2html.target3.html new file mode 100644 index 000000000..743928e99 --- /dev/null +++ b/tests/_data/formatter/text2html.target3.html @@ -0,0 +1,12 @@ +
+This is a sample text file.
+Some of these lines are close together.
+
+Other lines are separated by two newlines. +
+
+Or three newlines.
+This is a <p>tag</p> that will be escaped if encoded.
+Hello world!
+
{param}', false, false, 1);
diff --git a/vendor/jbbcode/jbbcode/JBBCode/examples/SmileyVisitorTest.php b/vendor/jbbcode/jbbcode/JBBCode/examples/SmileyVisitorTest.php
new file mode 100644
index 000000000..cfea90fa2
--- /dev/null
+++ b/vendor/jbbcode/jbbcode/JBBCode/examples/SmileyVisitorTest.php
@@ -0,0 +1,22 @@
+addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
+
+if (count($argv) < 2) {
+ die("Usage: " . $argv[0] . " \"bbcode string\"\n");
+}
+
+$inputText = $argv[1];
+
+$parser->parse($inputText);
+
+$smileyVisitor = new \JBBCode\visitors\SmileyVisitor();
+$parser->accept($smileyVisitor);
+
+echo $parser->getAsHTML() . "\n";
diff --git a/vendor/jbbcode/jbbcode/JBBCode/examples/TagCountingVisitorTest.php b/vendor/jbbcode/jbbcode/JBBCode/examples/TagCountingVisitorTest.php
new file mode 100644
index 000000000..8ce5d9923
--- /dev/null
+++ b/vendor/jbbcode/jbbcode/JBBCode/examples/TagCountingVisitorTest.php
@@ -0,0 +1,23 @@
+addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
+
+if (count($argv) < 3) {
+ die("Usage: " . $argv[0] . " \"bbcode string\" {param}', false, true, 2); + $bbcode = '[quote][quote][quote]wut[/quote] huh?[/quote] i don\'t know[/quote]'; + $parser->parse($bbcode); + $expectedBbcode = '[quote][quote] huh?[/quote] i don\'t know[/quote]'; + $expectedHtml = '
'; + $this->assertEquals($expectedBbcode, $parser->getAsBBCode()); + $this->assertEquals($expectedHtml, $parser->getAsHtml()); + } + +} diff --git a/vendor/jbbcode/jbbcode/JBBCode/tests/ParseContentTest.php b/vendor/jbbcode/jbbcode/JBBCode/tests/ParseContentTest.php new file mode 100644 index 000000000..1ea2c78a5 --- /dev/null +++ b/vendor/jbbcode/jbbcode/JBBCode/tests/ParseContentTest.php @@ -0,0 +1,97 @@ +addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->addBBCode('verbatim', '{param}', false, false); + + $parser->parse('[verbatim]plain text[/verbatim]'); + $this->assertEquals('plain text', $parser->getAsHtml()); + + $parser->parse('[verbatim][b]bold[/b][/verbatim]'); + $this->assertEquals('[b]bold[/b]', $parser->getAsHtml()); + + } + + public function testNoParsingWithBufferText() + { + + $parser = new JBBCode\Parser(); + $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->addBBCode('verbatim', '{param}', false, false); + + $parser->parse('buffer text[verbatim]buffer text[b]bold[/b]buffer text[/verbatim]buffer text'); + $this->assertEquals('buffer textbuffer text[b]bold[/b]buffer textbuffer text', $parser->getAsHtml()); + } + + /** + * Tests that when a tag is not closed within an unparseable tag, + * the BBCode output does not automatically close that tag (because + * the contents were not parsed). + */ + public function testUnclosedTag() + { + + $parser = new JBBCode\Parser(); + $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->addBBCode('verbatim', '{param}', false, false); + + $parser->parse('[verbatim]i wonder [b]what will happen[/verbatim]'); + $this->assertEquals('i wonder [b]what will happen', $parser->getAsHtml()); + $this->assertEquals('[verbatim]i wonder [b]what will happen[/verbatim]', $parser->getAsBBCode()); + } + + /** + * Tests that an unclosed tag with parseContent = false ends cleanly. + */ + public function testUnclosedVerbatimTag() + { + $parser = new JBBCode\Parser(); + $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->addBBCode('verbatim', '{param}', false, false); + + $parser->parse('[verbatim]yo this [b]text should not be bold[/b]'); + $this->assertEquals('yo this [b]text should not be bold[/b]', $parser->getAsHtml()); + } + + /** + * Tests a malformed closing tag for a verbatim block. + */ + public function testMalformedVerbatimClosingTag() + { + $parser = new JBBCode\Parser(); + $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->addBBCode('verbatim', '{param}', false, false); + $parser->parse('[verbatim]yo this [b]text should not be bold[/b][/verbatim'); + $this->assertEquals('yo this [b]text should not be bold[/b][/verbatim', $parser->getAsHtml()); + } + + /** + * Tests an immediate end after a verbatim. + */ + public function testVerbatimThenEof() + { + $parser = new JBBCode\Parser(); + $parser->addBBCode('verbatim', '{param}', false, false); + $parser->parse('[verbatim]'); + $this->assertEquals('', $parser->getAsHtml()); + } + +} diff --git a/vendor/jbbcode/jbbcode/JBBCode/tests/ParsingEdgeCaseTest.php b/vendor/jbbcode/jbbcode/JBBCode/tests/ParsingEdgeCaseTest.php new file mode 100644 index 000000000..a08f713ce --- /dev/null +++ b/vendor/jbbcode/jbbcode/JBBCode/tests/ParsingEdgeCaseTest.php @@ -0,0 +1,130 @@ +addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->parse($bbcode); + return $parser->getAsHtml(); + } + + /** + * Asserts that the given bbcode matches the given html when + * the bbcode is run through defaultParse. + */ + private function assertProduces($bbcode, $html) + { + $this->assertEquals($html, $this->defaultParse($bbcode)); + } + + /** + * Tests attempting to use a code that doesn't exist. + */ + public function testNonexistentCodeMalformed() + { + $this->assertProduces('[wat]', '[wat]'); + } + + /** + * Tests attempting to use a code that doesn't exist, but this + * time in a well-formed fashion. + * + * @depends testNonexistentCodeMalformed + */ + public function testNonexistentCodeWellformed() + { + $this->assertProduces('[wat]something[/wat]', '[wat]something[/wat]'); + } + + /** + * Tests a whole bunch of meaningless left brackets. + */ + public function testAllLeftBrackets() + { + $this->assertProduces('[[[[[[[[', '[[[[[[[['); + } + + /** + * Tests a whole bunch of meaningless right brackets. + */ + public function testAllRightBrackets() + { + $this->assertProduces(']]]]]', ']]]]]'); + } + + /** + * Intermixes well-formed, meaningful tags with meaningless brackets. + */ + public function testRandomBracketsInWellformedCode() + { + $this->assertProduces('[b][[][[i]heh[/i][/b]', + '[[][heh'); + } + + /** + * Tests an unclosed tag within a closed tag. + */ + public function testUnclosedWithinClosed() + { + $this->assertProduces('[url=http://jbbcode.com][b]oh yeah[/url]', + 'oh yeah'); + } + + /** + * Tests half completed opening tag. + */ + public function testHalfOpenTag() + { + $this->assertProduces('[b', '[b'); + $this->assertProduces('wut [url=http://jbbcode.com', + 'wut [url=http://jbbcode.com'); + } + + /** + * Tests half completed closing tag. + */ + public function testHalfClosingTag() + { + $this->assertProduces('[b]this should be bold[/b', + 'this should be bold[/b'); + } + + /** + * Tests lots of left brackets before the actual tag. For example: + * [[[[[[[[b]bold![/b] + */ + public function testLeftBracketsThenTag() + { + $this->assertProduces('[[[[[b]bold![/b]', + '[[[[bold!'); + } + + /** + * Tests a whitespace after left bracket. + */ + public function testWhitespaceAfterLeftBracketWhithoutTag() + { + $this->assertProduces('[ ABC ] ', + '[ ABC ] '); + } + +} diff --git a/vendor/jbbcode/jbbcode/JBBCode/tests/SimpleEvaluationTest.php b/vendor/jbbcode/jbbcode/JBBCode/tests/SimpleEvaluationTest.php new file mode 100644 index 000000000..65fb236c5 --- /dev/null +++ b/vendor/jbbcode/jbbcode/JBBCode/tests/SimpleEvaluationTest.php @@ -0,0 +1,131 @@ +addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet()); + $parser->parse($bbcode); + return $parser->getAsHtml(); + } + + /** + * Asserts that the given bbcode matches the given html when + * the bbcode is run through defaultParse. + */ + private function assertProduces($bbcode, $html) + { + $this->assertEquals($html, $this->defaultParse($bbcode)); + } + + + public function testEmptyString() + { + $this->assertProduces('', ''); + } + + public function testOneTag() + { + $this->assertProduces('[b]this is bold[/b]', 'this is bold'); + } + + public function testOneTagWithSurroundingText() + { + $this->assertProduces('buffer text [b]this is bold[/b] buffer text', + 'buffer text this is bold buffer text'); + } + + public function testMultipleTags() + { + $bbcode = <<huh?i don\'t know
options.';
+
+ $code = 'Multiple [img height="50" alt="alt text"]http://jbbcode.com/img.png[/img] options.';
+ $parser->parse($code);
+ $result = $parser->getAsHTML();
+ $this->assertEquals($expected, $result);
+
+ $code = 'Multiple [img height=50 alt="alt text"]http://jbbcode.com/img.png[/img] options.';
+ $parser->parse($code);
+ $result = $parser->getAsHTML();
+ $this->assertEquals($expected, $result);
+ }
+
+ /**
+ * @depends testCodeOptions
+ */
+ public function testOmittedOption()
+ {
+ $code = 'This doesn\'t use the url option [url]http://jbbcode.com[/url].';
+ $html = 'This doesn\'t use the url option http://jbbcode.com.';
+ $this->assertProduces($code, $html);
+ }
+
+ public function testUnclosedTag()
+ {
+ $code = 'hello [b]world';
+ $html = 'hello world';
+ $this->assertProduces($code, $html);
+ }
+
+ public function testNestingTags()
+ {
+ $code = '[url=http://jbbcode.com][b]hello [u]world[/u][/b][/url]';
+ $html = 'hello world';
+ $this->assertProduces($code, $html);
+ }
+
+ public function testBracketInTag()
+ {
+ $this->assertProduces('[b]:-[[/b]', ':-[');
+ }
+
+ public function testBracketWithSpaceInTag()
+ {
+ $this->assertProduces('[b]:-[ [/b]', ':-[ ');
+ }
+
+ public function testBracketWithTextInTag()
+ {
+ $this->assertProduces('[b]:-[ foobar[/b]', ':-[ foobar');
+ }
+
+ public function testMultibleBracketsWithTextInTag()
+ {
+ $this->assertProduces('[b]:-[ [fo[o[bar[/b]', ':-[ [fo[o[bar');
+ }
+
+}
diff --git a/vendor/jbbcode/jbbcode/JBBCode/tests/TokenizerTest.php b/vendor/jbbcode/jbbcode/JBBCode/tests/TokenizerTest.php
new file mode 100644
index 000000000..a5431d33c
--- /dev/null
+++ b/vendor/jbbcode/jbbcode/JBBCode/tests/TokenizerTest.php
@@ -0,0 +1,74 @@
+assertFalse($tokenizer->hasNext());
+ }
+
+ public function testPlainTextOnly()
+ {
+ $tokenizer = new JBBCode\Tokenizer('this is some plain text.');
+ $this->assertEquals('this is some plain text.', $tokenizer->next());
+ $this->assertEquals('this is some plain text.', $tokenizer->current());
+ $this->assertFalse($tokenizer->hasNext());
+ }
+
+ public function testStartingBracket()
+ {
+ $tokenizer = new JBBCode\Tokenizer('[this has a starting bracket.');
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals('[', $tokenizer->current());
+ $this->assertEquals('this has a starting bracket.', $tokenizer->next());
+ $this->assertEquals('this has a starting bracket.', $tokenizer->current());
+ $this->assertFalse($tokenizer->hasNext());
+ $this->assertEquals(null, $tokenizer->next());
+ }
+
+ public function testOneTag()
+ {
+ $tokenizer = new JBBCode\Tokenizer('[b]');
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals('b', $tokenizer->next());
+ $this->assertEquals(']', $tokenizer->next());
+ $this->assertFalse($tokenizer->hasNext());
+ }
+
+ public function testMatchingTags()
+ {
+ $tokenizer = new JBBCode\Tokenizer('[url]http://jbbcode.com[/url]');
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals('url', $tokenizer->next());
+ $this->assertEquals(']', $tokenizer->next());
+ $this->assertEquals('http://jbbcode.com', $tokenizer->next());
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals('/url', $tokenizer->next());
+ $this->assertEquals(']', $tokenizer->next());
+ $this->assertFalse($tokenizer->hasNext());
+ }
+
+ public function testLotsOfBrackets()
+ {
+ $tokenizer = new JBBCode\Tokenizer('[[][]][');
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals(']', $tokenizer->next());
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertEquals(']', $tokenizer->next());
+ $this->assertEquals(']', $tokenizer->next());
+ $this->assertEquals('[', $tokenizer->next());
+ $this->assertFalse($tokenizer->hasNext());
+ }
+
+}
diff --git a/vendor/jbbcode/jbbcode/JBBCode/tests/ValidatorTest.php b/vendor/jbbcode/jbbcode/JBBCode/tests/ValidatorTest.php
new file mode 100644
index 000000000..e7dacb07b
--- /dev/null
+++ b/vendor/jbbcode/jbbcode/JBBCode/tests/ValidatorTest.php
@@ -0,0 +1,151 @@
+assertFalse($urlValidator->validate('#yolo#swag'));
+ $this->assertFalse($urlValidator->validate('giehtiehwtaw352353%3'));
+ }
+
+ /**
+ * Tests a valid url directly on the UrlValidator.
+ */
+ public function testValidUrl()
+ {
+ $urlValidator = new \JBBCode\validators\UrlValidator();
+ $this->assertTrue($urlValidator->validate('http://google.com'));
+ $this->assertTrue($urlValidator->validate('http://jbbcode.com/docs'));
+ $this->assertTrue($urlValidator->validate('https://www.maps.google.com'));
+ }
+
+ /**
+ * Tests an invalid url as an option to a url bbcode.
+ *
+ * @depends testInvalidUrl
+ */
+ public function testInvalidOptionUrlBBCode()
+ {
+ $parser = new JBBCode\Parser();
+ $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
+ $parser->parse('[url=javascript:alert("HACKED!");]click me[/url]');
+ $this->assertEquals('[url=javascript:alert("HACKED!");]click me[/url]',
+ $parser->getAsHtml());
+ }
+
+ /**
+ * Tests an invalid url as the body to a url bbcode.
+ *
+ * @depends testInvalidUrl
+ */
+ public function testInvalidBodyUrlBBCode()
+ {
+ $parser = new JBBCode\Parser();
+ $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
+ $parser->parse('[url]javascript:alert("HACKED!");[/url]');
+ $this->assertEquals('[url]javascript:alert("HACKED!");[/url]', $parser->getAsHtml());
+ }
+
+ /**
+ * Tests a valid url as the body to a url bbcode.
+ *
+ * @depends testValidUrl
+ */
+ public function testValidUrlBBCode()
+ {
+ $parser = new JBBCode\Parser();
+ $parser->addCodeDefinitionSet(new JBBCode\DefaultCodeDefinitionSet());
+ $parser->parse('[url]http://jbbcode.com[/url]');
+ $this->assertEquals('http://jbbcode.com',
+ $parser->getAsHtml());
+ }
+
+ /**
+ * Tests valid english CSS color descriptions on the CssColorValidator.
+ */
+ public function testCssColorEnglish()
+ {
+ $colorValidator = new JBBCode\validators\CssColorValidator();
+ $this->assertTrue($colorValidator->validate('red'));
+ $this->assertTrue($colorValidator->validate('yellow'));
+ $this->assertTrue($colorValidator->validate('LightGoldenRodYellow'));
+ }
+
+ /**
+ * Tests valid hexadecimal CSS color values on the CssColorValidator.
+ */
+ public function testCssColorHex()
+ {
+ $colorValidator = new JBBCode\validators\CssColorValidator();
+ $this->assertTrue($colorValidator->validate('#000'));
+ $this->assertTrue($colorValidator->validate('#ff0000'));
+ $this->assertTrue($colorValidator->validate('#aaaaaa'));
+ }
+
+ /**
+ * Tests valid rgba CSS color values on the CssColorValidator.
+ */
+ public function testCssColorRgba()
+ {
+ $colorValidator = new JBBCode\validators\CssColorValidator();
+ $this->assertTrue($colorValidator->validate('rgba(255, 0, 0, 0.5)'));
+ $this->assertTrue($colorValidator->validate('rgba(50, 50, 50, 0.0)'));
+ }
+
+ /**
+ * Tests invalid CSS color values on the CssColorValidator.
+ */
+ public function testInvalidCssColor()
+ {
+ $colorValidator = new JBBCode\validators\CssColorValidator();
+ $this->assertFalse($colorValidator->validate('" onclick="javascript: alert(\"gotcha!\");'));
+ $this->assertFalse($colorValidator->validate('">