GeoIP Detection - Version 2.8.2

Version Description

This plugin version is compatible with PHP 7.2 and adapted the automatic update code.

Download this release

Release Info

Developer benjamin4
Plugin Icon 128x128 GeoIP Detection
Version 2.8.2
Comparing to
See all releases

Code changes from version 2.8.0 to 2.8.2

Files changed (41) hide show
  1. admin-ui.php +2 -2
  2. api.php +1 -1
  3. check_requirements.php +1 -1
  4. composer.lock +23 -25
  5. data-sources/auto.php +52 -14
  6. data-sources/header.php +1 -1
  7. data-sources/manual.php +1 -1
  8. data-sources/precision.php +2 -2
  9. data-sources/registry.php +1 -1
  10. filter.php +1 -1
  11. geoip-detect-lib.php +3 -3
  12. geoip-detect.php +7 -3
  13. init.php +3 -0
  14. legacy-api.php +1 -1
  15. lib/geonames/data/country-info.php +312 -62
  16. lib/geonames/data/country-names.php +1 -1
  17. lib/geonames/geonames-country-info.php +1 -1
  18. readme.txt +15 -1
  19. shortcode.php +1 -1
  20. upgrade-plugin.php +10 -1
  21. vendor/composer/ca-bundle/README.md +10 -2
  22. vendor/composer/ca-bundle/composer.json +2 -5
  23. vendor/composer/ca-bundle/res/cacert.pem +2 -311
  24. vendor/composer/ca-bundle/src/CaBundle.php +18 -1
  25. vendor/composer/installed.json +62 -64
  26. vendor/geoip2/geoip2/.php_cs +1 -0
  27. vendor/geoip2/geoip2/CHANGELOG.md +7 -0
  28. vendor/geoip2/geoip2/src/Record/Traits.php +21 -2
  29. vendor/geoip2/geoip2/src/WebService/Client.php +1 -1
  30. vendor/maxmind-db/reader/CHANGELOG.md +8 -0
  31. vendor/maxmind-db/reader/README.md +3 -4
  32. vendor/maxmind-db/reader/composer.json +6 -5
  33. vendor/maxmind-db/reader/ext/maxminddb.c +0 -1
  34. vendor/maxmind-db/reader/ext/php_maxminddb.h +1 -1
  35. vendor/maxmind-db/reader/ext/tests/001-load.phpt +5 -3
  36. vendor/maxmind-db/reader/ext/tests/002-final.phpt +13 -0
  37. vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php +37 -27
  38. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php +40 -38
  39. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php +6 -14
  40. vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php +3 -5
  41. views/lookup.php +2 -1
admin-ui.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
@@ -104,7 +104,7 @@ function geoip_detect_option_page() {
104
  if ($ret === true)
105
  $message .= __('Updated successfully.', 'geoip-detect');
106
  else
107
- $message .= __('Update failed.', 'geoip-detect') .' '. $ret;
108
 
109
  break;
110
 
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
104
  if ($ret === true)
105
  $message .= __('Updated successfully.', 'geoip-detect');
106
  else
107
+ $message .= __('File was not updated', 'geoip-detect') .': '. $ret;
108
 
109
  break;
110
 
api.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
check_requirements.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
composer.lock CHANGED
@@ -8,16 +8,16 @@
8
  "packages": [
9
  {
10
  "name": "composer/ca-bundle",
11
- "version": "1.0.8",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/composer/ca-bundle.git",
15
- "reference": "9dd73a03951357922d8aee6cc084500de93e2343"
16
  },
17
  "dist": {
18
  "type": "zip",
19
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/9dd73a03951357922d8aee6cc084500de93e2343",
20
- "reference": "9dd73a03951357922d8aee6cc084500de93e2343",
21
  "shasum": ""
22
  },
23
  "require": {
@@ -26,12 +26,9 @@
26
  "php": "^5.3.2 || ^7.0"
27
  },
28
  "require-dev": {
29
- "phpunit/phpunit": "^4.5",
30
  "psr/log": "^1.0",
31
- "symfony/process": "^2.5 || ^3.0"
32
- },
33
- "suggest": {
34
- "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+"
35
  },
36
  "type": "library",
37
  "extra": {
@@ -63,20 +60,20 @@
63
  "ssl",
64
  "tls"
65
  ],
66
- "time": "2017-09-11T07:24:36+00:00"
67
  },
68
  {
69
  "name": "geoip2/geoip2",
70
- "version": "v2.6.0",
71
  "source": {
72
  "type": "git",
73
  "url": "https://github.com/maxmind/GeoIP2-php.git",
74
- "reference": "9f6f1edf9901fed5cd692dd260333bf52091acd3"
75
  },
76
  "dist": {
77
  "type": "zip",
78
- "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/9f6f1edf9901fed5cd692dd260333bf52091acd3",
79
- "reference": "9f6f1edf9901fed5cd692dd260333bf52091acd3",
80
  "shasum": ""
81
  },
82
  "require": {
@@ -116,33 +113,34 @@
116
  "geolocation",
117
  "maxmind"
118
  ],
119
- "time": "2017-07-10T17:59:43+00:00"
120
  },
121
  {
122
  "name": "maxmind-db/reader",
123
- "version": "v1.1.3",
124
  "source": {
125
  "type": "git",
126
  "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
127
- "reference": "7eeccf61b078bb23bb07b1a151a7e5db52871e65"
128
  },
129
  "dist": {
130
  "type": "zip",
131
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/7eeccf61b078bb23bb07b1a151a7e5db52871e65",
132
- "reference": "7eeccf61b078bb23bb07b1a151a7e5db52871e65",
133
  "shasum": ""
134
  },
135
  "require": {
136
- "php": ">=5.3.1"
137
  },
138
  "require-dev": {
139
- "phpunit/phpunit": "4.2.*",
 
140
  "satooshi/php-coveralls": "1.0.*",
141
- "squizlabs/php_codesniffer": "2.*"
142
  },
143
  "suggest": {
144
- "ext-bcmath": "bcmath or gmp is requred for decoding larger integers with the pure PHP decoder",
145
- "ext-gmp": "bcmath or gmp is requred for decoding larger integers with the pure PHP decoder",
146
  "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
147
  },
148
  "type": "library",
@@ -171,7 +169,7 @@
171
  "geolocation",
172
  "maxmind"
173
  ],
174
- "time": "2017-01-19T23:49:38+00:00"
175
  },
176
  {
177
  "name": "maxmind/web-service-common",
8
  "packages": [
9
  {
10
  "name": "composer/ca-bundle",
11
+ "version": "1.1.0",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/composer/ca-bundle.git",
15
+ "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288"
16
  },
17
  "dist": {
18
  "type": "zip",
19
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288",
20
+ "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288",
21
  "shasum": ""
22
  },
23
  "require": {
26
  "php": "^5.3.2 || ^7.0"
27
  },
28
  "require-dev": {
29
+ "phpunit/phpunit": "^4.8.35",
30
  "psr/log": "^1.0",
31
+ "symfony/process": "^2.5 || ^3.0 || ^4.0"
 
 
 
32
  },
33
  "type": "library",
34
  "extra": {
60
  "ssl",
61
  "tls"
62
  ],
63
+ "time": "2017-11-29T09:37:33+00:00"
64
  },
65
  {
66
  "name": "geoip2/geoip2",
67
+ "version": "v2.7.0",
68
  "source": {
69
  "type": "git",
70
  "url": "https://github.com/maxmind/GeoIP2-php.git",
71
+ "reference": "ca9f9a244474d97eac1ef542aaced7cc944bafbe"
72
  },
73
  "dist": {
74
  "type": "zip",
75
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/ca9f9a244474d97eac1ef542aaced7cc944bafbe",
76
+ "reference": "ca9f9a244474d97eac1ef542aaced7cc944bafbe",
77
  "shasum": ""
78
  },
79
  "require": {
113
  "geolocation",
114
  "maxmind"
115
  ],
116
+ "time": "2017-10-27T19:20:22+00:00"
117
  },
118
  {
119
  "name": "maxmind-db/reader",
120
+ "version": "v1.2.0",
121
  "source": {
122
  "type": "git",
123
  "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
124
+ "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9"
125
  },
126
  "dist": {
127
  "type": "zip",
128
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/1647820dfbcb552222fb5feb3a8387e2636394c9",
129
+ "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9",
130
  "shasum": ""
131
  },
132
  "require": {
133
+ "php": ">=5.4"
134
  },
135
  "require-dev": {
136
+ "friendsofphp/php-cs-fixer": "2.*",
137
+ "phpunit/phpunit": "4.*",
138
  "satooshi/php-coveralls": "1.0.*",
139
+ "squizlabs/php_codesniffer": "3.*"
140
  },
141
  "suggest": {
142
+ "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
143
+ "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
144
  "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
145
  },
146
  "type": "library",
169
  "geolocation",
170
  "maxmind"
171
  ],
172
+ "time": "2017-10-27T19:15:33+00:00"
173
  },
174
  {
175
  "name": "maxmind/web-service-common",
data-sources/auto.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
@@ -91,34 +91,71 @@ HTML;
91
  return $filename;
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  public function maxmindUpdate()
95
  {
96
  require_once(ABSPATH.'/wp-admin/includes/file.php');
97
 
98
- $download_url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz';
 
99
  $download_url = apply_filters('geoip_detect2_download_url', $download_url);
100
 
101
  $outFile = $this->maxmindGetUploadFilename();
102
-
103
  // Download
104
- $tmpFile = download_url($download_url);
105
- if (is_wp_error($tmpFile))
 
106
  return $tmpFile->get_error_message();
 
107
 
108
  // Ungzip File
109
- $zh = gzopen($tmpFile, 'r');
110
- $h = fopen($outFile, 'w');
 
 
 
 
 
 
111
 
112
- if (!$zh)
113
  return __('Downloaded file could not be opened for reading.', 'geoip-detect');
114
- if (!$h)
115
  return sprintf(__('Database could not be written (%s).', 'geoip-detect'), $outFile);
116
 
117
- while ( ($string = gzread($zh, 4096)) != false )
118
- fwrite($h, $string, strlen($string));
119
 
120
- gzclose($zh);
121
- fclose($h);
122
 
123
  unlink($tmpFile);
124
 
@@ -153,6 +190,7 @@ HTML;
153
  public function schedule_next_cron_run() {
154
  // The Lite databases are updated on the first tuesday of each month. Maybe not at midnight, so we schedule it for the night afterwards.
155
  $next = strtotime('first tuesday of next month + 1 day');
 
156
  wp_schedule_single_event($next, 'geoipdetectupdate');
157
  }
158
 
@@ -162,7 +200,7 @@ HTML;
162
 
163
  public function deactivate()
164
  {
165
- //wp_clear_scheduled_hook('geoipdetectupdate');
166
  }
167
  }
168
 
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
91
  return $filename;
92
  }
93
 
94
+ protected function download_url($url, $modified = 0) {
95
+ // Similar to wordpress download_url, but with custom UA
96
+ $url_filename = basename( parse_url( $url, PHP_URL_PATH ) );
97
+
98
+ $tmpfname = wp_tempnam( $url_filename );
99
+ if ( ! $tmpfname )
100
+ return new \WP_Error('http_no_file', __('Could not create Temporary file.'));
101
+
102
+ $headers = array();
103
+ $headers['User-Agent'] = GEOIP_DETECT_USER_AGENT;
104
+ if ($modified) {
105
+ $headers['If-Modified-Since'] = date('r', $modified);
106
+ }
107
+
108
+ $response = wp_safe_remote_get( $url, array('timeout' => 300, 'stream' => true, 'filename' => $tmpfname, 'headers' => $headers ) );
109
+ $http_response_code = wp_remote_retrieve_response_code( $response );
110
+ if (304 === $http_response_code) {
111
+ return new \WP_Error( 'http_304', __('It has not changed since last update.', 'geoip-detect') );
112
+ }
113
+ if (is_wp_error( $response ) || 200 != $http_response_code) {
114
+ unlink($tmpfname);
115
+ $body = wp_remote_retrieve_body($response);
116
+ return new \WP_Error( 'http_404', $http_response_code . ': ' . trim( wp_remote_retrieve_response_message( $response ) ) . ' ' . $body );
117
+ }
118
+
119
+ return $tmpfname;
120
+ }
121
+
122
  public function maxmindUpdate()
123
  {
124
  require_once(ABSPATH.'/wp-admin/includes/file.php');
125
 
126
+ $download_url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz';
127
+ //$download_url = 'http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz';
128
  $download_url = apply_filters('geoip_detect2_download_url', $download_url);
129
 
130
  $outFile = $this->maxmindGetUploadFilename();
131
+ $modified = @filemtime($outFile);
132
  // Download
133
+ $tmpFile = $this->download_url($download_url, $modified);
134
+
135
+ if (is_wp_error($tmpFile)) {
136
  return $tmpFile->get_error_message();
137
+ }
138
 
139
  // Ungzip File
140
+ if (!file_exists($tmpFile))
141
+ return __('Downloaded file could not be opened for reading.', 'geoip-detect');
142
+ $dir = @scandir('phar://' . $tmpFile)[0];
143
+ if (!$dir)
144
+ return __('Downloaded file could not be opened for reading.', 'geoip-detect');
145
+
146
+ $in = fopen('phar://' . $tmpFile . '/' . $dir . '/GeoLite2-City.mmdb', 'r');
147
+ $out = fopen($outFile, 'w');
148
 
149
+ if (!$in)
150
  return __('Downloaded file could not be opened for reading.', 'geoip-detect');
151
+ if (!$out)
152
  return sprintf(__('Database could not be written (%s).', 'geoip-detect'), $outFile);
153
 
154
+ while ( ($string = fread($in, 4096)) != false )
155
+ fwrite($out, $string, strlen($string));
156
 
157
+ fclose($in);
158
+ fclose($out);
159
 
160
  unlink($tmpFile);
161
 
190
  public function schedule_next_cron_run() {
191
  // The Lite databases are updated on the first tuesday of each month. Maybe not at midnight, so we schedule it for the night afterwards.
192
  $next = strtotime('first tuesday of next month + 1 day');
193
+ $next += mt_rand(1, WEEK_IN_SECONDS);
194
  wp_schedule_single_event($next, 'geoipdetectupdate');
195
  }
196
 
200
 
201
  public function deactivate()
202
  {
203
+ wp_clear_scheduled_hook('geoipdetectupdate');
204
  }
205
  }
206
 
data-sources/header.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
data-sources/manual.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
data-sources/precision.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
@@ -37,7 +37,7 @@ class PrecisionReader extends \GeoIp2\WebService\Client implements \YellowTree\G
37
  parent::__construct($userId, $licenseKey, array('en'), $options);
38
  }
39
 
40
- public function city($ip) {
41
  $method = get_option('geoip-detect-precision_api_type', 'city');
42
 
43
  $ret = null;
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
37
  parent::__construct($userId, $licenseKey, array('en'), $options);
38
  }
39
 
40
+ public function city($ip = 'me') {
41
  $method = get_option('geoip-detect-precision_api_type', 'city');
42
 
43
  $ret = null;
data-sources/registry.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
filter.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
geoip-detect-lib.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
@@ -235,11 +235,11 @@ function _geoip_detect2_add_geonames_data($data) {
235
  if (is_null($countryInfo))
236
  $countryInfo = new \YellowTree\GeoipDetect\Geonames\CountryInformation;
237
 
238
- if (!empty($data['country']['iso_code']) && empty($data['country']['names']['de'])) {
239
  $geonamesData = $countryInfo->getInformationAboutCountry($data['country']['iso_code']);
240
  $data = array_replace_recursive($geonamesData, $data);
241
  }
242
-
243
  return $data;
244
  }
245
  add_filter('geoip_detect2_record_data', '_geoip_detect2_add_geonames_data');
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
235
  if (is_null($countryInfo))
236
  $countryInfo = new \YellowTree\GeoipDetect\Geonames\CountryInformation;
237
 
238
+ if (!empty($data['country']['iso_code'])) {
239
  $geonamesData = $countryInfo->getInformationAboutCountry($data['country']['iso_code']);
240
  $data = array_replace_recursive($geonamesData, $data);
241
  }
242
+
243
  return $data;
244
  }
245
  add_filter('geoip_detect2_record_data', '_geoip_detect2_add_geonames_data');
geoip-detect.php CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://www.yellowtree.de
5
  Description: Retrieving Geo-Information using the Maxmind GeoIP (Lite) Database.
6
  Author: Yellow Tree (Benjamin Pick)
7
  Author URI: http://www.yellowtree.de
8
- Version: 2.8.0
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
  Text Domain: geoip-detect
@@ -16,10 +16,10 @@ Requires WP: 3.5
16
  Requires PHP: 5.4
17
  */
18
 
19
- define('GEOIP_DETECT_VERSION', '2.8.0');
20
 
21
  /*
22
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
23
  Author: Benjamin Pick (info@yellowtree.de)
24
 
25
  This program is free software; you can redistribute it and/or modify
@@ -76,20 +76,24 @@ include_once(GEOIP_PLUGIN_DIR . '/data-sources/precision.php');
76
  include_once(GEOIP_PLUGIN_DIR . '/data-sources/header.php');
77
 
78
  // You can define these constants in your theme/plugin if you like.
 
79
  /**
80
  * Set to TRUE if the plugin should never auto-update the Maxmind City Lite database.
81
  */
82
  //define('GEOIP_DETECT_AUTO_UPDATE_DEACTIVATED', true);
 
83
  /**
84
  * How long the external IP of the server is cached.
85
  * This is probably only used in dev cases, so per default relatively low.
86
  */
87
  //define('GEOIP_DETECT_IP_CACHE_TIME', 2 * HOUR_IN_SECONDS);
 
88
  /**
89
  * How long the external IP of the server is cached, if no IP was found.
90
  * Default: the same as GEOIP_DETECT_IP_CACHE_TIME
91
  */
92
  //define('GEOIP_DETECT_IP_EMPTY_CACHE_TIME', 2 * HOUR_IN_SECONDS);
 
93
  /**
94
  * How long the data of the IP is cached. This applies to the Web-APIs (Maxmind Precision and HostIP.info)
95
  * Only successful lookups will be cached.
5
  Description: Retrieving Geo-Information using the Maxmind GeoIP (Lite) Database.
6
  Author: Yellow Tree (Benjamin Pick)
7
  Author URI: http://www.yellowtree.de
8
+ Version: 2.8.2
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
11
  Text Domain: geoip-detect
16
  Requires PHP: 5.4
17
  */
18
 
19
+ define('GEOIP_DETECT_VERSION', '2.8.2');
20
 
21
  /*
22
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
23
  Author: Benjamin Pick (info@yellowtree.de)
24
 
25
  This program is free software; you can redistribute it and/or modify
76
  include_once(GEOIP_PLUGIN_DIR . '/data-sources/header.php');
77
 
78
  // You can define these constants in your theme/plugin if you like.
79
+
80
  /**
81
  * Set to TRUE if the plugin should never auto-update the Maxmind City Lite database.
82
  */
83
  //define('GEOIP_DETECT_AUTO_UPDATE_DEACTIVATED', true);
84
+
85
  /**
86
  * How long the external IP of the server is cached.
87
  * This is probably only used in dev cases, so per default relatively low.
88
  */
89
  //define('GEOIP_DETECT_IP_CACHE_TIME', 2 * HOUR_IN_SECONDS);
90
+
91
  /**
92
  * How long the external IP of the server is cached, if no IP was found.
93
  * Default: the same as GEOIP_DETECT_IP_CACHE_TIME
94
  */
95
  //define('GEOIP_DETECT_IP_EMPTY_CACHE_TIME', 2 * HOUR_IN_SECONDS);
96
+
97
  /**
98
  * How long the data of the IP is cached. This applies to the Web-APIs (Maxmind Precision and HostIP.info)
99
  * Only successful lookups will be cached.
init.php CHANGED
@@ -14,6 +14,9 @@ function geoip_detect_defines() {
14
 
15
  if (!defined('GEOIP_DETECT_IPV6_SUPPORTED'))
16
  define('GEOIP_DETECT_IPV6_SUPPORTED', defined('AF_INET6'));
 
 
 
17
  }
18
  add_action('plugins_loaded', 'geoip_detect_defines');
19
 
14
 
15
  if (!defined('GEOIP_DETECT_IPV6_SUPPORTED'))
16
  define('GEOIP_DETECT_IPV6_SUPPORTED', defined('AF_INET6'));
17
+
18
+ if (!defined('GEOIP_DETECT_USER_AGENT'))
19
+ define('GEOIP_DETECT_USER_AGENT', 'GeoIP Detect ' . GEOIP_DETECT_VERSION);
20
  }
21
  add_action('plugins_loaded', 'geoip_detect_defines');
22
 
legacy-api.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
lib/geonames/data/country-info.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- // Generated at Mon, 13 Mar 2017 12:14:10 +0100
3
  return array (
4
  'countries' =>
5
  array (
@@ -8,6 +8,7 @@ return array (
8
  'country' =>
9
  array (
10
  'iso_code' => 'AD',
 
11
  'geoname_id' => 3041565,
12
  'names' =>
13
  array (
@@ -34,6 +35,7 @@ return array (
34
  'country' =>
35
  array (
36
  'iso_code' => 'AE',
 
37
  'geoname_id' => 290557,
38
  'names' =>
39
  array (
@@ -60,6 +62,7 @@ return array (
60
  'country' =>
61
  array (
62
  'iso_code' => 'AF',
 
63
  'geoname_id' => 1149361,
64
  'names' =>
65
  array (
@@ -86,6 +89,7 @@ return array (
86
  'country' =>
87
  array (
88
  'iso_code' => 'AG',
 
89
  'geoname_id' => 3576396,
90
  'names' =>
91
  array (
@@ -112,6 +116,7 @@ return array (
112
  'country' =>
113
  array (
114
  'iso_code' => 'AI',
 
115
  'geoname_id' => 3573511,
116
  'names' =>
117
  array (
@@ -138,6 +143,7 @@ return array (
138
  'country' =>
139
  array (
140
  'iso_code' => 'AL',
 
141
  'geoname_id' => 783754,
142
  'names' =>
143
  array (
@@ -164,6 +170,7 @@ return array (
164
  'country' =>
165
  array (
166
  'iso_code' => 'AM',
 
167
  'geoname_id' => 174982,
168
  'names' =>
169
  array (
@@ -181,8 +188,8 @@ return array (
181
  'continent' => 'AS',
182
  'location' =>
183
  array (
184
- 'latitude' => 40.066181,
185
- 'longitude' => 45.111107522579999,
186
  ),
187
  ),
188
  'AO' =>
@@ -190,6 +197,7 @@ return array (
190
  'country' =>
191
  array (
192
  'iso_code' => 'AO',
 
193
  'geoname_id' => 3351879,
194
  'names' =>
195
  array (
@@ -216,6 +224,7 @@ return array (
216
  'country' =>
217
  array (
218
  'iso_code' => 'AQ',
 
219
  'geoname_id' => 6697173,
220
  'names' =>
221
  array (
@@ -242,6 +251,7 @@ return array (
242
  'country' =>
243
  array (
244
  'iso_code' => 'AR',
 
245
  'geoname_id' => 3865483,
246
  'names' =>
247
  array (
@@ -259,8 +269,8 @@ return array (
259
  'continent' => 'SA',
260
  'location' =>
261
  array (
262
- 'latitude' => -38.421295499999999,
263
- 'longitude' => -63.587402500000003,
264
  ),
265
  ),
266
  'AS' =>
@@ -268,6 +278,7 @@ return array (
268
  'country' =>
269
  array (
270
  'iso_code' => 'AS',
 
271
  'geoname_id' => 5880801,
272
  'names' =>
273
  array (
@@ -294,6 +305,7 @@ return array (
294
  'country' =>
295
  array (
296
  'iso_code' => 'AT',
 
297
  'geoname_id' => 2782113,
298
  'names' =>
299
  array (
@@ -320,6 +332,7 @@ return array (
320
  'country' =>
321
  array (
322
  'iso_code' => 'AU',
 
323
  'geoname_id' => 2077456,
324
  'names' =>
325
  array (
@@ -346,6 +359,7 @@ return array (
346
  'country' =>
347
  array (
348
  'iso_code' => 'AW',
 
349
  'geoname_id' => 3577279,
350
  'names' =>
351
  array (
@@ -372,6 +386,7 @@ return array (
372
  'country' =>
373
  array (
374
  'iso_code' => 'AX',
 
375
  'geoname_id' => 661882,
376
  'names' =>
377
  array (
@@ -398,6 +413,7 @@ return array (
398
  'country' =>
399
  array (
400
  'iso_code' => 'AZ',
 
401
  'geoname_id' => 587116,
402
  'names' =>
403
  array (
@@ -424,6 +440,7 @@ return array (
424
  'country' =>
425
  array (
426
  'iso_code' => 'BA',
 
427
  'geoname_id' => 3277605,
428
  'names' =>
429
  array (
@@ -450,6 +467,7 @@ return array (
450
  'country' =>
451
  array (
452
  'iso_code' => 'BB',
 
453
  'geoname_id' => 3374084,
454
  'names' =>
455
  array (
@@ -476,6 +494,7 @@ return array (
476
  'country' =>
477
  array (
478
  'iso_code' => 'BD',
 
479
  'geoname_id' => 1210997,
480
  'names' =>
481
  array (
@@ -502,6 +521,7 @@ return array (
502
  'country' =>
503
  array (
504
  'iso_code' => 'BE',
 
505
  'geoname_id' => 2802361,
506
  'names' =>
507
  array (
@@ -519,8 +539,8 @@ return array (
519
  'continent' => 'EU',
520
  'location' =>
521
  array (
522
- 'latitude' => 50.499527,
523
- 'longitude' => 4.4754024999999995,
524
  ),
525
  ),
526
  'BF' =>
@@ -528,6 +548,7 @@ return array (
528
  'country' =>
529
  array (
530
  'iso_code' => 'BF',
 
531
  'geoname_id' => 2361809,
532
  'names' =>
533
  array (
@@ -554,6 +575,7 @@ return array (
554
  'country' =>
555
  array (
556
  'iso_code' => 'BG',
 
557
  'geoname_id' => 732800,
558
  'names' =>
559
  array (
@@ -580,6 +602,7 @@ return array (
580
  'country' =>
581
  array (
582
  'iso_code' => 'BH',
 
583
  'geoname_id' => 290291,
584
  'names' =>
585
  array (
@@ -606,6 +629,7 @@ return array (
606
  'country' =>
607
  array (
608
  'iso_code' => 'BI',
 
609
  'geoname_id' => 433561,
610
  'names' =>
611
  array (
@@ -632,6 +656,7 @@ return array (
632
  'country' =>
633
  array (
634
  'iso_code' => 'BJ',
 
635
  'geoname_id' => 2395170,
636
  'names' =>
637
  array (
@@ -658,6 +683,7 @@ return array (
658
  'country' =>
659
  array (
660
  'iso_code' => 'BL',
 
661
  'geoname_id' => 3578476,
662
  'names' =>
663
  array (
@@ -684,6 +710,7 @@ return array (
684
  'country' =>
685
  array (
686
  'iso_code' => 'BM',
 
687
  'geoname_id' => 3573345,
688
  'names' =>
689
  array (
@@ -710,6 +737,7 @@ return array (
710
  'country' =>
711
  array (
712
  'iso_code' => 'BN',
 
713
  'geoname_id' => 1820814,
714
  'names' =>
715
  array (
@@ -736,6 +764,7 @@ return array (
736
  'country' =>
737
  array (
738
  'iso_code' => 'BO',
 
739
  'geoname_id' => 3923057,
740
  'names' =>
741
  array (
@@ -762,6 +791,7 @@ return array (
762
  'country' =>
763
  array (
764
  'iso_code' => 'BQ',
 
765
  'geoname_id' => 7626844,
766
  'names' =>
767
  array (
@@ -788,6 +818,7 @@ return array (
788
  'country' =>
789
  array (
790
  'iso_code' => 'BR',
 
791
  'geoname_id' => 3469034,
792
  'names' =>
793
  array (
@@ -814,6 +845,7 @@ return array (
814
  'country' =>
815
  array (
816
  'iso_code' => 'BS',
 
817
  'geoname_id' => 3572887,
818
  'names' =>
819
  array (
@@ -840,6 +872,7 @@ return array (
840
  'country' =>
841
  array (
842
  'iso_code' => 'BT',
 
843
  'geoname_id' => 1252634,
844
  'names' =>
845
  array (
@@ -857,8 +890,8 @@ return array (
857
  'continent' => 'AS',
858
  'location' =>
859
  array (
860
- 'latitude' => 27.515709000000001,
861
- 'longitude' => 90.442455499999994,
862
  ),
863
  ),
864
  'BV' =>
@@ -866,6 +899,7 @@ return array (
866
  'country' =>
867
  array (
868
  'iso_code' => 'BV',
 
869
  'geoname_id' => 3371123,
870
  'names' =>
871
  array (
@@ -892,6 +926,7 @@ return array (
892
  'country' =>
893
  array (
894
  'iso_code' => 'BW',
 
895
  'geoname_id' => 933860,
896
  'names' =>
897
  array (
@@ -918,6 +953,7 @@ return array (
918
  'country' =>
919
  array (
920
  'iso_code' => 'BY',
 
921
  'geoname_id' => 630336,
922
  'names' =>
923
  array (
@@ -944,6 +980,7 @@ return array (
944
  'country' =>
945
  array (
946
  'iso_code' => 'BZ',
 
947
  'geoname_id' => 3582678,
948
  'names' =>
949
  array (
@@ -970,6 +1007,7 @@ return array (
970
  'country' =>
971
  array (
972
  'iso_code' => 'CA',
 
973
  'geoname_id' => 6251999,
974
  'names' =>
975
  array (
@@ -996,6 +1034,7 @@ return array (
996
  'country' =>
997
  array (
998
  'iso_code' => 'CC',
 
999
  'geoname_id' => 1547376,
1000
  'names' =>
1001
  array (
@@ -1022,6 +1061,7 @@ return array (
1022
  'country' =>
1023
  array (
1024
  'iso_code' => 'CD',
 
1025
  'geoname_id' => 203312,
1026
  'names' =>
1027
  array (
@@ -1048,6 +1088,7 @@ return array (
1048
  'country' =>
1049
  array (
1050
  'iso_code' => 'CF',
 
1051
  'geoname_id' => 239880,
1052
  'names' =>
1053
  array (
@@ -1074,6 +1115,7 @@ return array (
1074
  'country' =>
1075
  array (
1076
  'iso_code' => 'CG',
 
1077
  'geoname_id' => 2260494,
1078
  'names' =>
1079
  array (
@@ -1100,6 +1142,7 @@ return array (
1100
  'country' =>
1101
  array (
1102
  'iso_code' => 'CH',
 
1103
  'geoname_id' => 2658434,
1104
  'names' =>
1105
  array (
@@ -1126,6 +1169,7 @@ return array (
1126
  'country' =>
1127
  array (
1128
  'iso_code' => 'CI',
 
1129
  'geoname_id' => 2287781,
1130
  'names' =>
1131
  array (
@@ -1152,6 +1196,7 @@ return array (
1152
  'country' =>
1153
  array (
1154
  'iso_code' => 'CK',
 
1155
  'geoname_id' => 1899402,
1156
  'names' =>
1157
  array (
@@ -1178,6 +1223,7 @@ return array (
1178
  'country' =>
1179
  array (
1180
  'iso_code' => 'CL',
 
1181
  'geoname_id' => 3895114,
1182
  'names' =>
1183
  array (
@@ -1195,8 +1241,8 @@ return array (
1195
  'continent' => 'SA',
1196
  'location' =>
1197
  array (
1198
- 'latitude' => -36.71658775546085,
1199
- 'longitude' => -73.601703999999998,
1200
  ),
1201
  ),
1202
  'CM' =>
@@ -1204,6 +1250,7 @@ return array (
1204
  'country' =>
1205
  array (
1206
  'iso_code' => 'CM',
 
1207
  'geoname_id' => 2233387,
1208
  'names' =>
1209
  array (
@@ -1230,6 +1277,7 @@ return array (
1230
  'country' =>
1231
  array (
1232
  'iso_code' => 'CN',
 
1233
  'geoname_id' => 1814991,
1234
  'names' =>
1235
  array (
@@ -1256,6 +1304,7 @@ return array (
1256
  'country' =>
1257
  array (
1258
  'iso_code' => 'CO',
 
1259
  'geoname_id' => 3686110,
1260
  'names' =>
1261
  array (
@@ -1273,8 +1322,8 @@ return array (
1273
  'continent' => 'SA',
1274
  'location' =>
1275
  array (
1276
- 'latitude' => 4.5773165000000002,
1277
- 'longitude' => -74.298972999999989,
1278
  ),
1279
  ),
1280
  'CR' =>
@@ -1282,6 +1331,7 @@ return array (
1282
  'country' =>
1283
  array (
1284
  'iso_code' => 'CR',
 
1285
  'geoname_id' => 3624060,
1286
  'names' =>
1287
  array (
@@ -1299,8 +1349,8 @@ return array (
1299
  'continent' => 'NA',
1300
  'location' =>
1301
  array (
1302
- 'latitude' => 9.6248970000000007,
1303
- 'longitude' => -84.253307500000005,
1304
  ),
1305
  ),
1306
  'CU' =>
@@ -1308,6 +1358,7 @@ return array (
1308
  'country' =>
1309
  array (
1310
  'iso_code' => 'CU',
 
1311
  'geoname_id' => 3562981,
1312
  'names' =>
1313
  array (
@@ -1334,6 +1385,7 @@ return array (
1334
  'country' =>
1335
  array (
1336
  'iso_code' => 'CV',
 
1337
  'geoname_id' => 3374766,
1338
  'names' =>
1339
  array (
@@ -1360,6 +1412,7 @@ return array (
1360
  'country' =>
1361
  array (
1362
  'iso_code' => 'CW',
 
1363
  'geoname_id' => 7626836,
1364
  'names' =>
1365
  array (
@@ -1386,6 +1439,7 @@ return array (
1386
  'country' =>
1387
  array (
1388
  'iso_code' => 'CX',
 
1389
  'geoname_id' => 2078138,
1390
  'names' =>
1391
  array (
@@ -1400,7 +1454,7 @@ return array (
1400
  'zh-CN' => '圣诞岛',
1401
  ),
1402
  ),
1403
- 'continent' => 'AS',
1404
  'location' =>
1405
  array (
1406
  'latitude' => -10.49141950325,
@@ -1412,6 +1466,7 @@ return array (
1412
  'country' =>
1413
  array (
1414
  'iso_code' => 'CY',
 
1415
  'geoname_id' => 146669,
1416
  'names' =>
1417
  array (
@@ -1438,6 +1493,7 @@ return array (
1438
  'country' =>
1439
  array (
1440
  'iso_code' => 'CZ',
 
1441
  'geoname_id' => 3077311,
1442
  'names' =>
1443
  array (
@@ -1464,6 +1520,7 @@ return array (
1464
  'country' =>
1465
  array (
1466
  'iso_code' => 'DE',
 
1467
  'geoname_id' => 2921044,
1468
  'names' =>
1469
  array (
@@ -1481,8 +1538,8 @@ return array (
1481
  'continent' => 'EU',
1482
  'location' =>
1483
  array (
1484
- 'latitude' => 51.090735557380697,
1485
- 'longitude' => 10.454033001170981,
1486
  ),
1487
  ),
1488
  'DJ' =>
@@ -1490,6 +1547,7 @@ return array (
1490
  'country' =>
1491
  array (
1492
  'iso_code' => 'DJ',
 
1493
  'geoname_id' => 223816,
1494
  'names' =>
1495
  array (
@@ -1516,6 +1574,7 @@ return array (
1516
  'country' =>
1517
  array (
1518
  'iso_code' => 'DK',
 
1519
  'geoname_id' => 2623032,
1520
  'names' =>
1521
  array (
@@ -1542,6 +1601,7 @@ return array (
1542
  'country' =>
1543
  array (
1544
  'iso_code' => 'DM',
 
1545
  'geoname_id' => 3575830,
1546
  'names' =>
1547
  array (
@@ -1568,6 +1628,7 @@ return array (
1568
  'country' =>
1569
  array (
1570
  'iso_code' => 'DO',
 
1571
  'geoname_id' => 3508796,
1572
  'names' =>
1573
  array (
@@ -1585,8 +1646,8 @@ return array (
1585
  'continent' => 'NA',
1586
  'location' =>
1587
  array (
1588
- 'latitude' => 18.736508999999998,
1589
- 'longitude' => -70.1617435,
1590
  ),
1591
  ),
1592
  'DZ' =>
@@ -1594,6 +1655,7 @@ return array (
1594
  'country' =>
1595
  array (
1596
  'iso_code' => 'DZ',
 
1597
  'geoname_id' => 2589581,
1598
  'names' =>
1599
  array (
@@ -1620,6 +1682,7 @@ return array (
1620
  'country' =>
1621
  array (
1622
  'iso_code' => 'EC',
 
1623
  'geoname_id' => 3658394,
1624
  'names' =>
1625
  array (
@@ -1646,6 +1709,7 @@ return array (
1646
  'country' =>
1647
  array (
1648
  'iso_code' => 'EE',
 
1649
  'geoname_id' => 453733,
1650
  'names' =>
1651
  array (
@@ -1672,6 +1736,7 @@ return array (
1672
  'country' =>
1673
  array (
1674
  'iso_code' => 'EG',
 
1675
  'geoname_id' => 357994,
1676
  'names' =>
1677
  array (
@@ -1698,6 +1763,7 @@ return array (
1698
  'country' =>
1699
  array (
1700
  'iso_code' => 'EH',
 
1701
  'geoname_id' => 2461445,
1702
  'names' =>
1703
  array (
@@ -1724,6 +1790,7 @@ return array (
1724
  'country' =>
1725
  array (
1726
  'iso_code' => 'ER',
 
1727
  'geoname_id' => 338010,
1728
  'names' =>
1729
  array (
@@ -1750,6 +1817,7 @@ return array (
1750
  'country' =>
1751
  array (
1752
  'iso_code' => 'ES',
 
1753
  'geoname_id' => 2510769,
1754
  'names' =>
1755
  array (
@@ -1776,6 +1844,7 @@ return array (
1776
  'country' =>
1777
  array (
1778
  'iso_code' => 'ET',
 
1779
  'geoname_id' => 337996,
1780
  'names' =>
1781
  array (
@@ -1802,6 +1871,7 @@ return array (
1802
  'country' =>
1803
  array (
1804
  'iso_code' => 'FI',
 
1805
  'geoname_id' => 660013,
1806
  'names' =>
1807
  array (
@@ -1828,6 +1898,7 @@ return array (
1828
  'country' =>
1829
  array (
1830
  'iso_code' => 'FJ',
 
1831
  'geoname_id' => 2205218,
1832
  'names' =>
1833
  array (
@@ -1854,6 +1925,7 @@ return array (
1854
  'country' =>
1855
  array (
1856
  'iso_code' => 'FK',
 
1857
  'geoname_id' => 3474414,
1858
  'names' =>
1859
  array (
@@ -1871,8 +1943,8 @@ return array (
1871
  'continent' => 'SA',
1872
  'location' =>
1873
  array (
1874
- 'latitude' => -51.800581000000001,
1875
- 'longitude' => -59.528838999999998,
1876
  ),
1877
  ),
1878
  'FM' =>
@@ -1880,6 +1952,7 @@ return array (
1880
  'country' =>
1881
  array (
1882
  'iso_code' => 'FM',
 
1883
  'geoname_id' => 2081918,
1884
  'names' =>
1885
  array (
@@ -1906,6 +1979,7 @@ return array (
1906
  'country' =>
1907
  array (
1908
  'iso_code' => 'FO',
 
1909
  'geoname_id' => 2622320,
1910
  'names' =>
1911
  array (
@@ -1932,6 +2006,7 @@ return array (
1932
  'country' =>
1933
  array (
1934
  'iso_code' => 'FR',
 
1935
  'geoname_id' => 3017382,
1936
  'names' =>
1937
  array (
@@ -1958,6 +2033,7 @@ return array (
1958
  'country' =>
1959
  array (
1960
  'iso_code' => 'GA',
 
1961
  'geoname_id' => 2400553,
1962
  'names' =>
1963
  array (
@@ -1984,6 +2060,7 @@ return array (
1984
  'country' =>
1985
  array (
1986
  'iso_code' => 'GB',
 
1987
  'geoname_id' => 2635167,
1988
  'names' =>
1989
  array (
@@ -2001,8 +2078,8 @@ return array (
2001
  'continent' => 'EU',
2002
  'location' =>
2003
  array (
2004
- 'latitude' => 54.633221000000006,
2005
- 'longitude' => -3.4322774999999996,
2006
  ),
2007
  ),
2008
  'GD' =>
@@ -2010,6 +2087,7 @@ return array (
2010
  'country' =>
2011
  array (
2012
  'iso_code' => 'GD',
 
2013
  'geoname_id' => 3580239,
2014
  'names' =>
2015
  array (
@@ -2036,6 +2114,7 @@ return array (
2036
  'country' =>
2037
  array (
2038
  'iso_code' => 'GE',
 
2039
  'geoname_id' => 614540,
2040
  'names' =>
2041
  array (
@@ -2062,6 +2141,7 @@ return array (
2062
  'country' =>
2063
  array (
2064
  'iso_code' => 'GF',
 
2065
  'geoname_id' => 3381670,
2066
  'names' =>
2067
  array (
@@ -2088,6 +2168,7 @@ return array (
2088
  'country' =>
2089
  array (
2090
  'iso_code' => 'GG',
 
2091
  'geoname_id' => 3042362,
2092
  'names' =>
2093
  array (
@@ -2114,6 +2195,7 @@ return array (
2114
  'country' =>
2115
  array (
2116
  'iso_code' => 'GH',
 
2117
  'geoname_id' => 2300660,
2118
  'names' =>
2119
  array (
@@ -2140,6 +2222,7 @@ return array (
2140
  'country' =>
2141
  array (
2142
  'iso_code' => 'GI',
 
2143
  'geoname_id' => 2411586,
2144
  'names' =>
2145
  array (
@@ -2166,6 +2249,7 @@ return array (
2166
  'country' =>
2167
  array (
2168
  'iso_code' => 'GL',
 
2169
  'geoname_id' => 3425505,
2170
  'names' =>
2171
  array (
@@ -2192,6 +2276,7 @@ return array (
2192
  'country' =>
2193
  array (
2194
  'iso_code' => 'GM',
 
2195
  'geoname_id' => 2413451,
2196
  'names' =>
2197
  array (
@@ -2218,6 +2303,7 @@ return array (
2218
  'country' =>
2219
  array (
2220
  'iso_code' => 'GN',
 
2221
  'geoname_id' => 2420477,
2222
  'names' =>
2223
  array (
@@ -2244,6 +2330,7 @@ return array (
2244
  'country' =>
2245
  array (
2246
  'iso_code' => 'GP',
 
2247
  'geoname_id' => 3579143,
2248
  'names' =>
2249
  array (
@@ -2270,6 +2357,7 @@ return array (
2270
  'country' =>
2271
  array (
2272
  'iso_code' => 'GQ',
 
2273
  'geoname_id' => 2309096,
2274
  'names' =>
2275
  array (
@@ -2296,6 +2384,7 @@ return array (
2296
  'country' =>
2297
  array (
2298
  'iso_code' => 'GR',
 
2299
  'geoname_id' => 390903,
2300
  'names' =>
2301
  array (
@@ -2322,6 +2411,7 @@ return array (
2322
  'country' =>
2323
  array (
2324
  'iso_code' => 'GS',
 
2325
  'geoname_id' => 3474415,
2326
  'names' =>
2327
  array (
@@ -2339,8 +2429,8 @@ return array (
2339
  'continent' => 'AN',
2340
  'location' =>
2341
  array (
2342
- 'latitude' => -56.724862999999999,
2343
- 'longitude' => -32.1252505,
2344
  ),
2345
  ),
2346
  'GT' =>
@@ -2348,6 +2438,7 @@ return array (
2348
  'country' =>
2349
  array (
2350
  'iso_code' => 'GT',
 
2351
  'geoname_id' => 3595528,
2352
  'names' =>
2353
  array (
@@ -2374,6 +2465,7 @@ return array (
2374
  'country' =>
2375
  array (
2376
  'iso_code' => 'GU',
 
2377
  'geoname_id' => 4043988,
2378
  'names' =>
2379
  array (
@@ -2400,6 +2492,7 @@ return array (
2400
  'country' =>
2401
  array (
2402
  'iso_code' => 'GW',
 
2403
  'geoname_id' => 2372248,
2404
  'names' =>
2405
  array (
@@ -2426,6 +2519,7 @@ return array (
2426
  'country' =>
2427
  array (
2428
  'iso_code' => 'GY',
 
2429
  'geoname_id' => 3378535,
2430
  'names' =>
2431
  array (
@@ -2452,6 +2546,7 @@ return array (
2452
  'country' =>
2453
  array (
2454
  'iso_code' => 'HK',
 
2455
  'geoname_id' => 1819730,
2456
  'names' =>
2457
  array (
@@ -2478,6 +2573,7 @@ return array (
2478
  'country' =>
2479
  array (
2480
  'iso_code' => 'HM',
 
2481
  'geoname_id' => 1547314,
2482
  'names' =>
2483
  array (
@@ -2504,6 +2600,7 @@ return array (
2504
  'country' =>
2505
  array (
2506
  'iso_code' => 'HN',
 
2507
  'geoname_id' => 3608932,
2508
  'names' =>
2509
  array (
@@ -2530,6 +2627,7 @@ return array (
2530
  'country' =>
2531
  array (
2532
  'iso_code' => 'HR',
 
2533
  'geoname_id' => 3202326,
2534
  'names' =>
2535
  array (
@@ -2556,6 +2654,7 @@ return array (
2556
  'country' =>
2557
  array (
2558
  'iso_code' => 'HT',
 
2559
  'geoname_id' => 3723988,
2560
  'names' =>
2561
  array (
@@ -2582,6 +2681,7 @@ return array (
2582
  'country' =>
2583
  array (
2584
  'iso_code' => 'HU',
 
2585
  'geoname_id' => 719819,
2586
  'names' =>
2587
  array (
@@ -2608,6 +2708,7 @@ return array (
2608
  'country' =>
2609
  array (
2610
  'iso_code' => 'ID',
 
2611
  'geoname_id' => 1643084,
2612
  'names' =>
2613
  array (
@@ -2634,6 +2735,7 @@ return array (
2634
  'country' =>
2635
  array (
2636
  'iso_code' => 'IE',
 
2637
  'geoname_id' => 2963597,
2638
  'names' =>
2639
  array (
@@ -2651,8 +2753,8 @@ return array (
2651
  'continent' => 'EU',
2652
  'location' =>
2653
  array (
2654
- 'latitude' => 53.419750499999999,
2655
- 'longitude' => -8.2404724999999992,
2656
  ),
2657
  ),
2658
  'IL' =>
@@ -2660,6 +2762,7 @@ return array (
2660
  'country' =>
2661
  array (
2662
  'iso_code' => 'IL',
 
2663
  'geoname_id' => 294640,
2664
  'names' =>
2665
  array (
@@ -2686,6 +2789,7 @@ return array (
2686
  'country' =>
2687
  array (
2688
  'iso_code' => 'IM',
 
2689
  'geoname_id' => 3042225,
2690
  'names' =>
2691
  array (
@@ -2712,6 +2816,7 @@ return array (
2712
  'country' =>
2713
  array (
2714
  'iso_code' => 'IN',
 
2715
  'geoname_id' => 1269750,
2716
  'names' =>
2717
  array (
@@ -2729,8 +2834,8 @@ return array (
2729
  'continent' => 'AS',
2730
  'location' =>
2731
  array (
2732
- 'latitude' => 21.125681,
2733
- 'longitude' => 82.794997999999993,
2734
  ),
2735
  ),
2736
  'IO' =>
@@ -2738,6 +2843,7 @@ return array (
2738
  'country' =>
2739
  array (
2740
  'iso_code' => 'IO',
 
2741
  'geoname_id' => 1282588,
2742
  'names' =>
2743
  array (
@@ -2764,6 +2870,7 @@ return array (
2764
  'country' =>
2765
  array (
2766
  'iso_code' => 'IQ',
 
2767
  'geoname_id' => 99237,
2768
  'names' =>
2769
  array (
@@ -2790,6 +2897,7 @@ return array (
2790
  'country' =>
2791
  array (
2792
  'iso_code' => 'IR',
 
2793
  'geoname_id' => 130758,
2794
  'names' =>
2795
  array (
@@ -2816,6 +2924,7 @@ return array (
2816
  'country' =>
2817
  array (
2818
  'iso_code' => 'IS',
 
2819
  'geoname_id' => 2629691,
2820
  'names' =>
2821
  array (
@@ -2833,8 +2942,8 @@ return array (
2833
  'continent' => 'EU',
2834
  'location' =>
2835
  array (
2836
- 'latitude' => 64.963941500000004,
2837
- 'longitude' => -19.021169499999999,
2838
  ),
2839
  ),
2840
  'IT' =>
@@ -2842,6 +2951,7 @@ return array (
2842
  'country' =>
2843
  array (
2844
  'iso_code' => 'IT',
 
2845
  'geoname_id' => 3175395,
2846
  'names' =>
2847
  array (
@@ -2868,6 +2978,7 @@ return array (
2868
  'country' =>
2869
  array (
2870
  'iso_code' => 'JE',
 
2871
  'geoname_id' => 3042142,
2872
  'names' =>
2873
  array (
@@ -2894,6 +3005,7 @@ return array (
2894
  'country' =>
2895
  array (
2896
  'iso_code' => 'JM',
 
2897
  'geoname_id' => 3489940,
2898
  'names' =>
2899
  array (
@@ -2911,8 +3023,8 @@ return array (
2911
  'continent' => 'NA',
2912
  'location' =>
2913
  array (
2914
- 'latitude' => 18.115265000000001,
2915
- 'longitude' => -77.273479500000008,
2916
  ),
2917
  ),
2918
  'JO' =>
@@ -2920,6 +3032,7 @@ return array (
2920
  'country' =>
2921
  array (
2922
  'iso_code' => 'JO',
 
2923
  'geoname_id' => 248816,
2924
  'names' =>
2925
  array (
@@ -2946,6 +3059,7 @@ return array (
2946
  'country' =>
2947
  array (
2948
  'iso_code' => 'JP',
 
2949
  'geoname_id' => 1861060,
2950
  'names' =>
2951
  array (
@@ -2963,8 +3077,8 @@ return array (
2963
  'continent' => 'AS',
2964
  'location' =>
2965
  array (
2966
- 'latitude' => 34.886305999999998,
2967
- 'longitude' => 134.37971099999999,
2968
  ),
2969
  ),
2970
  'KE' =>
@@ -2972,6 +3086,7 @@ return array (
2972
  'country' =>
2973
  array (
2974
  'iso_code' => 'KE',
 
2975
  'geoname_id' => 192950,
2976
  'names' =>
2977
  array (
@@ -2998,6 +3113,7 @@ return array (
2998
  'country' =>
2999
  array (
3000
  'iso_code' => 'KG',
 
3001
  'geoname_id' => 1527747,
3002
  'names' =>
3003
  array (
@@ -3024,6 +3140,7 @@ return array (
3024
  'country' =>
3025
  array (
3026
  'iso_code' => 'KH',
 
3027
  'geoname_id' => 1831722,
3028
  'names' =>
3029
  array (
@@ -3050,6 +3167,7 @@ return array (
3050
  'country' =>
3051
  array (
3052
  'iso_code' => 'KI',
 
3053
  'geoname_id' => 4030945,
3054
  'names' =>
3055
  array (
@@ -3076,6 +3194,7 @@ return array (
3076
  'country' =>
3077
  array (
3078
  'iso_code' => 'KM',
 
3079
  'geoname_id' => 921929,
3080
  'names' =>
3081
  array (
@@ -3102,6 +3221,7 @@ return array (
3102
  'country' =>
3103
  array (
3104
  'iso_code' => 'KN',
 
3105
  'geoname_id' => 3575174,
3106
  'names' =>
3107
  array (
@@ -3128,6 +3248,7 @@ return array (
3128
  'country' =>
3129
  array (
3130
  'iso_code' => 'KP',
 
3131
  'geoname_id' => 1873107,
3132
  'names' =>
3133
  array (
@@ -3154,6 +3275,7 @@ return array (
3154
  'country' =>
3155
  array (
3156
  'iso_code' => 'KR',
 
3157
  'geoname_id' => 1835841,
3158
  'names' =>
3159
  array (
@@ -3180,6 +3302,7 @@ return array (
3180
  'country' =>
3181
  array (
3182
  'iso_code' => 'KW',
 
3183
  'geoname_id' => 285570,
3184
  'names' =>
3185
  array (
@@ -3206,6 +3329,7 @@ return array (
3206
  'country' =>
3207
  array (
3208
  'iso_code' => 'KY',
 
3209
  'geoname_id' => 3580718,
3210
  'names' =>
3211
  array (
@@ -3232,6 +3356,7 @@ return array (
3232
  'country' =>
3233
  array (
3234
  'iso_code' => 'KZ',
 
3235
  'geoname_id' => 1522867,
3236
  'names' =>
3237
  array (
@@ -3258,6 +3383,7 @@ return array (
3258
  'country' =>
3259
  array (
3260
  'iso_code' => 'LA',
 
3261
  'geoname_id' => 1655842,
3262
  'names' =>
3263
  array (
@@ -3284,6 +3410,7 @@ return array (
3284
  'country' =>
3285
  array (
3286
  'iso_code' => 'LB',
 
3287
  'geoname_id' => 272103,
3288
  'names' =>
3289
  array (
@@ -3310,6 +3437,7 @@ return array (
3310
  'country' =>
3311
  array (
3312
  'iso_code' => 'LC',
 
3313
  'geoname_id' => 3576468,
3314
  'names' =>
3315
  array (
@@ -3336,6 +3464,7 @@ return array (
3336
  'country' =>
3337
  array (
3338
  'iso_code' => 'LI',
 
3339
  'geoname_id' => 3042058,
3340
  'names' =>
3341
  array (
@@ -3362,6 +3491,7 @@ return array (
3362
  'country' =>
3363
  array (
3364
  'iso_code' => 'LK',
 
3365
  'geoname_id' => 1227603,
3366
  'names' =>
3367
  array (
@@ -3388,6 +3518,7 @@ return array (
3388
  'country' =>
3389
  array (
3390
  'iso_code' => 'LR',
 
3391
  'geoname_id' => 2275384,
3392
  'names' =>
3393
  array (
@@ -3414,6 +3545,7 @@ return array (
3414
  'country' =>
3415
  array (
3416
  'iso_code' => 'LS',
 
3417
  'geoname_id' => 932692,
3418
  'names' =>
3419
  array (
@@ -3431,8 +3563,8 @@ return array (
3431
  'continent' => 'AF',
3432
  'location' =>
3433
  array (
3434
- 'latitude' => -29.620511,
3435
- 'longitude' => 28.247414499999998,
3436
  ),
3437
  ),
3438
  'LT' =>
@@ -3440,6 +3572,7 @@ return array (
3440
  'country' =>
3441
  array (
3442
  'iso_code' => 'LT',
 
3443
  'geoname_id' => 597427,
3444
  'names' =>
3445
  array (
@@ -3466,6 +3599,7 @@ return array (
3466
  'country' =>
3467
  array (
3468
  'iso_code' => 'LU',
 
3469
  'geoname_id' => 2960313,
3470
  'names' =>
3471
  array (
@@ -3492,6 +3626,7 @@ return array (
3492
  'country' =>
3493
  array (
3494
  'iso_code' => 'LV',
 
3495
  'geoname_id' => 458258,
3496
  'names' =>
3497
  array (
@@ -3518,6 +3653,7 @@ return array (
3518
  'country' =>
3519
  array (
3520
  'iso_code' => 'LY',
 
3521
  'geoname_id' => 2215636,
3522
  'names' =>
3523
  array (
@@ -3544,6 +3680,7 @@ return array (
3544
  'country' =>
3545
  array (
3546
  'iso_code' => 'MA',
 
3547
  'geoname_id' => 2542007,
3548
  'names' =>
3549
  array (
@@ -3570,6 +3707,7 @@ return array (
3570
  'country' =>
3571
  array (
3572
  'iso_code' => 'MC',
 
3573
  'geoname_id' => 2993457,
3574
  'names' =>
3575
  array (
@@ -3596,6 +3734,7 @@ return array (
3596
  'country' =>
3597
  array (
3598
  'iso_code' => 'MD',
 
3599
  'geoname_id' => 617790,
3600
  'names' =>
3601
  array (
@@ -3622,6 +3761,7 @@ return array (
3622
  'country' =>
3623
  array (
3624
  'iso_code' => 'ME',
 
3625
  'geoname_id' => 3194884,
3626
  'names' =>
3627
  array (
@@ -3648,6 +3788,7 @@ return array (
3648
  'country' =>
3649
  array (
3650
  'iso_code' => 'MF',
 
3651
  'geoname_id' => 3578421,
3652
  'names' =>
3653
  array (
@@ -3674,6 +3815,7 @@ return array (
3674
  'country' =>
3675
  array (
3676
  'iso_code' => 'MG',
 
3677
  'geoname_id' => 1062947,
3678
  'names' =>
3679
  array (
@@ -3700,6 +3842,7 @@ return array (
3700
  'country' =>
3701
  array (
3702
  'iso_code' => 'MH',
 
3703
  'geoname_id' => 2080185,
3704
  'names' =>
3705
  array (
@@ -3726,6 +3869,7 @@ return array (
3726
  'country' =>
3727
  array (
3728
  'iso_code' => 'MK',
 
3729
  'geoname_id' => 718075,
3730
  'names' =>
3731
  array (
@@ -3752,6 +3896,7 @@ return array (
3752
  'country' =>
3753
  array (
3754
  'iso_code' => 'ML',
 
3755
  'geoname_id' => 2453866,
3756
  'names' =>
3757
  array (
@@ -3778,6 +3923,7 @@ return array (
3778
  'country' =>
3779
  array (
3780
  'iso_code' => 'MM',
 
3781
  'geoname_id' => 1327865,
3782
  'names' =>
3783
  array (
@@ -3804,6 +3950,7 @@ return array (
3804
  'country' =>
3805
  array (
3806
  'iso_code' => 'MN',
 
3807
  'geoname_id' => 2029969,
3808
  'names' =>
3809
  array (
@@ -3830,6 +3977,7 @@ return array (
3830
  'country' =>
3831
  array (
3832
  'iso_code' => 'MO',
 
3833
  'geoname_id' => 1821275,
3834
  'names' =>
3835
  array (
@@ -3856,6 +4004,7 @@ return array (
3856
  'country' =>
3857
  array (
3858
  'iso_code' => 'MP',
 
3859
  'geoname_id' => 4041468,
3860
  'names' =>
3861
  array (
@@ -3882,6 +4031,7 @@ return array (
3882
  'country' =>
3883
  array (
3884
  'iso_code' => 'MQ',
 
3885
  'geoname_id' => 3570311,
3886
  'names' =>
3887
  array (
@@ -3908,6 +4058,7 @@ return array (
3908
  'country' =>
3909
  array (
3910
  'iso_code' => 'MR',
 
3911
  'geoname_id' => 2378080,
3912
  'names' =>
3913
  array (
@@ -3934,6 +4085,7 @@ return array (
3934
  'country' =>
3935
  array (
3936
  'iso_code' => 'MS',
 
3937
  'geoname_id' => 3578097,
3938
  'names' =>
3939
  array (
@@ -3960,6 +4112,7 @@ return array (
3960
  'country' =>
3961
  array (
3962
  'iso_code' => 'MT',
 
3963
  'geoname_id' => 2562770,
3964
  'names' =>
3965
  array (
@@ -3986,6 +4139,7 @@ return array (
3986
  'country' =>
3987
  array (
3988
  'iso_code' => 'MU',
 
3989
  'geoname_id' => 934292,
3990
  'names' =>
3991
  array (
@@ -4012,6 +4166,7 @@ return array (
4012
  'country' =>
4013
  array (
4014
  'iso_code' => 'MV',
 
4015
  'geoname_id' => 1282028,
4016
  'names' =>
4017
  array (
@@ -4038,6 +4193,7 @@ return array (
4038
  'country' =>
4039
  array (
4040
  'iso_code' => 'MW',
 
4041
  'geoname_id' => 927384,
4042
  'names' =>
4043
  array (
@@ -4064,6 +4220,7 @@ return array (
4064
  'country' =>
4065
  array (
4066
  'iso_code' => 'MX',
 
4067
  'geoname_id' => 3996063,
4068
  'names' =>
4069
  array (
@@ -4090,6 +4247,7 @@ return array (
4090
  'country' =>
4091
  array (
4092
  'iso_code' => 'MY',
 
4093
  'geoname_id' => 1733045,
4094
  'names' =>
4095
  array (
@@ -4116,6 +4274,7 @@ return array (
4116
  'country' =>
4117
  array (
4118
  'iso_code' => 'MZ',
 
4119
  'geoname_id' => 1036973,
4120
  'names' =>
4121
  array (
@@ -4142,6 +4301,7 @@ return array (
4142
  'country' =>
4143
  array (
4144
  'iso_code' => 'NA',
 
4145
  'geoname_id' => 3355338,
4146
  'names' =>
4147
  array (
@@ -4168,6 +4328,7 @@ return array (
4168
  'country' =>
4169
  array (
4170
  'iso_code' => 'NC',
 
4171
  'geoname_id' => 2139685,
4172
  'names' =>
4173
  array (
@@ -4194,6 +4355,7 @@ return array (
4194
  'country' =>
4195
  array (
4196
  'iso_code' => 'NE',
 
4197
  'geoname_id' => 2440476,
4198
  'names' =>
4199
  array (
@@ -4220,6 +4382,7 @@ return array (
4220
  'country' =>
4221
  array (
4222
  'iso_code' => 'NF',
 
4223
  'geoname_id' => 2155115,
4224
  'names' =>
4225
  array (
@@ -4246,6 +4409,7 @@ return array (
4246
  'country' =>
4247
  array (
4248
  'iso_code' => 'NG',
 
4249
  'geoname_id' => 2328926,
4250
  'names' =>
4251
  array (
@@ -4272,6 +4436,7 @@ return array (
4272
  'country' =>
4273
  array (
4274
  'iso_code' => 'NI',
 
4275
  'geoname_id' => 3617476,
4276
  'names' =>
4277
  array (
@@ -4298,6 +4463,7 @@ return array (
4298
  'country' =>
4299
  array (
4300
  'iso_code' => 'NL',
 
4301
  'geoname_id' => 2750405,
4302
  'names' =>
4303
  array (
@@ -4315,8 +4481,8 @@ return array (
4315
  'continent' => 'EU',
4316
  'location' =>
4317
  array (
4318
- 'latitude' => 52.133057000000001,
4319
- 'longitude' => 5.2952500000000002,
4320
  ),
4321
  ),
4322
  'NO' =>
@@ -4324,6 +4490,7 @@ return array (
4324
  'country' =>
4325
  array (
4326
  'iso_code' => 'NO',
 
4327
  'geoname_id' => 3144096,
4328
  'names' =>
4329
  array (
@@ -4341,8 +4508,8 @@ return array (
4341
  'continent' => 'EU',
4342
  'location' =>
4343
  array (
4344
- 'latitude' => 64.583013499999993,
4345
- 'longitude' => 17.864109760375975,
4346
  ),
4347
  ),
4348
  'NP' =>
@@ -4350,6 +4517,7 @@ return array (
4350
  'country' =>
4351
  array (
4352
  'iso_code' => 'NP',
 
4353
  'geoname_id' => 1282988,
4354
  'names' =>
4355
  array (
@@ -4376,6 +4544,7 @@ return array (
4376
  'country' =>
4377
  array (
4378
  'iso_code' => 'NR',
 
4379
  'geoname_id' => 2110425,
4380
  'names' =>
4381
  array (
@@ -4402,6 +4571,7 @@ return array (
4402
  'country' =>
4403
  array (
4404
  'iso_code' => 'NU',
 
4405
  'geoname_id' => 4036232,
4406
  'names' =>
4407
  array (
@@ -4428,6 +4598,7 @@ return array (
4428
  'country' =>
4429
  array (
4430
  'iso_code' => 'NZ',
 
4431
  'geoname_id' => 2186224,
4432
  'names' =>
4433
  array (
@@ -4454,6 +4625,7 @@ return array (
4454
  'country' =>
4455
  array (
4456
  'iso_code' => 'OM',
 
4457
  'geoname_id' => 286963,
4458
  'names' =>
4459
  array (
@@ -4480,6 +4652,7 @@ return array (
4480
  'country' =>
4481
  array (
4482
  'iso_code' => 'PA',
 
4483
  'geoname_id' => 3703430,
4484
  'names' =>
4485
  array (
@@ -4497,8 +4670,8 @@ return array (
4497
  'continent' => 'NA',
4498
  'location' =>
4499
  array (
4500
- 'latitude' => 8.4177099999999996,
4501
- 'longitude' => -80.112777499999993,
4502
  ),
4503
  ),
4504
  'PE' =>
@@ -4506,6 +4679,7 @@ return array (
4506
  'country' =>
4507
  array (
4508
  'iso_code' => 'PE',
 
4509
  'geoname_id' => 3932488,
4510
  'names' =>
4511
  array (
@@ -4532,6 +4706,7 @@ return array (
4532
  'country' =>
4533
  array (
4534
  'iso_code' => 'PF',
 
4535
  'geoname_id' => 4030656,
4536
  'names' =>
4537
  array (
@@ -4558,6 +4733,7 @@ return array (
4558
  'country' =>
4559
  array (
4560
  'iso_code' => 'PG',
 
4561
  'geoname_id' => 2088628,
4562
  'names' =>
4563
  array (
@@ -4584,6 +4760,7 @@ return array (
4584
  'country' =>
4585
  array (
4586
  'iso_code' => 'PH',
 
4587
  'geoname_id' => 1694008,
4588
  'names' =>
4589
  array (
@@ -4602,7 +4779,7 @@ return array (
4602
  'location' =>
4603
  array (
4604
  'latitude' => 12.88199172124097,
4605
- 'longitude' => 121.7669150462425,
4606
  ),
4607
  ),
4608
  'PK' =>
@@ -4610,6 +4787,7 @@ return array (
4610
  'country' =>
4611
  array (
4612
  'iso_code' => 'PK',
 
4613
  'geoname_id' => 1168579,
4614
  'names' =>
4615
  array (
@@ -4636,6 +4814,7 @@ return array (
4636
  'country' =>
4637
  array (
4638
  'iso_code' => 'PL',
 
4639
  'geoname_id' => 798544,
4640
  'names' =>
4641
  array (
@@ -4653,8 +4832,8 @@ return array (
4653
  'continent' => 'EU',
4654
  'location' =>
4655
  array (
4656
- 'latitude' => 51.922750499999999,
4657
- 'longitude' => 19.136874500000001,
4658
  ),
4659
  ),
4660
  'PM' =>
@@ -4662,6 +4841,7 @@ return array (
4662
  'country' =>
4663
  array (
4664
  'iso_code' => 'PM',
 
4665
  'geoname_id' => 3424932,
4666
  'names' =>
4667
  array (
@@ -4688,6 +4868,7 @@ return array (
4688
  'country' =>
4689
  array (
4690
  'iso_code' => 'PN',
 
4691
  'geoname_id' => 4030699,
4692
  'names' =>
4693
  array (
@@ -4705,8 +4886,8 @@ return array (
4705
  'continent' => 'OC',
4706
  'location' =>
4707
  array (
4708
- 'latitude' => -24.494214999999997,
4709
- 'longitude' => -126.55964300000001,
4710
  ),
4711
  ),
4712
  'PR' =>
@@ -4714,6 +4895,7 @@ return array (
4714
  'country' =>
4715
  array (
4716
  'iso_code' => 'PR',
 
4717
  'geoname_id' => 4566966,
4718
  'names' =>
4719
  array (
@@ -4732,7 +4914,7 @@ return array (
4732
  'location' =>
4733
  array (
4734
  'latitude' => 18.223285499999999,
4735
- 'longitude' => -66.592731499999999,
4736
  ),
4737
  ),
4738
  'PS' =>
@@ -4740,6 +4922,7 @@ return array (
4740
  'country' =>
4741
  array (
4742
  'iso_code' => 'PS',
 
4743
  'geoname_id' => 6254930,
4744
  'names' =>
4745
  array (
@@ -4766,6 +4949,7 @@ return array (
4766
  'country' =>
4767
  array (
4768
  'iso_code' => 'PT',
 
4769
  'geoname_id' => 2264397,
4770
  'names' =>
4771
  array (
@@ -4792,6 +4976,7 @@ return array (
4792
  'country' =>
4793
  array (
4794
  'iso_code' => 'PW',
 
4795
  'geoname_id' => 1559582,
4796
  'names' =>
4797
  array (
@@ -4818,6 +5003,7 @@ return array (
4818
  'country' =>
4819
  array (
4820
  'iso_code' => 'PY',
 
4821
  'geoname_id' => 3437598,
4822
  'names' =>
4823
  array (
@@ -4844,6 +5030,7 @@ return array (
4844
  'country' =>
4845
  array (
4846
  'iso_code' => 'QA',
 
4847
  'geoname_id' => 289688,
4848
  'names' =>
4849
  array (
@@ -4870,6 +5057,7 @@ return array (
4870
  'country' =>
4871
  array (
4872
  'iso_code' => 'RE',
 
4873
  'geoname_id' => 935317,
4874
  'names' =>
4875
  array (
@@ -4896,6 +5084,7 @@ return array (
4896
  'country' =>
4897
  array (
4898
  'iso_code' => 'RO',
 
4899
  'geoname_id' => 798549,
4900
  'names' =>
4901
  array (
@@ -4913,8 +5102,8 @@ return array (
4913
  'continent' => 'EU',
4914
  'location' =>
4915
  array (
4916
- 'latitude' => 45.947124500000001,
4917
- 'longitude' => 24.980513500000001,
4918
  ),
4919
  ),
4920
  'RS' =>
@@ -4922,6 +5111,7 @@ return array (
4922
  'country' =>
4923
  array (
4924
  'iso_code' => 'RS',
 
4925
  'geoname_id' => 6290252,
4926
  'names' =>
4927
  array (
@@ -4948,6 +5138,7 @@ return array (
4948
  'country' =>
4949
  array (
4950
  'iso_code' => 'RU',
 
4951
  'geoname_id' => 2017370,
4952
  'names' =>
4953
  array (
@@ -4974,6 +5165,7 @@ return array (
4974
  'country' =>
4975
  array (
4976
  'iso_code' => 'RW',
 
4977
  'geoname_id' => 49518,
4978
  'names' =>
4979
  array (
@@ -4991,8 +5183,8 @@ return array (
4991
  'continent' => 'AF',
4992
  'location' =>
4993
  array (
4994
- 'latitude' => -1.9470800000000001,
4995
- 'longitude' => 29.876376,
4996
  ),
4997
  ),
4998
  'SA' =>
@@ -5000,6 +5192,7 @@ return array (
5000
  'country' =>
5001
  array (
5002
  'iso_code' => 'SA',
 
5003
  'geoname_id' => 102358,
5004
  'names' =>
5005
  array (
@@ -5017,8 +5210,8 @@ return array (
5017
  'continent' => 'AS',
5018
  'location' =>
5019
  array (
5020
- 'latitude' => 23.886291499999999,
5021
- 'longitude' => 45.081138500000002,
5022
  ),
5023
  ),
5024
  'SB' =>
@@ -5026,6 +5219,7 @@ return array (
5026
  'country' =>
5027
  array (
5028
  'iso_code' => 'SB',
 
5029
  'geoname_id' => 2103350,
5030
  'names' =>
5031
  array (
@@ -5052,6 +5246,7 @@ return array (
5052
  'country' =>
5053
  array (
5054
  'iso_code' => 'SC',
 
5055
  'geoname_id' => 241170,
5056
  'names' =>
5057
  array (
@@ -5078,6 +5273,7 @@ return array (
5078
  'country' =>
5079
  array (
5080
  'iso_code' => 'SD',
 
5081
  'geoname_id' => 366755,
5082
  'names' =>
5083
  array (
@@ -5104,6 +5300,7 @@ return array (
5104
  'country' =>
5105
  array (
5106
  'iso_code' => 'SE',
 
5107
  'geoname_id' => 2661886,
5108
  'names' =>
5109
  array (
@@ -5121,8 +5318,8 @@ return array (
5121
  'continent' => 'EU',
5122
  'location' =>
5123
  array (
5124
- 'latitude' => 62.199805999999995,
5125
- 'longitude' => 17.637493241959248,
5126
  ),
5127
  ),
5128
  'SG' =>
@@ -5130,6 +5327,7 @@ return array (
5130
  'country' =>
5131
  array (
5132
  'iso_code' => 'SG',
 
5133
  'geoname_id' => 1880251,
5134
  'names' =>
5135
  array (
@@ -5156,6 +5354,7 @@ return array (
5156
  'country' =>
5157
  array (
5158
  'iso_code' => 'SH',
 
5159
  'geoname_id' => 3370751,
5160
  'names' =>
5161
  array (
@@ -5182,6 +5381,7 @@ return array (
5182
  'country' =>
5183
  array (
5184
  'iso_code' => 'SI',
 
5185
  'geoname_id' => 3190538,
5186
  'names' =>
5187
  array (
@@ -5208,6 +5408,7 @@ return array (
5208
  'country' =>
5209
  array (
5210
  'iso_code' => 'SJ',
 
5211
  'geoname_id' => 607072,
5212
  'names' =>
5213
  array (
@@ -5234,6 +5435,7 @@ return array (
5234
  'country' =>
5235
  array (
5236
  'iso_code' => 'SK',
 
5237
  'geoname_id' => 3057568,
5238
  'names' =>
5239
  array (
@@ -5260,6 +5462,7 @@ return array (
5260
  'country' =>
5261
  array (
5262
  'iso_code' => 'SL',
 
5263
  'geoname_id' => 2403846,
5264
  'names' =>
5265
  array (
@@ -5286,6 +5489,7 @@ return array (
5286
  'country' =>
5287
  array (
5288
  'iso_code' => 'SM',
 
5289
  'geoname_id' => 3168068,
5290
  'names' =>
5291
  array (
@@ -5312,6 +5516,7 @@ return array (
5312
  'country' =>
5313
  array (
5314
  'iso_code' => 'SN',
 
5315
  'geoname_id' => 2245662,
5316
  'names' =>
5317
  array (
@@ -5338,6 +5543,7 @@ return array (
5338
  'country' =>
5339
  array (
5340
  'iso_code' => 'SO',
 
5341
  'geoname_id' => 51537,
5342
  'names' =>
5343
  array (
@@ -5364,6 +5570,7 @@ return array (
5364
  'country' =>
5365
  array (
5366
  'iso_code' => 'SR',
 
5367
  'geoname_id' => 3382998,
5368
  'names' =>
5369
  array (
@@ -5390,6 +5597,7 @@ return array (
5390
  'country' =>
5391
  array (
5392
  'iso_code' => 'SS',
 
5393
  'geoname_id' => 7909807,
5394
  'names' =>
5395
  array (
@@ -5416,6 +5624,7 @@ return array (
5416
  'country' =>
5417
  array (
5418
  'iso_code' => 'ST',
 
5419
  'geoname_id' => 2410758,
5420
  'names' =>
5421
  array (
@@ -5442,6 +5651,7 @@ return array (
5442
  'country' =>
5443
  array (
5444
  'iso_code' => 'SV',
 
5445
  'geoname_id' => 3585968,
5446
  'names' =>
5447
  array (
@@ -5468,6 +5678,7 @@ return array (
5468
  'country' =>
5469
  array (
5470
  'iso_code' => 'SX',
 
5471
  'geoname_id' => 7609695,
5472
  'names' =>
5473
  array (
@@ -5494,6 +5705,7 @@ return array (
5494
  'country' =>
5495
  array (
5496
  'iso_code' => 'SY',
 
5497
  'geoname_id' => 163843,
5498
  'names' =>
5499
  array (
@@ -5520,6 +5732,7 @@ return array (
5520
  'country' =>
5521
  array (
5522
  'iso_code' => 'SZ',
 
5523
  'geoname_id' => 934841,
5524
  'names' =>
5525
  array (
@@ -5546,6 +5759,7 @@ return array (
5546
  'country' =>
5547
  array (
5548
  'iso_code' => 'TC',
 
5549
  'geoname_id' => 3576916,
5550
  'names' =>
5551
  array (
@@ -5572,6 +5786,7 @@ return array (
5572
  'country' =>
5573
  array (
5574
  'iso_code' => 'TD',
 
5575
  'geoname_id' => 2434508,
5576
  'names' =>
5577
  array (
@@ -5598,6 +5813,7 @@ return array (
5598
  'country' =>
5599
  array (
5600
  'iso_code' => 'TF',
 
5601
  'geoname_id' => 1546748,
5602
  'names' =>
5603
  array (
@@ -5624,6 +5840,7 @@ return array (
5624
  'country' =>
5625
  array (
5626
  'iso_code' => 'TG',
 
5627
  'geoname_id' => 2363686,
5628
  'names' =>
5629
  array (
@@ -5650,6 +5867,7 @@ return array (
5650
  'country' =>
5651
  array (
5652
  'iso_code' => 'TH',
 
5653
  'geoname_id' => 1605651,
5654
  'names' =>
5655
  array (
@@ -5676,6 +5894,7 @@ return array (
5676
  'country' =>
5677
  array (
5678
  'iso_code' => 'TJ',
 
5679
  'geoname_id' => 1220409,
5680
  'names' =>
5681
  array (
@@ -5702,6 +5921,7 @@ return array (
5702
  'country' =>
5703
  array (
5704
  'iso_code' => 'TK',
 
5705
  'geoname_id' => 4031074,
5706
  'names' =>
5707
  array (
@@ -5728,6 +5948,7 @@ return array (
5728
  'country' =>
5729
  array (
5730
  'iso_code' => 'TL',
 
5731
  'geoname_id' => 1966436,
5732
  'names' =>
5733
  array (
@@ -5754,6 +5975,7 @@ return array (
5754
  'country' =>
5755
  array (
5756
  'iso_code' => 'TM',
 
5757
  'geoname_id' => 1218197,
5758
  'names' =>
5759
  array (
@@ -5780,6 +6002,7 @@ return array (
5780
  'country' =>
5781
  array (
5782
  'iso_code' => 'TN',
 
5783
  'geoname_id' => 2464461,
5784
  'names' =>
5785
  array (
@@ -5806,6 +6029,7 @@ return array (
5806
  'country' =>
5807
  array (
5808
  'iso_code' => 'TO',
 
5809
  'geoname_id' => 4032283,
5810
  'names' =>
5811
  array (
@@ -5832,6 +6056,7 @@ return array (
5832
  'country' =>
5833
  array (
5834
  'iso_code' => 'TR',
 
5835
  'geoname_id' => 298795,
5836
  'names' =>
5837
  array (
@@ -5858,6 +6083,7 @@ return array (
5858
  'country' =>
5859
  array (
5860
  'iso_code' => 'TT',
 
5861
  'geoname_id' => 3573591,
5862
  'names' =>
5863
  array (
@@ -5884,6 +6110,7 @@ return array (
5884
  'country' =>
5885
  array (
5886
  'iso_code' => 'TV',
 
5887
  'geoname_id' => 2110297,
5888
  'names' =>
5889
  array (
@@ -5910,6 +6137,7 @@ return array (
5910
  'country' =>
5911
  array (
5912
  'iso_code' => 'TW',
 
5913
  'geoname_id' => 1668284,
5914
  'names' =>
5915
  array (
@@ -5936,6 +6164,7 @@ return array (
5936
  'country' =>
5937
  array (
5938
  'iso_code' => 'TZ',
 
5939
  'geoname_id' => 149590,
5940
  'names' =>
5941
  array (
@@ -5962,6 +6191,7 @@ return array (
5962
  'country' =>
5963
  array (
5964
  'iso_code' => 'UA',
 
5965
  'geoname_id' => 690791,
5966
  'names' =>
5967
  array (
@@ -5988,6 +6218,7 @@ return array (
5988
  'country' =>
5989
  array (
5990
  'iso_code' => 'UG',
 
5991
  'geoname_id' => 226074,
5992
  'names' =>
5993
  array (
@@ -6005,8 +6236,8 @@ return array (
6005
  'continent' => 'AF',
6006
  'location' =>
6007
  array (
6008
- 'latitude' => 1.3651884999999999,
6009
- 'longitude' => 32.304650500000001,
6010
  ),
6011
  ),
6012
  'UM' =>
@@ -6014,6 +6245,7 @@ return array (
6014
  'country' =>
6015
  array (
6016
  'iso_code' => 'UM',
 
6017
  'geoname_id' => 5854968,
6018
  'names' =>
6019
  array (
@@ -6040,6 +6272,7 @@ return array (
6040
  'country' =>
6041
  array (
6042
  'iso_code' => 'US',
 
6043
  'geoname_id' => 6252001,
6044
  'names' =>
6045
  array (
@@ -6066,6 +6299,7 @@ return array (
6066
  'country' =>
6067
  array (
6068
  'iso_code' => 'UY',
 
6069
  'geoname_id' => 3439705,
6070
  'names' =>
6071
  array (
@@ -6092,6 +6326,7 @@ return array (
6092
  'country' =>
6093
  array (
6094
  'iso_code' => 'UZ',
 
6095
  'geoname_id' => 1512440,
6096
  'names' =>
6097
  array (
@@ -6118,6 +6353,7 @@ return array (
6118
  'country' =>
6119
  array (
6120
  'iso_code' => 'VA',
 
6121
  'geoname_id' => 3164670,
6122
  'names' =>
6123
  array (
@@ -6144,6 +6380,7 @@ return array (
6144
  'country' =>
6145
  array (
6146
  'iso_code' => 'VC',
 
6147
  'geoname_id' => 3577815,
6148
  'names' =>
6149
  array (
@@ -6170,6 +6407,7 @@ return array (
6170
  'country' =>
6171
  array (
6172
  'iso_code' => 'VE',
 
6173
  'geoname_id' => 3625428,
6174
  'names' =>
6175
  array (
@@ -6196,6 +6434,7 @@ return array (
6196
  'country' =>
6197
  array (
6198
  'iso_code' => 'VG',
 
6199
  'geoname_id' => 3577718,
6200
  'names' =>
6201
  array (
@@ -6222,6 +6461,7 @@ return array (
6222
  'country' =>
6223
  array (
6224
  'iso_code' => 'VI',
 
6225
  'geoname_id' => 4796775,
6226
  'names' =>
6227
  array (
@@ -6248,6 +6488,7 @@ return array (
6248
  'country' =>
6249
  array (
6250
  'iso_code' => 'VN',
 
6251
  'geoname_id' => 1562822,
6252
  'names' =>
6253
  array (
@@ -6274,6 +6515,7 @@ return array (
6274
  'country' =>
6275
  array (
6276
  'iso_code' => 'VU',
 
6277
  'geoname_id' => 2134431,
6278
  'names' =>
6279
  array (
@@ -6300,6 +6542,7 @@ return array (
6300
  'country' =>
6301
  array (
6302
  'iso_code' => 'WF',
 
6303
  'geoname_id' => 4034749,
6304
  'names' =>
6305
  array (
@@ -6326,6 +6569,7 @@ return array (
6326
  'country' =>
6327
  array (
6328
  'iso_code' => 'WS',
 
6329
  'geoname_id' => 4034894,
6330
  'names' =>
6331
  array (
@@ -6352,6 +6596,7 @@ return array (
6352
  'country' =>
6353
  array (
6354
  'iso_code' => 'XK',
 
6355
  'geoname_id' => 831053,
6356
  'names' =>
6357
  array (
@@ -6378,6 +6623,7 @@ return array (
6378
  'country' =>
6379
  array (
6380
  'iso_code' => 'YE',
 
6381
  'geoname_id' => 69543,
6382
  'names' =>
6383
  array (
@@ -6404,6 +6650,7 @@ return array (
6404
  'country' =>
6405
  array (
6406
  'iso_code' => 'YT',
 
6407
  'geoname_id' => 1024031,
6408
  'names' =>
6409
  array (
@@ -6430,6 +6677,7 @@ return array (
6430
  'country' =>
6431
  array (
6432
  'iso_code' => 'ZA',
 
6433
  'geoname_id' => 953987,
6434
  'names' =>
6435
  array (
@@ -6447,8 +6695,8 @@ return array (
6447
  'continent' => 'AF',
6448
  'location' =>
6449
  array (
6450
- 'latitude' => -28.483219999999999,
6451
- 'longitude' => 24.676997,
6452
  ),
6453
  ),
6454
  'ZM' =>
@@ -6456,6 +6704,7 @@ return array (
6456
  'country' =>
6457
  array (
6458
  'iso_code' => 'ZM',
 
6459
  'geoname_id' => 895949,
6460
  'names' =>
6461
  array (
@@ -6482,6 +6731,7 @@ return array (
6482
  'country' =>
6483
  array (
6484
  'iso_code' => 'ZW',
 
6485
  'geoname_id' => 878675,
6486
  'names' =>
6487
  array (
1
  <?php
2
+ // Generated at Fri, 12 Jan 2018 20:51:14 +0100
3
  return array (
4
  'countries' =>
5
  array (
8
  'country' =>
9
  array (
10
  'iso_code' => 'AD',
11
+ 'iso_code3' => 'AND',
12
  'geoname_id' => 3041565,
13
  'names' =>
14
  array (
35
  'country' =>
36
  array (
37
  'iso_code' => 'AE',
38
+ 'iso_code3' => 'ARE',
39
  'geoname_id' => 290557,
40
  'names' =>
41
  array (
62
  'country' =>
63
  array (
64
  'iso_code' => 'AF',
65
+ 'iso_code3' => 'AFG',
66
  'geoname_id' => 1149361,
67
  'names' =>
68
  array (
89
  'country' =>
90
  array (
91
  'iso_code' => 'AG',
92
+ 'iso_code3' => 'ATG',
93
  'geoname_id' => 3576396,
94
  'names' =>
95
  array (
116
  'country' =>
117
  array (
118
  'iso_code' => 'AI',
119
+ 'iso_code3' => 'AIA',
120
  'geoname_id' => 3573511,
121
  'names' =>
122
  array (
143
  'country' =>
144
  array (
145
  'iso_code' => 'AL',
146
+ 'iso_code3' => 'ALB',
147
  'geoname_id' => 783754,
148
  'names' =>
149
  array (
170
  'country' =>
171
  array (
172
  'iso_code' => 'AM',
173
+ 'iso_code3' => 'ARM',
174
  'geoname_id' => 174982,
175
  'names' =>
176
  array (
188
  'continent' => 'AS',
189
  'location' =>
190
  array (
191
+ 'latitude' => 40.071902999999999,
192
+ 'longitude' => 45.039342639811366,
193
  ),
194
  ),
195
  'AO' =>
197
  'country' =>
198
  array (
199
  'iso_code' => 'AO',
200
+ 'iso_code3' => 'AGO',
201
  'geoname_id' => 3351879,
202
  'names' =>
203
  array (
224
  'country' =>
225
  array (
226
  'iso_code' => 'AQ',
227
+ 'iso_code3' => 'ATA',
228
  'geoname_id' => 6697173,
229
  'names' =>
230
  array (
251
  'country' =>
252
  array (
253
  'iso_code' => 'AR',
254
+ 'iso_code3' => 'ARG',
255
  'geoname_id' => 3865483,
256
  'names' =>
257
  array (
269
  'continent' => 'SA',
270
  'location' =>
271
  array (
272
+ 'latitude' => -38.417824813499948,
273
+ 'longitude' => -63.602132684499992,
274
  ),
275
  ),
276
  'AS' =>
278
  'country' =>
279
  array (
280
  'iso_code' => 'AS',
281
+ 'iso_code3' => 'ASM',
282
  'geoname_id' => 5880801,
283
  'names' =>
284
  array (
305
  'country' =>
306
  array (
307
  'iso_code' => 'AT',
308
+ 'iso_code3' => 'AUT',
309
  'geoname_id' => 2782113,
310
  'names' =>
311
  array (
332
  'country' =>
333
  array (
334
  'iso_code' => 'AU',
335
+ 'iso_code3' => 'AUS',
336
  'geoname_id' => 2077456,
337
  'names' =>
338
  array (
359
  'country' =>
360
  array (
361
  'iso_code' => 'AW',
362
+ 'iso_code3' => 'ABW',
363
  'geoname_id' => 3577279,
364
  'names' =>
365
  array (
386
  'country' =>
387
  array (
388
  'iso_code' => 'AX',
389
+ 'iso_code3' => 'ALA',
390
  'geoname_id' => 661882,
391
  'names' =>
392
  array (
413
  'country' =>
414
  array (
415
  'iso_code' => 'AZ',
416
+ 'iso_code3' => 'AZE',
417
  'geoname_id' => 587116,
418
  'names' =>
419
  array (
440
  'country' =>
441
  array (
442
  'iso_code' => 'BA',
443
+ 'iso_code3' => 'BIH',
444
  'geoname_id' => 3277605,
445
  'names' =>
446
  array (
467
  'country' =>
468
  array (
469
  'iso_code' => 'BB',
470
+ 'iso_code3' => 'BRB',
471
  'geoname_id' => 3374084,
472
  'names' =>
473
  array (
494
  'country' =>
495
  array (
496
  'iso_code' => 'BD',
497
+ 'iso_code3' => 'BGD',
498
  'geoname_id' => 1210997,
499
  'names' =>
500
  array (
521
  'country' =>
522
  array (
523
  'iso_code' => 'BE',
524
+ 'iso_code3' => 'BEL',
525
  'geoname_id' => 2802361,
526
  'names' =>
527
  array (
539
  'continent' => 'EU',
540
  'location' =>
541
  array (
542
+ 'latitude' => 50.501040186390753,
543
+ 'longitude' => 4.4746332119649903,
544
  ),
545
  ),
546
  'BF' =>
548
  'country' =>
549
  array (
550
  'iso_code' => 'BF',
551
+ 'iso_code3' => 'BFA',
552
  'geoname_id' => 2361809,
553
  'names' =>
554
  array (
575
  'country' =>
576
  array (
577
  'iso_code' => 'BG',
578
+ 'iso_code3' => 'BGR',
579
  'geoname_id' => 732800,
580
  'names' =>
581
  array (
602
  'country' =>
603
  array (
604
  'iso_code' => 'BH',
605
+ 'iso_code3' => 'BHR',
606
  'geoname_id' => 290291,
607
  'names' =>
608
  array (
629
  'country' =>
630
  array (
631
  'iso_code' => 'BI',
632
+ 'iso_code3' => 'BDI',
633
  'geoname_id' => 433561,
634
  'names' =>
635
  array (
656
  'country' =>
657
  array (
658
  'iso_code' => 'BJ',
659
+ 'iso_code3' => 'BEN',
660
  'geoname_id' => 2395170,
661
  'names' =>
662
  array (
683
  'country' =>
684
  array (
685
  'iso_code' => 'BL',
686
+ 'iso_code3' => 'BLM',
687
  'geoname_id' => 3578476,
688
  'names' =>
689
  array (
710
  'country' =>
711
  array (
712
  'iso_code' => 'BM',
713
+ 'iso_code3' => 'BMU',
714
  'geoname_id' => 3573345,
715
  'names' =>
716
  array (
737
  'country' =>
738
  array (
739
  'iso_code' => 'BN',
740
+ 'iso_code3' => 'BRN',
741
  'geoname_id' => 1820814,
742
  'names' =>
743
  array (
764
  'country' =>
765
  array (
766
  'iso_code' => 'BO',
767
+ 'iso_code3' => 'BOL',
768
  'geoname_id' => 3923057,
769
  'names' =>
770
  array (
791
  'country' =>
792
  array (
793
  'iso_code' => 'BQ',
794
+ 'iso_code3' => 'BES',
795
  'geoname_id' => 7626844,
796
  'names' =>
797
  array (
818
  'country' =>
819
  array (
820
  'iso_code' => 'BR',
821
+ 'iso_code3' => 'BRA',
822
  'geoname_id' => 3469034,
823
  'names' =>
824
  array (
845
  'country' =>
846
  array (
847
  'iso_code' => 'BS',
848
+ 'iso_code3' => 'BHS',
849
  'geoname_id' => 3572887,
850
  'names' =>
851
  array (
872
  'country' =>
873
  array (
874
  'iso_code' => 'BT',
875
+ 'iso_code3' => 'BTN',
876
  'geoname_id' => 1252634,
877
  'names' =>
878
  array (
890
  'continent' => 'AS',
891
  'location' =>
892
  array (
893
+ 'latitude' => 27.47416741900005,
894
+ 'longitude' => 90.435397886500056,
895
  ),
896
  ),
897
  'BV' =>
899
  'country' =>
900
  array (
901
  'iso_code' => 'BV',
902
+ 'iso_code3' => 'BVT',
903
  'geoname_id' => 3371123,
904
  'names' =>
905
  array (
926
  'country' =>
927
  array (
928
  'iso_code' => 'BW',
929
+ 'iso_code3' => 'BWA',
930
  'geoname_id' => 933860,
931
  'names' =>
932
  array (
953
  'country' =>
954
  array (
955
  'iso_code' => 'BY',
956
+ 'iso_code3' => 'BLR',
957
  'geoname_id' => 630336,
958
  'names' =>
959
  array (
980
  'country' =>
981
  array (
982
  'iso_code' => 'BZ',
983
+ 'iso_code3' => 'BLZ',
984
  'geoname_id' => 3582678,
985
  'names' =>
986
  array (
1007
  'country' =>
1008
  array (
1009
  'iso_code' => 'CA',
1010
+ 'iso_code3' => 'CAN',
1011
  'geoname_id' => 6251999,
1012
  'names' =>
1013
  array (
1034
  'country' =>
1035
  array (
1036
  'iso_code' => 'CC',
1037
+ 'iso_code3' => 'CCK',
1038
  'geoname_id' => 1547376,
1039
  'names' =>
1040
  array (
1061
  'country' =>
1062
  array (
1063
  'iso_code' => 'CD',
1064
+ 'iso_code3' => 'COD',
1065
  'geoname_id' => 203312,
1066
  'names' =>
1067
  array (
1088
  'country' =>
1089
  array (
1090
  'iso_code' => 'CF',
1091
+ 'iso_code3' => 'CAF',
1092
  'geoname_id' => 239880,
1093
  'names' =>
1094
  array (
1115
  'country' =>
1116
  array (
1117
  'iso_code' => 'CG',
1118
+ 'iso_code3' => 'COG',
1119
  'geoname_id' => 2260494,
1120
  'names' =>
1121
  array (
1142
  'country' =>
1143
  array (
1144
  'iso_code' => 'CH',
1145
+ 'iso_code3' => 'CHE',
1146
  'geoname_id' => 2658434,
1147
  'names' =>
1148
  array (
1169
  'country' =>
1170
  array (
1171
  'iso_code' => 'CI',
1172
+ 'iso_code3' => 'CIV',
1173
  'geoname_id' => 2287781,
1174
  'names' =>
1175
  array (
1196
  'country' =>
1197
  array (
1198
  'iso_code' => 'CK',
1199
+ 'iso_code3' => 'COK',
1200
  'geoname_id' => 1899402,
1201
  'names' =>
1202
  array (
1223
  'country' =>
1224
  array (
1225
  'iso_code' => 'CL',
1226
+ 'iso_code3' => 'CHL',
1227
  'geoname_id' => 3895114,
1228
  'names' =>
1229
  array (
1241
  'continent' => 'SA',
1242
  'location' =>
1243
  array (
1244
+ 'latitude' => -36.703785677499951,
1245
+ 'longitude' => -73.626590492999952,
1246
  ),
1247
  ),
1248
  'CM' =>
1250
  'country' =>
1251
  array (
1252
  'iso_code' => 'CM',
1253
+ 'iso_code3' => 'CMR',
1254
  'geoname_id' => 2233387,
1255
  'names' =>
1256
  array (
1277
  'country' =>
1278
  array (
1279
  'iso_code' => 'CN',
1280
+ 'iso_code3' => 'CHN',
1281
  'geoname_id' => 1814991,
1282
  'names' =>
1283
  array (
1304
  'country' =>
1305
  array (
1306
  'iso_code' => 'CO',
1307
+ 'iso_code3' => 'COL',
1308
  'geoname_id' => 3686110,
1309
  'names' =>
1310
  array (
1322
  'continent' => 'SA',
1323
  'location' =>
1324
  array (
1325
+ 'latitude' => 4.5788054935000151,
1326
+ 'longitude' => -74.291495523499947,
1327
  ),
1328
  ),
1329
  'CR' =>
1331
  'country' =>
1332
  array (
1333
  'iso_code' => 'CR',
1334
+ 'iso_code3' => 'CRI',
1335
  'geoname_id' => 3624060,
1336
  'names' =>
1337
  array (
1349
  'continent' => 'NA',
1350
  'location' =>
1351
  array (
1352
+ 'latitude' => 9.6296931151324792,
1353
+ 'longitude' => -84.251285673292756,
1354
  ),
1355
  ),
1356
  'CU' =>
1358
  'country' =>
1359
  array (
1360
  'iso_code' => 'CU',
1361
+ 'iso_code3' => 'CUB',
1362
  'geoname_id' => 3562981,
1363
  'names' =>
1364
  array (
1385
  'country' =>
1386
  array (
1387
  'iso_code' => 'CV',
1388
+ 'iso_code3' => 'CPV',
1389
  'geoname_id' => 3374766,
1390
  'names' =>
1391
  array (
1412
  'country' =>
1413
  array (
1414
  'iso_code' => 'CW',
1415
+ 'iso_code3' => 'CUW',
1416
  'geoname_id' => 7626836,
1417
  'names' =>
1418
  array (
1439
  'country' =>
1440
  array (
1441
  'iso_code' => 'CX',
1442
+ 'iso_code3' => 'CXR',
1443
  'geoname_id' => 2078138,
1444
  'names' =>
1445
  array (
1454
  'zh-CN' => '圣诞岛',
1455
  ),
1456
  ),
1457
+ 'continent' => 'OC',
1458
  'location' =>
1459
  array (
1460
  'latitude' => -10.49141950325,
1466
  'country' =>
1467
  array (
1468
  'iso_code' => 'CY',
1469
+ 'iso_code3' => 'CYP',
1470
  'geoname_id' => 146669,
1471
  'names' =>
1472
  array (
1493
  'country' =>
1494
  array (
1495
  'iso_code' => 'CZ',
1496
+ 'iso_code3' => 'CZE',
1497
  'geoname_id' => 3077311,
1498
  'names' =>
1499
  array (
1520
  'country' =>
1521
  array (
1522
  'iso_code' => 'DE',
1523
+ 'iso_code3' => 'DEU',
1524
  'geoname_id' => 2921044,
1525
  'names' =>
1526
  array (
1538
  'continent' => 'EU',
1539
  'location' =>
1540
  array (
1541
+ 'latitude' => 51.164253602753703,
1542
+ 'longitude' => 10.454065459994251,
1543
  ),
1544
  ),
1545
  'DJ' =>
1547
  'country' =>
1548
  array (
1549
  'iso_code' => 'DJ',
1550
+ 'iso_code3' => 'DJI',
1551
  'geoname_id' => 223816,
1552
  'names' =>
1553
  array (
1574
  'country' =>
1575
  array (
1576
  'iso_code' => 'DK',
1577
+ 'iso_code3' => 'DNK',
1578
  'geoname_id' => 2623032,
1579
  'names' =>
1580
  array (
1601
  'country' =>
1602
  array (
1603
  'iso_code' => 'DM',
1604
+ 'iso_code3' => 'DMA',
1605
  'geoname_id' => 3575830,
1606
  'names' =>
1607
  array (
1628
  'country' =>
1629
  array (
1630
  'iso_code' => 'DO',
1631
+ 'iso_code3' => 'DOM',
1632
  'geoname_id' => 3508796,
1633
  'names' =>
1634
  array (
1646
  'continent' => 'NA',
1647
  'location' =>
1648
  array (
1649
+ 'latitude' => 18.7358162165838,
1650
+ 'longitude' => -70.167215797562747,
1651
  ),
1652
  ),
1653
  'DZ' =>
1655
  'country' =>
1656
  array (
1657
  'iso_code' => 'DZ',
1658
+ 'iso_code3' => 'DZA',
1659
  'geoname_id' => 2589581,
1660
  'names' =>
1661
  array (
1682
  'country' =>
1683
  array (
1684
  'iso_code' => 'EC',
1685
+ 'iso_code3' => 'ECU',
1686
  'geoname_id' => 3658394,
1687
  'names' =>
1688
  array (
1709
  'country' =>
1710
  array (
1711
  'iso_code' => 'EE',
1712
+ 'iso_code3' => 'EST',
1713
  'geoname_id' => 453733,
1714
  'names' =>
1715
  array (
1736
  'country' =>
1737
  array (
1738
  'iso_code' => 'EG',
1739
+ 'iso_code3' => 'EGY',
1740
  'geoname_id' => 357994,
1741
  'names' =>
1742
  array (
1763
  'country' =>
1764
  array (
1765
  'iso_code' => 'EH',
1766
+ 'iso_code3' => 'ESH',
1767
  'geoname_id' => 2461445,
1768
  'names' =>
1769
  array (
1790
  'country' =>
1791
  array (
1792
  'iso_code' => 'ER',
1793
+ 'iso_code3' => 'ERI',
1794
  'geoname_id' => 338010,
1795
  'names' =>
1796
  array (
1817
  'country' =>
1818
  array (
1819
  'iso_code' => 'ES',
1820
+ 'iso_code3' => 'ESP',
1821
  'geoname_id' => 2510769,
1822
  'names' =>
1823
  array (
1844
  'country' =>
1845
  array (
1846
  'iso_code' => 'ET',
1847
+ 'iso_code3' => 'ETH',
1848
  'geoname_id' => 337996,
1849
  'names' =>
1850
  array (
1871
  'country' =>
1872
  array (
1873
  'iso_code' => 'FI',
1874
+ 'iso_code3' => 'FIN',
1875
  'geoname_id' => 660013,
1876
  'names' =>
1877
  array (
1898
  'country' =>
1899
  array (
1900
  'iso_code' => 'FJ',
1901
+ 'iso_code3' => 'FJI',
1902
  'geoname_id' => 2205218,
1903
  'names' =>
1904
  array (
1925
  'country' =>
1926
  array (
1927
  'iso_code' => 'FK',
1928
+ 'iso_code3' => 'FLK',
1929
  'geoname_id' => 3474414,
1930
  'names' =>
1931
  array (
1943
  'continent' => 'SA',
1944
  'location' =>
1945
  array (
1946
+ 'latitude' => -51.80856182349995,
1947
+ 'longitude' => -59.532772162999947,
1948
  ),
1949
  ),
1950
  'FM' =>
1952
  'country' =>
1953
  array (
1954
  'iso_code' => 'FM',
1955
+ 'iso_code3' => 'FSM',
1956
  'geoname_id' => 2081918,
1957
  'names' =>
1958
  array (
1979
  'country' =>
1980
  array (
1981
  'iso_code' => 'FO',
1982
+ 'iso_code3' => 'FRO',
1983
  'geoname_id' => 2622320,
1984
  'names' =>
1985
  array (
2006
  'country' =>
2007
  array (
2008
  'iso_code' => 'FR',
2009
+ 'iso_code3' => 'FRA',
2010
  'geoname_id' => 3017382,
2011
  'names' =>
2012
  array (
2033
  'country' =>
2034
  array (
2035
  'iso_code' => 'GA',
2036
+ 'iso_code3' => 'GAB',
2037
  'geoname_id' => 2400553,
2038
  'names' =>
2039
  array (
2060
  'country' =>
2061
  array (
2062
  'iso_code' => 'GB',
2063
+ 'iso_code3' => 'GBR',
2064
  'geoname_id' => 2635167,
2065
  'names' =>
2066
  array (
2078
  'continent' => 'EU',
2079
  'location' =>
2080
  array (
2081
+ 'latitude' => 54.631818205118002,
2082
+ 'longitude' => -3.4244043338491452,
2083
  ),
2084
  ),
2085
  'GD' =>
2087
  'country' =>
2088
  array (
2089
  'iso_code' => 'GD',
2090
+ 'iso_code3' => 'GRD',
2091
  'geoname_id' => 3580239,
2092
  'names' =>
2093
  array (
2114
  'country' =>
2115
  array (
2116
  'iso_code' => 'GE',
2117
+ 'iso_code3' => 'GEO',
2118
  'geoname_id' => 614540,
2119
  'names' =>
2120
  array (
2141
  'country' =>
2142
  array (
2143
  'iso_code' => 'GF',
2144
+ 'iso_code3' => 'GUF',
2145
  'geoname_id' => 3381670,
2146
  'names' =>
2147
  array (
2168
  'country' =>
2169
  array (
2170
  'iso_code' => 'GG',
2171
+ 'iso_code3' => 'GGY',
2172
  'geoname_id' => 3042362,
2173
  'names' =>
2174
  array (
2195
  'country' =>
2196
  array (
2197
  'iso_code' => 'GH',
2198
+ 'iso_code3' => 'GHA',
2199
  'geoname_id' => 2300660,
2200
  'names' =>
2201
  array (
2222
  'country' =>
2223
  array (
2224
  'iso_code' => 'GI',
2225
+ 'iso_code3' => 'GIB',
2226
  'geoname_id' => 2411586,
2227
  'names' =>
2228
  array (
2249
  'country' =>
2250
  array (
2251
  'iso_code' => 'GL',
2252
+ 'iso_code3' => 'GRL',
2253
  'geoname_id' => 3425505,
2254
  'names' =>
2255
  array (
2276
  'country' =>
2277
  array (
2278
  'iso_code' => 'GM',
2279
+ 'iso_code3' => 'GMB',
2280
  'geoname_id' => 2413451,
2281
  'names' =>
2282
  array (
2303
  'country' =>
2304
  array (
2305
  'iso_code' => 'GN',
2306
+ 'iso_code3' => 'GIN',
2307
  'geoname_id' => 2420477,
2308
  'names' =>
2309
  array (
2330
  'country' =>
2331
  array (
2332
  'iso_code' => 'GP',
2333
+ 'iso_code3' => 'GLP',
2334
  'geoname_id' => 3579143,
2335
  'names' =>
2336
  array (
2357
  'country' =>
2358
  array (
2359
  'iso_code' => 'GQ',
2360
+ 'iso_code3' => 'GNQ',
2361
  'geoname_id' => 2309096,
2362
  'names' =>
2363
  array (
2384
  'country' =>
2385
  array (
2386
  'iso_code' => 'GR',
2387
+ 'iso_code3' => 'GRC',
2388
  'geoname_id' => 390903,
2389
  'names' =>
2390
  array (
2411
  'country' =>
2412
  array (
2413
  'iso_code' => 'GS',
2414
+ 'iso_code3' => 'SGS',
2415
  'geoname_id' => 3474415,
2416
  'names' =>
2417
  array (
2429
  'continent' => 'AN',
2430
  'location' =>
2431
  array (
2432
+ 'latitude' => -56.722045023,
2433
+ 'longitude' => -32.150010337999952,
2434
  ),
2435
  ),
2436
  'GT' =>
2438
  'country' =>
2439
  array (
2440
  'iso_code' => 'GT',
2441
+ 'iso_code3' => 'GTM',
2442
  'geoname_id' => 3595528,
2443
  'names' =>
2444
  array (
2465
  'country' =>
2466
  array (
2467
  'iso_code' => 'GU',
2468
+ 'iso_code3' => 'GUM',
2469
  'geoname_id' => 4043988,
2470
  'names' =>
2471
  array (
2492
  'country' =>
2493
  array (
2494
  'iso_code' => 'GW',
2495
+ 'iso_code3' => 'GNB',
2496
  'geoname_id' => 2372248,
2497
  'names' =>
2498
  array (
2519
  'country' =>
2520
  array (
2521
  'iso_code' => 'GY',
2522
+ 'iso_code3' => 'GUY',
2523
  'geoname_id' => 3378535,
2524
  'names' =>
2525
  array (
2546
  'country' =>
2547
  array (
2548
  'iso_code' => 'HK',
2549
+ 'iso_code3' => 'HKG',
2550
  'geoname_id' => 1819730,
2551
  'names' =>
2552
  array (
2573
  'country' =>
2574
  array (
2575
  'iso_code' => 'HM',
2576
+ 'iso_code3' => 'HMD',
2577
  'geoname_id' => 1547314,
2578
  'names' =>
2579
  array (
2600
  'country' =>
2601
  array (
2602
  'iso_code' => 'HN',
2603
+ 'iso_code3' => 'HND',
2604
  'geoname_id' => 3608932,
2605
  'names' =>
2606
  array (
2627
  'country' =>
2628
  array (
2629
  'iso_code' => 'HR',
2630
+ 'iso_code3' => 'HRV',
2631
  'geoname_id' => 3202326,
2632
  'names' =>
2633
  array (
2654
  'country' =>
2655
  array (
2656
  'iso_code' => 'HT',
2657
+ 'iso_code3' => 'HTI',
2658
  'geoname_id' => 3723988,
2659
  'names' =>
2660
  array (
2681
  'country' =>
2682
  array (
2683
  'iso_code' => 'HU',
2684
+ 'iso_code3' => 'HUN',
2685
  'geoname_id' => 719819,
2686
  'names' =>
2687
  array (
2708
  'country' =>
2709
  array (
2710
  'iso_code' => 'ID',
2711
+ 'iso_code3' => 'IDN',
2712
  'geoname_id' => 1643084,
2713
  'names' =>
2714
  array (
2735
  'country' =>
2736
  array (
2737
  'iso_code' => 'IE',
2738
+ 'iso_code3' => 'IRL',
2739
  'geoname_id' => 2963597,
2740
  'names' =>
2741
  array (
2753
  'continent' => 'EU',
2754
  'location' =>
2755
  array (
2756
+ 'latitude' => 53.415246157117849,
2757
+ 'longitude' => -8.2390267417035759,
2758
  ),
2759
  ),
2760
  'IL' =>
2762
  'country' =>
2763
  array (
2764
  'iso_code' => 'IL',
2765
+ 'iso_code3' => 'ISR',
2766
  'geoname_id' => 294640,
2767
  'names' =>
2768
  array (
2789
  'country' =>
2790
  array (
2791
  'iso_code' => 'IM',
2792
+ 'iso_code3' => 'IMN',
2793
  'geoname_id' => 3042225,
2794
  'names' =>
2795
  array (
2816
  'country' =>
2817
  array (
2818
  'iso_code' => 'IN',
2819
+ 'iso_code3' => 'IND',
2820
  'geoname_id' => 1269750,
2821
  'names' =>
2822
  array (
2834
  'continent' => 'AS',
2835
  'location' =>
2836
  array (
2837
+ 'latitude' => 21.14025058611815,
2838
+ 'longitude' => 82.949655493136149,
2839
  ),
2840
  ),
2841
  'IO' =>
2843
  'country' =>
2844
  array (
2845
  'iso_code' => 'IO',
2846
+ 'iso_code3' => 'IOT',
2847
  'geoname_id' => 1282588,
2848
  'names' =>
2849
  array (
2870
  'country' =>
2871
  array (
2872
  'iso_code' => 'IQ',
2873
+ 'iso_code3' => 'IRQ',
2874
  'geoname_id' => 99237,
2875
  'names' =>
2876
  array (
2897
  'country' =>
2898
  array (
2899
  'iso_code' => 'IR',
2900
+ 'iso_code3' => 'IRN',
2901
  'geoname_id' => 130758,
2902
  'names' =>
2903
  array (
2924
  'country' =>
2925
  array (
2926
  'iso_code' => 'IS',
2927
+ 'iso_code3' => 'ISL',
2928
  'geoname_id' => 2629691,
2929
  'names' =>
2930
  array (
2942
  'continent' => 'EU',
2943
  'location' =>
2944
  array (
2945
+ 'latitude' => 64.966093044213849,
2946
+ 'longitude' => -19.013648005306301,
2947
  ),
2948
  ),
2949
  'IT' =>
2951
  'country' =>
2952
  array (
2953
  'iso_code' => 'IT',
2954
+ 'iso_code3' => 'ITA',
2955
  'geoname_id' => 3175395,
2956
  'names' =>
2957
  array (
2978
  'country' =>
2979
  array (
2980
  'iso_code' => 'JE',
2981
+ 'iso_code3' => 'JEY',
2982
  'geoname_id' => 3042142,
2983
  'names' =>
2984
  array (
3005
  'country' =>
3006
  array (
3007
  'iso_code' => 'JM',
3008
+ 'iso_code3' => 'JAM',
3009
  'geoname_id' => 3489940,
3010
  'names' =>
3011
  array (
3023
  'continent' => 'NA',
3024
  'location' =>
3025
  array (
3026
+ 'latitude' => 18.1153814024428,
3027
+ 'longitude' => -77.276052640169155,
3028
  ),
3029
  ),
3030
  'JO' =>
3032
  'country' =>
3033
  array (
3034
  'iso_code' => 'JO',
3035
+ 'iso_code3' => 'JOR',
3036
  'geoname_id' => 248816,
3037
  'names' =>
3038
  array (
3059
  'country' =>
3060
  array (
3061
  'iso_code' => 'JP',
3062
+ 'iso_code3' => 'JPN',
3063
  'geoname_id' => 1861060,
3064
  'names' =>
3065
  array (
3077
  'continent' => 'AS',
3078
  'location' =>
3079
  array (
3080
+ 'latitude' => 34.8890634005,
3081
+ 'longitude' => 134.37555597300002,
3082
  ),
3083
  ),
3084
  'KE' =>
3086
  'country' =>
3087
  array (
3088
  'iso_code' => 'KE',
3089
+ 'iso_code3' => 'KEN',
3090
  'geoname_id' => 192950,
3091
  'names' =>
3092
  array (
3113
  'country' =>
3114
  array (
3115
  'iso_code' => 'KG',
3116
+ 'iso_code3' => 'KGZ',
3117
  'geoname_id' => 1527747,
3118
  'names' =>
3119
  array (
3140
  'country' =>
3141
  array (
3142
  'iso_code' => 'KH',
3143
+ 'iso_code3' => 'KHM',
3144
  'geoname_id' => 1831722,
3145
  'names' =>
3146
  array (
3167
  'country' =>
3168
  array (
3169
  'iso_code' => 'KI',
3170
+ 'iso_code3' => 'KIR',
3171
  'geoname_id' => 4030945,
3172
  'names' =>
3173
  array (
3194
  'country' =>
3195
  array (
3196
  'iso_code' => 'KM',
3197
+ 'iso_code3' => 'COM',
3198
  'geoname_id' => 921929,
3199
  'names' =>
3200
  array (
3221
  'country' =>
3222
  array (
3223
  'iso_code' => 'KN',
3224
+ 'iso_code3' => 'KNA',
3225
  'geoname_id' => 3575174,
3226
  'names' =>
3227
  array (
3248
  'country' =>
3249
  array (
3250
  'iso_code' => 'KP',
3251
+ 'iso_code3' => 'PRK',
3252
  'geoname_id' => 1873107,
3253
  'names' =>
3254
  array (
3275
  'country' =>
3276
  array (
3277
  'iso_code' => 'KR',
3278
+ 'iso_code3' => 'KOR',
3279
  'geoname_id' => 1835841,
3280
  'names' =>
3281
  array (
3302
  'country' =>
3303
  array (
3304
  'iso_code' => 'KW',
3305
+ 'iso_code3' => 'KWT',
3306
  'geoname_id' => 285570,
3307
  'names' =>
3308
  array (
3329
  'country' =>
3330
  array (
3331
  'iso_code' => 'KY',
3332
+ 'iso_code3' => 'CYM',
3333
  'geoname_id' => 3580718,
3334
  'names' =>
3335
  array (
3356
  'country' =>
3357
  array (
3358
  'iso_code' => 'KZ',
3359
+ 'iso_code3' => 'KAZ',
3360
  'geoname_id' => 1522867,
3361
  'names' =>
3362
  array (
3383
  'country' =>
3384
  array (
3385
  'iso_code' => 'LA',
3386
+ 'iso_code3' => 'LAO',
3387
  'geoname_id' => 1655842,
3388
  'names' =>
3389
  array (
3410
  'country' =>
3411
  array (
3412
  'iso_code' => 'LB',
3413
+ 'iso_code3' => 'LBN',
3414
  'geoname_id' => 272103,
3415
  'names' =>
3416
  array (
3437
  'country' =>
3438
  array (
3439
  'iso_code' => 'LC',
3440
+ 'iso_code3' => 'LCA',
3441
  'geoname_id' => 3576468,
3442
  'names' =>
3443
  array (
3464
  'country' =>
3465
  array (
3466
  'iso_code' => 'LI',
3467
+ 'iso_code3' => 'LIE',
3468
  'geoname_id' => 3042058,
3469
  'names' =>
3470
  array (
3491
  'country' =>
3492
  array (
3493
  'iso_code' => 'LK',
3494
+ 'iso_code3' => 'LKA',
3495
  'geoname_id' => 1227603,
3496
  'names' =>
3497
  array (
3518
  'country' =>
3519
  array (
3520
  'iso_code' => 'LR',
3521
+ 'iso_code3' => 'LBR',
3522
  'geoname_id' => 2275384,
3523
  'names' =>
3524
  array (
3545
  'country' =>
3546
  array (
3547
  'iso_code' => 'LS',
3548
+ 'iso_code3' => 'LSO',
3549
  'geoname_id' => 932692,
3550
  'names' =>
3551
  array (
3563
  'continent' => 'AF',
3564
  'location' =>
3565
  array (
3566
+ 'latitude' => -29.623187501499949,
3567
+ 'longitude' => 28.233469970000051,
3568
  ),
3569
  ),
3570
  'LT' =>
3572
  'country' =>
3573
  array (
3574
  'iso_code' => 'LT',
3575
+ 'iso_code3' => 'LTU',
3576
  'geoname_id' => 597427,
3577
  'names' =>
3578
  array (
3599
  'country' =>
3600
  array (
3601
  'iso_code' => 'LU',
3602
+ 'iso_code3' => 'LUX',
3603
  'geoname_id' => 2960313,
3604
  'names' =>
3605
  array (
3626
  'country' =>
3627
  array (
3628
  'iso_code' => 'LV',
3629
+ 'iso_code3' => 'LVA',
3630
  'geoname_id' => 458258,
3631
  'names' =>
3632
  array (
3653
  'country' =>
3654
  array (
3655
  'iso_code' => 'LY',
3656
+ 'iso_code3' => 'LBY',
3657
  'geoname_id' => 2215636,
3658
  'names' =>
3659
  array (
3680
  'country' =>
3681
  array (
3682
  'iso_code' => 'MA',
3683
+ 'iso_code3' => 'MAR',
3684
  'geoname_id' => 2542007,
3685
  'names' =>
3686
  array (
3707
  'country' =>
3708
  array (
3709
  'iso_code' => 'MC',
3710
+ 'iso_code3' => 'MCO',
3711
  'geoname_id' => 2993457,
3712
  'names' =>
3713
  array (
3734
  'country' =>
3735
  array (
3736
  'iso_code' => 'MD',
3737
+ 'iso_code3' => 'MDA',
3738
  'geoname_id' => 617790,
3739
  'names' =>
3740
  array (
3761
  'country' =>
3762
  array (
3763
  'iso_code' => 'ME',
3764
+ 'iso_code3' => 'MNE',
3765
  'geoname_id' => 3194884,
3766
  'names' =>
3767
  array (
3788
  'country' =>
3789
  array (
3790
  'iso_code' => 'MF',
3791
+ 'iso_code3' => 'MAF',
3792
  'geoname_id' => 3578421,
3793
  'names' =>
3794
  array (
3815
  'country' =>
3816
  array (
3817
  'iso_code' => 'MG',
3818
+ 'iso_code3' => 'MDG',
3819
  'geoname_id' => 1062947,
3820
  'names' =>
3821
  array (
3842
  'country' =>
3843
  array (
3844
  'iso_code' => 'MH',
3845
+ 'iso_code3' => 'MHL',
3846
  'geoname_id' => 2080185,
3847
  'names' =>
3848
  array (
3869
  'country' =>
3870
  array (
3871
  'iso_code' => 'MK',
3872
+ 'iso_code3' => 'MKD',
3873
  'geoname_id' => 718075,
3874
  'names' =>
3875
  array (
3896
  'country' =>
3897
  array (
3898
  'iso_code' => 'ML',
3899
+ 'iso_code3' => 'MLI',
3900
  'geoname_id' => 2453866,
3901
  'names' =>
3902
  array (
3923
  'country' =>
3924
  array (
3925
  'iso_code' => 'MM',
3926
+ 'iso_code3' => 'MMR',
3927
  'geoname_id' => 1327865,
3928
  'names' =>
3929
  array (
3950
  'country' =>
3951
  array (
3952
  'iso_code' => 'MN',
3953
+ 'iso_code3' => 'MNG',
3954
  'geoname_id' => 2029969,
3955
  'names' =>
3956
  array (
3977
  'country' =>
3978
  array (
3979
  'iso_code' => 'MO',
3980
+ 'iso_code3' => 'MAC',
3981
  'geoname_id' => 1821275,
3982
  'names' =>
3983
  array (
4004
  'country' =>
4005
  array (
4006
  'iso_code' => 'MP',
4007
+ 'iso_code3' => 'MNP',
4008
  'geoname_id' => 4041468,
4009
  'names' =>
4010
  array (
4031
  'country' =>
4032
  array (
4033
  'iso_code' => 'MQ',
4034
+ 'iso_code3' => 'MTQ',
4035
  'geoname_id' => 3570311,
4036
  'names' =>
4037
  array (
4058
  'country' =>
4059
  array (
4060
  'iso_code' => 'MR',
4061
+ 'iso_code3' => 'MRT',
4062
  'geoname_id' => 2378080,
4063
  'names' =>
4064
  array (
4085
  'country' =>
4086
  array (
4087
  'iso_code' => 'MS',
4088
+ 'iso_code3' => 'MSR',
4089
  'geoname_id' => 3578097,
4090
  'names' =>
4091
  array (
4112
  'country' =>
4113
  array (
4114
  'iso_code' => 'MT',
4115
+ 'iso_code3' => 'MLT',
4116
  'geoname_id' => 2562770,
4117
  'names' =>
4118
  array (
4139
  'country' =>
4140
  array (
4141
  'iso_code' => 'MU',
4142
+ 'iso_code3' => 'MUS',
4143
  'geoname_id' => 934292,
4144
  'names' =>
4145
  array (
4166
  'country' =>
4167
  array (
4168
  'iso_code' => 'MV',
4169
+ 'iso_code3' => 'MDV',
4170
  'geoname_id' => 1282028,
4171
  'names' =>
4172
  array (
4193
  'country' =>
4194
  array (
4195
  'iso_code' => 'MW',
4196
+ 'iso_code3' => 'MWI',
4197
  'geoname_id' => 927384,
4198
  'names' =>
4199
  array (
4220
  'country' =>
4221
  array (
4222
  'iso_code' => 'MX',
4223
+ 'iso_code3' => 'MEX',
4224
  'geoname_id' => 3996063,
4225
  'names' =>
4226
  array (
4247
  'country' =>
4248
  array (
4249
  'iso_code' => 'MY',
4250
+ 'iso_code3' => 'MYS',
4251
  'geoname_id' => 1733045,
4252
  'names' =>
4253
  array (
4274
  'country' =>
4275
  array (
4276
  'iso_code' => 'MZ',
4277
+ 'iso_code3' => 'MOZ',
4278
  'geoname_id' => 1036973,
4279
  'names' =>
4280
  array (
4301
  'country' =>
4302
  array (
4303
  'iso_code' => 'NA',
4304
+ 'iso_code3' => 'NAM',
4305
  'geoname_id' => 3355338,
4306
  'names' =>
4307
  array (
4328
  'country' =>
4329
  array (
4330
  'iso_code' => 'NC',
4331
+ 'iso_code3' => 'NCL',
4332
  'geoname_id' => 2139685,
4333
  'names' =>
4334
  array (
4355
  'country' =>
4356
  array (
4357
  'iso_code' => 'NE',
4358
+ 'iso_code3' => 'NER',
4359
  'geoname_id' => 2440476,
4360
  'names' =>
4361
  array (
4382
  'country' =>
4383
  array (
4384
  'iso_code' => 'NF',
4385
+ 'iso_code3' => 'NFK',
4386
  'geoname_id' => 2155115,
4387
  'names' =>
4388
  array (
4409
  'country' =>
4410
  array (
4411
  'iso_code' => 'NG',
4412
+ 'iso_code3' => 'NGA',
4413
  'geoname_id' => 2328926,
4414
  'names' =>
4415
  array (
4436
  'country' =>
4437
  array (
4438
  'iso_code' => 'NI',
4439
+ 'iso_code3' => 'NIC',
4440
  'geoname_id' => 3617476,
4441
  'names' =>
4442
  array (
4463
  'country' =>
4464
  array (
4465
  'iso_code' => 'NL',
4466
+ 'iso_code3' => 'NLD',
4467
  'geoname_id' => 2750405,
4468
  'names' =>
4469
  array (
4481
  'continent' => 'EU',
4482
  'location' =>
4483
  array (
4484
+ 'latitude' => 52.1330400319425,
4485
+ 'longitude' => 5.2929384320746102,
4486
  ),
4487
  ),
4488
  'NO' =>
4490
  'country' =>
4491
  array (
4492
  'iso_code' => 'NO',
4493
+ 'iso_code3' => 'NOR',
4494
  'geoname_id' => 3144096,
4495
  'names' =>
4496
  array (
4508
  'continent' => 'EU',
4509
  'location' =>
4510
  array (
4511
+ 'latitude' => 64.582677167394678,
4512
+ 'longitude' => 17.852782042042108,
4513
  ),
4514
  ),
4515
  'NP' =>
4517
  'country' =>
4518
  array (
4519
  'iso_code' => 'NP',
4520
+ 'iso_code3' => 'NPL',
4521
  'geoname_id' => 1282988,
4522
  'names' =>
4523
  array (
4544
  'country' =>
4545
  array (
4546
  'iso_code' => 'NR',
4547
+ 'iso_code3' => 'NRU',
4548
  'geoname_id' => 2110425,
4549
  'names' =>
4550
  array (
4571
  'country' =>
4572
  array (
4573
  'iso_code' => 'NU',
4574
+ 'iso_code3' => 'NIU',
4575
  'geoname_id' => 4036232,
4576
  'names' =>
4577
  array (
4598
  'country' =>
4599
  array (
4600
  'iso_code' => 'NZ',
4601
+ 'iso_code3' => 'NZL',
4602
  'geoname_id' => 2186224,
4603
  'names' =>
4604
  array (
4625
  'country' =>
4626
  array (
4627
  'iso_code' => 'OM',
4628
+ 'iso_code3' => 'OMN',
4629
  'geoname_id' => 286963,
4630
  'names' =>
4631
  array (
4652
  'country' =>
4653
  array (
4654
  'iso_code' => 'PA',
4655
+ 'iso_code3' => 'PAN',
4656
  'geoname_id' => 3703430,
4657
  'names' =>
4658
  array (
4670
  'continent' => 'NA',
4671
  'location' =>
4672
  array (
4673
+ 'latitude' => 8.4248912279636592,
4674
+ 'longitude' => -80.104381307849252,
4675
  ),
4676
  ),
4677
  'PE' =>
4679
  'country' =>
4680
  array (
4681
  'iso_code' => 'PE',
4682
+ 'iso_code3' => 'PER',
4683
  'geoname_id' => 3932488,
4684
  'names' =>
4685
  array (
4706
  'country' =>
4707
  array (
4708
  'iso_code' => 'PF',
4709
+ 'iso_code3' => 'PYF',
4710
  'geoname_id' => 4030656,
4711
  'names' =>
4712
  array (
4733
  'country' =>
4734
  array (
4735
  'iso_code' => 'PG',
4736
+ 'iso_code3' => 'PNG',
4737
  'geoname_id' => 2088628,
4738
  'names' =>
4739
  array (
4760
  'country' =>
4761
  array (
4762
  'iso_code' => 'PH',
4763
+ 'iso_code3' => 'PHL',
4764
  'geoname_id' => 1694008,
4765
  'names' =>
4766
  array (
4779
  'location' =>
4780
  array (
4781
  'latitude' => 12.88199172124097,
4782
+ 'longitude' => 121.76691925886163,
4783
  ),
4784
  ),
4785
  'PK' =>
4787
  'country' =>
4788
  array (
4789
  'iso_code' => 'PK',
4790
+ 'iso_code3' => 'PAK',
4791
  'geoname_id' => 1168579,
4792
  'names' =>
4793
  array (
4814
  'country' =>
4815
  array (
4816
  'iso_code' => 'PL',
4817
+ 'iso_code3' => 'POL',
4818
  'geoname_id' => 798544,
4819
  'names' =>
4820
  array (
4832
  'continent' => 'EU',
4833
  'location' =>
4834
  array (
4835
+ 'latitude' => 51.918917589430599,
4836
+ 'longitude' => 19.134333936256098,
4837
  ),
4838
  ),
4839
  'PM' =>
4841
  'country' =>
4842
  array (
4843
  'iso_code' => 'PM',
4844
+ 'iso_code3' => 'SPM',
4845
  'geoname_id' => 3424932,
4846
  'names' =>
4847
  array (
4868
  'country' =>
4869
  array (
4870
  'iso_code' => 'PN',
4871
+ 'iso_code3' => 'PCN',
4872
  'geoname_id' => 4030699,
4873
  'names' =>
4874
  array (
4886
  'continent' => 'OC',
4887
  'location' =>
4888
  array (
4889
+ 'latitude' => -24.501251809927449,
4890
+ 'longitude' => -126.56492005559713,
4891
  ),
4892
  ),
4893
  'PR' =>
4895
  'country' =>
4896
  array (
4897
  'iso_code' => 'PR',
4898
+ 'iso_code3' => 'PRI',
4899
  'geoname_id' => 4566966,
4900
  'names' =>
4901
  array (
4914
  'location' =>
4915
  array (
4916
  'latitude' => 18.223285499999999,
4917
+ 'longitude' => -66.592903838338145,
4918
  ),
4919
  ),
4920
  'PS' =>
4922
  'country' =>
4923
  array (
4924
  'iso_code' => 'PS',
4925
+ 'iso_code3' => 'PSE',
4926
  'geoname_id' => 6254930,
4927
  'names' =>
4928
  array (
4949
  'country' =>
4950
  array (
4951
  'iso_code' => 'PT',
4952
+ 'iso_code3' => 'PRT',
4953
  'geoname_id' => 2264397,
4954
  'names' =>
4955
  array (
4976
  'country' =>
4977
  array (
4978
  'iso_code' => 'PW',
4979
+ 'iso_code3' => 'PLW',
4980
  'geoname_id' => 1559582,
4981
  'names' =>
4982
  array (
5003
  'country' =>
5004
  array (
5005
  'iso_code' => 'PY',
5006
+ 'iso_code3' => 'PRY',
5007
  'geoname_id' => 3437598,
5008
  'names' =>
5009
  array (
5030
  'country' =>
5031
  array (
5032
  'iso_code' => 'QA',
5033
+ 'iso_code3' => 'QAT',
5034
  'geoname_id' => 289688,
5035
  'names' =>
5036
  array (
5057
  'country' =>
5058
  array (
5059
  'iso_code' => 'RE',
5060
+ 'iso_code3' => 'REU',
5061
  'geoname_id' => 935317,
5062
  'names' =>
5063
  array (
5084
  'country' =>
5085
  array (
5086
  'iso_code' => 'RO',
5087
+ 'iso_code3' => 'ROU',
5088
  'geoname_id' => 798549,
5089
  'names' =>
5090
  array (
5102
  'continent' => 'EU',
5103
  'location' =>
5104
  array (
5105
+ 'latitude' => 45.942203927915045,
5106
+ 'longitude' => 24.98864679799815,
5107
  ),
5108
  ),
5109
  'RS' =>
5111
  'country' =>
5112
  array (
5113
  'iso_code' => 'RS',
5114
+ 'iso_code3' => 'SRB',
5115
  'geoname_id' => 6290252,
5116
  'names' =>
5117
  array (
5138
  'country' =>
5139
  array (
5140
  'iso_code' => 'RU',
5141
+ 'iso_code3' => 'RUS',
5142
  'geoname_id' => 2017370,
5143
  'names' =>
5144
  array (
5165
  'country' =>
5166
  array (
5167
  'iso_code' => 'RW',
5168
+ 'iso_code3' => 'RWA',
5169
  'geoname_id' => 49518,
5170
  'names' =>
5171
  array (
5183
  'continent' => 'AF',
5184
  'location' =>
5185
  array (
5186
+ 'latitude' => -1.9436984046076602,
5187
+ 'longitude' => 29.880738731107598,
5188
  ),
5189
  ),
5190
  'SA' =>
5192
  'country' =>
5193
  array (
5194
  'iso_code' => 'SA',
5195
+ 'iso_code3' => 'SAU',
5196
  'geoname_id' => 102358,
5197
  'names' =>
5198
  array (
5210
  'continent' => 'AS',
5211
  'location' =>
5212
  array (
5213
+ 'latitude' => 24.268916513062798,
5214
+ 'longitude' => 45.08113850000003,
5215
  ),
5216
  ),
5217
  'SB' =>
5219
  'country' =>
5220
  array (
5221
  'iso_code' => 'SB',
5222
+ 'iso_code3' => 'SLB',
5223
  'geoname_id' => 2103350,
5224
  'names' =>
5225
  array (
5246
  'country' =>
5247
  array (
5248
  'iso_code' => 'SC',
5249
+ 'iso_code3' => 'SYC',
5250
  'geoname_id' => 241170,
5251
  'names' =>
5252
  array (
5273
  'country' =>
5274
  array (
5275
  'iso_code' => 'SD',
5276
+ 'iso_code3' => 'SDN',
5277
  'geoname_id' => 366755,
5278
  'names' =>
5279
  array (
5300
  'country' =>
5301
  array (
5302
  'iso_code' => 'SE',
5303
+ 'iso_code3' => 'SWE',
5304
  'geoname_id' => 2661886,
5305
  'names' =>
5306
  array (
5318
  'continent' => 'EU',
5319
  'location' =>
5320
  array (
5321
+ 'latitude' => 62.198705544344051,
5322
+ 'longitude' => 17.6323723126125,
5323
  ),
5324
  ),
5325
  'SG' =>
5327
  'country' =>
5328
  array (
5329
  'iso_code' => 'SG',
5330
+ 'iso_code3' => 'SGP',
5331
  'geoname_id' => 1880251,
5332
  'names' =>
5333
  array (
5354
  'country' =>
5355
  array (
5356
  'iso_code' => 'SH',
5357
+ 'iso_code3' => 'SHN',
5358
  'geoname_id' => 3370751,
5359
  'names' =>
5360
  array (
5381
  'country' =>
5382
  array (
5383
  'iso_code' => 'SI',
5384
+ 'iso_code3' => 'SVN',
5385
  'geoname_id' => 3190538,
5386
  'names' =>
5387
  array (
5408
  'country' =>
5409
  array (
5410
  'iso_code' => 'SJ',
5411
+ 'iso_code3' => 'SJM',
5412
  'geoname_id' => 607072,
5413
  'names' =>
5414
  array (
5435
  'country' =>
5436
  array (
5437
  'iso_code' => 'SK',
5438
+ 'iso_code3' => 'SVK',
5439
  'geoname_id' => 3057568,
5440
  'names' =>
5441
  array (
5462
  'country' =>
5463
  array (
5464
  'iso_code' => 'SL',
5465
+ 'iso_code3' => 'SLE',
5466
  'geoname_id' => 2403846,
5467
  'names' =>
5468
  array (
5489
  'country' =>
5490
  array (
5491
  'iso_code' => 'SM',
5492
+ 'iso_code3' => 'SMR',
5493
  'geoname_id' => 3168068,
5494
  'names' =>
5495
  array (
5516
  'country' =>
5517
  array (
5518
  'iso_code' => 'SN',
5519
+ 'iso_code3' => 'SEN',
5520
  'geoname_id' => 2245662,
5521
  'names' =>
5522
  array (
5543
  'country' =>
5544
  array (
5545
  'iso_code' => 'SO',
5546
+ 'iso_code3' => 'SOM',
5547
  'geoname_id' => 51537,
5548
  'names' =>
5549
  array (
5570
  'country' =>
5571
  array (
5572
  'iso_code' => 'SR',
5573
+ 'iso_code3' => 'SUR',
5574
  'geoname_id' => 3382998,
5575
  'names' =>
5576
  array (
5597
  'country' =>
5598
  array (
5599
  'iso_code' => 'SS',
5600
+ 'iso_code3' => 'SSD',
5601
  'geoname_id' => 7909807,
5602
  'names' =>
5603
  array (
5624
  'country' =>
5625
  array (
5626
  'iso_code' => 'ST',
5627
+ 'iso_code3' => 'STP',
5628
  'geoname_id' => 2410758,
5629
  'names' =>
5630
  array (
5651
  'country' =>
5652
  array (
5653
  'iso_code' => 'SV',
5654
+ 'iso_code3' => 'SLV',
5655
  'geoname_id' => 3585968,
5656
  'names' =>
5657
  array (
5678
  'country' =>
5679
  array (
5680
  'iso_code' => 'SX',
5681
+ 'iso_code3' => 'SXM',
5682
  'geoname_id' => 7609695,
5683
  'names' =>
5684
  array (
5705
  'country' =>
5706
  array (
5707
  'iso_code' => 'SY',
5708
+ 'iso_code3' => 'SYR',
5709
  'geoname_id' => 163843,
5710
  'names' =>
5711
  array (
5732
  'country' =>
5733
  array (
5734
  'iso_code' => 'SZ',
5735
+ 'iso_code3' => 'SWZ',
5736
  'geoname_id' => 934841,
5737
  'names' =>
5738
  array (
5759
  'country' =>
5760
  array (
5761
  'iso_code' => 'TC',
5762
+ 'iso_code3' => 'TCA',
5763
  'geoname_id' => 3576916,
5764
  'names' =>
5765
  array (
5786
  'country' =>
5787
  array (
5788
  'iso_code' => 'TD',
5789
+ 'iso_code3' => 'TCD',
5790
  'geoname_id' => 2434508,
5791
  'names' =>
5792
  array (
5813
  'country' =>
5814
  array (
5815
  'iso_code' => 'TF',
5816
+ 'iso_code3' => 'ATF',
5817
  'geoname_id' => 1546748,
5818
  'names' =>
5819
  array (
5840
  'country' =>
5841
  array (
5842
  'iso_code' => 'TG',
5843
+ 'iso_code3' => 'TGO',
5844
  'geoname_id' => 2363686,
5845
  'names' =>
5846
  array (
5867
  'country' =>
5868
  array (
5869
  'iso_code' => 'TH',
5870
+ 'iso_code3' => 'THA',
5871
  'geoname_id' => 1605651,
5872
  'names' =>
5873
  array (
5894
  'country' =>
5895
  array (
5896
  'iso_code' => 'TJ',
5897
+ 'iso_code3' => 'TJK',
5898
  'geoname_id' => 1220409,
5899
  'names' =>
5900
  array (
5921
  'country' =>
5922
  array (
5923
  'iso_code' => 'TK',
5924
+ 'iso_code3' => 'TKL',
5925
  'geoname_id' => 4031074,
5926
  'names' =>
5927
  array (
5948
  'country' =>
5949
  array (
5950
  'iso_code' => 'TL',
5951
+ 'iso_code3' => 'TLS',
5952
  'geoname_id' => 1966436,
5953
  'names' =>
5954
  array (
5975
  'country' =>
5976
  array (
5977
  'iso_code' => 'TM',
5978
+ 'iso_code3' => 'TKM',
5979
  'geoname_id' => 1218197,
5980
  'names' =>
5981
  array (
6002
  'country' =>
6003
  array (
6004
  'iso_code' => 'TN',
6005
+ 'iso_code3' => 'TUN',
6006
  'geoname_id' => 2464461,
6007
  'names' =>
6008
  array (
6029
  'country' =>
6030
  array (
6031
  'iso_code' => 'TO',
6032
+ 'iso_code3' => 'TON',
6033
  'geoname_id' => 4032283,
6034
  'names' =>
6035
  array (
6056
  'country' =>
6057
  array (
6058
  'iso_code' => 'TR',
6059
+ 'iso_code3' => 'TUR',
6060
  'geoname_id' => 298795,
6061
  'names' =>
6062
  array (
6083
  'country' =>
6084
  array (
6085
  'iso_code' => 'TT',
6086
+ 'iso_code3' => 'TTO',
6087
  'geoname_id' => 3573591,
6088
  'names' =>
6089
  array (
6110
  'country' =>
6111
  array (
6112
  'iso_code' => 'TV',
6113
+ 'iso_code3' => 'TUV',
6114
  'geoname_id' => 2110297,
6115
  'names' =>
6116
  array (
6137
  'country' =>
6138
  array (
6139
  'iso_code' => 'TW',
6140
+ 'iso_code3' => 'TWN',
6141
  'geoname_id' => 1668284,
6142
  'names' =>
6143
  array (
6164
  'country' =>
6165
  array (
6166
  'iso_code' => 'TZ',
6167
+ 'iso_code3' => 'TZA',
6168
  'geoname_id' => 149590,
6169
  'names' =>
6170
  array (
6191
  'country' =>
6192
  array (
6193
  'iso_code' => 'UA',
6194
+ 'iso_code3' => 'UKR',
6195
  'geoname_id' => 690791,
6196
  'names' =>
6197
  array (
6218
  'country' =>
6219
  array (
6220
  'iso_code' => 'UG',
6221
+ 'iso_code3' => 'UGA',
6222
  'geoname_id' => 226074,
6223
  'names' =>
6224
  array (
6236
  'continent' => 'AF',
6237
  'location' =>
6238
  array (
6239
+ 'latitude' => 1.3749193692074451,
6240
+ 'longitude' => 32.287259435275899,
6241
  ),
6242
  ),
6243
  'UM' =>
6245
  'country' =>
6246
  array (
6247
  'iso_code' => 'UM',
6248
+ 'iso_code3' => 'UMI',
6249
  'geoname_id' => 5854968,
6250
  'names' =>
6251
  array (
6272
  'country' =>
6273
  array (
6274
  'iso_code' => 'US',
6275
+ 'iso_code3' => 'USA',
6276
  'geoname_id' => 6252001,
6277
  'names' =>
6278
  array (
6299
  'country' =>
6300
  array (
6301
  'iso_code' => 'UY',
6302
+ 'iso_code3' => 'URY',
6303
  'geoname_id' => 3439705,
6304
  'names' =>
6305
  array (
6326
  'country' =>
6327
  array (
6328
  'iso_code' => 'UZ',
6329
+ 'iso_code3' => 'UZB',
6330
  'geoname_id' => 1512440,
6331
  'names' =>
6332
  array (
6353
  'country' =>
6354
  array (
6355
  'iso_code' => 'VA',
6356
+ 'iso_code3' => 'VAT',
6357
  'geoname_id' => 3164670,
6358
  'names' =>
6359
  array (
6380
  'country' =>
6381
  array (
6382
  'iso_code' => 'VC',
6383
+ 'iso_code3' => 'VCT',
6384
  'geoname_id' => 3577815,
6385
  'names' =>
6386
  array (
6407
  'country' =>
6408
  array (
6409
  'iso_code' => 'VE',
6410
+ 'iso_code3' => 'VEN',
6411
  'geoname_id' => 3625428,
6412
  'names' =>
6413
  array (
6434
  'country' =>
6435
  array (
6436
  'iso_code' => 'VG',
6437
+ 'iso_code3' => 'VGB',
6438
  'geoname_id' => 3577718,
6439
  'names' =>
6440
  array (
6461
  'country' =>
6462
  array (
6463
  'iso_code' => 'VI',
6464
+ 'iso_code3' => 'VIR',
6465
  'geoname_id' => 4796775,
6466
  'names' =>
6467
  array (
6488
  'country' =>
6489
  array (
6490
  'iso_code' => 'VN',
6491
+ 'iso_code3' => 'VNM',
6492
  'geoname_id' => 1562822,
6493
  'names' =>
6494
  array (
6515
  'country' =>
6516
  array (
6517
  'iso_code' => 'VU',
6518
+ 'iso_code3' => 'VUT',
6519
  'geoname_id' => 2134431,
6520
  'names' =>
6521
  array (
6542
  'country' =>
6543
  array (
6544
  'iso_code' => 'WF',
6545
+ 'iso_code3' => 'WLF',
6546
  'geoname_id' => 4034749,
6547
  'names' =>
6548
  array (
6569
  'country' =>
6570
  array (
6571
  'iso_code' => 'WS',
6572
+ 'iso_code3' => 'WSM',
6573
  'geoname_id' => 4034894,
6574
  'names' =>
6575
  array (
6596
  'country' =>
6597
  array (
6598
  'iso_code' => 'XK',
6599
+ 'iso_code3' => 'XKX',
6600
  'geoname_id' => 831053,
6601
  'names' =>
6602
  array (
6623
  'country' =>
6624
  array (
6625
  'iso_code' => 'YE',
6626
+ 'iso_code3' => 'YEM',
6627
  'geoname_id' => 69543,
6628
  'names' =>
6629
  array (
6650
  'country' =>
6651
  array (
6652
  'iso_code' => 'YT',
6653
+ 'iso_code3' => 'MYT',
6654
  'geoname_id' => 1024031,
6655
  'names' =>
6656
  array (
6677
  'country' =>
6678
  array (
6679
  'iso_code' => 'ZA',
6680
+ 'iso_code3' => 'ZAF',
6681
  'geoname_id' => 953987,
6682
  'names' =>
6683
  array (
6695
  'continent' => 'AF',
6696
  'location' =>
6697
  array (
6698
+ 'latitude' => -28.479600030499899,
6699
+ 'longitude' => 24.6984374725,
6700
  ),
6701
  ),
6702
  'ZM' =>
6704
  'country' =>
6705
  array (
6706
  'iso_code' => 'ZM',
6707
+ 'iso_code3' => 'ZMB',
6708
  'geoname_id' => 895949,
6709
  'names' =>
6710
  array (
6731
  'country' =>
6732
  array (
6733
  'iso_code' => 'ZW',
6734
+ 'iso_code3' => 'ZWE',
6735
  'geoname_id' => 878675,
6736
  'names' =>
6737
  array (
lib/geonames/data/country-names.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- // Generated at Mon, 13 Mar 2017 12:14:10 +0100
3
  return array (
4
  'en' =>
5
  array (
1
  <?php
2
+ // Generated at Fri, 12 Jan 2018 20:51:14 +0100
3
  return array (
4
  'en' =>
5
  array (
lib/geonames/geonames-country-info.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: benjaminpick
3
  Tags: geoip, maxmind, geolocation, locator
4
  Requires at least: 3.5
5
- Tested up to: 4.8
6
  Requires PHP: 5.4
7
  Stable tag: trunk
8
  License: GPLv3 or later
@@ -97,6 +97,10 @@ Does `geoip_detect2_get_info_from_current_ip()` return the same country, regardl
97
 
98
  == Upgrade Notice ==
99
 
 
 
 
 
100
  = 2.8.0 =
101
 
102
  Warning: This bugfix version of the plugin requires PHP 5.4.
@@ -172,6 +176,16 @@ Fixing automatic weekly updates.
172
 
173
  == Changelog ==
174
 
 
 
 
 
 
 
 
 
 
 
175
  = 2.8.0 =
176
 
177
  * FIX: Localhost now always is a trusted proxy (for standard reverse proxy configurations, however the checkbox "uses a reverse proxy" still needs to be activated.)
2
  Contributors: benjaminpick
3
  Tags: geoip, maxmind, geolocation, locator
4
  Requires at least: 3.5
5
+ Tested up to: 4.9
6
  Requires PHP: 5.4
7
  Stable tag: trunk
8
  License: GPLv3 or later
97
 
98
  == Upgrade Notice ==
99
 
100
+ = 2.8.2 =
101
+
102
+ This plugin version is compatible with PHP 7.2 and adapted the automatic update code.
103
+
104
  = 2.8.0 =
105
 
106
  Warning: This bugfix version of the plugin requires PHP 5.4.
176
 
177
  == Changelog ==
178
 
179
+ = 2.8.2 =
180
+ * Maxmind vendor code was updated to the current version (2.7.0).
181
+ * FIX: There was a fatal error when using PHP 7.2 (thx jj-dev)
182
+ * FIX: The automatic update of Maxmind Geoip2 Lite City database was fixed.
183
+ * FIX: Always try to fill in more information into the country information from the GeoNames-DB.
184
+
185
+ = 2.8.1 =
186
+
187
+ (Was not released on wordpress.org)
188
+
189
  = 2.8.0 =
190
 
191
  * FIX: Localhost now always is a trusted proxy (for standard reverse proxy configurations, however the checkbox "uses a reverse proxy" still needs to be activated.)
shortcode.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
upgrade-plugin.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /*
3
- Copyright 2013-2017 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
@@ -48,6 +48,15 @@ function geoip_detect_do_upgrade($old_version) {
48
  update_option('geoip-detect-source', 'hostinfo');
49
  }
50
  }
 
 
 
 
 
 
 
 
 
51
  }
52
 
53
  /**
1
  <?php
2
  /*
3
+ Copyright 2013-2018 Yellow Tree, Siegen, Germany
4
  Author: Benjamin Pick (info@yellowtree.de)
5
 
6
  This program is free software; you can redistribute it and/or modify
48
  update_option('geoip-detect-source', 'hostinfo');
49
  }
50
  }
51
+
52
+ // Fix auto update hook (re-schedule if necessary)
53
+ if (version_compare('2.8.2', $old_version, '>')) {
54
+ $source = new \YellowTree\GeoipDetect\DataSources\Auto\AutoDataSource;
55
+ $source->deactivate();
56
+ if (get_option('geoip-detect-source') == 'auto') {
57
+ $source->activate();
58
+ }
59
+ }
60
  }
61
 
62
  /**
vendor/composer/ca-bundle/README.md CHANGED
@@ -41,7 +41,7 @@ Basic usage
41
  ```php
42
  $curl = curl_init("https://example.org/");
43
 
44
- $caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath());
45
  if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
46
  curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);
47
  } else {
@@ -60,7 +60,7 @@ $opts = array(
60
  )
61
  );
62
 
63
- $caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath());
64
  if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
65
  $opts['ssl']['capath'] = $caPathOrFile;
66
  } else {
@@ -71,6 +71,14 @@ $context = stream_context_create($opts);
71
  $result = file_get_contents('https://example.com', false, $context);
72
  ```
73
 
 
 
 
 
 
 
 
 
74
  License
75
  -------
76
 
41
  ```php
42
  $curl = curl_init("https://example.org/");
43
 
44
+ $caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
45
  if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
46
  curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);
47
  } else {
60
  )
61
  );
62
 
63
+ $caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
64
  if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
65
  $opts['ssl']['capath'] = $caPathOrFile;
66
  } else {
71
  $result = file_get_contents('https://example.com', false, $context);
72
  ```
73
 
74
+ ## To use with Guzzle
75
+
76
+ ```php
77
+ $client = new \GuzzleHttp\Client([
78
+ \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath()
79
+ ]);
80
+ ```
81
+
82
  License
83
  -------
84
 
vendor/composer/ca-bundle/composer.json CHANGED
@@ -27,12 +27,9 @@
27
  "php": "^5.3.2 || ^7.0"
28
  },
29
  "require-dev": {
30
- "phpunit/phpunit": "^4.5",
31
  "psr/log": "^1.0",
32
- "symfony/process": "^2.5 || ^3.0"
33
- },
34
- "suggest": {
35
- "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+"
36
  },
37
  "autoload": {
38
  "psr-4": {
27
  "php": "^5.3.2 || ^7.0"
28
  },
29
  "require-dev": {
30
+ "phpunit/phpunit": "^4.8.35",
31
  "psr/log": "^1.0",
32
+ "symfony/process": "^2.5 || ^3.0 || ^4.0"
 
 
 
33
  },
34
  "autoload": {
35
  "psr-4": {
vendor/composer/ca-bundle/res/cacert.pem CHANGED
@@ -1,7 +1,7 @@
1
  ##
2
  ## Bundle of CA Root Certificates
3
  ##
4
- ## Certificate data from Mozilla as of: Wed Jun 7 03:12:05 2017 GMT
5
  ##
6
  ## This is a bundle of X.509 certificates of public Certificate Authorities
7
  ## (CA). These were automatically extracted from Mozilla's root certificates
@@ -14,7 +14,7 @@
14
  ## Just configure this file as the SSLCACertificateFile.
15
  ##
16
  ## Conversion done with mk-ca-bundle.pl version 1.27.
17
- ## SHA256: 93753268e1c596aee21893fb1c6975338389132f15c942ed65fc394a904371d7
18
  ##
19
 
20
 
@@ -130,30 +130,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
130
  RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
131
  -----END CERTIFICATE-----
132
 
133
- AddTrust Low-Value Services Root
134
- ================================
135
- -----BEGIN CERTIFICATE-----
136
- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
137
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
138
- cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
139
- CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
140
- ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
141
- AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
142
- 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
143
- oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
144
- Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
145
- GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
146
- HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
147
- AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
148
- RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
149
- HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
150
- ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
151
- iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
152
- eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
153
- mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
154
- ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
155
- -----END CERTIFICATE-----
156
-
157
  AddTrust External Root
158
  ======================
159
  -----BEGIN CERTIFICATE-----
@@ -178,54 +154,6 @@ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
178
  G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
179
  -----END CERTIFICATE-----
180
 
181
- AddTrust Public Services Root
182
- =============================
183
- -----BEGIN CERTIFICATE-----
184
- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
185
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
186
- cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
187
- BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
188
- dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
189
- AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
190
- nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
191
- d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
192
- Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
193
- HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
194
- A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
195
- /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
196
- FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
197
- A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
198
- JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
199
- +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
200
- GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
201
- Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
202
- EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
203
- -----END CERTIFICATE-----
204
-
205
- AddTrust Qualified Certificates Root
206
- ====================================
207
- -----BEGIN CERTIFICATE-----
208
- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
209
- QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
210
- cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
211
- CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
212
- IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
213
- 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
214
- 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
215
- KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
216
- L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
217
- wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
218
- MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
219
- BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
220
- BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
221
- azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
222
- ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
223
- GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
224
- dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
225
- RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
226
- iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
227
- -----END CERTIFICATE-----
228
-
229
  Entrust Root Certification Authority
230
  ====================================
231
  -----BEGIN CERTIFICATE-----
@@ -273,27 +201,6 @@ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
273
  Mw==
274
  -----END CERTIFICATE-----
275
 
276
- GeoTrust Global CA 2
277
- ====================
278
- -----BEGIN CERTIFICATE-----
279
- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
280
- R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
281
- MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
282
- LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
283
- ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
284
- NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
285
- LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
286
- Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
287
- HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
288
- MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
289
- K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
290
- srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
291
- ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
292
- OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
293
- x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
294
- H4z1Ir+rzoPz4iIprn2DQKi6bA==
295
- -----END CERTIFICATE-----
296
-
297
  GeoTrust Universal CA
298
  =====================
299
  -----BEGIN CERTIFICATE-----
@@ -419,56 +326,6 @@ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
419
  12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
420
  -----END CERTIFICATE-----
421
 
422
- Comodo Secure Services root
423
- ===========================
424
- -----BEGIN CERTIFICATE-----
425
- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
426
- R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
427
- TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
428
- MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
429
- Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
430
- BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
431
- ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
432
- 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
433
- rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
434
- oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
435
- p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
436
- FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
437
- gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
438
- YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
439
- aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
440
- 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
441
- Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
442
- DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
443
- pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
444
- RR3B7Hzs/Sk=
445
- -----END CERTIFICATE-----
446
-
447
- Comodo Trusted Services root
448
- ============================
449
- -----BEGIN CERTIFICATE-----
450
- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
451
- R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
452
- TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
453
- MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
454
- bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
455
- IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
456
- AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
457
- 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
458
- /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
459
- juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
460
- ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
461
- DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
462
- /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
463
- ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
464
- cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
465
- uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
466
- pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
467
- BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
468
- R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
469
- 9y5Xt5hwXsjEeLBi
470
- -----END CERTIFICATE-----
471
-
472
  QuoVadis Root CA
473
  ================
474
  -----BEGIN CERTIFICATE-----
@@ -608,32 +465,6 @@ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
608
  llpwrN9M
609
  -----END CERTIFICATE-----
610
 
611
- UTN USERFirst Hardware Root CA
612
- ==============================
613
- -----BEGIN CERTIFICATE-----
614
- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
615
- BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
616
- IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
617
- BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
618
- OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
619
- eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
620
- ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
621
- DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
622
- wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
623
- tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
624
- i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
625
- Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
626
- gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
627
- lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
628
- UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
629
- BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
630
- //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
631
- XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
632
- lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
633
- iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
634
- nfhmqA==
635
- -----END CERTIFICATE-----
636
-
637
  Camerfirma Chambers of Commerce Root
638
  ====================================
639
  -----BEGIN CERTIFICATE-----
@@ -831,38 +662,6 @@ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
831
  +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
832
  -----END CERTIFICATE-----
833
 
834
- Swisscom Root CA 1
835
- ==================
836
- -----BEGIN CERTIFICATE-----
837
- MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
838
- EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
839
- dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
840
- MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
841
- aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
842
- IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
843
- MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
844
- NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
845
- AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
846
- b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
847
- 7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
848
- cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
849
- WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
850
- haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
851
- MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
852
- HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
853
- BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
854
- MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
855
- jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
856
- MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
857
- VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
858
- vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
859
- OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
860
- 1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
861
- nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
862
- x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
863
- NY6E0F/6MBr1mmz0DlP5OlvRHA==
864
- -----END CERTIFICATE-----
865
-
866
  DigiCert Assured ID Root CA
867
  ===========================
868
  -----BEGIN CERTIFICATE-----
@@ -1426,27 +1225,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
1426
  TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
1427
  -----END CERTIFICATE-----
1428
 
1429
- CNNIC ROOT
1430
- ==========
1431
- -----BEGIN CERTIFICATE-----
1432
- MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
1433
- ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
1434
- OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
1435
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
1436
- o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
1437
- VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
1438
- VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
1439
- czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
1440
- y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
1441
- wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
1442
- lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
1443
- Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
1444
- O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
1445
- BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
1446
- G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
1447
- mxE=
1448
- -----END CERTIFICATE-----
1449
-
1450
  GeoTrust Primary Certification Authority - G3
1451
  =============================================
1452
  -----BEGIN CERTIFICATE-----
@@ -2541,93 +2319,6 @@ poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
2541
  eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
2542
  -----END CERTIFICATE-----
2543
 
2544
- China Internet Network Information Center EV Certificates Root
2545
- ==============================================================
2546
- -----BEGIN CERTIFICATE-----
2547
- MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
2548
- BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
2549
- aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
2550
- Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
2551
- A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
2552
- PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
2553
- cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
2554
- jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
2555
- 98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
2556
- klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
2557
- KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
2558
- 7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
2559
- HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
2560
- glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
2561
- 0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
2562
- 7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
2563
- ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
2564
- 5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
2565
- -----END CERTIFICATE-----
2566
-
2567
- Swisscom Root CA 2
2568
- ==================
2569
- -----BEGIN CERTIFICATE-----
2570
- MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG
2571
- EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
2572
- dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2
2573
- MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
2574
- aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC
2575
- IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM
2576
- LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo
2577
- ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ
2578
- wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH
2579
- Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a
2580
- SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS
2581
- NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab
2582
- mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY
2583
- Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3
2584
- qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
2585
- HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O
2586
- BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu
2587
- MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO
2588
- v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ
2589
- 82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz
2590
- o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs
2591
- a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx
2592
- OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW
2593
- mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o
2594
- +sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC
2595
- rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX
2596
- 5OfNeOI5wSsSnqaeG8XmDtkx2Q==
2597
- -----END CERTIFICATE-----
2598
-
2599
- Swisscom Root EV CA 2
2600
- =====================
2601
- -----BEGIN CERTIFICATE-----
2602
- MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE
2603
- BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl
2604
- cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN
2605
- MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT
2606
- HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg
2607
- Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz
2608
- o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy
2609
- Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti
2610
- GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li
2611
- qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH
2612
- Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG
2613
- alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa
2614
- m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox
2615
- bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi
2616
- xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/
2617
- BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED
2618
- MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB
2619
- bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL
2620
- j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU
2621
- wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7
2622
- XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH
2623
- 59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/
2624
- 23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq
2625
- J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA
2626
- HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi
2627
- uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW
2628
- l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
2629
- -----END CERTIFICATE-----
2630
-
2631
  CA Disig Root R1
2632
  ================
2633
  -----BEGIN CERTIFICATE-----
1
  ##
2
  ## Bundle of CA Root Certificates
3
  ##
4
+ ## Certificate data from Mozilla as of: Wed Sep 20 03:12:05 2017 GMT
5
  ##
6
  ## This is a bundle of X.509 certificates of public Certificate Authorities
7
  ## (CA). These were automatically extracted from Mozilla's root certificates
14
  ## Just configure this file as the SSLCACertificateFile.
15
  ##
16
  ## Conversion done with mk-ca-bundle.pl version 1.27.
17
+ ## SHA256: 2b2dbe5244e0047e088c597998883a913f6c5fffd1cb5c0fe5a368c8466cb2ec
18
  ##
19
 
20
 
130
  RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
131
  -----END CERTIFICATE-----
132
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  AddTrust External Root
134
  ======================
135
  -----BEGIN CERTIFICATE-----
154
  G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
155
  -----END CERTIFICATE-----
156
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  Entrust Root Certification Authority
158
  ====================================
159
  -----BEGIN CERTIFICATE-----
201
  Mw==
202
  -----END CERTIFICATE-----
203
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
204
  GeoTrust Universal CA
205
  =====================
206
  -----BEGIN CERTIFICATE-----
326
  12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
327
  -----END CERTIFICATE-----
328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  QuoVadis Root CA
330
  ================
331
  -----BEGIN CERTIFICATE-----
465
  llpwrN9M
466
  -----END CERTIFICATE-----
467
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
468
  Camerfirma Chambers of Commerce Root
469
  ====================================
470
  -----BEGIN CERTIFICATE-----
662
  +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
663
  -----END CERTIFICATE-----
664
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
665
  DigiCert Assured ID Root CA
666
  ===========================
667
  -----BEGIN CERTIFICATE-----
1225
  TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
1226
  -----END CERTIFICATE-----
1227
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1228
  GeoTrust Primary Certification Authority - G3
1229
  =============================================
1230
  -----BEGIN CERTIFICATE-----
2319
  eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
2320
  -----END CERTIFICATE-----
2321
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2322
  CA Disig Root R1
2323
  ================
2324
  -----BEGIN CERTIFICATE-----
vendor/composer/ca-bundle/src/CaBundle.php CHANGED
@@ -130,7 +130,24 @@ class CaBundle
130
  */
131
  public static function getBundledCaBundlePath()
132
  {
133
- return __DIR__.'/../res/cacert.pem';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  }
135
 
136
  /**
130
  */
131
  public static function getBundledCaBundlePath()
132
  {
133
+ $caBundleFile = __DIR__.'/../res/cacert.pem';
134
+
135
+ // cURL does not understand 'phar://' paths
136
+ // see https://github.com/composer/ca-bundle/issues/10
137
+ if (0 === strpos($caBundleFile, 'phar://')) {
138
+ file_put_contents(
139
+ $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'),
140
+ file_get_contents($caBundleFile)
141
+ );
142
+
143
+ register_shutdown_function(function() use ($tempCaBundleFile) {
144
+ @unlink($tempCaBundleFile);
145
+ });
146
+
147
+ $caBundleFile = $tempCaBundleFile;
148
+ }
149
+
150
+ return $caBundleFile;
151
  }
152
 
153
  /**
vendor/composer/installed.json CHANGED
@@ -1,38 +1,37 @@
1
  [
2
  {
3
- "name": "maxmind-db/reader",
4
- "version": "v1.1.3",
5
- "version_normalized": "1.1.3.0",
6
  "source": {
7
  "type": "git",
8
- "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
9
- "reference": "7eeccf61b078bb23bb07b1a151a7e5db52871e65"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/7eeccf61b078bb23bb07b1a151a7e5db52871e65",
14
- "reference": "7eeccf61b078bb23bb07b1a151a7e5db52871e65",
15
  "shasum": ""
16
  },
17
  "require": {
18
- "php": ">=5.3.1"
 
 
 
19
  },
20
  "require-dev": {
21
- "phpunit/phpunit": "4.2.*",
22
- "satooshi/php-coveralls": "1.0.*",
23
- "squizlabs/php_codesniffer": "2.*"
24
- },
25
- "suggest": {
26
- "ext-bcmath": "bcmath or gmp is requred for decoding larger integers with the pure PHP decoder",
27
- "ext-gmp": "bcmath or gmp is requred for decoding larger integers with the pure PHP decoder",
28
- "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
29
  },
30
- "time": "2017-01-19T23:49:38+00:00",
31
  "type": "library",
32
  "installation-source": "dist",
33
  "autoload": {
34
  "psr-4": {
35
- "MaxMind\\Db\\": "src/MaxMind/Db"
 
36
  }
37
  },
38
  "notification-url": "https://packagist.org/downloads/",
@@ -41,54 +40,48 @@
41
  ],
42
  "authors": [
43
  {
44
- "name": "Gregory J. Oschwald",
45
- "email": "goschwald@maxmind.com",
46
- "homepage": "http://www.maxmind.com/"
47
  }
48
  ],
49
- "description": "MaxMind DB Reader API",
50
- "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
51
- "keywords": [
52
- "database",
53
- "geoip",
54
- "geoip2",
55
- "geolocation",
56
- "maxmind"
57
- ]
58
  },
59
  {
60
- "name": "maxmind/web-service-common",
61
- "version": "v0.4.0",
62
- "version_normalized": "0.4.0.0",
63
  "source": {
64
  "type": "git",
65
- "url": "https://github.com/maxmind/web-service-common-php.git",
66
- "reference": "622f7c732a7f9c4c62497fc103939e042b6bdb88"
67
  },
68
  "dist": {
69
  "type": "zip",
70
- "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/622f7c732a7f9c4c62497fc103939e042b6bdb88",
71
- "reference": "622f7c732a7f9c4c62497fc103939e042b6bdb88",
72
  "shasum": ""
73
  },
74
  "require": {
75
- "composer/ca-bundle": "^1.0.3",
76
- "ext-curl": "*",
77
- "ext-json": "*",
78
  "php": ">=5.4"
79
  },
80
  "require-dev": {
81
  "friendsofphp/php-cs-fixer": "2.*",
82
  "phpunit/phpunit": "4.*",
 
83
  "squizlabs/php_codesniffer": "3.*"
84
  },
85
- "time": "2017-07-06T17:48:21+00:00",
 
 
 
 
 
86
  "type": "library",
87
  "installation-source": "dist",
88
  "autoload": {
89
  "psr-4": {
90
- "MaxMind\\Exception\\": "src/Exception",
91
- "MaxMind\\WebService\\": "src/WebService"
92
  }
93
  },
94
  "notification-url": "https://packagist.org/downloads/",
@@ -97,26 +90,34 @@
97
  ],
98
  "authors": [
99
  {
100
- "name": "Gregory Oschwald",
101
- "email": "goschwald@maxmind.com"
 
102
  }
103
  ],
104
- "description": "Internal MaxMind Web Service API",
105
- "homepage": "https://github.com/maxmind/web-service-common-php"
 
 
 
 
 
 
 
106
  },
107
  {
108
  "name": "geoip2/geoip2",
109
- "version": "v2.6.0",
110
- "version_normalized": "2.6.0.0",
111
  "source": {
112
  "type": "git",
113
  "url": "https://github.com/maxmind/GeoIP2-php.git",
114
- "reference": "9f6f1edf9901fed5cd692dd260333bf52091acd3"
115
  },
116
  "dist": {
117
  "type": "zip",
118
- "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/9f6f1edf9901fed5cd692dd260333bf52091acd3",
119
- "reference": "9f6f1edf9901fed5cd692dd260333bf52091acd3",
120
  "shasum": ""
121
  },
122
  "require": {
@@ -130,7 +131,7 @@
130
  "phpunit/phpunit": "4.*",
131
  "squizlabs/php_codesniffer": "3.*"
132
  },
133
- "time": "2017-07-10T17:59:43+00:00",
134
  "type": "library",
135
  "installation-source": "dist",
136
  "autoload": {
@@ -161,17 +162,17 @@
161
  },
162
  {
163
  "name": "composer/ca-bundle",
164
- "version": "1.0.8",
165
- "version_normalized": "1.0.8.0",
166
  "source": {
167
  "type": "git",
168
  "url": "https://github.com/composer/ca-bundle.git",
169
- "reference": "9dd73a03951357922d8aee6cc084500de93e2343"
170
  },
171
  "dist": {
172
  "type": "zip",
173
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/9dd73a03951357922d8aee6cc084500de93e2343",
174
- "reference": "9dd73a03951357922d8aee6cc084500de93e2343",
175
  "shasum": ""
176
  },
177
  "require": {
@@ -180,14 +181,11 @@
180
  "php": "^5.3.2 || ^7.0"
181
  },
182
  "require-dev": {
183
- "phpunit/phpunit": "^4.5",
184
  "psr/log": "^1.0",
185
- "symfony/process": "^2.5 || ^3.0"
186
- },
187
- "suggest": {
188
- "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+"
189
  },
190
- "time": "2017-09-11T07:24:36+00:00",
191
  "type": "library",
192
  "extra": {
193
  "branch-alias": {
1
  [
2
  {
3
+ "name": "maxmind/web-service-common",
4
+ "version": "v0.4.0",
5
+ "version_normalized": "0.4.0.0",
6
  "source": {
7
  "type": "git",
8
+ "url": "https://github.com/maxmind/web-service-common-php.git",
9
+ "reference": "622f7c732a7f9c4c62497fc103939e042b6bdb88"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/622f7c732a7f9c4c62497fc103939e042b6bdb88",
14
+ "reference": "622f7c732a7f9c4c62497fc103939e042b6bdb88",
15
  "shasum": ""
16
  },
17
  "require": {
18
+ "composer/ca-bundle": "^1.0.3",
19
+ "ext-curl": "*",
20
+ "ext-json": "*",
21
+ "php": ">=5.4"
22
  },
23
  "require-dev": {
24
+ "friendsofphp/php-cs-fixer": "2.*",
25
+ "phpunit/phpunit": "4.*",
26
+ "squizlabs/php_codesniffer": "3.*"
 
 
 
 
 
27
  },
28
+ "time": "2017-07-06T17:48:21+00:00",
29
  "type": "library",
30
  "installation-source": "dist",
31
  "autoload": {
32
  "psr-4": {
33
+ "MaxMind\\Exception\\": "src/Exception",
34
+ "MaxMind\\WebService\\": "src/WebService"
35
  }
36
  },
37
  "notification-url": "https://packagist.org/downloads/",
40
  ],
41
  "authors": [
42
  {
43
+ "name": "Gregory Oschwald",
44
+ "email": "goschwald@maxmind.com"
 
45
  }
46
  ],
47
+ "description": "Internal MaxMind Web Service API",
48
+ "homepage": "https://github.com/maxmind/web-service-common-php"
 
 
 
 
 
 
 
49
  },
50
  {
51
+ "name": "maxmind-db/reader",
52
+ "version": "v1.2.0",
53
+ "version_normalized": "1.2.0.0",
54
  "source": {
55
  "type": "git",
56
+ "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
57
+ "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9"
58
  },
59
  "dist": {
60
  "type": "zip",
61
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/1647820dfbcb552222fb5feb3a8387e2636394c9",
62
+ "reference": "1647820dfbcb552222fb5feb3a8387e2636394c9",
63
  "shasum": ""
64
  },
65
  "require": {
 
 
 
66
  "php": ">=5.4"
67
  },
68
  "require-dev": {
69
  "friendsofphp/php-cs-fixer": "2.*",
70
  "phpunit/phpunit": "4.*",
71
+ "satooshi/php-coveralls": "1.0.*",
72
  "squizlabs/php_codesniffer": "3.*"
73
  },
74
+ "suggest": {
75
+ "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
76
+ "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
77
+ "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
78
+ },
79
+ "time": "2017-10-27T19:15:33+00:00",
80
  "type": "library",
81
  "installation-source": "dist",
82
  "autoload": {
83
  "psr-4": {
84
+ "MaxMind\\Db\\": "src/MaxMind/Db"
 
85
  }
86
  },
87
  "notification-url": "https://packagist.org/downloads/",
90
  ],
91
  "authors": [
92
  {
93
+ "name": "Gregory J. Oschwald",
94
+ "email": "goschwald@maxmind.com",
95
+ "homepage": "http://www.maxmind.com/"
96
  }
97
  ],
98
+ "description": "MaxMind DB Reader API",
99
+ "homepage": "https://github.com/maxmind/MaxMind-DB-Reader-php",
100
+ "keywords": [
101
+ "database",
102
+ "geoip",
103
+ "geoip2",
104
+ "geolocation",
105
+ "maxmind"
106
+ ]
107
  },
108
  {
109
  "name": "geoip2/geoip2",
110
+ "version": "v2.7.0",
111
+ "version_normalized": "2.7.0.0",
112
  "source": {
113
  "type": "git",
114
  "url": "https://github.com/maxmind/GeoIP2-php.git",
115
+ "reference": "ca9f9a244474d97eac1ef542aaced7cc944bafbe"
116
  },
117
  "dist": {
118
  "type": "zip",
119
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/ca9f9a244474d97eac1ef542aaced7cc944bafbe",
120
+ "reference": "ca9f9a244474d97eac1ef542aaced7cc944bafbe",
121
  "shasum": ""
122
  },
123
  "require": {
131
  "phpunit/phpunit": "4.*",
132
  "squizlabs/php_codesniffer": "3.*"
133
  },
134
+ "time": "2017-10-27T19:20:22+00:00",
135
  "type": "library",
136
  "installation-source": "dist",
137
  "autoload": {
162
  },
163
  {
164
  "name": "composer/ca-bundle",
165
+ "version": "1.1.0",
166
+ "version_normalized": "1.1.0.0",
167
  "source": {
168
  "type": "git",
169
  "url": "https://github.com/composer/ca-bundle.git",
170
+ "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288"
171
  },
172
  "dist": {
173
  "type": "zip",
174
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288",
175
+ "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288",
176
  "shasum": ""
177
  },
178
  "require": {
181
  "php": "^5.3.2 || ^7.0"
182
  },
183
  "require-dev": {
184
+ "phpunit/phpunit": "^4.8.35",
185
  "psr/log": "^1.0",
186
+ "symfony/process": "^2.5 || ^3.0 || ^4.0"
 
 
 
187
  },
188
+ "time": "2017-11-29T09:37:33+00:00",
189
  "type": "library",
190
  "extra": {
191
  "branch-alias": {
vendor/geoip2/geoip2/.php_cs CHANGED
@@ -25,6 +25,7 @@ return PhpCsFixer\Config::create()
25
  'semicolon_after_instruction' => true,
26
  'strict_comparison' => true,
27
  'strict_param' => true,
 
28
  ])
29
  ->setFinder(
30
  PhpCsFixer\Finder::create()
25
  'semicolon_after_instruction' => true,
26
  'strict_comparison' => true,
27
  'strict_param' => true,
28
+ 'yoda_style' => false,
29
  ])
30
  ->setFinder(
31
  PhpCsFixer\Finder::create()
vendor/geoip2/geoip2/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
  CHANGELOG
2
  =========
3
 
 
 
 
 
 
 
 
4
  2.6.0 (2017-07-10)
5
  -----------------
6
 
1
  CHANGELOG
2
  =========
3
 
4
+ 2.7.0 (2017-10-27)
5
+ ------------------
6
+
7
+ * The following new anonymizer properties were added to `GeoIp2\Record\Traits`
8
+ for use with GeoIP2 Precision Insights: `isAnonymous`, `isAnonymousVpn`,
9
+ `isHostingProvider`, `isPublicProxy`, and `isTorExitNode`.
10
+
11
  2.6.0 (2017-07-10)
12
  -----------------
13
 
vendor/geoip2/geoip2/src/Record/Traits.php CHANGED
@@ -32,18 +32,32 @@ namespace GeoIp2\Record;
32
  * running on. If the system is behind a NAT, this may differ from the IP
33
  * address locally assigned to it. This attribute is returned by all end
34
  * points.
 
 
 
35
  * @property-read bool $isAnonymousProxy *Deprecated.* Please see our
36
  * {@link * https://www.maxmind.com/en/geoip2-anonymous-ip-database GeoIP2
37
  * Anonymous IP database} to determine whether the IP address is used by an
38
  * anonymizing service.
 
 
 
 
 
 
39
  * @property-read bool $isLegitimateProxy This attribute is true if MaxMind
40
  * believes this IP address to be a legitimate proxy, such as an internal
41
  * VPN used by a corporation. This attribute is only available in the GeoIP2
42
  * Enterprise database.
 
 
 
43
  * @property-read bool $isSatelliteProvider *Deprecated.* Due to the
44
  * increased coverage by mobile carriers, very few satellite providers now
45
  * serve multiple countries. As a result, the output does not provide
46
  * sufficiently relevant data for us to maintain it.
 
 
47
  * @property-read string|null $isp The name of the ISP associated with the IP
48
  * address. This attribute is only available from the City and Insights web
49
  * services and the GeoIP2 Enterprise database.
@@ -84,11 +98,16 @@ class Traits extends AbstractRecord
84
  'autonomousSystemOrganization',
85
  'connectionType',
86
  'domain',
 
 
87
  'isAnonymousProxy',
 
 
88
  'isLegitimateProxy',
89
- 'isSatelliteProvider',
90
  'isp',
91
- 'ipAddress',
 
 
92
  'organization',
93
  'userType',
94
  ];
32
  * running on. If the system is behind a NAT, this may differ from the IP
33
  * address locally assigned to it. This attribute is returned by all end
34
  * points.
35
+ * @property-read bool $isAnonymous This is true if the IP address belongs to
36
+ * any sort of anonymous network. This property is only available from GeoIP2
37
+ * Precision Insights.
38
  * @property-read bool $isAnonymousProxy *Deprecated.* Please see our
39
  * {@link * https://www.maxmind.com/en/geoip2-anonymous-ip-database GeoIP2
40
  * Anonymous IP database} to determine whether the IP address is used by an
41
  * anonymizing service.
42
+ * @property-read bool $isAnonymousVpn This is true if the IP address belongs to
43
+ * an anonymous VPN system. This property is only available from GeoIP2
44
+ * Precision Insights.
45
+ * @property-read bool $isHostingProvider This is true if the IP address belongs
46
+ * to a hosting provider. This property is only available from GeoIP2
47
+ * Precision Insights.
48
  * @property-read bool $isLegitimateProxy This attribute is true if MaxMind
49
  * believes this IP address to be a legitimate proxy, such as an internal
50
  * VPN used by a corporation. This attribute is only available in the GeoIP2
51
  * Enterprise database.
52
+ * @property-read bool $isPublicProxy This is true if the IP address belongs to
53
+ * a public proxy. This property is only available from GeoIP2 Precision
54
+ * Insights.
55
  * @property-read bool $isSatelliteProvider *Deprecated.* Due to the
56
  * increased coverage by mobile carriers, very few satellite providers now
57
  * serve multiple countries. As a result, the output does not provide
58
  * sufficiently relevant data for us to maintain it.
59
+ * @property-read bool $isTorExitNode This is true if the IP address is a Tor
60
+ * exit node. This property is only available from GeoIP2 Precision Insights.
61
  * @property-read string|null $isp The name of the ISP associated with the IP
62
  * address. This attribute is only available from the City and Insights web
63
  * services and the GeoIP2 Enterprise database.
98
  'autonomousSystemOrganization',
99
  'connectionType',
100
  'domain',
101
+ 'ipAddress',
102
+ 'isAnonymous',
103
  'isAnonymousProxy',
104
+ 'isAnonymousVpn',
105
+ 'isHostingProvider',
106
  'isLegitimateProxy',
 
107
  'isp',
108
+ 'isPublicProxy',
109
+ 'isSatelliteProvider',
110
+ 'isTorExitNode',
111
  'organization',
112
  'userType',
113
  ];
vendor/geoip2/geoip2/src/WebService/Client.php CHANGED
@@ -47,7 +47,7 @@ class Client implements ProviderInterface
47
  private $client;
48
  private static $basePath = '/geoip/v2.1';
49
 
50
- const VERSION = 'v2.6.0';
51
 
52
  /**
53
  * Constructor.
47
  private $client;
48
  private static $basePath = '/geoip/v2.1';
49
 
50
+ const VERSION = 'v2.7.0';
51
 
52
  /**
53
  * Constructor.
vendor/maxmind-db/reader/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
  CHANGELOG
2
  =========
3
 
 
 
 
 
 
 
 
 
4
  1.1.3 (2017-01-19)
5
  ------------------
6
 
1
  CHANGELOG
2
  =========
3
 
4
+ 1.2.0 (2017-10-27)
5
+ ------------------
6
+
7
+ * PHP 5.4 is now required.
8
+ * The `Reader` class for the `maxminddb` extension is no longer final.
9
+ This was change to match the behavior of the pure PHP class.
10
+ Reported and fixed by venyii. GitHub #52 & #54.
11
+
12
  1.1.3 (2017-01-19)
13
  ------------------
14
 
vendor/maxmind-db/reader/README.md CHANGED
@@ -117,9 +117,8 @@ client API, please see [our support page](http://www.maxmind.com/en/support).
117
 
118
  ## Requirements ##
119
 
120
- This library requires PHP 5.3 or greater. Older versions of PHP are not
121
- supported. The pure PHP reader included with this library is works and is
122
- tested with HHVM.
123
 
124
  The GMP or BCMath extension may be required to read some databases
125
  using the pure PHP API.
@@ -135,6 +134,6 @@ The MaxMind DB Reader PHP API uses [Semantic Versioning](http://semver.org/).
135
 
136
  ## Copyright and License ##
137
 
138
- This software is Copyright (c) 2014 by MaxMind, Inc.
139
 
140
  This is free software, licensed under the Apache License, Version 2.0.
117
 
118
  ## Requirements ##
119
 
120
+ This library requires PHP 5.4 or greater. The pure PHP reader included with
121
+ this library works and is tested with HHVM.
 
122
 
123
  The GMP or BCMath extension may be required to read some databases
124
  using the pure PHP API.
134
 
135
  ## Copyright and License ##
136
 
137
+ This software is Copyright (c) 2014-2017 by MaxMind, Inc.
138
 
139
  This is free software, licensed under the Apache License, Version 2.0.
vendor/maxmind-db/reader/composer.json CHANGED
@@ -13,17 +13,18 @@
13
  }
14
  ],
15
  "require": {
16
- "php": ">=5.3.1"
17
  },
18
  "suggest": {
19
- "ext-bcmath": "bcmath or gmp is requred for decoding larger integers with the pure PHP decoder",
20
- "ext-gmp": "bcmath or gmp is requred for decoding larger integers with the pure PHP decoder",
21
  "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
22
  },
23
  "require-dev": {
24
- "phpunit/phpunit": "4.2.*",
 
25
  "satooshi/php-coveralls": "1.0.*",
26
- "squizlabs/php_codesniffer": "2.*"
27
  },
28
  "autoload": {
29
  "psr-4": {
13
  }
14
  ],
15
  "require": {
16
+ "php": ">=5.4"
17
  },
18
  "suggest": {
19
+ "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
20
+ "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder",
21
  "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups"
22
  },
23
  "require-dev": {
24
+ "friendsofphp/php-cs-fixer": "2.*",
25
+ "phpunit/phpunit": "4.*",
26
  "satooshi/php-coveralls": "1.0.*",
27
+ "squizlabs/php_codesniffer": "3.*"
28
  },
29
  "autoload": {
30
  "psr-4": {
vendor/maxmind-db/reader/ext/maxminddb.c CHANGED
@@ -535,7 +535,6 @@ PHP_MINIT_FUNCTION(maxminddb){
535
  INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_READER_NS, maxminddb_methods);
536
  maxminddb_ce = zend_register_internal_class(&ce TSRMLS_CC);
537
  maxminddb_ce->create_object = maxminddb_create_handler;
538
- maxminddb_ce->ce_flags |= ZEND_ACC_FINAL;
539
  memcpy(&maxminddb_obj_handlers,
540
  zend_get_std_object_handlers(), sizeof(zend_object_handlers));
541
  maxminddb_obj_handlers.clone_obj = NULL;
535
  INIT_CLASS_ENTRY(ce, PHP_MAXMINDDB_READER_NS, maxminddb_methods);
536
  maxminddb_ce = zend_register_internal_class(&ce TSRMLS_CC);
537
  maxminddb_ce->create_object = maxminddb_create_handler;
 
538
  memcpy(&maxminddb_obj_handlers,
539
  zend_get_std_object_handlers(), sizeof(zend_object_handlers));
540
  maxminddb_obj_handlers.clone_obj = NULL;
vendor/maxmind-db/reader/ext/php_maxminddb.h CHANGED
@@ -15,7 +15,7 @@
15
 
16
  #ifndef PHP_MAXMINDDB_H
17
  #define PHP_MAXMINDDB_H 1
18
- #define PHP_MAXMINDDB_VERSION "1.1.3"
19
  #define PHP_MAXMINDDB_EXTNAME "maxminddb"
20
 
21
  extern zend_module_entry maxminddb_module_entry;
15
 
16
  #ifndef PHP_MAXMINDDB_H
17
  #define PHP_MAXMINDDB_H 1
18
+ #define PHP_MAXMINDDB_VERSION "1.2.0"
19
  #define PHP_MAXMINDDB_EXTNAME "maxminddb"
20
 
21
  extern zend_module_entry maxminddb_module_entry;
vendor/maxmind-db/reader/ext/tests/001-load.phpt CHANGED
@@ -1,10 +1,12 @@
1
  --TEST--
2
  Check for maxminddb presence
3
  --SKIPIF--
4
- <?php if (!extension_loaded("maxminddb")) print "skip"; ?>
 
 
5
  --FILE--
6
- <?php
7
- echo "maxminddb extension is available";
8
  ?>
9
  --EXPECT--
10
  maxminddb extension is available
1
  --TEST--
2
  Check for maxminddb presence
3
  --SKIPIF--
4
+ <?php if (!extension_loaded('maxminddb')) {
5
+ echo 'skip';
6
+ } ?>
7
  --FILE--
8
+ <?php
9
+ echo 'maxminddb extension is available';
10
  ?>
11
  --EXPECT--
12
  maxminddb extension is available
vendor/maxmind-db/reader/ext/tests/002-final.phpt ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ --TEST--
2
+ Check that Reader class is not final
3
+ --SKIPIF--
4
+ <?php if (!extension_loaded('maxminddb')) {
5
+ echo 'skip';
6
+ } ?>
7
+ --FILE--
8
+ <?php
9
+ $reflectionClass = new \ReflectionClass('MaxMind\Db\Reader');
10
+ var_dump($reflectionClass->isFinal());
11
+ ?>
12
+ --EXPECT--
13
+ bool(false)
vendor/maxmind-db/reader/src/MaxMind/Db/Reader.php CHANGED
@@ -29,15 +29,16 @@ class Reader
29
  * be a valid MaxMind DB file such as a GeoIp2 database file.
30
  *
31
  * @param string $database
32
- * the MaxMind DB file to use.
33
- * @throws \InvalidArgumentException for invalid database path or unknown arguments
 
34
  * @throws \MaxMind\Db\Reader\InvalidDatabaseException
35
- * if the database is invalid or there is an error reading
36
- * from it.
37
  */
38
  public function __construct($database)
39
  {
40
- if (func_num_args() != 1) {
41
  throw new \InvalidArgumentException(
42
  'The constructor takes exactly one argument.'
43
  );
@@ -75,17 +76,19 @@ class Reader
75
  * Looks up the <code>address</code> in the MaxMind DB.
76
  *
77
  * @param string $ipAddress
78
- * the IP address to look up.
79
- * @return array the record for the IP address.
80
- * @throws \BadMethodCallException if this method is called on a closed database.
81
- * @throws \InvalidArgumentException if something other than a single IP address is passed to the method.
82
  * @throws InvalidDatabaseException
83
- * if the database is invalid or there is an error reading
84
- * from it.
 
 
85
  */
86
  public function get($ipAddress)
87
  {
88
- if (func_num_args() != 1) {
89
  throw new \InvalidArgumentException(
90
  'Method takes exactly one argument.'
91
  );
@@ -103,16 +106,17 @@ class Reader
103
  );
104
  }
105
 
106
- if ($this->metadata->ipVersion == 4 && strrpos($ipAddress, ':')) {
107
  throw new \InvalidArgumentException(
108
  "Error looking up $ipAddress. You attempted to look up an"
109
- . " IPv6 address in an IPv4-only database."
110
  );
111
  }
112
  $pointer = $this->findAddressInTree($ipAddress);
113
- if ($pointer == 0) {
114
  return null;
115
  }
 
116
  return $this->resolveDataPointer($pointer);
117
  }
118
 
@@ -136,22 +140,21 @@ class Reader
136
 
137
  $node = $this->readNode($node, $bit);
138
  }
139
- if ($node == $this->metadata->nodeCount) {
140
  // Record is empty
141
  return 0;
142
  } elseif ($node > $this->metadata->nodeCount) {
143
  // Record is a data pointer
144
  return $node;
145
  }
146
- throw new InvalidDatabaseException("Something bad happened");
147
  }
148
 
149
-
150
  private function startNode($length)
151
  {
152
  // Check if we are looking up an IPv4 address in an IPv6 tree. If this
153
  // is the case, we can skip over the first 96 nodes.
154
- if ($this->metadata->ipVersion == 6 && $length == 32) {
155
  return $this->ipV4StartNode();
156
  }
157
  // The first node of the tree is always node 0, at the beginning of the
@@ -163,11 +166,11 @@ class Reader
163
  {
164
  // This is a defensive check. There is no reason to call this when you
165
  // have an IPv4 tree.
166
- if ($this->metadata->ipVersion == 4) {
167
  return 0;
168
  }
169
 
170
- if ($this->ipV4Start != 0) {
171
  return $this->ipV4Start;
172
  }
173
  $node = 0;
@@ -176,6 +179,7 @@ class Reader
176
  $node = $this->readNode($node, 0);
177
  }
178
  $this->ipV4Start = $node;
 
179
  return $node;
180
  }
181
 
@@ -188,21 +192,24 @@ class Reader
188
  case 24:
189
  $bytes = Util::read($this->fileHandle, $baseOffset + $index * 3, 3);
190
  list(, $node) = unpack('N', "\x00" . $bytes);
 
191
  return $node;
192
  case 28:
193
  $middleByte = Util::read($this->fileHandle, $baseOffset + 3, 1);
194
  list(, $middle) = unpack('C', $middleByte);
195
- if ($index == 0) {
196
  $middle = (0xF0 & $middle) >> 4;
197
  } else {
198
  $middle = 0x0F & $middle;
199
  }
200
  $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 3);
201
  list(, $node) = unpack('N', chr($middle) . $bytes);
 
202
  return $node;
203
  case 32:
204
  $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 4);
205
  list(, $node) = unpack('N', $bytes);
 
206
  return $node;
207
  default:
208
  throw new InvalidDatabaseException(
@@ -223,6 +230,7 @@ class Reader
223
  }
224
 
225
  list($data) = $this->decoder->decode($resolved);
 
226
  return $data;
227
  }
228
 
@@ -245,10 +253,11 @@ class Reader
245
  for ($j = 0; $j < $markerLength; $j++) {
246
  fseek($handle, $fileSize - $i - $j - 1);
247
  $matchBit = fgetc($handle);
248
- if ($matchBit != $marker[$markerLength - $j - 1]) {
249
  continue 2;
250
  }
251
  }
 
252
  return $fileSize - $i;
253
  }
254
  throw new InvalidDatabaseException(
@@ -258,9 +267,10 @@ class Reader
258
  }
259
 
260
  /**
261
- * @throws \InvalidArgumentException if arguments are passed to the method.
262
- * @throws \BadMethodCallException if the database has been closed.
263
- * @return Metadata object for the database.
 
264
  */
265
  public function metadata()
266
  {
@@ -285,7 +295,7 @@ class Reader
285
  * Closes the MaxMind DB and returns resources to the system.
286
  *
287
  * @throws \Exception
288
- * if an I/O error occurs.
289
  */
290
  public function close()
291
  {
29
  * be a valid MaxMind DB file such as a GeoIp2 database file.
30
  *
31
  * @param string $database
32
+ * the MaxMind DB file to use
33
+ *
34
+ * @throws \InvalidArgumentException for invalid database path or unknown arguments
35
  * @throws \MaxMind\Db\Reader\InvalidDatabaseException
36
+ * if the database is invalid or there is an error reading
37
+ * from it
38
  */
39
  public function __construct($database)
40
  {
41
+ if (func_num_args() !== 1) {
42
  throw new \InvalidArgumentException(
43
  'The constructor takes exactly one argument.'
44
  );
76
  * Looks up the <code>address</code> in the MaxMind DB.
77
  *
78
  * @param string $ipAddress
79
+ * the IP address to look up
80
+ *
81
+ * @throws \BadMethodCallException if this method is called on a closed database
82
+ * @throws \InvalidArgumentException if something other than a single IP address is passed to the method
83
  * @throws InvalidDatabaseException
84
+ * if the database is invalid or there is an error reading
85
+ * from it
86
+ *
87
+ * @return array the record for the IP address
88
  */
89
  public function get($ipAddress)
90
  {
91
+ if (func_num_args() !== 1) {
92
  throw new \InvalidArgumentException(
93
  'Method takes exactly one argument.'
94
  );
106
  );
107
  }
108
 
109
+ if ($this->metadata->ipVersion === 4 && strrpos($ipAddress, ':')) {
110
  throw new \InvalidArgumentException(
111
  "Error looking up $ipAddress. You attempted to look up an"
112
+ . ' IPv6 address in an IPv4-only database.'
113
  );
114
  }
115
  $pointer = $this->findAddressInTree($ipAddress);
116
+ if ($pointer === 0) {
117
  return null;
118
  }
119
+
120
  return $this->resolveDataPointer($pointer);
121
  }
122
 
140
 
141
  $node = $this->readNode($node, $bit);
142
  }
143
+ if ($node === $this->metadata->nodeCount) {
144
  // Record is empty
145
  return 0;
146
  } elseif ($node > $this->metadata->nodeCount) {
147
  // Record is a data pointer
148
  return $node;
149
  }
150
+ throw new InvalidDatabaseException('Something bad happened');
151
  }
152
 
 
153
  private function startNode($length)
154
  {
155
  // Check if we are looking up an IPv4 address in an IPv6 tree. If this
156
  // is the case, we can skip over the first 96 nodes.
157
+ if ($this->metadata->ipVersion === 6 && $length === 32) {
158
  return $this->ipV4StartNode();
159
  }
160
  // The first node of the tree is always node 0, at the beginning of the
166
  {
167
  // This is a defensive check. There is no reason to call this when you
168
  // have an IPv4 tree.
169
+ if ($this->metadata->ipVersion === 4) {
170
  return 0;
171
  }
172
 
173
+ if ($this->ipV4Start) {
174
  return $this->ipV4Start;
175
  }
176
  $node = 0;
179
  $node = $this->readNode($node, 0);
180
  }
181
  $this->ipV4Start = $node;
182
+
183
  return $node;
184
  }
185
 
192
  case 24:
193
  $bytes = Util::read($this->fileHandle, $baseOffset + $index * 3, 3);
194
  list(, $node) = unpack('N', "\x00" . $bytes);
195
+
196
  return $node;
197
  case 28:
198
  $middleByte = Util::read($this->fileHandle, $baseOffset + 3, 1);
199
  list(, $middle) = unpack('C', $middleByte);
200
+ if ($index === 0) {
201
  $middle = (0xF0 & $middle) >> 4;
202
  } else {
203
  $middle = 0x0F & $middle;
204
  }
205
  $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 3);
206
  list(, $node) = unpack('N', chr($middle) . $bytes);
207
+
208
  return $node;
209
  case 32:
210
  $bytes = Util::read($this->fileHandle, $baseOffset + $index * 4, 4);
211
  list(, $node) = unpack('N', $bytes);
212
+
213
  return $node;
214
  default:
215
  throw new InvalidDatabaseException(
230
  }
231
 
232
  list($data) = $this->decoder->decode($resolved);
233
+
234
  return $data;
235
  }
236
 
253
  for ($j = 0; $j < $markerLength; $j++) {
254
  fseek($handle, $fileSize - $i - $j - 1);
255
  $matchBit = fgetc($handle);
256
+ if ($matchBit !== $marker[$markerLength - $j - 1]) {
257
  continue 2;
258
  }
259
  }
260
+
261
  return $fileSize - $i;
262
  }
263
  throw new InvalidDatabaseException(
267
  }
268
 
269
  /**
270
+ * @throws \InvalidArgumentException if arguments are passed to the method
271
+ * @throws \BadMethodCallException if the database has been closed
272
+ *
273
+ * @return Metadata object for the database
274
  */
275
  public function metadata()
276
  {
295
  * Closes the MaxMind DB and returns resources to the system.
296
  *
297
  * @throws \Exception
298
+ * if an I/O error occurs
299
  */
300
  public function close()
301
  {
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Decoder.php CHANGED
@@ -2,19 +2,15 @@
2
 
3
  namespace MaxMind\Db\Reader;
4
 
5
- use MaxMind\Db\Reader\InvalidDatabaseException;
6
- use MaxMind\Db\Reader\Util;
7
-
8
  class Decoder
9
  {
10
-
11
  private $fileStream;
12
  private $pointerBase;
13
  // This is only used for unit testing
14
  private $pointerTestHack;
15
  private $switchByteOrder;
16
 
17
- private $types = array(
18
  0 => 'extended',
19
  1 => 'pointer',
20
  2 => 'utf8_string',
@@ -31,7 +27,7 @@ class Decoder
31
  13 => 'end_marker',
32
  14 => 'boolean',
33
  15 => 'float',
34
- );
35
 
36
  public function __construct(
37
  $fileStream,
@@ -45,7 +41,6 @@ class Decoder
45
  $this->switchByteOrder = $this->isPlatformLittleEndian();
46
  }
47
 
48
-
49
  public function decode($offset)
50
  {
51
  list(, $ctrlByte) = unpack(
@@ -59,20 +54,20 @@ class Decoder
59
  // Pointers are a special case, we don't read the next $size bytes, we
60
  // use the size to determine the length of the pointer and then follow
61
  // it.
62
- if ($type == 'pointer') {
63
  list($pointer, $offset) = $this->decodePointer($ctrlByte, $offset);
64
 
65
  // for unit testing
66
  if ($this->pointerTestHack) {
67
- return array($pointer);
68
  }
69
 
70
  list($result) = $this->decode($pointer);
71
 
72
- return array($result, $offset);
73
  }
74
 
75
- if ($type == 'extended') {
76
  list(, $nextByte) = unpack(
77
  'C',
78
  Util::read($this->fileStream, $offset, 1)
@@ -82,10 +77,10 @@ class Decoder
82
 
83
  if ($typeNum < 8) {
84
  throw new InvalidDatabaseException(
85
- "Something went horribly wrong in the decoder. An extended type "
86
- . "resolved to a type number < 8 ("
87
  . $this->types[$typeNum]
88
- . ")"
89
  );
90
  }
91
 
@@ -106,40 +101,42 @@ class Decoder
106
  case 'array':
107
  return $this->decodeArray($size, $offset);
108
  case 'boolean':
109
- return array($this->decodeBoolean($size), $offset);
110
  }
111
 
112
  $newOffset = $offset + $size;
113
  $bytes = Util::read($this->fileStream, $offset, $size);
114
  switch ($type) {
115
  case 'utf8_string':
116
- return array($this->decodeString($bytes), $newOffset);
117
  case 'double':
118
  $this->verifySize(8, $size);
119
- return array($this->decodeDouble($bytes), $newOffset);
 
120
  case 'float':
121
  $this->verifySize(4, $size);
122
- return array($this->decodeFloat($bytes), $newOffset);
 
123
  case 'bytes':
124
- return array($bytes, $newOffset);
125
  case 'uint16':
126
  case 'uint32':
127
- return array($this->decodeUint($bytes), $newOffset);
128
  case 'int32':
129
- return array($this->decodeInt32($bytes), $newOffset);
130
  case 'uint64':
131
  case 'uint128':
132
- return array($this->decodeBigUint($bytes, $size), $newOffset);
133
  default:
134
  throw new InvalidDatabaseException(
135
- "Unknown or unexpected type: " . $type
136
  );
137
  }
138
  }
139
 
140
  private function verifySize($expected, $actual)
141
  {
142
- if ($expected != $actual) {
143
  throw new InvalidDatabaseException(
144
  "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)"
145
  );
@@ -148,25 +145,26 @@ class Decoder
148
 
149
  private function decodeArray($size, $offset)
150
  {
151
- $array = array();
152
 
153
  for ($i = 0; $i < $size; $i++) {
154
  list($value, $offset) = $this->decode($offset);
155
  array_push($array, $value);
156
  }
157
 
158
- return array($array, $offset);
159
  }
160
 
161
  private function decodeBoolean($size)
162
  {
163
- return $size == 0 ? false : true;
164
  }
165
 
166
  private function decodeDouble($bits)
167
  {
168
  // XXX - Assumes IEEE 754 double on platform
169
  list(, $double) = unpack('d', $this->maybeSwitchByteOrder($bits));
 
170
  return $double;
171
  }
172
 
@@ -174,6 +172,7 @@ class Decoder
174
  {
175
  // XXX - Assumes IEEE 754 floats on platform
176
  list(, $float) = unpack('f', $this->maybeSwitchByteOrder($bits));
 
177
  return $float;
178
  }
179
 
@@ -181,13 +180,13 @@ class Decoder
181
  {
182
  $bytes = $this->zeroPadLeft($bytes, 4);
183
  list(, $int) = unpack('l', $this->maybeSwitchByteOrder($bytes));
 
184
  return $int;
185
  }
186
 
187
  private function decodeMap($size, $offset)
188
  {
189
-
190
- $map = array();
191
 
192
  for ($i = 0; $i < $size; $i++) {
193
  list($key, $offset) = $this->decode($offset);
@@ -195,15 +194,15 @@ class Decoder
195
  $map[$key] = $value;
196
  }
197
 
198
- return array($map, $offset);
199
  }
200
 
201
- private $pointerValueOffset = array(
202
  1 => 0,
203
  2 => 2048,
204
  3 => 526336,
205
  4 => 0,
206
- );
207
 
208
  private function decodePointer($ctrlByte, $offset)
209
  {
@@ -212,7 +211,7 @@ class Decoder
212
  $buffer = Util::read($this->fileStream, $offset, $pointerSize);
213
  $offset = $offset + $pointerSize;
214
 
215
- $packed = $pointerSize == 4
216
  ? $buffer
217
  : (pack('C', $ctrlByte & 0x7)) . $buffer;
218
 
@@ -220,12 +219,13 @@ class Decoder
220
  $pointer = $unpacked + $this->pointerBase
221
  + $this->pointerValueOffset[$pointerSize];
222
 
223
- return array($pointer, $offset);
224
  }
225
 
226
  private function decodeUint($bytes)
227
  {
228
  list(, $int) = unpack('N', $this->zeroPadLeft($bytes, 4));
 
229
  return $int;
230
  }
231
 
@@ -233,7 +233,7 @@ class Decoder
233
  {
234
  $maxUintBytes = log(PHP_INT_MAX, 2) / 8;
235
 
236
- if ($byteLength == 0) {
237
  return 0;
238
  }
239
 
@@ -261,6 +261,7 @@ class Decoder
261
  );
262
  }
263
  }
 
264
  return $integer;
265
  }
266
 
@@ -278,16 +279,16 @@ class Decoder
278
  $bytes = Util::read($this->fileStream, $offset, $bytesToRead);
279
  $decoded = $this->decodeUint($bytes);
280
 
281
- if ($size == 29) {
282
  $size = 29 + $decoded;
283
- } elseif ($size == 30) {
284
  $size = 285 + $decoded;
285
  } elseif ($size > 30) {
286
  $size = ($decoded & (0x0FFFFFFF >> (32 - (8 * $bytesToRead))))
287
  + 65821;
288
  }
289
 
290
- return array($size, $offset + $bytesToRead);
291
  }
292
 
293
  private function zeroPadLeft($content, $desiredLength)
@@ -304,6 +305,7 @@ class Decoder
304
  {
305
  $testint = 0x00FF;
306
  $packed = pack('S', $testint);
 
307
  return $testint === current(unpack('v', $packed));
308
  }
309
  }
2
 
3
  namespace MaxMind\Db\Reader;
4
 
 
 
 
5
  class Decoder
6
  {
 
7
  private $fileStream;
8
  private $pointerBase;
9
  // This is only used for unit testing
10
  private $pointerTestHack;
11
  private $switchByteOrder;
12
 
13
+ private $types = [
14
  0 => 'extended',
15
  1 => 'pointer',
16
  2 => 'utf8_string',
27
  13 => 'end_marker',
28
  14 => 'boolean',
29
  15 => 'float',
30
+ ];
31
 
32
  public function __construct(
33
  $fileStream,
41
  $this->switchByteOrder = $this->isPlatformLittleEndian();
42
  }
43
 
 
44
  public function decode($offset)
45
  {
46
  list(, $ctrlByte) = unpack(
54
  // Pointers are a special case, we don't read the next $size bytes, we
55
  // use the size to determine the length of the pointer and then follow
56
  // it.
57
+ if ($type === 'pointer') {
58
  list($pointer, $offset) = $this->decodePointer($ctrlByte, $offset);
59
 
60
  // for unit testing
61
  if ($this->pointerTestHack) {
62
+ return [$pointer];
63
  }
64
 
65
  list($result) = $this->decode($pointer);
66
 
67
+ return [$result, $offset];
68
  }
69
 
70
+ if ($type === 'extended') {
71
  list(, $nextByte) = unpack(
72
  'C',
73
  Util::read($this->fileStream, $offset, 1)
77
 
78
  if ($typeNum < 8) {
79
  throw new InvalidDatabaseException(
80
+ 'Something went horribly wrong in the decoder. An extended type '
81
+ . 'resolved to a type number < 8 ('
82
  . $this->types[$typeNum]
83
+ . ')'
84
  );
85
  }
86
 
101
  case 'array':
102
  return $this->decodeArray($size, $offset);
103
  case 'boolean':
104
+ return [$this->decodeBoolean($size), $offset];
105
  }
106
 
107
  $newOffset = $offset + $size;
108
  $bytes = Util::read($this->fileStream, $offset, $size);
109
  switch ($type) {
110
  case 'utf8_string':
111
+ return [$this->decodeString($bytes), $newOffset];
112
  case 'double':
113
  $this->verifySize(8, $size);
114
+
115
+ return [$this->decodeDouble($bytes), $newOffset];
116
  case 'float':
117
  $this->verifySize(4, $size);
118
+
119
+ return [$this->decodeFloat($bytes), $newOffset];
120
  case 'bytes':
121
+ return [$bytes, $newOffset];
122
  case 'uint16':
123
  case 'uint32':
124
+ return [$this->decodeUint($bytes), $newOffset];
125
  case 'int32':
126
+ return [$this->decodeInt32($bytes), $newOffset];
127
  case 'uint64':
128
  case 'uint128':
129
+ return [$this->decodeBigUint($bytes, $size), $newOffset];
130
  default:
131
  throw new InvalidDatabaseException(
132
+ 'Unknown or unexpected type: ' . $type
133
  );
134
  }
135
  }
136
 
137
  private function verifySize($expected, $actual)
138
  {
139
+ if ($expected !== $actual) {
140
  throw new InvalidDatabaseException(
141
  "The MaxMind DB file's data section contains bad data (unknown data type or corrupt data)"
142
  );
145
 
146
  private function decodeArray($size, $offset)
147
  {
148
+ $array = [];
149
 
150
  for ($i = 0; $i < $size; $i++) {
151
  list($value, $offset) = $this->decode($offset);
152
  array_push($array, $value);
153
  }
154
 
155
+ return [$array, $offset];
156
  }
157
 
158
  private function decodeBoolean($size)
159
  {
160
+ return $size === 0 ? false : true;
161
  }
162
 
163
  private function decodeDouble($bits)
164
  {
165
  // XXX - Assumes IEEE 754 double on platform
166
  list(, $double) = unpack('d', $this->maybeSwitchByteOrder($bits));
167
+
168
  return $double;
169
  }
170
 
172
  {
173
  // XXX - Assumes IEEE 754 floats on platform
174
  list(, $float) = unpack('f', $this->maybeSwitchByteOrder($bits));
175
+
176
  return $float;
177
  }
178
 
180
  {
181
  $bytes = $this->zeroPadLeft($bytes, 4);
182
  list(, $int) = unpack('l', $this->maybeSwitchByteOrder($bytes));
183
+
184
  return $int;
185
  }
186
 
187
  private function decodeMap($size, $offset)
188
  {
189
+ $map = [];
 
190
 
191
  for ($i = 0; $i < $size; $i++) {
192
  list($key, $offset) = $this->decode($offset);
194
  $map[$key] = $value;
195
  }
196
 
197
+ return [$map, $offset];
198
  }
199
 
200
+ private $pointerValueOffset = [
201
  1 => 0,
202
  2 => 2048,
203
  3 => 526336,
204
  4 => 0,
205
+ ];
206
 
207
  private function decodePointer($ctrlByte, $offset)
208
  {
211
  $buffer = Util::read($this->fileStream, $offset, $pointerSize);
212
  $offset = $offset + $pointerSize;
213
 
214
+ $packed = $pointerSize === 4
215
  ? $buffer
216
  : (pack('C', $ctrlByte & 0x7)) . $buffer;
217
 
219
  $pointer = $unpacked + $this->pointerBase
220
  + $this->pointerValueOffset[$pointerSize];
221
 
222
+ return [$pointer, $offset];
223
  }
224
 
225
  private function decodeUint($bytes)
226
  {
227
  list(, $int) = unpack('N', $this->zeroPadLeft($bytes, 4));
228
+
229
  return $int;
230
  }
231
 
233
  {
234
  $maxUintBytes = log(PHP_INT_MAX, 2) / 8;
235
 
236
+ if ($byteLength === 0) {
237
  return 0;
238
  }
239
 
261
  );
262
  }
263
  }
264
+
265
  return $integer;
266
  }
267
 
279
  $bytes = Util::read($this->fileStream, $offset, $bytesToRead);
280
  $decoded = $this->decodeUint($bytes);
281
 
282
+ if ($size === 29) {
283
  $size = 29 + $decoded;
284
+ } elseif ($size === 30) {
285
  $size = 285 + $decoded;
286
  } elseif ($size > 30) {
287
  $size = ($decoded & (0x0FFFFFFF >> (32 - (8 * $bytesToRead))))
288
  + 65821;
289
  }
290
 
291
+ return [$size, $offset + $bytesToRead];
292
  }
293
 
294
  private function zeroPadLeft($content, $desiredLength)
305
  {
306
  $testint = 0x00FF;
307
  $packed = pack('S', $testint);
308
+
309
  return $testint === current(unpack('v', $packed));
310
  }
311
  }
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Metadata.php CHANGED
@@ -5,35 +5,27 @@ namespace MaxMind\Db\Reader;
5
  /**
6
  * This class provides the metadata for the MaxMind DB file.
7
  *
8
- * @property integer nodeCount This is an unsigned 32-bit integer indicating
9
  * the number of nodes in the search tree.
10
- *
11
- * @property integer recordSize This is an unsigned 16-bit integer. It
12
  * indicates the number of bits in a record in the search tree. Note that each
13
  * node consists of two records.
14
- *
15
- * @property integer ipVersion This is an unsigned 16-bit integer which is
16
  * always 4 or 6. It indicates whether the database contains IPv4 or IPv6
17
  * address data.
18
- *
19
  * @property string databaseType This is a string that indicates the structure
20
  * of each data record associated with an IP address. The actual definition of
21
  * these structures is left up to the database creator.
22
- *
23
  * @property array languages An array of strings, each of which is a language
24
  * code. A given record may contain data items that have been localized to
25
  * some or all of these languages. This may be undefined.
26
- *
27
- * @property integer binaryFormatMajorVersion This is an unsigned 16-bit
28
  * integer indicating the major version number for the database's binary
29
  * format.
30
- *
31
- * @property integer binaryFormatMinorVersion This is an unsigned 16-bit
32
  * integer indicating the minor version number for the database's binary format.
33
- *
34
- * @property integer buildEpoch This is an unsigned 64-bit integer that
35
  * contains the database build timestamp as a Unix epoch value.
36
- *
37
  * @property array description This key will always point to a map
38
  * (associative array). The keys of that map will be language codes, and the
39
  * values will be a description in that language as a UTF-8 string. May be
5
  /**
6
  * This class provides the metadata for the MaxMind DB file.
7
  *
8
+ * @property int nodeCount This is an unsigned 32-bit integer indicating
9
  * the number of nodes in the search tree.
10
+ * @property int recordSize This is an unsigned 16-bit integer. It
 
11
  * indicates the number of bits in a record in the search tree. Note that each
12
  * node consists of two records.
13
+ * @property int ipVersion This is an unsigned 16-bit integer which is
 
14
  * always 4 or 6. It indicates whether the database contains IPv4 or IPv6
15
  * address data.
 
16
  * @property string databaseType This is a string that indicates the structure
17
  * of each data record associated with an IP address. The actual definition of
18
  * these structures is left up to the database creator.
 
19
  * @property array languages An array of strings, each of which is a language
20
  * code. A given record may contain data items that have been localized to
21
  * some or all of these languages. This may be undefined.
22
+ * @property int binaryFormatMajorVersion This is an unsigned 16-bit
 
23
  * integer indicating the major version number for the database's binary
24
  * format.
25
+ * @property int binaryFormatMinorVersion This is an unsigned 16-bit
 
26
  * integer indicating the minor version number for the database's binary format.
27
+ * @property int buildEpoch This is an unsigned 64-bit integer that
 
28
  * contains the database build timestamp as a Unix epoch value.
 
29
  * @property array description This key will always point to a map
30
  * (associative array). The keys of that map will be language codes, and the
31
  * values will be a description in that language as a UTF-8 string. May be
vendor/maxmind-db/reader/src/MaxMind/Db/Reader/Util.php CHANGED
@@ -2,16 +2,14 @@
2
 
3
  namespace MaxMind\Db\Reader;
4
 
5
- use MaxMind\Db\Reader\InvalidDatabaseException;
6
-
7
  class Util
8
  {
9
  public static function read($stream, $offset, $numberOfBytes)
10
  {
11
- if ($numberOfBytes == 0) {
12
  return '';
13
  }
14
- if (fseek($stream, $offset) == 0) {
15
  $value = fread($stream, $numberOfBytes);
16
 
17
  // We check that the number of bytes read is equal to the number
@@ -22,7 +20,7 @@ class Util
22
  }
23
  }
24
  throw new InvalidDatabaseException(
25
- "The MaxMind DB file contains bad data"
26
  );
27
  }
28
  }
2
 
3
  namespace MaxMind\Db\Reader;
4
 
 
 
5
  class Util
6
  {
7
  public static function read($stream, $offset, $numberOfBytes)
8
  {
9
+ if ($numberOfBytes === 0) {
10
  return '';
11
  }
12
+ if (fseek($stream, $offset) === 0) {
13
  $value = fread($stream, $numberOfBytes);
14
 
15
  // We check that the number of bytes read is equal to the number
20
  }
21
  }
22
  throw new InvalidDatabaseException(
23
+ 'The MaxMind DB file contains bad data'
24
  );
25
  }
26
  }
views/lookup.php CHANGED
@@ -46,7 +46,8 @@ if ($shortcode_options) {
46
  </form>
47
  <?php if ($ip_lookup_result !== false) :
48
  if (is_object($ip_lookup_result)) :
49
- $record = $ip_lookup_result;
 
50
  ?>
51
  <h3><?php _e('Lookup Result', 'geoip-detect'); ?></h3>
52
  <p>
46
  </form>
47
  <?php if ($ip_lookup_result !== false) :
48
  if (is_object($ip_lookup_result)) :
49
+ $record = $ip_lookup_result;
50
+
51
  ?>
52
  <h3><?php _e('Lookup Result', 'geoip-detect'); ?></h3>
53
  <p>