aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/compat.c91
-rw-r--r--src/common/compat.h15
-rw-r--r--src/common/compat_libevent.c252
-rw-r--r--src/common/compat_libevent.h56
-rw-r--r--src/common/compat_time.c628
-rw-r--r--src/common/compat_time.h162
-rw-r--r--src/common/include.am2
-rw-r--r--src/common/procmon.c18
-rw-r--r--src/common/sandbox.c49
-rw-r--r--src/common/timers.c54
-rw-r--r--src/common/timers.h3
-rw-r--r--src/common/util.c37
-rw-r--r--src/common/util.h3
-rw-r--r--src/config/geoip4615
-rw-r--r--src/config/geoip6982
-rw-r--r--src/config/mmdb-convert.py6
-rw-r--r--src/ext/README7
-rw-r--r--src/ext/eventdns.c3514
-rw-r--r--src/ext/eventdns.h337
-rw-r--r--src/ext/include.am1
-rw-r--r--src/or/buffers.c9
-rw-r--r--src/or/circuitlist.c6
-rw-r--r--src/or/config.c5
-rw-r--r--src/or/control.c6
-rw-r--r--src/or/cpuworker.c4
-rw-r--r--src/or/dns.c72
-rw-r--r--src/or/dnsserv.c4
-rw-r--r--src/or/eventdns_tor.h22
-rw-r--r--src/or/include.am8
-rw-r--r--src/or/main.c14
-rw-r--r--src/or/ntmain.c4
-rw-r--r--src/or/onion.c15
-rw-r--r--src/or/onion_fast.c8
-rw-r--r--src/or/onion_ntor.c5
-rw-r--r--src/or/onion_tap.c12
-rw-r--r--src/or/or.h8
-rw-r--r--src/or/periodic.c4
-rw-r--r--src/or/policies.c114
-rw-r--r--src/or/policies.h7
-rw-r--r--src/or/relay.c9
-rw-r--r--src/or/rendclient.c21
-rw-r--r--src/or/router.c8
-rw-r--r--src/or/routerlist.c2
-rw-r--r--src/or/routerlist.h1
-rw-r--r--src/or/scheduler.c4
-rw-r--r--src/test/log_test_helpers.c1
-rwxr-xr-xsrc/test/test-network.sh152
-rw-r--r--src/test/test-timers.c28
-rw-r--r--src/test/test.c59
-rw-r--r--src/test/test_address.c7
-rw-r--r--src/test/test_buffers.c18
-rw-r--r--src/test/test_compat_libevent.c102
-rw-r--r--src/test/test_oom.c87
-rw-r--r--src/test/test_policy.c34
-rw-r--r--src/test/test_scheduler.c11
-rw-r--r--src/test/test_shared_random.c6
-rw-r--r--src/test/test_util.c160
-rw-r--r--src/test/test_util_format.c8
-rw-r--r--src/test/test_workqueue.c4
-rw-r--r--src/win32/orconfig.h14
60 files changed, 5414 insertions, 6481 deletions
diff --git a/src/common/compat.c b/src/common/compat.c
index bae76f45db..081490d381 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -33,6 +33,12 @@
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
+#ifdef HAVE_UTIME_H
+#include <utime.h>
+#endif
+#ifdef HAVE_SYS_UTIME_H
+#include <sys/utime.h>
+#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -89,12 +95,6 @@ SecureZeroMemory(PVOID ptr, SIZE_T cnt)
#include "tor_readpassphrase.h"
#endif
-#ifndef HAVE_GETTIMEOFDAY
-#ifdef HAVE_FTIME
-#include <sys/timeb.h>
-#endif
-#endif
-
/* Includes for the process attaching prevention */
#if defined(HAVE_SYS_PRCTL_H) && defined(__linux__)
/* Only use the linux prctl; the IRIX prctl is totally different */
@@ -116,12 +116,6 @@ SecureZeroMemory(PVOID ptr, SIZE_T cnt)
#ifdef HAVE_SIGNAL_H
#include <signal.h>
#endif
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-#ifdef HAVE_SYS_UTIME_H
-#include <sys/utime.h>
-#endif
#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
#endif
@@ -131,12 +125,6 @@ SecureZeroMemory(PVOID ptr, SIZE_T cnt)
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif
-#ifdef TOR_UNIT_TESTS
-#if !defined(HAVE_USLEEP) && defined(HAVE_SYS_SELECT_H)
-/* as fallback implementation for tor_sleep_msec */
-#include <sys/select.h>
-#endif
-#endif
#include "torlog.h"
#include "util.h"
@@ -2836,53 +2824,6 @@ compute_num_cpus(void)
return num_cpus;
}
-/** Set *timeval to the current time of day. On error, log and terminate.
- * (Same as gettimeofday(timeval,NULL), but never returns -1.)
- */
-void
-tor_gettimeofday(struct timeval *timeval)
-{
-#ifdef _WIN32
- /* Epoch bias copied from perl: number of units between windows epoch and
- * Unix epoch. */
-#define EPOCH_BIAS U64_LITERAL(116444736000000000)
-#define UNITS_PER_SEC U64_LITERAL(10000000)
-#define USEC_PER_SEC U64_LITERAL(1000000)
-#define UNITS_PER_USEC U64_LITERAL(10)
- union {
- uint64_t ft_64;
- FILETIME ft_ft;
- } ft;
- /* number of 100-nsec units since Jan 1, 1601 */
- GetSystemTimeAsFileTime(&ft.ft_ft);
- if (ft.ft_64 < EPOCH_BIAS) {
- /* LCOV_EXCL_START */
- log_err(LD_GENERAL,"System time is before 1970; failing.");
- exit(1);
- /* LCOV_EXCL_STOP */
- }
- ft.ft_64 -= EPOCH_BIAS;
- timeval->tv_sec = (unsigned) (ft.ft_64 / UNITS_PER_SEC);
- timeval->tv_usec = (unsigned) ((ft.ft_64 / UNITS_PER_USEC) % USEC_PER_SEC);
-#elif defined(HAVE_GETTIMEOFDAY)
- if (gettimeofday(timeval, NULL)) {
- /* LCOV_EXCL_START */
- log_err(LD_GENERAL,"gettimeofday failed.");
- /* If gettimeofday dies, we have either given a bad timezone (we didn't),
- or segfaulted.*/
- exit(1);
- /* LCOV_EXCL_STOP */
- }
-#elif defined(HAVE_FTIME)
- struct timeb tb;
- ftime(&tb);
- timeval->tv_sec = tb.time;
- timeval->tv_usec = tb.millitm * 1000;
-#else
-#error "No way to get time."
-#endif
- return;
-}
#if !defined(_WIN32)
/** Defined iff we need to add locks when defining fake versions of reentrant
@@ -3441,26 +3382,6 @@ get_total_system_memory(size_t *mem_out)
return 0;
}
-#ifdef TOR_UNIT_TESTS
-/** Delay for <b>msec</b> milliseconds. Only used in tests. */
-void
-tor_sleep_msec(int msec)
-{
-#ifdef _WIN32
- Sleep(msec);
-#elif defined(HAVE_USLEEP)
- sleep(msec / 1000);
- /* Some usleep()s hate sleeping more than 1 sec */
- usleep((msec % 1000) * 1000);
-#elif defined(HAVE_SYS_SELECT_H)
- struct timeval tv = { msec / 1000, (msec % 1000) * 1000};
- select(0, NULL, NULL, NULL, &tv);
-#else
- sleep(CEIL_DIV(msec, 1000));
-#endif
-}
-#endif
-
/** Emit the password prompt <b>prompt</b>, then read up to <b>buflen</b>
* bytes of passphrase into <b>output</b>. Return the number of bytes in
* the passphrase, excluding terminating NUL.
diff --git a/src/common/compat.h b/src/common/compat.h
index 6f102becc2..54ab8b08e8 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -42,6 +42,8 @@
#include <netinet6/in6.h>
#endif
+#include "compat_time.h"
+
#if defined(__has_feature)
# if __has_feature(address_sanitizer)
/* Some of the fancy glibc strcmp() macros include references to memory that
@@ -379,15 +381,6 @@ const char *tor_fix_source_file(const char *fname);
#endif
/* ===== Time compatibility */
-#if !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_STRUCT_TIMEVAL_TV_SEC)
-/** Implementation of timeval for platforms that don't have it. */
-struct timeval {
- time_t tv_sec;
- unsigned int tv_usec;
-};
-#endif
-
-void tor_gettimeofday(struct timeval *timeval);
struct tm *tor_localtime_r(const time_t *timep, struct tm *result);
struct tm *tor_gmtime_r(const time_t *timep, struct tm *result);
@@ -737,10 +730,6 @@ char *format_win32_error(DWORD err);
#endif
-#ifdef TOR_UNIT_TESTS
-void tor_sleep_msec(int msec);
-#endif
-
#ifdef COMPAT_PRIVATE
#if !defined(HAVE_SOCKETPAIR) || defined(_WIN32) || defined(TOR_UNIT_TESTS)
#define NEED_ERSATZ_SOCKETPAIR
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index 4469f15ac7..4dab54493f 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -3,11 +3,8 @@
/**
* \file compat_libevent.c
- * \brief Wrappers to handle porting between different versions of libevent.
- *
- * In an ideal world, we'd just use Libevent 2.0 from now on. But as of June
- * 2012, Libevent 1.4 is still all over, and some poor souls are stuck on
- * Libevent 1.3e. */
+ * \brief Wrappers and utility functions for Libevent.
+ */
#include "orconfig.h"
#include "compat.h"
@@ -19,15 +16,11 @@
#include "util.h"
#include "torlog.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
#include <event2/thread.h>
#ifdef USE_BUFFEREVENTS
#include <event2/bufferevent.h>
#endif
-#else
-#include <event.h>
-#endif
/** A string which, if it appears in a libevent log, should be ignored. */
static const char *suppress_msg = NULL;
@@ -69,6 +62,7 @@ configure_libevent_logging(void)
{
event_set_log_callback(libevent_logging_callback);
}
+
/** Ignore any libevent log message that contains <b>msg</b>. */
void
suppress_libevent_log_msg(const char *msg)
@@ -76,44 +70,6 @@ suppress_libevent_log_msg(const char *msg)
suppress_msg = msg;
}
-#ifndef HAVE_EVENT2_EVENT_H
-/** Work-alike replacement for event_new() on pre-Libevent-2.0 systems. */
-struct event *
-tor_event_new(struct event_base *base, int sock, short what,
- void (*cb)(int, short, void *), void *arg)
-{
- struct event *e = tor_malloc_zero(sizeof(struct event));
- event_set(e, sock, what, cb, arg);
- if (! base)
- base = tor_libevent_get_base();
- event_base_set(base, e);
- return e;
-}
-/** Work-alike replacement for evtimer_new() on pre-Libevent-2.0 systems. */
-struct event *
-tor_evtimer_new(struct event_base *base,
- void (*cb)(int, short, void *), void *arg)
-{
- return tor_event_new(base, -1, 0, cb, arg);
-}
-/** Work-alike replacement for evsignal_new() on pre-Libevent-2.0 systems. */
-struct event *
-tor_evsignal_new(struct event_base * base, int sig,
- void (*cb)(int, short, void *), void *arg)
-{
- return tor_event_new(base, sig, EV_SIGNAL|EV_PERSIST, cb, arg);
-}
-/** Work-alike replacement for event_free() on pre-Libevent-2.0 systems,
- * except tolerate tor_event_free(NULL). */
-void
-tor_event_free(struct event *ev)
-{
- if (ev == NULL)
- return;
- event_del(ev);
- tor_free(ev);
-}
-#else
/* Wrapper for event_free() that tolerates tor_event_free(NULL) */
void
tor_event_free(struct event *ev)
@@ -122,7 +78,6 @@ tor_event_free(struct event *ev)
return;
event_free(ev);
}
-#endif
/** Global event base for use by the main thread. */
static struct event_base *the_event_base = NULL;
@@ -158,7 +113,6 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
/* some paths below don't use torcfg, so avoid unused variable warnings */
(void)torcfg;
-#ifdef HAVE_EVENT2_EVENT_H
{
int attempts = 0;
int using_threads;
@@ -190,16 +144,12 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
event_config_set_flag(cfg, EVENT_BASE_FLAG_NOLOCK);
}
-#if defined(LIBEVENT_VERSION_NUMBER) && LIBEVENT_VERSION_NUMBER >= V(2,0,7)
if (torcfg->num_cpus > 0)
event_config_set_num_cpus_hint(cfg, torcfg->num_cpus);
-#endif
-#if LIBEVENT_VERSION_NUMBER >= V(2,0,9)
/* We can enable changelist support with epoll, since we don't give
* Libevent any dup'd fds. This lets us avoid some syscalls. */
event_config_set_flag(cfg, EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST);
-#endif
the_event_base = event_base_new_with_config(cfg);
@@ -223,9 +173,6 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
goto retry;
}
}
-#else
- the_event_base = event_init();
-#endif
if (!the_event_base) {
/* LCOV_EXCL_START */
@@ -234,8 +181,6 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg)
/* LCOV_EXCL_STOP */
}
- /* Making this a NOTICE for now so we can link bugs to a libevent versions
- * or methods better. */
log_info(LD_GENERAL,
"Initialized libevent version %s using method %s. Good.",
event_get_version(), tor_libevent_get_method());
@@ -257,62 +202,7 @@ tor_libevent_get_base, (void))
const char *
tor_libevent_get_method(void)
{
-#ifdef HAVE_EVENT2_EVENT_H
return event_base_get_method(the_event_base);
-#else
- return event_get_method();
-#endif
-}
-
-/** Return the le_version_t for the version of libevent specified in the
- * string <b>v</b>. If the version is very new or uses an unrecognized
- * version, format, return LE_OTHER. */
-STATIC le_version_t
-tor_decode_libevent_version(const char *v)
-{
- unsigned major, minor, patchlevel;
- char c, e, extra;
- int fields;
-
- /* Try the new preferred "1.4.11-stable" format.
- * Also accept "1.4.14b-stable". */
- fields = tor_sscanf(v, "%u.%u.%u%c%c", &major, &minor, &patchlevel, &c, &e);
- if (fields == 3 ||
- ((fields == 4 || fields == 5 ) && (c == '-' || c == '_')) ||
- (fields == 5 && TOR_ISALPHA(c) && (e == '-' || e == '_'))) {
- return V(major,minor,patchlevel);
- }
-
- /* Try the old "1.3e" format. */
- fields = tor_sscanf(v, "%u.%u%c%c", &major, &minor, &c, &extra);
- if (fields == 3 && TOR_ISALPHA(c)) {
- return V_OLD(major, minor, c);
- } else if (fields == 2) {
- return V(major, minor, 0);
- }
-
- return LE_OTHER;
-}
-
-/** Return an integer representing the binary interface of a Libevent library.
- * Two different versions with different numbers are sure not to be binary
- * compatible. Two different versions with the same numbers have a decent
- * chance of binary compatibility.*/
-STATIC int
-le_versions_compatibility(le_version_t v)
-{
- if (v == LE_OTHER)
- return 0;
- if (v < V_OLD(1,0,'c'))
- return 1;
- else if (v < V(1,4,0))
- return 2;
- else if (v < V(1,4,99))
- return 3;
- else if (v < V(2,0,1))
- return 4;
- else /* Everything 2.0 and later should be compatible. */
- return 5;
}
/** Return a string representation of the version of the currently running
@@ -323,101 +213,14 @@ tor_libevent_get_version_str(void)
return event_get_version();
}
-#if defined(LIBEVENT_VERSION)
-#define HEADER_VERSION LIBEVENT_VERSION
-#elif defined(_EVENT_VERSION)
-#define HEADER_VERSION _EVENT_VERSION
-#endif
-
/** Return a string representation of the version of Libevent that was used
* at compilation time. */
const char *
tor_libevent_get_header_version_str(void)
{
- return HEADER_VERSION;
-}
-
-/** See whether the headers we were built against differ from the library we
- * linked against so much that we're likely to crash. If so, warn the
- * user. */
-void
-tor_check_libevent_header_compatibility(void)
-{
- (void) le_versions_compatibility;
- (void) tor_decode_libevent_version;
-
- /* In libevent versions before 2.0, it's hard to keep binary compatibility
- * between upgrades, and unpleasant to detect when the version we compiled
- * against is unlike the version we have linked against. Here's how. */
-#if defined(HEADER_VERSION)
- /* We have a header-file version and a function-call version. Easy. */
- if (strcmp(HEADER_VERSION, event_get_version())) {
- le_version_t v1, v2;
- int compat1 = -1, compat2 = -1;
- int verybad;
- v1 = tor_decode_libevent_version(HEADER_VERSION);
- v2 = tor_decode_libevent_version(event_get_version());
- compat1 = le_versions_compatibility(v1);
- compat2 = le_versions_compatibility(v2);
-
- verybad = compat1 != compat2;
-
- tor_log(verybad ? LOG_WARN : LOG_NOTICE,
- LD_GENERAL, "We were compiled with headers from version %s "
- "of Libevent, but we're using a Libevent library that says it's "
- "version %s.", HEADER_VERSION, event_get_version());
- if (verybad)
- log_warn(LD_GENERAL, "This will almost certainly make Tor crash.");
- else
- log_info(LD_GENERAL, "I think these versions are binary-compatible.");
- }
-#else
- /* event_get_version but no _EVENT_VERSION. We might be in 1.4.0-beta or
- earlier, where that's normal. To see whether we were compiled with an
- earlier version, let's see whether the struct event defines MIN_HEAP_IDX.
- */
-#ifdef HAVE_STRUCT_EVENT_MIN_HEAP_IDX
- /* The header files are 1.4.0-beta or later. If the version is not
- * 1.4.0-beta, we are incompatible. */
- {
- if (strcmp(event_get_version(), "1.4.0-beta")) {
- log_warn(LD_GENERAL, "It's a little hard to tell, but you seem to have "
- "Libevent 1.4.0-beta header files, whereas you have linked "
- "against Libevent %s. This will probably make Tor crash.",
- event_get_version());
- }
- }
-#else
- /* Our headers are 1.3e or earlier. If the library version is not 1.4.x or
- later, we're probably fine. */
- {
- const char *v = event_get_version();
- if ((v[0] == '1' && v[2] == '.' && v[3] > '3') || v[0] > '1') {
- log_warn(LD_GENERAL, "It's a little hard to tell, but you seem to have "
- "Libevent header file from 1.3e or earlier, whereas you have "
- "linked against Libevent %s. This will probably make Tor "
- "crash.", event_get_version());
- }
- }
-#endif
-
- /* Your libevent is ancient. */
-#endif
+ return LIBEVENT_VERSION;
}
-/*
- If possible, we're going to try to use Libevent's periodic timer support,
- since it does a pretty good job of making sure that periodic events get
- called exactly M seconds apart, rather than starting each one exactly M
- seconds after the time that the last one was run.
- */
-#ifdef HAVE_EVENT2_EVENT_H
-#define HAVE_PERIODIC
-#define PERIODIC_FLAGS EV_PERSIST
-#else
-#define PERIODIC_FLAGS 0
-#endif
-
/** Represents a timer that's run every N microseconds by Libevent. */
struct periodic_timer_t {
/** Underlying event used to implement this periodic event. */
@@ -426,11 +229,6 @@ struct periodic_timer_t {
void (*cb)(struct periodic_timer_t *, void *);
/** User-supplied data for the callback */
void *data;
-#ifndef HAVE_PERIODIC
- /** If Libevent doesn't know how to invoke events every N microseconds,
- * we'll need to remember the timeout interval here. */
- struct timeval tv;
-#endif
};
/** Libevent callback to implement a periodic event. */
@@ -440,10 +238,6 @@ periodic_timer_cb(evutil_socket_t fd, short what, void *arg)
periodic_timer_t *timer = arg;
(void) what;
(void) fd;
-#ifndef HAVE_PERIODIC
- /** reschedule the event as needed. */
- event_add(timer->ev, &timer->tv);
-#endif
timer->cb(timer, timer->data);
}
@@ -461,16 +255,13 @@ periodic_timer_new(struct event_base *base,
tor_assert(tv);
tor_assert(cb);
timer = tor_malloc_zero(sizeof(periodic_timer_t));
- if (!(timer->ev = tor_event_new(base, -1, PERIODIC_FLAGS,
+ if (!(timer->ev = tor_event_new(base, -1, EV_PERSIST,
periodic_timer_cb, timer))) {
tor_free(timer);
return NULL;
}
timer->cb = cb;
timer->data = data;
-#ifndef HAVE_PERIODIC
- memcpy(&timer->tv, tv, sizeof(struct timeval));
-#endif
event_add(timer->ev, (struct timeval *)tv); /*drop const for old libevent*/
return timer;
}
@@ -541,16 +332,13 @@ int
tor_init_libevent_rng(void)
{
int rv = 0;
-#ifdef HAVE_EVUTIL_SECURE_RNG_INIT
char buf[256];
if (evutil_secure_rng_init() < 0) {
rv = -1;
}
- /* Older libevent -- manually initialize the RNG */
crypto_rand(buf, 32);
evutil_secure_rng_add_bytes(buf, 32);
evutil_secure_rng_get_bytes(buf, sizeof(buf));
-#endif
return rv;
}
@@ -600,33 +388,3 @@ tor_gettimeofday_cache_set(const struct timeval *tv)
#endif
#endif
-/**
- * As tor_gettimeofday_cached, but can never move backwards in time.
- *
- * The returned value may diverge from wall-clock time, since wall-clock time
- * can trivially be adjusted backwards, and this can't. Don't mix wall-clock
- * time with these values in the same calculation.
- *
- * Depending on implementation, this function may or may not "smooth out" huge
- * jumps forward in wall-clock time. It may or may not keep its results
- * advancing forward (as opposed to stalling) if the wall-clock time goes
- * backwards. The current implementation does neither of of these.
- *
- * This function is not thread-safe; do not call it outside the main thread.
- *
- * In future versions of Tor, this may return a time does not have its
- * origin at the Unix epoch.
- */
-void
-tor_gettimeofday_cached_monotonic(struct timeval *tv)
-{
- struct timeval last_tv = { 0, 0 };
-
- tor_gettimeofday_cached(tv);
- if (timercmp(tv, &last_tv, OP_LT)) {
- memcpy(tv, &last_tv, sizeof(struct timeval));
- } else {
- memcpy(&last_tv, tv, sizeof(struct timeval));
- }
-}
-
diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h
index 4b8b300112..e64095bbfa 100644
--- a/src/common/compat_libevent.h
+++ b/src/common/compat_libevent.h
@@ -7,40 +7,21 @@
#include "orconfig.h"
#include "testsupport.h"
-struct event;
-struct event_base;
-#ifdef USE_BUFFEREVENTS
-struct bufferevent;
-struct ev_token_bucket_cfg;
-struct bufferevent_rate_limit_group;
-#endif
+#include <event2/event.h>
-#ifdef HAVE_EVENT2_EVENT_H
-#include <event2/util.h>
-#elif !defined(EVUTIL_SOCKET_DEFINED)
-#define EVUTIL_SOCKET_DEFINED
-#define evutil_socket_t int
+#ifdef USE_BUFFEREVENTS
+#include <event2/bufferevent.h>
#endif
void configure_libevent_logging(void);
void suppress_libevent_log_msg(const char *msg);
-#ifdef HAVE_EVENT2_EVENT_H
#define tor_event_new event_new
#define tor_evtimer_new evtimer_new
#define tor_evsignal_new evsignal_new
#define tor_evdns_add_server_port(sock, tcp, cb, data) \
evdns_add_server_port_with_base(tor_libevent_get_base(), \
(sock),(tcp),(cb),(data));
-#else
-struct event *tor_event_new(struct event_base * base, evutil_socket_t sock,
- short what, void (*cb)(evutil_socket_t, short, void *), void *arg);
-struct event *tor_evtimer_new(struct event_base * base,
- void (*cb)(evutil_socket_t, short, void *), void *arg);
-struct event *tor_evsignal_new(struct event_base * base, int sig,
- void (*cb)(evutil_socket_t, short, void *), void *arg);
-#define tor_evdns_add_server_port evdns_add_server_port
-#endif
void tor_event_free(struct event *ev);
@@ -89,43 +70,20 @@ void tor_gettimeofday_cache_clear(void);
#ifdef TOR_UNIT_TESTS
void tor_gettimeofday_cache_set(const struct timeval *tv);
#endif
-void tor_gettimeofday_cached_monotonic(struct timeval *tv);
#ifdef COMPAT_LIBEVENT_PRIVATE
-/** A number representing a version of Libevent.
- This is a 4-byte number, with the first three bytes representing the
- major, minor, and patchlevel respectively of the library. The fourth
- byte is unused.
+/** Macro: returns the number of a Libevent version as a 4-byte number,
+ with the first three bytes representing the major, minor, and patchlevel
+ respectively of the library. The fourth byte is unused.
This is equivalent to the format of LIBEVENT_VERSION_NUMBER on Libevent
- 2.0.1 or later. For versions of Libevent before 1.4.0, which followed the
- format of "1.0, 1.0a, 1.0b", we define 1.0 to be equivalent to 1.0.0, 1.0a
- to be equivalent to 1.0.1, and so on.
-*/
-typedef uint32_t le_version_t;
-
-/** @{ */
-/** Macros: returns the number of a libevent version as a le_version_t */
+ 2.0.1 or later. */
#define V(major, minor, patch) \
(((major) << 24) | ((minor) << 16) | ((patch) << 8))
-#define V_OLD(major, minor, patch) \
- V((major), (minor), (patch)-'a'+1)
-/** @} */
-
-/** Represetns a version of libevent so old we can't figure out what version
- * it is. */
-#define LE_OLD V(0,0,0)
-/** Represents a version of libevent so weird we can't figure out what version
- * it is. */
-#define LE_OTHER V(0,0,99)
STATIC void
libevent_logging_callback(int severity, const char *msg);
-STATIC le_version_t
-tor_decode_libevent_version(const char *v);
-STATIC int
-le_versions_compatibility(le_version_t v);
#endif
#endif
diff --git a/src/common/compat_time.c b/src/common/compat_time.c
new file mode 100644
index 0000000000..7676e3a0e5
--- /dev/null
+++ b/src/common/compat_time.c
@@ -0,0 +1,628 @@
+/* Copyright (c) 2003-2004, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compat_time.c
+ * \brief Portable wrappers for finding out the current time, running
+ * timers, etc.
+ **/
+
+#define COMPAT_TIME_PRIVATE
+#include "compat.h"
+
+#ifdef _WIN32
+#include <winsock2.h>
+#include <windows.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef TOR_UNIT_TESTS
+#if !defined(HAVE_USLEEP) && defined(HAVE_SYS_SELECT_H)
+/* as fallback implementation for tor_sleep_msec */
+#include <sys/select.h>
+#endif
+#endif
+
+#ifdef __APPLE__
+#include <mach/mach_time.h>
+#endif
+
+#include "torlog.h"
+#include "util.h"
+#include "container.h"
+
+#ifndef HAVE_GETTIMEOFDAY
+#ifdef HAVE_FTIME
+#include <sys/timeb.h>
+#endif
+#endif
+
+#ifdef _WIN32
+#undef HAVE_CLOCK_GETTIME
+#endif
+
+#ifdef TOR_UNIT_TESTS
+/** Delay for <b>msec</b> milliseconds. Only used in tests. */
+void
+tor_sleep_msec(int msec)
+{
+#ifdef _WIN32
+ Sleep(msec);
+#elif defined(HAVE_USLEEP)
+ sleep(msec / 1000);
+ /* Some usleep()s hate sleeping more than 1 sec */
+ usleep((msec % 1000) * 1000);
+#elif defined(HAVE_SYS_SELECT_H)
+ struct timeval tv = { msec / 1000, (msec % 1000) * 1000};
+ select(0, NULL, NULL, NULL, &tv);
+#else
+ sleep(CEIL_DIV(msec, 1000));
+#endif
+}
+#endif
+
+/** Set *timeval to the current time of day. On error, log and terminate.
+ * (Same as gettimeofday(timeval,NULL), but never returns -1.)
+ */
+void
+tor_gettimeofday(struct timeval *timeval)
+{
+#ifdef _WIN32
+ /* Epoch bias copied from perl: number of units between windows epoch and
+ * Unix epoch. */
+#define EPOCH_BIAS U64_LITERAL(116444736000000000)
+#define UNITS_PER_SEC U64_LITERAL(10000000)
+#define USEC_PER_SEC U64_LITERAL(1000000)
+#define UNITS_PER_USEC U64_LITERAL(10)
+ union {
+ uint64_t ft_64;
+ FILETIME ft_ft;
+ } ft;
+ /* number of 100-nsec units since Jan 1, 1601 */
+ GetSystemTimeAsFileTime(&ft.ft_ft);
+ if (ft.ft_64 < EPOCH_BIAS) {
+ /* LCOV_EXCL_START */
+ log_err(LD_GENERAL,"System time is before 1970; failing.");
+ exit(1);
+ /* LCOV_EXCL_STOP */
+ }
+ ft.ft_64 -= EPOCH_BIAS;
+ timeval->tv_sec = (unsigned) (ft.ft_64 / UNITS_PER_SEC);
+ timeval->tv_usec = (unsigned) ((ft.ft_64 / UNITS_PER_USEC) % USEC_PER_SEC);
+#elif defined(HAVE_GETTIMEOFDAY)
+ if (gettimeofday(timeval, NULL)) {
+ /* LCOV_EXCL_START */
+ log_err(LD_GENERAL,"gettimeofday failed.");
+ /* If gettimeofday dies, we have either given a bad timezone (we didn't),
+ or segfaulted.*/
+ exit(1);
+ /* LCOV_EXCL_STOP */
+ }
+#elif defined(HAVE_FTIME)
+ struct timeb tb;
+ ftime(&tb);
+ timeval->tv_sec = tb.time;
+ timeval->tv_usec = tb.millitm * 1000;
+#else
+#error "No way to get time."
+#endif
+ return;
+}
+
+#define ONE_MILLION ((int64_t) (1000 * 1000))
+#define ONE_BILLION ((int64_t) (1000 * 1000 * 1000))
+
+/** True iff monotime_init has been called. */
+static int monotime_initialized = 0;
+
+static monotime_t initialized_at;
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+static monotime_coarse_t initialized_at_coarse;
+#endif
+
+#ifdef TOR_UNIT_TESTS
+/** True if we are running unit tests and overriding the current monotonic
+ * time. Note that mocked monotonic time might not be monotonic.
+ */
+static int monotime_mocking_enabled = 0;
+static monotime_t initialized_at_saved;
+
+static int64_t mock_time_nsec = 0;
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+static int64_t mock_time_nsec_coarse = 0;
+static monotime_coarse_t initialized_at_coarse_saved;
+#endif
+
+void
+monotime_enable_test_mocking(void)
+{
+ if (BUG(monotime_initialized == 0)) {
+ monotime_init();
+ }
+
+ tor_assert_nonfatal(monotime_mocking_enabled == 0);
+ monotime_mocking_enabled = 1;
+ memcpy(&initialized_at_saved,
+ &initialized_at, sizeof(monotime_t));
+ memset(&initialized_at, 0, sizeof(monotime_t));
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+ memcpy(&initialized_at_coarse_saved,
+ &initialized_at_coarse, sizeof(monotime_coarse_t));
+ memset(&initialized_at_coarse, 0, sizeof(monotime_coarse_t));
+#endif
+}
+
+void
+monotime_disable_test_mocking(void)
+{
+ tor_assert_nonfatal(monotime_mocking_enabled == 1);
+ monotime_mocking_enabled = 0;
+
+ memcpy(&initialized_at,
+ &initialized_at_saved, sizeof(monotime_t));
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+ memcpy(&initialized_at_coarse,
+ &initialized_at_coarse_saved, sizeof(monotime_coarse_t));
+#endif
+}
+
+void
+monotime_set_mock_time_nsec(int64_t nsec)
+{
+ tor_assert_nonfatal(monotime_mocking_enabled == 1);
+ mock_time_nsec = nsec;
+}
+
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+void
+monotime_coarse_set_mock_time_nsec(int64_t nsec)
+{
+ tor_assert_nonfatal(monotime_mocking_enabled == 1);
+ mock_time_nsec_coarse = nsec;
+}
+#endif
+#endif
+
+/* "ratchet" functions for monotonic time. */
+
+#if defined(_WIN32) || defined(TOR_UNIT_TESTS)
+
+/** Protected by lock: last value returned by monotime_get(). */
+static int64_t last_pctr = 0;
+/** Protected by lock: offset we must add to monotonic time values. */
+static int64_t pctr_offset = 0;
+/* If we are using GetTickCount(), how many times has it rolled over? */
+static uint32_t rollover_count = 0;
+/* If we are using GetTickCount(), what's the last value it returned? */
+static int64_t last_tick_count = 0;
+
+/** Helper for windows: Called with a sequence of times that are supposed
+ * to be monotonic; increments them as appropriate so that they actually
+ * _are_ monotonic.
+ *
+ * Caller must hold lock. */
+STATIC int64_t
+ratchet_performance_counter(int64_t count_raw)
+{
+ /* must hold lock */
+ const int64_t count_adjusted = count_raw + pctr_offset;
+
+ if (PREDICT_UNLIKELY(count_adjusted < last_pctr)) {
+ /* Monotonicity failed! Pretend no time elapsed. */
+ pctr_offset = last_pctr - count_raw;
+ return last_pctr;
+ } else {
+ last_pctr = count_adjusted;
+ return count_adjusted;
+ }
+}
+
+STATIC int64_t
+ratchet_coarse_performance_counter(const int64_t count_raw)
+{
+ int64_t count = count_raw + (((int64_t)rollover_count) << 32);
+ while (PREDICT_UNLIKELY(count < last_tick_count)) {
+ ++rollover_count;
+ count = count_raw + (((int64_t)rollover_count) << 32);
+ }
+ last_tick_count = count;
+ return count;
+}
+#endif
+
+#if defined(MONOTIME_USING_GETTIMEOFDAY) || defined(TOR_UNIT_TESTS)
+static struct timeval last_timeofday = { 0, 0 };
+static struct timeval timeofday_offset = { 0, 0 };
+
+/** Helper for gettimeofday(): Called with a sequence of times that are
+ * supposed to be monotonic; increments them as appropriate so that they
+ * actually _are_ monotonic.
+ *
+ * Caller must hold lock. */
+STATIC void
+ratchet_timeval(const struct timeval *timeval_raw, struct timeval *out)
+{
+ /* must hold lock */
+ timeradd(timeval_raw, &timeofday_offset, out);
+ if (PREDICT_UNLIKELY(timercmp(out, &last_timeofday, <))) {
+ /* time ran backwards. Instead, declare that no time occurred. */
+ timersub(&last_timeofday, timeval_raw, &timeofday_offset);
+ memcpy(out, &last_timeofday, sizeof(struct timeval));
+ } else {
+ memcpy(&last_timeofday, out, sizeof(struct timeval));
+ }
+}
+#endif
+
+#ifdef TOR_UNIT_TESTS
+/** For testing: reset all the ratchets */
+void
+monotime_reset_ratchets_for_testing(void)
+{
+ last_pctr = pctr_offset = last_tick_count = 0;
+ rollover_count = 0;
+ memset(&last_timeofday, 0, sizeof(struct timeval));
+ memset(&timeofday_offset, 0, sizeof(struct timeval));
+}
+#endif
+
+#ifdef __APPLE__
+
+/** Initialized on startup: tells is how to convert from ticks to
+ * nanoseconds.
+ */
+static struct mach_timebase_info mach_time_info;
+
+static void
+monotime_init_internal(void)
+{
+ tor_assert(!monotime_initialized);
+ int r = mach_timebase_info(&mach_time_info);
+ tor_assert(r == 0);
+ tor_assert(mach_time_info.denom != 0);
+}
+
+/**
+ * Set "out" to the most recent monotonic time value
+ */
+void
+monotime_get(monotime_t *out)
+{
+#ifdef TOR_UNIT_TESTS
+ if (monotime_mocking_enabled) {
+ out->abstime_ = (mock_time_nsec * mach_time_info.denom)
+ / mach_time_info.numer;
+ return;
+ }
+#endif
+ out->abstime_ = mach_absolute_time();
+}
+
+/**
+ * Return the number of nanoseconds between <b>start</b> and <b>end</b>.
+ */
+int64_t
+monotime_diff_nsec(const monotime_t *start,
+ const monotime_t *end)
+{
+ if (BUG(mach_time_info.denom == 0)) {
+ monotime_init();
+ }
+ const int64_t diff_ticks = end->abstime_ - start->abstime_;
+ const int64_t diff_nsec =
+ (diff_ticks * mach_time_info.numer) / mach_time_info.denom;
+ return diff_nsec;
+}
+
+/* end of "__APPLE__" */
+#elif defined(HAVE_CLOCK_GETTIME)
+
+static void
+monotime_init_internal(void)
+{
+ /* no action needed. */
+}
+
+void
+monotime_get(monotime_t *out)
+{
+#ifdef TOR_UNIT_TESTS
+ if (monotime_mocking_enabled) {
+ out->ts_.tv_sec = (time_t) (mock_time_nsec / ONE_BILLION);
+ out->ts_.tv_nsec = (int) (mock_time_nsec % ONE_BILLION);
+ return;
+ }
+#endif
+ int r = clock_gettime(CLOCK_MONOTONIC, &out->ts_);
+ tor_assert(r == 0);
+}
+
+#ifdef CLOCK_MONOTONIC_COARSE
+void
+monotime_coarse_get(monotime_coarse_t *out)
+{
+#ifdef TOR_UNIT_TESTS
+ if (monotime_mocking_enabled) {
+ out->ts_.tv_sec = (time_t) (mock_time_nsec_coarse / ONE_BILLION);
+ out->ts_.tv_nsec = (int) (mock_time_nsec_coarse % ONE_BILLION);
+ return;
+ }
+#endif
+ int r = clock_gettime(CLOCK_MONOTONIC_COARSE, &out->ts_);
+ tor_assert(r == 0);
+}
+#endif
+
+int64_t
+monotime_diff_nsec(const monotime_t *start,
+ const monotime_t *end)
+{
+ const int64_t diff_sec = end->ts_.tv_sec - start->ts_.tv_sec;
+ const int64_t diff_nsec = diff_sec * ONE_BILLION +
+ (end->ts_.tv_nsec - start->ts_.tv_nsec);
+
+ return diff_nsec;
+}
+
+/* end of "HAVE_CLOCK_GETTIME" */
+#elif defined (_WIN32)
+
+/** Result of QueryPerformanceFrequency, in terms needed to
+ * convert ticks to nanoseconds. */
+static int64_t nsec_per_tick_numer = 1;
+static int64_t nsec_per_tick_denom = 1;
+
+/** Lock to protect last_pctr and pctr_offset */
+static CRITICAL_SECTION monotime_lock;
+/** Lock to protect rollover_count and last_tick_count */
+static CRITICAL_SECTION monotime_coarse_lock;
+
+typedef ULONGLONG (WINAPI *GetTickCount64_fn_t)(void);
+static GetTickCount64_fn_t GetTickCount64_fn = NULL;
+
+static void
+monotime_init_internal(void)
+{
+ tor_assert(!monotime_initialized);
+ BOOL ok = InitializeCriticalSectionAndSpinCount(&monotime_lock, 200);
+ tor_assert(ok);
+ ok = InitializeCriticalSectionAndSpinCount(&monotime_coarse_lock, 200);
+ tor_assert(ok);
+ LARGE_INTEGER li;
+ ok = QueryPerformanceFrequency(&li);
+ tor_assert(ok);
+ tor_assert(li.QuadPart);
+
+ uint64_t n = ONE_BILLION;
+ uint64_t d = li.QuadPart;
+ /* We need to simplify this or we'll probably overflow the int64. */
+ simplify_fraction64(&n, &d);
+ tor_assert(n <= INT64_MAX);
+ tor_assert(d <= INT64_MAX);
+
+ nsec_per_tick_numer = (int64_t) n;
+ nsec_per_tick_denom = (int64_t) d;
+
+ last_pctr = 0;
+ pctr_offset = 0;
+
+ HANDLE h = load_windows_system_library(TEXT("kernel32.dll"));
+ if (h) {
+ GetTickCount64_fn = (GetTickCount64_fn_t)
+ GetProcAddress(h, "GetTickCount64");
+ }
+ // FreeLibrary(h) ?
+}
+
+void
+monotime_get(monotime_t *out)
+{
+ if (BUG(monotime_initialized == 0)) {
+ monotime_init();
+ }
+
+#ifdef TOR_UNIT_TESTS
+ if (monotime_mocking_enabled) {
+ out->pcount_ = (mock_time_nsec * nsec_per_tick_denom)
+ / nsec_per_tick_numer;
+ return;
+ }
+#endif
+
+ /* Alas, QueryPerformanceCounter is not always monotonic: see bug list at
+
+ https://www.python.org/dev/peps/pep-0418/#windows-queryperformancecounter
+ */
+
+ EnterCriticalSection(&monotime_lock);
+ LARGE_INTEGER res;
+ BOOL ok = QueryPerformanceCounter(&res);
+ tor_assert(ok);
+ const int64_t count_raw = res.QuadPart;
+ out->pcount_ = ratchet_performance_counter(count_raw);
+ LeaveCriticalSection(&monotime_lock);
+}
+
+void
+monotime_coarse_get(monotime_coarse_t *out)
+{
+#ifdef TOR_UNIT_TESTS
+ if (monotime_mocking_enabled) {
+ out->tick_count_ = mock_time_nsec_coarse / ONE_MILLION;
+ return;
+ }
+#endif
+
+ if (GetTickCount64_fn) {
+ out->tick_count_ = (int64_t)GetTickCount64_fn();
+ } else {
+ EnterCriticalSection(&monotime_coarse_lock);
+ DWORD tick = GetTickCount();
+ out->tick_count_ = ratchet_coarse_performance_counter(tick);
+ LeaveCriticalSection(&monotime_coarse_lock);
+ }
+}
+
+int64_t
+monotime_diff_nsec(const monotime_t *start,
+ const monotime_t *end)
+{
+ if (BUG(monotime_initialized == 0)) {
+ monotime_init();
+ }
+ const int64_t diff_ticks = end->pcount_ - start->pcount_;
+ return (diff_ticks * nsec_per_tick_numer) / nsec_per_tick_denom;
+}
+
+int64_t
+monotime_coarse_diff_msec(const monotime_coarse_t *start,
+ const monotime_coarse_t *end)
+{
+ const int64_t diff_ticks = end->tick_count_ - start->tick_count_;
+ return diff_ticks;
+}
+
+int64_t
+monotime_coarse_diff_usec(const monotime_coarse_t *start,
+ const monotime_coarse_t *end)
+{
+ return monotime_coarse_diff_msec(start, end) * 1000;
+}
+
+int64_t
+monotime_coarse_diff_nsec(const monotime_coarse_t *start,
+ const monotime_coarse_t *end)
+{
+ return monotime_coarse_diff_msec(start, end) * ONE_MILLION;
+}
+
+/* end of "_WIN32" */
+#elif defined(MONOTIME_USING_GETTIMEOFDAY)
+
+static tor_mutex_t monotime_lock;
+
+/** Initialize the monotonic timer subsystem. */
+static void
+monotime_init_internal(void)
+{
+ tor_assert(!monotime_initialized);
+ tor_mutex_init(&monotime_lock);
+}
+
+void
+monotime_get(monotime_t *out)
+{
+ if (BUG(monotime_initialized == 0)) {
+ monotime_init();
+ }
+
+ tor_mutex_acquire(&monotime_lock);
+ struct timeval timeval_raw;
+ tor_gettimeofday(&timeval_raw);
+ ratchet_timeval(&timeval_raw, &out->tv_);
+ tor_mutex_release(&monotime_lock);
+}
+
+int64_t
+monotime_diff_nsec(const monotime_t *start,
+ const monotime_t *end)
+{
+ struct timeval diff;
+ timersub(&end->tv_, &start->tv_, &diff);
+ return (diff.tv_sec * ONE_BILLION + diff.tv_usec * 1000);
+}
+
+/* end of "MONOTIME_USING_GETTIMEOFDAY" */
+#else
+#error "No way to implement monotonic timers."
+#endif
+
+/**
+ * Initialize the monotonic timer subsystem. Must be called before any
+ * monotonic timer functions. This function is idempotent.
+ */
+void
+monotime_init(void)
+{
+ if (!monotime_initialized) {
+ monotime_init_internal();
+ monotime_initialized = 1;
+ monotime_get(&initialized_at);
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+ monotime_coarse_get(&initialized_at_coarse);
+#endif
+ }
+}
+
+int64_t
+monotime_diff_usec(const monotime_t *start,
+ const monotime_t *end)
+{
+ const int64_t nsec = monotime_diff_nsec(start, end);
+ return CEIL_DIV(nsec, 1000);
+}
+
+int64_t
+monotime_diff_msec(const monotime_t *start,
+ const monotime_t *end)
+{
+ const int64_t nsec = monotime_diff_nsec(start, end);
+ return CEIL_DIV(nsec, ONE_MILLION);
+}
+
+uint64_t
+monotime_absolute_nsec(void)
+{
+ monotime_t now;
+ if (BUG(monotime_initialized == 0)) {
+ monotime_init();
+ }
+
+ monotime_get(&now);
+ return monotime_diff_nsec(&initialized_at, &now);
+}
+
+uint64_t
+monotime_absolute_usec(void)
+{
+ return monotime_absolute_nsec() / 1000;
+}
+
+uint64_t
+monotime_absolute_msec(void)
+{
+ return monotime_absolute_nsec() / ONE_MILLION;
+}
+
+#ifdef MONOTIME_COARSE_FN_IS_DIFFERENT
+uint64_t
+monotime_coarse_absolute_nsec(void)
+{
+ if (BUG(monotime_initialized == 0)) {
+ monotime_init();
+ }
+
+ monotime_coarse_t now;
+ monotime_coarse_get(&now);
+ return monotime_coarse_diff_nsec(&initialized_at_coarse, &now);
+}
+
+uint64_t
+monotime_coarse_absolute_usec(void)
+{
+ return monotime_coarse_absolute_nsec() / 1000;
+}
+
+uint64_t
+monotime_coarse_absolute_msec(void)
+{
+ return monotime_coarse_absolute_nsec() / ONE_MILLION;
+}
+#endif
diff --git a/src/common/compat_time.h b/src/common/compat_time.h
new file mode 100644
index 0000000000..2262446e57
--- /dev/null
+++ b/src/common/compat_time.h
@@ -0,0 +1,162 @@
+/* Copyright (c) 2003-2004, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2016, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compat_time.h
+ *
+ * \brief Functions and types for monotonic times.
+ *
+ * monotime_* functions try to provide a high-resolution monotonic timer with
+ * something the best resolution the system provides. monotime_coarse_*
+ * functions run faster (if the operating system gives us a way to do that)
+ * but produce a less accurate timer: accuracy will probably be on the order
+ * of tens of milliseconds.
+ */
+
+#ifndef TOR_COMPAT_TIME_H
+#define TOR_COMPAT_TIME_H
+
+#include "orconfig.h"
+#ifdef _WIN32
+#undef HAVE_CLOCK_GETTIME
+#endif
+
+#if defined(HAVE_CLOCK_GETTIME)
+/* to ensure definition of CLOCK_MONOTONIC_COARSE if it's there */
+#include <time.h>
+#endif
+
+#if !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_STRUCT_TIMEVAL_TV_SEC)
+/** Implementation of timeval for platforms that don't have it. */
+struct timeval {
+ time_t tv_sec;
+ unsigned int tv_usec;
+};
+#endif
+
+/** Represents a monotonic timer in a platform-dependent way. */
+typedef struct monotime_t {
+#ifdef __APPLE__
+ /* On apple, there is a 64-bit counter whose precision we must look up. */
+ uint64_t abstime_;
+#elif defined(HAVE_CLOCK_GETTIME)
+ /* It sure would be nice to use clock_gettime(). Posix is a nice thing. */
+ struct timespec ts_;
+#elif defined (_WIN32)
+ /* On Windows, there is a 64-bit counter whose precision we must look up. */
+ int64_t pcount_;
+#else
+#define MONOTIME_USING_GETTIMEOFDAY
+ /* Otherwise, we will be stuck using gettimeofday. */
+ struct timeval tv_;
+#endif
+} monotime_t;
+
+#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC_COARSE)
+#define MONOTIME_COARSE_FN_IS_DIFFERENT
+#define monotime_coarse_t monotime_t
+#elif defined(_WIN32)
+#define MONOTIME_COARSE_FN_IS_DIFFERENT
+#define MONOTIME_COARSE_TYPE_IS_DIFFERENT
+/** Represents a coarse monotonic time in a platform-independent way. */
+typedef struct monotime_coarse_t {
+ uint64_t tick_count_;
+} monotime_coarse_t;
+#else
+#define monotime_coarse_t monotime_t
+#endif
+
+/**
+ * Initialize the timing subsystem. This function is idempotent.
+ */
+void monotime_init(void);
+/**
+ * Set <b>out</b> to the current time.
+ */
+void monotime_get(monotime_t *out);
+/**
+ * Return the number of nanoseconds between <b>start</b> and <b>end</b>.
+ */
+int64_t monotime_diff_nsec(const monotime_t *start, const monotime_t *end);
+/**
+ * Return the number of microseconds between <b>start</b> and <b>end</b>.
+ */
+int64_t monotime_diff_usec(const monotime_t *start, const monotime_t *end);
+/**
+ * Return the number of milliseconds between <b>start</b> and <b>end</b>.
+ */
+int64_t monotime_diff_msec(const monotime_t *start, const monotime_t *end);
+/**
+ * Return the number of nanoseconds since the timer system was initialized.
+ */
+uint64_t monotime_absolute_nsec(void);
+/**
+ * Return the number of microseconds since the timer system was initialized.
+ */
+uint64_t monotime_absolute_usec(void);
+/**
+ * Return the number of milliseconds since the timer system was initialized.
+ */
+uint64_t monotime_absolute_msec(void);
+
+#if defined(MONOTIME_COARSE_FN_IS_DIFFERENT)
+/**
+ * Set <b>out</b> to the current coarse time.
+ */
+void monotime_coarse_get(monotime_coarse_t *out);
+uint64_t monotime_coarse_absolute_nsec(void);
+uint64_t monotime_coarse_absolute_usec(void);
+uint64_t monotime_coarse_absolute_msec(void);
+#else
+#define monotime_coarse_get monotime_get
+#define monotime_coarse_absolute_nsec monotime_absolute_nsec
+#define monotime_coarse_absolute_usec monotime_absolute_usec
+#define monotime_coarse_absolute_msec monotime_absolute_msec
+#endif
+
+#if defined(MONOTIME_COARSE_TYPE_IS_DIFFERENT)
+int64_t monotime_coarse_diff_nsec(const monotime_coarse_t *start,
+ const monotime_coarse_t *end);
+int64_t monotime_coarse_diff_usec(const monotime_coarse_t *start,
+ const monotime_coarse_t *end);
+int64_t monotime_coarse_diff_msec(const monotime_coarse_t *start,
+ const monotime_coarse_t *end);
+#else
+#define monotime_coarse_diff_nsec monotime_diff_nsec
+#define monotime_coarse_diff_usec monotime_diff_usec
+#define monotime_coarse_diff_msec monotime_diff_msec
+#endif
+
+void tor_gettimeofday(struct timeval *timeval);
+
+#ifdef TOR_UNIT_TESTS
+void tor_sleep_msec(int msec);
+
+void monotime_enable_test_mocking(void);
+void monotime_disable_test_mocking(void);
+void monotime_set_mock_time_nsec(int64_t);
+#if defined(MONOTIME_COARSE_FN_IS_DIFFERENT)
+void monotime_coarse_set_mock_time_nsec(int64_t);
+#else
+#define monotime_coarse_set_mock_time_nsec monotime_set_mock_time_nsec
+#endif
+#endif
+
+#ifdef COMPAT_TIME_PRIVATE
+#if defined(_WIN32) || defined(TOR_UNIT_TESTS)
+STATIC int64_t ratchet_performance_counter(int64_t count_raw);
+STATIC int64_t ratchet_coarse_performance_counter(int64_t count_raw);
+#endif
+#if defined(MONOTIME_USING_GETTIMEOFDAY) || defined(TOR_UNIT_TESTS)
+STATIC void ratchet_timeval(const struct timeval *timeval_raw,
+ struct timeval *out);
+#endif
+#ifdef TOR_UNIT_TESTS
+void monotime_reset_ratchets_for_testing(void);
+#endif
+#endif
+
+#endif
+
diff --git a/src/common/include.am b/src/common/include.am
index 222afe0291..40c463c9d9 100644
--- a/src/common/include.am
+++ b/src/common/include.am
@@ -83,6 +83,7 @@ LIBOR_A_SRC = \
src/common/backtrace.c \
src/common/compat.c \
src/common/compat_threads.c \
+ src/common/compat_time.c \
src/common/container.c \
src/common/log.c \
src/common/memarea.c \
@@ -141,6 +142,7 @@ COMMONHEADERS = \
src/common/compat_libevent.h \
src/common/compat_openssl.h \
src/common/compat_threads.h \
+ src/common/compat_time.h \
src/common/container.h \
src/common/crypto.h \
src/common/crypto_curve25519.h \
diff --git a/src/common/procmon.c b/src/common/procmon.c
index 4ecee26e8d..c485c760c7 100644
--- a/src/common/procmon.c
+++ b/src/common/procmon.c
@@ -10,11 +10,7 @@
#include "util.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#ifdef HAVE_SIGNAL_H
#include <signal.h>
@@ -164,18 +160,10 @@ tor_validate_process_specifier(const char *process_spec,
}
/* XXXX we should use periodic_timer_new() for this stuff */
-#ifdef HAVE_EVENT2_EVENT_H
#define PERIODIC_TIMER_FLAGS EV_PERSIST
-#else
-#define PERIODIC_TIMER_FLAGS (0)
-#endif
/* DOCDOC poll_interval_tv */
-static struct timeval poll_interval_tv = {15, 0};
-/* Note: If you port this file to plain Libevent 2, you can make
- * poll_interval_tv const. It has to be non-const here because in
- * libevent 1.x, event_add expects a pointer to a non-const struct
- * timeval. */
+static const struct timeval poll_interval_tv = {15, 0};
/** Create a process-termination monitor for the process specifier
* given in <b>process_spec</b>. Return a newly allocated
@@ -331,10 +319,6 @@ tor_process_monitor_poll_cb(evutil_socket_t unused1, short unused2,
if (its_dead_jim) {
procmon->cb(procmon->cb_arg);
-#ifndef HAVE_EVENT2_EVENT_H
- } else {
- evtimer_add(procmon->e, &poll_interval_tv);
-#endif
}
}
#endif
diff --git a/src/common/sandbox.c b/src/common/sandbox.c
index 838b267ab4..42e40c6a8f 100644
--- a/src/common/sandbox.c
+++ b/src/common/sandbox.c
@@ -210,6 +210,10 @@ static int filter_nopar_gen[] = {
SCMP_SYS(getrandom),
#endif
+#ifdef __NR_sysinfo
+ // qsort uses this..
+ SCMP_SYS(sysinfo),
+#endif
/*
* These socket syscalls are not required on x86_64 and not supported with
* some libseccomp versions (eg: 1.0.1)
@@ -583,7 +587,7 @@ static int
sb_socket(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
{
int rc = 0;
- int i;
+ int i, j;
(void) filter;
#ifdef __i386__
@@ -600,20 +604,19 @@ sb_socket(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
for (i = 0; i < 2; ++i) {
const int pf = i ? PF_INET : PF_INET6;
-
- rc = seccomp_rule_add_3(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket),
- SCMP_CMP(0, SCMP_CMP_EQ, pf),
- SCMP_CMP_MASKED(1, SOCK_CLOEXEC|SOCK_NONBLOCK, SOCK_STREAM),
- SCMP_CMP(2, SCMP_CMP_EQ, IPPROTO_TCP));
- if (rc)
- return rc;
-
- rc = seccomp_rule_add_3(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket),
- SCMP_CMP(0, SCMP_CMP_EQ, pf),
- SCMP_CMP_MASKED(1, SOCK_CLOEXEC|SOCK_NONBLOCK, SOCK_DGRAM),
- SCMP_CMP(2, SCMP_CMP_EQ, IPPROTO_IP));
- if (rc)
- return rc;
+ for (j=0; j < 3; ++j) {
+ const int type = (j == 0) ? SOCK_STREAM :
+ SOCK_DGRAM;
+ const int protocol = (j == 0) ? IPPROTO_TCP :
+ (j == 1) ? IPPROTO_IP :
+ IPPROTO_UDP;
+ rc = seccomp_rule_add_3(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket),
+ SCMP_CMP(0, SCMP_CMP_EQ, pf),
+ SCMP_CMP_MASKED(1, SOCK_CLOEXEC|SOCK_NONBLOCK, type),
+ SCMP_CMP(2, SCMP_CMP_EQ, protocol));
+ if (rc)
+ return rc;
+ }
}
rc = seccomp_rule_add_3(ctx, SCMP_ACT_ALLOW, SCMP_SYS(socket),
@@ -699,6 +702,14 @@ sb_setsockopt(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
if (rc)
return rc;
+#ifdef HAVE_SYSTEMD
+ rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setsockopt),
+ SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET),
+ SCMP_CMP(2, SCMP_CMP_EQ, SO_SNDBUFFORCE));
+ if (rc)
+ return rc;
+#endif
+
#ifdef IP_TRANSPARENT
rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(setsockopt),
SCMP_CMP(1, SCMP_CMP_EQ, SOL_IP),
@@ -732,6 +743,14 @@ sb_getsockopt(scmp_filter_ctx ctx, sandbox_cfg_t *filter)
if (rc)
return rc;
+#ifdef HAVE_SYSTEMD
+ rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt),
+ SCMP_CMP(1, SCMP_CMP_EQ, SOL_SOCKET),
+ SCMP_CMP(2, SCMP_CMP_EQ, SO_SNDBUF));
+ if (rc)
+ return rc;
+#endif
+
#ifdef HAVE_LINUX_NETFILTER_IPV4_H
rc = seccomp_rule_add_2(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt),
SCMP_CMP(1, SCMP_CMP_EQ, SOL_IP),
diff --git a/src/common/timers.c b/src/common/timers.c
index 5d8d1feafd..41b2008ac4 100644
--- a/src/common/timers.c
+++ b/src/common/timers.c
@@ -19,9 +19,6 @@
/* Notes:
*
- * The use of tor_gettimeofday_cached_monotonic() is kind of ugly. It would
- * be neat to fix it.
- *
* Having a way to free all timers on shutdown would free people from the
* need to track them. Not sure if that's clever though.
*
@@ -38,11 +35,7 @@
#include "torlog.h"
#include "util.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
struct timeout_cb {
timer_cb_fn_t cb;
@@ -76,6 +69,8 @@ struct timeout_cb {
static struct timeouts *global_timeouts = NULL;
static struct event *global_timer_event = NULL;
+static monotime_t start_of_time;
+
/** We need to choose this value carefully. Because we're using timer wheels,
* it actually costs us to have extra resolution we don't use. So for now,
* I'm going to define our resolution as .1 msec, and hope that's good enough.
@@ -99,9 +94,8 @@ static struct event *global_timer_event = NULL;
/**
* Convert the timeval in <b>tv</b> to a timeout_t, and return it.
*
- * The output resolution is set by USEC_PER_TICK, and the time corresponding
- * to 0 is the same as the time corresponding to 0 from
- * tor_gettimeofday_cached_monotonic().
+ * The output resolution is set by USEC_PER_TICK. Only use this to convert
+ * delays to number of ticks; the time represented by 0 is undefined.
*/
static timeout_t
tv_to_timeout(const struct timeval *tv)
@@ -112,7 +106,8 @@ tv_to_timeout(const struct timeval *tv)
}
/**
- * Convert the timeout in <b>t</b> to a timeval in <b>tv_out</b>
+ * Convert the timeout in <b>t</b> to a timeval in <b>tv_out</b>. Only
+ * use this for delays, not absolute times.
*/
static void
timeout_to_tv(timeout_t t, struct timeval *tv_out)
@@ -126,12 +121,10 @@ timeout_to_tv(timeout_t t, struct timeval *tv_out)
* Update the timer <b>tv</b> to the current time in <b>tv</b>.
*/
static void
-timer_advance_to_cur_time(const struct timeval *tv)
+timer_advance_to_cur_time(const monotime_t *now)
{
- timeout_t cur_tick = tv_to_timeout(tv);
- if (BUG(cur_tick < timeouts_get_curtime(global_timeouts))) {
- cur_tick = timeouts_get_curtime(global_timeouts); // LCOV_EXCL_LINE
- }
+ timeout_t cur_tick = CEIL_DIV(monotime_diff_usec(&start_of_time, now),
+ USEC_PER_TICK);
timeouts_update(global_timeouts, cur_tick);
}
@@ -142,11 +135,12 @@ timer_advance_to_cur_time(const struct timeval *tv)
static void
libevent_timer_reschedule(void)
{
- struct timeval now;
- tor_gettimeofday_cached_monotonic(&now);
+ monotime_t now;
+ monotime_get(&now);
timer_advance_to_cur_time(&now);
timeout_t delay = timeouts_timeout(global_timeouts);
+
struct timeval d;
if (delay > MIN_CHECK_TICKS)
delay = MIN_CHECK_TICKS;
@@ -165,9 +159,8 @@ libevent_timer_callback(evutil_socket_t fd, short what, void *arg)
(void)what;
(void)arg;
- struct timeval now;
- tor_gettimeofday_cache_clear();
- tor_gettimeofday_cached_monotonic(&now);
+ monotime_t now;
+ monotime_get(&now);
timer_advance_to_cur_time(&now);
tor_timer_t *t;
@@ -175,7 +168,6 @@ libevent_timer_callback(evutil_socket_t fd, short what, void *arg)
t->callback.cb(t, t->callback.arg, &now);
}
- tor_gettimeofday_cache_clear();
libevent_timer_reschedule();
}
@@ -198,6 +190,9 @@ timers_initialize(void)
// LCOV_EXCL_STOP
}
+ monotime_init();
+ monotime_get(&start_of_time);
+
struct event *timer_event;
timer_event = tor_event_new(tor_libevent_get_base(),
-1, 0, libevent_timer_callback, NULL);
@@ -260,24 +255,25 @@ timer_set_cb(tor_timer_t *t, timer_cb_fn_t cb, void *arg)
}
/**
- * Schedule the timer t to fire at the current time plus a delay of <b>tv</b>.
- * All times are relative to tor_gettimeofday_cached_monotonic.
+ * Schedule the timer t to fire at the current time plus a delay of
+ * <b>delay</b> microseconds. All times are relative to monotime_get().
*/
void
timer_schedule(tor_timer_t *t, const struct timeval *tv)
{
- const timeout_t when = tv_to_timeout(tv);
- struct timeval now;
- tor_gettimeofday_cached_monotonic(&now);
+ const timeout_t delay = tv_to_timeout(tv);
+
+ monotime_t now;
+ monotime_get(&now);
timer_advance_to_cur_time(&now);
/* Take the old timeout value. */
timeout_t to = timeouts_timeout(global_timeouts);
- timeouts_add(global_timeouts, t, when);
+ timeouts_add(global_timeouts, t, delay);
/* Should we update the libevent timer? */
- if (to <= when) {
+ if (to <= delay) {
return; /* we're already going to fire before this timer would trigger. */
}
libevent_timer_reschedule();
diff --git a/src/common/timers.h b/src/common/timers.h
index 594cf38a64..2c36af172d 100644
--- a/src/common/timers.h
+++ b/src/common/timers.h
@@ -7,8 +7,9 @@
#include "orconfig.h"
#include "testsupport.h"
+struct monotime_t;
typedef struct timeout tor_timer_t;
-typedef void (*timer_cb_fn_t)(tor_timer_t *, void *, const struct timeval *);
+typedef void (*timer_cb_fn_t)(tor_timer_t *, void *, const struct monotime_t *);
tor_timer_t *timer_new(timer_cb_fn_t cb, void *arg);
void timer_set_cb(tor_timer_t *t, timer_cb_fn_t cb, void *arg);
void timer_schedule(tor_timer_t *t, const struct timeval *delay);
diff --git a/src/common/util.c b/src/common/util.c
index 3eb4005ab4..2369c5f62a 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -580,6 +580,29 @@ add_laplace_noise(int64_t signal, double random, double delta_f,
return signal + noise;
}
+/* Helper: return greatest common divisor of a,b */
+static uint64_t
+gcd64(uint64_t a, uint64_t b)
+{
+ while (b) {
+ uint64_t t = b;
+ b = a % b;
+ a = t;
+ }
+ return a;
+}
+
+/* Given a fraction *<b>numer</b> / *<b>denom</b>, simplify it.
+ * Requires that the denominator is greater than 0. */
+void
+simplify_fraction64(uint64_t *numer, uint64_t *denom)
+{
+ tor_assert(denom);
+ uint64_t gcd = gcd64(*numer, *denom);
+ *numer /= gcd;
+ *denom /= gcd;
+}
+
/** Return the number of bits set in <b>v</b>. */
int
n_bits_set_u8(uint8_t v)
@@ -1983,7 +2006,9 @@ update_approx_time(time_t now)
/** If the rate-limiter <b>lim</b> is ready at <b>now</b>, return the number
* of calls to rate_limit_is_ready (including this one!) since the last time
- * rate_limit_is_ready returned nonzero. Otherwise return 0. */
+ * rate_limit_is_ready returned nonzero. Otherwise return 0.
+ * If the call number hits <b>RATELIM_TOOMANY</b> limit, drop a warning
+ * about this event and stop counting. */
static int
rate_limit_is_ready(ratelim_t *lim, time_t now)
{
@@ -1993,7 +2018,10 @@ rate_limit_is_ready(ratelim_t *lim, time_t now)
lim->n_calls_since_last_time = 0;
return res;
} else {
- ++lim->n_calls_since_last_time;
+ if (lim->n_calls_since_last_time <= RATELIM_TOOMANY) {
+ ++lim->n_calls_since_last_time;
+ }
+
return 0;
}
}
@@ -2010,11 +2038,12 @@ rate_limit_log(ratelim_t *lim, time_t now)
return tor_strdup("");
} else {
char *cp=NULL;
+ const char *opt_over = (n >= RATELIM_TOOMANY) ? "over " : "";
/* XXXX this is not exactly correct: the messages could have occurred
* any time between the old value of lim->allowed and now. */
tor_asprintf(&cp,
- " [%d similar message(s) suppressed in last %d seconds]",
- n-1, lim->rate);
+ " [%s%d similar message(s) suppressed in last %d seconds]",
+ opt_over, n-1, lim->rate);
return cp;
}
} else {
diff --git a/src/common/util.h b/src/common/util.h
index 0d48eac1ad..9face0c322 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -152,6 +152,8 @@ int64_t add_laplace_noise(int64_t signal, double random, double delta_f,
double epsilon);
int n_bits_set_u8(uint8_t v);
int64_t clamp_double_to_int64(double number);
+void simplify_fraction64(uint64_t *numer, uint64_t *denom);
+
/* Compute the CEIL of <b>a</b> divided by <b>b</b>, for nonnegative <b>a</b>
* and positive <b>b</b>. Works on integer types only. Not defined if a+b can
@@ -292,6 +294,7 @@ typedef struct ratelim_t {
} ratelim_t;
#define RATELIM_INIT(r) { (r), 0, 0 }
+#define RATELIM_TOOMANY (16*1000*1000)
char *rate_limit_log(ratelim_t *lim, time_t now);
diff --git a/src/config/geoip b/src/config/geoip
index 834ebf556f..d75402f363 100644
--- a/src/config/geoip
+++ b/src/config/geoip
@@ -1,4 +1,4 @@
-# Last updated based on June 7 2016 Maxmind GeoLite2 Country
+# Last updated based on July 6 2016 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -346,8 +346,8 @@
86442688,86442691,ES
86442692,86442699,FR
86442700,86442700,ES
-86442701,86442702,CH
-86442703,86442703,ES
+86442701,86442701,CH
+86442702,86442703,ES
86442704,86442723,FR
86442724,86442724,PL
86442725,86442739,FR
@@ -657,8 +657,7 @@
87570432,87572479,ES
87572480,87588863,MD
87588864,87590143,IR
-87590144,87590399,US
-87590400,87590911,GB
+87590144,87590911,GB
87590912,87592959,RU
87592960,87597055,DK
87597056,87599103,ES
@@ -734,13 +733,13 @@
87982080,87988479,RU
87988480,87988735,US
87988736,87988863,LV
-87988864,87988991,LT
-87988992,87989247,RU
+87988864,87989247,RU
87989248,87989503,US
87989504,87989759,FR
87989760,87990015,US
87990016,87990271,DE
-87990272,88014847,RU
+87990272,87998463,RU
+87998464,88014847,IR
88014848,88016895,LY
88016896,88018943,IR
88018944,88020991,GB
@@ -1113,7 +1112,9 @@
92764288,92778487,FR
92778488,92778488,ES
92778489,92782335,FR
-92782336,92782591,RU
+92782336,92782528,RU
+92782529,92782529,FR
+92782530,92782591,RU
92782592,92782687,FR
92782688,92782719,ES
92782720,92783291,FR
@@ -1257,7 +1258,9 @@
94035968,94044159,RO
94044160,94109695,SY
94109696,94175231,SA
-94175232,94179071,SE
+94175232,94177791,SE
+94177792,94178047,DK
+94178048,94179071,SE
94179072,94179327,NL
94179328,94179583,SE
94179584,94179839,NL
@@ -1275,7 +1278,8 @@
94186496,94187263,DE
94187264,94187519,AT
94187520,94187775,SE
-94187776,94188287,AT
+94187776,94188031,NO
+94188032,94188287,AT
94188288,94189311,SE
94189312,94189567,LI
94189568,94191615,SE
@@ -1800,8 +1804,8 @@
99030144,99030271,US
99030272,99030399,DE
99030400,99030527,US
-99030528,99030783,DE
-99030784,99030895,US
+99030528,99030815,DE
+99030816,99030895,US
99030896,99030911,DE
99030912,99031039,US
99031040,99031295,DE
@@ -2004,9 +2008,7 @@
222691328,222707711,HK
222707712,222740479,AU
222740480,222756863,IE
-222756864,222760959,IN
-222760960,222765055,US
-222765056,222789631,IN
+222756864,222789631,IN
222789632,222797823,JP
222797824,222806015,CA
222806016,222871551,US
@@ -2054,7 +2056,7 @@
225060864,225061375,JP
225061376,225061887,CA
225061888,225062399,HK
-225062400,225062911,US
+225062400,225062911,IN
225062912,225063423,CA
225063424,225065471,US
225065472,225066495,AU
@@ -2067,7 +2069,10 @@
225070592,225070599,PR
225070600,225070623,US
225070624,225070655,PR
-225070656,234881023,US
+225070656,225073151,US
+225073152,225073663,IE
+225073664,225074687,KR
+225074688,234881023,US
234881024,234883071,CN
234883072,234884095,JP
234884096,234885119,CN
@@ -2151,7 +2156,7 @@
247469056,247470079,HK
247470080,247472127,IN
247472128,247476223,JP
-247479296,247480319,CN
+247478272,247480319,CN
247480320,247482367,MY
247482368,247483391,PG
247483392,247484415,CN
@@ -2233,7 +2238,9 @@
288212992,288215039,CA
288215040,288223231,US
288223232,288227327,CA
-288227328,289624063,US
+288227328,289406975,US
+289406976,289554431,IE
+289554432,289624063,US
289624064,289628159,CH
289628160,289630207,US
289630208,289632255,SE
@@ -2300,7 +2307,8 @@
289960960,289961471,BE
289961472,289963007,US
289963008,289964031,FR
-289964032,290201599,US
+289964032,289980415,IE
+289980416,290201599,US
290201600,290209791,IN
290209792,290265087,US
290265088,290267135,RU
@@ -2327,9 +2335,9 @@
290377728,290379775,GB
290379776,290423807,US
290423808,290424831,SE
-290424832,290618623,US
-290618624,290618879,SG
-290618880,300646399,US
+290424832,290586623,US
+290586624,290652159,SG
+290652160,300646399,US
300646400,300650495,JP
300650496,300654591,SG
300654592,300658687,US
@@ -2338,7 +2346,9 @@
300666880,300670975,NL
300670976,300675071,IE
300675072,300679167,IL
-300679168,301989119,US
+300679168,301989023,US
+301989024,301989031,MO
+301989032,301989119,US
301989120,301989375,AU
301989376,344260607,US
344260608,344260863,GB
@@ -3012,9 +3022,11 @@
394270720,394271231,NL
394296320,394296831,NL
394330112,394330367,US
-394395648,395051007,US
+394395648,394789119,US
+394854400,394854655,CA
+394919936,395051007,US
395051008,395313151,CA
-395313152,395575551,US
+395313152,395575807,US
395706368,395706623,CA
395837440,395837695,US
395968512,395968767,CA
@@ -3285,7 +3297,8 @@
402124288,402124543,TR
402124544,402128895,US
402128896,402169855,CA
-402169856,402223103,US
+402169856,402198527,US
+402202624,402223103,US
402223104,402227199,CA
402227200,402227455,PR
402227456,402227711,US
@@ -3297,13 +3310,15 @@
402239474,402239474,CA
402239475,402243583,US
402243584,402247679,CA
-402247680,402260863,US
+402247680,402260271,US
+402260272,402260279,GB
+402260280,402260863,US
402260864,402260879,SE
402260880,402264111,US
-402264112,402264127,AU
+402264112,402264127,AT
402264128,402279935,US
-402279936,402280191,CA
-402280192,402287263,US
+402279936,402280063,CA
+402280064,402287263,US
402287264,402287279,IE
402287280,402366463,US
402366464,402374655,CA
@@ -3546,8 +3561,8 @@
453037056,453040127,CN
453040128,453044223,IN
453044224,453044479,HK
-453044480,453044735,AT
-453044736,453044991,HK
+453044480,453044735,NZ
+453044736,453044991,JP
453044992,453045247,IN
453045248,453046271,KR
453046272,453047295,VN
@@ -3561,7 +3576,9 @@
455245824,455258111,JP
455258112,455258623,SG
455258624,455258688,KH
-455258689,455262207,SG
+455258689,455260927,SG
+455260928,455260960,KH
+455260961,455262207,SG
455262208,455270399,JP
455270400,455272447,AU
455272448,455274495,CN
@@ -4350,7 +4367,8 @@
529848576,529848831,CZ
529848832,529849087,UA
529849088,529849599,NL
-529849600,529850111,CZ
+529849600,529849855,UA
+529849856,529850111,CZ
529850112,529850367,RU
529850368,529855487,ES
529855488,529856511,RU
@@ -4490,8 +4508,8 @@
531695616,531697663,LT
531697664,531699711,GB
531699712,531701759,CZ
-531701760,531703551,NL
-531703552,531703807,IQ
+531701760,531703552,NL
+531703553,531703807,IQ
531703808,531705855,IT
531705856,531707903,ES
531707904,531709951,GR
@@ -4555,14 +4573,17 @@
532348672,532348927,NL
532348928,532365311,IE
532365312,532365567,NL
-532365568,532365823,US
+532365568,532365631,AE
+532365632,532365695,PK
+532365696,532365759,SA
+532365760,532365823,TW
532365824,532366079,DE
532366080,532366207,NL
532366208,532366239,AR
532366240,532366271,PA
-532366272,532366893,DE
-532366894,532366894,GB
-532366895,532367359,DE
+532366272,532366847,DE
+532366848,532367103,GB
+532367104,532367359,DE
532367360,532368383,US
532368384,532368639,NL
532368640,532372479,DE
@@ -4658,7 +4679,9 @@
533512192,533528575,ME
533528576,533594111,GB
533594112,533659647,TR
-533659648,533676031,CZ
+533659648,533673983,CZ
+533673984,533675007,US
+533675008,533676031,CZ
533676032,533680127,RU
533680128,533682175,TR
533682176,533684223,ES
@@ -4718,7 +4741,8 @@
534153984,534154239,ES
534154240,534158591,DE
534158592,534158847,NL
-534158848,534163455,DE
+534158848,534162431,DE
+534162432,534163455,IR
534163456,534167551,ES
534167552,534181887,DE
534181888,534183935,IR
@@ -4741,7 +4765,10 @@
534308864,534310911,IE
534310912,534315007,IT
534315008,534347775,HR
-534347776,534355967,GB
+534347776,534348031,US
+534348032,534348287,GB
+534348288,534348543,US
+534348544,534355967,GB
534355968,534364159,GR
534364160,534366207,FI
534366208,534368255,IT
@@ -4767,7 +4794,10 @@
534516736,534516991,GB
534516992,534517759,US
534517760,534518783,NL
-534518784,534519039,US
+534518784,534518847,ES
+534518848,534518911,FI
+534518912,534518975,FR
+534518976,534519039,AU
534519040,534519167,NL
534519168,534519199,KP
534519200,534519231,VA
@@ -4977,7 +5007,7 @@
620741632,620743679,IN
620743680,620744703,HK
620744704,620745727,IN
-620745728,620746751,PK
+620745728,620746751,US
620746752,620747775,JP
620747776,620748799,PH
620748800,620751871,IN
@@ -5068,7 +5098,8 @@
621432832,621436927,IT
621436928,621442047,DE
621442048,621442303,ES
-621442304,621445119,DE
+621442304,621442559,IR
+621442560,621445119,DE
621445120,621805567,ES
621805568,621813759,NL
621813760,621821951,SA
@@ -5150,8 +5181,8 @@
622510080,622512127,PL
622512128,622514175,DE
622514176,622518271,NO
-622518272,622518527,GB
-622518528,622519281,NL
+622518272,622518783,GB
+622518784,622519281,NL
622519282,622519282,GB
622519283,622519295,NL
622519296,622519551,FR
@@ -6028,7 +6059,9 @@
634093568,634109951,GB
634109952,634111999,IE
634112000,634114047,RU
-634114048,634116095,SE
+634114048,634114815,SE
+634114816,634115071,FI
+634115072,634116095,SE
634116096,634118143,NL
634118144,634122239,IT
634122240,634124287,RU
@@ -6328,7 +6361,9 @@
642093312,642093567,CA
642093568,642094079,US
642094080,642094591,CA
-642094592,642113535,US
+642094592,642096127,US
+642096128,642096639,CA
+642096640,642113535,US
642113536,642115583,AU
642115584,642388735,US
642388736,642388991,CA
@@ -6583,7 +6618,9 @@
646711808,646712319,CA
646712320,646734847,US
646734848,646735359,CA
-646735360,653437439,US
+646735360,646765839,US
+646765840,646765847,CA
+646765848,653437439,US
653437440,653437695,CA
653437696,654311423,US
654311424,654311679,CN
@@ -6613,9 +6650,19 @@
675938304,675954687,NL
675954688,675975167,JP
675975168,675979263,IE
-675979264,676177756,US
+675979264,676168959,US
+676168960,676169215,IE
+676169216,676175903,US
+676175904,676176191,HK
+676176192,676176255,US
+676176256,676176383,HK
+676176384,676176639,IE
+676176640,676177756,US
676177757,676177757,RE
-676177758,676249599,US
+676177758,676192767,US
+676192768,676192895,HK
+676192896,676193023,IE
+676193024,676249599,US
676249600,676265983,AU
676265984,676298751,US
676298752,676331519,IE
@@ -6640,17 +6687,20 @@
676840448,676841471,SG
676841472,676843519,JP
676843520,676845567,AU
-676845568,676847615,IN
-676847616,677380127,US
+676845568,676848639,IN
+676848640,677380095,US
+677380096,677380127,AU
677380128,677380159,IE
677380160,677380191,NL
677380192,677380543,US
677380544,677380719,SG
677380720,677380895,KR
-677380896,677380927,DE
+677380896,677380927,AU
677380928,677380943,IN
-677380944,677380975,DE
-677380976,677381071,US
+677380944,677380959,FI
+677380960,677380991,AU
+677380992,677381055,US
+677381056,677381071,FI
677381072,677381247,HK
677381248,677381375,US
677381376,677381407,AT
@@ -6659,11 +6709,15 @@
677381600,677381631,NL
677381632,677381711,US
677381712,677381759,IE
-677381760,677382015,US
+677381760,677381943,US
+677381944,677381951,FI
+677381952,677382015,US
677382016,677382031,NL
677382032,677382047,US
677382048,677382063,KR
-677382064,677382495,US
+677382064,677382479,US
+677382480,677382487,FI
+677382488,677382495,US
677382496,677382527,NL
677382528,677382543,CA
677382544,677382559,IE
@@ -6673,10 +6727,10 @@
677382624,677382639,CA
677382640,677382719,US
677382720,677382727,IE
-677382728,677382751,US
+677382728,677382751,FI
677382752,677382815,CA
677382816,677382831,NL
-677382832,677382839,US
+677382832,677382839,FI
677382840,677383191,BR
677383192,677383391,US
677383392,677383567,NL
@@ -6716,7 +6770,8 @@
677385920,677385935,CA
677385936,677385967,US
677385968,677385983,SG
-677385984,677386015,US
+677385984,677385999,FI
+677386000,677386015,US
677386016,677386047,IN
677386048,677386063,CA
677386064,677386095,US
@@ -6725,12 +6780,15 @@
677386128,677386159,US
677386160,677386175,BR
677386176,677386207,CA
-677386208,677386239,US
+677386208,677386239,AU
677386240,677386359,BR
677386360,677386367,MY
-677386368,677386399,US
+677386368,677386375,AU
+677386376,677386399,US
677386400,677386415,CL
-677386416,677386439,US
+677386416,677386423,FI
+677386424,677386431,AU
+677386432,677386439,FI
677386440,677386495,CL
677386496,677386527,IE
677386528,677386543,AT
@@ -6741,10 +6799,7 @@
677386624,677386639,JP
677386640,677386655,US
677386656,677386671,AU
-677386672,677386687,DE
-677386688,677386703,US
-677386704,677386719,DE
-677386720,677386735,US
+677386672,677386735,US
677386736,677386751,HK
677386752,677386767,US
677386768,677386799,CA
@@ -6766,7 +6821,7 @@
677388704,677388879,FI
677388880,677389055,NL
677389056,677389231,AT
-677389232,677389263,DE
+677389232,677389263,US
677389264,677389439,CA
677389440,677389615,US
677389616,677389791,IE
@@ -6782,20 +6837,33 @@
677391576,677391959,GB
677391960,677392135,US
677392136,677392143,KR
-677392144,677392159,DE
+677392144,677392159,US
677392160,677392327,KR
677392328,677392503,MY
677392504,677392679,HK
677392680,677392855,SG
677392856,677393031,NL
-677393032,677393559,US
+677393032,677393207,US
+677393208,677393215,FI
+677393216,677393375,US
+677393376,677393383,FI
+677393384,677393391,US
+677393392,677393407,FI
+677393408,677393535,US
+677393536,677393559,FI
677393560,677393575,NL
-677393576,677393743,US
+677393576,677393735,US
+677393736,677393743,FI
677393744,677393759,NL
-677393760,677393863,US
+677393760,677393855,US
+677393856,677393863,FI
677393864,677393927,BR
677393928,677394279,JP
-677394280,677394455,US
+677394280,677394287,FI
+677394288,677394303,AU
+677394304,677394431,US
+677394432,677394447,AU
+677394448,677394455,FI
677394456,677394527,JP
677394528,677394559,CL
677394560,677394591,US
@@ -6813,23 +6881,23 @@
677395872,677395903,IE
677395904,677396071,FI
677396072,677396079,NL
-677396080,677396095,US
+677396080,677396095,IN
677396096,677396247,NL
677396248,677396599,IE
677396600,677396623,FI
677396624,677396639,IE
677396640,677396791,FI
-677396792,677511167,US
-677511168,677576703,NL
-677576704,677642239,US
-677642240,677646335,HK
-677646336,677647359,MY
-677647360,677648383,KR
-677648384,677651455,SG
-677651456,677652479,JP
-677652480,677679103,US
-677679104,677679247,AU
-677679248,677680639,US
+677396792,677396823,US
+677396824,677396831,FI
+677396832,677642239,US
+677642240,677644287,HK
+677644288,677646335,US
+677646336,677646511,MY
+677646512,677649407,US
+677649408,677649583,SG
+677649584,677679103,US
+677679104,677679263,AU
+677679264,677680639,US
677680640,677680767,AU
677680768,677681151,US
677681152,677681295,JP
@@ -6840,25 +6908,40 @@
677682432,677683199,US
677683200,677683311,CA
677683312,677685247,US
-677685248,677686271,GB
-677686272,677707775,US
-677707776,677708799,NL
+677685248,677685663,GB
+677685664,677685759,US
+677685760,677686175,GB
+677686176,677707775,US
+677707776,677708287,NL
+677708288,677708799,US
677708800,677709823,AT
-677709824,677713919,NL
-677713920,677714943,IE
+677709824,677710591,NL
+677710592,677710783,US
+677710784,677710815,NL
+677710816,677711871,US
+677711872,677712759,NL
+677712760,677714943,US
677714944,677715967,FI
-677715968,677719039,IE
-677719040,677721087,DE
-677721088,677722111,GB
-677722112,677723135,NL
-677723136,677773311,US
-677773312,677776383,BR
-677776384,677781503,NL
-677781504,677783551,CL
-677783552,677784575,ZA
-677784576,677785599,US
-677785600,677806079,NL
-677806080,677838847,US
+677715968,677716991,US
+677716992,677717343,IE
+677717344,677718015,US
+677718016,677718639,IE
+677718640,677718655,US
+677718656,677718815,IE
+677718816,677718943,US
+677718944,677720063,IE
+677720064,677720119,FI
+677720120,677720303,US
+677720304,677720335,FI
+677720336,677721175,US
+677721176,677721183,AT
+677721184,677721215,US
+677721216,677721391,AT
+677721392,677774335,US
+677774336,677776383,BR
+677776384,677781503,US
+677781504,677781615,CL
+677781616,677838847,US
677838848,677838863,NL
677838864,677838879,IE
677838880,677838895,FI
@@ -6953,7 +7036,9 @@
677844752,677844767,IE
677844768,677844783,FI
677844784,677844799,AT
-677844800,678428671,US
+677844800,678150143,US
+678150144,678150271,FI
+678150272,678428671,US
678428672,678436863,IE
678436864,678437887,US
678437888,678438015,IE
@@ -6962,8 +7047,7 @@
678438272,678438399,AU
678438400,678438591,US
678438592,678438655,NL
-678438656,678438783,US
-678438784,678438847,IN
+678438656,678438847,IN
678438848,678445055,US
678445056,678453247,IE
678453248,678461439,NL
@@ -7142,13 +7226,15 @@
692932608,692934655,CM
692934656,692936703,BW
692936704,692940799,ZA
-692940800,692942847,MA
+692940800,692941055,MA
+692941056,692941567,CA
+692941568,692942847,MA
692942848,692944895,GA
692944896,692946943,MZ
692946944,692948991,EG
692948992,692951039,ZM
692951040,692953087,ZA
-692953088,692954111,RW
+692953088,692955135,RW
692955136,692957183,NG
692957184,692959231,DZ
692959232,692961279,GN
@@ -7503,11 +7589,18 @@
701423616,701431807,NG
701431808,701439999,CI
701440000,701448191,MG
-701448192,701462783,KE
+701448192,701457919,KE
+701457920,701458175,CG
+701458176,701458831,KE
+701458832,701458847,CG
+701458848,701462783,KE
701462784,701463039,CG
701463040,701463807,KE
701463808,701464063,CG
-701464064,701464575,KE
+701464064,701464319,KE
+701464320,701464351,CG
+701464352,701464367,KE
+701464368,701464575,CG
701464576,701472767,MU
701472768,701480959,TG
701480960,701489151,CI
@@ -7584,6 +7677,8 @@
702144512,702146559,EG
702146560,702148607,UG
702148608,702150655,ZA
+702150656,702150911,ZM
+702151680,702151807,ZM
702152704,702169087,SD
702169088,702173183,NA
702173184,702175231,ZM
@@ -7665,6 +7760,7 @@
702476288,702477311,ZM
702477312,702478335,RW
702478336,702480383,AO
+702480896,702481407,AO
702481408,702482431,TZ
702482432,702483455,ZA
702483456,702484479,BI
@@ -7792,8 +7888,7 @@
710961152,710962175,TH
710962176,711065599,CN
711065600,711131135,HK
-711131136,711160831,CN
-711161856,711163903,CN
+711131136,711163903,CN
711163904,711164727,JP
711164728,711164735,HK
711164736,711166463,JP
@@ -7947,7 +8042,8 @@
736290048,736290303,AU
736290304,736290815,US
736290816,736291839,TW
-736291840,736301055,CN
+736291840,736300031,CN
+736300032,736301055,HK
736301056,736303103,IN
736303104,736304127,TW
736304128,736324607,CN
@@ -8007,7 +8103,7 @@
736421888,736422911,SG
736422912,736423935,IN
736423936,736424959,CN
-736425984,736428031,MY
+736424960,736428031,MY
736428032,736429055,IN
736429056,736430079,HK
736430080,736431103,IN
@@ -8034,7 +8130,6 @@
736455680,736456703,CN
736456704,736458751,HK
736458752,736459775,CN
-736459776,736460799,JP
736460800,736461823,SG
736461824,736462847,TH
736462848,736465919,CN
@@ -8057,10 +8152,14 @@
736494592,736495103,ID
736495104,736495359,NR
736495360,736495615,ID
-736495616,736498687,HK
+736495616,736495871,HK
+736495872,736496127,KR
+736496128,736496383,JP
+736496384,736496639,PH
+736496640,736498687,HK
736498688,736499711,CN
-736499712,736500479,SG
-736500480,736500735,TH
+736499712,736500223,SG
+736500224,736500735,TH
736501760,736502783,CN
736502784,736505855,IN
736505856,736506879,AU
@@ -8200,7 +8299,7 @@
737179648,737180671,AU
737180672,737184767,CN
737184768,737185791,VU
-737185792,737186815,AU
+737185792,737186815,HK
737186816,737187839,ID
737187840,737188863,TW
737188864,737206271,CN
@@ -8300,7 +8399,8 @@
737385472,737386495,CN
737386496,737387519,MN
737387520,737388543,HK
-737388544,737389567,CN
+737388544,737389055,CN
+737389056,737389567,HK
737389568,737390591,IN
737390592,737391615,HK
737391616,737392639,CN
@@ -8331,14 +8431,12 @@
737485824,737487871,AU
737487872,737488895,MM
737488896,737489151,AU
-737489152,737489407,SG
-737489408,737489919,HK
+737489152,737489919,HK
737489920,737490943,NZ
737490944,737491967,FJ
737491968,737492447,SG
737492448,737492479,MY
-737492480,737492735,SG
-737492736,737492991,HK
+737492480,737492991,SG
737492992,737497087,AU
737497088,737498111,NZ
737498112,737499135,NP
@@ -8359,7 +8457,8 @@
737514496,737515519,IN
737515520,737516543,AU
737516544,737517567,IN
-737517568,737519871,AU
+737517568,737519615,AU
+737519616,737519871,HK
737519872,737520127,SG
737520128,737520639,AU
737520640,737521663,NZ
@@ -8532,6 +8631,7 @@
737818624,737821695,HK
737821696,737822719,AU
737822720,737823743,CN
+737823744,737824767,ID
737824768,737825791,BD
737825792,737826815,PK
737826816,737827839,JP
@@ -8721,10 +8821,9 @@
738147328,738148095,CN
738148096,738148351,AU
738148352,738152447,CN
-738152448,738152703,JP
+738152448,738152703,HK
738152704,738152959,MY
-738152960,738153215,JP
-738153216,738153471,AU
+738152960,738153471,HK
738153472,738154495,CN
738154496,738156543,TW
738156544,738157567,CN
@@ -8767,18 +8866,26 @@
755179520,755187711,CN
755187712,755236863,US
756023296,757071871,US
-757071872,757072063,NL
-757072064,757072095,US
-757072096,757072127,NL
+757071872,757071951,NL
+757071952,757071975,US
+757071976,757071991,NL
+757071992,757071999,US
+757072000,757072063,NL
+757072064,757072103,US
+757072104,757072127,NL
757072128,757072383,US
757072384,757072639,NL
757072640,757072703,US
757072704,757072719,NL
757072720,757072727,US
-757072728,757073407,NL
+757072728,757073007,NL
+757073008,757073023,US
+757073024,757073047,NL
+757073048,757073055,US
+757073056,757073407,NL
757073408,757073919,US
-757073920,757079551,JP
-757079552,757080063,NL
+757073920,757079615,JP
+757079616,757080063,NL
757080064,757088255,JP
757088256,757096447,US
757096448,757104639,SG
@@ -9281,6 +9388,7 @@
762442752,762443775,AU
762443776,762444799,IN
762444800,762446847,CN
+762446848,762447871,SG
762447872,762448895,HK
762448896,762449919,CN
762449920,762450943,JP
@@ -9304,7 +9412,8 @@
762475776,762476031,SG
762476032,762476287,ID
762476288,762476543,SG
-762476544,762478591,PK
+762476544,762477567,PK
+762478592,762479615,KR
762479616,762480639,PK
762480640,762481663,CN
762481664,762486783,IN
@@ -9316,7 +9425,6 @@
762493952,762494975,AU
762494976,762495999,IN
762496000,762498047,CN
-762498048,762499071,HK
762499072,762500095,JP
762500096,762502143,IN
762502144,762503167,AU
@@ -9334,9 +9442,9 @@
762517760,762518015,KR
762518016,762518079,VN
762518080,762518111,ID
-762518112,762519551,HK
+762518112,762518527,HK
762519552,762520575,JP
-762520576,762522623,HK
+762520576,762521599,HK
762522624,762523647,CN
762523648,762523903,AU
762523904,762524159,PK
@@ -9388,7 +9496,6 @@
762585088,762587135,CN
762587136,762588159,HK
762588160,762589183,IN
-762589184,762590207,JP
762590208,762591231,CN
762591232,762592255,IN
762592256,762594303,CN
@@ -9488,7 +9595,7 @@
762770432,762771455,BD
762771456,762775551,HK
762775552,762783743,IN
-762783744,762784767,KR
+762783744,762784767,CH
762784768,762786815,IN
762786816,762787839,CN
762787840,762788863,IN
@@ -9747,7 +9854,7 @@
763246592,763247615,ID
763247616,763248639,SG
763248640,763250687,IN
-763250688,763251711,AU
+763250688,763251711,US
763251712,763252735,HK
763252736,763253759,ID
763253760,763254783,JP
@@ -9829,6 +9936,12 @@
768606208,768868351,GH
768868352,769130495,ZM
769130496,769392639,MA
+769523712,769531903,ZA
+769536000,769540095,GH
+769540096,769548287,ZA
+769548288,769550335,NG
+769552384,769556479,ZA
+769556480,769589247,GH
769589248,769654783,US
770703360,771227647,EG
771227648,771229695,IN
@@ -9860,7 +9973,8 @@
771308544,771309567,HK
771309568,771310591,KR
771310592,771315711,IN
-771315712,771316479,AU
+771315712,771316223,AU
+771316224,771316479,KR
771316480,771316735,HK
771316736,771317759,CN
771317760,771318783,HK
@@ -9939,13 +10053,14 @@
771483648,771489791,IN
771489792,771503103,CN
771503104,771505151,BD
-771505152,771506175,CN
+771505152,771506175,HK
771506176,771507199,TH
771507200,771511295,IN
771511296,771535871,CN
771535872,771536895,IN
771536896,771537919,US
-771537920,771538943,IN
+771537920,771538687,IN
+771538688,771538943,NZ
771538944,771550207,CN
771550208,771551231,AU
771551232,771554303,VN
@@ -9953,6 +10068,23 @@
771555328,771577855,CN
771577856,771578879,PH
771578880,771587071,CN
+771587072,771588095,NZ
+771588096,771588607,AU
+771588608,771629055,CN
+771629056,771630079,VN
+771630080,771631103,SG
+771631104,771632127,CN
+771632128,771633151,MM
+771633152,771680255,CN
+771680256,771681279,HK
+771681280,771683327,CN
+771683328,771684351,US
+771684352,771685375,CN
+771685376,771686399,HK
+771686400,771719167,CN
+771719168,771720191,US
+771720192,771750911,CN
+771750912,771751935,MY
771751936,771817471,RU
771817472,771948543,TR
771948544,772014079,RU
@@ -9967,7 +10099,9 @@
772285696,772285951,GR
772285952,772286719,RU
772286720,772286975,LB
-772286976,772296703,RU
+772286976,772287771,RU
+772287772,772287772,NL
+772287773,772296703,RU
772296704,772300799,UA
772300800,772339967,RU
772339968,772340223,NL
@@ -10621,7 +10755,9 @@
778461440,778462207,EE
778462208,778462463,TR
778462464,778463231,EE
-778463232,778467327,RO
+778463232,778465279,RO
+778465280,778466303,IT
+778466304,778467327,RO
778467328,778473471,IR
778473472,778475519,RO
778475520,778475775,CH
@@ -10927,7 +11063,8 @@
782447872,782448127,HR
782448128,782449151,SI
782449152,782449407,HR
-782449408,782449663,SI
+782449408,782449471,RS
+782449472,782449663,SI
782449664,782450687,BA
782450688,782467071,DE
782467072,782483455,RU
@@ -11316,9 +11453,14 @@
787039232,787039247,AR
787039248,787039263,PE
787039264,787039279,VE
-787039280,787040255,GB
-787040256,787040319,IT
-787040320,787054591,GB
+787039280,787039487,GB
+787039488,787039551,NL
+787039552,787039679,ES
+787039680,787039743,BE
+787039744,787040255,GB
+787040256,787040383,IT
+787040384,787040511,DK
+787040512,787054591,GB
787054592,787070975,IT
787070976,787087359,RU
787087360,787095551,TR
@@ -11460,7 +11602,9 @@
787881746,787881747,FR
787881748,787891247,SE
787891248,787891251,ES
-787891252,787906559,SE
+787891252,787900927,SE
+787900928,787901183,DK
+787901184,787906559,SE
787906560,787939327,GR
787939328,787972095,GB
787972096,788004863,UA
@@ -11495,9 +11639,14 @@
788234240,788242431,SA
788242432,788250623,IR
788250624,788258815,KG
-788258816,788261375,DE
+788258816,788259071,IR
+788259072,788259327,DE
+788259328,788259583,IR
+788259584,788261375,DE
788261376,788261631,GB
-788261632,788267007,DE
+788261632,788262143,DE
+788262144,788262399,IR
+788262400,788267007,DE
788267008,788271103,SE
788271104,788275199,DE
788275200,788279295,AL
@@ -11631,41 +11780,23 @@
797873664,797873919,US
797873920,800357121,CA
800357122,800357122,US
-800357123,802173951,CA
-802173952,802174719,US
-802174720,802189311,CA
-802189312,802190079,US
-802190080,802190335,CA
-802190336,802190591,US
-802190592,802203903,CA
+800357123,800989958,CA
+800989959,800989959,US
+800989960,802160639,CA
+802160640,802203647,US
+802203648,802203903,CA
802203904,802207487,US
-802207488,802324735,CA
+802207488,802216959,CA
+802216960,802324479,US
+802324480,802324735,CA
802324736,802326271,US
802326272,802326527,CA
802326528,802326783,US
802326784,802327039,CA
802327040,802331391,US
802331392,802331647,CA
-802331648,802333439,US
-802333440,802333695,CA
-802333696,802335999,US
-802336000,802336255,CA
-802336256,802337279,US
-802337280,802337535,CA
-802337536,802339839,US
-802339840,802503679,CA
-802503680,802503935,US
-802503936,802504447,CA
-802504448,802504703,US
-802504704,802544639,CA
-802544640,802547967,US
-802547968,802599935,CA
-802599936,802600447,US
-802600448,802600703,CA
-802600704,802602239,US
-802602240,802602495,CA
-802602496,802604031,US
-802604032,802614271,CA
+802331648,802609151,US
+802609152,802614271,CA
802614272,802616319,US
802616320,802676735,CA
802676736,802681087,US
@@ -11911,7 +12042,14 @@
839351296,839352063,DE
839352064,839357439,NL
839357440,839358463,FR
-839358464,839359487,GB
+839358464,839359335,GB
+839359336,839359343,US
+839359344,839359351,GB
+839359352,839359359,IT
+839359360,839359367,IE
+839359368,839359375,FR
+839359376,839359383,TH
+839359384,839359487,GB
839359488,839360511,DE
839360512,839366655,NL
839366656,839366911,AT
@@ -11956,14 +12094,18 @@
846561280,846594047,CA
846594048,846626815,US
846626816,846627071,CN
-846627072,846644755,US
+846627072,846631253,US
+846631254,846631254,CA
+846631255,846644755,US
846644756,846644756,PT
846644757,850506751,US
850506752,850507263,CA
850507264,855638015,US
855638016,855900159,GB
855900160,856031231,DE
-856031232,857997311,GB
+856031232,856195071,GB
+856195072,856199167,DE
+856199168,857997311,GB
857997312,857998335,SA
857998336,857998591,GB
857998592,857999359,SA
@@ -12270,7 +12412,7 @@
876216320,876347391,DE
876347392,876478463,US
876478464,876740607,AU
-876740608,876806143,US
+876740608,876806143,IN
876806144,876871679,BR
876871680,877002751,JP
877002752,877264895,US
@@ -12295,7 +12437,9 @@
878465024,878466047,JP
878466048,878468095,US
878468096,878469119,AU
-878469120,878510079,US
+878469120,878508031,US
+878508032,878509055,IN
+878509056,878510079,US
878510080,878510335,IE
878510336,878510591,US
878510592,878510847,IE
@@ -12321,13 +12465,12 @@
878649856,878650111,JP
878650112,878650367,SG
878650368,878651391,AU
-878651392,878652927,US
-878652928,878653183,IE
-878653184,878653439,SG
-878653440,878655487,US
+878651392,878655487,US
878655488,878656511,JP
878656512,878657023,IE
-878657024,878667775,US
+878657024,878657535,US
+878657536,878666751,IN
+878666752,878667775,US
878667776,878668799,IE
878668800,878673919,US
878673920,878675967,AU
@@ -12343,7 +12486,7 @@
878703616,878703871,IE
878703872,878704639,US
878704640,878704895,DE
-878704896,878705151,CN
+878704896,878705151,IN
878705152,878705663,US
878705664,878705919,KR
878705920,878706431,US
@@ -12355,14 +12498,28 @@
878706512,878706559,US
878706560,878706575,DE
878706576,878706591,CN
-878706592,880543743,US
+878706592,879763583,US
+879763584,879763711,CA
+879763712,879788031,US
+879788032,879788159,NL
+879788160,879788287,IE
+879788288,879788543,GB
+879788544,879796223,US
+879796224,879796479,GB
+879796480,879804415,US
+879804416,879804479,NL
+879804480,879804543,IE
+879804544,879804671,GB
+879804672,879808511,US
+879808512,879808639,GB
+879808640,880543743,US
880543744,880545791,CA
-880545792,880881663,US
+880545792,880558079,US
+880558080,880574463,CA
+880574464,880881663,US
880881664,880881919,PR
880881920,883097599,US
-883097600,883122175,SG
-883122176,883130367,US
-883130368,883163135,SG
+883097600,883163135,SG
883163136,883228671,IE
883228672,883294207,US
883294208,883359743,NL
@@ -12370,19 +12527,20 @@
883490816,883556351,IE
883556352,883687423,US
883687424,883703807,IN
-883703808,883818495,US
+883703808,883720191,US
+883720192,883736575,IN
+883736576,883818495,US
883818496,883884031,NL
883884032,883916799,HK
883916800,883924991,JP
883924992,884080639,US
-884080640,884099071,NL
-884099072,884113407,US
-884113408,884137983,IE
-884137984,884441087,US
+884080640,884113407,NL
+884113408,884146175,IE
+884146176,884441087,US
884441088,884457471,IN
884457472,884473855,US
-884473856,884490239,HK
-884490240,884670463,US
+884473856,884498431,HK
+884498432,884670463,US
884670464,884719615,SG
884719616,884727807,AU
884727808,884850687,US
@@ -12401,7 +12559,29 @@
886775808,886778879,SG
886778880,886833151,US
886833152,886964223,SG
-886964224,889192447,US
+886964224,887357439,US
+887357440,887375871,CA
+887375872,887439359,US
+887439360,887455743,CA
+887455744,887488511,HK
+887488512,887496703,SG
+887496704,887504895,US
+887504896,887521279,SG
+887521280,887554047,US
+887554048,887619583,KR
+887619584,887652351,NL
+887652352,887654399,CA
+887654400,887685119,US
+887685120,887701503,CA
+887701504,887717887,US
+887717888,887750655,NL
+887750656,887816191,US
+887816192,887832575,CA
+887832576,887881727,US
+887881728,887889919,IE
+887889920,887914495,US
+887914496,887916543,NL
+887916544,889192447,US
889192448,905969663,DE
905969664,910163967,US
910163968,910197237,JP
@@ -12838,8 +13018,8 @@
982639104,982639615,SG
982639616,982639871,JP
982639872,982641151,SG
-982641152,982641663,JP
-982641664,982642687,SG
+982641152,982641407,JP
+982641408,982642687,SG
982642688,982671359,JP
982671360,982679551,IN
982679552,982695935,SG
@@ -13065,13 +13245,9 @@
1024361168,1024361183,HK
1024361184,1024363519,JP
1024363520,1024363775,AU
-1024363776,1024364063,JP
-1024364064,1024364079,AU
-1024364080,1024365727,JP
+1024363776,1024365727,JP
1024365728,1024365759,SG
-1024365760,1024371199,JP
-1024371200,1024371455,PH
-1024371456,1024372543,JP
+1024365760,1024372543,JP
1024372544,1024372639,HK
1024372640,1024373263,JP
1024373264,1024373279,HK
@@ -13129,11 +13305,7 @@
1026408448,1026416639,JP
1026416640,1026420735,CN
1026420736,1026422783,JP
-1026422784,1026423039,AU
-1026423040,1026423295,SG
-1026423296,1026424383,AU
-1026424384,1026424400,US
-1026424401,1026424831,AU
+1026422784,1026424831,AU
1026424832,1026490623,JP
1026490624,1026491135,SG
1026491136,1026491903,JP
@@ -13484,13 +13656,7 @@
1045018800,1045020671,GB
1045020672,1045037055,NO
1045037056,1045135359,GR
-1045135360,1045152603,DE
-1045152604,1045152606,SG
-1045152607,1045154629,DE
-1045154630,1045154630,SG
-1045154631,1045158306,DE
-1045158307,1045158307,SG
-1045158308,1045168127,DE
+1045135360,1045168127,FR
1045168128,1045171199,RU
1045171200,1045171455,UA
1045171456,1045233663,RU
@@ -13691,7 +13857,9 @@
1046773760,1046781951,FR
1046781952,1046791167,GB
1046791168,1046792191,IT
-1046792192,1046798335,GB
+1046792192,1046794239,GB
+1046794240,1046794495,US
+1046794496,1046798335,GB
1046798336,1046806527,HU
1046806528,1046814719,IT
1046814720,1046822911,SE
@@ -13816,12 +13984,14 @@
1048602624,1048603135,RU
1048603136,1048603391,UA
1048603392,1048603647,LV
-1048603648,1048608767,UA
+1048603648,1048604944,UA
+1048604945,1048604945,LT
+1048604946,1048608767,UA
1048608768,1048616959,GB
1048616960,1048617215,DE
1048617216,1048618751,KE
1048618752,1048619007,DE
-1048619008,1048621055,KE
+1048619008,1048621055,GB
1048621056,1048625151,DE
1048625152,1048633343,GB
1048633344,1048641535,NO
@@ -14364,7 +14534,9 @@
1056555008,1056571391,GB
1056571392,1056669695,NL
1056669696,1056702463,MA
-1056702464,1056874751,GB
+1056702464,1056740018,GB
+1056740019,1056740019,US
+1056740020,1056874751,GB
1056874752,1056874943,IE
1056874944,1056874975,GB
1056874976,1056875007,IE
@@ -14543,7 +14715,9 @@
1071100928,1071101951,PR
1071101952,1071106559,US
1071106560,1071106815,NL
-1071106816,1071144959,US
+1071106816,1071141557,US
+1071141558,1071141558,HK
+1071141559,1071144959,US
1071144960,1071153151,LB
1071153152,1071170815,US
1071170816,1071171071,PH
@@ -14678,9 +14852,13 @@
1073454592,1073454847,KY
1073454848,1074008639,US
1074008640,1074008703,SG
-1074008704,1074012671,US
+1074008704,1074009727,US
+1074009728,1074009855,IE
+1074009856,1074012671,US
1074012672,1074013183,FI
-1074013184,1074020351,US
+1074013184,1074016895,US
+1074016896,1074017023,IE
+1074017024,1074020351,US
1074020352,1074028543,CA
1074028544,1074118655,US
1074118656,1074120959,CA
@@ -15667,13 +15845,12 @@
1094066408,1094066911,US
1094066912,1094066975,IE
1094066976,1094067199,US
-1094067200,1094067423,IE
-1094067424,1094068223,NL
+1094067200,1094068223,NL
1094068224,1094068479,SG
1094068480,1094074879,US
1094074880,1094075167,BR
1094075168,1094077439,US
-1094077440,1094077695,FR
+1094077440,1094077695,PR
1094077696,1094078975,US
1094078976,1094079231,SG
1094079232,1094079743,US
@@ -15681,7 +15858,7 @@
1094080000,1094080511,US
1094080512,1094081023,NL
1094081024,1094088703,US
-1094088704,1094090751,FR
+1094088704,1094090751,PR
1094090752,1094099471,US
1094099472,1094099487,NL
1094099488,1094099551,US
@@ -15690,18 +15867,29 @@
1094100704,1094100735,GB
1094100736,1094106239,US
1094106240,1094106255,GB
-1094106256,1094146047,US
+1094106256,1094124543,US
+1094124544,1094124799,IE
+1094124800,1094139039,US
+1094139040,1094139047,IE
+1094139048,1094146047,US
1094146048,1094146079,KR
1094146080,1094146111,HK
1094146112,1094146143,SG
1094146144,1094146175,MY
-1094146176,1094146207,US
-1094146208,1094146239,AU
+1094146176,1094146239,AU
1094146240,1094146271,HK
1094146272,1094146303,SG
1094146304,1094147631,US
1094147632,1094147647,SG
-1094147648,1094565887,US
+1094147648,1094150751,US
+1094150752,1094150783,SG
+1094150784,1094177663,US
+1094177664,1094177727,IE
+1094177728,1094178303,US
+1094178304,1094178559,SG
+1094178560,1094178815,US
+1094178816,1094179071,IE
+1094179072,1094565887,US
1094565888,1094582271,CA
1094582272,1095450623,US
1095450624,1095467007,BS
@@ -16099,7 +16287,8 @@
1114520064,1114520319,PH
1114520320,1114520575,US
1114520576,1114520831,PH
-1114520832,1114524159,US
+1114520832,1114524031,US
+1114524032,1114524159,JM
1114524160,1114524671,ZA
1114524672,1114533375,US
1114533376,1114533887,ZA
@@ -16200,8 +16389,8 @@
1117421568,1117458911,US
1117458912,1117458943,GB
1117458944,1117460223,US
-1117460224,1117460287,GB
-1117460288,1117460991,US
+1117460224,1117460351,GB
+1117460352,1117460991,US
1117460992,1117461247,GB
1117461248,1117470719,US
1117470720,1117471231,CA
@@ -16367,7 +16556,9 @@
1120283136,1120283647,US
1120283648,1120284671,EC
1120284672,1120286719,CA
-1120286720,1120294911,US
+1120286720,1120292863,US
+1120292864,1120293119,CA
+1120293120,1120294911,US
1120294912,1120297215,CA
1120297216,1120306687,US
1120306688,1120306943,PH
@@ -16683,7 +16874,9 @@
1133785440,1133785471,GB
1133785472,1133785487,US
1133785488,1133785495,IE
-1133785496,1133789695,US
+1133785496,1133785519,US
+1133785520,1133785535,GB
+1133785536,1133789695,US
1133789696,1133789823,GB
1133789824,1133789887,US
1133789888,1133789895,NL
@@ -17553,7 +17746,7 @@
1176780800,1176864255,US
1176864256,1176864319,JP
1176864320,1176864767,US
-1176864768,1176865535,FR
+1176864768,1176865535,PR
1176865536,1176868095,US
1176868096,1176868351,AU
1176868352,1176868863,BR
@@ -18416,9 +18609,9 @@
1296241408,1296242175,NL
1296242176,1296242303,FR
1296242304,1296242431,NL
-1296242432,1296242929,FR
-1296242930,1296242930,GB
-1296242931,1296243455,FR
+1296242432,1296242927,FR
+1296242928,1296242943,GB
+1296242944,1296243455,FR
1296243456,1296243711,DE
1296243712,1296244223,US
1296244224,1296244479,NL
@@ -18676,8 +18869,11 @@
1297178112,1297178367,QA
1297178368,1297178623,RO
1297178624,1297178879,NL
-1297178880,1297181951,RO
-1297181952,1297182463,DE
+1297178880,1297181439,RO
+1297181440,1297181695,GB
+1297181696,1297181951,RO
+1297181952,1297182207,DE
+1297182208,1297182463,NL
1297182464,1297182719,RO
1297182720,1297184767,ES
1297184768,1297185279,BZ
@@ -18775,7 +18971,9 @@
1298016256,1298016511,LT
1298016512,1298017279,RU
1298017280,1298018303,BY
-1298018304,1298020351,RU
+1298018304,1298019327,RU
+1298019328,1298019839,LT
+1298019840,1298020351,RU
1298020352,1298022399,BY
1298022400,1298030591,IT
1298030592,1298038783,RU
@@ -18866,7 +19064,9 @@
1299447808,1299709951,AT
1299709952,1299972095,UA
1299972096,1300234239,IL
-1300234240,1302331391,FR
+1300234240,1300889599,FR
+1300889600,1301020671,IL
+1301020672,1302331391,FR
1302331392,1303379967,NL
1303379968,1304428543,DE
1304428544,1304695469,FR
@@ -18969,9 +19169,14 @@
1307418624,1307426815,IR
1307426816,1307435007,CH
1307435008,1307435263,DE
-1307435264,1307435775,US
+1307435264,1307435327,AL
+1307435328,1307435391,ME
+1307435392,1307435519,SK
+1307435520,1307435647,RU
+1307435648,1307435775,LT
1307435776,1307436543,DE
-1307436544,1307437055,US
+1307436544,1307436799,AU
+1307436800,1307437055,US
1307437056,1307441151,ES
1307441152,1307442175,NL
1307442176,1307443199,DE
@@ -19073,7 +19278,7 @@
1307819408,1307819431,DE
1307819432,1307819519,NL
1307819520,1307819775,GB
-1307820032,1307824127,PT
+1307820032,1307824127,ES
1307824128,1307828223,HU
1307828224,1307832319,NL
1307832320,1307836415,RU
@@ -19815,8 +20020,8 @@
1334725632,1334726143,SE
1334726144,1334726399,LU
1334726400,1334726655,SE
-1334726656,1334730239,RU
-1334730240,1334730495,KZ
+1334726656,1334729983,RU
+1334729984,1334730495,KZ
1334730496,1334734847,RU
1334734848,1334738943,LT
1334738944,1334743039,CH
@@ -19891,11 +20096,13 @@
1336627200,1336629247,NO
1336629248,1336631295,DE
1336631296,1336633343,IS
-1336633344,1336635391,PT
+1336633344,1336635391,ES
1336635392,1336637439,RU
1336637440,1336639487,UA
1336639488,1336643583,HU
-1336643584,1336645631,DK
+1336643584,1336644887,DK
+1336644888,1336644895,NO
+1336644896,1336645631,DK
1336645632,1336647679,GB
1336647680,1336649727,IT
1336649728,1336651775,RU
@@ -20816,7 +21023,8 @@
1353308160,1353309183,FR
1353309184,1353312447,GB
1353312448,1353312479,CH
-1353312480,1353312767,GB
+1353312480,1353312511,GB
+1353312512,1353312767,CH
1353312768,1353313023,IT
1353313024,1353315327,GB
1353315328,1353315583,US
@@ -21730,7 +21938,14 @@
1364988384,1364988391,PL
1364988392,1364988399,ES
1364988400,1364988407,CH
-1364988408,1364991999,DE
+1364988408,1364990847,DE
+1364990848,1364990911,SE
+1364990912,1364990943,NO
+1364990944,1364990951,DK
+1364990952,1364990959,FI
+1364990960,1364990967,LT
+1364990968,1364990975,LV
+1364990976,1364991999,DE
1364992000,1364996095,IT
1364996096,1365000191,GR
1365000192,1365004287,SE
@@ -21801,7 +22016,9 @@
1365237760,1365241855,UZ
1365241856,1365245951,DK
1365245952,1366294527,GB
-1366294528,1367343103,IT
+1366294528,1366456994,IT
+1366456995,1366456995,BO
+1366456996,1367343103,IT
1367343104,1369440255,GB
1369440256,1369473023,DE
1369473024,1369505791,HU
@@ -21928,7 +22145,9 @@
1372000256,1372004351,UG
1372004352,1372012543,GB
1372012544,1372013567,ZM
-1372013568,1372020735,GB
+1372013568,1372017583,GB
+1372017584,1372017599,CD
+1372017600,1372020735,GB
1372020736,1372020991,ZM
1372020992,1372021247,CD
1372021248,1372022783,ZM
@@ -22375,7 +22594,9 @@
1387593728,1387659263,FI
1387659264,1387790335,SE
1387790336,1388314623,IT
-1388314624,1388322815,AT
+1388314624,1388315135,AT
+1388315136,1388315647,GR
+1388315648,1388322815,AT
1388322816,1388331007,SI
1388331008,1388339199,NL
1388339200,1388347391,GB
@@ -22602,7 +22823,12 @@
1389806848,1389817603,DE
1389817604,1389817604,NO
1389817605,1389817855,DE
-1389817856,1389819903,GB
+1389817856,1389819007,GB
+1389819008,1389819023,DE
+1389819024,1389819039,FR
+1389819040,1389819055,IT
+1389819056,1389819071,TR
+1389819072,1389819903,GB
1389819904,1389821951,DE
1389821952,1389838335,NL
1389838336,1389854719,UZ
@@ -23381,7 +23607,9 @@
1410540800,1410547711,GB
1410547712,1410555903,CZ
1410555904,1410564095,GB
-1410564096,1410568991,SE
+1410564096,1410568501,SE
+1410568502,1410568502,DK
+1410568503,1410568991,SE
1410568992,1410569007,NO
1410569008,1410572287,SE
1410572288,1410588671,DE
@@ -24015,7 +24243,9 @@
1433591808,1433599999,GE
1433600000,1433608191,DE
1433608192,1433608447,TR
-1433608448,1433608703,NL
+1433608448,1433608627,NL
+1433608628,1433608628,BE
+1433608629,1433608703,NL
1433608704,1433610239,GB
1433610240,1433612287,US
1433612288,1433614335,GB
@@ -24212,9 +24442,22 @@
1438556160,1438560255,DE
1438560256,1438562303,US
1438562304,1438572543,DE
-1438572544,1438573567,US
-1438573568,1438579711,DE
-1438579712,1438580223,US
+1438572544,1438572671,RU
+1438572672,1438572799,TR
+1438572800,1438572863,BE
+1438572864,1438572927,NL
+1438572928,1438573055,LU
+1438573056,1438573119,TW
+1438573120,1438573183,KR
+1438573184,1438573247,SG
+1438573248,1438573311,JP
+1438573312,1438573375,CA
+1438573376,1438573439,KR
+1438573440,1438573503,PT
+1438573504,1438573567,DK
+1438573568,1438579967,DE
+1438579968,1438580095,NZ
+1438580096,1438580223,AU
1438580224,1438580735,DE
1438580736,1438581759,NL
1438581760,1438582015,DK
@@ -24226,7 +24469,9 @@
1438586438,1438586438,DK
1438586439,1438605823,NL
1438605824,1438606079,DK
-1438606080,1438613503,NL
+1438606080,1438606221,NL
+1438606222,1438606222,DK
+1438606223,1438613503,NL
1438613504,1438646271,DK
1438646272,1438662655,RU
1438662656,1438679039,ES
@@ -24259,7 +24504,9 @@
1438885888,1438889983,LT
1438889984,1438892031,RU
1438892032,1438896127,CH
-1438896128,1438900223,AQ
+1438896128,1438899545,AQ
+1438899546,1438899546,CH
+1438899547,1438900223,AQ
1438900224,1438908415,CH
1438908416,1438924799,GR
1438924800,1438941183,NO
@@ -24679,7 +24926,7 @@
1449781248,1449781503,MD
1449781504,1449782015,RO
1449782016,1449782271,GB
-1449782272,1449783295,RO
+1449782272,1449783295,IT
1449783296,1449783551,DE
1449783552,1449783807,RO
1449783808,1449784319,GB
@@ -25059,7 +25306,7 @@
1475344384,1475344639,ES
1475344640,1475345919,NL
1475345920,1475346175,ES
-1475346176,1475346431,GB
+1475346176,1475346431,IL
1475346432,1475362815,RU
1475362816,1475379199,FR
1475379200,1475395583,RU
@@ -25121,7 +25368,9 @@
1475725312,1475725567,RU
1475725568,1475726591,GB
1475726592,1475726847,RU
-1475726848,1475728639,GB
+1475726848,1475727359,GB
+1475727360,1475727391,FI
+1475727392,1475728639,GB
1475728640,1475728767,PL
1475728768,1475729407,GB
1475729408,1475729535,UA
@@ -25442,7 +25691,9 @@
1489674240,1489676287,NL
1489676288,1489688575,GB
1489688576,1489688831,IL
-1489688832,1489692415,GB
+1489688832,1489690111,GB
+1489690112,1489690623,NL
+1489690624,1489692415,GB
1489692416,1489692431,AU
1489692432,1489692447,GB
1489692448,1489692463,AU
@@ -25490,7 +25741,9 @@
1490354176,1490386943,SA
1490386944,1490403327,IT
1490403328,1490419711,BG
-1490419712,1490436095,DE
+1490419712,1490420735,DE
+1490420736,1490421759,IR
+1490421760,1490436095,DE
1490436096,1490452479,UA
1490452480,1490468863,PT
1490468864,1490478591,GB
@@ -25641,7 +25894,9 @@
1495158784,1495159295,GB
1495160240,1495160255,FR
1495160256,1495160263,GB
+1495160320,1495160575,FR
1495162112,1495162367,DE
+1495162624,1495162879,FR
1495163392,1495163647,FR
1495165696,1495165951,ES
1495167488,1495167503,GB
@@ -25782,7 +26037,11 @@
1495422976,1495423487,IR
1495423488,1495424511,RO
1495424512,1495425023,IR
-1495425024,1495425791,GB
+1495425024,1495425468,GB
+1495425469,1495425469,PT
+1495425470,1495425533,GB
+1495425534,1495425534,PT
+1495425535,1495425791,GB
1495425792,1495426559,RO
1495426560,1495426815,GB
1495426816,1495427071,RO
@@ -26206,7 +26465,11 @@
1496150016,1496152063,IR
1496152064,1496153599,RO
1496153600,1496154111,IR
-1496154112,1496177663,RO
+1496154112,1496175615,RO
+1496175616,1496175872,IT
+1496175873,1496176127,RO
+1496176128,1496176639,IT
+1496176640,1496177663,RO
1496177664,1496178687,ES
1496178688,1496179199,RO
1496179200,1496179711,SE
@@ -26764,7 +27027,11 @@
1506450048,1506450111,CH
1506450112,1506450863,GB
1506450864,1506450879,CZ
-1506450880,1506453311,GB
+1506450880,1506451071,GB
+1506451072,1506451135,DK
+1506451136,1506451839,GB
+1506451840,1506451871,ES
+1506451872,1506453311,GB
1506453312,1506453319,SE
1506453320,1506456533,GB
1506456534,1506456534,IT
@@ -26977,7 +27244,9 @@
1509494784,1509498879,RU
1509498880,1509502975,DE
1509502976,1509507071,RU
-1509507072,1509511167,GB
+1509507072,1509509375,GB
+1509509376,1509509631,BE
+1509509632,1509511167,GB
1509511168,1509515263,LT
1509515264,1509519359,HR
1509519360,1509535743,RU
@@ -27357,8 +27626,7 @@
1518665728,1518723071,LV
1518723072,1518727167,EE
1518727168,1518731263,SE
-1518731264,1518747647,DE
-1518747648,1518772223,LT
+1518731264,1518772223,LT
1518772224,1518780415,NL
1518780416,1518796799,HR
1518796800,1518927871,DE
@@ -27519,12 +27787,14 @@
1533476864,1533478911,IE
1533480960,1533482239,NL
1533482240,1533482495,GB
-1533482496,1533483007,NL
+1533482496,1533482751,NL
+1533482752,1533483007,GB
1533483008,1533485055,AM
1533485056,1533486079,GB
1533486080,1533486335,SE
-1533486336,1533486591,NO
-1533486592,1533486847,DK
+1533486336,1533486719,NO
+1533486720,1533486783,DK
+1533486784,1533486847,FI
1533486848,1533487103,GB
1533487104,1533489151,FR
1533489152,1533491199,ES
@@ -27587,7 +27857,9 @@
1533837312,1533845503,IR
1533845504,1533847551,GB
1533847552,1533849599,RU
-1533849600,1533851647,SE
+1533849600,1533851135,SE
+1533851136,1533851391,PL
+1533851392,1533851647,SE
1533851648,1533853695,CH
1533853696,1533874175,GB
1533874176,1533878271,DE
@@ -27698,13 +27970,19 @@
1535451136,1535459327,DK
1535459328,1535475711,AT
1535475712,1535508479,IR
-1535508480,1535509296,BG
+1535508480,1535509103,BG
+1535509104,1535509119,FR
+1535509120,1535509296,BG
1535509297,1535509297,ES
1535509298,1535512121,BG
1535512122,1535512122,PL
1535512123,1535512191,BG
1535512192,1535512207,FR
-1535512208,1535515331,BG
+1535512208,1535512655,BG
+1535512656,1535512671,FR
+1535512672,1535515055,BG
+1535515056,1535515071,IT
+1535515072,1535515331,BG
1535515332,1535515335,ES
1535515336,1535515504,BG
1535515505,1535515505,PL
@@ -27716,7 +27994,9 @@
1535540955,1535540955,BE
1535540956,1535542640,BG
1535542641,1535542641,BE
-1535542642,1535549040,BG
+1535542642,1535546270,BG
+1535546271,1535546271,IT
+1535546272,1535549040,BG
1535549041,1535549041,PT
1535549042,1535550519,BG
1535550520,1535550523,DE
@@ -27746,7 +28026,13 @@
1535560152,1535560152,GB
1535560153,1535562403,BG
1535562404,1535562407,GB
-1535562408,1535574015,BG
+1535562408,1535573211,BG
+1535573212,1535573215,GB
+1535573216,1535573307,BG
+1535573308,1535573311,NL
+1535573312,1535573543,BG
+1535573544,1535573547,LT
+1535573548,1535574015,BG
1535574016,1535578111,GB
1535578112,1535582207,LV
1535582208,1535590399,NO
@@ -28799,7 +29085,6 @@
1539821056,1539821311,UA
1539821312,1539821567,CZ
1539821568,1539821823,DK
-1539821824,1539822079,DE
1539822080,1539822335,RO
1539822592,1539822847,GB
1539822848,1539823103,IE
@@ -29048,7 +29333,8 @@
1540094976,1540095999,RU
1540096000,1540097023,SE
1540097024,1540099071,DE
-1540099072,1540099583,UA
+1540099072,1540099327,UA
+1540099328,1540099583,BY
1540099584,1540099711,US
1540099712,1540099839,DE
1540099840,1540103167,RU
@@ -29820,8 +30106,7 @@
1540531200,1540532223,UA
1540532224,1540533247,RU
1540533248,1540534271,KZ
-1540534272,1540534399,UA
-1540534400,1540535295,RU
+1540534272,1540535295,UA
1540535296,1540536319,SK
1540536320,1540537343,RU
1540537344,1540539391,UA
@@ -30063,7 +30348,6 @@
1540679680,1540679935,LT
1540679936,1540680191,BG
1540680192,1540680447,CH
-1540680448,1540680703,BG
1540680704,1540680959,FR
1540680960,1540681215,NL
1540681216,1540681471,FR
@@ -30734,7 +31018,8 @@
1540996864,1540997119,NL
1540997120,1540997375,RU
1540997376,1540997631,TR
-1540997632,1540998399,RU
+1540997632,1540997887,RU
+1540998144,1540998399,RU
1540998400,1540998655,UA
1540998656,1540998911,PL
1540998912,1540999167,DE
@@ -31049,7 +31334,6 @@
1541187328,1541187583,RO
1541187584,1541187839,IT
1541187840,1541188351,RU
-1541188352,1541188607,FR
1541188608,1541188863,HU
1541188864,1541189119,RU
1541189120,1541189375,UA
@@ -31094,7 +31378,6 @@
1541200384,1541201151,RU
1541201152,1541201407,SI
1541201408,1541201663,PL
-1541201664,1541201919,RU
1541201920,1541202175,IE
1541202176,1541202431,PL
1541202432,1541202687,ES
@@ -31172,7 +31455,8 @@
1541235712,1541236223,AT
1541236224,1541236735,RU
1541236736,1541237247,DE
-1541237248,1541238271,RU
+1541237445,1541237445,RU
+1541237760,1541238271,RU
1541238272,1541239295,SK
1541239296,1541239807,PL
1541240320,1541240831,CH
@@ -31543,8 +31827,8 @@
1541412864,1541413375,UA
1541413376,1541413887,GB
1541413888,1541414399,PL
-1541414400,1541414911,UA
-1541414912,1541415935,RU
+1541414400,1541414655,UA
+1541414656,1541415935,RU
1541415936,1541416447,SE
1541416448,1541416959,PL
1541416960,1541417471,RO
@@ -32041,7 +32325,7 @@
1541755392,1541757439,PL
1541757952,1541758207,GB
1541758208,1541758463,HU
-1541758464,1541758719,RU
+1541758464,1541758719,BY
1541758720,1541758975,FR
1541758976,1541760255,RU
1541760256,1541760511,UA
@@ -33614,7 +33898,10 @@
1546076160,1546080255,RU
1546080256,1546084351,AZ
1546084352,1546088447,RU
-1546088448,1546092543,GB
+1546088448,1546088959,BR
+1546088960,1546089471,GB
+1546089472,1546089727,BR
+1546089728,1546092543,GB
1546092544,1546096639,RU
1546096640,1546100735,IT
1546100736,1546104831,AT
@@ -33851,7 +34138,10 @@
1547669504,1547673599,AT
1547673600,1547677695,NL
1547677696,1547683839,RU
-1547683840,1547685887,FR
+1547683840,1547683967,PL
+1547683968,1547684031,EE
+1547684032,1547684095,LV
+1547684096,1547685887,FR
1547685888,1547689983,AT
1547689984,1547694079,IT
1547694080,1547698175,HU
@@ -33918,7 +34208,8 @@
1550988544,1550988799,JP
1550988800,1550990335,RO
1550990336,1550991359,AU
-1550991360,1550996223,RO
+1550991360,1550995455,IR
+1550995456,1550996223,RO
1550996224,1550996479,AU
1550996480,1550998527,RO
1550998528,1550998783,IT
@@ -33941,6 +34232,7 @@
1551561728,1551562751,FR
1551564800,1551572991,FR
1551577088,1551580159,NL
+1551580350,1551580350,US
1551604480,1551604735,SE
1551630336,1551892479,RU
1551892480,1554514250,FR
@@ -34008,7 +34300,9 @@
1555655168,1555655423,FR
1555655424,1555660543,ES
1555660544,1555693567,FR
-1555693568,1555742719,ES
+1555693568,1555705298,ES
+1555705299,1555705299,US
+1555705300,1555742719,ES
1555742720,1555743487,FR
1555743488,1555743743,ES
1555743744,1555744767,FR
@@ -34043,7 +34337,11 @@
1555817472,1555820543,ES
1555820544,1555823615,FR
1555823616,1555824639,ES
-1555824640,1556086783,FR
+1555824640,1555977325,FR
+1555977326,1555977326,ES
+1555977327,1555990473,FR
+1555990474,1555990474,ES
+1555990475,1556086783,FR
1556086784,1557069823,DE
1557069824,1557135359,GB
1557135360,1557313279,DE
@@ -34065,7 +34363,9 @@
1558079872,1558079887,GB
1558079888,1558081175,FR
1558081176,1558081183,BE
-1558081184,1558083775,FR
+1558081184,1558082943,FR
+1558082944,1558082959,PL
+1558082960,1558083775,FR
1558083776,1558083791,DE
1558083792,1558083959,FR
1558083960,1558083963,CZ
@@ -34383,7 +34683,26 @@
1566443520,1566445567,NO
1566445568,1566447615,PL
1566447616,1566451711,IT
-1566451712,1566453759,IL
+1566451712,1566452032,IL
+1566452033,1566452033,IT
+1566452034,1566452034,FR
+1566452035,1566452035,DE
+1566452036,1566452036,BE
+1566452037,1566452037,ES
+1566452038,1566452038,IL
+1566452039,1566452039,AT
+1566452040,1566452042,IL
+1566452043,1566452043,NL
+1566452044,1566452045,GB
+1566452046,1566452046,SE
+1566452047,1566452047,CH
+1566452048,1566452049,DK
+1566452050,1566452050,IL
+1566452051,1566452051,IE
+1566452052,1566452052,CH
+1566452053,1566452053,GB
+1566452054,1566452057,UA
+1566452058,1566453759,IL
1566453760,1566455807,IQ
1566455808,1566457855,PT
1566457856,1566459903,CH
@@ -34838,7 +35157,7 @@
1571546112,1571546623,UZ
1571546624,1571546879,NL
1571546880,1571547135,RU
-1571547136,1571548159,CZ
+1571547136,1571548159,UA
1571548160,1571549183,RU
1571549184,1571550207,UA
1571550208,1571550463,RU
@@ -35292,7 +35611,10 @@
1578614480,1578614495,FR
1578614496,1578614511,DE
1578614512,1578631167,FR
-1578631168,1578659839,RO
+1578631168,1578637311,IR
+1578637312,1578651647,RO
+1578651648,1578657791,IR
+1578657792,1578659839,RO
1578659840,1578663935,ES
1578663936,1578762239,RU
1578762240,1578795007,BG
@@ -35778,7 +36100,8 @@
1588689920,1588690687,GB
1588690688,1588690943,RO
1588690944,1588692991,PL
-1588692992,1588699135,RO
+1588692992,1588698879,RO
+1588698880,1588699135,ES
1588699136,1588715519,IT
1588715520,1588717567,DE
1588717568,1588720639,RO
@@ -36072,9 +36395,7 @@
1593438720,1593438847,US
1593438848,1593438863,DE
1593438864,1593438975,US
-1593438976,1593441023,DE
-1593441024,1593441279,RU
-1593441280,1593442303,DE
+1593438976,1593442303,DE
1593442304,1593475071,BA
1593475072,1593491455,HR
1593491456,1593499647,DE
@@ -36120,17 +36441,23 @@
1596866560,1596868607,UZ
1596868608,1596869631,RU
1596869632,1596870655,UA
-1596870656,1596875775,RU
+1596870656,1596873727,RU
+1596873728,1596873983,UZ
+1596873984,1596874751,RU
+1596874752,1596875775,UA
1596875776,1596876799,UZ
1596876800,1596877311,RU
1596877312,1596877823,CZ
-1596877824,1596879359,RU
+1596877824,1596878079,UA
+1596878080,1596879359,RU
1596879360,1596879871,CZ
1596879872,1596880895,RU
1596880896,1596881407,UA
1596881408,1596881919,CZ
1596881920,1596882175,IT
-1596882176,1596886015,RU
+1596882176,1596882431,RU
+1596882432,1596882687,UA
+1596882688,1596886015,RU
1596886016,1596886527,UA
1596886528,1596887295,RU
1596887296,1596887551,KZ
@@ -36202,7 +36529,8 @@
1596978946,1596980223,CZ
1596980224,1596980479,RU
1596980480,1596980735,UA
-1596980736,1596981247,CZ
+1596980736,1596980991,CZ
+1596980992,1596981247,UA
1596981248,1597243391,PL
1597243392,1597505535,RU
1597505536,1597767679,KZ
@@ -36573,9 +36901,11 @@
1604386816,1604433919,RU
1604433920,1604434943,KZ
1604434944,1604444159,RU
-1604444160,1604445183,KZ
+1604444160,1604444245,KZ
+1604444246,1604444246,US
+1604444247,1604445183,KZ
1604445184,1604452351,RU
-1604452352,1604517887,RO
+1604452352,1604517887,IR
1604517888,1604583423,RU
1604583424,1604648959,UA
1604648960,1604714495,RU
@@ -37041,9 +37371,7 @@
1694695424,1694760959,TW
1694760960,1695023103,CN
1695023104,1695547391,TW
-1695547392,1696989183,CN
-1696989184,1697251327,HK
-1697251328,1697775615,CN
+1695547392,1697775615,CN
1697775616,1697776639,ID
1697776640,1697777663,JP
1697777664,1697779711,CN
@@ -37061,7 +37389,7 @@
1697997824,1697998847,CN
1697998848,1698004991,JP
1698004992,1698013183,IN
-1698013184,1698021375,AU
+1698013184,1698021375,US
1698021376,1698029567,NZ
1698029568,1698037759,AU
1698037760,1698103295,CN
@@ -37302,39 +37630,7 @@
1728339968,1728340991,SG
1728340992,1728342015,AU
1728342016,1728343039,TW
-1728343040,1728343047,SG
-1728343048,1728343055,BD
-1728343056,1728343063,SG
-1728343064,1728343067,BD
-1728343068,1728343071,SG
-1728343072,1728343087,BD
-1728343088,1728343091,SG
-1728343092,1728343119,BD
-1728343120,1728343123,SG
-1728343124,1728343127,BD
-1728343128,1728343131,SG
-1728343132,1728343147,BD
-1728343148,1728343151,SG
-1728343152,1728343183,BD
-1728343184,1728343207,SG
-1728343208,1728343211,BD
-1728343212,1728343239,SG
-1728343240,1728343247,BD
-1728343248,1728343303,SG
-1728343304,1728343311,BD
-1728343312,1728343335,SG
-1728343336,1728343339,BD
-1728343340,1728343391,SG
-1728343392,1728343423,BD
-1728343424,1728343547,SG
-1728343548,1728343551,BD
-1728343552,1728343659,SG
-1728343660,1728343663,BD
-1728343664,1728343679,SG
-1728343680,1728343743,BD
-1728343744,1728343871,SG
-1728343872,1728343935,BD
-1728343936,1728344063,SG
+1728343040,1728344063,SG
1728344064,1728344575,HK
1728344576,1728345087,SG
1728345088,1728346111,BD
@@ -37491,6 +37787,7 @@
1728476160,1728476415,AU
1728476416,1728476927,ID
1728476928,1728477183,IN
+1728477184,1728478207,CN
1728479232,1728480255,HK
1728480256,1728481279,IN
1728481280,1728483327,HK
@@ -37560,6 +37857,7 @@
1728539648,1728540671,IN
1728540672,1728541695,BD
1728541696,1728542719,JP
+1728542720,1728543743,CN
1728543744,1728544767,SG
1728544768,1728545791,IN
1728545792,1728546815,JP
@@ -37601,7 +37899,7 @@
1728574464,1728575487,KR
1728575488,1728576511,BD
1728576512,1728577535,BT
-1728578560,1728580607,CN
+1728577536,1728580607,CN
1728580608,1728580863,ID
1728580864,1728581119,VN
1728581120,1728581631,PK
@@ -37619,7 +37917,6 @@
1728593152,1728593407,AU
1728593408,1728593663,IN
1728593664,1728593919,ID
-1728593920,1728594943,JP
1728594944,1728595967,CN
1728595968,1728596479,NZ
1728596480,1728598015,ID
@@ -37646,7 +37943,7 @@
1728619520,1728620543,IN
1728620544,1728622591,AU
1728622592,1728623615,SG
-1728623616,1728625663,JP
+1728623616,1728624639,JP
1728625664,1728626175,IN
1728626176,1728626431,JP
1728626432,1728626687,HK
@@ -37716,7 +38013,7 @@
1728689920,1728690175,ID
1728690176,1728691199,BD
1728691200,1728692223,KH
-1728693248,1728698367,VN
+1728692224,1728698367,VN
1728698368,1728699391,NZ
1728699392,1728699903,BD
1728699904,1728700415,IN
@@ -37806,6 +38103,7 @@
1728775168,1728776191,JP
1728776192,1728777215,AU
1728777216,1728778239,TH
+1728778240,1728779263,CN
1728779264,1728779519,IN
1728779520,1728780287,ID
1728780288,1728781311,KR
@@ -38032,8 +38330,7 @@
1728982784,1728985087,AU
1728985088,1728986111,SG
1728986112,1728987135,PH
-1728987136,1728987391,JP
-1728987392,1728988159,AU
+1728987136,1728988159,AU
1728988160,1728988191,NZ
1728988192,1728988199,US
1728988200,1728989183,NZ
@@ -38253,6 +38550,7 @@
1729182208,1729182463,ID
1729182464,1729182719,AU
1729182720,1729183743,AF
+1729183744,1729184767,CN
1729184768,1729185791,BD
1729185792,1729186815,HK
1729186816,1729187327,ID
@@ -38656,9 +38954,7 @@
1729607680,1729609727,AU
1729609728,1729609999,HK
1729610000,1729610003,JP
-1729610004,1729610063,HK
-1729610064,1729610071,SG
-1729610072,1729610751,HK
+1729610004,1729610751,HK
1729611776,1729612799,ID
1729612800,1729613823,BD
1729613824,1729614847,SG
@@ -38684,6 +38980,7 @@
1729629952,1729630207,HK
1729630208,1729631231,PH
1729631232,1729632255,IN
+1729632256,1729633279,CN
1729633280,1729634303,NZ
1729634304,1729635327,KH
1729635328,1729636351,IN
@@ -38729,11 +39026,7 @@
1729674240,1729675263,IN
1729675264,1729676287,JP
1729676288,1729677311,AU
-1729677312,1729677439,IN
-1729677440,1729677567,NL
-1729677568,1729677823,IN
-1729677824,1729678079,NL
-1729678080,1729678335,IN
+1729677312,1729678335,IN
1729678336,1729679359,HK
1729679360,1729680383,AU
1729680384,1729681407,ID
@@ -38780,7 +39073,6 @@
1729730560,1729731583,IN
1729731584,1729732607,CN
1729732608,1729733631,AU
-1729733632,1729733887,BD
1729733888,1729734655,ID
1729734656,1729736703,IN
1729736704,1729737727,PH
@@ -38890,7 +39182,7 @@
1729838080,1729840127,VN
1729840128,1729841151,JP
1729841152,1729842175,MY
-1729842176,1729843199,HK
+1729842176,1729843199,AU
1729843200,1729844223,JP
1729844224,1729845247,IN
1729845248,1729846271,NZ
@@ -38964,7 +39256,7 @@
1729902080,1729902591,SG
1729902592,1729903615,ID
1729903616,1729905663,KR
-1729905664,1729906687,PH
+1729905664,1729906687,US
1729906688,1729906943,AU
1729906944,1729907199,JP
1729907200,1729907711,ID
@@ -38997,6 +39289,7 @@
1729932288,1729933311,VN
1729933312,1729934335,ID
1729934336,1729935359,IN
+1729935360,1729936383,CN
1729936384,1729938431,ID
1729938432,1729939455,AU
1729939456,1729939967,TW
@@ -39010,11 +39303,11 @@
1729949696,1729950207,IN
1729950208,1729950719,KH
1729950720,1729951743,IN
-1729951744,1729951999,SG
-1729952000,1729952255,JP
+1729951744,1729952255,JP
1729952256,1729952511,AU
1729952512,1729952767,NZ
1729952768,1729953791,IN
+1729953792,1729954815,CN
1729954816,1729955839,ID
1729956864,1729957887,HK
1729957888,1729958911,CN
@@ -39296,7 +39589,7 @@
1730450432,1730450687,AU
1730450688,1730450943,IN
1730450944,1730451455,PH
-1730451456,1730452479,AU
+1730451456,1730452479,HK
1730452480,1730453503,ID
1730453504,1730476031,CN
1730476032,1730476543,AU
@@ -39337,6 +39630,7 @@
1730521088,1730522111,ID
1730522112,1730524159,CN
1730524160,1730525183,IN
+1730526208,1730527231,CN
1730528256,1730529279,SG
1730529280,1730529791,IN
1730529792,1730530303,AU
@@ -39532,8 +39826,7 @@
1730783744,1730783999,IN
1730784000,1730784255,ID
1730784256,1730785279,HK
-1730785280,1730785535,NL
-1730785536,1730786303,AU
+1730785280,1730786303,AU
1730786304,1730787583,HK
1730787584,1730788351,CN
1730788352,1730790399,ID
@@ -39734,8 +40027,7 @@
1731065856,1731066879,CN
1731066880,1731067391,PH
1731067392,1731067903,AU
-1731067904,1731068927,CN
-1731070976,1731103743,CN
+1731067904,1731103743,CN
1731103744,1731103871,TH
1731103872,1731103999,FR
1731104000,1731104127,KR
@@ -39746,6 +40038,7 @@
1731104768,1731105791,TW
1731105792,1731106815,BD
1731106816,1731115007,CN
+1731115008,1731116031,HK
1731116032,1731117055,TW
1731117056,1731118847,IN
1731118848,1731119103,AU
@@ -40152,8 +40445,7 @@
1731577088,1731577599,SG
1731577600,1731577855,HK
1731577856,1731578879,AU
-1731578880,1731580927,CN
-1731581952,1731582975,CN
+1731578880,1731582975,CN
1731582976,1731583999,PH
1731584000,1731585023,HK
1731585024,1731586047,VN
@@ -40174,7 +40466,9 @@
1731607552,1731608575,CN
1731608576,1731609599,IN
1731609600,1731610623,AU
-1731611648,1731614719,PK
+1731610624,1731611647,KR
+1731611648,1731612159,PK
+1731613696,1731614719,PK
1731614720,1731615743,JP
1731615744,1731616767,ID
1731616768,1731620351,IN
@@ -40194,7 +40488,6 @@
1731635200,1731636223,IN
1731636224,1731636479,ID
1731636480,1731637247,IN
-1731637248,1731638271,HK
1731638272,1731639295,IN
1731639296,1731640319,JP
1731640320,1731641343,IN
@@ -40221,7 +40514,7 @@
1731660544,1731660799,BN
1731660800,1731661823,JP
1731661824,1731662847,AU
-1731662848,1731665919,HK
+1731663872,1731664895,HK
1731665920,1731666175,AU
1731666176,1731666431,ID
1731666432,1731666687,AU
@@ -40302,8 +40595,7 @@
1731741184,1731741439,ID
1731741440,1731741695,AU
1731741696,1731743743,CN
-1731743744,1731744767,JP
-1731744768,1731747839,IN
+1731743744,1731747839,IN
1731747840,1731748863,JP
1731748864,1731750911,CN
1731750912,1731751935,JP
@@ -40365,7 +40657,6 @@
1731817472,1731818495,VN
1731818496,1731820543,BD
1731820544,1731821567,IN
-1731821568,1731822591,JP
1731822592,1731823615,IN
1731823616,1731824639,CN
1731824640,1731825663,IN
@@ -40422,12 +40713,12 @@
1731896320,1731899391,IN
1731899392,1731900415,HK
1731900416,1731900671,IN
-1731900672,1731900927,HK
1731900928,1731901439,CN
1731901440,1731903487,IN
1731903488,1731905535,AU
1731905536,1731908607,IN
-1731908608,1731911679,AU
+1731908608,1731909631,NZ
+1731909632,1731911679,AU
1731911680,1731912703,KH
1731912704,1731913727,NZ
1731913728,1731913983,AU
@@ -40441,7 +40732,7 @@
1731940352,1731942655,IN
1731942656,1731942911,JP
1731942912,1731943423,HK
-1731943424,1731944447,KR
+1731943424,1731944447,CH
1731944448,1731945471,IN
1731945472,1731946495,CN
1731946496,1731947519,IN
@@ -40468,7 +40759,9 @@
1731979776,1731980287,ID
1731980288,1731986431,IN
1731986432,1731987455,JP
-1731987456,1731988479,SG
+1731987456,1731987711,SG
+1731987712,1731987967,ID
+1731987968,1731988479,SG
1731988480,1731989503,JP
1731989504,1731990527,VN
1731990528,1731990783,AU
@@ -40530,7 +40823,6 @@
1732051968,1732052991,SG
1732052992,1732054015,MM
1732054016,1732055039,IN
-1732055040,1732056063,ID
1732056064,1732057087,HK
1732057088,1732058111,KH
1732058112,1732059135,HK
@@ -40644,7 +40936,177 @@
1732241664,1732241919,ID
1732241920,1732242431,BD
1732242432,1732243455,HK
-1732243456,1732247551,CN
+1732243456,1732249599,CN
+1732249600,1732250623,SG
+1732250624,1732251135,MY
+1732251136,1732251647,ID
+1732251648,1732252671,SG
+1732252672,1732253695,MM
+1732253696,1732280319,CN
+1732280320,1732281343,IN
+1732281344,1732282367,JP
+1732282368,1732283391,HK
+1732283392,1732285439,CN
+1732285440,1732286463,AU
+1732286464,1732318207,CN
+1732318208,1732318719,IN
+1732318720,1732318975,AU
+1732318976,1732322303,IN
+1732322304,1732324351,CN
+1732324352,1732325375,JP
+1732325376,1732337663,CN
+1732337664,1732338175,ID
+1732338176,1732338687,HK
+1732338688,1732348927,CN
+1732348928,1732349951,IN
+1732349952,1732358143,CN
+1732358144,1732359167,MY
+1732359168,1732360191,HK
+1732360192,1732361215,PH
+1732361216,1732362239,MY
+1732362240,1732364287,IN
+1732364288,1732364799,NP
+1732364800,1732365311,IN
+1732365312,1732366335,GB
+1732366336,1732367359,JP
+1732367360,1732368383,ID
+1732368384,1732369407,HK
+1732369408,1732370431,BS
+1732370432,1732371455,US
+1732371456,1732372479,IN
+1732372480,1732372991,AU
+1732372992,1732373503,IN
+1732373504,1732374271,ID
+1732374272,1732374527,NZ
+1732374528,1732375551,US
+1732375552,1732376575,AU
+1732376576,1732377599,US
+1732377600,1732377855,NZ
+1732377856,1732378623,AU
+1732378624,1732384767,IN
+1732384768,1732385279,BD
+1732385280,1732385791,AU
+1732385792,1732386815,US
+1732386816,1732387839,CN
+1732387840,1732388095,HK
+1732388096,1732388351,AU
+1732388352,1732388607,IN
+1732388608,1732388863,AU
+1732388864,1732389887,CN
+1732389888,1732390911,ID
+1732390912,1732391935,IN
+1732391936,1732392447,AU
+1732392448,1732392703,IN
+1732392704,1732392959,ID
+1732392960,1732393983,HK
+1732393984,1732395007,SG
+1732395008,1732396031,BD
+1732396032,1732397055,ID
+1732397056,1732400639,IN
+1732400640,1732400895,ID
+1732400896,1732401151,IN
+1732401152,1732402175,PH
+1732402176,1732403199,CN
+1732403200,1732404223,IN
+1732404224,1732405247,HK
+1732405248,1732406271,IN
+1732406272,1732407295,CN
+1732407296,1732410367,IN
+1732410368,1732411391,NZ
+1732411392,1732412415,TH
+1732412416,1732413439,AU
+1732413440,1732417535,IN
+1732417536,1732418559,VN
+1732418560,1732422143,IN
+1732422144,1732422399,AU
+1732422400,1732422655,JP
+1732422656,1732423679,IN
+1732423680,1732424703,BD
+1732424704,1732425727,HK
+1732425728,1732426751,KH
+1732426752,1732428799,KR
+1732428800,1732429823,ID
+1732429824,1732430847,CN
+1732430848,1732433919,IN
+1732433920,1732434943,HK
+1732434944,1732435199,AU
+1732435200,1732435455,IN
+1732435456,1732435967,PH
+1732435968,1732440063,IN
+1732440064,1732447231,CN
+1732447232,1732449279,IN
+1732449280,1732450303,LA
+1732450304,1732450815,AU
+1732450816,1732451071,MV
+1732451072,1732451327,IN
+1732451328,1732452351,JP
+1732452352,1732452863,US
+1732452864,1732453375,IN
+1732453376,1732454399,MY
+1732454400,1732483071,CN
+1732483072,1732483839,IN
+1732483840,1732484095,AU
+1732484096,1732485119,BD
+1732485120,1732486143,IN
+1732486144,1732486399,AU
+1732486400,1732486655,PH
+1732486656,1732486911,SG
+1732486912,1732487167,AU
+1732487168,1732488191,SG
+1732488192,1732489215,CN
+1732489216,1732489471,ID
+1732489472,1732489727,AU
+1732489728,1732493311,IN
+1732493312,1732494335,CN
+1732494336,1732495359,BD
+1732495360,1732496383,US
+1732496384,1732497407,TW
+1732497408,1732498431,KH
+1732498432,1732499455,CN
+1732499456,1732499711,ID
+1732499712,1732499967,IN
+1732499968,1732500479,ID
+1732500480,1732501503,JP
+1732501504,1732502527,HK
+1732502528,1732503551,PH
+1732503552,1732504063,IN
+1732504064,1732504575,AU
+1732504576,1732505599,IN
+1732505600,1732506623,ID
+1732506624,1732507647,IN
+1732507648,1732507902,AU
+1732507903,1732507903,PH
+1732507904,1732508671,AU
+1732508672,1732509695,HK
+1732509696,1732510719,ID
+1732510720,1732511743,BD
+1732511744,1732512767,IN
+1732512768,1732513791,JP
+1732513792,1732524543,IN
+1732524544,1732525055,NZ
+1732525056,1732526079,HK
+1732526080,1732527103,CN
+1732527104,1732531199,VN
+1732531200,1732532223,IN
+1732532224,1732533247,CN
+1732533248,1732533759,AU
+1732533760,1732534015,SG
+1732534016,1732534271,IN
+1732534272,1732535295,KR
+1732535296,1732536319,CN
+1732536320,1732536575,BD
+1732536576,1732536831,IN
+1732536832,1732537087,AU
+1732537088,1732537343,MN
+1732537344,1732538367,BZ
+1732538368,1732539391,IN
+1732539392,1732540415,BD
+1732540416,1732541439,US
+1732541440,1732541695,AU
+1732541696,1732542463,SG
+1732542464,1732543487,CN
+1732543488,1732544511,SG
+1732544512,1732545023,ID
1740636160,1740644351,CN
1740644352,1740645375,IN
1740645376,1740647423,HK
@@ -40690,7 +41152,7 @@
1740698624,1740700671,IN
1740700672,1740701695,CN
1740701696,1740702719,IN
-1740702720,1740703743,MX
+1740702720,1740703743,SG
1740703744,1740704255,NZ
1740704256,1740704767,AU
1740704768,1740705791,JP
@@ -41218,7 +41680,8 @@
1741508864,1741509119,SG
1741509120,1741509375,ID
1741509376,1741509631,IN
-1741509632,1741511679,JP
+1741509632,1741509887,US
+1741509888,1741511679,JP
1741511680,1741512703,IN
1741512704,1741515775,VN
1741515776,1741516799,CN
@@ -41366,8 +41829,7 @@
1741706240,1741706751,SG
1741706752,1741707263,NZ
1741707264,1741708287,IN
-1741708288,1741708543,AU
-1741708544,1741708799,US
+1741708288,1741708799,AU
1741708800,1741709311,ID
1741709312,1741710335,JP
1741710336,1741711359,ID
@@ -41475,7 +41937,9 @@
1741816832,1741817855,PK
1741817856,1741818367,PH
1741818368,1741818879,AU
-1741818880,1741819903,PK
+1741818880,1741819135,US
+1741819136,1741819391,PK
+1741819392,1741819903,US
1741819904,1741820927,BD
1741820928,1741821951,PH
1741821952,1741822975,AU
@@ -41548,11 +42012,12 @@
1741900800,1741902335,IN
1741902336,1741902847,ID
1741902848,1741904895,IN
-1741904896,1741905919,HK
+1741904896,1741905135,HK
+1741905136,1741905143,VN
+1741905144,1741905919,HK
1741905920,1741907967,CN
1741907968,1741911039,IN
-1741911040,1741911551,JP
-1741911552,1741912063,SG
+1741911040,1741912063,SG
1741912064,1741913087,NZ
1741913088,1741914111,HK
1741914112,1741917183,IN
@@ -41689,7 +42154,7 @@
1742088192,1742088447,IN
1742088448,1742088703,HK
1742088704,1742089215,AU
-1742089216,1742089727,SG
+1742089216,1742089727,IN
1742089728,1742090239,GB
1742090240,1742091263,CN
1742091264,1742092287,ID
@@ -41707,7 +42172,7 @@
1742103040,1742103295,AU
1742103296,1742104575,ID
1742104576,1742105599,NZ
-1742105600,1742106623,SG
+1742105600,1742106623,US
1742106624,1742107135,ID
1742107136,1742108671,IN
1742108672,1742109183,ID
@@ -41892,8 +42357,7 @@
1742411264,1742411775,GB
1742411776,1742415871,CN
1742415872,1742419967,IN
-1742419968,1742420479,HK
-1742420480,1742420991,US
+1742419968,1742420991,HK
1742420992,1742421503,IN
1742421504,1742422015,AU
1742422016,1742423039,CN
@@ -41986,6 +42450,8 @@
1742607360,1742608383,BD
1742608384,1742662655,CN
1742662656,1742663167,MY
+1742663168,1742663423,SG
+1742663424,1742663679,ID
1742663680,1742665727,CN
1742665728,1742666751,TW
1742666752,1742667775,IN
@@ -41993,6 +42459,10 @@
1742668800,1742669823,VN
1742669824,1742671871,IN
1742671872,1742702591,CN
+1742702592,1742703615,AU
+1742703616,1742714879,CN
+1742714880,1742715903,AU
+1742715904,1742734335,CN
1742734336,1742735359,IN
1742735360,1742736383,JP
1742736384,1742737407,PK
@@ -42082,7 +42552,9 @@
1742823680,1742823935,IN
1742823936,1742824191,ID
1742824192,1742826495,IN
+1742826496,1742827519,HK
1742827520,1742828543,IN
+1742828544,1742829567,BS
1742829568,1742830591,JP
1742830592,1742833663,IN
1742833664,1742834687,PH
@@ -42182,6 +42654,7 @@
1742928896,1742929919,NZ
1742929920,1742930175,IN
1742930432,1742930943,PH
+1742930944,1742931967,GB
1742931968,1742932991,JP
1742932992,1742933503,SG
1742933504,1742933759,ID
@@ -42200,6 +42673,7 @@
1742947328,1742948351,IN
1742948352,1742951423,CN
1742951424,1742953471,HK
+1742953472,1742954495,US
1742954496,1742955519,IN
1742955520,1742956543,CN
1742956544,1742957567,HK
@@ -42218,6 +42692,8 @@
1742972928,1742973439,AU
1742973440,1742973951,NZ
1742973952,1742975999,SG
+1742976000,1742977023,AU
+1742977024,1742978047,US
1742978048,1742979071,JP
1742979072,1742980095,HK
1742980096,1742981119,CN
@@ -42239,6 +42715,7 @@
1742994432,1742995455,ID
1742995456,1742996479,BD
1742996480,1742997503,TH
+1742997504,1742998527,US
1742998528,1742999551,CN
1742999552,1742999807,AU
1742999808,1743000063,ID
@@ -42256,13 +42733,14 @@
1743013888,1743015935,IN
1743015936,1743016447,ID
1743016448,1743016703,HK
-1743016704,1743016959,IN
+1743016704,1743017983,IN
1743017984,1743019007,CN
1743019008,1743021055,HK
1743021056,1743021311,SG
1743021312,1743021567,NZ
1743021568,1743021823,PH
1743021824,1743022079,IN
+1743022080,1743023103,US
1743023104,1743024127,HK
1743024128,1743025151,IN
1743025152,1743026175,ID
@@ -42271,10 +42749,12 @@
1743028224,1743029247,CN
1743029504,1743029759,AU
1743029760,1743030271,BD
+1743030272,1743031295,CN
1743031296,1743035391,IN
1743035392,1743036415,PK
1743036416,1743037439,CN
1743037440,1743038463,AU
+1743038464,1743039487,HK
1743039488,1743040511,IN
1743040512,1743041535,CN
1743041536,1743042559,HK
@@ -42288,6 +42768,7 @@
1743049728,1743050751,AU
1743050752,1743051775,TW
1743051776,1743052799,IN
+1743052800,1743053823,BD
1743053824,1743055871,CN
1743055872,1743059199,ID
1743059200,1743059967,IN
@@ -42311,7 +42792,9 @@
1743073280,1743074047,AU
1743074048,1743074303,IN
1743075328,1743076351,MY
+1743076352,1743077375,CN
1743077376,1743078399,IN
+1743078400,1743079423,HK
1743079424,1743080959,ID
1743080960,1743081471,IN
1743081472,1743083519,BD
@@ -42389,15 +42872,14 @@
1743147776,1743148031,ID
1743148032,1743149055,IN
1743149056,1743150079,KR
-1743150080,1743151103,JP
1743151104,1743152127,CN
1743152128,1743152383,ID
1743152384,1743153151,IN
1743153152,1743154175,BD
1743154176,1743155199,HK
1743155200,1743156223,KR
+1743156224,1743157247,PH
1743157248,1743158271,HK
-1743159296,1743160319,JP
1743160320,1743161343,TH
1743161344,1743162367,HK
1743163392,1743166463,IN
@@ -42405,7 +42887,7 @@
1743167488,1743168511,HK
1743168512,1743169535,IN
1743169536,1743170559,JP
-1743171584,1743172607,AU
+1743170560,1743171583,AU
1743172608,1743173631,BD
1743173632,1743174655,AU
1743174656,1743175679,ID
@@ -42424,7 +42906,6 @@
1743192064,1743195135,IN
1743195136,1743196159,HK
1743196160,1743198207,CN
-1743198208,1743198719,JP
1743198720,1743198975,AU
1743198976,1743199231,SG
1743199232,1743200255,HK
@@ -42506,7 +42987,7 @@
1743279104,1743281151,HK
1743281152,1743283199,AU
1743283200,1743284223,BD
-1743285248,1743286271,NZ
+1743284224,1743286271,NZ
1743286272,1743287295,IN
1743287296,1743288319,AU
1743288320,1743289343,VN
@@ -42541,7 +43022,7 @@
1743319296,1743319551,IN
1743319552,1743320063,ID
1743320064,1743321087,IN
-1743322112,1743323135,AU
+1743321088,1743323135,AU
1743323136,1743324159,MY
1743324160,1743325183,CN
1743325184,1743326207,HK
@@ -42551,6 +43032,7 @@
1743329280,1743330303,IN
1743330304,1743331327,AU
1743331328,1743333375,PH
+1743333376,1743334399,JP
1743334400,1743335423,CN
1743335424,1743336447,VN
1743336448,1743337471,CN
@@ -42593,6 +43075,7 @@
1743371264,1743372287,MO
1743372288,1743373311,TH
1743373312,1743374335,JP
+1743374336,1743375359,TH
1743375360,1743376383,MM
1743376384,1743377407,AU
1743378432,1743379455,IN
@@ -42723,7 +43206,8 @@
1743553536,1743554559,PK
1743554560,1743555583,HK
1743555584,1743557631,JP
-1743557632,1743558143,SG
+1743557632,1743557887,SG
+1743557888,1743558143,US
1743558144,1743558655,ID
1743558656,1743560703,IN
1743560704,1743561215,ID
@@ -42739,9 +43223,7 @@
1743571200,1743571455,ID
1743571456,1743571967,AU
1743571968,1743574015,IN
-1743574016,1743574527,AU
-1743574528,1743574783,US
-1743574784,1743575039,AU
+1743574016,1743575039,US
1743575040,1743576063,HK
1743576064,1743577087,CN
1743577088,1743578111,JP
@@ -42806,7 +43288,7 @@
1743682560,1743683583,MY
1743683584,1743683839,JP
1743683840,1743684095,AU
-1743684096,1743684351,JP
+1743684096,1743684351,HK
1743684352,1743684607,AU
1743684608,1743685631,CN
1743685632,1743686655,ID
@@ -42927,6 +43409,7 @@
1743826944,1743827967,MY
1743827968,1743828991,HK
1743828992,1743830015,NZ
+1743830016,1743831039,CN
1743831040,1743832063,IN
1743832064,1743834111,HK
1743834112,1743838207,IN
@@ -42988,7 +43471,9 @@
1743897600,1743899647,AU
1743899648,1743900671,ID
1743900672,1743901695,JP
-1743901696,1743902463,AU
+1743901696,1743901951,AU
+1743901952,1743902207,US
+1743902208,1743902463,AU
1743902464,1743902719,US
1743902720,1743903743,AU
1743903744,1743904767,CN
@@ -43075,6 +43560,7 @@
1743983616,1743984639,KR
1743984640,1743985663,HK
1743985664,1743990783,IN
+1743990784,1743991807,ID
1743991808,1743994879,IN
1743994880,1743995903,AU
1743995904,1743997951,IN
@@ -43147,6 +43633,7 @@
1744069632,1744070655,SG
1744070656,1744071679,JP
1744071680,1744072703,KR
+1744072704,1744073727,HK
1744073728,1744074751,CN
1744074752,1744076799,IN
1744076800,1744077823,AU
@@ -43168,6 +43655,7 @@
1744092160,1744092671,MY
1744092672,1744092927,IN
1744092928,1744093183,MY
+1744093184,1744094207,PH
1744094208,1744096255,AU
1744096256,1744097279,ID
1744097280,1744098303,JP
@@ -43261,6 +43749,7 @@
1744190464,1744191487,JP
1744191488,1744192511,IN
1744192512,1744193535,JP
+1744193536,1744194559,CN
1744194560,1744194815,ID
1744194816,1744195071,HK
1744195072,1744195327,SG
@@ -43275,7 +43764,9 @@
1744202240,1744202495,IN
1744202496,1744202751,ID
1744202752,1744203775,PK
-1744203776,1744204799,HK
+1744203776,1744204287,MY
+1744204288,1744204415,HK
+1744204416,1744204799,MY
1744204800,1744205823,ID
1744205824,1744207871,CN
1744207872,1744208127,AU
@@ -43295,6 +43786,7 @@
1744218112,1744218367,AU
1744218368,1744218623,ID
1744218624,1744219135,IN
+1744219136,1744220159,KR
1744220160,1744220927,HK
1744220928,1744221183,JP
1744221184,1744222207,NZ
@@ -43323,8 +43815,7 @@
1744239616,1744240639,JP
1744240640,1744241663,AU
1744241664,1744242687,IN
-1744242688,1744245503,ID
-1744245760,1744247807,ID
+1744242688,1744247807,ID
1744247808,1744248831,IN
1744248832,1744249855,ID
1744249856,1744250367,HK
@@ -43456,11 +43947,7 @@
1744378880,1744379903,KR
1744379904,1744380927,HK
1744380928,1744383999,IN
-1744384000,1744384000,AU
-1744384001,1744384031,GU
-1744384032,1744384039,AU
-1744384040,1744384047,GU
-1744384048,1744385023,AU
+1744384000,1744385023,AU
1744385024,1744386047,CN
1744386048,1744386303,BD
1744386304,1744386559,AU
@@ -43630,6 +44117,7 @@
1744573440,1744574463,ID
1744574464,1744575487,IN
1744575488,1744576511,CN
+1744576512,1744577535,PH
1744577536,1744578559,CN
1744578560,1744580607,IN
1744580864,1744581119,SG
@@ -43647,6 +44135,7 @@
1744590592,1744590847,AU
1744590848,1744591871,HK
1744591872,1744592895,IN
+1744592896,1744593919,CN
1744593920,1744594431,ID
1744594432,1744594943,AU
1744594944,1744595967,CN
@@ -43670,6 +44159,7 @@
1744610048,1744610303,ID
1744610304,1744612351,IN
1744612352,1744613375,CN
+1744613376,1744614399,PH
1744614400,1744615423,JP
1744615424,1744616447,IN
1744616448,1744616959,ID
@@ -43816,6 +44306,7 @@
1744758528,1744758783,NZ
1744758784,1744759807,PF
1744759808,1744762879,IN
+1744762880,1744763903,KR
1744763904,1744764927,HK
1744764928,1744765951,JP
1744765952,1744766975,PK
@@ -43836,19 +44327,19 @@
1744777216,1744778239,AU
1744778240,1744778751,ID
1744778752,1744779263,AU
-1744780288,1744781311,HK
+1744779264,1744781311,HK
1744781312,1744782335,JP
1744782336,1744783359,CN
1744783360,1744786431,IN
1744786432,1744787455,VN
1744787456,1744789503,CN
-1744789504,1744792575,IN
-1744793600,1744794623,IN
+1744789504,1744794623,IN
1744794624,1744795647,KH
1744795648,1744797183,ID
1744797184,1744797439,NP
1744797440,1744797695,HK
1744797696,1744798719,PK
+1744798720,1744799743,IN
1744799744,1744801791,CN
1744801792,1744802815,IN
1744802816,1744803839,PK
@@ -43934,16 +44425,14 @@
1747740160,1747740671,AU
1747740672,1747741183,JP
1747741184,1747741215,US
-1747741216,1747741279,IN
-1747741280,1747741311,US
+1747741216,1747741311,IN
1747741312,1747741343,AT
1747741344,1747741375,IE
1747741376,1747741407,NL
1747741408,1747741439,BR
1747741440,1747741471,AU
1747741472,1747741503,SG
-1747741504,1747741519,US
-1747741520,1747741551,IN
+1747741504,1747741551,IN
1747741552,1747741823,US
1747741824,1747741887,IE
1747741888,1747741919,CL
@@ -44048,8 +44537,8 @@
1747942912,1747943167,KR
1747943168,1747943423,US
1747943424,1747959807,NL
-1747959808,1747964927,US
-1747964928,1747965951,IN
+1747959808,1747964415,US
+1747964416,1747965951,IN
1747965952,1747966463,US
1747966464,1747966975,IE
1747966976,1749061631,US
@@ -44192,12 +44681,16 @@
1753486336,1753486591,IN
1753486592,1753487359,US
1753487360,1753487615,CH
-1753487616,1753489407,US
+1753487616,1753487679,US
+1753487680,1753487727,GB
+1753487728,1753489407,US
1753489408,1753489663,GB
1753489664,1753490175,US
1753490176,1753490431,AU
1753490432,1753490687,IL
-1753490688,1753494527,US
+1753490688,1753492799,US
+1753492800,1753492847,GB
+1753492848,1753494527,US
1753494528,1753494783,IL
1753494784,1753516543,US
1753516544,1753516799,ES
@@ -44205,7 +44698,9 @@
1753517568,1753517823,NO
1753517824,1753518591,US
1753518592,1753518847,JP
-1753518848,1753522431,US
+1753518848,1753520447,US
+1753520448,1753520495,GB
+1753520496,1753522431,US
1753522432,1753522687,FR
1753522688,1753526015,US
1753526016,1753526271,DE
@@ -44215,7 +44710,9 @@
1753529088,1753529343,NZ
1753529344,1753532415,US
1753532416,1753532671,JP
-1753532672,1753547007,US
+1753532672,1753538815,US
+1753538816,1753539071,PH
+1753539072,1753547007,US
1753547008,1753547263,DE
1753547264,1753735167,US
1753735168,1753743359,IE
@@ -44306,11 +44803,35 @@
1754406032,1754406063,IE
1754406064,1754406399,US
1754406400,1754406527,IE
-1754406528,1754445567,US
+1754406528,1754431487,US
+1754431488,1754433023,IE
+1754433024,1754434047,US
+1754434048,1754434559,HK
+1754434560,1754435583,US
+1754435584,1754436095,IE
+1754436096,1754436607,US
+1754436608,1754437119,NL
+1754437120,1754437631,US
+1754437632,1754438143,IE
+1754438144,1754440191,US
+1754440192,1754440703,NL
+1754440704,1754441727,AU
+1754441728,1754442751,US
+1754442752,1754443775,IN
+1754443776,1754444031,IE
+1754444032,1754444287,JP
+1754444288,1754444799,SG
+1754444800,1754445055,HK
+1754445056,1754445311,JP
+1754445312,1754445567,NL
1754445568,1754445823,CA
-1754445824,1754448127,US
+1754445824,1754446079,US
+1754446080,1754446335,IE
+1754446336,1754447871,US
+1754447872,1754448127,NL
1754448128,1754448383,CA
-1754448384,1754448895,US
+1754448384,1754448639,US
+1754448640,1754448895,GB
1754448896,1754449407,JP
1754449408,1754449919,SG
1754449920,1754451199,NL
@@ -44319,11 +44840,22 @@
1754453504,1754454271,IE
1754454272,1754455551,US
1754455552,1754456063,HK
-1754456064,1754457087,US
+1754456064,1754456319,US
+1754456320,1754456575,IE
+1754456576,1754456831,US
+1754456832,1754457087,NL
1754457088,1754457343,SG
-1754457344,1754461439,US
+1754457344,1754457855,US
+1754457856,1754458111,GB
+1754458112,1754458623,US
+1754458624,1754458879,NL
+1754458880,1754459903,US
+1754459904,1754460159,IE
+1754460160,1754461439,US
1754461440,1754461951,NL
-1754461952,1754792959,US
+1754461952,1754462719,US
+1754462720,1754463231,IE
+1754463232,1754792959,US
1754792960,1754793983,CA
1754793984,1754799103,US
1754799104,1754800127,CA
@@ -44581,7 +45113,9 @@
1757597696,1757599743,GB
1757599744,1757642751,US
1757642752,1757675519,CA
-1757675520,1757937663,US
+1757675520,1757916815,US
+1757916816,1757916816,AU
+1757916817,1757937663,US
1757937664,1757941759,CA
1757941760,1757957631,US
1757957632,1757957887,NL
@@ -44627,8 +45161,8 @@
1758543872,1758552063,AU
1758552064,1758609407,US
1758609408,1758625791,AU
-1758625792,1758691327,US
-1758691328,1758724095,IN
+1758625792,1758674943,US
+1758674944,1758724095,IN
1758724096,1758887935,US
1758887936,1758896127,JP
1758896128,1758904319,HK
@@ -45008,7 +45542,8 @@
1761501184,1761502207,VG
1761502208,1761507615,US
1761507616,1761507711,GB
-1761507712,1761515519,US
+1761507712,1761508351,US
+1761509376,1761515519,US
1761515520,1761517567,CA
1761517568,1761519615,US
1761519616,1761521663,PR
@@ -45284,7 +45819,8 @@
1805253632,1805253887,DE
1805253888,1805254143,US
1805254144,1805254399,DE
-1805254400,1805284863,US
+1805254400,1805254655,GB
+1805254656,1805284863,US
1805284864,1805285119,ES
1805285120,1805582335,US
1805582336,1805647871,CA
@@ -45332,7 +45868,9 @@
1807056896,1807057151,AU
1807057152,1807057663,US
1807057664,1807057919,GB
-1807057920,1807548415,US
+1807057920,1807058943,US
+1807058944,1807059199,GB
+1807059200,1807548415,US
1807548416,1807548927,LU
1807548928,1807597567,US
1807597568,1807646719,CA
@@ -46510,11 +47048,16 @@
1843822592,1843838975,RU
1843838976,1843840767,DE
1843840768,1843841023,SE
-1843841024,1843846911,DE
+1843841024,1843841279,IR
+1843841280,1843842047,DE
+1843842048,1843843071,IR
+1843843072,1843846911,DE
1843846912,1843847167,IR
-1843847168,1843853055,DE
-1843853056,1843853311,IR
-1843853312,1843855359,DE
+1843847168,1843852799,DE
+1843852800,1843853311,IR
+1843853312,1843854079,DE
+1843854080,1843854335,IR
+1843854336,1843855359,DE
1843855360,1843871743,PL
1843871744,1843888127,GB
1843888128,1843904511,CZ
@@ -46888,7 +47431,8 @@
1860733952,1860734975,AU
1860734976,1860735999,NZ
1860736000,1860737023,AU
-1860737024,1860743167,JP
+1860737024,1860739071,JP
+1860739072,1860743167,PH
1860743168,1860743423,HK
1860743424,1860743679,JP
1860743680,1860744191,AU
@@ -47012,8 +47556,7 @@
1876761184,1876761215,SG
1876761216,1876761599,JP
1876761600,1876761855,CN
-1876761856,1876762111,HK
-1876762112,1876762623,SG
+1876761856,1876762623,HK
1876762624,1876764671,KR
1876764672,1876765695,ID
1876765696,1876766719,SG
@@ -47038,6 +47581,7 @@
1876934656,1876942847,JP
1876942848,1876946943,AU
1876946944,1876947967,CN
+1876947968,1876948991,HK
1876948992,1876950015,CN
1876950016,1876951039,ID
1876951040,1877475327,CN
@@ -47065,6 +47609,7 @@
1883832320,1884028927,CN
1884028928,1884159999,KR
1884160000,1884164095,VN
+1884164096,1884168191,TW
1884168192,1884172287,ID
1884172288,1884176383,PH
1884176384,1884184575,TW
@@ -47104,9 +47649,7 @@
1887961088,1887993855,JP
1887993856,1888026623,KR
1888026624,1888030719,BD
-1888030720,1888030975,HK
-1888030976,1888031231,GB
-1888031232,1888034815,HK
+1888030720,1888034815,HK
1888034816,1888038911,JP
1888038912,1888040959,CN
1888040960,1888059391,JP
@@ -47305,7 +47848,10 @@
1909456896,1909473279,JP
1909473280,1909474303,HK
1909474304,1909475327,PH
-1909475328,1909481471,HK
+1909475328,1909479423,HK
+1909479424,1909480447,SG
+1909480448,1909480703,HK
+1909480704,1909481471,SG
1909481472,1909587967,CN
1909587968,1909719039,MY
1909719040,1909735423,CN
@@ -47426,9 +47972,7 @@
1921388544,1921391615,IN
1921391616,1921400831,JP
1921400832,1921404927,ID
-1921404928,1921406463,HK
-1921406464,1921406719,GB
-1921406720,1921406975,HK
+1921404928,1921406975,HK
1921406976,1921409023,BD
1921409024,1921425407,JP
1921425408,1921431551,NZ
@@ -47563,10 +48107,7 @@
1937516544,1937518591,IN
1937518592,1937522687,JP
1937522688,1937530879,ID
-1937530880,1937534463,IN
-1937534464,1937534975,GB
-1937534976,1937535999,IN
-1937536000,1937536511,GB
+1937530880,1937536511,IN
1937536512,1937537023,US
1937537024,1937539071,IN
1937539072,1937637375,JP
@@ -47648,8 +48189,7 @@
1946173440,1946173567,PG
1946173568,1946173599,HK
1946173600,1946173695,PG
-1946173696,1946173951,TW
-1946173952,1946174463,SG
+1946173696,1946174463,SG
1946174464,1946174727,TW
1946174728,1946175487,SG
1946175488,1946175615,HK
@@ -47773,7 +48313,18 @@
1952112640,1952116735,NP
1952116736,1952120831,IN
1952120832,1952186367,JP
-1952186368,1952251903,HK
+1952186368,1952187135,HK
+1952187136,1952188927,JP
+1952188928,1952189183,HK
+1952189184,1952189951,JP
+1952189952,1952190207,HK
+1952190208,1952196095,JP
+1952196096,1952196351,HK
+1952196352,1952219135,JP
+1952219136,1952220671,HK
+1952220672,1952233471,JP
+1952233472,1952249855,HK
+1952249856,1952251903,JP
1952251904,1952284671,PH
1952284672,1952288767,NZ
1952288768,1952292863,JP
@@ -47861,12 +48412,10 @@
1960187904,1960189951,IN
1960189952,1960202239,CN
1960202240,1960206335,JP
-1960206336,1960210431,SG
-1960210432,1960210943,TH
+1960206336,1960210687,SG
+1960210688,1960210943,TH
1960210944,1960211199,IN
-1960211200,1960211455,SG
-1960211456,1960211903,AU
-1960211904,1960211967,SG
+1960211200,1960211967,SG
1960211968,1960212479,AU
1960212480,1960212582,IN
1960212583,1960212583,SG
@@ -48014,7 +48563,9 @@
1969797120,1969797631,SG
1969797632,1969798143,BD
1969798144,1969798399,CN
-1969798400,1969799167,HK
+1969798400,1969798655,HK
+1969798656,1969798911,KR
+1969798912,1969799167,HK
1969799168,1969807359,ID
1969807360,1969809407,AF
1969809408,1969811455,IN
@@ -48040,13 +48591,7 @@
1970915328,1970917375,ID
1970917376,1970921471,TH
1970921472,1970925567,NP
-1970925568,1970925823,MY
-1970925824,1970926079,SG
-1970926080,1970926335,AU
-1970926336,1970926591,US
-1970926592,1970926847,SG
-1970926848,1970927103,FR
-1970927104,1970927359,SG
+1970925568,1970927359,SG
1970927360,1970927615,US
1970927616,1970929663,AU
1970929664,1970962431,VN
@@ -48331,69 +48876,43 @@
2001829888,2001841247,HK
2001841248,2001841248,SA
2001841249,2001846271,HK
-2001846272,2001855119,SG
-2001855120,2001855135,US
-2001855136,2001855231,SG
-2001855232,2001855263,US
-2001855264,2001855743,SG
+2001846272,2001855743,SG
2001855744,2001855999,HK
-2001856000,2001856127,SG
-2001856128,2001856151,CZ
-2001856152,2001856155,SG
-2001856156,2001856159,CZ
-2001856160,2001856191,SG
-2001856192,2001856199,CZ
-2001856200,2001857279,SG
+2001856000,2001857279,SG
2001857280,2001857535,HK
2001857536,2001857791,SG
2001857792,2001858047,HK
-2001858048,2001858319,SG
-2001858320,2001858367,US
-2001858368,2001858639,SG
-2001858640,2001858655,US
-2001858656,2001859071,SG
+2001858048,2001859071,SG
2001859072,2001859327,HK
-2001859328,2001860143,SG
-2001860144,2001860159,US
-2001860160,2001860263,SG
-2001860264,2001860271,US
-2001860272,2001860351,SG
+2001859328,2001860351,SG
2001860352,2001860607,HK
-2001860608,2001860655,SG
-2001860656,2001860659,US
+2001860608,2001860659,SG
2001860660,2001860661,HK
-2001860662,2001860664,US
+2001860662,2001860664,SG
2001860665,2001860665,HK
-2001860666,2001860667,US
+2001860666,2001860667,SG
2001860668,2001860668,HK
-2001860669,2001860671,US
-2001860672,2001860991,SG
-2001860992,2001860995,US
+2001860669,2001860995,SG
2001860996,2001860997,HK
-2001860998,2001861001,US
+2001860998,2001861001,SG
2001861002,2001861003,HK
-2001861004,2001861007,US
-2001861008,2001861263,SG
-2001861264,2001861265,US
+2001861004,2001861265,SG
2001861266,2001861267,HK
-2001861268,2001861268,US
+2001861268,2001861268,SG
2001861269,2001861269,HK
-2001861270,2001861271,US
+2001861270,2001861271,SG
2001861272,2001861272,HK
-2001861273,2001861273,US
+2001861273,2001861273,SG
2001861274,2001861274,HK
-2001861275,2001861279,US
-2001861280,2001862079,SG
-2001862080,2001862101,US
+2001861275,2001862101,SG
2001862102,2001862102,HK
-2001862103,2001862116,US
+2001862103,2001862116,SG
2001862117,2001862118,HK
-2001862119,2001862124,US
+2001862119,2001862124,SG
2001862125,2001862125,HK
-2001862126,2001862128,US
+2001862126,2001862128,SG
2001862129,2001862131,HK
-2001862132,2001862143,US
-2001862144,2001862655,SG
+2001862132,2001862655,SG
2001862656,2001864703,AU
2001864704,2001870847,JP
2001870848,2001879039,KR
@@ -48554,13 +49073,7 @@
2022180864,2022182911,JP
2022182912,2022184959,CN
2022184960,2022187007,KH
-2022187008,2022187951,HK
-2022187952,2022187959,US
-2022187960,2022188103,HK
-2022188104,2022188111,US
-2022188112,2022190335,HK
-2022190336,2022190591,US
-2022190592,2022191103,HK
+2022187008,2022191103,HK
2022191104,2022194175,NZ
2022194176,2022194687,AU
2022194688,2022195199,NZ
@@ -48756,7 +49269,8 @@
2050084864,2050088959,PH
2050088960,2050091007,ID
2050091008,2050097151,JP
-2050097152,2050101247,SG
+2050097664,2050097919,SG
+2050099200,2050101247,SG
2050101248,2050129919,JP
2050129920,2050162687,IN
2050162688,2050228223,CN
@@ -48835,13 +49349,9 @@
2056794112,2056796159,BD
2056796160,2056806399,JP
2056806400,2056814591,KR
-2056814592,2056815215,JP
-2056815216,2056815231,HK
-2056815232,2056816863,JP
+2056814592,2056816863,JP
2056816864,2056816895,MY
-2056816896,2056817335,JP
-2056817336,2056817343,HK
-2056817344,2056817727,JP
+2056816896,2056817727,JP
2056817728,2056817791,AU
2056817792,2056823849,JP
2056823850,2056823850,SG
@@ -49187,8 +49697,7 @@
2087453696,2087454719,KH
2087454720,2087456767,CN
2087456768,2087457791,IN
-2087457792,2087458047,RU
-2087458048,2087458815,HK
+2087457792,2087458815,HK
2087458816,2087460863,FJ
2087460864,2087462911,JP
2087462912,2087464959,CN
@@ -49229,6 +49738,7 @@
2090074112,2090237951,AU
2090237952,2090239999,TW
2090240000,2090240255,IN
+2090240256,2090240511,CN
2090240512,2090241023,NZ
2090241024,2090242047,MY
2090242048,2090246143,JP
@@ -49414,9 +49924,7 @@
2113693888,2113694175,JP
2113694176,2113694191,HK
2113694192,2113716223,JP
-2113716224,2113724927,SG
-2113724928,2113725183,IN
-2113725184,2113728511,SG
+2113716224,2113728511,SG
2113728512,2113732607,JP
2113732608,2113761279,AU
2113761280,2113765375,VN
@@ -49682,9 +50190,7 @@
2168651776,2168717311,GB
2168717312,2168782847,US
2168782848,2168913919,DE
-2168913920,2169235967,US
-2169235968,2169236031,NL
-2169236032,2169372671,US
+2168913920,2169372671,US
2169372672,2169438207,AU
2169438208,2170028031,US
2170028032,2170093567,FR
@@ -49904,7 +50410,9 @@
2188754432,2188754687,RU
2188754688,2188763647,US
2188763648,2188763903,IT
-2188763904,2188902399,US
+2188763904,2188901753,US
+2188901754,2188901754,GB
+2188901755,2188902399,US
2188902400,2188967935,FR
2188967936,2189099007,US
2189099008,2189164543,NZ
@@ -49953,7 +50461,9 @@
2193201152,2193202175,SE
2193202176,2193203199,US
2193203200,2193205247,GB
-2193205248,2193206271,FR
+2193205248,2193205759,FR
+2193205760,2193206015,US
+2193206016,2193206271,FR
2193206272,2193207295,MX
2193207296,2193208831,CZ
2193208832,2193209343,US
@@ -50059,7 +50569,8 @@
2197798912,2197815295,IR
2197815296,2197816319,BO
2197816320,2197828607,BR
-2197828608,2197829631,AR
+2197828608,2197829119,CL
+2197829120,2197829631,AR
2197829632,2197833727,BR
2197833728,2197834751,CR
2197834752,2197841919,BR
@@ -50217,7 +50728,9 @@
2207694592,2207711231,CA
2207711232,2207776767,US
2207776768,2207842303,CH
-2207842304,2207907839,US
+2207842304,2207847423,US
+2207847424,2207847679,NL
+2207847680,2207907839,US
2207907840,2207973375,IT
2207973376,2208038911,NL
2208038912,2208235519,US
@@ -50340,7 +50853,24 @@
2214068224,2214133759,JP
2214133760,2214264831,US
2214264832,2214330367,GB
-2214330368,2214428671,US
+2214330368,2214399047,US
+2214399048,2214399055,IE
+2214399056,2214399071,US
+2214399072,2214399135,SG
+2214399136,2214399295,US
+2214399296,2214399303,SG
+2214399304,2214399887,US
+2214399888,2214399903,IE
+2214399904,2214404607,US
+2214404608,2214404735,SG
+2214404736,2214405055,US
+2214405056,2214405119,HK
+2214405120,2214405375,US
+2214405376,2214405631,IE
+2214405632,2214405735,US
+2214405736,2214405743,IE
+2214405744,2214405751,SG
+2214405752,2214428671,US
2214428672,2214428927,IN
2214428928,2214429375,US
2214429376,2214429439,NL
@@ -50370,7 +50900,9 @@
2214460448,2214461439,US
2214461440,2214526975,FR
2214526976,2214527999,BR
-2214528000,2214529023,AR
+2214528000,2214528333,AR
+2214528334,2214528334,NL
+2214528335,2214529023,AR
2214529024,2214530047,BR
2214530048,2214531071,AR
2214531072,2214537215,BR
@@ -50399,7 +50931,7 @@
2224422912,2224488447,NO
2224488448,2224619519,US
2224619520,2224685055,GB
-2224685056,2224750591,US
+2224685056,2224750591,SG
2224750592,2224816127,FI
2224816128,2224881663,CA
2224881664,2224947199,PE
@@ -50549,20 +51081,17 @@
2230672576,2230681599,US
2230681600,2230682247,HK
2230682248,2230682343,JP
-2230682344,2230682351,HK
+2230682344,2230682351,US
2230682352,2230682383,JP
-2230682384,2230682415,HK
+2230682384,2230682415,US
2230682416,2230682431,JP
-2230682432,2230682511,HK
+2230682432,2230682511,US
2230682512,2230682543,JP
-2230682544,2230682607,US
-2230682608,2230685695,HK
+2230682544,2230685695,US
2230685696,2230685727,AT
2230685728,2230685855,JP
-2230685856,2230685903,HK
-2230685904,2230685935,US
-2230685936,2230687743,HK
-2230687744,2230688255,US
+2230685856,2230685871,HK
+2230685872,2230688255,US
2230688256,2230688767,SG
2230688768,2230689791,BR
2230689792,2230689999,SG
@@ -50585,11 +51114,12 @@
2230693920,2230694063,US
2230694064,2230694095,NL
2230694096,2230697983,US
-2230697984,2230698903,NL
+2230697984,2230698735,NL
+2230698736,2230698903,US
2230698904,2230698999,FI
-2230699000,2230699007,NL
+2230699000,2230699007,US
2230699008,2230699039,FI
-2230699040,2230702079,NL
+2230699040,2230702079,US
2230702080,2230707199,IE
2230707200,2230707711,NL
2230707712,2230710303,US
@@ -50610,8 +51140,8 @@
2230711072,2230711167,US
2230711168,2230711615,IN
2230711616,2230711631,US
-2230711632,2230711695,IN
-2230711696,2230711903,US
+2230711632,2230711727,IN
+2230711728,2230711903,US
2230711904,2230711935,IE
2230711936,2230712007,US
2230712008,2230712183,BR
@@ -50655,7 +51185,9 @@
2231333888,2231335935,BR
2231335936,2231336959,MX
2231336960,2231337983,BR
-2231337984,2231338695,HN
+2231337984,2231338639,HN
+2231338640,2231338647,US
+2231338648,2231338695,HN
2231338696,2231338703,US
2231338704,2231339007,HN
2231339008,2231346175,BR
@@ -51175,7 +51707,9 @@
2296840192,2296905727,NL
2296905728,2297167871,US
2297167872,2297233407,AU
-2297233408,2297298943,US
+2297233408,2297237503,US
+2297237504,2297237759,BE
+2297237760,2297298943,US
2297298944,2297364479,CH
2297364480,2297626623,US
2297626624,2297661437,DE
@@ -51206,7 +51740,9 @@
2302349312,2302351359,HK
2302351360,2302357503,VN
2302357504,2302358527,BD
-2302358528,2302365695,IN
+2302358528,2302360319,IN
+2302360320,2302360575,CN
+2302360576,2302365695,IN
2302365696,2302366719,HK
2302366720,2302367743,IN
2302367744,2302368767,CN
@@ -51431,7 +51967,9 @@
2317638656,2317639679,HN
2317639680,2317640703,AR
2317640704,2317649919,BR
-2317649920,2317650943,HN
+2317649920,2317649991,HN
+2317649992,2317649999,US
+2317650000,2317650943,HN
2317650944,2317651967,BR
2317651968,2317652991,PE
2317652992,2317654015,AR
@@ -51454,7 +51992,9 @@
2318598144,2318663679,CA
2318663680,2319122431,US
2319122432,2319123455,AR
-2319123456,2319124479,HN
+2319123456,2319123999,HN
+2319124000,2319124007,US
+2319124008,2319124479,HN
2319124480,2319125503,VE
2319125504,2319126527,UY
2319126528,2319127551,CR
@@ -51553,7 +52093,9 @@
2321743872,2321744895,SV
2321744896,2321745919,AR
2321745920,2321753087,BR
-2321753088,2321753927,HN
+2321753088,2321753599,HN
+2321753600,2321753607,NL
+2321753608,2321753927,HN
2321753928,2321753935,NL
2321753936,2321754111,HN
2321754112,2321755135,BR
@@ -51785,7 +52327,9 @@
2327472128,2327476223,BR
2327476224,2327477247,CL
2327477248,2327480319,BR
-2327480320,2327481343,HN
+2327480320,2327481055,HN
+2327481056,2327481071,US
+2327481072,2327481343,HN
2327481344,2327482367,AR
2327482368,2327483391,BR
2327483392,2327485439,AR
@@ -51835,8 +52379,7 @@
2328680448,2328681471,AR
2328681472,2328683519,BR
2328683520,2328684543,CL
-2328684544,2328685567,BR
-2328685568,2328686079,VE
+2328684544,2328686079,BR
2328686080,2328686335,CO
2328686336,2328686591,VE
2328686592,2328687615,BR
@@ -51970,8 +52513,7 @@
2332404736,2332405759,AU
2332405760,2332406783,MY
2332406784,2332407807,HK
-2332407808,2332408063,AU
-2332408064,2332408831,US
+2332407808,2332408831,US
2332408832,2332409855,BD
2332409856,2332410879,CN
2332410880,2332411903,IN
@@ -52004,7 +52546,9 @@
2335899648,2335932415,IN
2335932416,2335940607,DE
2335940608,2335948799,GB
-2335948800,2335965183,SG
+2335948800,2335952895,SG
+2335952896,2335954943,DE
+2335954944,2335965183,SG
2335965184,2336161791,US
2336161792,2336227327,NL
2336292864,2336358399,US
@@ -52225,9 +52769,7 @@
2365590528,2365590671,NO
2365590672,2365590672,FR
2365590673,2365591039,NO
-2365591040,2365591098,GB
-2365591099,2365591099,US
-2365591100,2365591295,GB
+2365591040,2365591295,US
2365591296,2365591551,NO
2365591552,2365593599,DE
2365593600,2365595647,NL
@@ -52487,62 +53029,7 @@
2381709312,2381905919,US
2381905920,2381971455,CH
2381971456,2382036991,IT
-2382036992,2382066943,US
-2382066944,2382067007,IE
-2382067008,2382067199,US
-2382067200,2382067263,IE
-2382067264,2382067455,US
-2382067456,2382067519,IE
-2382067520,2382067711,US
-2382067712,2382067775,IE
-2382067776,2382067967,US
-2382067968,2382068031,IE
-2382068032,2382068223,US
-2382068224,2382068287,IE
-2382068288,2382068479,US
-2382068480,2382068543,IE
-2382068544,2382068735,US
-2382068736,2382068799,IE
-2382068800,2382068991,US
-2382068992,2382069055,IE
-2382069056,2382077247,US
-2382077248,2382077311,NL
-2382077312,2382084799,US
-2382084800,2382084863,IE
-2382084864,2382085055,US
-2382085056,2382085119,IE
-2382085120,2382085247,US
-2382085248,2382085311,AT
-2382085312,2382085375,IE
-2382085376,2382085567,US
-2382085568,2382085631,IE
-2382085632,2382085823,US
-2382085824,2382085887,IE
-2382085888,2382086079,US
-2382086080,2382086143,IE
-2382086144,2382086335,US
-2382086336,2382086399,IE
-2382086400,2382086591,US
-2382086592,2382086655,IE
-2382086656,2382086847,US
-2382086848,2382086911,IE
-2382086912,2382087103,US
-2382087104,2382087167,IE
-2382087168,2382087423,US
-2382087424,2382087487,SG
-2382087488,2382087551,HK
-2382087552,2382087615,SG
-2382087616,2382087679,HK
-2382087680,2382088959,SG
-2382088960,2382093567,US
-2382093568,2382093823,SG
-2382093824,2382099455,US
-2382099456,2382099583,SG
-2382099584,2382099647,US
-2382099648,2382099711,HK
-2382099712,2382102015,US
-2382102016,2382102079,IE
-2382102080,2382102527,US
+2382036992,2382102527,US
2382102528,2382168063,NL
2382168064,2382233599,BE
2382233600,2382299135,US
@@ -52774,7 +53261,121 @@
2408182784,2408183807,AR
2408183808,2408185855,BR
2408185856,2409562111,US
-2409562112,2409627647,GB
+2409562112,2409563135,GB
+2409563136,2409563391,US
+2409563392,2409563647,GB
+2409563648,2409563903,US
+2409563904,2409564415,GB
+2409564416,2409564671,US
+2409564672,2409564927,GB
+2409564928,2409565183,US
+2409565184,2409565439,GB
+2409565440,2409565695,US
+2409565696,2409565951,GB
+2409565952,2409568511,US
+2409568512,2409569023,GB
+2409569024,2409569791,US
+2409569792,2409570303,GB
+2409570304,2409571071,US
+2409571072,2409571327,GB
+2409571328,2409571839,US
+2409571840,2409572095,GB
+2409572096,2409573119,US
+2409573120,2409573375,GB
+2409573376,2409574143,US
+2409574144,2409574911,GB
+2409574912,2409575679,US
+2409575680,2409576447,GB
+2409576448,2409576703,US
+2409576704,2409576959,GB
+2409576960,2409577471,US
+2409577472,2409578751,GB
+2409578752,2409579263,US
+2409579264,2409579775,GB
+2409579776,2409580031,US
+2409580032,2409580799,GB
+2409580800,2409581823,US
+2409581824,2409582079,GB
+2409582080,2409582335,US
+2409582336,2409582847,GB
+2409582848,2409583359,US
+2409583360,2409583871,GB
+2409583872,2409584127,US
+2409584128,2409584895,GB
+2409584896,2409585151,US
+2409585152,2409585919,GB
+2409585920,2409586175,US
+2409586176,2409586431,GB
+2409586432,2409586687,US
+2409586688,2409586943,GB
+2409586944,2409587199,US
+2409587200,2409587455,GB
+2409587456,2409587967,US
+2409587968,2409588479,GB
+2409588480,2409589247,US
+2409589248,2409590015,GB
+2409590016,2409590527,US
+2409590528,2409591039,GB
+2409591040,2409591807,US
+2409591808,2409592063,GB
+2409592064,2409592319,US
+2409592320,2409594367,GB
+2409594368,2409595391,US
+2409595392,2409595903,GB
+2409595904,2409597439,US
+2409597440,2409597695,GB
+2409597696,2409597951,US
+2409597952,2409598207,GB
+2409598208,2409598463,US
+2409598464,2409598719,GB
+2409598720,2409598975,US
+2409598976,2409599487,GB
+2409599488,2409600255,US
+2409600256,2409600511,GB
+2409600512,2409600767,US
+2409600768,2409601279,GB
+2409601280,2409601535,US
+2409601536,2409601791,GB
+2409601792,2409602047,US
+2409602048,2409602559,GB
+2409602560,2409602815,US
+2409602816,2409603583,GB
+2409603584,2409604095,US
+2409604096,2409604351,GB
+2409604352,2409604607,US
+2409604608,2409604863,GB
+2409604864,2409605631,US
+2409605632,2409606399,GB
+2409606400,2409608191,US
+2409608192,2409608959,GB
+2409608960,2409609727,US
+2409609728,2409610239,GB
+2409610240,2409611775,US
+2409611776,2409612031,GB
+2409612032,2409612543,US
+2409612544,2409612799,GB
+2409612800,2409613823,US
+2409613824,2409614079,GB
+2409614080,2409615103,US
+2409615104,2409615615,GB
+2409615616,2409616127,US
+2409616128,2409617151,GB
+2409617152,2409617663,US
+2409617664,2409618431,GB
+2409618432,2409619199,US
+2409619200,2409619711,GB
+2409619712,2409620991,US
+2409620992,2409621247,GB
+2409621248,2409621503,US
+2409621504,2409622015,GB
+2409622016,2409622271,US
+2409622272,2409623295,GB
+2409623296,2409624063,US
+2409624064,2409624319,GB
+2409624320,2409625855,US
+2409625856,2409626367,GB
+2409626368,2409627391,US
+2409627392,2409627647,GB
2409627648,2409693183,ZA
2409693184,2409758719,AT
2409758720,2409824255,US
@@ -52922,7 +53523,9 @@
2416377856,2416443391,CN
2416443392,2416705535,US
2416705536,2416771071,CN
-2416771072,2416967679,US
+2416771072,2416916479,US
+2416916480,2416916991,SG
+2416916992,2416967679,US
2416967680,2417033215,IN
2417033216,2417229823,US
2417229824,2417295359,ES
@@ -53943,7 +54546,8 @@
2493579264,2493644799,JP
2493644800,2493756415,US
2493756416,2493757439,CA
-2493757440,2494103551,US
+2493758976,2493759231,US
+2493759488,2494103551,US
2494103552,2494169087,FR
2494169088,2494562303,US
2494562304,2494627839,GB
@@ -54223,7 +54827,9 @@
2503917568,2503933951,BG
2503933952,2504180735,US
2504180736,2504180991,ES
-2504180992,2504472831,US
+2504180992,2504470527,US
+2504470528,2504472575,IT
+2504472576,2504472831,US
2504472832,2504473599,ES
2504473600,2504474623,US
2504474624,2504482815,HR
@@ -54514,9 +55120,7 @@
2516529280,2516529343,FR
2516529344,2516529375,BE
2516529376,2516531199,CH
-2516531200,2516531967,GB
-2516531968,2516532223,SA
-2516532224,2516533247,GB
+2516531200,2516533247,GB
2516533248,2516541439,CZ
2516541440,2516545535,GB
2516545536,2516547583,RU
@@ -54531,7 +55135,9 @@
2516566016,2516582399,IQ
2516582400,2516647935,CN
2516647936,2522812415,JP
-2522812416,2522816511,SG
+2522812416,2522813439,VN
+2522813440,2522814463,TH
+2522814464,2522816511,SG
2522816512,2523201535,JP
2523201536,2523267071,AU
2523267072,2523463679,US
@@ -54693,8 +55299,7 @@
2532474880,2532475903,NZ
2532475904,2532476927,KR
2532476928,2532477951,AU
-2532477952,2532478463,IN
-2532478464,2532478975,AE
+2532477952,2532478975,IN
2532478976,2532479999,KR
2532480000,2532481023,IN
2532481024,2532486143,CN
@@ -54711,7 +55316,13 @@
2532507648,2532573183,US
2532573184,2532638719,ES
2532638720,2533031935,US
-2533031936,2533097471,BE
+2533031936,2533032191,HK
+2533032192,2533032447,SG
+2533032448,2533032703,FR
+2533032704,2533032959,US
+2533032960,2533033215,BR
+2533033216,2533033471,NL
+2533033472,2533097471,BE
2533097472,2533228543,US
2533228544,2533294079,PL
2533294080,2533359615,CN
@@ -54804,7 +55415,9 @@
2538657136,2538657139,RO
2538657140,2538658347,FR
2538658348,2538658351,DE
-2538658352,2538658623,FR
+2538658352,2538658495,FR
+2538658496,2538658499,DE
+2538658500,2538658623,FR
2538658624,2538658655,NL
2538658656,2538663299,FR
2538663300,2538663303,IT
@@ -55089,13 +55702,32 @@
2572975616,2572975871,SE
2572975872,2572976127,NL
2572976128,2572984319,IS
-2572984320,2572989439,NL
+2572984320,2572984831,NL
+2572984832,2572985087,AT
+2572985088,2572985343,GB
+2572985344,2572985599,KR
+2572985600,2572985855,RU
+2572985856,2572986111,TR
+2572986112,2572986367,IE
+2572986368,2572986623,PL
+2572986624,2572986879,PT
+2572986880,2572989439,NL
2572989440,2572989695,GR
-2572989696,2572989951,US
+2572989696,2572989823,PL
+2572989824,2572989887,EE
+2572989888,2572989951,LV
2572989952,2572990463,NL
2572990464,2572990975,DE
2572990976,2572991487,NL
-2572991488,2572992511,US
+2572991488,2572991615,IT
+2572991616,2572991743,CH
+2572991744,2572991871,PT
+2572991872,2572991999,ES
+2572992000,2572992127,BE
+2572992128,2572992255,NL
+2572992256,2572992383,HU
+2572992384,2572992447,RS
+2572992448,2572992511,UA
2572992512,2573000703,BR
2573000704,2573008895,FR
2573008896,2573402111,DE
@@ -55123,8 +55755,8 @@
2583699456,2583707647,GA
2583707648,2583724031,AO
2583724032,2583728127,UG
-2583728128,2583730175,NG
-2583730176,2583732223,TZ
+2583728128,2583729919,NG
+2583729920,2583732223,TZ
2583732224,2583736319,ZA
2583736320,2583740415,GA
2583740416,2583756799,NA
@@ -55296,7 +55928,9 @@
2584782080,2584782335,TR
2584782336,2584789759,US
2584789760,2584790015,NL
-2584790016,2585001983,US
+2584790016,2584796671,US
+2584796672,2584796927,SG
+2584796928,2585001983,US
2585001984,2585067519,CA
2585067520,2585330440,US
2585330441,2585330442,SI
@@ -55433,7 +56067,17 @@
2587479121,2587481969,US
2587481970,2587481970,LB
2587481971,2587484159,US
-2587484160,2587492351,GB
+2587484160,2587484671,GB
+2587484672,2587484927,US
+2587484928,2587485183,GB
+2587485184,2587485695,US
+2587485696,2587486207,GB
+2587486208,2587486463,US
+2587486464,2587486719,GB
+2587486720,2587487231,US
+2587487232,2587487487,GB
+2587487488,2587487999,US
+2587488000,2587492351,GB
2587492352,2587493375,ES
2587493376,2587494399,US
2587494400,2587496447,ES
@@ -55686,6 +56330,7 @@
2601254912,2601287679,TZ
2601287680,2601304063,EG
2601304064,2601312255,CM
+2601312256,2601320447,GH
2601320448,2601451519,US
2601451520,2601517055,CA
2601517056,2602565631,US
@@ -55734,7 +56379,9 @@
2609184768,2609234431,PL
2609234432,2609234687,PT
2609234688,2609234943,PL
-2609234944,2609235967,US
+2609234944,2609235711,US
+2609235712,2609235839,SI
+2609235840,2609235967,HR
2609235968,2609242111,DE
2609242112,2609246207,PL
2609246208,2609246719,LU
@@ -55953,24 +56600,35 @@
2621177856,2621243391,US
2621243392,2621308927,GB
2621308928,2621374463,NZ
-2621374464,2621637631,US
-2621637632,2621652991,DE
+2621374464,2621636863,US
+2621636864,2621636991,CZ
+2621636992,2621637055,MD
+2621637056,2621637119,BG
+2621637120,2621637631,US
+2621637632,2621651967,DE
+2621651968,2621652991,ES
2621652992,2621669375,PL
2621669376,2621685759,DE
-2621685760,2621686015,CA
+2621685760,2621685887,NO
+2621685888,2621686015,DK
2621686016,2621686271,GB
2621686272,2621686527,AU
2621686528,2621686783,GB
2621686784,2621687039,AU
2621687040,2621687295,GB
-2621687296,2621687551,CA
+2621687296,2621687423,CZ
+2621687424,2621687551,PL
2621687552,2621687807,GB
-2621687808,2621688063,NZ
+2621687808,2621687935,AT
+2621687936,2621688063,IE
2621688064,2621688319,AU
-2621688320,2621688575,CA
+2621688320,2621688575,MX
2621688576,2621688831,AU
2621688832,2621689087,GB
-2621689088,2621689343,ES
+2621689088,2621689151,HU
+2621689152,2621689215,SK
+2621689216,2621689279,PL
+2621689280,2621689343,CZ
2621689344,2621689599,AU
2621689600,2621689855,CA
2621689856,2621702143,DE
@@ -56133,11 +56791,23 @@
2635726848,2635792383,CH
2635792384,2635988991,IT
2635988992,2636120063,US
-2636120064,2637168639,ID
+2636120064,2637168639,SG
2637168640,2637430783,IN
2637430784,2637438975,CA
2637438976,2637627391,US
-2637627392,2637629439,IE
+2637627392,2637627551,IE
+2637627552,2637627583,US
+2637627584,2637627871,IE
+2637627872,2637627903,US
+2637627904,2637628031,IE
+2637628032,2637628095,US
+2637628096,2637628927,IE
+2637628928,2637628959,US
+2637628960,2637629007,IE
+2637629008,2637629023,US
+2637629024,2637629311,IE
+2637629312,2637629375,US
+2637629376,2637629439,IE
2637629440,2637629599,NL
2637629600,2637629631,IE
2637629632,2637629663,NL
@@ -56147,13 +56817,17 @@
2637629952,2637630111,NL
2637630112,2637630119,IE
2637630120,2637630127,NL
-2637630128,2637630207,IE
+2637630128,2637630143,IE
+2637630144,2637630207,US
2637630208,2637630335,NL
-2637630336,2637630463,IE
+2637630336,2637630463,US
2637630464,2637630479,NL
2637630480,2637630495,IE
2637630496,2637630527,NL
-2637630528,2637631487,IE
+2637630528,2637630655,US
+2637630656,2637630783,IE
+2637630784,2637630847,US
+2637630848,2637631487,IE
2637631488,2637637631,US
2637637632,2637637887,NL
2637637888,2637638143,IE
@@ -56175,13 +56849,23 @@
2637639392,2637639423,IE
2637639424,2637639551,NL
2637639552,2637639679,IE
-2637639680,2637660159,US
-2637660160,2637660191,SG
-2637660192,2637679743,US
+2637639680,2637641535,US
+2637641536,2637641567,IE
+2637641568,2637641663,US
+2637641664,2637641671,IE
+2637641672,2637654591,US
+2637654592,2637654655,IE
+2637654656,2637654783,US
+2637654784,2637655039,IE
+2637655040,2637679743,US
2637679744,2637679871,IE
2637679872,2637684735,US
-2637684736,2637684991,IE
-2637684992,2637685183,NL
+2637684736,2637684831,IE
+2637684832,2637684863,NL
+2637684864,2637684991,IE
+2637684992,2637685143,NL
+2637685144,2637685151,US
+2637685152,2637685183,NL
2637685184,2637685215,IE
2637685216,2637685247,NL
2637685248,2637685631,IE
@@ -56191,15 +56875,23 @@
2637686016,2637686143,IE
2637686144,2637686271,NL
2637686272,2637686463,IE
-2637686464,2637686511,NL
+2637686464,2637686495,NL
+2637686496,2637686503,US
+2637686504,2637686511,NL
2637686512,2637686527,IE
-2637686528,2637686655,NL
+2637686528,2637686543,US
+2637686544,2637686551,NL
+2637686552,2637686559,US
+2637686560,2637686591,NL
+2637686592,2637686655,US
2637686656,2637686815,IE
-2637686816,2637686847,NL
+2637686816,2637686847,US
2637686848,2637686975,IE
-2637686976,2637687215,NL
+2637686976,2637687007,US
+2637687008,2637687215,NL
2637687216,2637688447,IE
-2637688448,2637688495,NL
+2637688448,2637688479,NL
+2637688480,2637688495,US
2637688496,2637688831,IE
2637688832,2637718527,US
2637718528,2637718559,SG
@@ -56242,7 +56934,10 @@
2640314368,2640379903,GB
2640379904,2640406527,NL
2640406528,2640408575,DE
-2640408576,2640445439,NL
+2640408576,2640410623,NL
+2640410624,2640411135,US
+2640411136,2640411391,MX
+2640411392,2640445439,NL
2640445440,2640510975,US
2640510976,2640576511,FR
2640576512,2640642047,EC
@@ -56290,7 +56985,9 @@
2641887232,2641928191,JP
2641928192,2641936383,SG
2641936384,2641944575,US
-2641944576,2641952767,JP
+2641944576,2641946625,JP
+2641946626,2641946626,HK
+2641946627,2641952767,JP
2641952768,2642018303,US
2642018304,2642083839,CN
2642083840,2642149375,US
@@ -56483,21 +57180,27 @@
2654994432,2655059967,LU
2655059968,2655125503,US
2655125504,2655191039,PL
-2655256576,2655323135,US
-2655323136,2655323647,CA
-2655323648,2655324671,US
-2655324672,2655324799,CA
-2655324800,2655325695,US
-2655325696,2655325823,CA
-2655325824,2655326207,US
-2655326208,2655326287,CA
+2655256576,2655322111,US
+2655322112,2655326287,CA
2655326288,2655326303,US
-2655326304,2655326463,CA
-2655326464,2655363071,US
-2655363072,2655363327,CA
-2655363328,2655373256,US
-2655373257,2655373257,CA
-2655373258,2655715327,US
+2655326304,2655326591,CA
+2655326592,2655326595,US
+2655326596,2655329371,CA
+2655329372,2655329375,US
+2655329376,2655332295,CA
+2655332296,2655332303,US
+2655332304,2655336703,CA
+2655336704,2655336959,US
+2655336960,2655349943,CA
+2655349944,2655349951,US
+2655349952,2655352517,CA
+2655352518,2655352518,US
+2655352519,2655360143,CA
+2655360144,2655360151,US
+2655360152,2655369863,CA
+2655369864,2655369871,US
+2655369872,2655387647,CA
+2655387648,2655715327,US
2655715328,2655780863,PL
2655780864,2656387071,US
2656387072,2656403455,CA
@@ -57017,9 +57720,8 @@
2683371520,2683437055,CH
2683437056,2683568127,US
2683568128,2683633663,GB
-2683637760,2683637859,FR
-2683637861,2683638015,FR
-2683638016,2683641855,NL
+2683637760,2683637859,NL
+2683637861,2683641855,NL
2683641856,2683645951,US
2683646208,2683650047,SG
2683650048,2683651071,US
@@ -57078,8 +57780,7 @@
2685668352,2685669375,SG
2685677568,2685678591,CN
2685678592,2685681663,HK
-2685730816,2685992959,JP
-2686058496,2686320639,JP
+2685730816,2686320639,JP
2686386176,2686844927,US
2686844928,2686910463,GB
2686910464,2686975999,US
@@ -57192,7 +57893,9 @@
2697632768,2697633791,IN
2697633792,2697634815,KR
2697634816,2697635072,US
-2697635073,2697635839,NZ
+2697635073,2697635327,NZ
+2697635328,2697635583,US
+2697635584,2697635839,NZ
2697635840,2697636863,CN
2697636864,2697638911,KR
2697638912,2697647103,IN
@@ -57238,15 +57941,18 @@
2700214272,2700247039,NA
2700247040,2700263423,UG
2700263424,2700279807,TG
-2700279808,2700738559,JP
-2700804096,2700935167,JP
+2700279808,2700935167,JP
2700935168,2701066239,US
2701066240,2701131775,BG
2701131776,2701131807,HN
2701131808,2701131823,CA
-2701131824,2701132543,HN
+2701131824,2701132159,HN
+2701132160,2701132175,CR
+2701132176,2701132543,HN
2701132544,2701132559,CR
-2701132560,2701136047,HN
+2701132560,2701134447,HN
+2701134448,2701134463,US
+2701134464,2701136047,HN
2701136048,2701136055,US
2701136056,2701139135,HN
2701139136,2701139151,UY
@@ -57499,7 +58205,27 @@
2722758656,2723479551,US
2723479552,2723545087,CA
2723545088,2723610623,CH
-2723610624,2723832575,US
+2723610624,2723692735,US
+2723692736,2723692767,HK
+2723692768,2723693759,US
+2723693760,2723693791,SG
+2723693792,2723694783,US
+2723694784,2723694815,AU
+2723694816,2723695807,US
+2723695808,2723695839,JP
+2723695840,2723696831,US
+2723696832,2723696863,IN
+2723696864,2723697855,US
+2723697856,2723697887,DE
+2723697888,2723698879,US
+2723698880,2723698911,GB
+2723698912,2723699903,US
+2723699904,2723699935,NL
+2723699936,2723700927,US
+2723700928,2723700959,PL
+2723700960,2723707071,US
+2723707072,2723707103,BR
+2723707104,2723832575,US
2723832576,2723832831,GB
2723832832,2724268287,US
2724268288,2724268543,MX
@@ -57620,9 +58346,7 @@
2731765760,2731767807,CA
2731767808,2731771903,US
2731771904,2731772927,KY
-2731772928,2731782655,US
-2731782656,2731783167,GB
-2731783168,2731784191,US
+2731772928,2731784191,US
2731784192,2731785215,CA
2731785216,2731786239,US
2731786240,2731788287,CA
@@ -57677,7 +58401,8 @@
2732107776,2732109823,US
2732110848,2732111871,US
2732111872,2732113919,CA
-2732113920,2732136447,US
+2732113920,2732126207,US
+2732127232,2732136447,US
2732136448,2732138495,CA
2732138496,2732159999,US
2732161024,2732170239,US
@@ -57878,7 +58603,8 @@
2734379008,2734381055,VG
2734381056,2734407679,US
2734407680,2734409727,CA
-2734409728,2734435327,US
+2734409728,2734432255,US
+2734433280,2734435327,US
2734435328,2734436351,CA
2734436352,2734439167,US
2734439168,2734439279,GB
@@ -57966,7 +58692,11 @@
2737594368,2737602559,US
2737602560,2737610751,SG
2737610752,2737618943,JP
-2737618944,2737623039,SG
+2737618944,2737619967,VN
+2737619968,2737620991,TH
+2737620992,2737621247,VN
+2737621248,2737622015,SG
+2737622016,2737623039,VN
2737623040,2737767423,JP
2737767424,2737768447,CN
2737768448,2737769471,SG
@@ -58000,10 +58730,7 @@
2737808384,2737809407,NZ
2737809408,2737810431,AU
2737810432,2737811455,KH
-2737811456,2737811711,SG
-2737811712,2737811967,HK
-2737811968,2737812223,GB
-2737812224,2737812479,US
+2737811456,2737812479,SG
2737812480,2737813503,AU
2737813504,2737815551,NZ
2737815552,2737816575,MY
@@ -58052,8 +58779,7 @@
2738222080,2738223103,MO
2738223104,2738224127,AU
2738224128,2738225151,IN
-2738225152,2738421759,JP
-2738487296,2738683903,JP
+2738225152,2738683903,JP
2738749440,2742353919,FR
2742353920,2742419455,ES
2742419456,2742484991,US
@@ -58111,8 +58837,7 @@
2748121088,2748317695,US
2748317696,2748645375,JP
2748645376,2748710911,KR
-2748710912,2748841983,JP
-2748907520,2749235199,JP
+2748710912,2749235199,JP
2749235200,2749300735,KR
2749300736,2749628415,JP
2749628416,2749693951,US
@@ -58167,7 +58892,9 @@
2754478080,2754543615,JP
2754543616,2754609151,US
2754609152,2754674687,SE
-2754674688,2754936831,US
+2754674688,2754920447,US
+2754920448,2754928639,IN
+2754928640,2754936831,US
2754936832,2755002367,AU
2755002368,2755330047,US
2755330048,2755526655,DE
@@ -58300,6 +59027,16 @@
2761959424,2761960447,CI
2761960448,2761961471,ZA
2761961472,2761962495,CD
+2761962496,2761963519,ZA
+2761963520,2761964543,ZM
+2761964544,2761965567,ZA
+2761965568,2761966591,EG
+2761966592,2761967615,RE
+2761967616,2761970687,ZA
+2761970688,2761971711,GQ
+2761971712,2761973759,ZA
+2761990144,2761992191,UG
+2761992192,2761994239,ZA
2762006528,2762010623,RE
2762010624,2762014719,GH
2762014720,2762145791,JP
@@ -58334,6 +59071,7 @@
2769027072,2769092607,AU
2769092608,2769158143,US
2769158144,2769223679,JP
+2769346560,2769354751,ZA
2769485824,2769616895,US
2769616896,2769682431,SG
2769682432,2769747967,US
@@ -58454,13 +59192,25 @@
2781207552,2781208575,DE
2781208576,2781478911,US
2781478912,2781544447,HK
-2781544448,2781624063,US
+2781544448,2781614591,US
+2781614592,2781615103,MX
+2781615104,2781624063,US
2781624064,2781624319,CA
-2781624320,2781628415,US
-2781628416,2781628671,DE
-2781628672,2781630463,US
+2781624320,2781626367,US
+2781626368,2781626879,NL
+2781626880,2781627391,IT
+2781627392,2781628415,US
+2781628416,2781628927,DE
+2781628928,2781630463,US
2781630464,2781631487,MY
-2781631488,2781675519,US
+2781631488,2781635583,US
+2781635584,2781636095,JP
+2781636096,2781643775,US
+2781643776,2781644287,KR
+2781644288,2781644799,TW
+2781644800,2781645823,IN
+2781645824,2781646335,SG
+2781646336,2781675519,US
2781675520,2781741055,NZ
2781741056,2781937663,US
2781937664,2782003199,TH
@@ -58489,21 +59239,26 @@
2783005440,2783005695,US
2783005696,2783006719,FR
2783006720,2783007743,GB
-2783007744,2783010815,US
+2783007744,2783008255,US
+2783008256,2783008767,IT
+2783008768,2783010815,US
2783010816,2783011327,HK
2783011328,2783011583,AU
2783011584,2783011839,US
2783011840,2783012351,JP
2783012352,2783012607,TW
2783012608,2783012863,US
-2783012864,2783013375,IN
-2783013376,2783182847,US
+2783012864,2783013887,IN
+2783013888,2783182847,US
2783182848,2783248383,AU
2783248384,2783313919,KR
2783313920,2783379455,US
2783379456,2783380991,SC
2783380992,2783381503,NZ
-2783381504,2783383551,SC
+2783381504,2783381759,SC
+2783381760,2783382015,US
+2783382016,2783382527,SC
+2783382528,2783383551,US
2783383552,2783387647,CA
2783387648,2783391743,GB
2783391744,2783395839,US
@@ -58511,13 +59266,31 @@
2783399936,2783404031,FR
2783404032,2783408127,NL
2783408128,2783412223,NO
-2783412224,2783416319,SE
+2783412224,2783414015,US
+2783414016,2783415295,SE
+2783415296,2783416063,US
+2783416064,2783416319,SE
2783416320,2783420415,RU
2783420416,2783424511,EE
-2783424512,2783428607,JP
+2783424512,2783424767,JP
+2783424768,2783425535,US
+2783425536,2783425791,JP
+2783425792,2783426559,US
+2783426560,2783426815,JP
+2783426816,2783427071,US
+2783427072,2783427327,JP
+2783427328,2783427583,US
+2783427584,2783427839,JP
+2783427840,2783428095,US
+2783428096,2783428607,JP
2783428608,2783436799,US
2783436800,2783440895,IT
-2783440896,2783444991,IN
+2783440896,2783441407,US
+2783441408,2783442431,IN
+2783442432,2783443711,US
+2783443712,2783443967,IN
+2783443968,2783444735,US
+2783444736,2783444991,IN
2783444992,2783510527,US
2783510528,2783576063,ZA
2783576064,2783969279,US
@@ -58725,8 +59498,8 @@
2816263168,2816264191,GB
2816264192,2816264447,IE
2816264448,2816264703,GB
-2816264704,2816264959,IE
-2816264960,2816270335,US
+2816264704,2816264983,IE
+2816264984,2816270335,US
2816270336,2816271615,SG
2816271616,2816271871,JP
2816271872,2816272127,IN
@@ -58822,9 +59595,7 @@
2822586368,2822590463,US
2822590464,2822591629,IE
2822591630,2822591630,US
-2822591631,2822594559,IE
-2822594560,2822596607,HK
-2822596608,2822602751,IE
+2822591631,2822602751,IE
2822602752,2822643903,US
2822643904,2822643967,SG
2822643968,2822644479,US
@@ -58892,7 +59663,10 @@
2824527872,2824529919,BR
2824529920,2824530943,CL
2824530944,2824532991,BR
-2824532992,2824534015,BZ
+2824532992,2824533247,DE
+2824533248,2824533503,FR
+2824533504,2824533759,DE
+2824533760,2824534015,FR
2824534016,2824535039,BR
2824535040,2824536063,AR
2824536064,2824798207,US
@@ -58959,9 +59733,7 @@
2828075008,2828533759,US
2828533760,2828599551,AU
2828599552,2828599807,IN
-2828599808,2828626687,AU
-2828626688,2828626943,US
-2828626944,2828664831,AU
+2828599808,2828664831,AU
2828664832,2828730367,KR
2828730368,2828795903,ZA
2828795904,2829029375,US
@@ -59187,7 +59959,9 @@
2838643408,2838643408,GB
2838643409,2838643696,US
2838643697,2838643697,GB
-2838643698,2838663167,US
+2838643698,2838653631,US
+2838653632,2838653639,GB
+2838653640,2838663167,US
2838663168,2838663175,NL
2838663176,2838757375,US
2838757376,2838822911,CH
@@ -59313,7 +60087,9 @@
2852072448,2852073471,ZA
2852073472,2852074495,TZ
2852074496,2852075519,MW
-2852075520,2852077567,ZA
+2852075520,2852075775,ZA
+2852075776,2852076031,NG
+2852076032,2852077567,ZA
2852077568,2852078591,CD
2852078592,2852079615,TN
2852079616,2852080639,CG
@@ -59364,8 +60140,7 @@
2852148224,2852149247,AR
2852149248,2852150271,BR
2852150272,2852151295,AR
-2852151296,2852167679,BR
-2852168704,2852171775,BR
+2852151296,2852171775,BR
2852171776,2852172799,SV
2852172800,2852173823,BZ
2852173824,2852185087,BR
@@ -59384,7 +60159,11 @@
2854603776,2854604031,NL
2854604032,2854617087,US
2854617088,2854682623,MY
-2854748160,2855469055,US
+2854748160,2855288831,US
+2855288832,2855292927,GB
+2855292928,2855305215,US
+2855305216,2855309311,HK
+2855309312,2855469055,US
2855469056,2855484671,PY
2855484672,2855485439,AR
2855485440,2855501823,UY
@@ -59406,22 +60185,27 @@
2857086976,2857238527,US
2857631744,2857633791,BR
2857633792,2857634815,TT
-2857634816,2857640959,BR
+2857634816,2857643007,BR
2857643008,2857644031,AR
-2857645056,2857658367,BR
+2857644032,2857659391,BR
2857659392,2857660415,CR
-2857660416,2857662463,BR
-2857663488,2857664511,AR
+2857660416,2857663487,BR
+2857663488,2857665535,AR
2857665536,2857666559,NI
-2857667584,2857670655,BR
-2857671680,2857674751,BR
+2857666560,2857667583,VE
+2857667584,2857674751,BR
2857674752,2857675775,AR
2857675776,2857676799,PY
-2857676800,2857683967,BR
+2857676800,2857679871,BR
+2857679872,2857680895,MX
+2857680896,2857683967,BR
+2857683968,2857684991,AR
2857684992,2857686015,CL
2857686016,2857687039,AR
+2857687040,2857690111,BR
2857690112,2857691135,HN
-2857692160,2857695231,BR
+2857691136,2857692159,AR
+2857692160,2857696255,BR
2857696256,2857697279,AR
2857697280,2858352639,US
2858418176,2859007999,US
@@ -59439,9 +60223,31 @@
2861881344,2861957119,US
2861957120,2861959167,BR
2861959168,2861960191,AR
-2861963264,2861964287,BR
+2861960192,2861961215,MX
+2861961216,2861964287,BR
2861964288,2861965311,GT
2861965312,2861966335,AR
+2861966336,2861968383,BR
+2861968384,2861969407,AR
+2861969408,2861971455,BR
+2861971456,2861972479,CR
+2861972480,2861974527,AR
+2861974528,2861979647,BR
+2861979648,2861980671,VE
+2861980672,2861986815,BR
+2861986816,2861987839,AR
+2861987840,2861988863,CL
+2861988864,2861992959,BR
+2861992960,2861993983,CL
+2861993984,2861996031,BR
+2861996032,2861997055,AR
+2861997056,2861998079,CL
+2861999104,2862003199,BR
+2862003200,2862004223,HN
+2862004224,2862007295,BR
+2862007296,2862008319,AR
+2862008320,2862020607,BR
+2862021632,2862022655,BR
2862022656,2862284799,US
2862284800,2862350335,AR
2862350336,2862415871,US
@@ -59461,7 +60267,34 @@
2865610752,2865889279,US
2865889280,2865954815,AR
2865954816,2867265535,US
+2867265536,2867274751,BR
+2867274752,2867275775,AR
+2867275776,2867278847,BR
+2867278848,2867279871,HN
+2867279872,2867282943,BR
+2867282944,2867283967,AR
+2867283968,2867284991,BR
+2867284992,2867286015,AR
+2867286016,2867287039,PE
+2867287040,2867288063,BR
+2867289088,2867297279,BR
+2867297280,2867298303,AR
+2867298304,2867300351,BR
+2867300352,2867301375,AR
+2867301376,2867306495,BR
+2867306496,2867307519,AR
+2867308544,2867309567,PE
+2867309568,2867310591,BR
+2867310592,2867311615,AR
+2867311616,2867313663,BR
+2867314688,2867322879,BR
+2867325952,2867326975,PA
+2867326976,2867327999,BR
+2867329024,2867330047,HN
+2867330048,2867331071,BR
2867331072,2867396607,US
+2867396608,2867397631,BR
+2867403776,2867404799,AR
2867462144,2867593215,US
2867593216,2867724287,CH
2867855360,2868117503,US
@@ -59735,11 +60568,11 @@
2891283456,2891284479,CA
2891284480,2891364351,US
2891364352,2891374591,CA
-2891374592,2891378687,US
2891378688,2891380735,CA
2891380736,2891403263,US
2891403264,2891407359,CA
-2891407360,2891796479,US
+2891407360,2891440383,US
+2891444224,2891796479,US
2891796480,2891800575,CA
2891800576,2891807743,US
2891807744,2891808767,CA
@@ -59776,7 +60609,11 @@
2891864064,2891864575,SG
2891864576,2891865599,US
2891865600,2891865855,HK
-2891865856,2891871231,US
+2891865856,2891866111,US
+2891866112,2891866367,AU
+2891866368,2891866623,US
+2891866624,2891867391,AU
+2891867392,2891871231,US
2891871232,2891871487,CA
2891871488,2891982847,US
2891982848,2891984895,CA
@@ -59874,7 +60711,10 @@
2893005568,2893005823,FR
2893005824,2893006079,NO
2893006080,2893006335,BE
-2893006336,2893676543,US
+2893006336,2893015039,US
+2893015040,2893015295,CA
+2893015296,2893015551,BS
+2893015552,2893676543,US
2893676544,2893807615,CA
2893807616,2894921727,US
2894921728,2895118335,GB
@@ -60464,11 +61304,7 @@
2947590144,2947590655,JP
2947590656,2947590911,SG
2947590912,2947590927,HK
-2947590928,2947591023,SG
-2947591024,2947591031,HK
-2947591032,2947591039,SG
-2947591040,2947591071,HK
-2947591072,2947591167,SG
+2947590928,2947591167,SG
2947591168,2947591183,HK
2947591184,2947591679,SG
2947591680,2947591695,JP
@@ -61002,7 +61838,11 @@
2959282176,2959286271,SA
2959286272,2959290367,RO
2959290368,2959292415,PL
-2959292416,2959343615,RU
+2959292416,2959302655,RU
+2959302656,2959308877,UA
+2959308878,2959308878,RU
+2959308879,2959310847,UA
+2959310848,2959343615,RU
2959343616,2959351807,UA
2959351808,2959353855,DE
2959353856,2959355903,RU
@@ -61344,7 +62184,9 @@
2961057792,2961061887,RU
2961061888,2961062911,PL
2961062912,2961063935,UA
-2961063936,2961064959,NL
+2961063936,2961064447,NL
+2961064448,2961064703,RU
+2961064704,2961064959,NL
2961064960,2961065215,HK
2961065216,2961065471,AU
2961065472,2961065727,BR
@@ -61488,9 +62330,15 @@
2984247296,2984935423,MX
2984935424,2984936447,AR
2984936448,2984937471,BR
-2984937472,2984938239,HN
+2984937472,2984937607,HN
+2984937608,2984937615,US
+2984937616,2984938079,HN
+2984938080,2984938095,US
+2984938096,2984938239,HN
2984938240,2984938255,US
-2984938256,2984939519,HN
+2984938256,2984938847,HN
+2984938848,2984938863,CA
+2984938864,2984939519,HN
2984939520,2984951807,BR
2984951808,2984968191,EC
2984968192,2985033727,BR
@@ -62371,7 +63219,10 @@
3000506368,3000508415,PL
3000508416,3000510463,RU
3000510464,3000512511,PL
-3000512512,3000514559,SE
+3000512512,3000513791,SE
+3000513792,3000514047,PT
+3000514048,3000514303,SE
+3000514304,3000514559,BE
3000514560,3000516607,SI
3000516608,3000520703,RU
3000520704,3000522751,CZ
@@ -62778,7 +63629,9 @@
3003174400,3003174911,BR
3003174912,3003179007,CR
3003179008,3003187199,AR
-3003187200,3003252735,CO
+3003187200,3003189215,CO
+3003189216,3003189247,AT
+3003189248,3003252735,CO
3003252736,3003449343,CL
3003449344,3003514879,SV
3003514880,3003645951,PE
@@ -62818,15 +63671,15 @@
3005895168,3005895935,CO
3005895936,3005896703,PA
3005896704,3005898495,CO
-3005898496,3005899007,PA
-3005899008,3005900543,CO
-3005900544,3005901055,PA
+3005898496,3005898751,PA
+3005898752,3005900799,CO
+3005900800,3005901055,PA
3005901056,3005901311,CO
3005901312,3005901567,PA
-3005901568,3005901823,CO
-3005901824,3005902591,PA
-3005902592,3005903871,CO
-3005903872,3005904639,PA
+3005901568,3005902079,CO
+3005902080,3005902335,PA
+3005902336,3005904127,CO
+3005904128,3005904639,PA
3005904640,3005905407,CO
3005905408,3005905663,PA
3005905664,3005906943,CO
@@ -62835,8 +63688,8 @@
3005911296,3005911551,PA
3005911552,3005911807,CO
3005911808,3005912063,PA
-3005912064,3005912319,CO
-3005912320,3005912831,PA
+3005912064,3005912575,CO
+3005912576,3005912831,PA
3005912832,3005913087,CO
3005913088,3005913343,PA
3005913344,3005913599,CO
@@ -62893,15 +63746,13 @@
3006310656,3006310911,PA
3006310912,3006312447,CR
3006312448,3006312703,PA
-3006312704,3006313471,CR
-3006313472,3006313727,PA
-3006313728,3006314751,CR
+3006312704,3006314751,CR
3006314752,3006315263,PA
3006315264,3006315775,CR
3006315776,3006316031,PA
3006316032,3006316287,CR
-3006316288,3006320895,PA
-3006320896,3006321407,CR
+3006316288,3006321151,PA
+3006321152,3006321407,CR
3006321408,3006321663,PA
3006321664,3006322175,CR
3006322176,3006322431,PA
@@ -62970,7 +63821,11 @@
3007096832,3007098879,AR
3007098880,3007099463,HN
3007099464,3007099471,IN
-3007099472,3007100647,HN
+3007099472,3007100055,HN
+3007100056,3007100063,BR
+3007100064,3007100407,HN
+3007100408,3007100415,PH
+3007100416,3007100647,HN
3007100648,3007100655,MX
3007100656,3007100887,HN
3007100888,3007100895,PH
@@ -63011,13 +63866,9 @@
3007154192,3007154207,DE
3007154208,3007154303,CL
3007154304,3007154687,US
-3007154688,3007154703,CL
-3007154704,3007154719,DE
-3007154720,3007154943,CL
+3007154688,3007154943,DE
3007154944,3007155199,US
-3007155200,3007155215,CL
-3007155216,3007155231,DE
-3007155232,3007155327,CL
+3007155200,3007155327,DE
3007155328,3007155711,US
3007155712,3007155727,CL
3007155728,3007155743,DE
@@ -63156,7 +64007,8 @@
3007173440,3007173631,BR
3007173632,3007173663,NO
3007173664,3007173695,NZ
-3007173696,3007174015,BR
+3007173696,3007173887,BR
+3007173888,3007174015,US
3007174016,3007174047,NL
3007174048,3007174079,FR
3007174080,3007174271,BR
@@ -63176,9 +64028,7 @@
3007176384,3007176447,BR
3007176448,3007176703,US
3007176704,3007177727,IN
-3007177728,3007178751,US
-3007178752,3007179007,BR
-3007179008,3007181055,US
+3007177728,3007181055,US
3007181056,3007181183,BR
3007181184,3007181215,IT
3007181216,3007181247,IS
@@ -63344,8 +64194,8 @@
3025625536,3025625599,CA
3025625600,3025625855,SG
3025625856,3025625887,IN
-3025625888,3025625895,SG
-3025625896,3025626111,IN
+3025625888,3025625915,SG
+3025625916,3025626111,IN
3025626112,3025626623,SG
3025626624,3025629439,IN
3025629440,3025629567,HK
@@ -63378,9 +64228,7 @@
3025633920,3025634047,MY
3025634048,3025636351,IN
3025636352,3025636607,SG
-3025636608,3025637151,IN
-3025637152,3025637183,MY
-3025637184,3025637375,IN
+3025636608,3025637375,IN
3025637376,3025637631,HK
3025637632,3025637887,MY
3025637888,3025638015,IN
@@ -63405,7 +64253,9 @@
3025639808,3025639839,IN
3025639840,3025639871,HK
3025639872,3025639879,CN
-3025639880,3025640191,IN
+3025639880,3025639887,IN
+3025639888,3025639903,HK
+3025639904,3025640191,IN
3025640192,3025640447,JP
3025640448,3025640799,MY
3025640800,3025641727,IN
@@ -63429,7 +64279,9 @@
3025648080,3025648087,SG
3025648088,3025648091,US
3025648092,3025648095,SG
-3025648096,3025649151,IN
+3025648096,3025648127,IN
+3025648128,3025648383,SG
+3025648384,3025649151,IN
3025649152,3025649663,HK
3025649664,3025666047,IN
3025666048,3025928191,CN
@@ -63700,7 +64552,8 @@
3039396352,3039396607,NL
3039396608,3039412223,US
3039412224,3039412735,CL
-3039412736,3039413503,US
+3039412736,3039412991,TW
+3039412992,3039413503,US
3039413504,3039414015,BR
3039414016,3039414527,US
3039414528,3039414783,BR
@@ -63737,9 +64590,11 @@
3041132544,3041394687,CO
3041394688,3041656831,CL
3041656832,3041787903,BR
-3041787904,3041886463,AR
-3041886464,3041886719,US
-3041886720,3044016127,AR
+3041787904,3041886207,AR
+3041886208,3041886975,US
+3041886976,3041918719,AR
+3041918720,3041918975,US
+3041918976,3044016127,AR
3044016128,3044147199,EC
3044147200,3044155391,GT
3044155392,3044161535,AR
@@ -63755,7 +64610,8 @@
3044245504,3044278271,BO
3044278272,3044417535,AR
3044417536,3044418047,CY
-3044418048,3044425727,PA
+3044418048,3044421631,PA
+3044421632,3044425727,CY
3044425728,3044446207,AR
3044446208,3044450303,CO
3044450304,3044454399,CL
@@ -63796,7 +64652,9 @@
3048295344,3048295351,CA
3048295352,3048297407,BZ
3048297408,3048297423,CA
-3048297424,3048298799,BZ
+3048297424,3048298687,BZ
+3048298688,3048298719,US
+3048298720,3048298799,BZ
3048298800,3048298807,US
3048298808,3048299487,BZ
3048299488,3048299503,BR
@@ -63804,17 +64662,23 @@
3048301936,3048301951,CA
3048301952,3048302295,BZ
3048302296,3048302303,CA
-3048302304,3048303303,BZ
+3048302304,3048302815,BZ
+3048302816,3048302823,NL
+3048302824,3048303303,BZ
3048303304,3048303311,NL
3048303312,3048304031,BZ
3048304032,3048304047,NL
-3048304048,3048304919,BZ
+3048304048,3048304663,BZ
+3048304664,3048304671,CR
+3048304672,3048304919,BZ
3048304920,3048304927,CR
3048304928,3048305063,BZ
3048305064,3048305071,CR
3048305072,3048305471,BZ
3048305472,3048305487,US
-3048305488,3048305983,BZ
+3048305488,3048305503,BZ
+3048305504,3048305519,US
+3048305520,3048305983,BZ
3048305984,3048305991,US
3048305992,3048307607,BZ
3048307608,3048307615,CA
@@ -63875,8 +64739,7 @@
3050700816,3050701055,BR
3050701056,3050701311,US
3050701312,3050701327,IE
-3050701328,3050701343,US
-3050701344,3050701567,BR
+3050701328,3050701567,BR
3050701568,3050701823,US
3050701824,3050701839,SG
3050701840,3050702079,BR
@@ -63929,7 +64792,9 @@
3050709520,3050709759,BR
3050709760,3050710015,NL
3050710016,3050710031,ES
-3050710032,3050710271,BR
+3050710032,3050710079,BR
+3050710080,3050710143,US
+3050710144,3050710271,BR
3050710272,3050710527,US
3050710528,3050710543,FR
3050710544,3050710655,BR
@@ -63993,8 +64858,8 @@
3050770960,3050771199,BR
3050771200,3050771455,US
3050771456,3050771471,SG
-3050771472,3050771711,BR
-3050771712,3050771967,US
+3050771472,3050771583,BR
+3050771584,3050771967,US
3050771968,3050771983,EE
3050771984,3050772223,BR
3050772224,3050772479,US
@@ -64149,9 +65014,13 @@
3051389696,3051389951,NL
3051389952,3051390719,US
3051390720,3051390975,NL
-3051390976,3051395071,US
+3051390976,3051394047,US
+3051394048,3051394303,NL
+3051394304,3051395071,US
3051395072,3051395583,NL
-3051395584,3051397119,PA
+3051395584,3051395839,PA
+3051395840,3051396095,US
+3051396096,3051397119,PA
3051397120,3051398143,CO
3051398144,3051399167,AR
3051399168,3051400191,DO
@@ -64741,6 +65610,8 @@
3103868672,3103868927,GB
3103868928,3103869183,LB
3103869184,3103869439,AL
+3103869440,3103869695,DE
+3103869696,3103869951,PL
3103916032,3103917055,CH
3103917056,3103918079,IT
3103918080,3103919103,DE
@@ -65148,7 +66019,7 @@
3104329728,3104330751,SE
3104330752,3104331775,DE
3104331776,3104333823,GB
-3104333824,3104334847,ES
+3104333824,3104334847,FR
3104334848,3104335871,SE
3104335872,3104336895,LT
3104336896,3104337919,GB
@@ -66804,7 +67675,7 @@
3106024320,3106024447,DE
3106024448,3106025471,GB
3106025472,3106026495,PL
-3106026496,3106027519,NL
+3106026496,3106027519,LT
3106027520,3106027535,PL
3106027536,3106027551,FR
3106027552,3106027567,CH
@@ -67673,7 +68544,11 @@
3106873344,3106874367,ES
3106874368,3106875391,RU
3106875392,3106876415,NO
-3106876416,3106877439,US
+3106876416,3106876671,US
+3106876672,3106876735,BG
+3106876736,3106876799,MD
+3106876800,3106876927,CZ
+3106876928,3106877439,US
3106877440,3106878463,IR
3106878464,3106879487,RU
3106879488,3106880511,MK
@@ -68275,7 +69150,9 @@
3107496192,3107496255,DE
3107496256,3107496287,BS
3107496288,3107496319,VG
-3107496320,3107496431,NL
+3107496320,3107496399,NL
+3107496400,3107496415,JP
+3107496416,3107496431,NL
3107496432,3107496447,UA
3107496448,3107496463,CL
3107496464,3107496479,ES
@@ -68634,7 +69511,7 @@
3107854336,3107855359,DE
3107855360,3107856383,IT
3107856384,3107857407,SM
-3107857408,3107858431,MT
+3107857408,3107858431,NL
3107858432,3107859455,FR
3107859456,3107860479,GB
3107860480,3107862527,IT
@@ -68653,10 +69530,8 @@
3107874816,3107875839,CH
3107875840,3107876863,CZ
3107876864,3107877887,RS
-3107877888,3107878143,GB
-3107878144,3107878287,NL
-3107878288,3107878295,GB
-3107878296,3107878911,NL
+3107877888,3107878399,GB
+3107878400,3107878911,NL
3107878912,3107879935,IL
3107879936,3107880959,DE
3107880960,3107881983,HU
@@ -68843,7 +69718,9 @@
3108075520,3108076543,BA
3108076544,3108077567,NL
3108077568,3108078591,GB
-3108078592,3108079615,SE
+3108078592,3108079103,SE
+3108079104,3108079359,NL
+3108079360,3108079615,SE
3108079616,3108080639,RU
3108080640,3108081663,SE
3108081664,3108082687,GB
@@ -69034,7 +69911,12 @@
3108278272,3108279295,RU
3108279296,3108280319,FR
3108280320,3108281343,RU
-3108281344,3108282367,US
+3108281344,3108281855,US
+3108281856,3108281919,IT
+3108281920,3108281983,NO
+3108281984,3108282047,SE
+3108282048,3108282111,BR
+3108282112,3108282367,US
3108282368,3108283391,NL
3108283392,3108284415,CZ
3108284416,3108285439,NO
@@ -69257,7 +70139,10 @@
3108517888,3108518911,BG
3108518912,3108519935,SI
3108519936,3108520959,CH
-3108520960,3108521983,US
+3108520960,3108521727,US
+3108521728,3108521855,SK
+3108521856,3108521919,MK
+3108521920,3108521983,BA
3108521984,3108523007,AT
3108523008,3108524031,IT
3108524032,3108525055,FR
@@ -70511,7 +71396,8 @@
3109817344,3109818367,TR
3109818368,3109819391,NL
3109819392,3109820415,FR
-3109820416,3109821439,GB
+3109820416,3109820671,US
+3109820672,3109821439,GB
3109821440,3109822463,IR
3109822464,3109823487,RU
3109823488,3109824511,FR
@@ -71187,7 +72073,9 @@
3110455296,3110457343,RU
3110457344,3110458367,FR
3110458368,3110459391,IT
-3110459392,3110460415,RU
+3110459392,3110459903,RU
+3110459904,3110460159,US
+3110460160,3110460415,RU
3110460416,3110461439,CZ
3110461440,3110462463,GB
3110462464,3110463487,IR
@@ -71424,7 +72312,6 @@
3110709248,3110710271,RU
3110710272,3110711295,CY
3110711296,3110712319,IL
-3110712320,3110713343,CZ
3110713344,3110714367,IR
3110714368,3110715391,RO
3110715392,3110716415,NL
@@ -71458,7 +72345,6 @@
3110743040,3110744063,ES
3110744064,3110745087,AT
3110745088,3110746111,NL
-3110746112,3110747135,IT
3110747136,3110748159,CZ
3110748160,3110749183,CH
3110749184,3110750207,BE
@@ -71478,6 +72364,7 @@
3110763008,3110763263,RO
3110763264,3110763519,NL
3110763520,3110764543,AD
+3110764544,3110765567,IL
3110765568,3110766591,PL
3110766592,3110767615,IR
3110767616,3110768639,RS
@@ -71487,7 +72374,6 @@
3110771712,3110772735,KZ
3110772736,3110773759,AT
3110773760,3110774783,DE
-3110774784,3110775807,RE
3110775808,3110776831,RU
3110776832,3110777855,GB
3110777856,3110778879,SE
@@ -71596,7 +72482,6 @@
3110899712,3110900735,MD
3110900736,3110901759,TR
3110901760,3110902783,MD
-3110902784,3110903807,TR
3110903808,3110904831,RU
3110904832,3110905855,IR
3110905856,3110906879,GB
@@ -71654,7 +72539,6 @@
3110963200,3110965247,GB
3110965248,3110966271,NL
3110966272,3110967295,IL
-3110967296,3110968319,PT
3110968320,3110969343,DE
3110969344,3110970367,NL
3110970368,3110971391,CH
@@ -71752,7 +72636,6 @@
3111072768,3111074815,FR
3111074816,3111075839,DE
3111075840,3111076863,IR
-3111076864,3111077887,AZ
3111077888,3111078911,NL
3111078912,3111079935,IT
3111079936,3111080959,NL
@@ -71976,7 +72859,8 @@
3111307264,3111308287,DE
3111308288,3111309311,GB
3111309312,3111310335,CH
-3111310336,3111313407,DE
+3111310336,3111311359,DE
+3111312384,3111313407,DE
3111313408,3111313523,GB
3111313524,3111313524,SA
3111313525,3111313663,GB
@@ -72137,7 +73021,8 @@
3111471616,3111473151,NL
3111473152,3111474175,BG
3111474176,3111475199,PL
-3111475200,3111476223,NL
+3111475200,3111475711,SE
+3111475712,3111476223,NL
3111476224,3111477247,FR
3111477248,3111478271,IR
3111478272,3111479295,RU
@@ -72168,7 +73053,6 @@
3111507968,3111508991,IT
3111508992,3111510015,FI
3111510016,3111511039,LB
-3111511040,3111512063,DE
3111512064,3111513087,RU
3111513088,3111514111,GB
3111514112,3111515135,UA
@@ -72198,7 +73082,7 @@
3111541760,3111542783,FR
3111542784,3111543807,IQ
3111543808,3111544831,DE
-3111544832,3111546879,US
+3111544832,3111545855,US
3111546880,3111547903,PT
3111547904,3111548927,FR
3111548928,3111549951,SA
@@ -72468,7 +73352,6 @@
3111830528,3111831551,NO
3111831552,3111832575,TR
3111832576,3111835647,GB
-3111835648,3111836671,CZ
3111836672,3111837695,RO
3111837696,3111838719,IT
3111838720,3111839743,AL
@@ -72593,7 +73476,6 @@
3111980032,3111981055,IL
3111981056,3111982079,RU
3111982080,3111983103,IR
-3111983104,3111984127,SA
3111984128,3111985151,FI
3111985152,3111986175,TR
3111986176,3111987199,RU
@@ -72651,8 +73533,8 @@
3112034312,3112034312,CH
3112034313,3112034313,CZ
3112034314,3112034314,DK
-3112034315,3112035071,DE
-3112035072,3112035327,US
+3112034315,3112034815,DE
+3112034816,3112035327,US
3112035328,3112036351,RU
3112036352,3112038399,NL
3112038400,3112039423,IS
@@ -72987,7 +73869,6 @@
3112415232,3112416255,AE
3112416256,3112417279,RU
3112417280,3112418303,ES
-3112418304,3112419327,IQ
3112419328,3112420351,FR
3112420352,3112421375,DE
3112421376,3112423423,GB
@@ -73350,7 +74231,8 @@
3112806400,3112807423,DE
3112807424,3112808447,CH
3112808448,3112809471,RU
-3112809472,3112809983,GB
+3112809472,3112809727,GB
+3112809728,3112809983,BG
3112809984,3112810495,NL
3112810496,3112811519,DE
3112811520,3112812543,SE
@@ -73568,7 +74450,6 @@
3113037824,3113038847,IR
3113038848,3113039871,LV
3113039872,3113040895,GB
-3113040896,3113041919,IR
3113041920,3113042943,DE
3113042944,3113043967,DK
3113043968,3113044991,NO
@@ -73577,7 +74458,7 @@
3113048064,3113049087,NO
3113049088,3113050111,RU
3113050112,3113051135,FI
-3113051136,3113053183,IR
+3113052160,3113053183,IR
3113053184,3113054207,TR
3113054208,3113055231,SE
3113055232,3113056255,FR
@@ -74398,6 +75279,217 @@
3113935872,3113936895,SE
3113936896,3113937919,AT
3113937920,3113938943,IT
+3113938944,3113939967,DK
+3113939968,3113940991,GB
+3113940992,3113942015,SY
+3113942016,3113943039,ES
+3113943040,3113944063,FR
+3113944064,3113945087,ES
+3113945088,3113947135,IR
+3113947136,3113948159,RU
+3113948160,3113949183,ES
+3113949184,3113950207,NO
+3113950208,3113951231,CH
+3113951232,3113952255,CZ
+3113952256,3113953279,DK
+3113953280,3113954303,PL
+3113954304,3113955327,NL
+3113955328,3113956351,SK
+3113956352,3113957375,RO
+3113957376,3113958399,DE
+3113958400,3113961471,ES
+3113961472,3113962495,IR
+3113962496,3113963519,NL
+3113963520,3113964543,DK
+3113964544,3113965567,US
+3113965568,3113966591,UA
+3113966592,3113967615,FR
+3113967616,3113968639,EE
+3113968640,3113969663,GR
+3113969664,3113970687,GB
+3113970688,3113971711,DE
+3113971712,3113972735,RU
+3113972736,3113973759,BG
+3113973760,3113974783,IT
+3113974784,3113975807,AT
+3113975808,3113976831,CZ
+3113976832,3113977855,DK
+3113977856,3113978879,GB
+3113978880,3113979903,FR
+3113979904,3113980927,GB
+3113980928,3113981951,TR
+3113981952,3113982975,FR
+3113982976,3113983999,IQ
+3113984000,3113985023,SY
+3113985024,3113986047,DE
+3113986048,3113987071,NL
+3113987072,3113988095,FR
+3113988096,3113989119,IT
+3113989120,3113990143,GB
+3113990144,3113991167,CH
+3113991168,3113993215,DE
+3113993216,3113994239,IT
+3113994240,3113995263,NL
+3113995264,3113996287,ES
+3113996288,3113997311,HR
+3113997312,3113998335,NO
+3113998336,3113999359,HR
+3113999360,3114000383,FR
+3114000384,3114001407,HR
+3114001408,3114002431,RO
+3114002432,3114002687,US
+3114002688,3114003455,RU
+3114003456,3114004479,IR
+3114004480,3114005503,AE
+3114005504,3114006527,GB
+3114006528,3114007551,BG
+3114007552,3114008575,EE
+3114008576,3114009599,RU
+3114009600,3114010623,TR
+3114010624,3114011647,CH
+3114011648,3114012671,AL
+3114012672,3114013695,GB
+3114013696,3114014719,IS
+3114014720,3114015743,FR
+3114015744,3114016767,TR
+3114016768,3114017791,PL
+3114017792,3114018815,CZ
+3114018816,3114019839,UA
+3114019840,3114020863,IR
+3114020864,3114021887,GB
+3114021888,3114022911,UA
+3114022912,3114023935,BE
+3114023936,3114024959,GR
+3114024960,3114025983,GB
+3114025984,3114027007,DE
+3114027008,3114028031,RU
+3114028032,3114030079,FR
+3114030080,3114031103,DE
+3114031104,3114032127,NO
+3114032128,3114033151,FI
+3114033152,3114034175,DK
+3114034176,3114035199,ES
+3114035200,3114036223,GB
+3114036224,3114037247,RU
+3114037248,3114038271,NO
+3114038272,3114039295,GB
+3114039296,3114040319,CZ
+3114040320,3114041343,DE
+3114041344,3114042367,SK
+3114042368,3114043391,IT
+3114043392,3114045439,GB
+3114045440,3114046463,AT
+3114046464,3114047487,IT
+3114047488,3114048511,HU
+3114048512,3114049535,DE
+3114049536,3114050559,NL
+3114050560,3114051583,GB
+3114051584,3114052607,BE
+3114052608,3114053631,GB
+3114053632,3114055679,RU
+3114055680,3114057727,GB
+3114057728,3114058751,IT
+3114058752,3114059775,GB
+3114059776,3114060799,UA
+3114060800,3114061823,DE
+3114061824,3114062847,NL
+3114062848,3114063871,LB
+3114063872,3114064895,ES
+3114064896,3114065919,CH
+3114065920,3114066943,DE
+3114066944,3114067967,CH
+3114067968,3114068991,IT
+3114068992,3114070015,BH
+3114070016,3114071039,IT
+3114071040,3114072063,GB
+3114072064,3114073087,ES
+3114073088,3114074111,DE
+3114074112,3114075135,CH
+3114075136,3114076159,ES
+3114076160,3114077183,IR
+3114077184,3114078207,PL
+3114078208,3114079231,DK
+3114079232,3114080255,DE
+3114080256,3114081279,IT
+3114081280,3114083327,DE
+3114084352,3114085375,TR
+3114085376,3114086399,RS
+3114086400,3114087423,GB
+3114087424,3114088447,NL
+3114088448,3114089471,NO
+3114089472,3114090495,RO
+3114090496,3114091519,NL
+3114091520,3114092543,BE
+3114092544,3114093567,CH
+3114093568,3114094591,UA
+3114094592,3114095615,PL
+3114095616,3114096639,DK
+3114096640,3114097663,NO
+3114097664,3114098687,ES
+3114098688,3114099711,RU
+3114099712,3114100735,DE
+3114100736,3114101759,RS
+3114101760,3114102783,EE
+3114102784,3114104831,DK
+3114104832,3114105855,GR
+3114105856,3114106879,RU
+3114106880,3114107903,ES
+3114107904,3114108927,LI
+3114108928,3114109951,KG
+3114109952,3114110975,BE
+3114110976,3114111999,NL
+3114112000,3114113023,GB
+3114113024,3114114047,ES
+3114114048,3114115071,DE
+3114115072,3114116095,SE
+3114116096,3114117119,PL
+3114117120,3114118143,SE
+3114118144,3114119167,PL
+3114119168,3114120191,DE
+3114120192,3114121215,IQ
+3114121216,3114122239,ES
+3114122240,3114123263,RU
+3114123264,3114124287,FR
+3114124288,3114125311,CZ
+3114125312,3114126335,GL
+3114126336,3114127359,TR
+3114127360,3114128383,NL
+3114128384,3114129407,ES
+3114129408,3114130431,IT
+3114130432,3114131455,SE
+3114131456,3114132479,GB
+3114132480,3114133503,IT
+3114133504,3114134527,GB
+3114134528,3114135551,PL
+3114135552,3114136575,CZ
+3114136576,3114137599,FR
+3114137600,3114138623,AT
+3114138624,3114139647,RU
+3114139648,3114140671,AL
+3114140672,3114141695,FR
+3114141696,3114142719,ES
+3114142720,3114143743,DE
+3114143744,3114144767,AT
+3114144768,3114145791,FR
+3114145792,3114146815,AT
+3114146816,3114147839,IT
+3114147840,3114148863,SY
+3114148864,3114149887,IT
+3114149888,3114150911,DE
+3114150912,3114151935,FR
+3114151936,3114152959,DE
+3114152960,3114153983,ES
+3114153984,3114155007,GB
+3114155008,3114156031,DK
+3114156032,3114157055,CZ
+3114157056,3114158079,RU
+3114158080,3114159103,FI
+3114159104,3114160127,GB
+3114160128,3114161151,HR
+3114161152,3114162175,NL
+3114162176,3114163199,IT
+3114163200,3114164223,SY
+3114164224,3114165247,DE
3120562176,3120594943,CO
3120594944,3120599039,AR
3120599040,3120601087,EC
@@ -74421,7 +75513,9 @@
3120735488,3120735743,NL
3120735744,3120736255,BZ
3120736256,3120736511,EC
-3120736512,3120738303,BZ
+3120736512,3120736767,BZ
+3120736768,3120737023,RU
+3120737024,3120738303,BZ
3120738304,3120742399,CW
3120742400,3120754687,PY
3120754688,3120755711,CR
@@ -74517,7 +75611,9 @@
3124849664,3124850687,AR
3124850688,3124851471,HN
3124851472,3124851487,CM
-3124851488,3124852175,HN
+3124851488,3124851855,HN
+3124851856,3124851863,IN
+3124851864,3124852175,HN
3124852176,3124852191,PH
3124852192,3124853103,HN
3124853104,3124853119,VN
@@ -74606,7 +75702,17 @@
3132096512,3132211199,CR
3132211200,3132227583,AR
3132227584,3132293119,EC
-3132293120,3132309503,HN
+3132293120,3132295647,HN
+3132295648,3132295679,UY
+3132295680,3132297839,HN
+3132297840,3132297855,US
+3132297856,3132300383,HN
+3132300384,3132300391,US
+3132300392,3132302319,HN
+3132302320,3132302335,NL
+3132302336,3132308367,HN
+3132308368,3132308375,US
+3132308376,3132309503,HN
3132309504,3132313599,CR
3132313600,3132317695,CL
3132317696,3132321791,CO
@@ -75028,7 +76134,8 @@
3161948160,3161964543,RO
3161964544,3161980927,ES
3161980928,3161989119,SK
-3161989120,3161989631,TR
+3161989120,3161989375,NL
+3161989376,3161989631,TR
3161989632,3161990143,NL
3161990144,3161991167,TR
3161991168,3161993215,NL
@@ -75194,7 +76301,9 @@
3164937751,3164938239,LT
3164938240,3164939705,FR
3164939706,3164939706,ES
-3164939707,3164946727,FR
+3164939707,3164945919,FR
+3164945920,3164945983,NL
+3164945984,3164946727,FR
3164946728,3164946731,NL
3164946732,3164947067,FR
3164947068,3164947071,IT
@@ -75514,8 +76623,7 @@
3168137984,3168138239,NL
3168138240,3168139263,MD
3168139264,3168141311,GB
-3168141312,3168142335,IT
-3168142336,3168143615,RO
+3168141312,3168143615,RO
3168143616,3168143871,UA
3168143872,3168144383,RO
3168144384,3168144639,SG
@@ -75530,7 +76638,9 @@
3168155392,3168156671,RO
3168156672,3168157695,MD
3168157696,3168161791,IR
-3168161792,3168164351,RO
+3168161792,3168162815,RO
+3168162816,3168163839,IR
+3168163840,3168164351,RO
3168164352,3168164863,GB
3168164864,3168165119,RO
3168165120,3168165375,DE
@@ -75566,13 +76676,15 @@
3168212224,3168212479,US
3168212480,3168212735,RO
3168212736,3168212991,FR
-3168212992,3168215551,RO
+3168212992,3168214015,IR
+3168214016,3168215551,RO
3168215552,3168215807,TH
3168215808,3168221183,RO
3168221184,3168223231,ES
3168223232,3168223743,RO
3168223744,3168224255,MD
-3168224256,3168230399,RO
+3168224256,3168229375,RO
+3168229376,3168230399,IR
3168230400,3168230655,GB
3168230656,3168237567,RO
3168237568,3168239615,PS
@@ -75775,7 +76887,9 @@
3187939848,3187939855,HN
3187939856,3187940479,GT
3187940480,3187940543,HN
-3187940544,3187940963,GT
+3187940544,3187940823,GT
+3187940824,3187940831,HN
+3187940832,3187940963,GT
3187940964,3187940967,HN
3187940968,3187941207,GT
3187941208,3187941215,HN
@@ -75799,7 +76913,9 @@
3187944774,3187944774,HN
3187944775,3187944831,GT
3187944832,3187944835,HN
-3187944836,3187945343,GT
+3187944836,3187944855,GT
+3187944856,3187944859,HN
+3187944860,3187945343,GT
3187945344,3187945471,HN
3187945472,3187945971,GT
3187945972,3187945975,HN
@@ -75817,7 +76933,9 @@
3187948480,3187948543,HN
3187948544,3187948799,GT
3187948800,3187948927,HN
-3187948928,3187949311,GT
+3187948928,3187949115,GT
+3187949116,3187949119,HN
+3187949120,3187949311,GT
3187949312,3187949567,HN
3187949568,3187950126,BQ
3187950127,3187950127,CW
@@ -75912,7 +77030,9 @@
3188518272,3188518399,US
3188518400,3188523007,AR
3188523008,3188539391,CO
-3188539392,3188543487,CL
+3188539392,3188542207,CL
+3188542208,3188542463,US
+3188542464,3188543487,CL
3188543488,3188543999,CY
3188544000,3188545535,PA
3188545536,3188547583,AR
@@ -75958,7 +77078,9 @@
3191095296,3191099391,EC
3191099392,3191103487,AR
3191103488,3191107583,VE
-3191107584,3191108607,PE
+3191107584,3191108271,PE
+3191108272,3191108287,MX
+3191108288,3191108607,PE
3191108608,3191108639,MX
3191108640,3191108959,PE
3191108960,3191108991,CO
@@ -75983,9 +77105,12 @@
3191439360,3191455743,EC
3191455744,3191472127,AR
3191472128,3191603199,TT
-3191603200,3191603519,CO
+3191603200,3191603455,CO
+3191603456,3191603519,GT
3191603520,3191603583,PR
-3191603584,3191607295,CO
+3191603584,3191603647,CO
+3191603648,3191603711,SV
+3191603712,3191607295,CO
3191607296,3191607327,MX
3191607328,3191607807,CO
3191607808,3191608319,CL
@@ -75995,15 +77120,15 @@
3191611392,3191619583,VE
3191619584,3191619903,CL
3191619904,3191619935,VE
-3191619936,3191635967,CL
+3191619936,3191630983,CL
+3191630984,3191630987,CO
+3191630988,3191635967,CL
3191635968,3191637759,CO
3191637760,3191638015,AR
3191638016,3191647743,CO
3191647744,3191647935,AR
3191647936,3191648255,CO
-3191648256,3191649791,US
-3191649792,3191650303,CO
-3191650304,3191652095,US
+3191648256,3191652095,US
3191652096,3191668991,CO
3191668992,3191669247,PY
3191669248,3191670015,CO
@@ -76065,8 +77190,8 @@
3191731712,3191731967,AR
3191731968,3191732223,CO
3191732224,3191732479,CL
-3191732480,3191732735,AR
-3191732736,3191734079,CO
+3191732480,3191733247,AR
+3191733248,3191734079,CO
3191734080,3191734143,US
3191734144,3191734271,CO
3191734272,3191799807,SV
@@ -76109,9 +77234,7 @@
3193617408,3193618943,CO
3193618944,3193619071,EC
3193619072,3193621759,CO
-3193621760,3193622015,EC
-3193622016,3193622271,CO
-3193622272,3193623551,EC
+3193621760,3193623551,EC
3193623552,3193624063,CO
3193624064,3193624575,EC
3193624576,3193625599,CO
@@ -76224,21 +77347,27 @@
3194126912,3194126975,PE
3194126976,3194127103,GT
3194127104,3194127359,BR
-3194127360,3194128383,PE
+3194127360,3194127871,AR
+3194127872,3194128127,PE
+3194128128,3194128383,BR
3194128384,3194129407,NI
3194129408,3194129663,AR
3194129664,3194129671,BR
3194129672,3194129919,AR
3194129920,3194130047,BR
3194130048,3194130175,CO
-3194130176,3194130431,AR
-3194130432,3194134527,BR
+3194130176,3194130303,CL
+3194130304,3194130431,AR
+3194130432,3194132991,BR
+3194132992,3194133247,CL
+3194133248,3194134527,BR
3194134528,3194135551,AR
-3194135552,3194136063,GT
-3194136064,3194136319,BR
+3194135552,3194136319,BR
3194136320,3194136575,GT
3194136576,3194137087,BR
-3194137088,3194140159,AR
+3194137088,3194139647,AR
+3194139648,3194139903,BR
+3194139904,3194140159,AR
3194140160,3194142719,CR
3194142720,3194159103,CL
3194159104,3194165247,HN
@@ -76369,8 +77498,7 @@
3194806272,3194814463,AR
3194814464,3194818559,PA
3194818560,3194830847,AR
-3194830848,3194836991,BR
-3194836992,3194838015,PA
+3194830848,3194838015,BR
3194838016,3194839039,MX
3194839040,3194863615,CO
3194863616,3194871807,HN
@@ -76385,7 +77513,9 @@
3194937344,3194945535,AR
3194945536,3194953215,GT
3194953216,3194953343,NI
-3194953344,3194953727,GT
+3194953344,3194953471,GT
+3194953472,3194953599,NI
+3194953600,3194953727,GT
3194953728,3194959871,AR
3194959872,3194960383,US
3194960384,3194960895,AR
@@ -76455,7 +77585,10 @@
3195142144,3195142399,MX
3195142400,3195142655,PA
3195142656,3195142911,VE
-3195142912,3195150335,PA
+3195142912,3195143039,EC
+3195143040,3195143167,UY
+3195143168,3195143295,GT
+3195143296,3195150335,PA
3195150336,3195158527,CL
3195158528,3195199487,AR
3195199488,3195201535,PY
@@ -76533,7 +77666,9 @@
3195768832,3195772927,AR
3195772928,3195781119,VE
3195781120,3195785215,PA
-3195785216,3195786191,HN
+3195785216,3195785311,HN
+3195785312,3195785343,CA
+3195785344,3195786191,HN
3195786192,3195786199,US
3195786200,3195786527,HN
3195786528,3195786543,US
@@ -76547,7 +77682,9 @@
3195787608,3195787615,DE
3195787616,3195788159,HN
3195788160,3195788167,CA
-3195788168,3195789311,HN
+3195788168,3195789087,HN
+3195789088,3195789119,CA
+3195789120,3195789311,HN
3195789312,3195793407,PA
3195793408,3195801599,AR
3195801600,3195803647,HN
@@ -76555,13 +77692,14 @@
3195804672,3195805695,VE
3195805696,3195807743,NI
3195807744,3195808383,BZ
-3195808384,3195808511,US
-3195808512,3195808639,BZ
+3195808384,3195808639,US
3195808640,3195808767,CO
3195808768,3195808895,US
3195808896,3195809151,BZ
3195809152,3195809279,US
-3195809280,3195809791,BZ
+3195809280,3195809407,BZ
+3195809408,3195809535,US
+3195809536,3195809791,BZ
3195809792,3195811839,PE
3195811840,3195813887,AR
3195813888,3195822079,DO
@@ -76701,7 +77839,9 @@
3201891840,3201894399,VE
3201894400,3201905407,AR
3201905408,3201905663,CO
-3201905664,3201907199,AR
+3201905664,3201906111,AR
+3201906112,3201906175,CO
+3201906176,3201907199,AR
3201907200,3201907455,CO
3201907456,3201925119,AR
3201925120,3201957887,CL
@@ -76766,8 +77906,7 @@
3210740480,3210740735,US
3210740736,3210742015,BR
3210742016,3210742031,IT
-3210742032,3210742047,US
-3210742048,3210742063,BR
+3210742032,3210742063,BR
3210742064,3210742079,US
3210742080,3210742271,BR
3210742272,3210742527,CL
@@ -76777,18 +77916,21 @@
3210742562,3210742567,CL
3210742568,3210742575,US
3210742576,3210742591,BR
-3210742592,3210743039,CL
+3210742592,3210742655,CL
+3210742656,3210742783,US
+3210742784,3210743039,CL
3210743040,3210743055,GR
3210743056,3210743079,CL
3210743080,3210743087,US
3210743088,3210743295,CL
3210743296,3210743551,US
3210743552,3210743567,TH
-3210743568,3210743583,US
-3210743584,3210743807,CL
+3210743568,3210743807,BR
3210743808,3210744063,US
3210744064,3210744079,TR
-3210744080,3210744191,CL
+3210744080,3210744095,CL
+3210744096,3210744127,BR
+3210744128,3210744191,CL
3210744192,3210744575,US
3210744576,3210744591,BE
3210744592,3210744703,BR
@@ -76798,7 +77940,7 @@
3210744896,3210745087,CL
3210745088,3210745343,US
3210745344,3210745359,RU
-3210745360,3210745375,US
+3210745360,3210745375,BR
3210745376,3210745599,CL
3210745600,3210745855,US
3210745856,3210745871,IT
@@ -76812,13 +77954,11 @@
3210747904,3210748159,BR
3210748160,3210748175,JP
3210748176,3210748287,BR
-3210748288,3210748927,US
-3210748928,3210749439,CL
-3210749440,3210752255,US
+3210748288,3210752255,US
3210752256,3210752511,SG
3210752512,3210755839,US
3210755840,3210755855,MY
-3210755856,3210755871,US
+3210755856,3210755871,BR
3210755872,3210756351,CL
3210756352,3210756607,US
3210756608,3210756863,DE
@@ -76827,8 +77967,10 @@
3210758912,3210759167,GH
3210759168,3210764031,US
3210764032,3210764047,IE
-3210764048,3210764063,US
-3210764064,3210764287,CL
+3210764048,3210764063,BR
+3210764064,3210764095,CL
+3210764096,3210764159,US
+3210764160,3210764287,CL
3210764288,3210764799,US
3210764800,3210765055,CL
3210765056,3210765071,SE
@@ -76875,8 +78017,7 @@
3210778368,3210778623,IE
3210778624,3210781951,US
3210781952,3210782207,IT
-3210782208,3210782719,CL
-3210782720,3210782975,US
+3210782208,3210782975,US
3210782976,3210782991,TR
3210782992,3210783231,CL
3210783232,3210783487,US
@@ -76894,8 +78035,8 @@
3210786064,3210786303,CL
3210786304,3210786559,US
3210786560,3210786575,GR
-3210786576,3210786583,SG
-3210786584,3210787071,CL
+3210786576,3210786591,BR
+3210786592,3210787071,CL
3210787072,3210788863,US
3210788864,3210789119,HR
3210789120,3210791935,US
@@ -77017,10 +78158,7 @@
3211086368,3211086463,CL
3211086464,3211086847,DE
3211086848,3211086863,PL
-3211086864,3211086879,DE
-3211086880,3211087119,CL
-3211087120,3211087135,DE
-3211087136,3211087359,CL
+3211086864,3211087359,DE
3211087360,3211087375,GB
3211087376,3211087871,DE
3211087872,3211087887,ES
@@ -77076,9 +78214,7 @@
3211097360,3211097375,DE
3211097376,3211097599,CL
3211097600,3211097855,US
-3211097856,3211097871,CL
-3211097872,3211097887,DE
-3211097888,3211098111,CL
+3211097856,3211098111,DE
3211098112,3211098367,US
3211098368,3211098383,CL
3211098384,3211098399,DE
@@ -77102,7 +78238,8 @@
3211106304,3211111423,US
3211111424,3211112447,JP
3211112448,3211112959,US
-3211112960,3211113471,CL
+3211112960,3211113215,CL
+3211113216,3211113471,SG
3211113472,3211113727,GB
3211113728,3211113983,LT
3211113984,3211114239,US
@@ -77137,9 +78274,23 @@
3211148288,3211165695,CO
3211165696,3211165951,HN
3211165952,3211165983,UY
-3211165984,3211172047,HN
+3211165984,3211167487,HN
+3211167488,3211167503,US
+3211167504,3211167519,HN
+3211167520,3211167527,US
+3211167528,3211171487,HN
+3211171488,3211171503,ES
+3211171504,3211171511,HN
+3211171512,3211171519,ES
+3211171520,3211171791,HN
+3211171792,3211171807,ES
+3211171808,3211172047,HN
3211172048,3211172063,NL
-3211172064,3211182079,HN
+3211172064,3211174687,HN
+3211174688,3211174703,CA
+3211174704,3211181119,HN
+3211181120,3211181135,CR
+3211181136,3211182079,HN
3211182080,3211194367,CO
3211194368,3211195391,DO
3211195392,3211214847,AR
@@ -77160,15 +78311,15 @@
3219653716,3219653716,US
3219653717,3219673087,BR
3219673088,3219673151,US
-3219673152,3219673215,BR
-3219673216,3219673343,US
-3219673344,3219673727,BR
-3219673728,3219673855,US
-3219673856,3219673983,BR
+3219673152,3219673983,BR
3219673984,3219674015,SG
3219674016,3219674111,BR
3219674112,3219675135,US
-3219675136,3219726335,BR
+3219675136,3219687679,BR
+3219687680,3219687935,US
+3219687936,3219688447,IE
+3219688448,3219688703,HK
+3219688704,3219726335,BR
3219726336,3219734527,JP
3219734528,3219750911,NL
3219750912,3219755007,BR
@@ -77190,35 +78341,32 @@
3219800576,3219800591,US
3219800592,3219800703,BR
3219800704,3219800847,US
-3219800848,3219802111,BR
-3219802112,3219802623,US
+3219800848,3219802148,BR
+3219802149,3219802149,US
+3219802150,3219802175,BR
+3219802176,3219802303,US
+3219802304,3219802367,BR
+3219802368,3219802399,US
+3219802400,3219802431,BR
+3219802432,3219802495,US
+3219802496,3219802623,BR
3219802624,3219802639,NL
3219802640,3219803135,BR
3219803136,3219803647,SG
-3219803648,3219804159,US
-3219804160,3219808767,BR
+3219803648,3219808767,BR
3219808768,3219816447,NL
3219816448,3219818495,US
3219818496,3219819007,BR
3219819008,3219819519,JP
-3219819520,3219820063,HK
-3219820064,3219820079,JP
-3219820080,3219821567,HK
+3219819520,3219820543,BR
+3219820544,3219821567,HK
3219821568,3219824127,BR
3219824128,3219824639,US
3219824640,3219837439,BR
3219837440,3219837695,US
3219837696,3219838497,BR
3219838498,3219838498,US
-3219838499,3219841023,BR
-3219841024,3219842047,NL
-3219842048,3219843071,BR
-3219843072,3219844095,US
-3219844096,3219845119,BR
-3219845120,3219847167,US
-3219847168,3219848191,BR
-3219848192,3219848447,AU
-3219848448,3219849215,BR
+3219838499,3219849215,BR
3219849216,3219851263,US
3219851264,3219852287,NL
3219852288,3219853311,IE
@@ -77445,8 +78593,8 @@
3222990592,3222990847,PT
3222990848,3223091199,US
3223091200,3223092223,AU
-3223092224,3223092479,GB
-3223092480,3223201791,US
+3223092224,3223093247,GB
+3223093248,3223201791,US
3223201792,3223202815,PR
3223202816,3223204863,US
3223204864,3223205119,CA
@@ -77513,9 +78661,7 @@
3223324672,3223324799,NL
3223324800,3223324831,US
3223324832,3223324847,HK
-3223324848,3223324895,US
-3223324896,3223324911,SG
-3223324912,3223330943,US
+3223324848,3223330943,US
3223330944,3223330975,NL
3223330976,3223331455,US
3223331456,3223331487,IE
@@ -77567,7 +78713,7 @@
3223420928,3223421439,US
3223421440,3223421951,NL
3223421952,3223422719,US
-3223422720,3223422975,JP
+3223422720,3223422975,AU
3223422976,3223424767,US
3223424768,3223425535,NL
3223425536,3223425791,US
@@ -77924,7 +79070,7 @@
3224689920,3224690687,NL
3224690688,3224691455,US
3224691712,3224692735,US
-3224692736,3224692991,NL
+3224692736,3224692991,DZ
3224692992,3224694527,US
3224694528,3224694783,CA
3224694784,3224698111,US
@@ -78109,8 +79255,7 @@
3225468928,3225470463,CA
3225470464,3225471487,US
3225471488,3225471743,NL
-3225471744,3225472255,HK
-3225472256,3225498367,US
+3225471744,3225498367,US
3225498368,3225503487,NL
3225503488,3225506303,US
3225506304,3225508863,AU
@@ -78229,7 +79374,7 @@
3225715712,3225715967,AU
3225715968,3225716991,US
3225716992,3225717247,CA
-3225717248,3225717503,MU
+3225717248,3225717503,TN
3225717504,3225717759,AU
3225717760,3225720575,US
3225720576,3225721343,GB
@@ -78537,7 +79682,6 @@
3226561792,3226562047,NL
3226562048,3226564863,US
3226564864,3226565119,DE
-3226565120,3226565375,US
3226565376,3226565631,FI
3226565632,3226574847,US
3226574848,3226575103,FI
@@ -78852,7 +79996,8 @@
3227310080,3227310335,NL
3227310336,3227312127,US
3227312128,3227312383,DK
-3227312384,3227320319,US
+3227312384,3227315199,US
+3227316224,3227320319,US
3227320320,3227362047,FR
3227362048,3227362303,US
3227362304,3227362815,GB
@@ -78912,11 +80057,12 @@
3227446272,3227446783,US
3227446784,3227447039,AU
3227447040,3227447295,NL
-3227447296,3227447807,MU
+3227447296,3227447551,ZA
+3227447552,3227447807,MU
3227447808,3227448063,US
3227448064,3227448575,AU
3227448576,3227448831,US
-3227448832,3227449087,MU
+3227448832,3227449087,ZA
3227449088,3227450111,US
3227450112,3227450367,CA
3227450368,3227451455,US
@@ -78959,59 +80105,73 @@
3227468288,3227468799,CA
3227468800,3227484159,US
3227484160,3227517183,CA
-3227517184,3227517695,ZA
-3227517696,3227518207,MU
-3227518208,3227518463,ZA
-3227518464,3227519743,MU
-3227519744,3227520255,ZA
-3227520256,3227520767,MU
-3227520768,3227521023,ZA
-3227521024,3227521279,MU
+3227517184,3227518719,ZA
+3227518720,3227519231,MU
+3227519232,3227521279,ZA
3227521280,3227521791,US
-3227521792,3227522047,MU
-3227522048,3227522559,ZA
+3227521792,3227522559,ZA
3227522560,3227522815,MU
3227522816,3227523071,US
-3227523072,3227526143,MU
+3227523072,3227524607,MU
+3227524608,3227525119,ZA
+3227525120,3227525375,MU
+3227525376,3227526143,ZA
3227526144,3227526399,US
-3227526400,3227526655,MU
-3227526656,3227526911,ZA
-3227526912,3227527423,MU
+3227526400,3227527423,ZA
3227527424,3227527935,US
3227527936,3227528191,MU
3227528192,3227528447,US
-3227528448,3227532031,MU
+3227528448,3227528703,ZA
+3227528704,3227528959,MU
+3227528960,3227531519,ZA
+3227531520,3227532031,MU
3227532032,3227532287,US
-3227532288,3227532799,MU
+3227532288,3227532799,ZA
3227532800,3227534335,US
-3227534336,3227535615,MU
+3227534336,3227535615,ZA
3227535616,3227535871,US
-3227535872,3227536895,MU
+3227535872,3227536895,ZA
3227536896,3227537151,CA
-3227537152,3227541503,MU
+3227537152,3227537407,ZA
+3227537408,3227537663,MU
+3227537664,3227539199,ZA
+3227539200,3227540735,MU
+3227540736,3227540991,ZA
+3227540992,3227541503,MU
3227541504,3227541759,ZA
3227541760,3227543295,MU
3227543296,3227543551,US
-3227543552,3227551743,MU
+3227543552,3227544831,ZA
+3227544832,3227545087,MU
+3227545088,3227547647,ZA
+3227547648,3227551743,MU
3227551744,3227552255,MF
-3227552256,3227556863,MU
+3227552256,3227552511,ZA
+3227552512,3227553791,MU
+3227553792,3227554047,ZA
+3227554304,3227554559,ZA
+3227554560,3227554815,MU
+3227554816,3227556863,ZA
3227556864,3227557375,US
-3227557376,3227557631,MU
+3227557376,3227557631,ZA
3227557632,3227558911,US
-3227558912,3227559935,MU
+3227558912,3227559167,ZA
+3227559168,3227559423,GB
+3227559424,3227559935,ZA
3227559936,3227562239,US
-3227562240,3227566079,MU
+3227562240,3227562495,MU
+3227562496,3227566079,ZA
3227566080,3227566335,US
-3227566336,3227567103,MU
-3227567104,3227568127,ZA
+3227566336,3227566847,MU
+3227566848,3227568127,ZA
3227568128,3227574271,US
-3227574272,3227576575,MU
+3227574272,3227576575,ZA
3227576576,3227576831,US
3227576832,3227579391,MU
3227579392,3227579647,US
-3227579648,3227580159,MU
-3227580160,3227580927,ZA
-3227580928,3227582207,MU
+3227579648,3227580927,ZA
+3227580928,3227581695,MU
+3227581696,3227582207,ZA
3227582208,3227638271,US
3227638272,3227638527,CA
3227638528,3227647999,US
@@ -79046,7 +80206,7 @@
3227777984,3227777999,US
3227778000,3227779071,CA
3227779072,3227779327,US
-3227779328,3227779583,MU
+3227779328,3227779583,ZA
3227779584,3227779839,AU
3227779840,3227783679,US
3227783680,3227783935,NL
@@ -79139,7 +80299,7 @@
3227879168,3227879679,US
3227879680,3227879935,NL
3227879936,3227880959,US
-3227880960,3227881215,MU
+3227880960,3227881215,EG
3227881216,3227883319,US
3227883320,3227883320,CA
3227883321,3227885823,US
@@ -79770,7 +80930,7 @@
3229975552,3230004223,US
3230004224,3230004479,NL
3230004480,3230005759,US
-3230005760,3230006015,MU
+3230005760,3230006015,ZA
3230006016,3230007039,US
3230007040,3230007295,CA
3230007296,3230072831,FR
@@ -79800,9 +80960,7 @@
3230096384,3230096639,JP
3230096640,3230096895,US
3230096896,3230097151,JP
-3230097408,3230097663,JP
-3230098688,3230098943,JP
-3230099200,3230100735,JP
+3230097408,3230100735,JP
3230100736,3230100991,US
3230100992,3230101503,PR
3230101504,3230104319,US
@@ -80072,7 +81230,7 @@
3230858752,3230865151,US
3230865152,3230865407,NL
3230865408,3230867967,US
-3230867968,3230868223,NL
+3230867968,3230868223,IS
3230868224,3230868479,US
3230868480,3230868735,NL
3230868736,3230870015,US
@@ -80453,12 +81611,10 @@
3231478016,3231482879,US
3231482880,3231483135,BE
3231483136,3231484927,US
-3231484928,3231485439,JP
-3231485696,3231487999,JP
+3231484928,3231487999,JP
3231488512,3231488767,JP
3231489280,3231489535,US
-3231489536,3231489791,JP
-3231489792,3231490047,AU
+3231489536,3231490047,AU
3231490048,3231490559,US
3231490560,3231490815,GB
3231490816,3231491327,US
@@ -80546,7 +81702,7 @@
3231562496,3231562751,NL
3231562752,3231563007,US
3231563008,3231563263,NL
-3231563264,3231563519,MU
+3231563264,3231563519,ZA
3231563520,3231563775,AU
3231563776,3231583231,US
3231583232,3231584255,CA
@@ -80920,7 +82076,9 @@
3233456448,3233456639,US
3233456640,3233456655,CA
3233456656,3233456671,US
-3233456672,3233457151,CA
+3233456672,3233457023,CA
+3233457024,3233457039,US
+3233457040,3233457151,CA
3233457152,3233458687,US
3233458688,3233458943,HU
3233458944,3233458959,BG
@@ -81036,7 +82194,7 @@
3233629952,3233630463,US
3233630464,3233630719,NL
3233630720,3233630975,US
-3233630976,3233631231,MU
+3233630976,3233631231,ZA
3233631232,3233631487,NL
3233631488,3233635839,US
3233635840,3233636095,AU
@@ -81045,7 +82203,7 @@
3233642496,3233646591,US
3233646592,3233646847,AU
3233646848,3233647359,US
-3233647360,3233647871,MU
+3233647360,3233647871,GA
3233647872,3233649663,US
3233649664,3233649919,AU
3233649920,3233650431,US
@@ -81284,9 +82442,7 @@
3234227456,3234227711,CA
3234227712,3234228223,US
3234228224,3234228287,CA
-3234228288,3234228303,US
-3234228304,3234228319,CA
-3234228320,3234230015,US
+3234228288,3234230015,US
3234230016,3234230207,ES
3234230208,3234232319,US
3234232320,3234232575,EG
@@ -81326,7 +82482,7 @@
3234557440,3234564607,US
3234564608,3234566911,KR
3234566912,3234568703,US
-3234568704,3234568959,NZ
+3234568704,3234568959,AU
3234568960,3234569215,US
3234569216,3234569727,AU
3234569728,3234569983,CL
@@ -81407,7 +82563,7 @@
3234809088,3234810879,US
3234810880,3234811135,CA
3234811136,3234814719,US
-3234814720,3234814975,HK
+3234814720,3234814975,AU
3234814976,3234815999,US
3234816000,3234816767,AU
3234816768,3234820351,US
@@ -81644,14 +82800,15 @@
3236392704,3236393471,US
3236393472,3236393983,BR
3236393984,3236395007,CO
-3236395008,3236395519,BR
+3236395008,3236395519,AR
3236395520,3236396799,US
3236396800,3236397055,AU
3236397056,3236398847,US
3236398848,3236399359,AU
3236399616,3236400127,US
3236400128,3236400383,CL
-3236400384,3236401151,US
+3236400384,3236400639,AU
+3236400640,3236401151,US
3236401152,3236401407,AU
3236401408,3236406783,US
3236406784,3236407551,AU
@@ -81787,9 +82944,7 @@
3237047040,3237047295,FR
3237047296,3237050111,US
3237050112,3237050303,GB
-3237050304,3237050319,US
-3237050320,3237050335,GB
-3237050336,3237051903,US
+3237050304,3237051903,US
3237051904,3237052159,TR
3237052160,3237052287,CA
3237052288,3237125295,US
@@ -81828,7 +82983,7 @@
3237310720,3237312767,US
3237312768,3237313023,BO
3237313024,3237319679,US
-3237319680,3237319935,MU
+3237319680,3237319935,DZ
3237319936,3237320703,US
3237320704,3237320959,UA
3237320960,3237321471,US
@@ -81842,7 +82997,7 @@
3237326080,3237328639,US
3237328640,3237328895,CA
3237328896,3237329151,US
-3237329152,3237329407,NZ
+3237329152,3237329407,AU
3237329664,3237330943,US
3237330944,3237331199,AU
3237331200,3237331967,US
@@ -82314,7 +83469,7 @@
3239145472,3239147519,DE
3239147520,3239149567,SG
3239149568,3239160319,GB
-3239160320,3239160575,RU
+3239160320,3239160575,US
3239160576,3239160831,DE
3239160832,3239161087,PL
3239161088,3239161343,BY
@@ -84656,7 +85811,7 @@
3245251584,3245251839,UA
3245251840,3245252095,NL
3245252352,3245252607,BG
-3245252608,3245253631,UA
+3245253120,3245253631,UA
3245253632,3245254143,LV
3245254144,3245254655,DK
3245254656,3245255167,UA
@@ -84687,7 +85842,6 @@
3245280256,3245280767,BE
3245280768,3245281279,FR
3245281280,3245281791,RO
-3245281792,3245282303,ES
3245282304,3245282815,IT
3245282816,3245283327,PL
3245283328,3245283839,GB
@@ -85322,7 +86476,7 @@
3249127936,3249128447,LV
3249128448,3249128959,DE
3249128960,3249129471,BG
-3249129472,3249130495,RU
+3249129984,3249130495,RU
3249130496,3249131007,DE
3249131008,3249131519,GB
3249131520,3249132031,DK
@@ -86496,7 +87650,9 @@
3253075968,3253139455,RO
3253139456,3253139711,MD
3253139712,3253207039,RO
-3253207040,3253230591,RU
+3253207040,3253223679,RU
+3253223680,3253223935,UA
+3253223936,3253230591,RU
3253230592,3253230847,BY
3253230848,3253270527,RU
3253270528,3253271551,BY
@@ -88560,9 +89716,7 @@
3261538560,3261538815,GB
3261538816,3261539327,SE
3261539328,3261540351,GB
-3261540352,3261554175,SE
-3261554176,3261554431,DK
-3261554432,3261595647,SE
+3261540352,3261595647,SE
3261595648,3261599743,NL
3261601792,3261622271,NL
3261623808,3261624831,NL
@@ -89868,9 +91022,9 @@
3266798848,3266798879,CZ
3266798880,3266804095,GB
3266804096,3266804127,NL
-3266804128,3266804639,GB
-3266804640,3266804643,NL
-3266804644,3266805759,GB
+3266804128,3266804479,GB
+3266804480,3266804735,NL
+3266804736,3266805759,GB
3266805760,3266813951,AT
3266813952,3266822143,UA
3266822144,3266830335,FR
@@ -90197,7 +91351,11 @@
3269201920,3269202175,ES
3269202176,3269216255,RU
3269216256,3269216511,ES
-3269216512,3269225727,RU
+3269216512,3269218955,RU
+3269218956,3269218956,ES
+3269218957,3269219223,RU
+3269219224,3269219224,ES
+3269219225,3269225727,RU
3269225728,3269225983,ES
3269225984,3269228543,RU
3269228544,3269229055,ES
@@ -92307,9 +93465,9 @@
3276861184,3276861439,DE
3276861440,3276865535,DK
3276865536,3276866303,NL
-3276866304,3276868705,GB
-3276868706,3276868706,BE
-3276868707,3276870719,GB
+3276866304,3276868703,GB
+3276868704,3276868711,BE
+3276868712,3276870719,GB
3276870720,3276870735,IT
3276870736,3276870911,GB
3276870912,3276871679,IT
@@ -92329,7 +93487,9 @@
3276882048,3276882687,IT
3276882688,3276883077,GB
3276883078,3276883078,IT
-3276883079,3276883711,GB
+3276883079,3276883639,GB
+3276883640,3276883643,IT
+3276883644,3276883711,GB
3276883712,3276883967,IT
3276883968,3276886363,GB
3276886364,3276886367,DE
@@ -92351,7 +93511,9 @@
3276898784,3276898799,CH
3276898800,3276899839,GB
3276899840,3276900095,CH
-3276900096,3276901613,GB
+3276900096,3276900207,GB
+3276900208,3276900211,CH
+3276900212,3276901613,GB
3276901614,3276901614,CH
3276901615,3276902141,GB
3276902142,3276902142,CH
@@ -92365,7 +93527,9 @@
3276907520,3276907551,NL
3276907552,3276911167,GB
3276911168,3276911199,IT
-3276911200,3276911679,GB
+3276911200,3276911249,GB
+3276911250,3276911250,IT
+3276911251,3276911679,GB
3276911680,3276911711,IT
3276911712,3276912207,GB
3276912208,3276912215,IT
@@ -93430,11 +94594,7 @@
3281387520,3281453055,PL
3281453056,3281518591,RU
3281518592,3281649663,GB
-3281649664,3281710335,FR
-3281710336,3281710383,KP
-3281710384,3281710384,FR
-3281710385,3281710591,KP
-3281710592,3281715199,FR
+3281649664,3281715199,FR
3281715200,3281780735,TR
3281780736,3281846271,FI
3281846272,3281911807,GB
@@ -94220,6 +95380,7 @@
3285451608,3285451615,GB
3285452496,3285452511,GB
3285453440,3285453567,GB
+3285458176,3285458176,GB
3285461184,3285461215,NL
3285461808,3285461839,NL
3285463168,3285463199,LU
@@ -94382,7 +95543,9 @@
3285950208,3285950463,IT
3285951648,3285951679,ES
3285953536,3285953665,GB
+3285953672,3285953679,GB
3285953696,3285953727,GB
+3285953792,3285953919,GB
3285954048,3285954303,AE
3285954560,3285954567,RO
3285954568,3285954575,PL
@@ -94596,7 +95759,6 @@
3286905088,3286905343,GR
3286905344,3286905599,DE
3286905600,3286905855,MT
-3286905856,3286906111,TR
3286906112,3286906367,BE
3286906368,3286906879,RO
3286906880,3286907135,RU
@@ -95245,9 +96407,7 @@
3289025536,3289027327,ZA
3289027328,3289027583,TZ
3289027584,3289027839,MZ
-3289027840,3289041407,ZA
-3289041408,3289041663,NG
-3289041664,3289044735,ZA
+3289027840,3289044735,ZA
3289044736,3289044991,GH
3289044992,3289047039,ML
3289047040,3289048063,ZA
@@ -95256,7 +96416,10 @@
3289048832,3289049087,NG
3289049088,3289053951,ZA
3289053952,3289055231,NG
-3289055232,3289071103,ZA
+3289055232,3289070335,ZA
+3289070336,3289070591,ZW
+3289070592,3289070847,NA
+3289070848,3289071103,ZA
3289071104,3289071359,SO
3289071360,3289074431,ZA
3289074432,3289074687,DZ
@@ -95468,6 +96631,8 @@
3291041280,3291041535,ZA
3291041536,3291041791,TD
3291041792,3291042047,NG
+3291042048,3291042303,ZA
+3291042304,3291042559,AO
3291045888,3291078655,ZA
3291078656,3291086847,DZ
3291086848,3291103231,PR
@@ -95559,7 +96724,9 @@
3291326464,3291330559,ZA
3291330560,3291331583,TZ
3291331584,3291332607,MW
-3291332608,3291348991,ZA
+3291332608,3291332615,ZA
+3291332616,3291332863,NG
+3291332864,3291348991,ZA
3291348992,3291353087,MZ
3291353088,3291353343,KE
3291353344,3291353599,EG
@@ -95601,14 +96768,24 @@
3291426816,3291430911,NA
3291430912,3291432703,ZA
3291432704,3291432959,NA
-3291432960,3291439103,ZA
+3291432960,3291435519,ZA
+3291435520,3291437823,NA
+3291437824,3291438079,ZA
+3291438080,3291439103,NA
3291439104,3291447295,NG
3291447296,3291463679,CI
3291463680,3291480063,ZA
-3291480064,3291488255,DE
-3291488256,3291496447,SC
+3291480064,3291486463,DE
+3291486464,3291486719,US
+3291486720,3291488255,DE
+3291488256,3291488511,US
+3291488512,3291492351,SC
+3291492352,3291492607,US
+3291492608,3291496447,SC
3291496448,3291512831,US
-3291512832,3291529215,SC
+3291512832,3291522559,SC
+3291522560,3291522815,US
+3291522816,3291529215,SC
3291529216,3291545599,US
3291545600,3291545855,CI
3291545856,3291546111,GM
@@ -95631,7 +96808,10 @@
3291550208,3291550463,MR
3291550464,3291550719,BF
3291550720,3291550975,TZ
+3291551232,3291551487,KE
+3291551744,3291551999,BW
3291611136,3291611647,ZA
+3291611648,3291611903,MU
3291742208,3291742463,US
3291742464,3291742591,GB
3291742592,3291742719,IE
@@ -95640,8 +96820,390 @@
3291750656,3291939063,US
3291939064,3291939064,GB
3291939065,3292004351,US
-3292004352,3292266495,SC
+3292004352,3292004607,SC
+3292004608,3292004863,DK
+3292004864,3292005119,US
+3292005120,3292006143,SC
+3292006144,3292007423,US
+3292007424,3292007679,SC
+3292007680,3292008703,US
+3292008704,3292008959,SC
+3292008960,3292012031,US
+3292012032,3292012799,SC
+3292012800,3292014847,US
+3292014848,3292015103,SC
+3292015104,3292016383,US
+3292016384,3292016895,SC
+3292016896,3292017407,US
+3292017408,3292017663,SC
+3292017664,3292018175,US
+3292018176,3292018431,SC
+3292018432,3292018943,US
+3292018944,3292019455,SC
+3292019456,3292019711,US
+3292019712,3292019967,SC
+3292019968,3292022015,US
+3292022016,3292022271,SC
+3292022272,3292023295,US
+3292023296,3292023807,SC
+3292023808,3292027391,US
+3292027392,3292027647,SC
+3292027648,3292029183,US
+3292029184,3292029439,SC
+3292029440,3292029695,US
+3292029696,3292030207,SC
+3292030208,3292030463,US
+3292030464,3292030975,SC
+3292030976,3292031743,US
+3292031744,3292032255,SC
+3292032256,3292032511,US
+3292032512,3292032767,SC
+3292032768,3292033791,US
+3292033792,3292034047,SC
+3292034048,3292034303,US
+3292034304,3292034559,SC
+3292034560,3292035839,US
+3292035840,3292036095,SC
+3292036096,3292036351,US
+3292036352,3292036607,SC
+3292036608,3292036863,US
+3292036864,3292037375,SC
+3292037376,3292037631,US
+3292037632,3292037887,SC
+3292037888,3292038655,US
+3292038656,3292038911,SC
+3292038912,3292039167,US
+3292039168,3292039679,SC
+3292039680,3292040191,US
+3292040192,3292040447,SC
+3292040448,3292040703,US
+3292040704,3292040959,SC
+3292040960,3292041471,US
+3292041472,3292041727,SC
+3292041728,3292041983,US
+3292041984,3292042239,SC
+3292042240,3292044031,US
+3292044032,3292044287,SC
+3292044288,3292044543,US
+3292044544,3292044799,SC
+3292044800,3292047103,US
+3292047104,3292047359,SC
+3292047360,3292049663,US
+3292049664,3292049919,SC
+3292049920,3292050175,US
+3292050176,3292050687,SC
+3292050688,3292051455,US
+3292051456,3292051711,SC
+3292051712,3292052991,US
+3292052992,3292053247,SC
+3292053248,3292054015,US
+3292054016,3292054271,SC
+3292054272,3292058111,US
+3292058112,3292058879,SC
+3292058880,3292059135,US
+3292059136,3292059391,SC
+3292059392,3292060159,US
+3292060160,3292060415,SC
+3292060416,3292060671,US
+3292060672,3292060927,SC
+3292060928,3292061951,US
+3292061952,3292062207,SC
+3292062208,3292062719,US
+3292062720,3292062975,SC
+3292062976,3292064767,US
+3292064768,3292065535,SC
+3292065536,3292065791,US
+3292065792,3292066303,SC
+3292066304,3292069375,US
+3292069376,3292069631,DE
+3292069632,3292069887,AU
+3292069888,3292070143,SE
+3292070144,3292070399,DK
+3292070400,3292070655,US
+3292070656,3292070911,SC
+3292070912,3292071167,CZ
+3292071168,3292071423,US
+3292071424,3292071679,SC
+3292071680,3292076543,US
+3292076544,3292076799,SC
+3292076800,3292078335,US
+3292078336,3292078591,SC
+3292078592,3292078847,US
+3292078848,3292079103,SC
+3292079104,3292079615,US
+3292079616,3292079871,SC
+3292079872,3292080383,US
+3292080384,3292080639,SC
+3292080640,3292081151,US
+3292081152,3292081407,SC
+3292081408,3292081663,US
+3292081664,3292081919,SC
+3292081920,3292082175,US
+3292082176,3292082687,SC
+3292082688,3292082943,US
+3292082944,3292083199,SC
+3292083200,3292083967,US
+3292083968,3292084223,SC
+3292084224,3292085247,US
+3292085248,3292085503,SC
+3292085504,3292085759,US
+3292085760,3292087295,SC
+3292087296,3292088319,US
+3292088320,3292088831,SC
+3292088832,3292089087,US
+3292089088,3292089599,SC
+3292089600,3292090879,US
+3292090880,3292091135,SC
+3292091136,3292093183,US
+3292093184,3292093439,SC
+3292093440,3292093695,US
+3292093696,3292093951,SC
+3292093952,3292094975,US
+3292094976,3292095231,SC
+3292095232,3292096767,US
+3292096768,3292097023,SC
+3292097024,3292098303,US
+3292098304,3292098559,SC
+3292098560,3292099071,US
+3292099072,3292099583,SC
+3292099584,3292101375,US
+3292101376,3292101631,SC
+3292101632,3292102911,US
+3292102912,3292103167,SC
+3292103168,3292104191,US
+3292104192,3292104447,SC
+3292104448,3292104959,US
+3292104960,3292105215,SC
+3292105216,3292105727,US
+3292105728,3292106239,SC
+3292106240,3292106751,US
+3292106752,3292107007,SC
+3292107008,3292108031,US
+3292108032,3292108287,SC
+3292108288,3292109567,US
+3292109568,3292109823,SC
+3292109824,3292110591,US
+3292110592,3292110847,SC
+3292110848,3292111103,US
+3292111104,3292111359,SC
+3292111360,3292112127,US
+3292112128,3292112383,SC
+3292112384,3292113919,US
+3292113920,3292114431,SC
+3292114432,3292115967,US
+3292115968,3292116223,SC
+3292116224,3292120319,US
+3292120320,3292120575,SC
+3292120576,3292124671,US
+3292124672,3292124927,SC
+3292124928,3292125695,US
+3292125696,3292125951,SC
+3292125952,3292126975,US
+3292126976,3292127231,SC
+3292127232,3292128767,US
+3292128768,3292129023,SC
+3292129024,3292129535,US
+3292129536,3292129791,SC
+3292129792,3292131071,US
+3292131072,3292131327,SC
+3292131328,3292133631,US
+3292133632,3292133887,SC
+3292133888,3292134911,US
+3292134912,3292135167,SC
+3292135168,3292135423,AU
+3292135424,3292135679,SC
+3292135680,3292135935,DK
+3292135936,3292136447,US
+3292136448,3292136703,CZ
+3292136704,3292136959,US
+3292136960,3292137471,SC
+3292137472,3292139775,US
+3292139776,3292140799,SC
+3292140800,3292141055,US
+3292141056,3292141311,SC
+3292141312,3292141567,US
+3292141568,3292142079,SC
+3292142080,3292142335,US
+3292142336,3292142591,SC
+3292142592,3292146175,US
+3292146176,3292146431,SC
+3292146432,3292147711,US
+3292147712,3292147967,SC
+3292147968,3292150527,US
+3292150528,3292150783,SC
+3292150784,3292151039,US
+3292151040,3292151295,SC
+3292151296,3292153087,US
+3292153088,3292153343,SC
+3292153344,3292153855,US
+3292153856,3292154111,SC
+3292154112,3292154879,US
+3292154880,3292155135,SC
+3292155136,3292156415,US
+3292156416,3292156671,SC
+3292156672,3292157183,US
+3292157184,3292157439,SC
+3292157440,3292157695,US
+3292157696,3292157951,SC
+3292157952,3292159999,US
+3292160000,3292160255,SC
+3292160256,3292161023,US
+3292161024,3292161279,SC
+3292161280,3292162047,US
+3292162048,3292162303,SC
+3292162304,3292163327,US
+3292163328,3292163583,SC
+3292163584,3292166655,US
+3292166656,3292167167,SC
+3292167168,3292167423,US
+3292167424,3292168191,SC
+3292168192,3292169983,US
+3292169984,3292170495,SC
+3292170496,3292170751,US
+3292170752,3292171007,SC
+3292171008,3292171519,US
+3292171520,3292171775,SC
+3292171776,3292172543,US
+3292172544,3292172799,SC
+3292172800,3292173311,US
+3292173312,3292173823,SC
+3292173824,3292175103,US
+3292175104,3292175359,SC
+3292175360,3292176895,US
+3292176896,3292177407,SC
+3292177408,3292178175,US
+3292178176,3292178431,SC
+3292178432,3292179199,US
+3292179200,3292179711,SC
+3292179712,3292180735,US
+3292180736,3292181247,SC
+3292181248,3292181503,US
+3292181504,3292181759,SC
+3292181760,3292182015,US
+3292182016,3292182271,SC
+3292182272,3292183039,US
+3292183040,3292183295,SC
+3292183296,3292186623,US
+3292186624,3292186879,SC
+3292186880,3292188671,US
+3292188672,3292189183,SC
+3292189184,3292189439,US
+3292189440,3292189695,SC
+3292189696,3292191999,US
+3292192000,3292192255,SC
+3292192256,3292196607,US
+3292196608,3292196863,SC
+3292196864,3292197375,US
+3292197376,3292197631,SC
+3292197632,3292197887,US
+3292197888,3292198399,SC
+3292198400,3292199423,US
+3292199424,3292199679,SC
+3292199680,3292200447,US
+3292200448,3292200703,DE
+3292200704,3292200959,AU
+3292200960,3292201215,SE
+3292201216,3292201471,DK
+3292201472,3292201983,US
+3292201984,3292202495,SC
+3292202496,3292203007,US
+3292203008,3292203263,SC
+3292203264,3292204799,US
+3292204800,3292205311,SC
+3292205312,3292205823,US
+3292205824,3292206335,SC
+3292206336,3292206591,US
+3292206592,3292206847,SC
+3292206848,3292207359,US
+3292207360,3292208127,SC
+3292208128,3292208639,US
+3292208640,3292208895,SC
+3292208896,3292209663,US
+3292209664,3292209919,SC
+3292209920,3292210175,US
+3292210176,3292210431,SC
+3292210432,3292211455,US
+3292211456,3292211967,SC
+3292211968,3292212735,US
+3292212736,3292212991,SC
+3292212992,3292214783,US
+3292214784,3292215039,SC
+3292215040,3292215295,US
+3292215296,3292215551,SC
+3292215552,3292216319,US
+3292216320,3292216575,SC
+3292216576,3292217343,US
+3292217344,3292217599,SC
+3292217600,3292218879,US
+3292218880,3292219135,SC
+3292219136,3292220415,US
+3292220416,3292220671,SC
+3292220672,3292220927,US
+3292220928,3292221183,SC
+3292221184,3292222207,US
+3292222208,3292222463,SC
+3292222464,3292224511,US
+3292224512,3292224767,SC
+3292224768,3292225279,US
+3292225280,3292225535,SC
+3292225536,3292226303,US
+3292226304,3292226559,SC
+3292226560,3292227071,US
+3292227072,3292227327,SC
+3292227328,3292227839,US
+3292227840,3292228095,SC
+3292228096,3292228607,US
+3292228608,3292229631,SC
+3292229632,3292230911,US
+3292230912,3292231167,SC
+3292231168,3292231679,US
+3292231680,3292231935,SC
+3292231936,3292232447,US
+3292232448,3292232959,SC
+3292232960,3292233471,US
+3292233472,3292233983,SC
+3292233984,3292235007,US
+3292235008,3292235519,SC
+3292235520,3292236031,US
+3292236032,3292236287,SC
+3292236288,3292238079,US
+3292238080,3292238335,SC
+3292238336,3292239615,US
+3292239616,3292239871,SC
+3292239872,3292240383,US
+3292240384,3292240639,SC
+3292240640,3292243711,US
+3292243712,3292243967,SC
+3292243968,3292244991,US
+3292244992,3292245247,SC
+3292245248,3292245503,US
+3292245504,3292245759,SC
+3292245760,3292246783,US
+3292246784,3292247039,SC
+3292247040,3292248575,US
+3292248576,3292248831,SC
+3292248832,3292249855,US
+3292249856,3292250111,SC
+3292250112,3292252159,US
+3292252160,3292252671,SC
+3292252672,3292253183,US
+3292253184,3292253439,SC
+3292253440,3292254207,US
+3292254208,3292254719,SC
+3292254720,3292255487,US
+3292255488,3292255743,SC
+3292255744,3292259327,US
+3292259328,3292259839,SC
+3292259840,3292260351,US
+3292260352,3292260607,SC
+3292260608,3292263167,US
+3292263168,3292263423,SC
+3292263424,3292265983,US
+3292265984,3292266239,DE
+3292266240,3292266495,SC
3292266496,3292266751,TZ
+3292267008,3292267263,KE
+3292267520,3292267775,BW
3292397568,3292463103,US
3292463104,3292528639,ZA
3292528640,3294625791,MA
@@ -95673,44 +97235,191 @@
3301172224,3301175295,ZA
3301175296,3301179391,AF
3301179392,3301179903,RU
-3301179904,3301181439,SC
-3301181440,3301185535,US
+3301179904,3301180927,SC
+3301180928,3301185535,US
3301185536,3301187583,GB
3301187584,3301189631,FR
3301189632,3301191679,US
-3301191680,3301193727,CA
+3301191680,3301191935,CA
+3301191936,3301192447,SE
+3301192448,3301192703,CA
+3301192704,3301192959,SE
+3301192960,3301193215,CA
+3301193216,3301193727,SE
3301193728,3301195775,JP
3301195776,3301197823,DE
3301197824,3301199871,GB
3301199872,3301201919,US
-3301201920,3301203967,NL
+3301201920,3301202175,NL
+3301202176,3301202943,SE
+3301202944,3301203199,NL
+3301203200,3301203455,SE
+3301203456,3301203711,NL
+3301203712,3301203967,SE
3301203968,3301204991,DK
3301204992,3301205247,SE
3301205248,3301206015,DK
-3301206016,3301208063,SC
-3301208064,3301214207,US
-3301214208,3301216255,SE
-3301216256,3301220351,SC
-3301220352,3301222399,SE
+3301206016,3301208063,CH
+3301208064,3301216255,US
+3301216256,3301218303,ES
+3301218304,3301220351,BE
+3301220352,3301222399,IT
3301222400,3301224447,BE
-3301224448,3301226495,SC
+3301224448,3301226495,NO
3301226496,3301228543,US
3301228544,3301230591,IE
3301230592,3301232639,FI
-3301232640,3301236735,SC
+3301232640,3301234687,US
+3301234688,3301236735,EE
3301236736,3301238783,CA
3301238784,3301240831,US
3301240832,3301242879,SE
-3301242880,3301244927,SC
-3301244928,3301246975,SE
-3301246976,3301311487,SC
+3301242880,3301244927,GB
+3301244928,3301245439,US
+3301245440,3301246975,SE
+3301246976,3301310463,SC
+3301310464,3301310719,ZA
+3301310720,3301311487,SC
3301311488,3301313535,SE
3301313536,3301314559,SC
3301314560,3301315583,SE
3301315584,3301318655,SC
3301318656,3301375999,SE
-3301376000,3301441535,SC
-3301441536,3301445631,ZA
+3301376000,3301376767,SC
+3301376768,3301377023,US
+3301377024,3301377279,SC
+3301377280,3301377791,US
+3301377792,3301378047,SC
+3301378048,3301378559,US
+3301378560,3301379327,SC
+3301379328,3301379583,US
+3301379584,3301379839,SC
+3301379840,3301381631,US
+3301381632,3301382399,SC
+3301382400,3301384447,US
+3301384448,3301384703,SC
+3301384704,3301385471,US
+3301385472,3301385727,SC
+3301385728,3301389567,US
+3301389568,3301390335,SC
+3301390336,3301390591,US
+3301390592,3301391103,SC
+3301391104,3301391359,US
+3301391360,3301391615,SC
+3301391616,3301392127,US
+3301392128,3301392383,SC
+3301392384,3301394175,US
+3301394176,3301394431,SC
+3301394432,3301396479,US
+3301396480,3301396735,SC
+3301396736,3301397247,US
+3301397248,3301397503,SC
+3301397504,3301397759,US
+3301397760,3301398015,SC
+3301398016,3301398783,US
+3301398784,3301399039,SC
+3301399040,3301400575,US
+3301400576,3301400831,SC
+3301400832,3301401343,US
+3301401344,3301401855,SC
+3301401856,3301402111,US
+3301402112,3301402367,SC
+3301402368,3301402623,US
+3301402624,3301402879,SC
+3301402880,3301403391,US
+3301403392,3301403647,SC
+3301403648,3301404415,US
+3301404416,3301404671,SC
+3301404672,3301404927,US
+3301404928,3301405183,SC
+3301405184,3301407999,US
+3301408000,3301408255,SC
+3301408256,3301409535,US
+3301409536,3301409791,SC
+3301409792,3301411327,US
+3301411328,3301411583,SC
+3301411584,3301411839,US
+3301411840,3301412095,SC
+3301412096,3301412607,US
+3301412608,3301412863,SC
+3301412864,3301413887,US
+3301413888,3301414399,SC
+3301414400,3301417215,US
+3301417216,3301417471,SC
+3301417472,3301418751,US
+3301418752,3301419519,SC
+3301419520,3301420799,US
+3301420800,3301421567,SC
+3301421568,3301422079,US
+3301422080,3301422335,SC
+3301422336,3301422591,US
+3301422592,3301422847,SC
+3301422848,3301423615,US
+3301423616,3301423871,SC
+3301423872,3301424383,US
+3301424384,3301424639,SC
+3301424640,3301424895,US
+3301424896,3301425663,SC
+3301425664,3301426687,US
+3301426688,3301426943,SC
+3301426944,3301427199,US
+3301427200,3301427455,SC
+3301427456,3301429503,US
+3301429504,3301430015,SC
+3301430016,3301431039,US
+3301431040,3301431295,SC
+3301431296,3301431551,US
+3301431552,3301431807,SC
+3301431808,3301432575,US
+3301432576,3301433087,SC
+3301433088,3301434623,US
+3301434624,3301434879,SC
+3301434880,3301435903,US
+3301435904,3301436159,SC
+3301436160,3301436415,US
+3301436416,3301436927,SC
+3301436928,3301437183,US
+3301437184,3301437439,SC
+3301437440,3301438719,US
+3301438720,3301439231,SC
+3301439232,3301440255,US
+3301440256,3301440767,SC
+3301440768,3301441535,US
+3301441536,3301442351,ZA
+3301442352,3301442359,NG
+3301442360,3301442391,ZA
+3301442392,3301442399,NG
+3301442400,3301442415,ZA
+3301442416,3301442423,NG
+3301442424,3301442599,ZA
+3301442600,3301442607,NG
+3301442608,3301442679,ZA
+3301442680,3301442687,NG
+3301442688,3301442727,ZA
+3301442728,3301442735,NG
+3301442736,3301442823,ZA
+3301442824,3301442831,NG
+3301442832,3301443007,ZA
+3301443008,3301443015,NG
+3301443016,3301443295,ZA
+3301443296,3301443303,NG
+3301443304,3301443519,ZA
+3301443520,3301443527,NG
+3301443528,3301443591,ZA
+3301443592,3301443599,NG
+3301443600,3301443655,ZA
+3301443656,3301443663,NG
+3301443664,3301443695,ZA
+3301443696,3301443703,NG
+3301443704,3301443847,ZA
+3301443848,3301443855,NG
+3301443856,3301444383,ZA
+3301444384,3301444391,NG
+3301444392,3301444415,ZA
+3301444416,3301444431,NG
+3301444432,3301444599,ZA
+3301444600,3301444607,NG
+3301444608,3301445631,ZA
3301445632,3301453823,KE
3301453824,3301457919,ML
3301457920,3301462015,NG
@@ -95774,7 +97483,19 @@
3302496256,3302498303,EG
3302498304,3302502399,NA
3302502400,3302505471,AO
-3302505472,3302506495,NA
+3302505472,3302505969,NA
+3302505970,3302505971,AO
+3302505972,3302506055,NA
+3302506056,3302506057,AO
+3302506058,3302506083,NA
+3302506084,3302506085,AO
+3302506086,3302506165,NA
+3302506166,3302506167,AO
+3302506168,3302506191,NA
+3302506192,3302506193,AO
+3302506194,3302506387,NA
+3302506388,3302506391,AO
+3302506392,3302506495,NA
3302506496,3302514687,KE
3302514688,3302522879,ZA
3302522880,3302523903,KE
@@ -95821,6 +97542,7 @@
3302551040,3302551551,MU
3302551552,3302552063,EG
3302552064,3302552575,KE
+3302552576,3302552831,TZ
3302552832,3302553087,KE
3302553088,3302553343,EG
3302553344,3302553599,TZ
@@ -95889,7 +97611,7 @@
3302960384,3302960639,MR
3302960896,3302961151,BF
3302985728,3302987775,DJ
-3303013888,3303014399,KE
+3303013376,3303014399,KE
3303014400,3304062975,TN
3304062976,3304456191,SC
3304456192,3304521727,NG
@@ -96070,7 +97792,8 @@
3320300544,3320301567,ZA
3320301568,3320302591,SO
3320302592,3320303615,GM
-3320303616,3320304639,SC
+3320303616,3320304127,SC
+3320304128,3320304639,GH
3320304640,3320305663,ZW
3320305664,3320306687,MZ
3320306688,3320307711,LR
@@ -96250,7 +97973,13 @@
3322888192,3322945535,US
3322945536,3322951679,CN
3322951680,3322953727,US
-3322953728,3322961663,NL
+3322953728,3322956583,NL
+3322956584,3322956591,US
+3322956592,3322956599,IN
+3322956600,3322956607,SE
+3322956608,3322956615,ES
+3322956616,3322956623,DE
+3322956624,3322961663,NL
3322961664,3322969343,US
3322969344,3322970111,NL
3322970112,3323002879,CA
@@ -96372,7 +98101,9 @@
3323741440,3323741695,GB
3323741696,3323747327,US
3323747328,3323747583,GB
-3323747584,3323987967,US
+3323747584,3323805695,US
+3323805696,3323805951,GB
+3323805952,3323987967,US
3323987968,3323988223,KN
3323988224,3324031999,US
3324032000,3324032255,KN
@@ -97007,9 +98738,7 @@
3331647232,3331647487,CA
3331647488,3331649279,US
3331649280,3331649535,CA
-3331649536,3331798271,US
-3331798272,3331798527,AU
-3331798528,3331818495,US
+3331649536,3331818495,US
3331818496,3331818751,MX
3331818752,3331840111,US
3331840112,3331840115,CA
@@ -97143,7 +98872,9 @@
3333427968,3333428007,GB
3333428008,3333428008,US
3333428009,3333428223,GB
-3333428224,3333480191,US
+3333428224,3333444607,US
+3333444608,3333444863,SG
+3333444864,3333480191,US
3333480192,3333481471,DE
3333481472,3333517823,US
3333518336,3333519359,US
@@ -97455,7 +99186,13 @@
3338455040,3338455295,GB
3338455296,3338567679,US
3338567680,3338600447,CA
-3338600448,3338686463,US
+3338600448,3338600983,US
+3338600984,3338600991,CA
+3338600992,3338600999,BR
+3338601000,3338601007,MX
+3338601008,3338601015,JP
+3338601016,3338601023,AU
+3338601024,3338686463,US
3338686464,3338688511,AW
3338688512,3338770431,US
3338770432,3338772479,PR
@@ -97595,7 +99332,11 @@
3340490752,3340492799,CA
3340492800,3340584703,US
3340584704,3340584959,KW
-3340584960,3340660735,US
+3340584960,3340637439,US
+3340637440,3340637695,IE
+3340637696,3340639231,US
+3340639232,3340639295,IE
+3340639296,3340660735,US
3340661760,3340664831,US
3340664832,3340665855,CA
3340668928,3340677119,US
@@ -97701,7 +99442,9 @@
3341777920,3341778943,CA
3341778944,3341784575,US
3341784576,3341784831,CH
-3341784832,3341796607,US
+3341784832,3341795583,US
+3341795584,3341795839,GB
+3341795840,3341796607,US
3341796608,3341796863,AU
3341796864,3341797375,JP
3341797376,3341807615,US
@@ -98131,7 +99874,9 @@
3350146048,3350150143,US
3350150144,3350160639,CA
3350160640,3350160895,US
-3350160896,3350175743,CA
+3350160896,3350169855,CA
+3350169856,3350170111,US
+3350170112,3350175743,CA
3350176256,3350181887,CA
3350181888,3350183167,US
3350183168,3350200063,CA
@@ -98798,7 +100543,8 @@
3356070912,3356071423,BR
3356071424,3356072447,CL
3356073216,3356073471,AR
-3356073472,3356075263,BR
+3356073472,3356073983,CO
+3356073984,3356075263,BR
3356075264,3356076287,BO
3356076288,3356078079,BR
3356078080,3356078335,EC
@@ -98848,7 +100594,9 @@
3356105728,3356106751,SV
3356106752,3356107975,BR
3356107976,3356107983,IS
-3356107984,3356109119,BR
+3356107984,3356108063,BR
+3356108064,3356108071,IT
+3356108072,3356109119,BR
3356109120,3356109135,FR
3356109136,3356109263,BR
3356109264,3356109271,DE
@@ -98856,7 +100604,9 @@
3356109496,3356109503,IT
3356109504,3356109687,BR
3356109688,3356109695,CA
-3356109696,3356113919,BR
+3356109696,3356110527,BR
+3356110528,3356110543,US
+3356110544,3356113919,BR
3356113920,3356114943,UY
3356114944,3356123135,PE
3356123136,3356131839,AR
@@ -98871,7 +100621,8 @@
3356135936,3356136191,BR
3356136192,3356137471,EC
3356137472,3356137727,JM
-3356137728,3356138239,BR
+3356137728,3356137983,BR
+3356137984,3356138239,CO
3356138240,3356138495,US
3356138496,3356138751,BR
3356138752,3356139007,BO
@@ -99035,8 +100786,8 @@
3356390656,3356391167,CL
3356391168,3356391423,PA
3356393472,3356413439,CL
-3356413440,3356413823,CO
-3356413824,3356419839,CL
+3356413440,3356413951,CO
+3356413952,3356419839,CL
3356419840,3356419967,CO
3356419968,3356420863,CL
3356420864,3356421375,CO
@@ -99086,12 +100837,15 @@
3356980224,3356980479,BR
3356980480,3356980735,MX
3356981248,3356988415,MX
+3356988416,3356988671,BR
3356988672,3356989439,MX
+3356989440,3356989951,BR
3356989952,3356996607,MX
3356996608,3356997631,BR
3356997632,3356998911,MX
3356998912,3356999167,BR
3356999168,3357003007,MX
+3357003008,3357003263,BR
3357003776,3357007871,MX
3357007872,3357011967,BR
3357011968,3357015551,MX
@@ -99182,9 +100936,8 @@
3357451144,3357451151,HN
3357451152,3357451263,GT
3357451264,3357451519,HN
-3357451520,3357451575,GT
-3357451576,3357451583,NI
-3357451584,3357452287,GT
+3357451520,3357451775,NI
+3357451776,3357452287,GT
3357452288,3357452799,HN
3357452800,3357453055,NI
3357453056,3357453071,GT
@@ -99218,7 +100971,9 @@
3357476032,3357476047,VE
3357476048,3357476071,AR
3357476072,3357476079,VE
-3357476080,3357476287,AR
+3357476080,3357476255,AR
+3357476256,3357476271,VE
+3357476272,3357476287,AR
3357476288,3357476351,VE
3357476352,3357476479,AR
3357476480,3357476607,EC
@@ -99246,7 +101001,9 @@
3357479872,3357479879,CO
3357479880,3357480103,AR
3357480104,3357480111,CO
-3357480112,3357480335,AR
+3357480112,3357480159,AR
+3357480160,3357480175,CO
+3357480176,3357480335,AR
3357480336,3357480343,CO
3357480344,3357480359,AR
3357480360,3357480367,CO
@@ -99309,6 +101066,7 @@
3357633792,3357634815,MX
3357635072,3357635327,MX
3357635584,3357635839,MX
+3357635840,3357636095,BR
3357636096,3357637887,MX
3357638656,3357640703,BR
3357640704,3357644799,MX
@@ -99394,8 +101152,7 @@
3358151168,3358151263,AR
3358151264,3358151271,EC
3358151272,3358151423,AR
-3358151424,3358151551,EC
-3358151552,3358151679,AR
+3358151424,3358151679,EC
3358151680,3358152703,PE
3358152704,3358152959,US
3358152960,3358153215,EC
@@ -99428,8 +101185,8 @@
3358392320,3358457855,AR
3358457856,3358523391,PA
3358523392,3358523903,VE
-3358523904,3358524415,AR
-3358524416,3358525951,VE
+3358523904,3358525439,AR
+3358525440,3358525951,VE
3358525952,3358526463,AR
3358526464,3358527487,VE
3358527488,3358530303,AR
@@ -99439,27 +101196,25 @@
3358531584,3358531839,AR
3358531840,3358532351,VE
3358532352,3358532863,AR
-3358532864,3358534399,VE
+3358532864,3358533631,VE
+3358533632,3358533887,AR
+3358533888,3358534399,VE
3358534400,3358534655,AR
3358534656,3358534911,VE
-3358534912,3358535679,AR
-3358535680,3358536447,VE
-3358536448,3358536703,AR
-3358536704,3358539519,VE
-3358539520,3358539775,AR
-3358539776,3358543871,VE
+3358534912,3358537727,AR
+3358537728,3358539519,VE
+3358539520,3358543615,AR
+3358543616,3358543871,VE
3358543872,3358544127,MX
3358544128,3358544383,AR
3358544384,3358545407,VE
-3358545408,3358545663,AR
-3358545664,3358548223,VE
+3358545408,3358547967,AR
+3358547968,3358548223,VE
3358548224,3358548479,AR
3358548480,3358548623,VE
3358548624,3358548639,AR
3358548640,3358549759,VE
-3358549760,3358550015,AR
-3358550016,3358552063,VE
-3358552064,3358553087,AR
+3358549760,3358553087,AR
3358553088,3358553599,VE
3358553600,3358553855,AR
3358553856,3358554879,VE
@@ -99471,7 +101226,9 @@
3358559232,3358560255,VE
3358560256,3358561791,AR
3358561792,3358562303,VE
-3358562304,3358563327,PE
+3358562304,3358562399,AR
+3358562400,3358562407,PE
+3358562408,3358563327,AR
3358563328,3358564095,CO
3358564096,3358564351,MX
3358564352,3358566975,AR
@@ -99635,11 +101392,7 @@
3360229014,3360229023,US
3360229024,3360231775,CL
3360231776,3360231807,US
-3360231808,3360244223,CL
-3360244224,3360244479,CO
-3360244480,3360244735,CL
-3360244736,3360245759,CO
-3360245760,3360246783,CL
+3360231808,3360246783,CL
3360246784,3360247039,AR
3360247040,3360251903,CL
3360251904,3360253951,BO
@@ -99675,31 +101428,7 @@
3360538624,3360667647,MX
3360667648,3360669695,BR
3360669696,3360686079,MX
-3360686080,3360694271,AR
-3360694272,3360694439,CO
-3360694440,3360694447,AR
-3360694448,3360694463,CO
-3360694464,3360694783,AR
-3360694784,3360695039,CO
-3360695040,3360695079,AR
-3360695080,3360695087,CO
-3360695088,3360695167,AR
-3360695168,3360695199,CO
-3360695200,3360695215,AR
-3360695216,3360695295,CO
-3360695296,3360696447,AR
-3360696448,3360696511,CO
-3360696512,3360696527,AR
-3360696528,3360697343,CO
-3360697344,3360697599,AR
-3360697600,3360697855,CO
-3360697856,3360698111,AR
-3360698112,3360700543,CO
-3360700544,3360701183,AR
-3360701184,3360701695,CO
-3360701696,3360701951,AR
-3360701952,3360702207,CO
-3360702208,3360705535,AR
+3360686080,3360705535,AR
3360705536,3360705791,US
3360705792,3360707071,AR
3360707072,3360707327,US
@@ -99815,9 +101544,7 @@
3362343424,3362343679,US
3362343680,3362344447,AR
3362344448,3362344959,US
-3362344960,3362345983,AR
-3362345984,3362346495,US
-3362346496,3362348799,AR
+3362344960,3362348799,AR
3362348800,3362349055,US
3362349056,3362351103,CR
3362351104,3362353151,AR
@@ -99952,12 +101679,12 @@
3363504128,3363512319,PE
3363512320,3363554047,AR
3363554048,3363554175,US
-3363554176,3363554943,AR
-3363554944,3363555071,US
-3363555072,3363555839,AR
-3363555840,3363556223,US
-3363556224,3363556351,AR
-3363556352,3363556607,US
+3363554176,3363554303,AR
+3363554304,3363554431,BR
+3363554432,3363554943,AR
+3363554944,3363555327,US
+3363555328,3363555839,AR
+3363555840,3363556607,US
3363556608,3363557375,AR
3363557376,3363559423,BZ
3363559424,3363561471,AR
@@ -99986,7 +101713,11 @@
3363708928,3363713023,CL
3363713024,3363713279,EC
3363713280,3363714047,CL
-3363714048,3363717119,PE
+3363714048,3363715583,PE
+3363715584,3363715839,CL
+3363715840,3363716607,PE
+3363716608,3363716863,AR
+3363716864,3363717119,PE
3363717120,3363733503,CL
3363733504,3363831807,AR
3363831808,3367723007,BR
@@ -99999,7 +101730,9 @@
3367804928,3367840767,BR
3367840768,3367841023,HN
3367841024,3367841039,CA
-3367841040,3367841791,HN
+3367841040,3367841407,HN
+3367841408,3367841423,CA
+3367841424,3367841791,HN
3367841792,3368052991,BR
3368052992,3368053247,PE
3368053760,3368086527,BR
@@ -100122,7 +101855,9 @@
3381947392,3381952511,BR
3381952512,3381960703,MX
3381960704,3381962751,BR
-3381962752,3381963775,HN
+3381962752,3381963559,HN
+3381963560,3381963567,FR
+3381963568,3381963775,HN
3381963776,3381968895,BR
3381968896,3381972991,MX
3381972992,3381974015,BR
@@ -100178,7 +101913,8 @@
3382661120,3382662143,MX
3382662144,3382665215,BR
3382665216,3382669311,MX
-3382669312,3382670335,GT
+3382669312,3382669567,SV
+3382669568,3382670335,GT
3382670336,3382672383,BR
3382672384,3382677503,MX
3382677504,3382681599,BR
@@ -100389,7 +102125,8 @@
3389087744,3389087999,HK
3389088000,3389092351,SG
3389092352,3389092863,PH
-3389092864,3389093887,AU
+3389092864,3389093631,HK
+3389093632,3389093887,AU
3389093888,3389095935,IN
3389095936,3389104127,SG
3389104128,3389112319,SB
@@ -100428,6 +102165,8 @@
3389211648,3389212671,TH
3389212672,3389213183,IN
3389213184,3389213439,AU
+3389213440,3389213695,MY
+3389213696,3389213951,US
3389213952,3389214207,IN
3389214208,3389214463,SG
3389214464,3389214719,AU
@@ -100494,7 +102233,7 @@
3389326336,3389326847,TW
3389326848,3389327359,AU
3389327360,3389329407,TW
-3389329408,3389333503,PH
+3389329408,3389333503,US
3389333504,3389341695,BD
3389341696,3389345791,JP
3389345792,3389349887,TH
@@ -100610,8 +102349,7 @@
3389595648,3389595903,CN
3389595904,3389596159,AU
3389596160,3389596671,CN
-3389596672,3389597439,SG
-3389597440,3389597695,MY
+3389596672,3389597695,MY
3389597696,3389599743,MN
3389599744,3389600255,CN
3389600256,3389600511,AU
@@ -100641,7 +102379,7 @@
3389609472,3389609727,SG
3389609728,3389609983,AU
3389609984,3389610239,NZ
-3389610240,3389610495,TH
+3389610240,3389610495,SG
3389610752,3389611519,IN
3389611520,3389612031,AU
3389612032,3389616127,MY
@@ -100715,7 +102453,7 @@
3389919232,3389931519,NZ
3389931520,3389932031,CN
3389932032,3389932287,AU
-3389932288,3389932799,JP
+3389932288,3389932799,HK
3389932800,3389933055,CN
3389933056,3389933567,PK
3389933568,3389933823,IN
@@ -100804,6 +102542,7 @@
3390316544,3390325247,NZ
3390325248,3390325503,CN
3390325504,3390325759,AU
+3390325760,3390326015,PG
3390326016,3390327807,AU
3390327808,3390328575,NZ
3390328576,3390328831,CN
@@ -100820,7 +102559,6 @@
3390334464,3390335231,NZ
3390335232,3390335487,TH
3390335488,3390336511,ID
-3390336512,3390336767,JP
3390336768,3390337023,HK
3390337024,3390337279,GU
3390337280,3390337535,NZ
@@ -100832,8 +102570,7 @@
3390339072,3390339327,CN
3390339328,3390339839,NZ
3390339840,3390340351,JP
-3390340352,3390340607,CN
-3390340864,3390341119,CN
+3390340352,3390341119,CN
3390341120,3390375935,KR
3390375936,3390377983,AU
3390377984,3390382079,NZ
@@ -100884,20 +102621,26 @@
3390767104,3390769407,NZ
3390769408,3390769663,IN
3390769664,3390770175,TH
+3390770176,3390770431,CN
3390770432,3390770687,AU
+3390770688,3390770943,CN
3390770944,3390771199,AU
3390771200,3390775295,SG
3390775296,3390790399,NZ
3390790400,3390790655,AU
3390790656,3390801919,NZ
3390801920,3390802431,CN
-3390802432,3390825727,NZ
-3390826496,3390832639,NZ
+3390802432,3390819583,NZ
+3390820352,3390832639,NZ
3390832640,3390963711,TH
3390963712,3391094783,KR
3391094784,3391356927,JP
-3391356928,3391388159,NZ
-3391388672,3391435775,NZ
+3391356928,3391364095,NZ
+3391364352,3391375871,NZ
+3391376128,3391388159,NZ
+3391388672,3391414783,NZ
+3391414784,3391415039,CN
+3391415040,3391435775,NZ
3391436288,3391441407,NZ
3391441408,3391441663,PH
3391441664,3391444479,NZ
@@ -101354,6 +103097,7 @@
3391900416,3391901695,AU
3391901696,3391905791,PK
3391905792,3391906047,TH
+3391906048,3391906303,CN
3391906304,3391906815,AU
3391906816,3391907839,PH
3391907840,3391909887,BD
@@ -101432,6 +103176,7 @@
3392102400,3392106495,CN
3392106496,3392108543,IN
3392108544,3392109567,AU
+3392109568,3392109823,CN
3392109824,3392110079,PH
3392110080,3392110335,CN
3392110336,3392110591,IN
@@ -101451,9 +103196,12 @@
3392130816,3392135167,ID
3392135168,3392143359,TH
3392143360,3392208895,JP
-3392208896,3392287743,NZ
+3392208896,3392217343,NZ
+3392217600,3392286719,NZ
+3392286976,3392287743,NZ
3392287744,3392288767,NP
-3392288768,3392324607,NZ
+3392288768,3392293887,NZ
+3392294400,3392324607,NZ
3392324608,3392325119,AU
3392325120,3392325631,NZ
3392325632,3392326655,ID
@@ -101478,6 +103226,7 @@
3392407552,3392409599,ID
3392409600,3392413695,JP
3392413696,3392413951,PK
+3392413952,3392414463,CN
3392414464,3392414719,HK
3392414720,3392415231,AU
3392415232,3392415487,JP
@@ -101487,6 +103236,7 @@
3392416256,3392416767,HK
3392416768,3392417023,IN
3392417024,3392417535,AU
+3392417536,3392417791,CN
3392417792,3392418559,ID
3392418560,3392418815,SG
3392418816,3392419071,ID
@@ -101510,6 +103260,7 @@
3392440832,3392441343,BD
3392441344,3392441855,ID
3392441856,3392442111,AU
+3392442112,3392442623,CN
3392442624,3392442879,AU
3392442880,3392443391,ID
3392443392,3392443647,IN
@@ -101534,7 +103285,9 @@
3392499712,3392503807,JP
3392503808,3392505343,HK
3392505344,3392505855,IN
-3392506880,3392507903,HK
+3392506880,3392507135,CN
+3392507136,3392507647,HK
+3392507648,3392507903,CN
3392507904,3392508927,KH
3392508928,3392510975,HK
3392510976,3392511999,MM
@@ -101625,7 +103378,7 @@
3392861696,3392862207,AU
3392862208,3392863231,KI
3392863232,3392864255,BD
-3392864256,3392864511,CN
+3392864256,3392864767,CN
3392864768,3392865279,IN
3392865280,3392866303,NU
3392866304,3392880639,AU
@@ -101652,6 +103405,7 @@
3392924672,3392924927,CN
3392924928,3392925183,AU
3392925184,3392925695,VN
+3392925696,3392925951,CN
3392925952,3392926719,AU
3392926720,3392927231,IN
3392927232,3392927743,AU
@@ -101711,7 +103465,9 @@
3393025792,3393026047,AU
3393026048,3393026559,IN
3393026560,3393026815,AU
+3393026816,3393027071,CN
3393027072,3393027839,ID
+3393027840,3393028095,CN
3393028096,3393060863,AU
3393060864,3393062911,FJ
3393062912,3393069055,ID
@@ -101746,8 +103502,13 @@
3393187840,3393189887,NP
3393189888,3393190911,CN
3393190912,3393191167,IN
+3393191168,3393191423,CN
3393191424,3393191935,SB
-3393191936,3393257471,HK
+3393191936,3393208063,HK
+3393208064,3393208831,JP
+3393208832,3393219839,HK
+3393219840,3393220607,JP
+3393220608,3393257471,HK
3393257472,3393260031,CN
3393260032,3393260543,BD
3393260544,3393265663,AU
@@ -101771,7 +103532,9 @@
3393367040,3393372159,IN
3393372160,3393374975,HK
3393374976,3393375743,SG
-3393375744,3393388543,HK
+3393375744,3393375999,HK
+3393376000,3393376255,TW
+3393376256,3393388543,HK
3393388544,3393389567,CN
3393389568,3393390591,IN
3393390592,3393392639,ID
@@ -101876,9 +103639,11 @@
3393855744,3393855999,NZ
3393856000,3393856255,AU
3393856256,3393856511,HK
+3393856512,3393856767,CN
3393856768,3393857023,SG
3393857024,3393857535,NZ
3393857536,3393858047,HK
+3393858048,3393858303,CN
3393858304,3393858559,ID
3393858560,3393858815,AU
3393858816,3393859071,ID
@@ -101886,7 +103651,8 @@
3393859328,3393859583,JP
3393859584,3393860095,AU
3393860096,3393860607,HK
-3393860608,3393861631,IN
+3393860608,3393860863,CN
+3393860864,3393861375,IN
3393861632,3393861887,VN
3393861888,3393862143,AU
3393862144,3393862655,VN
@@ -101947,9 +103713,7 @@
3394078720,3394078975,AU
3394078976,3394079231,IN
3394079232,3394079743,PH
-3394079744,3394087471,HK
-3394087472,3394087487,CN
-3394087488,3394111487,HK
+3394079744,3394111487,HK
3394111488,3394113535,CN
3394113536,3394117631,SG
3394117632,3394121727,AU
@@ -102028,6 +103792,7 @@
3394503680,3394507263,CN
3394507264,3394507775,JP
3394507776,3394508287,AU
+3394508288,3394508543,CN
3394508544,3394508799,PH
3394508800,3394510847,CN
3394510848,3394514943,BD
@@ -102089,20 +103854,11 @@
3394830336,3394831359,HK
3394831360,3394832383,NZ
3394832384,3394834431,CN
-3394834432,3394834559,HK
-3394834560,3394834575,JP
-3394834576,3394834591,SG
-3394834592,3394834599,JP
-3394834600,3394834607,SG
-3394834608,3394834687,HK
+3394834432,3394834687,HK
3394834688,3394834943,JP
3394834944,3394834959,HK
3394834960,3394834975,JP
-3394834976,3394834983,HK
-3394834984,3394834991,SG
-3394834992,3394835055,HK
-3394835056,3394835071,SG
-3394835072,3394835199,HK
+3394834976,3394835199,HK
3394835200,3394835455,JP
3394835456,3394835583,SG
3394835584,3394835711,JP
@@ -102123,7 +103879,9 @@
3394859008,3394860031,JP
3394860032,3394860543,ID
3394860544,3394860799,IN
-3394861056,3394862079,HK
+3394860800,3394861055,CN
+3394861056,3394861311,IN
+3394861312,3394862079,HK
3394862080,3394863103,KR
3394863104,3394871295,NZ
3394871296,3394879487,AU
@@ -102142,6 +103900,7 @@
3394904320,3394904575,IN
3394904576,3394905087,AU
3394905088,3394905343,BN
+3394905344,3394905599,CN
3394905600,3394906111,AU
3394906112,3394906367,IN
3394906368,3394906623,AU
@@ -102155,12 +103914,14 @@
3394936832,3394940927,AU
3394940928,3394945023,JP
3394945024,3394945279,IN
+3394945280,3394945535,CN
3394945536,3394946047,ID
3394946048,3394946303,CN
3394946304,3394946559,AU
3394946560,3394947071,ID
3394947072,3394948095,BD
3394948096,3394948351,IN
+3394948352,3394948607,CN
3394948608,3394949119,AU
3394949120,3394953215,JP
3394953216,3394957311,CN
@@ -102225,10 +103986,12 @@
3395175936,3395176191,SG
3395176192,3395176703,AU
3395176704,3395176959,TH
+3395176960,3395177215,CN
3395177216,3395177471,HK
3395177472,3395177983,TH
3395177984,3395178495,AU
3395178496,3395178751,ID
+3395178752,3395179007,CN
3395179008,3395179263,VN
3395179264,3395180031,ID
3395180032,3395180287,JP
@@ -102331,6 +104094,7 @@
3397216768,3397217023,IN
3397217024,3397217279,SG
3397217280,3397217535,AU
+3397217536,3397217791,CN
3397217792,3397218047,NZ
3397218048,3397218303,AU
3397218304,3397222399,CN
@@ -102406,7 +104170,8 @@
3397500928,3397501951,BD
3397501952,3397503999,IN
3397504000,3397505023,TH
-3397505024,3397506559,IN
+3397505024,3397505279,CN
+3397505280,3397506559,IN
3397506560,3397506815,AU
3397506816,3397507071,IN
3397507072,3397507583,ID
@@ -102431,6 +104196,7 @@
3397525504,3397526527,AU
3397526528,3397527039,VN
3397527040,3397527295,AU
+3397527296,3397527551,CN
3397527552,3397528575,IN
3397528576,3397530623,AU
3397530624,3397531647,ID
@@ -102595,6 +104361,7 @@
3398606848,3398610943,CN
3398610944,3398612991,ID
3398612992,3398613503,PH
+3398613504,3398613759,CN
3398613760,3398614015,AU
3398614016,3398615039,CN
3398615040,3398616063,IN
@@ -102604,15 +104371,11 @@
3398623232,3398631423,ID
3398631424,3398634439,JP
3398634440,3398634447,KR
-3398634448,3398636543,JP
-3398636544,3398636575,HK
-3398636576,3398637119,JP
+3398634448,3398637119,JP
3398637120,3398637183,HK
3398637184,3398639903,JP
3398639904,3398639907,MY
-3398639908,3398640671,JP
-3398640672,3398640695,SG
-3398640696,3398642431,JP
+3398639908,3398642431,JP
3398642432,3398642687,AU
3398642688,3398643679,JP
3398643680,3398643695,NZ
@@ -102663,6 +104426,7 @@
3398895616,3398897663,ID
3398897664,3398901759,FJ
3398901760,3398902015,AU
+3398902016,3398902271,CN
3398902272,3398902783,PH
3398902784,3398903807,AU
3398903808,3398905855,TH
@@ -102684,6 +104448,7 @@
3399024640,3399025663,CN
3399025664,3399026175,TW
3399026176,3399026431,SG
+3399026432,3399026687,CN
3399026688,3399028735,HK
3399028736,3399032831,ID
3399032832,3399036927,IN
@@ -102720,6 +104485,7 @@
3399409664,3399413759,JP
3399413760,3399414015,SG
3399414016,3399414271,AU
+3399414272,3399414527,CN
3399414528,3399414783,AU
3399414784,3399415807,VN
3399416832,3399417087,ID
@@ -102773,9 +104539,7 @@
3399662592,3399663615,IN
3399663616,3399671807,ID
3399671808,3399679999,IN
-3399680000,3399680303,HK
-3399680304,3399680319,DE
-3399680320,3399688191,HK
+3399680000,3399688191,HK
3399688192,3399696383,SG
3399696384,3399712767,PK
3399712768,3399720959,KR
@@ -102806,7 +104570,9 @@
3399835648,3399839743,CN
3399839744,3399841791,JP
3399841792,3399842815,HK
-3399842816,3399843839,AU
+3399842816,3399843327,AU
+3399843328,3399843583,US
+3399843584,3399843839,AU
3399843840,3399852031,TW
3399852032,3399856127,JP
3399856128,3399860223,CN
@@ -102842,12 +104608,7 @@
3399983746,3399991295,US
3399991296,3399995391,IN
3399995392,3399999487,KR
-3399999488,3400000475,JP
-3400000476,3400000479,US
-3400000480,3400000487,AU
-3400000488,3400002303,JP
-3400002304,3400002367,HK
-3400002368,3400004607,JP
+3399999488,3400004607,JP
3400004608,3400004863,AU
3400004864,3400006143,JP
3400006144,3400006399,SG
@@ -102908,6 +104669,7 @@
3400257536,3400259583,HK
3400259584,3400261631,CN
3400261632,3400263679,JP
+3400263680,3400263935,CN
3400263936,3400264191,ID
3400264192,3400264447,IN
3400264448,3400264703,CN
@@ -102920,6 +104682,7 @@
3400269824,3400270847,CN
3400270848,3400271359,VN
3400271360,3400271615,AU
+3400271616,3400271871,CN
3400271872,3400273919,AU
3400273920,3400275967,TH
3400275968,3400278015,JP
@@ -102930,6 +104693,7 @@
3400335360,3400336383,CN
3400336384,3400336639,PH
3400336640,3400336895,JP
+3400336896,3400337151,CN
3400337152,3400337407,PH
3400337408,3400339455,CN
3400339456,3400341503,ID
@@ -102999,9 +104763,7 @@
3400648816,3400648831,HK
3400648832,3400649727,JP
3400649728,3400649983,SG
-3400649984,3400650143,JP
-3400650144,3400650159,HK
-3400650160,3400650409,JP
+3400649984,3400650409,JP
3400650410,3400650410,AU
3400650411,3400650495,JP
3400650496,3400654847,AU
@@ -103224,7 +104986,7 @@
3406083072,3406083327,CN
3406083328,3406084607,AU
3406084608,3406084863,CN
-3406084864,3406089471,AU
+3406085120,3406089471,AU
3406089472,3406089727,CN
3406089728,3406090239,AU
3406090240,3406091263,CN
@@ -103399,8 +105161,7 @@
3406454528,3406454783,CN
3406454784,3406462207,AU
3406462208,3406462463,CN
-3406462464,3406512383,AU
-3406512640,3406513663,AU
+3406462464,3406513663,AU
3406513664,3406513919,CN
3406513920,3406514175,AU
3406514176,3406514431,IN
@@ -103505,8 +105266,7 @@
3406684160,3406684671,CN
3406684672,3406684927,AU
3406684928,3406685183,CN
-3406685184,3406685951,AU
-3406686208,3406686463,AU
+3406685184,3406686463,AU
3406686464,3406686719,CN
3406686720,3406696959,AU
3406696960,3406697215,IN
@@ -103590,6 +105350,7 @@
3406836736,3406838271,AU
3406838272,3406838527,CN
3406838528,3406839551,AU
+3406839552,3406839807,CN
3406839808,3406857471,AU
3406857472,3406857727,CN
3406857728,3406864639,AU
@@ -103649,7 +105410,7 @@
3406948864,3406950399,AU
3406950400,3406951423,NF
3406951424,3406952447,AU
-3406952448,3406952703,CN
+3406952448,3406952959,CN
3406952960,3406954239,AU
3406954240,3406954495,CN
3406954496,3406955007,AU
@@ -103701,6 +105462,7 @@
3407008768,3407009535,AU
3407009536,3407009791,CN
3407009792,3407020287,AU
+3407020288,3407020543,CN
3407020544,3407020799,AU
3407020800,3407021055,IN
3407021056,3407021311,ID
@@ -103737,6 +105499,7 @@
3407054336,3407056895,AU
3407056896,3407057151,CN
3407057152,3407057663,AU
+3407057664,3407057919,CN
3407057920,3407058175,AU
3407058176,3407058431,CN
3407058432,3407059967,AU
@@ -103763,11 +105526,13 @@
3407090176,3407095807,AU
3407095808,3407096319,CN
3407096576,3407096831,AU
+3407096832,3407097087,CN
3407097088,3407097855,AU
3407097856,3407098111,CN
3407098112,3407101183,AU
3407101184,3407101439,CN
3407101440,3407101695,AU
+3407101696,3407101951,MY
3407101952,3407102207,AU
3407102208,3407102463,CN
3407102464,3407104255,AU
@@ -103868,7 +105633,9 @@
3407260160,3407260415,CN
3407260416,3407261695,AU
3407261696,3407263743,HK
-3407263744,3407266303,AU
+3407263744,3407264255,AU
+3407264256,3407264511,HK
+3407264512,3407266303,AU
3407266304,3407266559,CN
3407266560,3407268863,AU
3407268864,3407269119,US
@@ -103882,8 +105649,7 @@
3407282176,3407282431,CN
3407282688,3407294207,AU
3407294208,3407294463,CN
-3407294464,3407295487,AU
-3407295744,3407297791,AU
+3407294464,3407297791,AU
3407297792,3407298559,CN
3407298560,3407300863,AU
3407300864,3407301119,CN
@@ -103898,7 +105664,9 @@
3407309568,3407309823,CN
3407309824,3407310847,AU
3407310848,3407311103,CN
-3407311104,3407315455,AU
+3407311104,3407314687,AU
+3407314688,3407314943,HK
+3407314944,3407315455,AU
3407315456,3407315711,CN
3407315712,3407318015,AU
3407318016,3407318527,CN
@@ -103928,8 +105696,7 @@
3407352320,3407352575,CN
3407352576,3407354623,AU
3407354624,3407354879,CN
-3407354880,3407357439,AU
-3407357696,3407358719,AU
+3407354880,3407358719,AU
3407358720,3407358975,CN
3407358976,3407360511,AU
3407360512,3407361023,ID
@@ -104034,14 +105801,14 @@
3407473920,3407475199,AU
3407475200,3407475455,CN
3407475456,3407480831,AU
-3407480832,3407481223,JP
-3407481224,3407481231,AU
-3407481232,3407481599,JP
+3407480832,3407481599,JP
3407481600,3407481855,AU
3407481856,3407482111,CN
3407482112,3407487487,AU
3407487488,3407487743,CN
-3407487744,3407491327,AU
+3407487744,3407489023,AU
+3407489024,3407489279,HK
+3407489280,3407491327,AU
3407491328,3407491839,CN
3407491840,3407492863,AU
3407492864,3407493631,CN
@@ -104111,8 +105878,7 @@
3407549440,3407549695,CN
3407549696,3407549951,AU
3407549952,3407550463,CN
-3407550464,3407553023,AU
-3407553280,3407554559,AU
+3407550464,3407554559,AU
3407554560,3407554815,CN
3407554816,3407555839,AU
3407555840,3407556095,CN
@@ -104184,6 +105950,7 @@
3407644928,3407645695,AU
3407645696,3407645951,CN
3407645952,3407646463,AU
+3407646464,3407646719,MY
3407646720,3407646975,AU
3407646976,3407647231,CN
3407647232,3407652095,AU
@@ -104286,8 +106053,7 @@
3407771904,3407772159,CN
3407772160,3407772415,AU
3407772416,3407772671,CN
-3407772672,3407773439,AU
-3407773696,3407779839,AU
+3407772672,3407779839,AU
3407779840,3407780095,CN
3407780096,3407780863,AU
3407780864,3407781119,CN
@@ -104520,8 +106286,7 @@
3408032768,3408033023,LK
3408033024,3408033279,IN
3408033280,3408033791,ID
-3408033792,3408035071,AU
-3408035328,3408039935,AU
+3408033792,3408039935,AU
3408039936,3408040191,VN
3408040192,3408040703,AU
3408040704,3408040959,CN
@@ -104529,6 +106294,7 @@
3408041472,3408041727,CN
3408041728,3408041983,AU
3408041984,3408042495,CN
+3408042496,3408042751,MY
3408042752,3408044287,AU
3408044288,3408044799,CN
3408044800,3408050943,AU
@@ -104539,8 +106305,7 @@
3408055296,3408056319,CN
3408056320,3408062463,AU
3408062464,3408062719,CN
-3408062720,3408063999,AU
-3408064256,3408064511,AU
+3408062720,3408064511,AU
3408064512,3408064767,CN
3408065024,3408065279,CN
3408065280,3408065791,AU
@@ -104560,7 +106325,7 @@
3409387008,3409387263,CN
3409387264,3409396479,AU
3409396480,3409396735,PH
-3409396992,3409403135,AU
+3409396736,3409403135,AU
3409403136,3409403391,CN
3409403392,3409405183,AU
3409405184,3409405439,CN
@@ -104651,7 +106416,7 @@
3409500416,3409502975,AU
3409502976,3409503487,CN
3409503488,3409503999,AU
-3409504256,3409504511,CN
+3409504000,3409504511,CN
3409504512,3409506303,AU
3409506304,3409506559,CN
3409506560,3409506815,PH
@@ -104761,7 +106526,8 @@
3410813952,3410814975,IN
3410814976,3410817023,HK
3410817024,3410818047,CN
-3410818048,3410819071,JP
+3410818048,3410818815,JP
+3410818816,3410819071,CN
3410819072,3410820095,IN
3410820096,3410821119,LA
3410821120,3410853887,TW
@@ -104819,6 +106585,7 @@
3411033088,3411034111,NZ
3411034112,3411050495,HK
3411050496,3411050751,PK
+3411050752,3411051007,CN
3411051008,3411051263,PK
3411051264,3411051519,SG
3411051520,3411052543,CN
@@ -104832,7 +106599,27 @@
3411085312,3411086335,KR
3411086336,3411087359,JP
3411087360,3411091455,CN
-3411091456,3411099647,SG
+3411091456,3411092223,SG
+3411092224,3411092479,JP
+3411092480,3411092735,SG
+3411092736,3411092991,JP
+3411092992,3411093055,SG
+3411093056,3411093087,JP
+3411093088,3411093119,SG
+3411093120,3411093215,JP
+3411093216,3411093247,SG
+3411093248,3411093503,JP
+3411093504,3411093631,SG
+3411093632,3411093695,JP
+3411093696,3411093759,SG
+3411093760,3411094015,JP
+3411094016,3411094279,SG
+3411094280,3411094287,JP
+3411094288,3411094319,SG
+3411094320,3411094334,JP
+3411094335,3411094527,SG
+3411094528,3411095295,JP
+3411095296,3411099647,SG
3411099648,3411107839,MM
3411107840,3411111935,LK
3411111936,3411116031,JP
@@ -104911,6 +106698,7 @@
3411468288,3411470335,JP
3411470336,3411472383,HK
3411472384,3411474943,JP
+3411474944,3411475199,CN
3411475200,3411475455,AU
3411475456,3411475967,HK
3411475968,3411476479,CN
@@ -104934,9 +106722,11 @@
3411623936,3411640319,AU
3411640320,3411641343,JP
3411641344,3411641599,IN
+3411641600,3411641855,CN
3411641856,3411642367,IN
3411642368,3411643391,CN
3411643392,3411644415,VN
+3411644416,3411644671,CN
3411644672,3411644927,AU
3411644928,3411645951,ID
3411645952,3411646207,SG
@@ -104966,6 +106756,7 @@
3411795968,3411804159,AU
3411804160,3411805183,CN
3411805184,3411805695,PK
+3411805696,3411805951,CN
3411805952,3411806207,AU
3411806208,3411808255,PH
3411808256,3411810303,JP
@@ -105003,9 +106794,7 @@
3412213760,3412221951,AU
3412221952,3412230143,IN
3412230144,3412246527,HK
-3412246528,3412249903,AU
-3412249904,3412249919,SG
-3412249920,3412253695,AU
+3412246528,3412253695,AU
3412253696,3412254719,JP
3412254720,3412262911,NR
3412262912,3412264959,JP
@@ -105041,7 +106830,9 @@
3412340736,3412342783,HK
3412342784,3412343039,AU
3412343040,3412343295,HK
+3412343296,3412343551,CN
3412343552,3412343807,AU
+3412343808,3412344063,CN
3412344064,3412344319,AU
3412344320,3412344575,SG
3412344576,3412344831,CN
@@ -105122,7 +106913,7 @@
3413262336,3413263359,PH
3413263360,3413264383,IN
3413264384,3413264639,SG
-3413264640,3413264895,AU
+3413264640,3413264895,ID
3413264896,3413265407,SG
3413265408,3413266431,AU
3413266432,3413270527,CN
@@ -105258,7 +107049,9 @@
3413659904,3413660159,SG
3413660160,3413661183,JP
3413661184,3413661439,SG
-3413661440,3413662719,JP
+3413661440,3413661951,JP
+3413661952,3413662463,SG
+3413662464,3413662719,JP
3413662720,3413662975,SG
3413662976,3413664255,JP
3413664256,3413664511,SG
@@ -105266,9 +107059,7 @@
3413665024,3413665983,SG
3413665984,3413666047,JP
3413666048,3413666303,SG
-3413666304,3413666463,JP
-3413666464,3413666495,SG
-3413666496,3413666815,JP
+3413666304,3413666815,JP
3413666816,3413667583,SG
3413667584,3413667839,JP
3413667840,3413670399,SG
@@ -105312,9 +107103,7 @@
3413679744,3413679807,SG
3413679808,3413679871,JP
3413679872,3413680127,SG
-3413680128,3413680311,JP
-3413680312,3413680315,SG
-3413680316,3413680639,JP
+3413680128,3413680639,JP
3413680640,3413680895,SG
3413680896,3413681151,JP
3413681152,3413681343,SG
@@ -105338,9 +107127,7 @@
3413685952,3413686271,SG
3413686272,3413686335,JP
3413686336,3413686368,SG
-3413686369,3413686687,JP
-3413686688,3413686719,SG
-3413686720,3413686783,JP
+3413686369,3413686783,JP
3413686784,3413687807,SG
3413687808,3413687999,JP
3413688000,3413688063,SG
@@ -105362,8 +107149,8 @@
3413693280,3413693311,SG
3413693312,3413693375,JP
3413693376,3413695487,SG
-3413695488,3413695967,JP
-3413695968,3413696527,SG
+3413695488,3413695999,JP
+3413696000,3413696527,SG
3413696528,3413696639,JP
3413696640,3413696671,SG
3413696672,3413696703,JP
@@ -105432,6 +107219,7 @@
3413843968,3413848063,IN
3413848064,3413850111,SG
3413850112,3413850623,ID
+3413850624,3413850879,CN
3413850880,3413851135,AU
3413851136,3413852159,ID
3413852160,3413868543,AU
@@ -105448,9 +107236,7 @@
3413934080,3413946367,IN
3413946368,3413950463,AU
3413950464,3413966847,IN
-3413966848,3414050303,SG
-3414050304,3414050815,US
-3414050816,3414155519,SG
+3413966848,3414155519,SG
3414155520,3414155775,PH
3414155776,3414163455,SG
3414163456,3414171647,PK
@@ -105533,6 +107319,7 @@
3415121920,3415130111,KR
3415130112,3415136255,JP
3415136256,3415136767,KR
+3415137024,3415137279,CN
3415137280,3415137535,IN
3415137536,3415138303,AU
3415138304,3415146495,CN
@@ -105598,17 +107385,11 @@
3415747072,3415747839,SG
3415747840,3415748351,JP
3415748352,3415749375,SG
-3415749376,3415749759,JP
-3415749760,3415749791,TH
-3415749792,3415749823,JP
-3415749824,3415749839,TH
-3415749840,3415749887,JP
+3415749376,3415749887,JP
3415749888,3415750143,SG
3415750144,3415750399,JP
3415750400,3415751423,SG
-3415751424,3415751679,JP
-3415751680,3415751935,TH
-3415751936,3415752191,JP
+3415751424,3415752191,JP
3415752192,3415752703,SG
3415752704,3415760895,CN
3415760896,3415769087,NZ
@@ -105653,7 +107434,7 @@
3416262656,3416264703,AU
3416264704,3416268799,JP
3416268800,3416272895,HK
-3416274944,3416276991,ID
+3416272896,3416276991,ID
3416276992,3416285183,HK
3416285184,3416287231,VN
3416287232,3416289279,HK
@@ -105683,6 +107464,7 @@
3416372224,3416372479,CN
3416372480,3416372735,SG
3416372736,3416372991,AU
+3416372992,3416373247,CN
3416373248,3416373759,ID
3416373760,3416374271,AU
3416374272,3416374527,PH
@@ -105695,11 +107477,7 @@
3416474584,3416474599,AU
3416474600,3416475391,JP
3416475392,3416475647,NZ
-3416475648,3416482047,JP
-3416482048,3416482055,SG
-3416482056,3416489755,JP
-3416489756,3416489759,AU
-3416489760,3416489983,JP
+3416475648,3416489983,JP
3416489984,3416506367,VN
3416506368,3416514559,TW
3416514560,3416522751,IN
@@ -105794,7 +107572,8 @@
3417014272,3417022463,JP
3417022464,3417030655,KR
3417030656,3417034751,AU
-3417034752,3417035775,IN
+3417034752,3417035007,CN
+3417035008,3417035775,IN
3417035776,3417036799,JP
3417036800,3417037823,ID
3417037824,3417038079,AU
@@ -105814,7 +107593,7 @@
3417178112,3417179135,PH
3417179136,3417179391,CN
3417179392,3417179647,ID
-3417179904,3417180159,CN
+3417179648,3417180159,CN
3417180160,3417182207,ID
3417182208,3417184767,AU
3417184768,3417185023,MN
@@ -105879,6 +107658,7 @@
3417946112,3417946137,AU
3417946138,3417946138,HK
3417946139,3417947135,AU
+3417947392,3417947647,CN
3417947648,3417947903,AU
3417947904,3417948159,IN
3417948160,3417964543,AU
@@ -105962,9 +107742,11 @@
3418290688,3418291199,TH
3418291200,3418291711,AU
3418291712,3418292223,BD
-3418292224,3418292735,CN
+3418292224,3418292991,CN
3418292992,3418293503,HK
+3418293504,3418293759,CN
3418293760,3418294015,AU
+3418294016,3418294271,CN
3418294272,3418296319,VN
3418296320,3418297343,HK
3418297344,3418298367,CN
@@ -105983,6 +107765,7 @@
3418325248,3418325503,AU
3418325504,3418326015,VU
3418326016,3418326271,AU
+3418326272,3418326527,CN
3418326528,3418327039,PH
3418327040,3418329087,JP
3418329088,3418333183,CN
@@ -106038,11 +107821,7 @@
3418643456,3418644479,AU
3418644480,3418644735,JP
3418644736,3418644991,AU
-3418644992,3418650807,JP
-3418650808,3418650808,HK
-3418650809,3418650823,JP
-3418650824,3418650839,HK
-3418650840,3418652671,JP
+3418644992,3418652671,JP
3418652672,3418750975,IN
3418750976,3418816511,HK
3418816512,3418947583,IN
@@ -106057,6 +107836,7 @@
3418988544,3418992639,ID
3418992640,3418993663,SG
3418993664,3418993919,PH
+3418993920,3418994431,CN
3418994432,3418994687,AU
3418994688,3418995711,MY
3418995712,3418996735,JP
@@ -106172,7 +107952,7 @@
3420020736,3420028927,TW
3420028928,3420029951,MY
3420029952,3420030975,ID
-3420030976,3420031999,IN
+3420030976,3420031487,IN
3420032000,3420032255,ID
3420032256,3420032511,AU
3420032512,3420033023,NZ
@@ -106193,13 +107973,7 @@
3420061696,3420127231,HK
3420127232,3420323839,AU
3420323840,3420332031,TW
-3420332032,3420337439,AU
-3420337440,3420337471,SG
-3420337472,3420366063,AU
-3420366064,3420366079,TW
-3420366080,3420366959,AU
-3420366960,3420366975,KR
-3420366976,3420369007,AU
+3420332032,3420369007,AU
3420369008,3420369023,HK
3420369024,3420370559,AU
3420370560,3420370575,JP
@@ -106569,7 +108343,7 @@
3428286976,3428296959,US
3428296960,3428297215,CL
3428297216,3428299519,US
-3428299520,3428299775,MU
+3428299520,3428299775,ZA
3428299776,3428302079,US
3428302080,3428302335,CA
3428302336,3428306175,US
@@ -106736,7 +108510,12 @@
3430807296,3430807551,CA
3430807552,3430809087,US
3430809088,3430809343,CA
-3430809344,3430812671,US
+3430809344,3430811135,US
+3430811136,3430811263,FI
+3430811264,3430811391,SE
+3430811392,3430811519,BR
+3430811520,3430811647,AR
+3430811648,3430812671,US
3430812672,3430813183,MX
3430813184,3430842367,US
3430842368,3430842879,DO
@@ -106802,7 +108581,9 @@
3432134144,3432205311,US
3432205312,3432206335,CA
3432206336,3432265983,US
-3432265984,3432266239,DE
+3432265984,3432266195,DE
+3432266196,3432266199,US
+3432266200,3432266239,DE
3432266240,3432266751,US
3432266752,3432267263,DE
3432267264,3432280063,US
@@ -106814,8 +108595,13 @@
3432330240,3432361983,US
3432361984,3432366079,DE
3432366080,3432517119,US
-3432517120,3432517631,MU
-3432517632,3432570879,US
+3432517120,3432517631,NA
+3432517632,3432530943,US
+3432530944,3432531007,TH
+3432531008,3432531071,SG
+3432531072,3432531199,JP
+3432531200,3432531455,FR
+3432531456,3432570879,US
3432570880,3432572927,HK
3432572928,3432585215,US
3432585216,3432585727,MX
@@ -107053,8 +108839,8 @@
3438280704,3438542847,US
3438542848,3438608383,CA
3438608384,3438610408,US
-3438610409,3438610409,GB
-3438610410,3438813183,US
+3438610409,3438610410,GB
+3438610411,3438813183,US
3438813184,3438814207,GH
3438814208,3438895103,US
3438895104,3438896639,HN
@@ -107211,7 +108997,7 @@
3449640960,3449641215,NL
3449641216,3449641471,GB
3449641472,3449769727,US
-3449769728,3449769983,MU
+3449769728,3449769983,ZA
3449769984,3449823231,US
3449823232,3449824255,CO
3449824256,3449835519,US
@@ -107591,7 +109377,9 @@
3453553152,3453553407,GB
3453553408,3453554431,US
3453554432,3453554687,GB
-3453554688,3453599999,US
+3453554688,3453555967,US
+3453555968,3453556031,GB
+3453556032,3453599999,US
3453600000,3453600767,GB
3453600768,3453607935,US
3453607936,3453608959,KN
@@ -108619,8 +110407,8 @@
3468682496,3468682559,HK
3468682560,3468682575,US
3468682576,3468682591,HK
-3468682592,3468682623,SG
-3468682624,3468682735,HK
+3468682592,3468682639,SG
+3468682640,3468682735,HK
3468682736,3468682751,US
3468682752,3468682911,HK
3468682912,3468682927,US
@@ -108851,9 +110639,13 @@
3475921168,3475921183,HK
3475921184,3475922735,US
3475922736,3475922751,HK
-3475922752,3475931135,US
+3475922752,3475930623,US
+3475930624,3475930879,HK
+3475930880,3475931135,US
3475931136,3475939327,HK
-3475939328,3475952511,US
+3475939328,3475948031,US
+3475948032,3475948287,IE
+3475948288,3475952511,US
3475952512,3475952639,SG
3475952640,3475952767,US
3475952768,3475953023,JP
@@ -108872,7 +110664,19 @@
3476447232,3476455423,CA
3476455424,3476881407,US
3476881408,3476946943,CA
-3476946944,3478114303,US
+3476946944,3477384735,US
+3477384736,3477384743,IE
+3477384744,3477384783,US
+3477384784,3477384799,IE
+3477384800,3477384831,US
+3477384832,3477384839,SG
+3477384840,3477384847,IE
+3477384848,3477384855,SG
+3477384856,3477384863,IE
+3477384864,3477384871,SG
+3477384872,3477384951,US
+3477384952,3477384959,IE
+3477384960,3478114303,US
3478114304,3478118399,PE
3478118400,3478192127,US
3478192128,3478257663,CA
@@ -110686,9 +112490,7 @@
3512043520,3512043775,FI
3512043776,3512052735,US
3512052736,3512052991,FI
-3512052992,3512063281,US
-3512063282,3512063282,FR
-3512063283,3512139775,US
+3512052992,3512139775,US
3512139776,3512156159,CA
3512156160,3512172543,US
3512172544,3512176639,CA
@@ -111306,19 +113108,7 @@
3523557376,3523559423,CN
3523559424,3523575807,PH
3523575808,3523583999,CN
-3523584000,3523596359,HK
-3523596360,3523596375,PK
-3523596376,3523596783,HK
-3523596784,3523596791,PK
-3523596792,3523596927,HK
-3523596928,3523597055,PK
-3523597056,3523597063,HK
-3523597064,3523597103,PK
-3523597104,3523597119,HK
-3523597120,3523597127,PK
-3523597128,3523597567,HK
-3523597568,3523597823,PK
-3523597824,3523601663,HK
+3523584000,3523601663,HK
3523601664,3523601919,SA
3523601920,3523674111,HK
3523674112,3523682303,FJ
@@ -111397,9 +113187,7 @@
3524247552,3524263935,AU
3524263936,3524266495,PH
3524266496,3524266751,SG
-3524266752,3524274175,PH
-3524274176,3524274431,SG
-3524274432,3524280319,PH
+3524266752,3524280319,PH
3524280320,3524281343,JP
3524281344,3524282367,AU
3524282368,3524288511,IN
@@ -111407,12 +113195,17 @@
3524289536,3524290559,IN
3524290560,3524291583,CN
3524291584,3524294655,IN
-3524294656,3524295679,SG
+3524294656,3524295167,HK
+3524295168,3524295679,SG
3524295680,3524296703,PH
3524296704,3524313087,CN
3524313088,3524329471,KR
3524329472,3524362239,TW
-3524362240,3524395007,HK
+3524362240,3524370687,HK
+3524370688,3524370943,JP
+3524370944,3524386303,HK
+3524386304,3524386559,JP
+3524386560,3524395007,HK
3524395008,3524444159,IN
3524444160,3524460543,AU
3524460544,3524526079,MY
@@ -111478,8 +113271,8 @@
3524821856,3524821951,SG
3524821952,3524821983,JP
3524821984,3524823807,SG
-3524823808,3524824031,JP
-3524824032,3524825855,SG
+3524823808,3524824063,JP
+3524824064,3524825855,SG
3524825856,3524826367,JP
3524826368,3524827167,SG
3524827168,3524827199,JP
@@ -111895,7 +113688,9 @@
3558155060,3558155063,DE
3558155064,3558157391,GB
3558157392,3558157407,AF
-3558157408,3558162431,GB
+3558157408,3558161431,GB
+3558161432,3558161439,TZ
+3558161440,3558162431,GB
3558162432,3558170623,DE
3558170624,3558178815,GB
3558178816,3558187007,BG
@@ -111943,7 +113738,9 @@
3558293216,3558293503,GB
3558293504,3558301695,RU
3558301696,3558318079,DE
-3558318080,3558334463,FR
+3558318080,3558321284,FR
+3558321285,3558321285,RE
+3558321286,3558334463,FR
3558334464,3558342655,CH
3558342656,3558350847,IT
3558350848,3558359039,RU
@@ -112860,7 +114657,9 @@
3564734742,3564734742,DE
3564734743,3564734743,GB
3564734744,3564734751,DE
-3564734752,3564736535,GB
+3564734752,3564734775,GB
+3564734776,3564734783,DE
+3564734784,3564736535,GB
3564736536,3564736543,DE
3564736544,3564738815,GB
3564738816,3564739071,DE
@@ -113637,7 +115436,9 @@
3576093184,3576093247,GB
3576095232,3576096767,GB
3576099072,3576100863,GB
-3576101376,3576110939,GB
+3576101376,3576106879,GB
+3576106880,3576106943,DE
+3576106944,3576110939,GB
3576110940,3576110943,NL
3576110944,3576113919,GB
3576113920,3576114175,FR
@@ -113869,8 +115670,8 @@
3580338688,3580339199,HR
3580339200,3580340223,EE
3580340224,3580344319,LT
-3580344320,3580354559,SE
-3580354560,3580362751,LT
+3580344320,3580346367,SE
+3580346368,3580362751,LT
3580362752,3580624895,GB
3580624896,3580626943,RU
3580626944,3580628991,PL
@@ -113878,7 +115679,7 @@
3580631040,3580632063,NL
3580632064,3580632319,PL
3580632320,3580632831,NL
-3580632832,3580633087,CY
+3580632832,3580633087,LI
3580633088,3580635135,RU
3580635136,3580637183,UA
3580639232,3580641279,PL
@@ -113955,7 +115756,9 @@
3582115840,3582115903,EE
3582115904,3582115935,SE
3582115936,3582115967,EE
-3582115968,3582116863,SE
+3582115968,3582116095,SE
+3582116096,3582116351,EE
+3582116352,3582116863,SE
3582116864,3582117887,EE
3582117888,3582120959,LT
3582120960,3582121983,EE
@@ -114449,11 +116252,16 @@
3585635200,3585635327,IL
3585635328,3585635583,AE
3585635584,3585635711,NL
-3585635712,3585635967,IL
-3585635968,3585636095,NL
+3585635712,3585635839,IL
+3585635840,3585635903,CZ
+3585635904,3585635967,NO
+3585635968,3585636031,HU
+3585636032,3585636095,SK
3585636096,3585637375,IL
3585637376,3585637503,NL
-3585637504,3585638399,IL
+3585637504,3585637631,IL
+3585637632,3585637887,HR
+3585637888,3585638399,IL
3585638400,3585646591,RU
3585646592,3585654783,SA
3585654784,3585662975,NO
@@ -114469,7 +116277,9 @@
3585720320,3585728511,GB
3585728512,3585736703,SE
3585736704,3585744895,HR
-3585744896,3585753087,FR
+3585744896,3585747839,FR
+3585747840,3585747903,GB
+3585747904,3585753087,FR
3585753088,3585761279,PL
3585761280,3585765375,UA
3585765376,3585765631,RU
@@ -114983,7 +116793,8 @@
3590244352,3590244607,DE
3590244608,3590245255,FR
3590245256,3590245271,GB
-3590245272,3590245311,FR
+3590245272,3590245279,DE
+3590245280,3590245311,FR
3590245312,3590245439,US
3590245440,3590247048,FR
3590247049,3590247049,IT
@@ -115270,7 +117081,7 @@
3628657920,3628658175,BS
3628658176,3628679167,US
3628679168,3628683263,CA
-3628687360,3628834815,US
+3628683264,3628834815,US
3628834816,3628843007,CA
3628843008,3628850687,US
3628850688,3628850943,AU
@@ -115919,89 +117730,7 @@
3639660544,3639664639,US
3639664640,3639668735,CA
3639668736,3639672831,US
-3639672832,3639675007,CL
-3639675008,3639675135,CO
-3639675136,3639675263,CL
-3639675264,3639676159,CO
-3639676160,3639676415,CL
-3639676416,3639676479,CO
-3639676480,3639676607,CL
-3639676608,3639676639,CO
-3639676640,3639676799,CL
-3639676800,3639676959,CO
-3639676960,3639676967,CL
-3639676968,3639676983,CO
-3639676984,3639676999,CL
-3639677000,3639677063,CO
-3639677064,3639677071,CL
-3639677072,3639677223,CO
-3639677224,3639677231,CL
-3639677232,3639677335,CO
-3639677336,3639677343,CL
-3639677344,3639677431,CO
-3639677432,3639677439,CL
-3639677440,3639677503,CO
-3639677504,3639677519,CL
-3639677520,3639677559,CO
-3639677560,3639677567,CL
-3639677568,3639677575,CO
-3639677576,3639677583,CL
-3639677584,3639677631,CO
-3639677632,3639677695,CL
-3639677696,3639677719,CO
-3639677720,3639677727,CL
-3639677728,3639677751,CO
-3639677752,3639677767,CL
-3639677768,3639677823,CO
-3639677824,3639677831,CL
-3639677832,3639677839,CO
-3639677840,3639677847,CL
-3639677848,3639677927,CO
-3639677928,3639677951,CL
-3639677952,3639677975,CO
-3639677976,3639677983,CL
-3639677984,3639677991,CO
-3639677992,3639678007,CL
-3639678008,3639678031,CO
-3639678032,3639678039,CL
-3639678040,3639678175,CO
-3639678176,3639678191,CL
-3639678192,3639678199,CO
-3639678200,3639678207,CL
-3639678208,3639678463,CO
-3639678464,3639678471,CL
-3639678472,3639678487,CO
-3639678488,3639678495,CL
-3639678496,3639678647,CO
-3639678648,3639678655,CL
-3639678656,3639678687,CO
-3639678688,3639678703,CL
-3639678704,3639678735,CO
-3639678736,3639678751,CL
-3639678752,3639678831,CO
-3639678832,3639678839,CL
-3639678840,3639678895,CO
-3639678896,3639678911,CL
-3639678912,3639678927,CO
-3639678928,3639678935,CL
-3639678936,3639679231,CO
-3639679232,3639679247,CL
-3639679248,3639679263,CO
-3639679264,3639679279,CL
-3639679280,3639679359,CO
-3639679360,3639679383,CL
-3639679384,3639679455,CO
-3639679456,3639679463,CL
-3639679464,3639680415,CO
-3639680416,3639680431,CL
-3639680432,3639680511,CO
-3639680512,3639680767,CL
-3639680768,3639680799,CO
-3639680800,3639680831,CL
-3639680832,3639680895,CO
-3639680896,3639680959,CL
-3639680960,3639680991,CO
-3639680992,3639681023,CL
+3639672832,3639681023,CL
3639681024,3639692031,US
3639692032,3639692287,GB
3639692288,3639704573,US
@@ -116130,7 +117859,9 @@
3641494016,3641494527,BG
3641494528,3641495551,UA
3641495552,3641496063,NL
-3641496064,3641499647,UA
+3641496064,3641498111,UA
+3641498112,3641498367,NL
+3641498368,3641499647,UA
3641499648,3641503743,SA
3641503744,3641507839,RU
3641507840,3641516031,NO
@@ -116795,7 +118526,7 @@
3647976448,3647976959,BE
3647976960,3647977471,DE
3647977472,3647978495,GB
-3647978496,3647979007,DE
+3647978496,3647979007,NL
3647979008,3647979071,IT
3647979072,3647980031,DE
3647980032,3647980287,FR
@@ -117177,7 +118908,9 @@
3650929896,3650929903,ES
3650929904,3650929911,SE
3650929912,3650929919,CH
-3650929920,3650932943,GB
+3650929920,3650932881,GB
+3650932882,3650932882,DE
+3650932883,3650932943,GB
3650932944,3650932975,IT
3650932976,3650939607,GB
3650939608,3650939615,TR
@@ -117506,7 +119239,7 @@
3663992320,3663992575,MY
3663992576,3663993599,NZ
3663993600,3663996159,ID
-3663996160,3663996415,BD
+3663996160,3663996415,AU
3663996416,3663996671,TH
3663996672,3663997183,AU
3663997184,3663997439,ID
@@ -117680,7 +119413,23 @@
3706207108,3706207108,US
3706207109,3706208255,SG
3706208256,3706224639,CN
-3706224640,3706257407,HK
+3706224640,3706225663,HK
+3706225664,3706226687,JP
+3706226688,3706231807,HK
+3706231808,3706232831,JP
+3706232832,3706233343,HK
+3706233344,3706234367,JP
+3706234368,3706237951,HK
+3706237952,3706238975,JP
+3706238976,3706244095,HK
+3706244096,3706244863,JP
+3706244864,3706245887,HK
+3706245888,3706246143,JP
+3706246144,3706253823,HK
+3706253824,3706254335,JP
+3706254336,3706256895,HK
+3706256896,3706257151,JP
+3706257152,3706257407,HK
3706257408,3706322943,AU
3706322944,3706388479,CN
3706388480,3706781695,AU
diff --git a/src/config/geoip6 b/src/config/geoip6
index 7ba6bb6529..4068ce4aff 100644
--- a/src/config/geoip6
+++ b/src/config/geoip6
@@ -1,4 +1,4 @@
-# Last updated based on June 7 2016 Maxmind GeoLite2 Country
+# Last updated based on July 6 2016 Maxmind GeoLite2 Country
# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
# python mmdb-convert.py GeoLite2-Country.mmdb
@@ -100,7 +100,9 @@
2001:420:4498::,2001:420:4498:7fff:ffff:ffff:ffff:ffff,NL
2001:420:4498:8000::,2001:420:44c0:ffff:ffff:ffff:ffff:ffff,US
2001:420:44c1::,2001:420:44c1:7fff:ffff:ffff:ffff:ffff,NO
-2001:420:44c1:8000::,2001:420:44d9:ffff:ffff:ffff:ffff:ffff,US
+2001:420:44c1:8000::,2001:420:44d2:ffff:ffff:ffff:ffff:ffff,US
+2001:420:44d3::,2001:420:44d3:7fff:ffff:ffff:ffff:ffff,SE
+2001:420:44d3:8000::,2001:420:44d9:ffff:ffff:ffff:ffff:ffff,US
2001:420:44da::,2001:420:44da:7fff:ffff:ffff:ffff:ffff,ES
2001:420:44da:8000::,2001:420:4803:ffff:ffff:ffff:ffff:ffff,US
2001:420:4804::,2001:420:4804:7fff:ffff:ffff:ffff:ffff,BE
@@ -116,7 +118,9 @@
2001:420:5047::,2001:420:5047:7fff:ffff:ffff:ffff:ffff,AU
2001:420:5047:8000::,2001:420:5049:ffff:ffff:ffff:ffff:ffff,US
2001:420:504a::,2001:420:504a:7fff:ffff:ffff:ffff:ffff,AU
-2001:420:504a:8000::,2001:420:5441:ffff:ffff:ffff:ffff:ffff,US
+2001:420:504a:8000::,2001:420:5243:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5244::,2001:420:5244:7fff:ffff:ffff:ffff:ffff,IN
+2001:420:5244:8000::,2001:420:5441:ffff:ffff:ffff:ffff:ffff,US
2001:420:5442::,2001:420:5442:7fff:ffff:ffff:ffff:ffff,IN
2001:420:5442:8000::,2001:420:5442:ffff:ffff:ffff:ffff:ffff,US
2001:420:5443::,2001:420:5443:7fff:ffff:ffff:ffff:ffff,IN
@@ -126,17 +130,21 @@
2001:420:5447::,2001:420:5447:7fff:ffff:ffff:ffff:ffff,IN
2001:420:5447:8000::,2001:420:5501:11ff:ffff:ffff:ffff:ffff,US
2001:420:5501:1200::,2001:420:5501:12ff:ffff:ffff:ffff:ffff,IN
-2001:420:5501:1300::,2001:420:5503:11ff:ffff:ffff:ffff:ffff,US
-2001:420:5503:1200::,2001:420:5503:12ff:ffff:ffff:ffff:ffff,IN
-2001:420:5503:1300::,2001:420:5504:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5501:1300::,2001:420:5502:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5503::,2001:420:5503:7fff:ffff:ffff:ffff:ffff,IN
+2001:420:5503:8000::,2001:420:5504:ffff:ffff:ffff:ffff:ffff,US
2001:420:5505::,2001:420:5505:7fff:ffff:ffff:ffff:ffff,IN
-2001:420:5505:8000::,2001:420:5882:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5505:8000::,2001:420:5880:ffff:ffff:ffff:ffff:ffff,US
+2001:420:5881::,2001:420:5881:7fff:ffff:ffff:ffff:ffff,CN
+2001:420:5881:8000::,2001:420:5882:ffff:ffff:ffff:ffff:ffff,US
2001:420:5883::,2001:420:5883:7fff:ffff:ffff:ffff:ffff,CN
2001:420:5883:8000::,2001:420:5888:ffff:ffff:ffff:ffff:ffff,US
2001:420:5889::,2001:420:5889:7fff:ffff:ffff:ffff:ffff,CN
2001:420:5889:8000::,2001:420:588a:ffff:ffff:ffff:ffff:ffff,US
2001:420:588b::,2001:420:588b:7fff:ffff:ffff:ffff:ffff,CN
-2001:420:588b:8000::,2001:420:5894:11ff:ffff:ffff:ffff:ffff,US
+2001:420:588b:8000::,2001:420:588b:ffff:ffff:ffff:ffff:ffff,US
+2001:420:588c::,2001:420:588c:7fff:ffff:ffff:ffff:ffff,CN
+2001:420:588c:8000::,2001:420:5894:11ff:ffff:ffff:ffff:ffff,US
2001:420:5894:1200::,2001:420:5894:12ff:ffff:ffff:ffff:ffff,CN
2001:420:5894:1300::,2001:420:5894:ffff:ffff:ffff:ffff:ffff,US
2001:420:5895::,2001:420:5895:7fff:ffff:ffff:ffff:ffff,CN
@@ -189,17 +197,21 @@
2001:470:5:318::,2001:470:5:318:ffff:ffff:ffff:ffff,AR
2001:470:5:319::,2001:470:9:ffff:ffff:ffff:ffff:ffff,US
2001:470:a::,2001:470:a:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:a:8000::,2001:470:17:ffff:ffff:ffff:ffff:ffff,US
-2001:470:18::,2001:470:18:7ff:ffff:ffff:ffff:ffff,HK
+2001:470:a:8000::,2001:470:18:3ff:ffff:ffff:ffff:ffff,US
+2001:470:18:400::,2001:470:18:7ff:ffff:ffff:ffff:ffff,HK
2001:470:18:800::,2001:470:18:ffff:ffff:ffff:ffff:ffff,US
2001:470:19::,2001:470:19:7fff:ffff:ffff:ffff:ffff,HK
2001:470:19:8000::,2001:470:1c:ff:ffff:ffff:ffff:ffff,US
-2001:470:1c:100::,2001:470:1c:7ff:ffff:ffff:ffff:ffff,CA
+2001:470:1c:100::,2001:470:1c:3ff:ffff:ffff:ffff:ffff,CA
+2001:470:1c:400::,2001:470:1c:5ff:ffff:ffff:ffff:ffff,US
+2001:470:1c:600::,2001:470:1c:7ff:ffff:ffff:ffff:ffff,CA
2001:470:1c:800::,2001:470:1c:9ff:ffff:ffff:ffff:ffff,US
2001:470:1c:a00::,2001:470:1c:bff:ffff:ffff:ffff:ffff,CA
2001:470:1c:c00::,2001:470:1c:ffff:ffff:ffff:ffff:ffff,US
2001:470:1d::,2001:470:1d:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:1d:8000::,2001:470:26:65b:ffff:ffff:ffff:ffff,US
+2001:470:1d:8000::,2001:470:23:ffff:ffff:ffff:ffff:ffff,US
+2001:470:24::,2001:470:24:7fff:ffff:ffff:ffff:ffff,CN
+2001:470:24:8000::,2001:470:26:65b:ffff:ffff:ffff:ffff,US
2001:470:26:65c::,2001:470:26:65c:ffff:ffff:ffff:ffff,CH
2001:470:26:65d::,2001:470:26:b6c:ffff:ffff:ffff:ffff,US
2001:470:26:b6d::,2001:470:26:b6d:ffff:ffff:ffff:ffff,AT
@@ -220,11 +232,11 @@
2001:470:35:e00::,2001:470:35:fff:ffff:ffff:ffff:ffff,SG
2001:470:35:1000::,2001:470:3c:ffff:ffff:ffff:ffff:ffff,US
2001:470:3d::,2001:470:3d:7fff:ffff:ffff:ffff:ffff,PH
-2001:470:3d:8000::,2001:470:6e:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6f::,2001:470:6f:49e:ffff:ffff:ffff:ffff,CZ
+2001:470:3d:8000::,2001:470:6d:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6e::,2001:470:6e:7fff:ffff:ffff:ffff:ffff,CZ
+2001:470:6e:8000::,2001:470:6f:49e:ffff:ffff:ffff:ffff,US
2001:470:6f:49f::,2001:470:6f:49f:ffff:ffff:ffff:ffff,SK
-2001:470:6f:4a0::,2001:470:6f:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:6f:8000::,2001:470:70:6ff:ffff:ffff:ffff:ffff,US
+2001:470:6f:4a0::,2001:470:70:6ff:ffff:ffff:ffff:ffff,US
2001:470:70:700::,2001:470:70:7ff:ffff:ffff:ffff:ffff,RU
2001:470:70:800::,2001:470:71:5ff:ffff:ffff:ffff:ffff,US
2001:470:71:600::,2001:470:71:600:ffff:ffff:ffff:ffff,PL
@@ -252,8 +264,7 @@
2001:470:1f08::,2001:470:1f08:7ff:ffff:ffff:ffff:ffff,GB
2001:470:1f08:800::,2001:470:1f08:9ff:ffff:ffff:ffff:ffff,US
2001:470:1f08:a00::,2001:470:1f08:aff:ffff:ffff:ffff:ffff,ES
-2001:470:1f08:b00::,2001:470:1f08:bff:ffff:ffff:ffff:ffff,IE
-2001:470:1f08:c00::,2001:470:1f08:fff:ffff:ffff:ffff:ffff,US
+2001:470:1f08:b00::,2001:470:1f08:fff:ffff:ffff:ffff:ffff,US
2001:470:1f08:1000::,2001:470:1f08:11ff:ffff:ffff:ffff:ffff,GB
2001:470:1f08:1200::,2001:470:1f08:13ff:ffff:ffff:ffff:ffff,RU
2001:470:1f08:1400::,2001:470:1f08:17ff:ffff:ffff:ffff:ffff,US
@@ -262,8 +273,8 @@
2001:470:1f09:2b6::,2001:470:1f09:2b6:ffff:ffff:ffff:ffff,GB
2001:470:1f09:2b7::,2001:470:1f09:414:ffff:ffff:ffff:ffff,US
2001:470:1f09:415::,2001:470:1f09:415:ffff:ffff:ffff:ffff,GB
-2001:470:1f09:416::,2001:470:1f0a:1ff:ffff:ffff:ffff:ffff,US
-2001:470:1f0a:200::,2001:470:1f0a:3ff:ffff:ffff:ffff:ffff,DE
+2001:470:1f09:416::,2001:470:1f09:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f0a::,2001:470:1f0a:3ff:ffff:ffff:ffff:ffff,DE
2001:470:1f0a:400::,2001:470:1f0a:9ff:ffff:ffff:ffff:ffff,US
2001:470:1f0a:a00::,2001:470:1f0a:bff:ffff:ffff:ffff:ffff,RU
2001:470:1f0a:c00::,2001:470:1f0a:dff:ffff:ffff:ffff:ffff,US
@@ -277,7 +288,9 @@
2001:470:1f0b:77b::,2001:470:1f0b:784:ffff:ffff:ffff:ffff,US
2001:470:1f0b:785::,2001:470:1f0b:785:ffff:ffff:ffff:ffff,PL
2001:470:1f0b:786::,2001:470:1f12:7ff:ffff:ffff:ffff:ffff,US
-2001:470:1f12:800::,2001:470:1f12:fff:ffff:ffff:ffff:ffff,FR
+2001:470:1f12:800::,2001:470:1f12:8ff:ffff:ffff:ffff:ffff,FR
+2001:470:1f12:900::,2001:470:1f12:bff:ffff:ffff:ffff:ffff,US
+2001:470:1f12:c00::,2001:470:1f12:fff:ffff:ffff:ffff:ffff,FR
2001:470:1f12:1000::,2001:470:1f13:7ff:ffff:ffff:ffff:ffff,US
2001:470:1f13:800::,2001:470:1f13:bff:ffff:ffff:ffff:ffff,FR
2001:470:1f13:c00::,2001:470:1f13:fff:ffff:ffff:ffff:ffff,GB
@@ -291,13 +304,7 @@
2001:470:1f15:9c6::,2001:470:1f15:9c6:ffff:ffff:ffff:ffff,AT
2001:470:1f15:9c7::,2001:470:1f15:a5f:ffff:ffff:ffff:ffff,US
2001:470:1f15:a60::,2001:470:1f15:a60:ffff:ffff:ffff:ffff,NL
-2001:470:1f15:a61::,2001:470:1f15:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f16::,2001:470:1f16:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:1f16:8000::,2001:470:1f16:ffff:ffff:ffff:ffff:ffff,US
-2001:470:1f17::,2001:470:1f17:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:1f17:8000::,2001:470:1f19:1ff:ffff:ffff:ffff:ffff,US
-2001:470:1f19:200::,2001:470:1f19:3ff:ffff:ffff:ffff:ffff,CN
-2001:470:1f19:400::,2001:470:1f1b:ffff:ffff:ffff:ffff:ffff,US
+2001:470:1f15:a61::,2001:470:1f1b:ffff:ffff:ffff:ffff:ffff,US
2001:470:1f1c::,2001:470:1f1c:7fff:ffff:ffff:ffff:ffff,GB
2001:470:1f1c:8000::,2001:470:1f1d:195:ffff:ffff:ffff:ffff,US
2001:470:1f1d:196::,2001:470:1f1d:196:ffff:ffff:ffff:ffff,GB
@@ -311,7 +318,9 @@
2001:470:2093::,2001:470:2093:7fff:ffff:ffff:ffff:ffff,SI
2001:470:2093:8000::,2001:470:20c1:ffff:ffff:ffff:ffff:ffff,US
2001:470:20c2::,2001:470:20c2:7fff:ffff:ffff:ffff:ffff,HU
-2001:470:20c2:8000::,2001:470:2112:ffff:ffff:ffff:ffff:ffff,US
+2001:470:20c2:8000::,2001:470:20f1:ffff:ffff:ffff:ffff:ffff,US
+2001:470:20f2::,2001:470:20f2:7fff:ffff:ffff:ffff:ffff,HU
+2001:470:20f2:8000::,2001:470:2112:ffff:ffff:ffff:ffff:ffff,US
2001:470:2113::,2001:470:2113:7fff:ffff:ffff:ffff:ffff,RU
2001:470:2113:8000::,2001:470:2894:ffff:ffff:ffff:ffff:ffff,US
2001:470:2895::,2001:470:2895:7fff:ffff:ffff:ffff:ffff,CN
@@ -351,7 +360,9 @@
2001:470:5803:8000::,2001:470:5803:ffff:ffff:ffff:ffff:ffff,CZ
2001:470:5804::,2001:470:5853:ffff:ffff:ffff:ffff:ffff,US
2001:470:5854::,2001:470:5854:7fff:ffff:ffff:ffff:ffff,CZ
-2001:470:5854:8000::,2001:470:587d:ffff:ffff:ffff:ffff:ffff,US
+2001:470:5854:8000::,2001:470:5877:ffff:ffff:ffff:ffff:ffff,US
+2001:470:5878::,2001:470:5878:7fff:ffff:ffff:ffff:ffff,CZ
+2001:470:5878:8000::,2001:470:587d:ffff:ffff:ffff:ffff:ffff,US
2001:470:587e::,2001:470:587e:7fff:ffff:ffff:ffff:ffff,CZ
2001:470:587e:8000::,2001:470:591a:ffff:ffff:ffff:ffff:ffff,US
2001:470:591b::,2001:470:591b:7fff:ffff:ffff:ffff:ffff,CZ
@@ -393,7 +404,11 @@
2001:470:61a0::,2001:470:61a0:7fff:ffff:ffff:ffff:ffff,RU
2001:470:61a0:8000::,2001:470:6228:ffff:ffff:ffff:ffff:ffff,US
2001:470:6229::,2001:470:6229:7fff:ffff:ffff:ffff:ffff,PL
-2001:470:6229:8000::,2001:470:6808:7fff:ffff:ffff:ffff:ffff,US
+2001:470:6229:8000::,2001:470:62ca:ffff:ffff:ffff:ffff:ffff,US
+2001:470:62cb::,2001:470:62cb:7fff:ffff:ffff:ffff:ffff,RU
+2001:470:62cb:8000::,2001:470:632d:ffff:ffff:ffff:ffff:ffff,US
+2001:470:632e::,2001:470:632e:7fff:ffff:ffff:ffff:ffff,RU
+2001:470:632e:8000::,2001:470:6808:7fff:ffff:ffff:ffff:ffff,US
2001:470:6808:8000::,2001:470:6808:ffff:ffff:ffff:ffff:ffff,GB
2001:470:6809::,2001:470:688b:ffff:ffff:ffff:ffff:ffff,US
2001:470:688c::,2001:470:688c:7fff:ffff:ffff:ffff:ffff,GB
@@ -405,9 +420,7 @@
2001:470:68ea::,2001:470:68ea:7fff:ffff:ffff:ffff:ffff,GB
2001:470:68ea:8000::,2001:470:6914:ffff:ffff:ffff:ffff:ffff,US
2001:470:6915::,2001:470:6915:7fff:ffff:ffff:ffff:ffff,ES
-2001:470:6915:8000::,2001:470:6924:ffff:ffff:ffff:ffff:ffff,US
-2001:470:6925::,2001:470:6925:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:6925:8000::,2001:470:6978:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6915:8000::,2001:470:6978:ffff:ffff:ffff:ffff:ffff,US
2001:470:6979::,2001:470:6979:7fff:ffff:ffff:ffff:ffff,ES
2001:470:6979:8000::,2001:470:69f8:ffff:ffff:ffff:ffff:ffff,US
2001:470:69f9::,2001:470:69f9:7fff:ffff:ffff:ffff:ffff,BE
@@ -449,7 +462,9 @@
2001:470:6c97::,2001:470:6c97:7fff:ffff:ffff:ffff:ffff,RU
2001:470:6c97:8000::,2001:470:6cee:ffff:ffff:ffff:ffff:ffff,US
2001:470:6cef::,2001:470:6cef:7fff:ffff:ffff:ffff:ffff,ES
-2001:470:6cef:8000::,2001:470:6d37:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6cef:8000::,2001:470:6d0d:ffff:ffff:ffff:ffff:ffff,US
+2001:470:6d0e::,2001:470:6d0e:7fff:ffff:ffff:ffff:ffff,GB
+2001:470:6d0e:8000::,2001:470:6d37:ffff:ffff:ffff:ffff:ffff,US
2001:470:6d38::,2001:470:6d38:7fff:ffff:ffff:ffff:ffff,GB
2001:470:6d38:8000::,2001:470:6d44:ffff:ffff:ffff:ffff:ffff,US
2001:470:6d45::,2001:470:6d45:7fff:ffff:ffff:ffff:ffff,GB
@@ -459,9 +474,13 @@
2001:470:6d5c::,2001:470:6d5c:7fff:ffff:ffff:ffff:ffff,GB
2001:470:6d5c:8000::,2001:470:7000:ffff:ffff:ffff:ffff:ffff,US
2001:470:7001::,2001:470:7001:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:7001:8000::,2001:470:700d:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7001:8000::,2001:470:7007:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7008::,2001:470:7008:7fff:ffff:ffff:ffff:ffff,AT
+2001:470:7008:8000::,2001:470:700d:ffff:ffff:ffff:ffff:ffff,US
2001:470:700e::,2001:470:700e:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:700e:8000::,2001:470:7069:ffff:ffff:ffff:ffff:ffff,US
+2001:470:700e:8000::,2001:470:703f:7fff:ffff:ffff:ffff:ffff,US
+2001:470:703f:8000::,2001:470:703f:ffff:ffff:ffff:ffff:ffff,DE
+2001:470:7040::,2001:470:7069:ffff:ffff:ffff:ffff:ffff,US
2001:470:706a::,2001:470:706a:7fff:ffff:ffff:ffff:ffff,DE
2001:470:706a:8000::,2001:470:7073:7fff:ffff:ffff:ffff:ffff,US
2001:470:7073:8000::,2001:470:7073:ffff:ffff:ffff:ffff:ffff,DE
@@ -485,7 +504,9 @@
2001:470:71d5::,2001:470:71d5:7fff:ffff:ffff:ffff:ffff,UA
2001:470:71d5:8000::,2001:470:71f7:ffff:ffff:ffff:ffff:ffff,US
2001:470:71f8::,2001:470:71f8:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:71f8:8000::,2001:470:7280:ffff:ffff:ffff:ffff:ffff,US
+2001:470:71f8:8000::,2001:470:7241:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7242::,2001:470:7242:7fff:ffff:ffff:ffff:ffff,RU
+2001:470:7242:8000::,2001:470:7280:ffff:ffff:ffff:ffff:ffff,US
2001:470:7281::,2001:470:7281:7fff:ffff:ffff:ffff:ffff,DE
2001:470:7281:8000::,2001:470:7286:ffff:ffff:ffff:ffff:ffff,US
2001:470:7287::,2001:470:7287:ffff:ffff:ffff:ffff:ffff,PL
@@ -495,7 +516,11 @@
2001:470:72db::,2001:470:72db:7fff:ffff:ffff:ffff:ffff,RU
2001:470:72db:8000::,2001:470:7309:ffff:ffff:ffff:ffff:ffff,US
2001:470:730a::,2001:470:730a:7fff:ffff:ffff:ffff:ffff,DE
-2001:470:730a:8000::,2001:470:7368:ffff:ffff:ffff:ffff:ffff,US
+2001:470:730a:8000::,2001:470:7333:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7334::,2001:470:7334:7fff:ffff:ffff:ffff:ffff,DE
+2001:470:7334:8000::,2001:470:7354:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7355::,2001:470:7355:7fff:ffff:ffff:ffff:ffff,DE
+2001:470:7355:8000::,2001:470:7368:ffff:ffff:ffff:ffff:ffff,US
2001:470:7369::,2001:470:7369:7fff:ffff:ffff:ffff:ffff,TR
2001:470:7369:8000::,2001:470:7383:ffff:ffff:ffff:ffff:ffff,US
2001:470:7384::,2001:470:7384:7fff:ffff:ffff:ffff:ffff,BG
@@ -525,13 +550,13 @@
2001:470:75f1::,2001:470:75f1:7fff:ffff:ffff:ffff:ffff,DE
2001:470:75f1:8000::,2001:470:7804:ffff:ffff:ffff:ffff:ffff,US
2001:470:7805::,2001:470:7805:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:7805:8000::,2001:470:7852:ffff:ffff:ffff:ffff:ffff,US
+2001:470:7805:8000::,2001:470:7826:7fff:ffff:ffff:ffff:ffff,US
+2001:470:7826:8000::,2001:470:7826:ffff:ffff:ffff:ffff:ffff,NO
+2001:470:7827::,2001:470:7852:ffff:ffff:ffff:ffff:ffff,US
2001:470:7853::,2001:470:7853:7fff:ffff:ffff:ffff:ffff,NL
2001:470:7853:8000::,2001:470:7859:ffff:ffff:ffff:ffff:ffff,US
2001:470:785a::,2001:470:785a:ffff:ffff:ffff:ffff:ffff,AT
-2001:470:785b::,2001:470:78ab:ffff:ffff:ffff:ffff:ffff,US
-2001:470:78ac::,2001:470:78ac:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:78ac:8000::,2001:470:78c7:ffff:ffff:ffff:ffff:ffff,US
+2001:470:785b::,2001:470:78c7:ffff:ffff:ffff:ffff:ffff,US
2001:470:78c8::,2001:470:78c8:7fff:ffff:ffff:ffff:ffff,NL
2001:470:78c8:8000::,2001:470:78db:ffff:ffff:ffff:ffff:ffff,US
2001:470:78dc::,2001:470:78dc:7fff:ffff:ffff:ffff:ffff,NL
@@ -541,7 +566,9 @@
2001:470:78e9::,2001:470:78e9:7fff:ffff:ffff:ffff:ffff,LV
2001:470:78e9:8000::,2001:470:790c:ffff:ffff:ffff:ffff:ffff,US
2001:470:790d::,2001:470:790d:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:790d:8000::,2001:470:79ff:ffff:ffff:ffff:ffff:ffff,US
+2001:470:790d:8000::,2001:470:798e:ffff:ffff:ffff:ffff:ffff,US
+2001:470:798f::,2001:470:798f:7fff:ffff:ffff:ffff:ffff,BE
+2001:470:798f:8000::,2001:470:79ff:ffff:ffff:ffff:ffff:ffff,US
2001:470:7a00::,2001:470:7a00:7fff:ffff:ffff:ffff:ffff,NL
2001:470:7a00:8000::,2001:470:7a87:ffff:ffff:ffff:ffff:ffff,US
2001:470:7a88::,2001:470:7a88:7fff:ffff:ffff:ffff:ffff,NL
@@ -603,7 +630,9 @@
2001:470:88ee::,2001:470:88ee:7fff:ffff:ffff:ffff:ffff,CA
2001:470:88ee:8000::,2001:470:891d:ffff:ffff:ffff:ffff:ffff,US
2001:470:891e::,2001:470:891e:7fff:ffff:ffff:ffff:ffff,CA
-2001:470:891e:8000::,2001:470:8a9e:ffff:ffff:ffff:ffff:ffff,US
+2001:470:891e:8000::,2001:470:8a26:ffff:ffff:ffff:ffff:ffff,US
+2001:470:8a27::,2001:470:8a27:7fff:ffff:ffff:ffff:ffff,CA
+2001:470:8a27:8000::,2001:470:8a9e:ffff:ffff:ffff:ffff:ffff,US
2001:470:8a9f::,2001:470:8a9f:7fff:ffff:ffff:ffff:ffff,CA
2001:470:8a9f:8000::,2001:470:8c3f:ffff:ffff:ffff:ffff:ffff,US
2001:470:8c40::,2001:470:8c40:7fff:ffff:ffff:ffff:ffff,CA
@@ -611,7 +640,9 @@
2001:470:8c6c::,2001:470:8c6c:7fff:ffff:ffff:ffff:ffff,AU
2001:470:8c6c:8000::,2001:470:9097:ffff:ffff:ffff:ffff:ffff,US
2001:470:9098::,2001:470:9098:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:9098:8000::,2001:470:9330:ffff:ffff:ffff:ffff:ffff,US
+2001:470:9098:8000::,2001:470:90a6:ffff:ffff:ffff:ffff:ffff,US
+2001:470:90a7::,2001:470:90a7:7fff:ffff:ffff:ffff:ffff,GB
+2001:470:90a7:8000::,2001:470:9330:ffff:ffff:ffff:ffff:ffff,US
2001:470:9331::,2001:470:9331:7fff:ffff:ffff:ffff:ffff,DK
2001:470:9331:8000::,2001:470:94f2:7fff:ffff:ffff:ffff:ffff,US
2001:470:94f2:8000::,2001:470:94f2:ffff:ffff:ffff:ffff:ffff,CZ
@@ -635,7 +666,9 @@
2001:470:9d39::,2001:470:9d39:7fff:ffff:ffff:ffff:ffff,DE
2001:470:9d39:8000::,2001:470:9f5e:ffff:ffff:ffff:ffff:ffff,US
2001:470:9f5f::,2001:470:9f5f:7fff:ffff:ffff:ffff:ffff,RU
-2001:470:9f5f:8000::,2001:470:b009:ffff:ffff:ffff:ffff:ffff,US
+2001:470:9f5f:8000::,2001:470:a000:ffff:ffff:ffff:ffff:ffff,US
+2001:470:a001::,2001:470:a001:7fff:ffff:ffff:ffff:ffff,AU
+2001:470:a001:8000::,2001:470:b009:ffff:ffff:ffff:ffff:ffff,US
2001:470:b00a::,2001:470:b00a:7fff:ffff:ffff:ffff:ffff,CA
2001:470:b00a:8000::,2001:470:b047:ffff:ffff:ffff:ffff:ffff,US
2001:470:b048::,2001:470:b048:7fff:ffff:ffff:ffff:ffff,CA
@@ -737,13 +770,21 @@
2001:470:c9b3::,2001:470:c9b3:7fff:ffff:ffff:ffff:ffff,ES
2001:470:c9b3:8000::,2001:470:ca83:ffff:ffff:ffff:ffff:ffff,US
2001:470:ca84::,2001:470:ca84:7fff:ffff:ffff:ffff:ffff,ES
-2001:470:ca84:8000::,2001:470:cd93:7fff:ffff:ffff:ffff:ffff,US
+2001:470:ca84:8000::,2001:470:ca9f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:caa0::,2001:470:caa0:7fff:ffff:ffff:ffff:ffff,FR
+2001:470:caa0:8000::,2001:470:caeb:ffff:ffff:ffff:ffff:ffff,US
+2001:470:caec::,2001:470:caec:7fff:ffff:ffff:ffff:ffff,FR
+2001:470:caec:8000::,2001:470:cd93:7fff:ffff:ffff:ffff:ffff,US
2001:470:cd93:8000::,2001:470:cd93:ffff:ffff:ffff:ffff:ffff,FR
-2001:470:cd94::,2001:470:d050:ffff:ffff:ffff:ffff:ffff,US
+2001:470:cd94::,2001:470:cda8:ffff:ffff:ffff:ffff:ffff,US
+2001:470:cda9::,2001:470:cda9:7fff:ffff:ffff:ffff:ffff,FR
+2001:470:cda9:8000::,2001:470:d050:ffff:ffff:ffff:ffff:ffff,US
2001:470:d051::,2001:470:d051:7fff:ffff:ffff:ffff:ffff,NL
2001:470:d051:8000::,2001:470:d075:ffff:ffff:ffff:ffff:ffff,US
2001:470:d076::,2001:470:d076:7fff:ffff:ffff:ffff:ffff,NL
-2001:470:d076:8000::,2001:470:d175:ffff:ffff:ffff:ffff:ffff,US
+2001:470:d076:8000::,2001:470:d117:ffff:ffff:ffff:ffff:ffff,US
+2001:470:d118::,2001:470:d118:7fff:ffff:ffff:ffff:ffff,NL
+2001:470:d118:8000::,2001:470:d175:ffff:ffff:ffff:ffff:ffff,US
2001:470:d176::,2001:470:d176:7fff:ffff:ffff:ffff:ffff,NL
2001:470:d176:8000::,2001:470:d17a:ffff:ffff:ffff:ffff:ffff,US
2001:470:d17b::,2001:470:d17b:7fff:ffff:ffff:ffff:ffff,PL
@@ -799,7 +840,9 @@
2001:470:de00::,2001:470:de00:7fff:ffff:ffff:ffff:ffff,RU
2001:470:de00:8000::,2001:470:de4a:ffff:ffff:ffff:ffff:ffff,US
2001:470:de4b::,2001:470:de4b:7fff:ffff:ffff:ffff:ffff,SE
-2001:470:de4b:8000::,2001:470:de8a:ffff:ffff:ffff:ffff:ffff,US
+2001:470:de4b:8000::,2001:470:de51:ffff:ffff:ffff:ffff:ffff,US
+2001:470:de52::,2001:470:de52:7fff:ffff:ffff:ffff:ffff,SE
+2001:470:de52:8000::,2001:470:de8a:ffff:ffff:ffff:ffff:ffff,US
2001:470:de8b::,2001:470:de8b:7fff:ffff:ffff:ffff:ffff,RU
2001:470:de8b:8000::,2001:470:de97:ffff:ffff:ffff:ffff:ffff,US
2001:470:de98::,2001:470:de98:7fff:ffff:ffff:ffff:ffff,RU
@@ -857,7 +900,9 @@
2001:470:ed43::,2001:470:ed43:7fff:ffff:ffff:ffff:ffff,ID
2001:470:ed43:8000::,2001:470:ee2b:ffff:ffff:ffff:ffff:ffff,US
2001:470:ee2c::,2001:470:ee2c:7fff:ffff:ffff:ffff:ffff,AU
-2001:470:ee2c:8000::,2001:470:ef84:ffff:ffff:ffff:ffff:ffff,US
+2001:470:ee2c:8000::,2001:470:ef3f:ffff:ffff:ffff:ffff:ffff,US
+2001:470:ef40::,2001:470:ef40:7fff:ffff:ffff:ffff:ffff,CN
+2001:470:ef40:8000::,2001:470:ef84:ffff:ffff:ffff:ffff:ffff,US
2001:470:ef85::,2001:470:ef85:7fff:ffff:ffff:ffff:ffff,CN
2001:470:ef85:8000::,2001:470:f003:ffff:ffff:ffff:ffff:ffff,US
2001:470:f004::,2001:470:f004:7fff:ffff:ffff:ffff:ffff,CN
@@ -875,7 +920,9 @@
2001:470:f4b4:8000::,2001:470:f4b4:ffff:ffff:ffff:ffff:ffff,CN
2001:470:f4b5::,2001:470:f4c3:ffff:ffff:ffff:ffff:ffff,US
2001:470:f4c4::,2001:470:f4c4:7fff:ffff:ffff:ffff:ffff,CN
-2001:470:f4c4:8000::,2001:470:f818:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f4c4:8000::,2001:470:f54e:ffff:ffff:ffff:ffff:ffff,US
+2001:470:f54f::,2001:470:f54f:7fff:ffff:ffff:ffff:ffff,AU
+2001:470:f54f:8000::,2001:470:f818:ffff:ffff:ffff:ffff:ffff,US
2001:470:f819::,2001:470:f819:7fff:ffff:ffff:ffff:ffff,CN
2001:470:f819:8000::,2001:470:f825:7fff:ffff:ffff:ffff:ffff,US
2001:470:f825:8000::,2001:470:f825:ffff:ffff:ffff:ffff:ffff,HK
@@ -1017,7 +1064,8 @@
2001:504:2c::,2001:504:2d:ffff:ffff:ffff:ffff:ffff,CA
2001:504:2e::,2001:504:2e:ffff:ffff:ffff:ffff:ffff,US
2001:504:2f::,2001:504:2f:ffff:ffff:ffff:ffff:ffff,CA
-2001:504:30::,2001:504:34:ffff:ffff:ffff:ffff:ffff,US
+2001:504:30::,2001:504:31:ffff:ffff:ffff:ffff:ffff,US
+2001:504:33::,2001:504:34:ffff:ffff:ffff:ffff:ffff,US
2001:504:35::,2001:504:35:ffff:ffff:ffff:ffff:ffff,GD
2001:504:36::,2001:504:36:ffff:ffff:ffff:ffff:ffff,US
2001:504:37::,2001:504:37:ffff:ffff:ffff:ffff:ffff,CA
@@ -1066,9 +1114,7 @@
2001:550:90a::,2001:550:90a:7fff:ffff:ffff:ffff:ffff,CA
2001:550:90a:8000::,2001:550:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:558::,2001:560:ffff:ffff:ffff:ffff:ffff:ffff,US
-2001:568::,2001:56a:f3ca:ffff:ffff:ffff:ffff:ffff,CA
-2001:56a:f3cb::,2001:56a:f3cb:7fff:ffff:ffff:ffff:ffff,US
-2001:56a:f3cb:8000::,2001:56f:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2001:568::,2001:56f:ffff:ffff:ffff:ffff:ffff:ffff,CA
2001:570::,2001:570:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:578::,2001:57b:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:580::,2001:580:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -1109,13 +1155,11 @@
2001:648::,2001:64f:ffff:ffff:ffff:ffff:ffff:ffff,GR
2001:650::,2001:65f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:660::,2001:667:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2001:668::,2001:668:1e:ffff:ffff:ffff:ffff:ffff,DE
-2001:668:1f::,2001:668:1f:3d:ffff:ffff:ffff:ffff,US
+2001:668::,2001:668:1f:3d:ffff:ffff:ffff:ffff,DE
2001:668:1f:3e::,2001:668:1f:3e:ffff:ffff:ffff:ffff,GB
-2001:668:1f:3f::,2001:668:1f:44:ffff:ffff:ffff:ffff,US
+2001:668:1f:3f::,2001:668:1f:44:ffff:ffff:ffff:ffff,DE
2001:668:1f:45::,2001:668:1f:45:ffff:ffff:ffff:ffff,GB
-2001:668:1f:46::,2001:668:1f:7fff:ffff:ffff:ffff:ffff,US
-2001:668:1f:8000::,2001:668:109:ffff:ffff:ffff:ffff:ffff,DE
+2001:668:1f:46::,2001:668:109:ffff:ffff:ffff:ffff:ffff,DE
2001:668:10a::,2001:668:10a:7fff:ffff:ffff:ffff:ffff,BE
2001:668:10a:8000::,2001:66f:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:670::,2001:673:ffff:ffff:ffff:ffff:ffff:ffff,FI
@@ -1240,6 +1284,16 @@
2001:678:1c8::,2001:678:1c8:ffff:ffff:ffff:ffff:ffff,NL
2001:678:1cc::,2001:678:1cc:ffff:ffff:ffff:ffff:ffff,PL
2001:678:1d0::,2001:678:1d0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:1d4::,2001:678:1d4:ffff:ffff:ffff:ffff:ffff,SE
+2001:678:1d8::,2001:678:1d8:ffff:ffff:ffff:ffff:ffff,AT
+2001:678:1dc::,2001:678:1dc:ffff:ffff:ffff:ffff:ffff,PL
+2001:678:1e0::,2001:678:1e0:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:1e4::,2001:678:1e4:ffff:ffff:ffff:ffff:ffff,DE
+2001:678:1e8::,2001:678:1e8:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:1ec::,2001:678:1ec:ffff:ffff:ffff:ffff:ffff,SI
+2001:678:1f0::,2001:678:1f0:ffff:ffff:ffff:ffff:ffff,GB
+2001:678:1f4::,2001:678:1f4:ffff:ffff:ffff:ffff:ffff,RU
+2001:678:1f8::,2001:678:1f8:ffff:ffff:ffff:ffff:ffff,BG
2001:67c::,2001:67c::ffff:ffff:ffff:ffff:ffff,IE
2001:67c:4::,2001:67c:4:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:8::,2001:67c:8:ffff:ffff:ffff:ffff:ffff,CH
@@ -1794,6 +1848,7 @@
2001:67c:10f8::,2001:67c:10f8:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:10fc::,2001:67c:10fc:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1100::,2001:67c:1100:ffff:ffff:ffff:ffff:ffff,RU
+2001:67c:1104::,2001:67c:1104:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:1108::,2001:67c:1109:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1110::,2001:67c:1111:ffff:ffff:ffff:ffff:ffff,AT
2001:67c:1118::,2001:67c:1118:ffff:ffff:ffff:ffff:ffff,SE
@@ -1906,7 +1961,6 @@
2001:67c:130c::,2001:67c:130c:ffff:ffff:ffff:ffff:ffff,SE
2001:67c:1310::,2001:67c:1310:ffff:ffff:ffff:ffff:ffff,GB
2001:67c:1314::,2001:67c:1314:ffff:ffff:ffff:ffff:ffff,CZ
-2001:67c:1318::,2001:67c:1318:ffff:ffff:ffff:ffff:ffff,CZ
2001:67c:131c::,2001:67c:131c:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1320::,2001:67c:1320:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1324::,2001:67c:1324:ffff:ffff:ffff:ffff:ffff,UA
@@ -2224,7 +2278,6 @@
2001:67c:196c::,2001:67c:196c:ffff:ffff:ffff:ffff:ffff,DE
2001:67c:1970::,2001:67c:1970:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:1974::,2001:67c:1974:ffff:ffff:ffff:ffff:ffff,AT
-2001:67c:1978::,2001:67c:1978:ffff:ffff:ffff:ffff:ffff,RO
2001:67c:197c::,2001:67c:197c:ffff:ffff:ffff:ffff:ffff,NO
2001:67c:1980::,2001:67c:1980:ffff:ffff:ffff:ffff:ffff,FR
2001:67c:1984::,2001:67c:1984:ffff:ffff:ffff:ffff:ffff,BG
@@ -3129,6 +3182,7 @@
2001:67c:2dd8::,2001:67c:2dd8:ffff:ffff:ffff:ffff:ffff,SI
2001:67c:2ddc::,2001:67c:2ddc:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:2de0::,2001:67c:2de0:ffff:ffff:ffff:ffff:ffff,SI
+2001:67c:2de4::,2001:67c:2de4:ffff:ffff:ffff:ffff:ffff,PL
2001:67c:2de8::,2001:67c:2de8:ffff:ffff:ffff:ffff:ffff,CH
2001:67c:2dec::,2001:67c:2dec:ffff:ffff:ffff:ffff:ffff,RU
2001:67c:2df0::,2001:67c:2df0:ffff:ffff:ffff:ffff:ffff,BG
@@ -3318,7 +3372,9 @@
2001:6f8:13e1::,2001:6f8:13e1:7fff:ffff:ffff:ffff:ffff,DE
2001:6f8:13e1:8000::,2001:6f8:13ff:ffff:ffff:ffff:ffff:ffff,GB
2001:6f8:1400::,2001:6f8:14ff:ffff:ffff:ffff:ffff:ffff,BE
-2001:6f8:1500::,2001:6f8:1c8a:ffff:ffff:ffff:ffff:ffff,GB
+2001:6f8:1500::,2001:6f8:1c00:7fff:ffff:ffff:ffff:ffff,GB
+2001:6f8:1c00:8000::,2001:6f8:1c00:ffff:ffff:ffff:ffff:ffff,DE
+2001:6f8:1c01::,2001:6f8:1c8a:ffff:ffff:ffff:ffff:ffff,GB
2001:6f8:1c8b::,2001:6f8:1c8b:7fff:ffff:ffff:ffff:ffff,DE
2001:6f8:1c8b:8000::,2001:6f8:1cba:ffff:ffff:ffff:ffff:ffff,GB
2001:6f8:1cbb::,2001:6f8:1cbb:7fff:ffff:ffff:ffff:ffff,DE
@@ -3525,8 +3581,11 @@
2001:7f8:a2::,2001:7f8:a2:ffff:ffff:ffff:ffff:ffff,GB
2001:7f8:a3::,2001:7f8:a3:ffff:ffff:ffff:ffff:ffff,LB
2001:7f8:a4::,2001:7f8:a4:ffff:ffff:ffff:ffff:ffff,AL
+2001:7f8:a5::,2001:7f8:a5:ffff:ffff:ffff:ffff:ffff,DE
+2001:7f8:a6::,2001:7f8:a6:ffff:ffff:ffff:ffff:ffff,PL
2001:7f9::,2001:7f9::ffff:ffff:ffff:ffff:ffff,GR
2001:7f9:4::,2001:7f9:4:ffff:ffff:ffff:ffff:ffff,AL
+2001:7f9:8::,2001:7f9:8:ffff:ffff:ffff:ffff:ffff,AM
2001:7fa:0:1::,2001:7fa::1:ffff:ffff:ffff:ffff,HK
2001:7fa:0:2::,2001:7fa::2:ffff:ffff:ffff:ffff,KR
2001:7fa:0:3::,2001:7fa::3:ffff:ffff:ffff:ffff,JP
@@ -3582,7 +3641,7 @@
2001:8c8::,2001:8c8:ffff:ffff:ffff:ffff:ffff:ffff,RS
2001:8d0::,2001:8d0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:8d8::,2001:8d8:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2001:8e0::,2001:8e8:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2001:8e0::,2001:8e7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2001:8f0::,2001:8f3:ffff:ffff:ffff:ffff:ffff:ffff,CY
2001:8f8::,2001:8ff:ffff:ffff:ffff:ffff:ffff:ffff,AE
2001:900::,2001:900:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -3693,7 +3752,7 @@
2001:b08::,2001:b08:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:b10::,2001:b10:ffff:ffff:ffff:ffff:ffff:ffff,PL
2001:b18::,2001:b18:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2001:b20::,2001:b20:ffff:ffff:ffff:ffff:ffff:ffff,LU
+2001:b20::,2001:b27:ffff:ffff:ffff:ffff:ffff:ffff,LU
2001:b28::,2001:b28:ffff:ffff:ffff:ffff:ffff:ffff,RU
2001:b30::,2001:b37:ffff:ffff:ffff:ffff:ffff:ffff,RO
2001:b40::,2001:b40:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -3818,6 +3877,7 @@
2001:dda::,2001:dda::ffff:ffff:ffff:ffff:ffff,JP
2001:ddc::,2001:ddc::ffff:ffff:ffff:ffff:ffff,MY
2001:ddd::,2001:ddd::ffff:ffff:ffff:ffff:ffff,AU
+2001:dde::,2001:dde::ffff:ffff:ffff:ffff:ffff,MV
2001:de1::,2001:de1:3f:ffff:ffff:ffff:ffff:ffff,JP
2001:de8::,2001:de8::ffff:ffff:ffff:ffff:ffff,TH
2001:de8:1::,2001:de8:1:ffff:ffff:ffff:ffff:ffff,IN
@@ -3846,6 +3906,7 @@
2001:de9::,2001:de9::ffff:ffff:ffff:ffff:ffff,LK
2001:de9:8000::,2001:de9:8000:ffff:ffff:ffff:ffff:ffff,ID
2001:dea::,2001:dea::ffff:ffff:ffff:ffff:ffff,AU
+2001:dea:8000::,2001:dea:8000:ffff:ffff:ffff:ffff:ffff,PG
2001:deb::,2001:deb::ffff:ffff:ffff:ffff:ffff,TH
2001:dec::,2001:dec::ffff:ffff:ffff:ffff:ffff,VU
2001:ded::,2001:ded::ffff:ffff:ffff:ffff:ffff,SG
@@ -4151,7 +4212,6 @@
2001:df0:401::,2001:df0:401:ffff:ffff:ffff:ffff:ffff,JP
2001:df0:402::,2001:df0:403:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:404::,2001:df0:404:ffff:ffff:ffff:ffff:ffff,SG
-2001:df0:407::,2001:df0:407:ffff:ffff:ffff:ffff:ffff,AU
2001:df0:408::,2001:df0:408:ffff:ffff:ffff:ffff:ffff,NZ
2001:df0:409::,2001:df0:409:ffff:ffff:ffff:ffff:ffff,ID
2001:df0:40a::,2001:df0:40a:ffff:ffff:ffff:ffff:ffff,AU
@@ -4415,6 +4475,7 @@
2001:df1:a400::,2001:df1:a400:ffff:ffff:ffff:ffff:ffff,BD
2001:df1:a800::,2001:df1:a800:ffff:ffff:ffff:ffff:ffff,SG
2001:df1:aa00::,2001:df1:aa00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df1:ac00::,2001:df1:ac00:ffff:ffff:ffff:ffff:ffff,HK
2001:df1:ae00::,2001:df1:ae00:ffff:ffff:ffff:ffff:ffff,AU
2001:df1:b000::,2001:df1:b000:ffff:ffff:ffff:ffff:ffff,TH
2001:df1:b200::,2001:df1:b200:ffff:ffff:ffff:ffff:ffff,HK
@@ -4522,36 +4583,70 @@
2001:df2:8800::,2001:df2:8800:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:8a00::,2001:df2:8a00:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:8c00::,2001:df2:8c00:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:8e00::,2001:df2:8e00:ffff:ffff:ffff:ffff:ffff,MY
+2001:df2:9200::,2001:df2:9200:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:9400::,2001:df2:9400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:9600::,2001:df2:9600:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:9800::,2001:df2:9803:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:9a00::,2001:df2:9a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:9c00::,2001:df2:9c00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:9e00::,2001:df2:9e00:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:a000::,2001:df2:a000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:a200::,2001:df2:a200:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:a400::,2001:df2:a400:ffff:ffff:ffff:ffff:ffff,MY
+2001:df2:a600::,2001:df2:a600:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:a800::,2001:df2:a800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:aa00::,2001:df2:aa00:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:ac00::,2001:df2:ac01:ffff:ffff:ffff:ffff:ffff,TH
+2001:df2:ae00::,2001:df2:ae00:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:b000::,2001:df2:b000:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:b200::,2001:df2:b200:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:b400::,2001:df2:b400:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:b600::,2001:df2:b600:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:ba00::,2001:df2:ba00:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:bc00::,2001:df2:bc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:be00::,2001:df2:be00:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:c000::,2001:df2:c000:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:c200::,2001:df2:c200:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:c400::,2001:df2:c400:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:c600::,2001:df2:c600:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:c800::,2001:df2:c800:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:ca00::,2001:df2:ca00:ffff:ffff:ffff:ffff:ffff,VN
2001:df2:cc00::,2001:df2:cc00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:ce00::,2001:df2:ce00:ffff:ffff:ffff:ffff:ffff,VN
2001:df2:d000::,2001:df2:d000:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:d200::,2001:df2:d200:ffff:ffff:ffff:ffff:ffff,HK
2001:df2:d400::,2001:df2:d400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:d600::,2001:df2:d600:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:d800::,2001:df2:d800:ffff:ffff:ffff:ffff:ffff,JP
+2001:df2:da00::,2001:df2:da00:ffff:ffff:ffff:ffff:ffff,JP
2001:df2:dc00::,2001:df2:dc00:ffff:ffff:ffff:ffff:ffff,TH
+2001:df2:de00::,2001:df2:de00:ffff:ffff:ffff:ffff:ffff,AU
+2001:df2:e200::,2001:df2:e200:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:e400::,2001:df2:e400:ffff:ffff:ffff:ffff:ffff,PH
+2001:df2:e600::,2001:df2:e600:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:e800::,2001:df2:e800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:ea00::,2001:df2:ea00:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:ec00::,2001:df2:ec00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df2:ee00::,2001:df2:ee01:ffff:ffff:ffff:ffff:ffff,AU
2001:df2:f000::,2001:df2:f000:ffff:ffff:ffff:ffff:ffff,VN
+2001:df2:f200::,2001:df2:f200:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:f400::,2001:df2:f400:ffff:ffff:ffff:ffff:ffff,HK
+2001:df2:f600::,2001:df2:f600:ffff:ffff:ffff:ffff:ffff,ID
2001:df2:f800::,2001:df2:f800:ffff:ffff:ffff:ffff:ffff,IN
+2001:df2:fa00::,2001:df2:fa00:ffff:ffff:ffff:ffff:ffff,IN
2001:df2:fc00::,2001:df2:fc00:ffff:ffff:ffff:ffff:ffff,JP
+2001:df2:fe00::,2001:df2:fe00:ffff:ffff:ffff:ffff:ffff,US
2001:df3::,2001:df3::ffff:ffff:ffff:ffff:ffff,MY
+2001:df3:200::,2001:df3:200:ffff:ffff:ffff:ffff:ffff,IN
2001:df3:400::,2001:df3:400:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:600::,2001:df3:600:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:800::,2001:df3:81f:ffff:ffff:ffff:ffff:ffff,US
+2001:df3:a00::,2001:df3:a00:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:c00::,2001:df3:c00:ffff:ffff:ffff:ffff:ffff,ID
+2001:df3:e00::,2001:df3:e00:ffff:ffff:ffff:ffff:ffff,SG
2001:df3:1000::,2001:df3:1000:ffff:ffff:ffff:ffff:ffff,BD
+2001:df3:1200::,2001:df3:1200:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:1400::,2001:df3:1400:ffff:ffff:ffff:ffff:ffff,AU
2001:df3:1800::,2001:df3:1800:ffff:ffff:ffff:ffff:ffff,ID
2001:df3:2000::,2001:df3:2000:ffff:ffff:ffff:ffff:ffff,ID
@@ -5063,8 +5158,8 @@
2001:15a8::,2001:15a8:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:15b0::,2001:15b0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:15b8::,2001:15b8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2001:15c0::,2001:15c0:65ff:7fff:ffff:ffff:ffff:ffff,SI
-2001:15c0:65ff:8000::,2001:15c0:65ff:ffff:ffff:ffff:ffff:ffff,AT
+2001:15c0::,2001:15c0:65fe:ffff:ffff:ffff:ffff:ffff,SI
+2001:15c0:65ff::,2001:15c0:65ff:ffff:ffff:ffff:ffff:ffff,AT
2001:15c0:6600::,2001:15c0:665e:ffff:ffff:ffff:ffff:ffff,SI
2001:15c0:665f::,2001:15c0:665f:7fff:ffff:ffff:ffff:ffff,AT
2001:15c0:665f:8000::,2001:15c0:66a2:ffff:ffff:ffff:ffff:ffff,SI
@@ -5207,20 +5302,20 @@
2001:19e0::,2001:19e0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19e8::,2001:19e8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19f0::,2001:19f0:5000:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:5000:8000::,2001:19f0:5000:ffff:ffff:ffff:ffff:ffff,NL
-2001:19f0:5001::,2001:19f0:5800:7fff:ffff:ffff:ffff:ffff,US
+2001:19f0:5000:8000::,2001:19f0:5001:7fff:ffff:ffff:ffff:ffff,NL
+2001:19f0:5001:8000::,2001:19f0:5800:7fff:ffff:ffff:ffff:ffff,US
2001:19f0:5800:8000::,2001:19f0:5800:ffff:ffff:ffff:ffff:ffff,AU
2001:19f0:5801::,2001:19f0:67ff:ffff:ffff:ffff:ffff:ffff,US
2001:19f0:6800::,2001:19f0:6800:ffff:ffff:ffff:ffff:ffff,FR
2001:19f0:6801::,2001:19f0:6c00:7fff:ffff:ffff:ffff:ffff,US
2001:19f0:6c00:8000::,2001:19f0:6c00:ffff:ffff:ffff:ffff:ffff,DE
2001:19f0:6c01::,2001:19f0:7000:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:7000:8000::,2001:19f0:7000:ffff:ffff:ffff:ffff:ffff,JP
-2001:19f0:7001::,2001:19f0:7400:7fff:ffff:ffff:ffff:ffff,US
+2001:19f0:7000:8000::,2001:19f0:7001:7fff:ffff:ffff:ffff:ffff,JP
+2001:19f0:7001:8000::,2001:19f0:7400:7fff:ffff:ffff:ffff:ffff,US
2001:19f0:7400:8000::,2001:19f0:7400:ffff:ffff:ffff:ffff:ffff,GB
2001:19f0:7401::,2001:19f0:7401:7fff:ffff:ffff:ffff:ffff,US
-2001:19f0:7401:8000::,2001:19f0:7401:ffff:ffff:ffff:ffff:ffff,GB
-2001:19f0:7402::,2001:19f0:7800:3fff:ffff:ffff:ffff:ffff,US
+2001:19f0:7401:8000::,2001:19f0:7402:7fff:ffff:ffff:ffff:ffff,GB
+2001:19f0:7402:8000::,2001:19f0:7800:3fff:ffff:ffff:ffff:ffff,US
2001:19f0:7800:4000::,2001:19f0:7800:4000:ffff:ffff:ffff:ffff,CA
2001:19f0:7800:4001::,2001:19f0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:19f8::,2001:19f8:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -5289,27 +5384,30 @@
2001:1c00::,2001:1dff:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:2002:2f8::,2001:2002:2f9:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:3e14::,2001:2002:3e14:ffff:ffff:ffff:ffff:ffff,SE
-2001:2002:4e42::,2001:2002:4e42:dfff:ffff:ffff:ffff:ffff,SE
-2001:2002:4e42:f000::,2001:2002:4e43:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:4e42::,2001:2002:4e42:7fff:ffff:ffff:ffff:ffff,SE
+2001:2002:4e43::,2001:2002:4e43:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:4e44:8000::,2001:2002:4e45:7fff:ffff:ffff:ffff:ffff,SE
-2001:2002:4e46::,2001:2002:4e46:7fff:ffff:ffff:ffff:ffff,SE
-2001:2002:4e47::,2001:2002:4e49:ffff:ffff:ffff:ffff:ffff,SE
-2001:2002:51e0::,2001:2002:51e9:7fff:ffff:ffff:ffff:ffff,SE
-2001:2002:51ea::,2001:2002:51ea:7fff:ffff:ffff:ffff:ffff,SE
-2001:2002:51eb::,2001:2002:51eb:ffff:ffff:ffff:ffff:ffff,SE
-2001:2002:51ec:8000::,2001:2002:51ec:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:4e46::,2001:2002:4e49:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:51e0::,2001:2002:51e4:7fff:ffff:ffff:ffff:ffff,SE
+2001:2002:51e5::,2001:2002:51e6:7fff:ffff:ffff:ffff:ffff,SE
+2001:2002:51e7::,2001:2002:51e7:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:51e8:8000::,2001:2002:51e8:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:51e9:8000::,2001:2002:51ea:7fff:ffff:ffff:ffff:ffff,SE
+2001:2002:51eb::,2001:2002:51ec:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:51ed:8000::,2001:2002:51ed:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:5ae0::,2001:2002:5ae1:7fff:ffff:ffff:ffff:ffff,SE
2001:2002:5ae2::,2001:2002:5ae3:7fff:ffff:ffff:ffff:ffff,SE
2001:2002:5ae4:8000::,2001:2002:5ae4:ffff:ffff:ffff:ffff:ffff,SE
-2001:2002:5ae5:8000::,2001:2002:5ae6:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:5ae5:8000::,2001:2002:5ae6:7fff:ffff:ffff:ffff:ffff,SE
2001:2002:5ae7:8000::,2001:2002:5ae7:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:c2ec:8000::,2001:2002:c2ec:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:c343:8000::,2001:2002:c343:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:c3c6::,2001:2002:c3c6:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:c3fc::,2001:2002:c3fc:7fff:ffff:ffff:ffff:ffff,SE
+2001:2002:d4b5:8000::,2001:2002:d4b5:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:d540::,2001:2002:d541:ffff:ffff:ffff:ffff:ffff,SE
-2001:2002:d542:8000::,2001:2002:d543:7fff:ffff:ffff:ffff:ffff,SE
+2001:2002:d542:8000::,2001:2002:d542:ffff:ffff:ffff:ffff:ffff,SE
+2001:2002:d543:8000::,2001:2002:d543:ffff:ffff:ffff:ffff:ffff,SE
2001:2002:d9d0::,2001:2002:d9d0:7fff:ffff:ffff:ffff:ffff,SE
2001:2002:d9d1::,2001:2002:d9d2:7fff:ffff:ffff:ffff:ffff,SE
2001:2002:d9d3::,2001:2002:d9d3:ffff:ffff:ffff:ffff:ffff,SE
@@ -5319,6 +5417,7 @@
2001:2003:54f8:4000::,2001:2003:54fb:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:58c0::,2001:2003:58c1:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:58c3::,2001:2003:58c3:ffff:ffff:ffff:ffff:ffff,FI
+2001:2003:f01f::,2001:2003:f01f:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f041:8000::,2001:2003:f041:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f042:8000::,2001:2003:f042:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f04a:8000::,2001:2003:f04a:ffff:ffff:ffff:ffff:ffff,FI
@@ -5341,11 +5440,13 @@
2001:2003:f23d::,2001:2003:f23d:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f250:8000::,2001:2003:f250:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f263:8000::,2001:2003:f263:ffff:ffff:ffff:ffff:ffff,FI
+2001:2003:f269:8000::,2001:2003:f269:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f294::,2001:2003:f294:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f2c3:8000::,2001:2003:f2c3:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f2fb::,2001:2003:f2fb:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f324::,2001:2003:f324:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f357:8000::,2001:2003:f357:ffff:ffff:ffff:ffff:ffff,FI
+2001:2003:f368:8000::,2001:2003:f368:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f36f::,2001:2003:f36f:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f37d:8000::,2001:2003:f37d:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f386::,2001:2003:f386:7fff:ffff:ffff:ffff:ffff,FI
@@ -5353,7 +5454,8 @@
2001:2003:f39b:8000::,2001:2003:f39b:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f3be:8000::,2001:2003:f3be:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f3d6:8000::,2001:2003:f3d7:7fff:ffff:ffff:ffff:ffff,FI
-2001:2003:f441::,2001:2003:f441:ffff:ffff:ffff:ffff:ffff,FI
+2001:2003:f423:8000::,2001:2003:f423:ffff:ffff:ffff:ffff:ffff,FI
+2001:2003:f441::,2001:2003:f442:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f447::,2001:2003:f447:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f44a:8000::,2001:2003:f44a:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f45a::,2001:2003:f45a:ffff:ffff:ffff:ffff:ffff,FI
@@ -5395,6 +5497,7 @@
2001:2003:f81d:8000::,2001:2003:f81d:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f824::,2001:2003:f824:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f825:8000::,2001:2003:f826:7fff:ffff:ffff:ffff:ffff,FI
+2001:2003:f82f:8000::,2001:2003:f82f:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f839::,2001:2003:f839:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f83c::,2001:2003:f83c:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f843:8000::,2001:2003:f843:ffff:ffff:ffff:ffff:ffff,FI
@@ -5409,6 +5512,7 @@
2001:2003:f96e::,2001:2003:f96e:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:f9b8:8000::,2001:2003:f9b8:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f9e7:8000::,2001:2003:f9e7:ffff:ffff:ffff:ffff:ffff,FI
+2001:2003:f9eb:8000::,2001:2003:f9eb:ffff:ffff:ffff:ffff:ffff,FI
2001:2003:f9f1::,2001:2003:f9f1:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:fa67::,2001:2003:fa67:7fff:ffff:ffff:ffff:ffff,FI
2001:2003:fa6f:8000::,2001:2003:fa6f:ffff:ffff:ffff:ffff:ffff,FI
@@ -5432,17 +5536,38 @@
2001:2010:d039:8000::,2001:2010:d03a:ffff:ffff:ffff:ffff:ffff,DK
2001:2010:d04e:8000::,2001:2010:d04e:ffff:ffff:ffff:ffff:ffff,DK
2001:2011:c002::,2001:2011:c002:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:100::,2001:2012:100:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:112::,2001:2012:112:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:202::,2001:2012:202:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1100:8000::,2001:2012:1101:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1102::,2001:2012:1102:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1103::,2001:2012:1103:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1107::,2001:2012:1108:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1109::,2001:2012:1109:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1201::,2001:2012:1201:7fff:ffff:ffff:ffff:ffff,DK
-2001:2012:1203:8000::,2001:2012:1203:ffff:ffff:ffff:ffff:ffff,DK
-2001:2012:120e::,2001:2012:120e:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:100::,2001:2012:100:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:101:8000::,2001:2012:103:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:104:8000::,2001:2012:104:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:106::,2001:2012:106:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:107:8000::,2001:2012:107:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:108:8000::,2001:2012:108:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:109:8000::,2001:2012:109:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:10a:8000::,2001:2012:10b:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:10c::,2001:2012:10c:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:10d:8000::,2001:2012:10f:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:110::,2001:2012:110:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:112::,2001:2012:112:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:200::,2001:2012:201:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:202:7000::,2001:2012:203:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:204::,2001:2012:205:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:206:8000::,2001:2012:208:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:20a::,2001:2012:20b:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:20c::,2001:2012:20c:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:20f::,2001:2012:210:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:211:8000::,2001:2012:211:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1100:8000::,2001:2012:1102:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:1103::,2001:2012:1103:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1104:8000::,2001:2012:1109:7fff:ffff:ffff:ffff:ffff,DK
+2001:2012:110a::,2001:2012:110d:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:110e:8000::,2001:2012:110e:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1110::,2001:2012:1110:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1200::,2001:2012:1201:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1203:8000::,2001:2012:1204:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1205:8000::,2001:2012:1206:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:1208:8000::,2001:2012:1209:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:120b::,2001:2012:120e:ffff:ffff:ffff:ffff:ffff,DK
+2001:2012:120f:8000::,2001:2012:120f:ffff:ffff:ffff:ffff:ffff,DK
2001:2012:3ec6::,2001:2012:3ec7:ffff:ffff:ffff:ffff:ffff,DK
2001:2012:c213:8000::,2001:2012:c213:ffff:ffff:ffff:ffff:ffff,DK
2001:2012:c2ff::,2001:2012:c2ff:ffff:ffff:ffff:ffff:ffff,DK
@@ -5474,7 +5599,6 @@
2001:40b0::,2001:40b0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2001:40b8::,2001:40b8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2001:40c0::,2001:40c0:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2001:40c8::,2001:40cf:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:40d0::,2001:40d0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2001:40d8::,2001:40d8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:40e0::,2001:40e0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -5582,7 +5706,7 @@
2001:43f8:92::,2001:43f8:92:ffff:ffff:ffff:ffff:ffff,MU
2001:43f8:a0::,2001:43f8:a0:ffff:ffff:ffff:ffff:ffff,ZA
2001:43f8:b0::,2001:43f8:b0:ffff:ffff:ffff:ffff:ffff,SL
-2001:43f8:c0::,2001:43f8:c0:ffff:ffff:ffff:ffff:ffff,KE
+2001:43f8:c0::,2001:43f8:c1:ffff:ffff:ffff:ffff:ffff,KE
2001:43f8:d0::,2001:43f8:d0:ffff:ffff:ffff:ffff:ffff,MU
2001:43f8:e0::,2001:43f8:e0:ffff:ffff:ffff:ffff:ffff,TZ
2001:43f8:100::,2001:43f8:100:ffff:ffff:ffff:ffff:ffff,ZA
@@ -5613,8 +5737,10 @@
2001:43f8:2a0::,2001:43f8:2a0:ffff:ffff:ffff:ffff:ffff,BW
2001:43f8:2b0::,2001:43f8:2b0:ffff:ffff:ffff:ffff:ffff,BW
2001:43f8:2c0::,2001:43f8:2c0:ffff:ffff:ffff:ffff:ffff,ZA
+2001:43f8:2d0::,2001:43f8:2d0:ffff:ffff:ffff:ffff:ffff,GH
2001:43f8:2e0::,2001:43f8:2e0:ffff:ffff:ffff:ffff:ffff,EG
2001:43f8:2f0::,2001:43f8:2f0:ffff:ffff:ffff:ffff:ffff,NG
+2001:43f8:300::,2001:43f8:300:ffff:ffff:ffff:ffff:ffff,GH
2001:43f8:310::,2001:43f8:310:ffff:ffff:ffff:ffff:ffff,ZW
2001:43f8:320::,2001:43f8:320:ffff:ffff:ffff:ffff:ffff,TN
2001:43f8:330::,2001:43f8:330:ffff:ffff:ffff:ffff:ffff,TZ
@@ -5843,14 +5969,34 @@
2001:49e8::,2001:49e8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:49f0::,2001:49f0:b002:ffff:ffff:ffff:ffff:ffff,US
2001:49f0:b003::,2001:49f0:b003:7fff:ffff:ffff:ffff:ffff,CZ
-2001:49f0:b003:8000::,2001:49f0:d006:ffff:ffff:ffff:ffff:ffff,US
-2001:49f0:d007::,2001:49f0:d007:ffff:ffff:ffff:ffff:ffff,GB
+2001:49f0:b003:8000::,2001:49f0:d001:f:ffff:ffff:ffff:ffff,US
+2001:49f0:d001:10::,2001:49f0:d001:10:ffff:ffff:ffff:ffff,CA
+2001:49f0:d001:11::,2001:49f0:d001:11:ffff:ffff:ffff:ffff,BR
+2001:49f0:d001:12::,2001:49f0:d001:12:ffff:ffff:ffff:ffff,MX
+2001:49f0:d001:13::,2001:49f0:d001:13:ffff:ffff:ffff:ffff,JP
+2001:49f0:d001:14::,2001:49f0:d001:14:ffff:ffff:ffff:ffff,AU
+2001:49f0:d001:15::,2001:49f0:d006:ffff:ffff:ffff:ffff:ffff,US
+2001:49f0:d007::,2001:49f0:d007:15:ffff:ffff:ffff:ffff,GB
+2001:49f0:d007:16::,2001:49f0:d007:16:ffff:ffff:ffff:ffff,US
+2001:49f0:d007:17::,2001:49f0:d007:17:ffff:ffff:ffff:ffff,IT
+2001:49f0:d007:18::,2001:49f0:d007:18:ffff:ffff:ffff:ffff,IE
+2001:49f0:d007:19::,2001:49f0:d007:19:ffff:ffff:ffff:ffff,FR
+2001:49f0:d007:1a::,2001:49f0:d007:1f:ffff:ffff:ffff:ffff,GB
+2001:49f0:d007:20::,2001:49f0:d007:20:ffff:ffff:ffff:ffff,TH
+2001:49f0:d007:21::,2001:49f0:d007:ffff:ffff:ffff:ffff:ffff,GB
2001:49f0:d008::,2001:49f0:d01d:ffff:ffff:ffff:ffff:ffff,US
2001:49f0:d01e::,2001:49f0:d01e:ffff:ffff:ffff:ffff:ffff,ES
2001:49f0:d01f::,2001:49f0:d01f:ffff:ffff:ffff:ffff:ffff,DE
2001:49f0:d020::,2001:49f0:d022:ffff:ffff:ffff:ffff:ffff,US
2001:49f0:d023::,2001:49f0:d024:ffff:ffff:ffff:ffff:ffff,NL
-2001:49f0:d025::,2001:49f0:ffff:ffff:ffff:ffff:ffff:ffff,US
+2001:49f0:d025::,2001:49f0:d02d:3:ffff:ffff:ffff:ffff,US
+2001:49f0:d02d:4::,2001:49f0:d02d:4:ffff:ffff:ffff:ffff,NL
+2001:49f0:d02d:5::,2001:49f0:d02d:5:ffff:ffff:ffff:ffff,US
+2001:49f0:d02d:6::,2001:49f0:d02d:6:ffff:ffff:ffff:ffff,IN
+2001:49f0:d02d:7::,2001:49f0:d02d:7:ffff:ffff:ffff:ffff,SE
+2001:49f0:d02d:8::,2001:49f0:d02d:8:ffff:ffff:ffff:ffff,ES
+2001:49f0:d02d:9::,2001:49f0:d02d:9:ffff:ffff:ffff:ffff,DE
+2001:49f0:d02d:a::,2001:49f0:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:49f8::,2001:49f8:ffff:ffff:ffff:ffff:ffff:ffff,US
2001:4a00::,2001:4a1f:ffff:ffff:ffff:ffff:ffff:ffff,GB
2001:4b00::,2001:4b07:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -5957,6 +6103,7 @@
2001:4de0:4002:8000::,2001:4de0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2001:4de8::,2001:4de8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2001:4df0::,2001:4df0:ffff:ffff:ffff:ffff:ffff:ffff,IL
+2001:5100:204::,2001:5100:204:ff:ffff:ffff:ffff:ffff,GB
2001:8000::,2001:8fff:ffff:ffff:ffff:ffff:ffff:ffff,AU
2001:a000::,2001:a7ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
2001:b000::,2001:b7ff:ffff:ffff:ffff:ffff:ffff:ffff,TW
@@ -5968,7 +6115,9 @@
2003:45:2d04:8000::,2003:45:2d04:ffff:ffff:ffff:ffff:ffff,TR
2003:45:2d05::,2003:45:2d36:7fff:ffff:ffff:ffff:ffff,DE
2003:45:2d36:8000::,2003:45:2d36:ffff:ffff:ffff:ffff:ffff,TR
-2003:45:2d37::,2003:4a:af14:7fff:ffff:ffff:ffff:ffff,DE
+2003:45:2d37::,2003:48:8c78:ffff:ffff:ffff:ffff:ffff,DE
+2003:48:8c79::,2003:48:8c79:7fff:ffff:ffff:ffff:ffff,US
+2003:48:8c79:8000::,2003:4a:af14:7fff:ffff:ffff:ffff:ffff,DE
2003:4a:af14:8000::,2003:4a:af14:ffff:ffff:ffff:ffff:ffff,TR
2003:4a:af15::,2003:4a:af2b:7fff:ffff:ffff:ffff:ffff,DE
2003:4a:af2b:8000::,2003:4a:af2b:ffff:ffff:ffff:ffff:ffff,TR
@@ -6479,7 +6628,6 @@
2400:fe00::,2400:fe00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2400:fe80::,2400:fe80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2400:ff00::,2400:ff00:ffff:ffff:ffff:ffff:ffff:ffff,LK
-2400:ff80::,2400:ff80:ffff:ffff:ffff:ffff:ffff:ffff,AF
2401::,2401:1:ffff:ffff:ffff:ffff:ffff:ffff,PK
2401:80::,2401:80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2401:100::,2401:100:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -6955,7 +7103,8 @@
2401:f900::,2401:f900:ffff:ffff:ffff:ffff:ffff:ffff,SG
2401:f980::,2401:f980:ffff:ffff:ffff:ffff:ffff:ffff,ID
2401:fa00::,2401:fa00::ffff:ffff:ffff:ffff:ffff,AU
-2401:fa00:1::,2401:fa00:1:ffff:ffff:ffff:ffff:ffff,TW
+2401:fa00:1::,2401:fa00:1:7fff:ffff:ffff:ffff:ffff,IN
+2401:fa00:1:8000::,2401:fa00:1:ffff:ffff:ffff:ffff:ffff,TW
2401:fa00:2::,2401:fa00:2:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:3::,2401:fa00:3:ffff:ffff:ffff:ffff:ffff,SG
2401:fa00:4::,2401:fa00:4:ffff:ffff:ffff:ffff:ffff,JP
@@ -6965,12 +7114,13 @@
2401:fa00:9::,2401:fa00:9:ffff:ffff:ffff:ffff:ffff,AU
2401:fa00:a::,2401:fa00:c:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:d::,2401:fa00:d:7fff:ffff:ffff:ffff:ffff,KR
-2401:fa00:d:8000::,2401:fa00:e:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:f::,2401:fa00:f:ffff:ffff:ffff:ffff:ffff,SG
+2401:fa00:d:8000::,2401:fa00:f:7fff:ffff:ffff:ffff:ffff,IN
+2401:fa00:f:8000::,2401:fa00:f:ffff:ffff:ffff:ffff:ffff,SG
2401:fa00:10::,2401:fa00:10:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:11::,2401:fa00:11:ffff:ffff:ffff:ffff:ffff,AU
2401:fa00:12::,2401:fa00:12:ffff:ffff:ffff:ffff:ffff,NZ
-2401:fa00:13::,2401:fa00:13:ffff:ffff:ffff:ffff:ffff,HK
+2401:fa00:13::,2401:fa00:13:7fff:ffff:ffff:ffff:ffff,IN
+2401:fa00:13:8000::,2401:fa00:13:ffff:ffff:ffff:ffff:ffff,HK
2401:fa00:14::,2401:fa00:15:7fff:ffff:ffff:ffff:ffff,IN
2401:fa00:15:8000::,2401:fa00:15:ffff:ffff:ffff:ffff:ffff,US
2401:fa00:16::,2401:fa00:17:ffff:ffff:ffff:ffff:ffff,IN
@@ -6978,13 +7128,10 @@
2401:fa00:18:8000::,2401:fa00:18:ffff:ffff:ffff:ffff:ffff,US
2401:fa00:19::,2401:fa00:1e:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:1f::,2401:fa00:1f:7fff:ffff:ffff:ffff:ffff,US
-2401:fa00:1f:8000::,2401:fa00:23:ffff:ffff:ffff:ffff:ffff,IN
-2401:fa00:24::,2401:fa00:24:ffff:ffff:ffff:ffff:ffff,MY
-2401:fa00:25::,2401:fa00:25:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:1f:8000::,2401:fa00:25:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:26::,2401:fa00:26:ffff:ffff:ffff:ffff:ffff,US
-2401:fa00:27::,2401:fa00:28:7fff:ffff:ffff:ffff:ffff,IN
-2401:fa00:28:8000::,2401:fa00:28:ffff:ffff:ffff:ffff:ffff,AU
-2401:fa00:29::,2401:fa00:29:7fff:ffff:ffff:ffff:ffff,US
+2401:fa00:27::,2401:fa00:27:ffff:ffff:ffff:ffff:ffff,IN
+2401:fa00:28::,2401:fa00:29:7fff:ffff:ffff:ffff:ffff,AU
2401:fa00:29:8000::,2401:fa00:3f:ffff:ffff:ffff:ffff:ffff,IN
2401:fa00:40::,2401:fa00:40:7fff:ffff:ffff:ffff:ffff,CN
2401:fa00:40:8000::,2401:fa00:40:ffff:ffff:ffff:ffff:ffff,IN
@@ -7123,7 +7270,6 @@
2402:3e80::,2402:3e80:ffff:ffff:ffff:ffff:ffff:ffff,MY
2402:3f80::,2402:3f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:4000::,2402:4000:ffff:ffff:ffff:ffff:ffff:ffff,LK
-2402:4080::,2402:4080:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:4100::,2402:4100:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:4180::,2402:4180:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:4200::,2402:4200:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -7133,7 +7279,6 @@
2402:4400::,2402:4400:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:4480::,2402:4480:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:4500::,2402:4500:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2402:4580::,2402:4580:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:4600::,2402:4600:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:4680::,2402:4680:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:4700::,2402:4700:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -7185,7 +7330,9 @@
2402:5e80::,2402:5e80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2402:5f00::,2402:5f00:ffff:ffff:ffff:ffff:ffff:ffff,ID
2402:5f80::,2402:5f80:ffff:ffff:ffff:ffff:ffff:ffff,SG
-2402:6000::,2402:6000:100:ffff:ffff:ffff:ffff:ffff,AU
+2402:6000::,2402:6000:ff:ffff:ffff:ffff:ffff:ffff,AU
+2402:6000:100::,2402:6000:100:7fff:ffff:ffff:ffff:ffff,NZ
+2402:6000:100:8000::,2402:6000:100:ffff:ffff:ffff:ffff:ffff,AU
2402:6000:101::,2402:6000:101:7fff:ffff:ffff:ffff:ffff,NZ
2402:6000:101:8000::,2402:6000:10f:ffff:ffff:ffff:ffff:ffff,AU
2402:6000:110::,2402:6000:110:7fff:ffff:ffff:ffff:ffff,NZ
@@ -7245,9 +7392,7 @@
2402:7780::,2402:7780:ffff:ffff:ffff:ffff:ffff:ffff,IN
2402:7800::,2402:7800:204:7fff:ffff:ffff:ffff:ffff,AU
2402:7800:204:8000::,2402:7800:204:ffff:ffff:ffff:ffff:ffff,NZ
-2402:7800:205::,2402:7800:fe00:3ff:ffff:ffff:ffff:ffff,AU
-2402:7800:fe00:400::,2402:7800:fe00:7ff:ffff:ffff:ffff:ffff,NZ
-2402:7800:fe00:800::,2402:7800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2402:7800:205::,2402:7800:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7880::,2402:7880:ffff:ffff:ffff:ffff:ffff:ffff,SG
2402:7900::,2402:7900:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:7980::,2402:7980:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -7321,7 +7466,9 @@
2402:9d00::,2402:9d00:ffff:ffff:ffff:ffff:ffff:ffff,KH
2402:9d80::,2402:9d80:ffff:ffff:ffff:ffff:ffff:ffff,VN
2402:9e00::,2402:9e00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
-2402:9e80::,2402:9e80:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2402:9e80::,2402:9e80::ffff:ffff:ffff:ffff:ffff,HK
+2402:9e80:1::,2402:9e80:1:7fff:ffff:ffff:ffff:ffff,AU
+2402:9e80:1:8000::,2402:9e80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2402:9f00::,2402:9f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2402:9f80::,2402:9f80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2402:a000::,2402:a000:ffff:ffff:ffff:ffff:ffff:ffff,ID
@@ -7708,7 +7855,7 @@
2403:6280::,2403:6280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:6300::,2403:6300:ffff:ffff:ffff:ffff:ffff:ffff,KR
2403:6380::,2403:6380:ffff:ffff:ffff:ffff:ffff:ffff,CN
-2403:6400::,2403:6400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2403:6400::,2403:6400:ffff:ffff:ffff:ffff:ffff:ffff,HK
2403:6480::,2403:6480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2403:6500::,2403:6500:ffff:ffff:ffff:ffff:ffff:ffff,KR
2403:6580::,2403:6580:ffff:ffff:ffff:ffff:ffff:ffff,CN
@@ -8292,7 +8439,7 @@
2404:7f00::,2404:7f00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2404:7f80::,2404:7f80:ffff:ffff:ffff:ffff:ffff:ffff,IN
2404:8000::,2404:8000:ffff:ffff:ffff:ffff:ffff:ffff,ID
-2404:8080::,2404:8080:ffff:ffff:ffff:ffff:ffff:ffff,US
+2404:8080::,2404:8081:ffff:ffff:ffff:ffff:ffff:ffff,US
2404:8100::,2404:8100:ffff:ffff:ffff:ffff:ffff:ffff,MY
2404:8180::,2404:8180:ffff:ffff:ffff:ffff:ffff:ffff,PK
2404:8200::,2404:8200:ffff:ffff:ffff:ffff:ffff:ffff,JP
@@ -8533,8 +8680,8 @@
2404:f801:29::,2404:f801:2f:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:30::,2404:f801:30::,AU
2404:f801:30::1,2404:f801:8027:ffff:ffff:ffff:ffff:ffff,SG
-2404:f801:8028::,2404:f801:8028:7fff:ffff:ffff:ffff:ffff,IN
-2404:f801:8028:8000::,2404:f801:802f:ffff:ffff:ffff:ffff:ffff,SG
+2404:f801:8028::,2404:f801:8028:ffff:ffff:ffff:ffff:ffff,IN
+2404:f801:8029::,2404:f801:802f:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:8030::,2404:f801:8030:7fff:ffff:ffff:ffff:ffff,AU
2404:f801:8030:8000::,2404:f801:8057:ffff:ffff:ffff:ffff:ffff,SG
2404:f801:8058::,2404:f801:8058:ffff:ffff:ffff:ffff:ffff,IN
@@ -8900,64 +9047,128 @@
2405:a000::,2405:a000:ffff:ffff:ffff:ffff:ffff:ffff,TH
2405:a080::,2405:a080:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:a100::,2405:a100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:a180::,2405:a180:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:a200::,2405:a200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2405:a280::,2405:a280:ffff:ffff:ffff:ffff:ffff:ffff,SG
2405:a300::,2405:a300:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:a380::,2405:a380:ffff:ffff:ffff:ffff:ffff:ffff,MM
2405:a400::,2405:a400:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2405:a480::,2405:a480:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:a500::,2405:a500:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:a580::,2405:a580:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:a680::,2405:a680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:a700::,2405:a700:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:a780::,2405:a780:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2405:a880::,2405:a880:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:a900::,2405:a900:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:a980::,2405:a980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:aa00::,2405:aa00:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2405:aa80::,2405:aa80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:ab00::,2405:ab00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:ab80::,2405:ab80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2405:ac00::,2405:ac00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2405:ac80::,2405:ac80:ffff:ffff:ffff:ffff:ffff:ffff,BD
2405:ad00::,2405:ad00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:ad80::,2405:ad80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2405:ae00::,2405:ae00:ffff:ffff:ffff:ffff:ffff:ffff,MN
+2405:ae80::,2405:ae80:ffff:ffff:ffff:ffff:ffff:ffff,US
2405:af00::,2405:af00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:af80::,2405:af80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:b000::,2405:b000:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:b080::,2405:b080:ffff:ffff:ffff:ffff:ffff:ffff,BS
2405:b100::,2405:b100:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:b180::,2405:b180:ffff:ffff:ffff:ffff:ffff:ffff,US
2405:b200::,2405:b200:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2405:b280::,2405:b280:ffff:ffff:ffff:ffff:ffff:ffff,US
2405:b300::,2405:b300:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:b380::,2405:b380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:b400::,2405:b400:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2405:b480::,2405:b480:ffff:ffff:ffff:ffff:ffff:ffff,GB
2405:b500::,2405:b500:ffff:ffff:ffff:ffff:ffff:ffff,US
+2405:b580::,2405:b580:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:b600::,2405:b600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:b680::,2405:b680:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:b780::,2405:b780:ffff:ffff:ffff:ffff:ffff:ffff,BD
2405:b800::,2405:b800:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2405:b880::,2405:b880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:b900::,2405:b900:ffff:ffff:ffff:ffff:ffff:ffff,ID
+2405:b980::,2405:b980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:ba00::,2405:ba00:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:ba80::,2405:ba80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:bb00::,2405:bb00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:bb80::,2405:bb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:bc00::,2405:bc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:bc80::,2405:bc80:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2405:bd00::,2405:bd00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:bd80::,2405:bd80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:be00::,2405:be00:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2405:be80::,2405:be80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:bf00::,2405:bf00:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:bf80::,2405:bf80:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:c000::,2405:c000:ffff:ffff:ffff:ffff:ffff:ffff,KR
+2405:c080::,2405:c080:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:c100::,2405:c100:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2405:c180::,2405:c180:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:c200::,2405:c200:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2405:c280::,2405:c280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c300::,2405:c300:ffff:ffff:ffff:ffff:ffff:ffff,HK
+2405:c380::,2405:c380:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c400::,2405:c400:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:c480::,2405:c480:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c500::,2405:c500:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:c580::,2405:c580:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c600::,2405:c600:ffff:ffff:ffff:ffff:ffff:ffff,TW
+2405:c680::,2405:c680:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c700::,2405:c700:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2405:c780::,2405:c780:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c800::,2405:c800:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:c880::,2405:c880:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:c900::,2405:c900:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:c980::,2405:c980:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:ca00::,2405:ca00:ffff:ffff:ffff:ffff:ffff:ffff,NZ
+2405:ca80::,2405:ca80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:cb00::,2405:cb00:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2405:cb80::,2405:cb80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:cc00::,2405:cc00:ffff:ffff:ffff:ffff:ffff:ffff,PF
+2405:cc80::,2405:cc80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:cd00::,2405:cd00:ffff:ffff:ffff:ffff:ffff:ffff,VN
+2405:cd80::,2405:cd80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:ce00::,2405:ce00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:ce80::,2405:ce80:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:cf00::,2405:cf00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:cf80::,2405:cf80:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:d000::,2405:d000:ffff:ffff:ffff:ffff:ffff:ffff,BT
+2405:d080::,2405:d080:ffff:ffff:ffff:ffff:ffff:ffff,IN
2405:d100::,2405:d100:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:d180::,2405:d180:ffff:ffff:ffff:ffff:ffff:ffff,SG
2405:d200::,2405:d200:ffff:ffff:ffff:ffff:ffff:ffff,JP
+2405:d280::,2405:d280:ffff:ffff:ffff:ffff:ffff:ffff,CN
2405:d300::,2405:d300:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:d380::,2405:d380:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:d400::,2405:d400:ffff:ffff:ffff:ffff:ffff:ffff,PH
+2405:d480::,2405:d480:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:d580::,2405:d580:ffff:ffff:ffff:ffff:ffff:ffff,JP
2405:d600::,2405:d600:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:d680::,2405:d680:ffff:ffff:ffff:ffff:ffff:ffff,MY
2405:d700::,2405:d700:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:d780::,2405:d780:ffff:ffff:ffff:ffff:ffff:ffff,JP
2405:d800::,2405:d800:ffff:ffff:ffff:ffff:ffff:ffff,SG
+2405:d880::,2405:d880:ffff:ffff:ffff:ffff:ffff:ffff,KR
2405:d900::,2405:d900:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:d980::,2405:d980:ffff:ffff:ffff:ffff:ffff:ffff,SG
2405:da00::,2405:da00:ffff:ffff:ffff:ffff:ffff:ffff,KH
+2405:da80::,2405:da80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2405:db00::,2405:db00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:db80::,2405:db80:ffff:ffff:ffff:ffff:ffff:ffff,ID
2405:dc00::,2405:dc00:ffff:ffff:ffff:ffff:ffff:ffff,AU
+2405:de80::,2405:de80:ffff:ffff:ffff:ffff:ffff:ffff,BD
+2405:df80::,2405:df80:ffff:ffff:ffff:ffff:ffff:ffff,PH
2405:e000::,2405:e000:ffff:ffff:ffff:ffff:ffff:ffff,CN
+2405:e080::,2405:e080:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2405:e100::,2405:e100:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:e180::,2405:e180:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:e200::,2405:e200:ffff:ffff:ffff:ffff:ffff:ffff,IN
+2405:e280::,2405:e280:ffff:ffff:ffff:ffff:ffff:ffff,KH
2405:e300::,2405:e300:ffff:ffff:ffff:ffff:ffff:ffff,HK
2405:e400::,2405:e400:ffff:ffff:ffff:ffff:ffff:ffff,AU
2405:e500::,2405:e500:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -9265,7 +9476,6 @@
2407:1d00::,2407:1d00:ffff:ffff:ffff:ffff:ffff:ffff,CN
2407:1e00::,2407:1e00:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:2000::,2407:2000:ffff:ffff:ffff:ffff:ffff:ffff,KR
-2407:2100::,2407:2100:ffff:ffff:ffff:ffff:ffff:ffff,HK
2407:2200::,2407:2200:ffff:ffff:ffff:ffff:ffff:ffff,AU
2407:2400::,2407:2400:ffff:ffff:ffff:ffff:ffff:ffff,NZ
2407:2500::,2407:2500:ffff:ffff:ffff:ffff:ffff:ffff,AU
@@ -9494,15 +9704,13 @@
240f:74:c23a::,240f:74:c23a:7fff:ffff:ffff:ffff:ffff,US
240f:74:c23a:8000::,240f:78:8491:ffff:ffff:ffff:ffff:ffff,JP
240f:78:8492::,240f:78:8492:7fff:ffff:ffff:ffff:ffff,GB
-240f:78:8492:8000::,240f:93:b6d:ffff:ffff:ffff:ffff:ffff,JP
-240f:93:b6e::,240f:93:b6e:7fff:ffff:ffff:ffff:ffff,US
-240f:93:b6e:8000::,240f:ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
+240f:78:8492:8000::,240f:ff:ffff:ffff:ffff:ffff:ffff:ffff,JP
240f:8000::,240f:80ff:ffff:ffff:ffff:ffff:ffff:ffff,CN
2600::,2600:1:c017:7fff:ffff:ffff:ffff:ffff,US
2600:1:c017:8000::,2600:1:c017:ffff:ffff:ffff:ffff:ffff,PR
2600:1:c018::,2600:1:c018:ffff:ffff:ffff:ffff:ffff,US
-2600:1:c019::,2600:1:c019:7fff:ffff:ffff:ffff:ffff,PR
-2600:1:c019:8000::,2600:1:c01c:7fff:ffff:ffff:ffff:ffff,US
+2600:1:c019::,2600:1:c019:ffff:ffff:ffff:ffff:ffff,PR
+2600:1:c01a::,2600:1:c01c:7fff:ffff:ffff:ffff:ffff,US
2600:1:c01c:8000::,2600:1:c01c:ffff:ffff:ffff:ffff:ffff,VI
2600:1:c01d::,2600:1:c01e:ffff:ffff:ffff:ffff:ffff,US
2600:1:c01f::,2600:1:c01f:7fff:ffff:ffff:ffff:ffff,PR
@@ -9581,6 +9789,9 @@
2602:230::,2602:231:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:240::,2602:25f:ffff:ffff:ffff:ffff:ffff:ffff,US
2602:300::,2602:3ff:ffff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff3b::,2602:ff3b:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff3c::,2602:ff3c:fff:ffff:ffff:ffff:ffff:ffff,US
+2602:ff3d::,2602:ff3d:fff:ffff:ffff:ffff:ffff:ffff,CA
2602:ff3e::,2602:ff3e:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff3f::,2602:ff3f:fff:ffff:ffff:ffff:ffff:ffff,US
2602:ff40::,2602:ff40:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -9776,13 +9987,9 @@
2602:ffff::,2602:ffff:fff:ffff:ffff:ffff:ffff:ffff,US
2603::,2603:100f:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1010::,2603:1010::ffff:ffff:ffff:ffff:ffff,AU
-2603:1010:1::,2603:1010:3:ffff:ffff:ffff:ffff:ffff,US
-2603:1010:4::,2603:1010:4:ffff:ffff:ffff:ffff:ffff,AU
-2603:1010:5::,2603:1010:ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1010:1::,2603:1010:ff:ffff:ffff:ffff:ffff:ffff,US
2603:1010:100::,2603:1010:100:ffff:ffff:ffff:ffff:ffff,AU
-2603:1010:101::,2603:1010:200:ffff:ffff:ffff:ffff:ffff,US
-2603:1010:201::,2603:1010:201:ffff:ffff:ffff:ffff:ffff,AU
-2603:1010:202::,2603:1015:ffff:ffff:ffff:ffff:ffff:ffff,US
+2603:1010:101::,2603:1015:ffff:ffff:ffff:ffff:ffff:ffff,US
2603:1016::,2603:1016::ffff:ffff:ffff:ffff:ffff,AU
2603:1016:1::,2603:1016:1f:ffff:ffff:ffff:ffff:ffff,US
2603:1016:20::,2603:1016:2f:ffff:ffff:ffff:ffff:ffff,AU
@@ -9834,11 +10041,7 @@
2603:1026:820::,2603:1026:828:ffff:ffff:ffff:ffff:ffff,GB
2603:1026:829::,2603:1026:fff:ffff:ffff:ffff:ffff:ffff,US
2603:1026:1000::,2603:1026:1000:ffff:ffff:ffff:ffff:ffff,IE
-2603:1026:1001::,2603:1028:ffff:ffff:ffff:ffff:ffff:ffff,US
-2603:1029::,2603:1029::ffff:ffff:ffff:ffff:ffff,DE
-2603:1029:1::,2603:1029:1ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1029:200::,2603:1029:200:ffff:ffff:ffff:ffff:ffff,DE
-2603:1029:201::,2603:1029:2ff:ffff:ffff:ffff:ffff:ffff,US
+2603:1026:1001::,2603:1029:2ff:ffff:ffff:ffff:ffff:ffff,US
2603:1029:300::,2603:1029:300:ffff:ffff:ffff:ffff:ffff,AT
2603:1029:301::,2603:1029:3ff:ffff:ffff:ffff:ffff:ffff,US
2603:1029:400::,2603:1029:404:ffff:ffff:ffff:ffff:ffff,IE
@@ -9902,11 +10105,7 @@
2603:1049:400::,2603:1049:401:ffff:ffff:ffff:ffff:ffff,JP
2603:1049:402::,2603:1049:5ff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:600::,2603:1049:601:ffff:ffff:ffff:ffff:ffff,JP
-2603:1049:602::,2603:1049:7ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1049:800::,2603:1049:802:ffff:ffff:ffff:ffff:ffff,CN
-2603:1049:803::,2603:1049:9ff:ffff:ffff:ffff:ffff:ffff,US
-2603:1049:a00::,2603:1049:a00:ffff:ffff:ffff:ffff:ffff,CN
-2603:1049:a01::,2603:1049:bff:ffff:ffff:ffff:ffff:ffff,US
+2603:1049:602::,2603:1049:bff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:c00::,2603:1049:c00:ffff:ffff:ffff:ffff:ffff,IN
2603:1049:c01::,2603:1049:dff:ffff:ffff:ffff:ffff:ffff,US
2603:1049:e00::,2603:1049:e00:ffff:ffff:ffff:ffff:ffff,IN
@@ -10104,10 +10303,8 @@
2604:5600::,2604:5600:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5680::,2604:5680:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5700::,2604:5700:ffff:ffff:ffff:ffff:ffff:ffff,US
-2604:5780::,2604:5780:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5800::,2604:5800:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5880::,2604:5880:ffff:ffff:ffff:ffff:ffff:ffff,CA
-2604:5980::,2604:5982:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5a80::,2604:5a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5b00::,2604:5b00:ffff:ffff:ffff:ffff:ffff:ffff,US
2604:5b80::,2604:5b80:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -10585,7 +10782,6 @@
2605:4d00::,2605:4d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4d80::,2605:4d80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4e00::,2605:4e00:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:4e80::,2605:4e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:4f00::,2605:4f00:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:4f80::,2605:4f80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5000::,2605:5000:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -10611,7 +10807,6 @@
2605:5a80::,2605:5a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5b00::,2605:5b00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5c00::,2605:5c00:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:5c80::,2605:5c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5d00::,2605:5d00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5d80::,2605:5d80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:5e00::,2605:5e00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -10636,7 +10831,6 @@
2605:6800::,2605:6800:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6880::,2605:6880:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:6900::,2605:6900:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:6980::,2605:6980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6a00::,2605:6a00:ffff:ffff:ffff:ffff:ffff:ffff,CA
2605:6a80::,2605:6a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:6b00::,2605:6b00:ffff:ffff:ffff:ffff:ffff:ffff,CA
@@ -10883,7 +11077,6 @@
2605:e780::,2605:e780:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e880::,2605:e880:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:e900::,2605:e900:ffff:ffff:ffff:ffff:ffff:ffff,US
-2605:e980::,2605:e980:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ea00::,2605:ea00:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:ea80::,2605:ea80:ffff:ffff:ffff:ffff:ffff:ffff,US
2605:eb00::,2605:eb00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -11057,14 +11250,15 @@
2606:2c00::,2606:2c00:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2c80::,2606:2c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2d00::,2606:2d00:fff:ffff:ffff:ffff:ffff:ffff,US
-2606:2d80::,2606:2d80:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:2e00::,2606:2e00:8001:ffff:ffff:ffff:ffff:ffff,US
2606:2e00:8002::,2606:2e00:8002:7fff:ffff:ffff:ffff:ffff,JP
2606:2e00:8002:8000::,2606:2e00:8008:ffff:ffff:ffff:ffff:ffff,US
2606:2e00:8009::,2606:2e00:8009:7fff:ffff:ffff:ffff:ffff,DE
2606:2e00:8009:8000::,2606:2e00:800a:2:ffff:ffff:ffff:ffff,US
2606:2e00:800a:3::,2606:2e00:800a:3:ffff:ffff:ffff:ffff,HK
-2606:2e00:800a:4::,2606:2e00:8014:ffff:ffff:ffff:ffff:ffff,US
+2606:2e00:800a:4::,2606:2e00:8010:ffff:ffff:ffff:ffff:ffff,US
+2606:2e00:8011::,2606:2e00:8011:7fff:ffff:ffff:ffff:ffff,FR
+2606:2e00:8011:8000::,2606:2e00:8014:ffff:ffff:ffff:ffff:ffff,US
2606:2e00:8015::,2606:2e00:8015::ffff:ffff:ffff:ffff,AU
2606:2e00:8015:1::,2606:2e00:8015:ffff:ffff:ffff:ffff:ffff,US
2606:2e00:8016::,2606:2e00:8016::ffff:ffff:ffff:ffff,JP
@@ -11091,7 +11285,6 @@
2606:3600::,2606:3600:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3680::,2606:3680:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3700::,2606:3700:ffff:ffff:ffff:ffff:ffff:ffff,US
-2606:3780::,2606:3780:ffff:ffff:ffff:ffff:ffff:ffff,CA
2606:3800::,2606:3800:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3880::,2606:3880:ffff:ffff:ffff:ffff:ffff:ffff,US
2606:3900::,2606:3900:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -11663,20 +11856,35 @@
2607:5700::,2607:5700:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5780::,2607:5780:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5800::,2607:5800:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5880::,2607:5880:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:5980::,2607:5980:ffff:ffff:ffff:ffff:ffff:ffff,PR
2607:5a00::,2607:5a00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5a80::,2607:5a80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5b00::,2607:5b00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5b80::,2607:5b80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5c00::,2607:5c00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5c80::,2607:5c80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5d00::,2607:5d00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5d80::,2607:5d80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5e00::,2607:5e00:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:5e80::,2607:5e80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:5f00::,2607:5f00:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:5f80::,2607:5f80:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6000::,2607:600f:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6100::,2607:6100:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:6180::,2607:6180:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6200::,2607:6200:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:6280::,2607:6280:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6300::,2607:6300:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:6380::,2607:6380:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6400::,2607:6400:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:6480::,2607:6480:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6500::,2607:6500:ffff:ffff:ffff:ffff:ffff:ffff,CA
+2607:6580::,2607:6580:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6600::,2607:6600:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:6680::,2607:6680:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:6700::,2607:6700:ffff:ffff:ffff:ffff:ffff:ffff,US
+2607:6780::,2607:6780:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:6800::,2607:6800:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6900::,2607:6900:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:6a00::,2607:6a00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -11729,7 +11937,6 @@
2607:9600::,2607:9600:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:9700::,2607:9700:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:9800::,2607:9800:ffff:ffff:ffff:ffff:ffff:ffff,US
-2607:9900::,2607:9900:ffff:ffff:ffff:ffff:ffff:ffff,CA
2607:9a00::,2607:9a00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:9b00::,2607:9b00:ffff:ffff:ffff:ffff:ffff:ffff,US
2607:9c00::,2607:9c00:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -12527,7 +12734,8 @@
2620:0:100c::,2620::100d:ffff:ffff:ffff:ffff:ffff,CA
2620:0:100e::,2620::100f:ffff:ffff:ffff:ffff:ffff,US
2620:0:1010::,2620::1010:7fff:ffff:ffff:ffff:ffff,BR
-2620:0:1010:8000::,2620::1011:7fff:ffff:ffff:ffff:ffff,US
+2620:0:1010:8000::,2620::1010:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1011::,2620::1011:7fff:ffff:ffff:ffff:ffff,AR
2620:0:1011:8000::,2620::1011:ffff:ffff:ffff:ffff:ffff,BR
2620:0:1012::,2620::1017:7fff:ffff:ffff:ffff:ffff,US
2620:0:1017:8000::,2620::1017:ffff:ffff:ffff:ffff:ffff,CO
@@ -12557,7 +12765,8 @@
2620:0:104b:8000::,2620::104b:ffff:ffff:ffff:ffff:ffff,US
2620:0:104c::,2620::104c:7fff:ffff:ffff:ffff:ffff,CH
2620:0:104c:8000::,2620::104f:ffff:ffff:ffff:ffff:ffff,US
-2620:0:1050::,2620::1050:ffff:ffff:ffff:ffff:ffff,GB
+2620:0:1050::,2620::1050:7fff:ffff:ffff:ffff:ffff,GB
+2620:0:1050:8000::,2620::1050:ffff:ffff:ffff:ffff:ffff,US
2620:0:1051::,2620::1051:ffff:ffff:ffff:ffff:ffff,ES
2620:0:1052::,2620::1052:7fff:ffff:ffff:ffff:ffff,IE
2620:0:1052:8000::,2620::1052:ffff:ffff:ffff:ffff:ffff,US
@@ -12566,7 +12775,9 @@
2620:0:1056::,2620::1056:7fff:ffff:ffff:ffff:ffff,FR
2620:0:1056:8000::,2620::1056:ffff:ffff:ffff:ffff:ffff,US
2620:0:1057::,2620::1057:7fff:ffff:ffff:ffff:ffff,DE
-2620:0:1057:8000::,2620::1059:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1057:8000::,2620::1058:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1059::,2620::1059:7fff:ffff:ffff:ffff:ffff,DK
+2620:0:1059:8000::,2620::1059:ffff:ffff:ffff:ffff:ffff,US
2620:0:105a::,2620::105a:ffff:ffff:ffff:ffff:ffff,UG
2620:0:105b::,2620::105e:ffff:ffff:ffff:ffff:ffff,US
2620:0:105f::,2620::105f:ffff:ffff:ffff:ffff:ffff,CH
@@ -12591,9 +12802,7 @@
2620:0:1078::,2620::1078:ff:ffff:ffff:ffff:ffff,GB
2620:0:1078:100::,2620::1078:ffff:ffff:ffff:ffff:ffff,US
2620:0:1079::,2620::1079:7fff:ffff:ffff:ffff:ffff,DK
-2620:0:1079:8000::,2620::1079:ffff:ffff:ffff:ffff:ffff,US
-2620:0:107a::,2620::107a:ffff:ffff:ffff:ffff:ffff,IE
-2620:0:107b::,2620::107b:ffff:ffff:ffff:ffff:ffff,US
+2620:0:1079:8000::,2620::107b:ffff:ffff:ffff:ffff:ffff,US
2620:0:107c::,2620::107c:7fff:ffff:ffff:ffff:ffff,GR
2620:0:107c:8000::,2620::107e:ffff:ffff:ffff:ffff:ffff,US
2620:0:107f::,2620::107f:7fff:ffff:ffff:ffff:ffff,BE
@@ -12663,7 +12872,6 @@
2620:0:2e00::,2620::2e00:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e10::,2620::2e10:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e30::,2620::2e30:ffff:ffff:ffff:ffff:ffff,US
-2620:0:2e40::,2620::2e40:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e50::,2620::2e50:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e60::,2620::2e60:ffff:ffff:ffff:ffff:ffff,US
2620:0:2e70::,2620::2e80:ffff:ffff:ffff:ffff:ffff,US
@@ -12689,7 +12897,9 @@
2620:0:5100::,2620::510f:ffff:ffff:ffff:ffff:ffff,US
2620:0:5200::,2620::5200:ffff:ffff:ffff:ffff:ffff,US
2620:0:5300::,2620::530f:ffff:ffff:ffff:ffff:ffff,US
+2620:0:7f00::,2620::7f00:ffff:ffff:ffff:ffff:ffff,CA
2620:0:aa00::,2620::aa00:ffff:ffff:ffff:ffff:ffff,US
+2620:0:d500::,2620::d500:ffff:ffff:ffff:ffff:ffff,US
2620:1::,2620:1::ffff:ffff:ffff:ffff:ffff,US
2620:1:4000::,2620:1:4000:ffff:ffff:ffff:ffff:ffff,US
2620:1:8000::,2620:1:8000:ffff:ffff:ffff:ffff:ffff,US
@@ -13186,7 +13396,6 @@
2620:7e:90a0::,2620:7e:90a0:ffff:ffff:ffff:ffff:ffff,US
2620:7e:c080::,2620:7e:c080:ffff:ffff:ffff:ffff:ffff,US
2620:7e:f060::,2620:7e:f060:ffff:ffff:ffff:ffff:ffff,CA
-2620:7f:5020::,2620:7f:5020:ffff:ffff:ffff:ffff:ffff,CA
2620:7f:8000::,2620:7f:8000:ffff:ffff:ffff:ffff:ffff,CA
2620:7f:c000::,2620:7f:c000:ffff:ffff:ffff:ffff:ffff,US
2620:80:4000::,2620:80:4000:ffff:ffff:ffff:ffff:ffff,US
@@ -13325,7 +13534,9 @@
2620:a3::,2620:a3::ffff:ffff:ffff:ffff:ffff,US
2620:a3:4000::,2620:a3:400f:ffff:ffff:ffff:ffff:ffff,US
2620:a3:8000::,2620:a3:8000:ffff:ffff:ffff:ffff:ffff,US
+2620:a3:a010::,2620:a3:a010:ffff:ffff:ffff:ffff:ffff,US
2620:a3:c020::,2620:a3:c020:ffff:ffff:ffff:ffff:ffff,US
+2620:a3:e030::,2620:a3:e030:ffff:ffff:ffff:ffff:ffff,US
2620:a4:40::,2620:a4:40:ffff:ffff:ffff:ffff:ffff,US
2620:a4:4060::,2620:a4:4060:ffff:ffff:ffff:ffff:ffff,US
2620:a4:8080::,2620:a4:8080:ffff:ffff:ffff:ffff:ffff,US
@@ -13681,7 +13892,6 @@
2620:fd:4000::,2620:fd:4000:ffff:ffff:ffff:ffff:ffff,US
2620:fd:8000::,2620:fd:8000:ffff:ffff:ffff:ffff:ffff,US
2620:fd:c000::,2620:fd:c000:ffff:ffff:ffff:ffff:ffff,CA
-2620:fe:4080::,2620:fe:4080:ffff:ffff:ffff:ffff:ffff,US
2620:fe:8000::,2620:fe:8000:ffff:ffff:ffff:ffff:ffff,US
2620:fe:c000::,2620:fe:c000:ffff:ffff:ffff:ffff:ffff,US
2620:ff::,2620:ff::ffff:ffff:ffff:ffff:ffff,US
@@ -13851,9 +14061,7 @@
2620:10a:3000::,2620:10a:30ff:ffff:ffff:ffff:ffff:ffff,US
2620:10a:4000::,2620:10a:40ff:ffff:ffff:ffff:ffff:ffff,US
2620:10a:5000::,2620:10a:50ff:ffff:ffff:ffff:ffff:ffff,US
-2620:10a:6000::,2620:10a:6000:3fff:ffff:ffff:ffff:ffff,US
-2620:10a:6000:4000::,2620:10a:6000:5fff:ffff:ffff:ffff:ffff,CA
-2620:10a:6000:6000::,2620:10a:600f:ffff:ffff:ffff:ffff:ffff,US
+2620:10a:6000::,2620:10a:600f:ffff:ffff:ffff:ffff:ffff,US
2620:10a:8000::,2620:10a:80ff:ffff:ffff:ffff:ffff:ffff,CA
2620:10a:9000::,2620:10a:90ff:ffff:ffff:ffff:ffff:ffff,US
2620:10a:a000::,2620:10a:a0ff:ffff:ffff:ffff:ffff:ffff,US
@@ -14198,8 +14406,9 @@
2620:11f:b000::,2620:11f:b00f:ffff:ffff:ffff:ffff:ffff,US
2620:11f:c000::,2620:11f:c0ff:ffff:ffff:ffff:ffff:ffff,US
2620:11f:d000::,2620:11f:d009:ffff:ffff:ffff:ffff:ffff,US
-2620:11f:d00a::,2620:11f:d00a:7fff:ffff:ffff:ffff:ffff,GB
-2620:11f:d00a:8000::,2620:11f:d00f:ffff:ffff:ffff:ffff:ffff,US
+2620:11f:d00a::,2620:11f:d00a:ffff:ffff:ffff:ffff:ffff,GB
+2620:11f:d00c::,2620:11f:d00c:ffff:ffff:ffff:ffff:ffff,GB
+2620:11f:d00d::,2620:11f:d00f:ffff:ffff:ffff:ffff:ffff,US
2620:11f:e000::,2620:11f:e0ff:ffff:ffff:ffff:ffff:ffff,US
2620:11f:f000::,2620:11f:f0ff:ffff:ffff:ffff:ffff:ffff,US
2620:120::,2620:120:ff:ffff:ffff:ffff:ffff:ffff,US
@@ -14327,6 +14536,12 @@
2620:127:a000::,2620:127:a0ff:ffff:ffff:ffff:ffff:ffff,US
2620:127:b000::,2620:127:b00f:ffff:ffff:ffff:ffff:ffff,US
2620:127:c000::,2620:127:c0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:127:d000::,2620:127:d0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:127:e000::,2620:127:e0ff:ffff:ffff:ffff:ffff:ffff,US
+2620:127:f000::,2620:127:f00f:ffff:ffff:ffff:ffff:ffff,CA
+2620:128::,2620:128:f:ffff:ffff:ffff:ffff:ffff,US
+2620:128:1000::,2620:128:100f:ffff:ffff:ffff:ffff:ffff,US
+2620:128:2000::,2620:128:20ff:ffff:ffff:ffff:ffff:ffff,US
2620:140::,2620:140:3ff:ffff:ffff:ffff:ffff:ffff,US
2620:141::,2620:141:fff:ffff:ffff:ffff:ffff:ffff,US
2620:143::,2620:143:7ff:ffff:ffff:ffff:ffff:ffff,US
@@ -14399,6 +14614,7 @@
2620:1d9::,2620:1d9:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1da::,2620:1da:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1db::,2620:1db:fff:ffff:ffff:ffff:ffff:ffff,US
+2620:1dc::,2620:1dc:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e0::,2620:1e1:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e2::,2620:1e2:fff:ffff:ffff:ffff:ffff:ffff,US
2620:1e3::,2620:1e3:fff:ffff:ffff:ffff:ffff:ffff,US
@@ -14826,6 +15042,7 @@
2801:1d:4000::,2801:1d:4000:ffff:ffff:ffff:ffff:ffff,TT
2801:1d:6000::,2801:1d:6000:ffff:ffff:ffff:ffff:ffff,NI
2801:1d:8000::,2801:1d:8000:ffff:ffff:ffff:ffff:ffff,AR
+2801:1d:9000::,2801:1d:9000:ffff:ffff:ffff:ffff:ffff,CO
2801:1d:a000::,2801:1d:a00f:ffff:ffff:ffff:ffff:ffff,CR
2801:1d:c000::,2801:1d:c000:ffff:ffff:ffff:ffff:ffff,AR
2801:1d:e000::,2801:1d:e000:ffff:ffff:ffff:ffff:ffff,CO
@@ -15143,6 +15360,10 @@
2801:80:1940::,2801:80:1941:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1950::,2801:80:1950:ffff:ffff:ffff:ffff:ffff,BR
2801:80:1960::,2801:80:1960:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1970::,2801:80:1970:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1980::,2801:80:1981:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:1990::,2801:80:1990:ffff:ffff:ffff:ffff:ffff,BR
+2801:80:19a0::,2801:80:19a0:ffff:ffff:ffff:ffff:ffff,BR
2801:82::,2801:82:ffff:ffff:ffff:ffff:ffff:ffff,BR
2801:84::,2801:84:ffff:ffff:ffff:ffff:ffff:ffff,BR
2801:86::,2801:86:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -15178,7 +15399,7 @@
2801:c4::,2801:c4::ffff:ffff:ffff:ffff:ffff,MX
2801:c4:10::,2801:c4:10:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:12::,2801:c4:12:ffff:ffff:ffff:ffff:ffff,MX
-2801:c4:14::,2801:c4:14:ffff:ffff:ffff:ffff:ffff,MX
+2801:c4:14::,2801:c4:15:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:20::,2801:c4:20:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:30::,2801:c4:30:ffff:ffff:ffff:ffff:ffff,MX
2801:c4:40::,2801:c4:40:ffff:ffff:ffff:ffff:ffff,MX
@@ -15223,6 +15444,7 @@
2801:1e8::,2801:1e8:ff:ffff:ffff:ffff:ffff:ffff,AR
2801:1f0::,2801:1f0:ffff:ffff:ffff:ffff:ffff:ffff,AR
2802::,2802:3:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2802:8000::,2802:80ff:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803::,2803::ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:80::,2803:80::ffff:ffff:ffff:ffff,BR
2803:80:0:1::,2803:80:fff:ffff:ffff:ffff:ffff:ffff,CL
@@ -15248,6 +15470,7 @@
2803:640::,2803:640:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:680::,2803:680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:700::,2803:700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:740::,2803:740:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:780::,2803:780:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:800::,2803:800:ffff:ffff:ffff:ffff:ffff:ffff,NI
2803:840::,2803:840:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15346,6 +15569,7 @@
2803:2640::,2803:2640:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:2680::,2803:2680:ffff:ffff:ffff:ffff:ffff:ffff,UY
2803:2700::,2803:2700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:2740::,2803:2740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2780::,2803:2780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:2800::,2803:2800:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:2840::,2803:2840:ffff:ffff:ffff:ffff:ffff:ffff,BZ
@@ -15402,6 +15626,7 @@
2803:3a40::,2803:3a40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3a80::,2803:3a80:ffff:ffff:ffff:ffff:ffff:ffff,HN
2803:3b00::,2803:3b00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:3b40::,2803:3b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:3b80::,2803:3b80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:3c00::,2803:3c00:ffff:ffff:ffff:ffff:ffff:ffff,EC
2803:3c40::,2803:3c40:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -15436,6 +15661,7 @@
2803:4640::,2803:4640:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:4680::,2803:4680:ffff:ffff:ffff:ffff:ffff:ffff,TT
2803:4700::,2803:4700:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:4740::,2803:4740:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:4780::,2803:4780:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:4800::,2803:4800:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:4840::,2803:4840:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15491,6 +15717,7 @@
2803:5a40::,2803:5a40:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:5a80::,2803:5a80:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:5b00::,2803:5b00:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:5b40::,2803:5b40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5b80::,2803:5b80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:5c00::,2803:5c00:ffff:ffff:ffff:ffff:ffff:ffff,BO
2803:5c40::,2803:5c40:ffff:ffff:ffff:ffff:ffff:ffff,CR
@@ -15524,6 +15751,7 @@
2803:6640::,2803:6640:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:6680::,2803:6680:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:6700::,2803:6700:ffff:ffff:ffff:ffff:ffff:ffff,CO
+2803:6740::,2803:6740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6780::,2803:6780:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:6800::,2803:6800:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:6840::,2803:6840:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15581,6 +15809,7 @@
2803:7a40::,2803:7a40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:7a80::,2803:7a80:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:7b00::,2803:7b00:ffff:ffff:ffff:ffff:ffff:ffff,CL
+2803:7b40::,2803:7b40:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:7b80::,2803:7b80:ffff:ffff:ffff:ffff:ffff:ffff,PE
2803:7c00::,2803:7c00:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:7c40::,2803:7c40:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -15615,6 +15844,7 @@
2803:8640::,2803:8640:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8680::,2803:8680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8700::,2803:8700:ffff:ffff:ffff:ffff:ffff:ffff,CR
+2803:8740::,2803:8740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:8780::,2803:8780:ffff:ffff:ffff:ffff:ffff:ffff,BZ
2803:8800::,2803:8800:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:8840::,2803:8840:ffff:ffff:ffff:ffff:ffff:ffff,SV
@@ -15705,6 +15935,7 @@
2803:a640::,2803:a640:ffff:ffff:ffff:ffff:ffff:ffff,DO
2803:a680::,2803:a680:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a700::,2803:a700:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:a740::,2803:a740:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:a780::,2803:a780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:a800::,2803:a800:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:a840::,2803:a840:ffff:ffff:ffff:ffff:ffff:ffff,VE
@@ -15760,6 +15991,7 @@
2803:ba40::,2803:ba40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:ba80::,2803:ba80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bb00::,2803:bb00:ffff:ffff:ffff:ffff:ffff:ffff,AR
+2803:bb40::,2803:bb40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bb80::,2803:bb80:ffff:ffff:ffff:ffff:ffff:ffff,VE
2803:bc00::,2803:bc00:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:bc40::,2803:bc40:ffff:ffff:ffff:ffff:ffff:ffff,CO
@@ -15794,6 +16026,7 @@
2803:c640::,2803:c640:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c680::,2803:c680:ffff:ffff:ffff:ffff:ffff:ffff,HT
2803:c700::,2803:c700:ffff:ffff:ffff:ffff:ffff:ffff,GF
+2803:c740::,2803:c740:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c780::,2803:c780:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:c800::,2803:c800:ffff:ffff:ffff:ffff:ffff:ffff,GT
2803:c840::,2803:c840:ffff:ffff:ffff:ffff:ffff:ffff,GT
@@ -15852,6 +16085,7 @@
2803:da40::,2803:da40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:da80::,2803:da80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:db00::,2803:db00:ffff:ffff:ffff:ffff:ffff:ffff,HN
+2803:db40::,2803:db40:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:db80::,2803:db80:ffff:ffff:ffff:ffff:ffff:ffff,CL
2803:dc00::,2803:dc00:ffff:ffff:ffff:ffff:ffff:ffff,CO
2803:dc40::,2803:dc40:ffff:ffff:ffff:ffff:ffff:ffff,CL
@@ -15941,6 +16175,7 @@
2803:fa40::,2803:fa40:ffff:ffff:ffff:ffff:ffff:ffff,SV
2803:fa80::,2803:fa80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fb00::,2803:fb00:ffff:ffff:ffff:ffff:ffff:ffff,PA
+2803:fb40::,2803:fb40:ffff:ffff:ffff:ffff:ffff:ffff,CR
2803:fb80::,2803:fb80:ffff:ffff:ffff:ffff:ffff:ffff,AR
2803:fc00::,2803:fc00:ffff:ffff:ffff:ffff:ffff:ffff,PY
2803:fc40::,2803:fc40:ffff:ffff:ffff:ffff:ffff:ffff,AR
@@ -16023,7 +16258,6 @@
2804:120::,2804:120:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:124::,2804:124:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:128::,2804:128:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:12c::,2804:12c:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:130::,2804:130:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:134::,2804:134:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:138::,2804:138:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -16913,7 +17147,6 @@
2804:fcc::,2804:fcc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:fd0::,2804:fd0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:fd4::,2804:fd4:ffff:ffff:ffff:ffff:ffff:ffff,BR
-2804:fd8::,2804:fd8:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:fdc::,2804:fdc:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:fe0::,2804:fe0:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:fe4::,2804:fe4:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -17899,6 +18132,9 @@
2804:1f20::,2804:1f20:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f22::,2804:1f22:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:1f24::,2804:1f24:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f26::,2804:1f26:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f28::,2804:1f28:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:1f2a::,2804:1f2a:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2000::,2804:2000:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2004::,2804:2004:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:2008::,2804:2008:ffff:ffff:ffff:ffff:ffff:ffff,BR
@@ -19015,6 +19251,60 @@
2804:3174::,2804:3174:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:3178::,2804:3178:ffff:ffff:ffff:ffff:ffff:ffff,BR
2804:317c::,2804:317c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3180::,2804:3180:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3184::,2804:3184:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3188::,2804:3188:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:318c::,2804:318c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3190::,2804:3190:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3194::,2804:3194:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3198::,2804:3198:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:319c::,2804:319c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31a0::,2804:31a0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31a4::,2804:31a4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31a8::,2804:31a8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31ac::,2804:31ac:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31b0::,2804:31b0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31b4::,2804:31b4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31b8::,2804:31b8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31bc::,2804:31bc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31c0::,2804:31c0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31c4::,2804:31c4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31c8::,2804:31c8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31cc::,2804:31cc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31d0::,2804:31d0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31d4::,2804:31d4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31d8::,2804:31d8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31dc::,2804:31dc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31e0::,2804:31e0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31e4::,2804:31e4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31e8::,2804:31e8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31ec::,2804:31ec:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31f0::,2804:31f0:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31f4::,2804:31f4:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31f8::,2804:31f8:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:31fc::,2804:31fc:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3200::,2804:3200:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3204::,2804:3204:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3208::,2804:3208:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:320c::,2804:320c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3210::,2804:3210:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3214::,2804:3214:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3218::,2804:3218:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:321c::,2804:321c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3220::,2804:3220:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3224::,2804:3224:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3228::,2804:3228:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:322c::,2804:322c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3230::,2804:3230:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3234::,2804:3234:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3238::,2804:3238:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:323c::,2804:323c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3240::,2804:3240:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3244::,2804:3244:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3248::,2804:3248:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:324c::,2804:324c:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3250::,2804:3250:ffff:ffff:ffff:ffff:ffff:ffff,BR
+2804:3254::,2804:3254:ffff:ffff:ffff:ffff:ffff:ffff,BR
2806::,2806:f:ffff:ffff:ffff:ffff:ffff:ffff,MX
2806:200::,2806:216::ffff:ffff:ffff:ffff:ffff,MX
2806:217::,2806:220:ffff:ffff:ffff:ffff:ffff:ffff,MX
@@ -19067,7 +19357,9 @@
2a00:ca8::,2a00:ca8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:cb0::,2a00:cb0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cb8::,2a00:cb8:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a00:cc0::,2a00:cc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:cc0::,2a00:cc0:fffd:ffff:ffff:ffff:ffff:ffff,DE
+2a00:cc0:fffe::,2a00:cc0:fffe:7fff:ffff:ffff:ffff:ffff,NL
+2a00:cc0:fffe:8000::,2a00:cc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cc8::,2a00:cc8:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a00:cd0::,2a00:cd0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:cd8::,2a00:cd8:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -19274,7 +19566,9 @@
2a00:1340::,2a00:1340:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1348::,2a00:1348:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:1350::,2a00:1350:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:1358::,2a00:135b:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a00:1358::,2a00:1358:e1b8:ffff:ffff:ffff:ffff:ffff,GR
+2a00:1358:e1b9::,2a00:1358:e1b9:7fff:ffff:ffff:ffff:ffff,CY
+2a00:1358:e1b9:8000::,2a00:135b:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a00:1360::,2a00:1360:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:1368::,2a00:1368:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a00:1370::,2a00:1370:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -19834,7 +20128,6 @@
2a00:5400::,2a00:5400:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a00:5420::,2a00:5420:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:5440::,2a00:5440:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a00:5460::,2a00:5460:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a00:5480::,2a00:5487:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:54a0::,2a00:54a0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a00:54c0::,2a00:54c0:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -19994,7 +20287,7 @@
2a00:6780::,2a00:6780:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:67a0::,2a00:67a7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:67c0::,2a00:67c0:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a00:67e0::,2a00:67e0:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:67e0::,2a00:67e7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:6800::,2a00:6800:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a00:6820::,2a00:6820:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a00:6840::,2a00:6840:ffff:ffff:ffff:ffff:ffff:ffff,SI
@@ -20149,8 +20442,8 @@
2a00:79e0:7::,2a00:79e0:a:7fff:ffff:ffff:ffff:ffff,CH
2a00:79e0:a:8000::,2a00:79e0:a:ffff:ffff:ffff:ffff:ffff,GB
2a00:79e0:b::,2a00:79e0:b:ffff:ffff:ffff:ffff:ffff,IT
-2a00:79e0:c::,2a00:79e0:c:ffff:ffff:ffff:ffff:ffff,GB
-2a00:79e0:d::,2a00:79e0:13:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:c::,2a00:79e0:d:ffff:ffff:ffff:ffff:ffff,GB
+2a00:79e0:e::,2a00:79e0:13:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:14::,2a00:79e0:14:ffff:ffff:ffff:ffff:ffff,ZA
2a00:79e0:15::,2a00:79e0:15:ffff:ffff:ffff:ffff:ffff,DE
2a00:79e0:16::,2a00:79e0:19:ffff:ffff:ffff:ffff:ffff,CH
@@ -20163,7 +20456,9 @@
2a00:79e0:23::,2a00:79e0:23:ffff:ffff:ffff:ffff:ffff,GB
2a00:79e0:24::,2a00:79e0:26:ffff:ffff:ffff:ffff:ffff,CH
2a00:79e0:27::,2a00:79e0:27:ffff:ffff:ffff:ffff:ffff,NL
-2a00:79e0:28::,2a00:79e1:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e0:28::,2a00:79e1:abb:ffff:ffff:ffff:ffff:ffff,CH
+2a00:79e1:abc::,2a00:79e1:abc:ff:ffff:ffff:ffff:ffff,GB
+2a00:79e1:abc:100::,2a00:79e1:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:7a00::,2a00:7a00:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:7a20::,2a00:7a20:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a00:7a40::,2a00:7a40:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -20309,6 +20604,7 @@
2a00:8be0::,2a00:8be7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a00:8c00::,2a00:8c00:ffff:ffff:ffff:ffff:ffff:ffff,LT
2a00:8c20::,2a00:8c20:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a00:8c40::,2a00:8c40:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:8c60::,2a00:8c60:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:8c80::,2a00:8c80:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a00:8ca0::,2a00:8ca0:ffff:ffff:ffff:ffff:ffff:ffff,BA
@@ -20376,7 +20672,6 @@
2a00:9480::,2a00:9480:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a00:94a0::,2a00:94a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:94c0::,2a00:94c0:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a00:94e0::,2a00:94e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:9500::,2a00:9500:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a00:9520::,2a00:9520:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:9540::,2a00:9540:ffff:ffff:ffff:ffff:ffff:ffff,DK
@@ -20659,7 +20954,6 @@
2a00:b780::,2a00:b780:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a00:b7a0::,2a00:b7a0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:b7c0::,2a00:b7c0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a00:b7e0::,2a00:b7e0:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a00:b800::,2a00:b800:ffff:ffff:ffff:ffff:ffff:ffff,SY
2a00:b820::,2a00:b820:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a00:b840::,2a00:b840:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -20939,7 +21233,6 @@
2a00:d9e0::,2a00:d9e0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a00:da00::,2a00:da00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:da20::,2a00:da20:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a00:da40::,2a00:da40:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a00:da60::,2a00:da60:ffff:ffff:ffff:ffff:ffff:ffff,LI
2a00:da80::,2a00:da80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:daa0::,2a00:daa0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -21120,7 +21413,7 @@
2a00:f0e0::,2a00:f0e0:ffff:ffff:ffff:ffff:ffff:ffff,QA
2a00:f100::,2a00:f100:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:f120::,2a00:f120:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a00:f140::,2a00:f140:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a00:f140::,2a00:f147:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:f160::,2a00:f160:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:f180::,2a00:f180:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a00:f1a0::,2a00:f1a0:ffff:ffff:ffff:ffff:ffff:ffff,BE
@@ -21207,7 +21500,6 @@
2a00:fc00::,2a00:fc00:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:fc20::,2a00:fc20:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a00:fc40::,2a00:fc40:ffff:ffff:ffff:ffff:ffff:ffff,BG
-2a00:fc60::,2a00:fc60:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a00:fc80::,2a00:fc80:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a00:fca0::,2a00:fca0:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a00:fcc0::,2a00:fcc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -21412,6 +21704,7 @@
2a01:2d0::,2a01:2d0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:2d8::,2a01:2df:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:2e0::,2a01:2ef:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a01:300:1::,2a01:300:1:7fff:ffff:ffff:ffff:ffff,FR
2a01:308::,2a01:308:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:310::,2a01:310:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:320::,2a01:327:ffff:ffff:ffff:ffff:ffff:ffff,MD
@@ -21792,7 +22085,6 @@
2a01:5980::,2a01:5980:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:59a0::,2a01:59a7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a01:59c0::,2a01:59c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:59e0::,2a01:59e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:5a00::,2a01:5a00:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a01:5a20::,2a01:5a20:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:5a40::,2a01:5a40:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -21948,10 +22240,10 @@
2a01:6c60:2000::,2a01:6c60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:6c80::,2a01:6c80:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a01:6ca0::,2a01:6ca0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:6cc0::,2a01:6cc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:6ce0::,2a01:6ce0:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a01:6d00::,2a01:6d00:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a01:6d20::,2a01:6d20:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a01:6d40::,2a01:6d40:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a01:6d60::,2a01:6d67:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:6d80::,2a01:6d80:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a01:6da0::,2a01:6da0:ffff:ffff:ffff:ffff:ffff:ffff,EE
@@ -22151,7 +22443,13 @@
2a01:85e0::,2a01:85e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:8600::,2a01:8600:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:8620::,2a01:8620:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a01:8640::,2a01:8640:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a01:8640::,2a01:8640::ffff:ffff:ffff:ffff:ffff,NL
+2a01:8640:1::,2a01:8640:1:ffff:ffff:ffff:ffff:ffff,GB
+2a01:8640:2::,2a01:8640:2:ffff:ffff:ffff:ffff:ffff,NL
+2a01:8640:3::,2a01:8640:3:ffff:ffff:ffff:ffff:ffff,CA
+2a01:8640:4::,2a01:8640:5:ffff:ffff:ffff:ffff:ffff,US
+2a01:8640:6::,2a01:8640:6:ffff:ffff:ffff:ffff:ffff,SE
+2a01:8640:7::,2a01:8640:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:8660::,2a01:8660:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:8680::,2a01:8680:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a01:86a0::,2a01:86a0:ffff:ffff:ffff:ffff:ffff:ffff,BE
@@ -22194,8 +22492,7 @@
2a01:8b60::,2a01:8b60:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a01:8b80::,2a01:8b80:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:8ba0::,2a01:8ba7:ffff:ffff:ffff:ffff:ffff:ffff,PL
-2a01:8bc0::,2a01:8bc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a01:8be0::,2a01:8be0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a01:8be0::,2a01:8be7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:8c00::,2a01:8c00:feff:ffff:ffff:ffff:ffff:ffff,CZ
2a01:8c00:ff00::,2a01:8c00:ff00:7fff:ffff:ffff:ffff:ffff,SK
2a01:8c00:ff00:8000::,2a01:8c00:ff00:82b0:ffff:ffff:ffff:ffff,CZ
@@ -22427,7 +22724,7 @@
2a01:a8a0::,2a01:a8a0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:a8c0::,2a01:a8c0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a01:a8e0::,2a01:a8e0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a01:a900::,2a01:a900:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a01:a900:3::,2a01:a900:3:7fff:ffff:ffff:ffff:ffff,RU
2a01:a920::,2a01:a920:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:a940::,2a01:a940:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a01:a960::,2a01:a960:ffff:ffff:ffff:ffff:ffff:ffff,AL
@@ -22442,7 +22739,6 @@
2a01:aa80::,2a01:aa80:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a01:aaa0::,2a01:aaa0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:aac0::,2a01:aac0:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a01:aae0::,2a01:aae0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a01:ab00::,2a01:ab00:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a01:ab20::,2a01:ab20:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:ab40::,2a01:ab40:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -22495,7 +22791,7 @@
2a01:b0e0::,2a01:b0e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a01:b100::,2a01:b100:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a01:b120::,2a01:b120:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a01:b140::,2a01:b140:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a01:b140::,2a01:b147:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:b160::,2a01:b160:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:b180::,2a01:b180:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a01:b1a0::,2a01:b1a0:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -22606,13 +22902,13 @@
2a01:bfa0::,2a01:bfa0:ffff:ffff:ffff:ffff:ffff:ffff,KG
2a01:bfc0::,2a01:bfc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a01:bfe0::,2a01:bfe0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a01:c000::,2a01:cb00:3d:ffff:ffff:ffff:ffff:ffff,FR
-2a01:cb00:3e::,2a01:cb00:3e:7fff:ffff:ffff:ffff:ffff,GB
-2a01:cb00:3e:8000::,2a01:cb00:1b2:ffff:ffff:ffff:ffff:ffff,FR
+2a01:c000::,2a01:cb00:1b2:ffff:ffff:ffff:ffff:ffff,FR
2a01:cb00:1b3::,2a01:cb00:1b3:7fff:ffff:ffff:ffff:ffff,CA
2a01:cb00:1b3:8000::,2a01:cb14:527:ffff:ffff:ffff:ffff:ffff,FR
2a01:cb14:528::,2a01:cb14:528:7fff:ffff:ffff:ffff:ffff,US
-2a01:cb14:528:8000::,2a01:dfff:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a01:cb14:528:8000::,2a01:cb15:1cb:ffff:ffff:ffff:ffff:ffff,FR
+2a01:cb15:1cc::,2a01:cb15:1cc:7fff:ffff:ffff:ffff:ffff,CH
+2a01:cb15:1cc:8000::,2a01:dfff:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02::,2a02::ffff:ffff:ffff:ffff:ffff:ffff,LU
2a02:10::,2a02:17:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:18::,2a02:18:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -22829,10 +23125,7 @@
2a02:6a0::,2a02:6a0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:6a8::,2a02:6a8:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:6b0::,2a02:6b0:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a02:6b8::,2a02:6b8::27ff:ffff:ffff:ffff:ffff,RU
-2a02:6b8:0:2800::,2a02:6b8::2fff:ffff:ffff:ffff:ffff,UA
-2a02:6b8:0:3000::,2a02:6b8::3fff:ffff:ffff:ffff:ffff,BY
-2a02:6b8:0:4000::,2a02:6b8:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a02:6b8::,2a02:6b8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:6c0::,2a02:6c0:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a02:6c8::,2a02:6c8:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:6d0::,2a02:6d0:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -22938,7 +23231,8 @@
2a02:9f8::,2a02:9f8:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:a00::,2a02:a00:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:a08::,2a02:a08:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a02:a10::,2a02:a10:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a02:a10::,2a02:a10::ffff:ffff:ffff:ffff:ffff,US
+2a02:a10:1::,2a02:a10:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:a18::,2a02:a18:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:a20::,2a02:a20:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a02:a28::,2a02:a28:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -22956,7 +23250,7 @@
2a02:a88::,2a02:a88:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a02:a90::,2a02:a90:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:a98::,2a02:a98:ffff:ffff:ffff:ffff:ffff:ffff,UZ
-2a02:aa0::,2a02:aa0:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a02:aa0::,2a02:aa7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a02:aa8::,2a02:aaf:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:ab0::,2a02:ab0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:ab8::,2a02:abf:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -23120,9 +23414,7 @@
2a02:fe8::,2a02:fe9:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:ff0::,2a02:ff0:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a02:1000::,2a02:103f:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:1200::,2a02:1205:c693:ffff:ffff:ffff:ffff:ffff,CH
-2a02:1205:c694::,2a02:1205:c694:7fff:ffff:ffff:ffff:ffff,LI
-2a02:1205:c694:8000::,2a02:1206:45a0:ffff:ffff:ffff:ffff:ffff,CH
+2a02:1200::,2a02:1206:45a0:ffff:ffff:ffff:ffff:ffff,CH
2a02:1206:45a1::,2a02:1206:45a1:7fff:ffff:ffff:ffff:ffff,DE
2a02:1206:45a1:8000::,2a02:121f:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:1300::,2a02:1300:ffff:ffff:ffff:ffff:ffff:ffff,IS
@@ -23148,7 +23440,7 @@
2a02:13a0::,2a02:13a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:13a8::,2a02:13a8:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:13b0::,2a02:13b0:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a02:13b8::,2a02:13b8:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a02:13b8::,2a02:13bf:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:13c0::,2a02:13c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a02:13c8::,2a02:13c8:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a02:13d0::,2a02:13d0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -23220,9 +23512,7 @@
2a02:17e8::,2a02:17e8:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a02:17f0::,2a02:17f0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:17f8::,2a02:17f8:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:1800::,2a02:1811:8511:ffff:ffff:ffff:ffff:ffff,BE
-2a02:1811:8512::,2a02:1811:8512:7fff:ffff:ffff:ffff:ffff,NL
-2a02:1811:8512:8000::,2a02:18ff:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:1800::,2a02:18ff:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:2000::,2a02:2000:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a02:2008::,2a02:2008:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:2010::,2a02:2017:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -23675,7 +23965,6 @@
2a02:46a0::,2a02:46a0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:46c0::,2a02:46c0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a02:46e0::,2a02:46e0:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a02:4700::,2a02:4700:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a02:4720::,2a02:4720:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:4740::,2a02:4740:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:4760::,2a02:4760:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -23733,7 +24022,7 @@
2a02:4e60::,2a02:4e60:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a02:4e80::,2a02:4e80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:4ea0::,2a02:4ea0:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a02:4ec0::,2a02:4ec0:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a02:4ec0::,2a02:4ec7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:4ee0::,2a02:4ee0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a02:4f00::,2a02:4f00:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a02:4f20::,2a02:4f20:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -24022,7 +24311,6 @@
2a02:7260::,2a02:7260:ffff:ffff:ffff:ffff:ffff:ffff,IM
2a02:7280::,2a02:7280:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:72a0::,2a02:72a7:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a02:72c0::,2a02:72c0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a02:72e0::,2a02:72e0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:7300::,2a02:7300:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a02:7320::,2a02:7320:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -24147,9 +24435,7 @@
2a02:8434:2544:8000::,2a02:847f:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a02:8800::,2a02:88ff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a02:9000::,2a02:91ff:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a02:a000::,2a02:a03f:224c:7fff:ffff:ffff:ffff:ffff,BE
-2a02:a03f:224c:8000::,2a02:a03f:224c:ffff:ffff:ffff:ffff:ffff,FR
-2a02:a03f:224d::,2a02:a03f:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a02:a000::,2a02:a03f:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a02:a200::,2a02:a21f:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a02:a300::,2a02:a31f:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a02:a400::,2a02:a446:a0fb:ffff:ffff:ffff:ffff:ffff,NL
@@ -24477,6 +24763,7 @@
2a03:2a0::,2a03:2a0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2c0::,2a03:2c0:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a03:2e0::,2a03:2e0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a03:300::,2a03:300:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:320::,2a03:320:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a03:340::,2a03:340:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:360::,2a03:360:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -24573,7 +24860,9 @@
2a03:f00::,2a03:f07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:f40::,2a03:f40:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:f60::,2a03:f60:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a03:f80::,2a03:f80:43:ffff:ffff:ffff:ffff:ffff,AT
+2a03:f80::,2a03:f80:3f:ffff:ffff:ffff:ffff:ffff,AT
+2a03:f80:40::,2a03:f80:40:7fff:ffff:ffff:ffff:ffff,RO
+2a03:f80:40:8000::,2a03:f80:43:ffff:ffff:ffff:ffff:ffff,AT
2a03:f80:44::,2a03:f80:44:ffff:ffff:ffff:ffff:ffff,IM
2a03:f80:45::,2a03:f80:47:ffff:ffff:ffff:ffff:ffff,AT
2a03:f80:48::,2a03:f80:48:7fff:ffff:ffff:ffff:ffff,PL
@@ -24630,7 +24919,6 @@
2a03:14e0::,2a03:14e0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1500::,2a03:1500:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:1520::,2a03:1520:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a03:1540::,2a03:1540:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:1560::,2a03:1560:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:1580::,2a03:1580:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:15a0::,2a03:15a0:ffff:ffff:ffff:ffff:ffff:ffff,HK
@@ -24676,7 +24964,9 @@
2a03:1ac0::,2a03:1ac0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:1ae0::,2a03:1ae0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:1b00::,2a03:1b00:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:1b20::,2a03:1b20:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:1b20::,2a03:1b20:3:7fff:ffff:ffff:ffff:ffff,SE
+2a03:1b20:3:8000::,2a03:1b20:3:ffff:ffff:ffff:ffff:ffff,NL
+2a03:1b20:4::,2a03:1b20:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:1b40::,2a03:1b40:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:1b60::,2a03:1b60:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1b80::,2a03:1b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -24712,13 +25002,11 @@
2a03:1f40::,2a03:1f40:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a03:1f60::,2a03:1f60:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a03:1f80::,2a03:1f80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a03:1fa0::,2a03:1fa0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:1fc0::,2a03:1fc0:ffff:ffff:ffff:ffff:ffff:ffff,US
2a03:1fe0::,2a03:1fe0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:2000::,2a03:2000:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:2020::,2a03:2020:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:2040::,2a03:2047:ffff:ffff:ffff:ffff:ffff:ffff,CH
-2a03:2060::,2a03:2060:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:2080::,2a03:2080:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:20a0::,2a03:20a0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:20e0::,2a03:20e0:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -24733,9 +25021,7 @@
2a03:2200::,2a03:2200:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:2220::,2a03:2220:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:2240::,2a03:2240:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a03:2260::,2a03:2260:2008:ffff:ffff:ffff:ffff:ffff,DE
-2a03:2260:2009::,2a03:2260:2009:7fff:ffff:ffff:ffff:ffff,NL
-2a03:2260:2009:8000::,2a03:2267:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a03:2260::,2a03:2267:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:2280::,2a03:2280:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:22a0::,2a03:22a0:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:22c0::,2a03:22c0:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -24815,7 +25101,6 @@
2a03:2a40::,2a03:2a40:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a03:2a60::,2a03:2a60:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:2a80::,2a03:2a80:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a03:2aa0::,2a03:2aa0:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a03:2ac0::,2a03:2ac0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:2ae0::,2a03:2ae0:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:2b00::,2a03:2b00:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -25116,7 +25401,6 @@
2a03:4d80::,2a03:4d80:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:4da0::,2a03:4da0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:4dc0::,2a03:4dc0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:4de0::,2a03:4de0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:4e00::,2a03:4e00:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:4e20::,2a03:4e20:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:4e40::,2a03:4e40:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -25207,7 +25491,6 @@
2a03:5940::,2a03:5940:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:5960::,2a03:5960:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:5980::,2a03:5980:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a03:59a0::,2a03:59a0:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:59c0::,2a03:59c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:59e0::,2a03:59e0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:5a00::,2a03:5a07:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -25217,6 +25500,7 @@
2a03:5aa0::,2a03:5aa0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:5ac0::,2a03:5ac0:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a03:5ae0::,2a03:5ae0:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a03:5b00::,2a03:5b00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:5b20::,2a03:5b20:ffff:ffff:ffff:ffff:ffff:ffff,RE
2a03:5b40::,2a03:5b40:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:5b60::,2a03:5b60:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -25259,13 +25543,15 @@
2a03:6040::,2a03:6040:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:6060::,2a03:6060:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:6080::,2a03:6087:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a03:60c0::,2a03:60c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a03:60c0::,2a03:60c0::ffff:ffff:ffff:ffff:ffff,US
+2a03:60c0:1::,2a03:60c0:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:60e0::,2a03:60e0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:6100::,2a03:6100:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a03:6120::,2a03:6120:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a03:6140::,2a03:6140:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:6160::,2a03:6160:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a03:6180::,2a03:6180:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a03:61a0::,2a03:61a0:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:61c0::,2a03:61c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:61e0::,2a03:61e0:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a03:6200::,2a03:6200:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -25285,7 +25571,7 @@
2a03:6380::,2a03:6380:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a03:63a0::,2a03:63a7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:63c0::,2a03:63c0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:63e0::,2a03:63e0:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:63e0::,2a03:63e7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:6400::,2a03:6400:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:6420::,2a03:6420:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a03:6440::,2a03:6440:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -25346,7 +25632,6 @@
2a03:6b60::,2a03:6b60:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:6b80::,2a03:6b80:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a03:6ba0::,2a03:6ba0:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a03:6bc0::,2a03:6bc0:ffff:ffff:ffff:ffff:ffff:ffff,RE
2a03:6be0::,2a03:6be0:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a03:6c00::,2a03:6c00:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:6c20::,2a03:6c20:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -25883,9 +26168,13 @@
2a03:af00::,2a03:af00:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:af20::,2a03:af20:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a03:af40::,2a03:af40:ffff:ffff:ffff:ffff:ffff:ffff,MK
+2a03:af60::,2a03:af60:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:af80::,2a03:af80:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a03:afa0::,2a03:afa0:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:afc0::,2a03:afc0:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a03:afe0::,2a03:afe7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a03:b000::,2a03:b000:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a03:b020::,2a03:b027:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:b040::,2a03:b040:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:b080::,2a03:b080:ffff:ffff:ffff:ffff:ffff:ffff,RS
2a03:b0c0::,2a03:b0c0::ffff:ffff:ffff:ffff:ffff,NL
@@ -25930,7 +26219,6 @@
2a03:ba40::,2a03:ba40:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a03:ba80::,2a03:ba80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:bac0::,2a03:bac0:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a03:bb00::,2a03:bb00:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:bb40::,2a03:bb40:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a03:bb80::,2a03:bb80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:bbc0::,2a03:bbc0:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -26129,7 +26417,7 @@
2a03:eb80::,2a03:eb80:ffff:ffff:ffff:ffff:ffff:ffff,IS
2a03:ebc0::,2a03:ebc0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:ec00::,2a03:ec00:ffff:ffff:ffff:ffff:ffff:ffff,LV
-2a03:ec40::,2a03:ec40:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a03:ec40::,2a03:ec47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:ec80::,2a03:ec80:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:ecc0::,2a03:ecc0:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a03:ed00::,2a03:ed00:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -26141,7 +26429,7 @@
2a03:ee80::,2a03:ee80:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a03:eec0::,2a03:eec0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:ef00::,2a03:ef00:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a03:ef40::,2a03:ef40:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a03:ef40::,2a03:ef47:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a03:ef80::,2a03:ef80:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a03:efc0::,2a03:efc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:f000::,2a03:f000:ffff:ffff:ffff:ffff:ffff:ffff,GR
@@ -26157,7 +26445,6 @@
2a03:f280::,2a03:f280:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a03:f2c0::,2a03:f2c0:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a03:f300::,2a03:f300:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a03:f340::,2a03:f340:ffff:ffff:ffff:ffff:ffff:ffff,AL
2a03:f380::,2a03:f380:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a03:f3c0::,2a03:f3c0:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a03:f400::,2a03:f400:ffff:ffff:ffff:ffff:ffff:ffff,IE
@@ -26264,6 +26551,7 @@
2a04:d40::,2a04:d47:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:d80::,2a04:d87:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:dc0::,2a04:dc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a04:e00::,2a04:e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:e40::,2a04:e47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:e80::,2a04:e87:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:ec0::,2a04:ec7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -26534,7 +26822,6 @@
2a04:4fe0::,2a04:4fe3:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:5000::,2a04:5007:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:5040::,2a04:5047:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:5080::,2a04:5087:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:50c0::,2a04:50c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:5100::,2a04:5107:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:5140::,2a04:5147:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -26564,6 +26851,7 @@
2a04:5740::,2a04:5747:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:5780::,2a04:5787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:57c0::,2a04:57c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a04:5800::,2a04:5807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:5880::,2a04:5887:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:58c0::,2a04:58c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:5900::,2a04:5907:ffff:ffff:ffff:ffff:ffff:ffff,AL
@@ -26633,7 +26921,6 @@
2a04:68c0::,2a04:68c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:6900::,2a04:6907:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:6940::,2a04:6947:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a04:6980::,2a04:6987:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a04:69c0::,2a04:69c7:ffff:ffff:ffff:ffff:ffff:ffff,MK
2a04:6a00::,2a04:6a07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:6a40::,2a04:6a47:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -26710,7 +26997,6 @@
2a04:7b00::,2a04:7b07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:7b40::,2a04:7b47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:7b80::,2a04:7b87:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a04:7bc0::,2a04:7bc7:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:7c00::,2a04:7c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:7c40::,2a04:7c47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:7c80::,2a04:7c87:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -26774,7 +27060,6 @@
2a04:8a80::,2a04:8a87:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a04:8ac0::,2a04:8ac7:ffff:ffff:ffff:ffff:ffff:ffff,BH
2a04:8b00::,2a04:8b07:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a04:8b40::,2a04:8b47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:8b80::,2a04:8b87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:8bc0::,2a04:8bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:8c00::,2a04:8c07:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -26862,7 +27147,10 @@
2a04:a080::,2a04:a087:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:a0c0::,2a04:a0c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:a100::,2a04:a107:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a04:a140::,2a04:a147:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:a140::,2a04:a140:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:a141::,2a04:a141::ffff:ffff:ffff:ffff:ffff,US
+2a04:a141:1::,2a04:a146:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:a147::,2a04:a147:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a04:a180::,2a04:a187:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:a1c0::,2a04:a1c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:a200::,2a04:a207:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -26890,7 +27178,6 @@
2a04:a6c0::,2a04:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:a700::,2a04:a707:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:a740::,2a04:a747:ffff:ffff:ffff:ffff:ffff:ffff,UA
-2a04:a780::,2a04:a787:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:a7c0::,2a04:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,HR
2a04:a800::,2a04:a807:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a04:a840::,2a04:a847:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -26921,6 +27208,7 @@
2a04:b000::,2a04:b007:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:b040::,2a04:b047:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:b080::,2a04:b087:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a04:b0c0::,2a04:b0c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:b100::,2a04:b107:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:b140::,2a04:b147:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:b180::,2a04:b187:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -26948,6 +27236,7 @@
2a04:b700::,2a04:b707:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:b740::,2a04:b747:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:b780::,2a04:b787:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a04:b7c0::,2a04:b7c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:b800::,2a04:b807:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:b840::,2a04:b847:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:b880::,2a04:b887:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -27110,7 +27399,6 @@
2a04:dfc0::,2a04:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a04:e040::,2a04:e047:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a04:e080::,2a04:e087:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a04:e0c0::,2a04:e0c7:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:e100::,2a04:e107:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a04:e140::,2a04:e147:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:e180::,2a04:e187:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -27172,7 +27460,6 @@
2a04:ed00::,2a04:ed07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:ed40::,2a04:ed47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:ed80::,2a04:ed87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a04:edc0::,2a04:edc7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a04:ee00::,2a04:ee07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:ee40::,2a04:ee47:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a04:ee80::,2a04:ee87:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -27224,7 +27511,6 @@
2a04:fa00::,2a04:fa07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a04:fa40::,2a04:fa47:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:fa80::,2a04:fa87:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a04:fac0::,2a04:fac7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a04:fb00::,2a04:fb07:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a04:fb40::,2a04:fb47:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a04:fb80::,2a04:fb87:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -27237,7 +27523,6 @@
2a04:fd40::,2a04:fd47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a04:fd80::,2a04:fd87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:fdc0::,2a04:fdc7:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a04:fe00::,2a04:fe07:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a04:fe40::,2a04:fe47:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a04:fe80::,2a04:fe87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a04:fec0::,2a04:fec0:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -27268,7 +27553,6 @@
2a05:540::,2a05:547:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:580::,2a05:587:ffff:ffff:ffff:ffff:ffff:ffff,AE
2a05:5c0::,2a05:5c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a05:600::,2a05:607:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:640::,2a05:647:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:680::,2a05:687:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:6c0::,2a05:6c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -27327,6 +27611,7 @@
2a05:1380::,2a05:1387:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:13c0::,2a05:13c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:1400::,2a05:1407:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:1440::,2a05:1447:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:1480::,2a05:1487:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:14c0::,2a05:14c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:1500::,2a05:1507:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -27402,7 +27687,6 @@
2a05:2700::,2a05:2707:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:2740::,2a05:2747:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:2780::,2a05:2787:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a05:27c0::,2a05:27c7:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a05:2800::,2a05:2807:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a05:2840::,2a05:2847:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a05:2880::,2a05:2887:ffff:ffff:ffff:ffff:ffff:ffff,BE
@@ -27424,7 +27708,10 @@
2a05:2c40::,2a05:2c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:2c80::,2a05:2c87:ffff:ffff:ffff:ffff:ffff:ffff,LB
2a05:2cc0::,2a05:2cc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a05:2d00::,2a05:2d07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2d00::,2a05:2d00:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:2d01::,2a05:2d01::ffff:ffff:ffff:ffff:ffff,US
+2a05:2d01:1::,2a05:2d06:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a05:2d07::,2a05:2d07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:2d40::,2a05:2d47:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:2d80::,2a05:2d87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a05:2dc0::,2a05:2dc7:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27449,6 +27736,7 @@
2a05:3280::,2a05:3287:ffff:ffff:ffff:ffff:ffff:ffff,SA
2a05:32c0::,2a05:32c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:3300::,2a05:3307:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:3340::,2a05:3347:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:3380::,2a05:3387:ffff:ffff:ffff:ffff:ffff:ffff,YE
2a05:33c0::,2a05:33c7:ffff:ffff:ffff:ffff:ffff:ffff,SI
2a05:3400::,2a05:3407:ffff:ffff:ffff:ffff:ffff:ffff,SE
@@ -27462,6 +27750,7 @@
2a05:3600::,2a05:3607:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:3640::,2a05:3647:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:3680::,2a05:3687:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a05:36c0::,2a05:36c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:3700::,2a05:3707:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:3740::,2a05:3747:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:3780::,2a05:3787:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -27491,6 +27780,7 @@
2a05:3d00::,2a05:3d07:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:3d40::,2a05:3d47:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a05:3d80::,2a05:3d87:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a05:3dc0::,2a05:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:3e00::,2a05:3e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:3e40::,2a05:3e47:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:3e80::,2a05:3e87:ffff:ffff:ffff:ffff:ffff:ffff,RU
@@ -27533,7 +27823,9 @@
2a05:47c0::,2a05:47c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:4800::,2a05:4807:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:4840::,2a05:4847:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a05:4880::,2a05:4887:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a05:4880::,2a05:4880::ffff:ffff:ffff:ffff:ffff,FR
+2a05:4880:1::,2a05:4880:1:7fff:ffff:ffff:ffff:ffff,CH
+2a05:4880:1:8000::,2a05:4887:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:48c0::,2a05:48c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:4900::,2a05:4907:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:4940::,2a05:4947:ffff:ffff:ffff:ffff:ffff:ffff,SI
@@ -27837,6 +28129,7 @@
2a05:9380::,2a05:9387:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:93c0::,2a05:93c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:9400::,2a05:9407:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a05:9440::,2a05:9447:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:9480::,2a05:9487:ffff:ffff:ffff:ffff:ffff:ffff,IQ
2a05:94c0::,2a05:94c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:9500::,2a05:9507:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -27844,7 +28137,6 @@
2a05:9580::,2a05:9587:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a05:95c0::,2a05:95c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:9600::,2a05:9607:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a05:9640::,2a05:9647:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:9680::,2a05:9687:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:96c0::,2a05:96c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:9700::,2a05:9707:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -27860,14 +28152,12 @@
2a05:9980::,2a05:9987:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:99c0::,2a05:99c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:9a00::,2a05:9a07:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a05:9a40::,2a05:9a47:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:9a80::,2a05:9a87:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:9ac0::,2a05:9ac7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a05:9b00::,2a05:9b07:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:9b40::,2a05:9b47:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a05:9b80::,2a05:9b87:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:9bc0::,2a05:9bc7:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a05:9c00::,2a05:9c07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:9c40::,2a05:9c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:9c80::,2a05:9c87:ffff:ffff:ffff:ffff:ffff:ffff,US
2a05:9cc0::,2a05:9cc7:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -27944,7 +28234,6 @@
2a05:aec0::,2a05:aec7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:af00::,2a05:af07:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:af40::,2a05:af47:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a05:af80::,2a05:af87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:afc0::,2a05:afc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:b000::,2a05:b007:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:b040::,2a05:b047:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -27955,9 +28244,12 @@
2a05:b0c6:500::,2a05:b0c6:5ff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b0c6:600::,2a05:b0c6:6ff:ffff:ffff:ffff:ffff:ffff,GB
2a05:b0c6:700::,2a05:b0c6:7ff:ffff:ffff:ffff:ffff:ffff,AT
-2a05:b0c6:800::,2a05:b0c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:b0c6:800::,2a05:b0c6:13ff:ffff:ffff:ffff:ffff:ffff,GB
+2a05:b0c6:1400::,2a05:b0c6:14ff:ffff:ffff:ffff:ffff:ffff,AT
+2a05:b0c6:1500::,2a05:b0c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:b100::,2a05:b107:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:b140::,2a05:b147:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a05:b180::,2a05:b187:ffff:ffff:ffff:ffff:ffff:ffff,GI
2a05:b1c0::,2a05:b1c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a05:b200::,2a05:b207:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:b240::,2a05:b247:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -27967,7 +28259,6 @@
2a05:b340::,2a05:b347:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a05:b380::,2a05:b387:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b3c0::,2a05:b3c7:ffff:ffff:ffff:ffff:ffff:ffff,FR
-2a05:b400::,2a05:b407:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:b440::,2a05:b447:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b480::,2a05:b487:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:b4c0::,2a05:b4c7:ffff:ffff:ffff:ffff:ffff:ffff,IL
@@ -27978,7 +28269,6 @@
2a05:b600::,2a05:b607:ffff:ffff:ffff:ffff:ffff:ffff,SM
2a05:b640::,2a05:b647:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:b680::,2a05:b687:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a05:b6c0::,2a05:b6c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:b700::,2a05:b707:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b740::,2a05:b747:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:b780::,2a05:b787:ffff:ffff:ffff:ffff:ffff:ffff,FR
@@ -27986,6 +28276,7 @@
2a05:b800::,2a05:b807:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a05:b840::,2a05:b847:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b880::,2a05:b887:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a05:b8c0::,2a05:b8c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:b900::,2a05:b907:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:b940::,2a05:b947:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:b980::,2a05:b987:ffff:ffff:ffff:ffff:ffff:ffff,LB
@@ -27999,7 +28290,6 @@
2a05:bb80::,2a05:bb87:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a05:bbc0::,2a05:bbc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:bc00::,2a05:bc07:ffff:ffff:ffff:ffff:ffff:ffff,MT
-2a05:bc40::,2a05:bc47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:bc80::,2a05:bc87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a05:bcc0::,2a05:bcc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:bd00::,2a05:bd07:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28020,9 +28310,7 @@
2a05:c100::,2a05:c107:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:c140::,2a05:c147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:c180::,2a05:c187:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:c1c0::,2a05:c1c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:c200::,2a05:c207:ffff:ffff:ffff:ffff:ffff:ffff,BE
-2a05:c240::,2a05:c247:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:c280::,2a05:c287:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:c2c0::,2a05:c2c7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a05:c300::,2a05:c307:ffff:ffff:ffff:ffff:ffff:ffff,LB
@@ -28043,7 +28331,6 @@
2a05:c6c0::,2a05:c6c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:c700::,2a05:c707:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:c740::,2a05:c747:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a05:c780::,2a05:c787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:c7c0::,2a05:c7c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:c800::,2a05:c807:ffff:ffff:ffff:ffff:ffff:ffff,PT
2a05:c840::,2a05:c847:ffff:ffff:ffff:ffff:ffff:ffff,GR
@@ -28083,6 +28370,7 @@
2a05:d480::,2a05:d487:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:d4c0::,2a05:d4c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:d500::,2a05:d507:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a05:d540::,2a05:d547:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a05:d580::,2a05:d587:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:d5c0::,2a05:d5c7:ffff:ffff:ffff:ffff:ffff:ffff,GE
2a05:d600::,2a05:d607:ffff:ffff:ffff:ffff:ffff:ffff,LB
@@ -28163,7 +28451,6 @@
2a05:e540::,2a05:e547:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:e580::,2a05:e587:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a05:e5c0::,2a05:e5c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
-2a05:e600::,2a05:e607:ffff:ffff:ffff:ffff:ffff:ffff,AZ
2a05:e640::,2a05:e647:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:e680::,2a05:e687:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a05:e6c0::,2a05:e6c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
@@ -28182,7 +28469,6 @@
2a05:ea00::,2a05:ea07:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:ea40::,2a05:ea47:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:ea80::,2a05:ea87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a05:eac0::,2a05:eac7:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:eb00::,2a05:eb01:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a05:eb20::,2a05:eb23:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a05:eb40::,2a05:eb47:ffff:ffff:ffff:ffff:ffff:ffff,NO
@@ -28230,7 +28516,6 @@
2a05:f5c0::,2a05:f5c7:ffff:ffff:ffff:ffff:ffff:ffff,HU
2a05:f600::,2a05:f607:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:f640::,2a05:f647:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a05:f680::,2a05:f687:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a05:f6c0::,2a05:f6c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:f700::,2a05:f707:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a05:f740::,2a05:f747:ffff:ffff:ffff:ffff:ffff:ffff,TR
@@ -28238,7 +28523,6 @@
2a05:f7c0::,2a05:f7c7:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:f800::,2a05:f807:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:f840::,2a05:f847:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a05:f880::,2a05:f887:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:f8c0::,2a05:f8c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a05:f900::,2a05:f907:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a05:f940::,2a05:f947:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28248,6 +28532,7 @@
2a05:fa40::,2a05:fa47:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:fac0::,2a05:fac7:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a05:fb00::,2a05:fb07:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a05:fb40::,2a05:fb47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a05:fb80::,2a05:fb87:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a05:fbc0::,2a05:fbc3:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a05:fbe0::,2a05:fbe3:ffff:ffff:ffff:ffff:ffff:ffff,CZ
@@ -28287,6 +28572,7 @@
2a06:440::,2a06:447:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a06:480::,2a06:487:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:4c0::,2a06:4c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a06:500::,2a06:507:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:540::,2a06:547:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:580::,2a06:587:ffff:ffff:ffff:ffff:ffff:ffff,KZ
2a06:5c0::,2a06:5c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
@@ -28313,9 +28599,9 @@
2a06:b00::,2a06:b07:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:b40::,2a06:b47:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:b80::,2a06:b87:ffff:ffff:ffff:ffff:ffff:ffff,GB
-2a06:bc0::,2a06:bc7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:c00::,2a06:c07:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:c40::,2a06:c47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:c80::,2a06:c87:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:cc0::,2a06:cc7:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a06:d00::,2a06:d07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:d40::,2a06:d47:ffff:ffff:ffff:ffff:ffff:ffff,US
@@ -28336,7 +28622,6 @@
2a06:1080::,2a06:1087:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:10c0::,2a06:10c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:1100::,2a06:1107:ffff:ffff:ffff:ffff:ffff:ffff,IE
-2a06:1140::,2a06:1147:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:1180::,2a06:1187:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:11c0::,2a06:11c0:f:ffff:ffff:ffff:ffff:ffff,GB
2a06:11c0:10::,2a06:11c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
@@ -28354,7 +28639,6 @@
2a06:1400::,2a06:1407:ffff:ffff:ffff:ffff:ffff:ffff,DK
2a06:1440::,2a06:1447:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:1480::,2a06:1487:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a06:14c0::,2a06:14c7:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:1500::,2a06:1507:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:1540::,2a06:1547:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:1580::,2a06:1587:ffff:ffff:ffff:ffff:ffff:ffff,GE
@@ -28407,9 +28691,7 @@
2a06:20c0::,2a06:20c7:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a06:2100::,2a06:2107:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:2140::,2a06:2147:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a06:2180::,2a06:2187:ffff:ffff:ffff:ffff:ffff:ffff,SK
2a06:21c0::,2a06:21c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
-2a06:2200::,2a06:2207:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:2240::,2a06:2247:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:2280::,2a06:2287:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:22c0::,2a06:22c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28488,8 +28770,8 @@
2a06:3500::,2a06:3507:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3540::,2a06:3547:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:3580::,2a06:3587:ffff:ffff:ffff:ffff:ffff:ffff,SE
-2a06:35c0::,2a06:35c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
-2a06:3600::,2a06:3607:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a06:35c0::,2a06:35c7:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a06:3600::,2a06:3607:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:3640::,2a06:3647:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a06:3680::,2a06:3687:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:36c0::,2a06:36c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28501,10 +28783,8 @@
2a06:3840::,2a06:3847:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3880::,2a06:3887:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:38c0::,2a06:38c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
-2a06:3900::,2a06:3907:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:3940::,2a06:3947:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:3980::,2a06:3987:ffff:ffff:ffff:ffff:ffff:ffff,AT
-2a06:39c0::,2a06:39c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:3a00::,2a06:3a07:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a06:3a40::,2a06:3a47:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3a80::,2a06:3a87:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28512,7 +28792,7 @@
2a06:3b00::,2a06:3b07:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:3b40::,2a06:3b47:ffff:ffff:ffff:ffff:ffff:ffff,BE
2a06:3b80::,2a06:3b87:ffff:ffff:ffff:ffff:ffff:ffff,IL
-2a06:3bc0::,2a06:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a06:3bc0::,2a06:3bc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:3c00::,2a06:3c07:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:3c40::,2a06:3c47:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:3c80::,2a06:3c87:ffff:ffff:ffff:ffff:ffff:ffff,CY
@@ -28520,9 +28800,13 @@
2a06:3d00::,2a06:3d07:ffff:ffff:ffff:ffff:ffff:ffff,GR
2a06:3d40::,2a06:3d47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:3d80::,2a06:3d87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:3dc0::,2a06:3dc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:3e00::,2a06:3e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:3e40::,2a06:3e47:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:3e80::,2a06:3e87:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:3e80::,2a06:3e80:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:3e81::,2a06:3e81::ffff:ffff:ffff:ffff:ffff,US
+2a06:3e81:1::,2a06:3e86:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:3e87::,2a06:3e87:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:3ec0::,2a06:3ec7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:3f00::,2a06:3f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:3f40::,2a06:3f47:ffff:ffff:ffff:ffff:ffff:ffff,CH
@@ -28553,14 +28837,11 @@
2a06:4580::,2a06:4587:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:45c0::,2a06:45c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:4600::,2a06:4607:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:4640::,2a06:4647:ffff:ffff:ffff:ffff:ffff:ffff,KW
2a06:4680::,2a06:4687:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:46c0::,2a06:46c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a06:4700::,2a06:4707:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a06:4740::,2a06:4747:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a06:4780::,2a06:4787:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:47c0::,2a06:47c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
-2a06:4800::,2a06:4807:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:4840::,2a06:4847:ffff:ffff:ffff:ffff:ffff:ffff,IE
2a06:4880::,2a06:4887:ffff:ffff:ffff:ffff:ffff:ffff,PL
2a06:48c0::,2a06:48c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
@@ -28576,12 +28857,15 @@
2a06:4b40::,2a06:4b47:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:4b80::,2a06:4b87:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:4bc0::,2a06:4bc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a06:4c00::,2a06:4c00:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a06:4c01::,2a06:4c01::ffff:ffff:ffff:ffff:ffff,US
+2a06:4c01:1::,2a06:4c07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:4c40::,2a06:4c47:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:4c80::,2a06:4c87:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:4cc0::,2a06:4cc7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:4d00::,2a06:4d07:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:4d40::,2a06:4d47:ffff:ffff:ffff:ffff:ffff:ffff,SA
-2a06:4d80::,2a06:4d87:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a06:4d80::,2a06:4d87:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:4dc0::,2a06:4dc7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:4e00::,2a06:4e07:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:4e40::,2a06:4e47:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28722,6 +29006,7 @@
2a06:7000::,2a06:7007:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:7040::,2a06:7047:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:7080::,2a06:7087:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a06:70c0::,2a06:70c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:7100::,2a06:7107:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:7140::,2a06:7147:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:7180::,2a06:7187:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -28794,8 +29079,8 @@
2a06:80c0::,2a06:80c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:8100::,2a06:8107:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a06:8140::,2a06:8147:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:8180::,2a06:8181:fef:ffff:ffff:ffff:ffff:ffff,GB
-2a06:8181:ff0::,2a06:8181:fff:ffff:ffff:ffff:ffff:ffff,AT
+2a06:8180::,2a06:8181:fdf:ffff:ffff:ffff:ffff:ffff,GB
+2a06:8181:fe0::,2a06:8181:fff:ffff:ffff:ffff:ffff:ffff,AT
2a06:8181:1000::,2a06:8181:1fcf:ffff:ffff:ffff:ffff:ffff,GB
2a06:8181:1fd0::,2a06:8181:1fdf:ffff:ffff:ffff:ffff:ffff,AT
2a06:8181:1fe0::,2a06:8184:ffff:ffff:ffff:ffff:ffff:ffff,GB
@@ -28833,7 +29118,6 @@
2a06:8700::,2a06:8707:ffff:ffff:ffff:ffff:ffff:ffff,IR
2a06:8740::,2a06:8747:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:8780::,2a06:8787:ffff:ffff:ffff:ffff:ffff:ffff,DE
-2a06:87c0::,2a06:87c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:8800::,2a06:8807:ffff:ffff:ffff:ffff:ffff:ffff,IL
2a06:8840::,2a06:8847:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:8880::,2a06:8887:ffff:ffff:ffff:ffff:ffff:ffff,AT
@@ -28885,7 +29169,6 @@
2a06:9240::,2a06:9247:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:9280::,2a06:9287:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:92c0::,2a06:92c7:ffff:ffff:ffff:ffff:ffff:ffff,US
-2a06:9300::,2a06:9307:ffff:ffff:ffff:ffff:ffff:ffff,US
2a06:9340::,2a06:9347:ffff:ffff:ffff:ffff:ffff:ffff,FI
2a06:9380::,2a06:9387:ffff:ffff:ffff:ffff:ffff:ffff,DE
2a06:93c0::,2a06:93c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -28969,7 +29252,6 @@
2a06:a6c0::,2a06:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
2a06:a700::,2a06:a707:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a06:a740::,2a06:a747:ffff:ffff:ffff:ffff:ffff:ffff,NO
-2a06:a780::,2a06:a787:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a06:a7c0::,2a06:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:a800::,2a06:a807:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:a840::,2a06:a847:ffff:ffff:ffff:ffff:ffff:ffff,NL
@@ -29140,7 +29422,7 @@
2a06:d180::,2a06:d187:ffff:ffff:ffff:ffff:ffff:ffff,AT
2a06:d1c0::,2a06:d1c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
2a06:d200::,2a06:d207:ffff:ffff:ffff:ffff:ffff:ffff,IR
-2a06:d240::,2a06:d247:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a06:d240::,2a06:d247:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:d280::,2a06:d287:ffff:ffff:ffff:ffff:ffff:ffff,UA
2a06:d2c0::,2a06:d2c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
2a06:d300::,2a06:d307:ffff:ffff:ffff:ffff:ffff:ffff,SY
@@ -29194,7 +29476,7 @@
2a06:df00::,2a06:df07:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a06:df40::,2a06:df47:ffff:ffff:ffff:ffff:ffff:ffff,TR
2a06:df80::,2a06:df87:ffff:ffff:ffff:ffff:ffff:ffff,RO
-2a06:dfc0::,2a06:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a06:dfc0::,2a06:dfc7:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:e000::,2a06:e007:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:e040::,2a06:e047:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:e080::,2a06:e087:ffff:ffff:ffff:ffff:ffff:ffff,IR
@@ -29233,7 +29515,7 @@
2a06:e881:200::,2a06:e881:2ff:ffff:ffff:ffff:ffff:ffff,AT
2a06:e881:300::,2a06:e887:ffff:ffff:ffff:ffff:ffff:ffff,CH
2a06:e8c0::,2a06:e8c7:ffff:ffff:ffff:ffff:ffff:ffff,LV
-2a06:e900::,2a06:e907:ffff:ffff:ffff:ffff:ffff:ffff,HU
+2a06:e900::,2a06:e907:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a06:e940::,2a06:e947:ffff:ffff:ffff:ffff:ffff:ffff,RU
2a06:e980::,2a06:e987:ffff:ffff:ffff:ffff:ffff:ffff,FR
2a06:e9c0::,2a06:e9c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
@@ -29783,7 +30065,7 @@
2a07:7280::,2a07:7287:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:72c0::,2a07:72c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
2a07:7300::,2a07:7307:ffff:ffff:ffff:ffff:ffff:ffff,CZ
-2a07:7340::,2a07:7347:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:7340::,2a07:7347:ffff:ffff:ffff:ffff:ffff:ffff,BG
2a07:7380::,2a07:7387:ffff:ffff:ffff:ffff:ffff:ffff,CZ
2a07:73c0::,2a07:73c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
2a07:7400::,2a07:7407:ffff:ffff:ffff:ffff:ffff:ffff,HR
@@ -29899,6 +30181,119 @@
2a07:8f80::,2a07:8f87:ffff:ffff:ffff:ffff:ffff:ffff,RO
2a07:8fc0::,2a07:8fc7:ffff:ffff:ffff:ffff:ffff:ffff,SE
2a07:9000::,2a07:9007:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a07:9040::,2a07:9047:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:9080::,2a07:9087:ffff:ffff:ffff:ffff:ffff:ffff,MC
+2a07:90c0::,2a07:90c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:9100::,2a07:9107:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:9140::,2a07:9147:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a07:9180::,2a07:9187:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:91c0::,2a07:91c7:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:9200::,2a07:9207:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:9240::,2a07:9247:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:9280::,2a07:9287:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a07:92c0::,2a07:92c7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9300::,2a07:9307:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:9340::,2a07:9347:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a07:9380::,2a07:9387:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:93c0::,2a07:93c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:9400::,2a07:9407:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:9440::,2a07:9447:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:9480::,2a07:9487:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:94c0::,2a07:94c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:9500::,2a07:9507:ffff:ffff:ffff:ffff:ffff:ffff,AZ
+2a07:9540::,2a07:9547:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9580::,2a07:9587:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:95c0::,2a07:95c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:9600::,2a07:9607:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9640::,2a07:9647:ffff:ffff:ffff:ffff:ffff:ffff,TR
+2a07:9680::,2a07:9687:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:96c0::,2a07:96c7:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:9700::,2a07:9707:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9740::,2a07:9747:ffff:ffff:ffff:ffff:ffff:ffff,HR
+2a07:9780::,2a07:9787:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:97c0::,2a07:97c7:ffff:ffff:ffff:ffff:ffff:ffff,BG
+2a07:9800::,2a07:9807:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9840::,2a07:9847:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:9880::,2a07:9887:ffff:ffff:ffff:ffff:ffff:ffff,IE
+2a07:98c0::,2a07:98c7:ffff:ffff:ffff:ffff:ffff:ffff,US
+2a07:9900::,2a07:9907:ffff:ffff:ffff:ffff:ffff:ffff,EE
+2a07:9940::,2a07:9947:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9980::,2a07:9987:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:99c0::,2a07:99c7:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:9a00::,2a07:9a07:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:9a40::,2a07:9a47:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:9a80::,2a07:9a87:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:9ac0::,2a07:9ac7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:9b00::,2a07:9b07:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a07:9b40::,2a07:9b47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9b80::,2a07:9b87:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:9bc0::,2a07:9bc7:ffff:ffff:ffff:ffff:ffff:ffff,AL
+2a07:9c00::,2a07:9c07:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:9c40::,2a07:9c47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9c80::,2a07:9c87:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:9cc0::,2a07:9cc7:ffff:ffff:ffff:ffff:ffff:ffff,FI
+2a07:9d00::,2a07:9d07:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:9d40::,2a07:9d47:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9d80::,2a07:9d87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9dc0::,2a07:9dc7:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:9e00::,2a07:9e07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9e40::,2a07:9e47:ffff:ffff:ffff:ffff:ffff:ffff,SK
+2a07:9e80::,2a07:9e87:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9ec0::,2a07:9ec7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9f00::,2a07:9f07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:9f40::,2a07:9f47:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9f80::,2a07:9f87:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:9fc0::,2a07:9fc7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a000::,2a07:a007:ffff:ffff:ffff:ffff:ffff:ffff,BE
+2a07:a040::,2a07:a047:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:a080::,2a07:a087:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:a0c0::,2a07:a0c7:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:a100::,2a07:a107:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a140::,2a07:a147:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a180::,2a07:a187:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:a1c0::,2a07:a1c7:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a200::,2a07:a207:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:a240::,2a07:a247:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a280::,2a07:a287:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:a2c0::,2a07:a2c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:a300::,2a07:a307:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a340::,2a07:a347:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a380::,2a07:a387:ffff:ffff:ffff:ffff:ffff:ffff,RO
+2a07:a3c0::,2a07:a3c7:ffff:ffff:ffff:ffff:ffff:ffff,CH
+2a07:a400::,2a07:a407:ffff:ffff:ffff:ffff:ffff:ffff,UA
+2a07:a440::,2a07:a447:ffff:ffff:ffff:ffff:ffff:ffff,PL
+2a07:a480::,2a07:a487:ffff:ffff:ffff:ffff:ffff:ffff,NO
+2a07:a4c0::,2a07:a4c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:a500::,2a07:a507:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:a540::,2a07:a547:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a580::,2a07:a587:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:a5c0::,2a07:a5c7:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a600::,2a07:a607:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:a640::,2a07:a647:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a680::,2a07:a687:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:a6c0::,2a07:a6c7:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:a700::,2a07:a707:ffff:ffff:ffff:ffff:ffff:ffff,GR
+2a07:a740::,2a07:a747:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:a780::,2a07:a787:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a07:a7c0::,2a07:a7c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:a800::,2a07:a807:ffff:ffff:ffff:ffff:ffff:ffff,IQ
+2a07:a840::,2a07:a847:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:a880::,2a07:a887:ffff:ffff:ffff:ffff:ffff:ffff,SE
+2a07:a8c0::,2a07:a8c7:ffff:ffff:ffff:ffff:ffff:ffff,ES
+2a07:a900::,2a07:a907:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:a940::,2a07:a947:ffff:ffff:ffff:ffff:ffff:ffff,RU
+2a07:a980::,2a07:a987:ffff:ffff:ffff:ffff:ffff:ffff,AT
+2a07:a9c0::,2a07:a9c7:ffff:ffff:ffff:ffff:ffff:ffff,IT
+2a07:aa00::,2a07:aa07:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:aa40::,2a07:aa47:ffff:ffff:ffff:ffff:ffff:ffff,DK
+2a07:aa80::,2a07:aa87:ffff:ffff:ffff:ffff:ffff:ffff,CZ
+2a07:aac0::,2a07:aac7:ffff:ffff:ffff:ffff:ffff:ffff,GB
+2a07:ab00::,2a07:ab07:ffff:ffff:ffff:ffff:ffff:ffff,NL
+2a07:ab40::,2a07:ab47:ffff:ffff:ffff:ffff:ffff:ffff,LT
+2a07:ab80::,2a07:ab87:ffff:ffff:ffff:ffff:ffff:ffff,IR
+2a07:abc0::,2a07:abc7:ffff:ffff:ffff:ffff:ffff:ffff,FR
+2a07:ac00::,2a07:ac07:ffff:ffff:ffff:ffff:ffff:ffff,DE
+2a08::,2a08:1fff:ffff:ffff:ffff:ffff:ffff:ffff,GB
2c0e::,2c0e:fff:ffff:ffff:ffff:ffff:ffff:ffff,EG
2c0e:2000::,2c0e:2fff:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0e:4000::,2c0e:40ff:ffff:ffff:ffff:ffff:ffff:ffff,ZA
@@ -29910,6 +30305,15 @@
2c0f:f228::,2c0f:f228:ffff:ffff:ffff:ffff:ffff:ffff,TZ
2c0f:f230::,2c0f:f230:ffff:ffff:ffff:ffff:ffff:ffff,CI
2c0f:f238::,2c0f:f238:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f240::,2c0f:f240:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f248::,2c0f:f248:ffff:ffff:ffff:ffff:ffff:ffff,SC
+2c0f:f250::,2c0f:f250:ffff:ffff:ffff:ffff:ffff:ffff,BW
+2c0f:f258::,2c0f:f258:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f260::,2c0f:f260:ffff:ffff:ffff:ffff:ffff:ffff,BJ
+2c0f:f268::,2c0f:f268:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f270::,2c0f:f270:ffff:ffff:ffff:ffff:ffff:ffff,NG
+2c0f:f278::,2c0f:f278:ffff:ffff:ffff:ffff:ffff:ffff,ZA
+2c0f:f280::,2c0f:f280:ffff:ffff:ffff:ffff:ffff:ffff,AO
2c0f:f400::,2c0f:f400:ffff:ffff:ffff:ffff:ffff:ffff,ZA
2c0f:f408::,2c0f:f408:ffff:ffff:ffff:ffff:ffff:ffff,KE
2c0f:f410::,2c0f:f410:ffff:ffff:ffff:ffff:ffff:ffff,NG
diff --git a/src/config/mmdb-convert.py b/src/config/mmdb-convert.py
index cbe9acdc5d..3a454a3fc1 100644
--- a/src/config/mmdb-convert.py
+++ b/src/config/mmdb-convert.py
@@ -20,7 +20,7 @@
When given a simplicity/speed tradeoff, it opts for simplicity.
- You will not understand the code without undestanding the MaxMind-DB
+ You will not understand the code without understanding the MaxMind-DB
file format. It is specified at:
https://github.com/maxmind/MaxMind-DB/blob/master/MaxMind-DB-spec.md.
@@ -257,7 +257,7 @@ IGNORE_LEN_TYPES = set([
TP_ARRAY, # Length is number of members that follow.
TP_PTR, # Length is index to pointed-to data element.
TP_BOOL, # Length is 0 or 1.
- TP_DCACHE, # Length isnumber of members that follow
+ TP_DCACHE, # Length is number of members that follow
])
def parse_data_section(s):
@@ -265,7 +265,7 @@ def parse_data_section(s):
Datum items."""
# Stack of possibly nested containers. We use the 'nChildren' member of
- # the last one to tell how many moreitems nest directly inside.
+ # the last one to tell how many more items nest directly inside.
stack = []
# List of all items, including nested ones.
diff --git a/src/ext/README b/src/ext/README
index dfe620ed16..d7e5439c71 100644
--- a/src/ext/README
+++ b/src/ext/README
@@ -11,13 +11,6 @@ strlcpy.c
for strcat and strcpy. These are nonstandard, and some libc
implementations refuse to add them for religious reasons.
-eventdns.[ch]
-
- A fork of Libevent's DNS implementation, used by Tor when Libevent
- 2.0 or later is not available. Once Libevent 2.0 is required, we
- should throw this away; it has diverged from evdns.[ch], and is
- no longer easily mergeable.
-
ht.h
An implementation of a hash table in the style of Niels Provos's
diff --git a/src/ext/eventdns.c b/src/ext/eventdns.c
deleted file mode 100644
index f5b7723b54..0000000000
--- a/src/ext/eventdns.c
+++ /dev/null
@@ -1,3514 +0,0 @@
-/* READ THIS COMMENT BEFORE HACKING THIS FILE.
- *
- * This eventdns.c copy has diverged a bit from Libevent's version, and it's
- * no longer easy to resynchronize them. Once Tor requires Libevent 2.0, we
- * will just dump this file and use Libevent's evdns code.
- *
- * Therefore, you probably shouldn't make any change here without making it to
- * Libevent as well: it's not good for the implementation to diverge even
- * more. Also, we can't shouldn't wantonly the API here (since Libevent APIs
- * can't change in ways that break user behavior). Also, we shouldn't bother
- * with cosmetic changes: the whole module is slated for demolition, so
- * there's no point dusting the linebreaks or re-painting the parser.
- *
- * (We can't just drop the Libevent 2.0 evdns implementation in here instead,
- * since it depends pretty heavily on parts of Libevent 2.0.)
- */
-
-/* Async DNS Library
- * Adam Langley <agl@imperialviolet.org>
- * Public Domain code
- *
- * This software is Public Domain. To view a copy of the public domain dedication,
- * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to
- * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
- *
- * I ask and expect, but do not require, that all derivative works contain an
- * attribution similar to:
- * Parts developed by Adam Langley <agl@imperialviolet.org>
- *
- * You may wish to replace the word "Parts" with something else depending on
- * the amount of original code.
- *
- * (Derivative works does not include programs which link against, run or include
- * the source verbatim in their source distributions)
- *
- * Version: 0.1b
- */
-
-#include "eventdns_tor.h"
-#include "util.h"
-#include <sys/types.h>
-/* #define NDEBUG */
-
-#ifndef DNS_USE_CPU_CLOCK_FOR_ID
-#ifndef DNS_USE_GETTIMEOFDAY_FOR_ID
-#ifndef DNS_USE_OPENSSL_FOR_ID
-#error Must configure at least one id generation method.
-#error Please see the documentation.
-#endif
-#endif
-#endif
-
-#ifdef DNS_USE_CPU_CLOCK_FOR_ID
-#ifdef DNS_USE_OPENSSL_FOR_ID
-#error Multiple id options selected
-#endif
-#ifdef DNS_USE_GETTIMEOFDAY_FOR_ID
-#error Multiple id options selected
-#endif
-#include <time.h>
-#endif
-
-#ifdef DNS_USE_OPENSSL_FOR_ID
-#ifdef DNS_USE_GETTIMEOFDAY_FOR_ID
-#error Multiple id options selected
-#endif
-#include <openssl/rand.h>
-#endif
-
-#include <string.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <stdlib.h>
-#include <errno.h>
-#include <assert.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-#include <sys/stat.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdarg.h>
-
-#include "eventdns.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#include <winsock2.h>
-#include <iphlpapi.h>
-#else
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#endif
-
-#ifdef HAVE_NETINET_IN6_H
-#include <netinet/in6.h>
-#endif
-
-#ifdef _WIN32
-typedef int socklen_t;
-#endif
-
-#define EVDNS_LOG_DEBUG 0
-#define EVDNS_LOG_WARN 1
-
-#ifndef HOST_NAME_MAX
-#define HOST_NAME_MAX 255
-#endif
-
-#ifndef NDEBUG
-#include <stdio.h>
-#endif
-
-/* for debugging possible memory leaks. */
-#define mm_malloc(x) tor_malloc(x)
-#define mm_realloc(x,y) tor_realloc((x),(y))
-#define mm_free(x) tor_free(x)
-#define mm_strdup(x) tor_strdup(x)
-#define _mm_free(x) tor_free_(x)
-
-#undef MIN
-#define MIN(a,b) ((a)<(b)?(a):(b))
-
-#if 0
-#ifdef __USE_ISOC99B
-/* libevent doesn't work without this */
-typedef uint8_t u_char;
-typedef unsigned int uint;
-#endif
-#endif
-#include <event.h>
-
-#define u64 uint64_t
-#define u32 uint32_t
-#define u16 uint16_t
-#define u8 uint8_t
-
-#define MAX_ADDRS 4 /* maximum number of addresses from a single packet */
-/* which we bother recording */
-
-#define TYPE_A EVDNS_TYPE_A
-#define TYPE_CNAME 5
-#define TYPE_PTR EVDNS_TYPE_PTR
-#define TYPE_AAAA EVDNS_TYPE_AAAA
-
-#define CLASS_INET EVDNS_CLASS_INET
-
-#define CLEAR(x) do { memset((x), 0xF0, sizeof(*(x))); } while(0)
-
-struct evdns_request {
- u8 *request; /* the dns packet data */
- unsigned int request_len;
- int reissue_count;
- int tx_count; /* the number of times that this packet has been sent */
- unsigned int request_type; /* TYPE_PTR or TYPE_A */
- void *user_pointer; /* the pointer given to us for this request */
- evdns_callback_type user_callback;
- struct nameserver *ns; /* the server which we last sent it */
-
- /* elements used by the searching code */
- int search_index;
- struct search_state *search_state;
- char *search_origname; /* needs to be mm_free()ed */
- int search_flags;
-
- /* these objects are kept in a circular list */
- struct evdns_request *next, *prev;
-
- struct event timeout_event;
-
- u16 trans_id; /* the transaction id */
- char request_appended; /* true if the request pointer is data which follows this struct */
- char transmit_me; /* needs to be transmitted */
-};
-
-#ifndef HAVE_STRUCT_IN6_ADDR
-struct in6_addr {
- u8 s6_addr[16];
-};
-#endif
-
-struct reply {
- unsigned int type;
- unsigned int have_answer;
- union {
- struct {
- u32 addrcount;
- u32 addresses[MAX_ADDRS];
- } a;
- struct {
- u32 addrcount;
- struct in6_addr addresses[MAX_ADDRS];
- } aaaa;
- struct {
- char name[HOST_NAME_MAX];
- } ptr;
- } data;
-};
-
-struct nameserver {
- int socket; /* a connected UDP socket */
- struct sockaddr_storage address;
- int failed_times; /* number of times which we have given this server a chance */
- int timedout; /* number of times in a row a request has timed out */
- struct event event;
- /* these objects are kept in a circular list */
- struct nameserver *next, *prev;
- struct event timeout_event; /* used to keep the timeout for */
- /* when we next probe this server. */
- /* Valid if state == 0 */
- char state; /* zero if we think that this server is down */
- char choked; /* true if we have an EAGAIN from this server's socket */
- char write_waiting; /* true if we are waiting for EV_WRITE events */
-};
-
-static struct evdns_request *req_head = NULL, *req_waiting_head = NULL;
-static struct nameserver *server_head = NULL;
-
-/* Represents a local port where we're listening for DNS requests. Right now, */
-/* only UDP is supported. */
-struct evdns_server_port {
- int socket; /* socket we use to read queries and write replies. */
- int refcnt; /* reference count. */
- char choked; /* Are we currently blocked from writing? */
- char closing; /* Are we trying to close this port, pending writes? */
- evdns_request_callback_fn_type user_callback; /* Fn to handle requests */
- void *user_data; /* Opaque pointer passed to user_callback */
- struct event event; /* Read/write event */
- /* circular list of replies that we want to write. */
- struct server_request *pending_replies;
-};
-
-/* Represents part of a reply being built. (That is, a single RR.) */
-struct server_reply_item {
- struct server_reply_item *next; /* next item in sequence. */
- char *name; /* name part of the RR */
- u16 type : 16; /* The RR type */
- u16 class : 16; /* The RR class (usually CLASS_INET) */
- u32 ttl; /* The RR TTL */
- char is_name; /* True iff data is a label */
- u16 datalen; /* Length of data; -1 if data is a label */
- void *data; /* The contents of the RR */
-};
-
-/* Represents a request that we've received as a DNS server, and holds */
-/* the components of the reply as we're constructing it. */
-struct server_request {
- /* Pointers to the next and previous entries on the list of replies */
- /* that we're waiting to write. Only set if we have tried to respond */
- /* and gotten EAGAIN. */
- struct server_request *next_pending;
- struct server_request *prev_pending;
-
- u16 trans_id; /* Transaction id. */
- struct evdns_server_port *port; /* Which port received this request on? */
- struct sockaddr_storage addr; /* Where to send the response */
- socklen_t addrlen; /* length of addr */
-
- int n_answer; /* how many answer RRs have been set? */
- int n_authority; /* how many authority RRs have been set? */
- int n_additional; /* how many additional RRs have been set? */
-
- struct server_reply_item *answer; /* linked list of answer RRs */
- struct server_reply_item *authority; /* linked list of authority RRs */
- struct server_reply_item *additional; /* linked list of additional RRs */
-
- /* Constructed response. Only set once we're ready to send a reply. */
- /* Once this is set, the RR fields are cleared, and no more should be set. */
- char *response;
- size_t response_len;
-
- /* Caller-visible fields: flags, questions. */
- struct evdns_server_request base;
-};
-
-/* helper macro */
-#define OFFSET_OF(st, member) ((off_t) (((char*)&((st*)0)->member)-(char*)0))
-
-/* Given a pointer to an evdns_server_request, get the corresponding */
-/* server_request. */
-#define TO_SERVER_REQUEST(base_ptr) \
- ((struct server_request*) \
- (((char*)(base_ptr) - OFFSET_OF(struct server_request, base))))
-
-/* The number of good nameservers that we have */
-static int global_good_nameservers = 0;
-
-/* inflight requests are contained in the req_head list */
-/* and are actually going out across the network */
-static int global_requests_inflight = 0;
-/* requests which aren't inflight are in the waiting list */
-/* and are counted here */
-static int global_requests_waiting = 0;
-
-static int global_max_requests_inflight = 64;
-
-static struct timeval global_timeout = {5, 0}; /* 5 seconds */
-static int global_max_reissues = 1; /* a reissue occurs when we get some errors from the server */
-static int global_max_retransmits = 3; /* number of times we'll retransmit a request which timed out */
-/* number of timeouts in a row before we consider this server to be down */
-static int global_max_nameserver_timeout = 3;
-
-/* true iff we should use the 0x20 hack. */
-static int global_randomize_case = 1;
-
-/* These are the timeout values for nameservers. If we find a nameserver is down */
-/* we try to probe it at intervals as given below. Values are in seconds. */
-static const struct timeval global_nameserver_timeouts[] = {{10, 0}, {60, 0}, {300, 0}, {900, 0}, {3600, 0}};
-static const int global_nameserver_timeouts_length = (int)(sizeof(global_nameserver_timeouts)/sizeof(struct timeval));
-
-static struct nameserver *nameserver_pick(void);
-static void evdns_request_insert(struct evdns_request *req, struct evdns_request **head);
-static void nameserver_ready_callback(int fd, short events, void *arg);
-static int evdns_transmit(void);
-static int evdns_request_transmit(struct evdns_request *req);
-static void nameserver_send_probe(struct nameserver *const ns);
-static void search_request_finished(struct evdns_request *const);
-static int search_try_next(struct evdns_request *const req);
-static int search_request_new(int type, const char *const name, int flags, evdns_callback_type user_callback, void *user_arg);
-static void evdns_requests_pump_waiting_queue(void);
-static u16 transaction_id_pick(void);
-static struct evdns_request *request_new(int type, const char *name, int flags, evdns_callback_type callback, void *ptr);
-static void request_submit(struct evdns_request *req);
-
-static int server_request_free(struct server_request *req);
-static void server_request_free_answers(struct server_request *req);
-static void server_port_free(struct evdns_server_port *port);
-static void server_port_ready_callback(int fd, short events, void *arg);
-
-static int strtoint(const char *const str);
-
-#ifdef _WIN32
-static int
-last_error(int sock)
-{
- int optval, optvallen=sizeof(optval);
- int err = WSAGetLastError();
- if (err == WSAEWOULDBLOCK && sock >= 0) {
- if (getsockopt(sock, SOL_SOCKET, SO_ERROR, (void*)&optval,
- &optvallen))
- return err;
- if (optval)
- return optval;
- }
- return err;
-
-}
-static int
-error_is_eagain(int err)
-{
- return err == EAGAIN || err == WSAEWOULDBLOCK;
-}
-#define inet_aton(c, addr) tor_inet_aton((c), (addr))
-#define CLOSE_SOCKET(x) closesocket(x)
-#else
-#define last_error(sock) (errno)
-#if EAGAIN != EWOULDBLOCK
-#define error_is_eagain(err) ((err) == EAGAIN || (err) == EWOULDBLOCK)
-#else
-#define error_is_eagain(err) ((err) == EAGAIN)
-#endif
-#define CLOSE_SOCKET(x) close(x)
-#endif
-
-#define ISSPACE(c) TOR_ISSPACE(c)
-#define ISDIGIT(c) TOR_ISDIGIT(c)
-#define ISALPHA(c) TOR_ISALPHA(c)
-#define TOLOWER(c) TOR_TOLOWER(c)
-#define TOUPPER(c) TOR_TOUPPER(c)
-
-#ifndef NDEBUG
-static const char *
-debug_ntoa(u32 address)
-{
- static char buf[32];
- u32 a = ntohl(address);
- tor_snprintf(buf, sizeof(buf), "%d.%d.%d.%d",
- (int)(u8)((a>>24)&0xff),
- (int)(u8)((a>>16)&0xff),
- (int)(u8)((a>>8 )&0xff),
- (int)(u8)((a )&0xff));
- return buf;
-}
-static const char *
-debug_ntop(const struct sockaddr *sa)
-{
- if (sa->sa_family == AF_INET) {
- struct sockaddr_in *sin = (struct sockaddr_in *) sa;
- return debug_ntoa(sin->sin_addr.s_addr);
- }
- if (sa->sa_family == AF_INET6) {
- /* Tor-specific. In libevent, add more check code. */
- static char buf[128];
- struct sockaddr_in6 *sin = (struct sockaddr_in6 *) sa;
- tor_inet_ntop(AF_INET6, &sin->sin6_addr, buf, sizeof(buf));
- return buf;
- }
- return "<unknown>";
-}
-#endif
-
-static evdns_debug_log_fn_type evdns_log_fn = NULL;
-
-void
-evdns_set_log_fn(evdns_debug_log_fn_type fn)
-{
- evdns_log_fn = fn;
-}
-
-#ifdef __GNUC__
-#define EVDNS_LOG_CHECK __attribute__ ((format(printf, 2, 3)))
-#else
-#define EVDNS_LOG_CHECK
-#endif
-
-static void evdns_log(int warn, const char *fmt, ...) EVDNS_LOG_CHECK;
-static void
-evdns_log(int warn, const char *fmt, ...)
-{
- va_list args;
- static char buf[512];
- if (!evdns_log_fn)
- return;
- va_start(args,fmt);
- tor_vsnprintf(buf, sizeof(buf), fmt, args);
- evdns_log_fn(warn, buf);
- va_end(args);
-}
-
-static int
-sockaddr_eq(const struct sockaddr *sa1, const struct sockaddr *sa2,
- int include_port)
-{
- if (sa1->sa_family != sa2->sa_family)
- return 0;
- if (sa1->sa_family == AF_INET) {
- const struct sockaddr_in *sin1, *sin2;
- sin1 = (const struct sockaddr_in *)sa1;
- sin2 = (const struct sockaddr_in *)sa2;
- if (sin1->sin_addr.s_addr != sin2->sin_addr.s_addr)
- return 0;
- else if (include_port && sin1->sin_port != sin2->sin_port)
- return 0;
- else
- return 1;
- }
-#ifdef AF_INET6
- if (sa1->sa_family == AF_INET6) {
- const struct sockaddr_in6 *sin1, *sin2;
- sin1 = (const struct sockaddr_in6 *)sa1;
- sin2 = (const struct sockaddr_in6 *)sa2;
- if (tor_memneq(sin1->sin6_addr.s6_addr, sin2->sin6_addr.s6_addr, 16))
- return 0;
- else if (include_port && sin1->sin6_port != sin2->sin6_port)
- return 0;
- else
- return 1;
- }
-#endif
- return 1;
-}
-
-#define add_timeout_event(s, to) \
- (event_add(&(s)->timeout_event, (to)))
-#define del_timeout_event(s) \
- (event_del(&(s)->timeout_event))
-
-/* This walks the list of inflight requests to find the */
-/* one with a matching transaction id. Returns NULL on */
-/* failure */
-static struct evdns_request *
-request_find_from_trans_id(u16 trans_id) {
- struct evdns_request *req = req_head, *const started_at = req_head;
-
- if (req) {
- do {
- if (req->trans_id == trans_id) return req;
- req = req->next;
- } while (req != started_at);
- }
-
- return NULL;
-}
-
-/* a libevent callback function which is called when a nameserver */
-/* has gone down and we want to test if it has came back to life yet */
-static void
-nameserver_prod_callback(int fd, short events, void *arg) {
- struct nameserver *const ns = (struct nameserver *) arg;
- (void)fd;
- (void)events;
-
- nameserver_send_probe(ns);
-}
-
-/* a libevent callback which is called when a nameserver probe (to see if */
-/* it has come back to life) times out. We increment the count of failed_times */
-/* and wait longer to send the next probe packet. */
-static void
-nameserver_probe_failed(struct nameserver *const ns) {
- const struct timeval * timeout;
- del_timeout_event(ns);
-
- if (ns->state == 1) {
- /* This can happen if the nameserver acts in a way which makes us mark */
- /* it as bad and then starts sending good replies. */
- return;
- }
-
- timeout =
- &global_nameserver_timeouts[MIN(ns->failed_times,
- global_nameserver_timeouts_length - 1)];
- ns->failed_times++;
-
- if (add_timeout_event(ns, (struct timeval *) timeout) < 0) {
- evdns_log(EVDNS_LOG_WARN,
- "Error from libevent when adding timer event for %s",
- debug_ntop((struct sockaddr *)&ns->address));
- /* ???? Do more? */
- }
-}
-
-/* called when a nameserver has been deemed to have failed. For example, too */
-/* many packets have timed out etc */
-static void
-nameserver_failed(struct nameserver *const ns, const char *msg) {
- struct evdns_request *req, *started_at;
- /* if this nameserver has already been marked as failed */
- /* then don't do anything */
- if (!ns->state) return;
-
- evdns_log(EVDNS_LOG_WARN, "Nameserver %s has failed: %s",
- debug_ntop((struct sockaddr *)&ns->address), msg);
- global_good_nameservers--;
- assert(global_good_nameservers >= 0);
- if (global_good_nameservers == 0) {
- evdns_log(EVDNS_LOG_WARN, "All nameservers have failed");
- }
-
- ns->state = 0;
- ns->failed_times = 1;
-
- if (add_timeout_event(ns, (struct timeval *) &global_nameserver_timeouts[0]) < 0) {
- evdns_log(EVDNS_LOG_WARN,
- "Error from libevent when adding timer event for %s",
- debug_ntop((struct sockaddr *)&ns->address));
- /* ???? Do more? */
- }
-
- /* walk the list of inflight requests to see if any can be reassigned to */
- /* a different server. Requests in the waiting queue don't have a */
- /* nameserver assigned yet */
-
- /* if we don't have *any* good nameservers then there's no point */
- /* trying to reassign requests to one */
- if (!global_good_nameservers) return;
-
- req = req_head;
- started_at = req_head;
- if (req) {
- do {
- if (req->tx_count == 0 && req->ns == ns) {
- /* still waiting to go out, can be moved */
- /* to another server */
- req->ns = nameserver_pick();
- }
- req = req->next;
- } while (req != started_at);
- }
-}
-
-static void
-nameserver_up(struct nameserver *const ns) {
- if (ns->state) return;
- evdns_log(EVDNS_LOG_WARN, "Nameserver %s is back up",
- debug_ntop((struct sockaddr *)&ns->address));
- del_timeout_event(ns);
- ns->state = 1;
- ns->failed_times = 0;
- ns->timedout = 0;
- global_good_nameservers++;
-}
-
-static void
-request_trans_id_set(struct evdns_request *const req, const u16 trans_id) {
- req->trans_id = trans_id;
- *((u16 *) req->request) = htons(trans_id);
-}
-
-/* Called to remove a request from a list and dealloc it. */
-/* head is a pointer to the head of the list it should be */
-/* removed from or NULL if the request isn't in a list. */
-static void
-request_finished(struct evdns_request *const req, struct evdns_request **head) {
- if (head) {
- if (req->next == req) {
- /* only item in the list */
- *head = NULL;
- } else {
- req->next->prev = req->prev;
- req->prev->next = req->next;
- if (*head == req) *head = req->next;
- }
- }
-
- evdns_log(EVDNS_LOG_DEBUG, "Removing timeout for request %lx",
- (unsigned long) req);
- del_timeout_event(req);
-
- search_request_finished(req);
- global_requests_inflight--;
-
- if (!req->request_appended) {
- /* need to free the request data on it's own */
- mm_free(req->request);
- } else {
- /* the request data is appended onto the header */
- /* so everything gets mm_free()ed when we: */
- }
-
- CLEAR(req);
- _mm_free(req);
-
- evdns_requests_pump_waiting_queue();
-}
-
-/* This is called when a server returns a funny error code. */
-/* We try the request again with another server. */
-/* */
-/* return: */
-/* 0 ok */
-/* 1 failed/reissue is pointless */
-static int
-request_reissue(struct evdns_request *req) {
- const struct nameserver *const last_ns = req->ns;
- /* the last nameserver should have been marked as failing */
- /* by the caller of this function, therefore pick will try */
- /* not to return it */
- req->ns = nameserver_pick();
- if (req->ns == last_ns) {
- /* ... but pick did return it */
- /* not a lot of point in trying again with the */
- /* same server */
- return 1;
- }
-
- req->reissue_count++;
- req->tx_count = 0;
- req->transmit_me = 1;
-
- return 0;
-}
-
-/* this function looks for space on the inflight queue and promotes */
-/* requests from the waiting queue if it can. */
-static void
-evdns_requests_pump_waiting_queue(void) {
- while (global_requests_inflight < global_max_requests_inflight &&
- global_requests_waiting) {
- struct evdns_request *req;
- /* move a request from the waiting queue to the inflight queue */
- assert(req_waiting_head);
- if (req_waiting_head->next == req_waiting_head) {
- /* only one item in the queue */
- req = req_waiting_head;
- req_waiting_head = NULL;
- } else {
- req = req_waiting_head;
- req->next->prev = req->prev;
- req->prev->next = req->next;
- req_waiting_head = req->next;
- }
-
- global_requests_waiting--;
- global_requests_inflight++;
-
- req->ns = nameserver_pick();
- request_trans_id_set(req, transaction_id_pick());
-
- evdns_request_insert(req, &req_head);
- evdns_request_transmit(req);
- evdns_transmit();
- }
-}
-
-static void
-reply_callback(struct evdns_request *const req, u32 ttl, u32 err, struct reply *reply) {
- switch (req->request_type) {
- case TYPE_A:
- if (reply)
- req->user_callback(DNS_ERR_NONE, DNS_IPv4_A,
- reply->data.a.addrcount, ttl,
- reply->data.a.addresses,
- req->user_pointer);
- else
- req->user_callback(err, 0, 0, 0, NULL, req->user_pointer);
- return;
- case TYPE_PTR:
- if (reply) {
- char *name = reply->data.ptr.name;
- req->user_callback(DNS_ERR_NONE, DNS_PTR, 1, ttl,
- &name, req->user_pointer);
- } else {
- req->user_callback(err, 0, 0, 0, NULL,
- req->user_pointer);
- }
- return;
- case TYPE_AAAA:
- if (reply)
- req->user_callback(DNS_ERR_NONE, DNS_IPv6_AAAA,
- reply->data.aaaa.addrcount, ttl,
- reply->data.aaaa.addresses,
- req->user_pointer);
- else
- req->user_callback(err, 0, 0, 0, NULL, req->user_pointer);
- return;
- }
- assert(0);
-}
-
-/* this processes a parsed reply packet */
-static void
-reply_handle(struct evdns_request *const req, u16 flags, u32 ttl, struct reply *reply) {
- int error;
- static const int error_codes[] = {DNS_ERR_FORMAT, DNS_ERR_SERVERFAILED, DNS_ERR_NOTEXIST, DNS_ERR_NOTIMPL, DNS_ERR_REFUSED};
-
- if (flags & 0x020f || !reply || !reply->have_answer) {
- /* there was an error */
- if (flags & 0x0200) {
- error = DNS_ERR_TRUNCATED;
- } else {
- u16 error_code = (flags & 0x000f) - 1;
- if (error_code > 4) {
- error = DNS_ERR_UNKNOWN;
- } else {
- error = error_codes[error_code];
- }
- }
-
- switch(error) {
- case DNS_ERR_NOTIMPL:
- case DNS_ERR_REFUSED:
- /* we regard these errors as marking a bad nameserver */
- if (req->reissue_count < global_max_reissues) {
- char msg[64];
- tor_snprintf(msg, sizeof(msg), "Bad response %d (%s)",
- error, evdns_err_to_string(error));
- nameserver_failed(req->ns, msg);
- if (!request_reissue(req)) return;
- }
- break;
- case DNS_ERR_SERVERFAILED:
- /* rcode 2 (servfailed) sometimes means "we are broken" and
- * sometimes (with some binds) means "that request was very
- * confusing." Treat this as a timeout, not a failure.
- */
- /*XXXX refactor the parts of */
- evdns_log(EVDNS_LOG_DEBUG, "Got a SERVERFAILED from nameserver %s; "
- "will allow the request to time out.",
- debug_ntop((struct sockaddr *)&req->ns->address));
- break;
- default:
- /* we got a good reply from the nameserver */
- nameserver_up(req->ns);
- }
-
- if (req->search_state && req->request_type != TYPE_PTR) {
- /* if we have a list of domains to search in, try the next one */
- if (!search_try_next(req)) {
- /* a new request was issued so this request is finished and */
- /* the user callback will be made when that request (or a */
- /* child of it) finishes. */
- request_finished(req, &req_head);
- return;
- }
- }
-
- /* all else failed. Pass the failure up */
- reply_callback(req, 0, error, NULL);
- request_finished(req, &req_head);
- } else {
- /* all ok, tell the user */
- reply_callback(req, ttl, 0, reply);
- nameserver_up(req->ns);
- request_finished(req, &req_head);
- }
-}
-
-static inline int
-name_parse(u8 *packet, int length, int *idx, char *name_out, size_t name_out_len) {
- int name_end = -1;
- int j = *idx;
- int ptr_count = 0;
-#define GET32(x) do { if (j + 4 > length) goto err; memcpy(&_t32, packet + j, 4); j += 4; x = ntohl(_t32); } while(0)
-#define GET16(x) do { if (j + 2 > length) goto err; memcpy(&_t, packet + j, 2); j += 2; x = ntohs(_t); } while(0)
-#define GET8(x) do { if (j >= length) goto err; x = packet[j++]; } while(0)
-
- char *cp = name_out;
- const char *const end = name_out + name_out_len;
-
- /* Normally, names are a series of length prefixed strings terminated */
- /* with a length of 0 (the lengths are u8's < 63). */
- /* However, the length can start with a pair of 1 bits and that */
- /* means that the next 14 bits are a pointer within the current */
- /* packet. */
-
- for(;;) {
- u8 label_len;
- if (j >= length) return -1;
- GET8(label_len);
- if (!label_len) break;
- if (label_len & 0xc0) {
- u8 ptr_low;
- GET8(ptr_low);
- if (name_end < 0) name_end = j;
- j = (((int)label_len & 0x3f) << 8) + ptr_low;
- /* Make sure that the target offset is in-bounds. */
- if (j < 0 || j >= length) return -1;
- /* If we've jumped more times than there are characters in the
- * message, we must have a loop. */
- if (++ptr_count > length) return -1;
- continue;
- }
- if (label_len > 63) return -1;
- if (cp != name_out) {
- if (cp >= name_out + name_out_len - 1) return -1;
- *cp++ = '.';
- }
- if (label_len > name_out_len ||
- cp >= name_out + name_out_len - label_len) return -1;
- memcpy(cp, packet + j, label_len);
- cp += label_len;
- j += label_len;
- }
- if (cp >= end) return -1;
- *cp = '\0';
- if (name_end < 0)
- *idx = j;
- else
- *idx = name_end;
- return 0;
- err:
- return -1;
-}
-
-/* parses a raw reply from a nameserver. */
-static int
-reply_parse(u8 *packet, int length) {
- int j = 0; /* index into packet */
- int k;
- u16 _t; /* used by the macros */
- u32 _t32; /* used by the macros */
- char tmp_name[256], cmp_name[256]; /* used by the macros */
-
- u16 trans_id, questions, answers, authority, additional, datalength;
- u16 flags = 0;
- u32 ttl, ttl_r = 0xffffffff;
- struct reply reply;
- struct evdns_request *req = NULL;
- unsigned int i;
- int name_matches = 0;
-
- GET16(trans_id);
- GET16(flags);
- GET16(questions);
- GET16(answers);
- GET16(authority);
- GET16(additional);
- (void) authority; /* suppress "unused variable" warnings. */
- (void) additional; /* suppress "unused variable" warnings. */
-
- req = request_find_from_trans_id(trans_id);
- /* if no request, can't do anything. */
- if (!req) return -1;
-
- memset(&reply, 0, sizeof(reply));
-
- /* If it's not an answer, it doesn't go with any of our requests. */
- if (!(flags & 0x8000)) return -1; /* must be an answer */
- if (flags & 0x020f) {
- /* there was an error */
- goto err;
- }
- /* if (!answers) return; */ /* must have an answer of some form */
-
- /* This macro skips a name in the DNS reply. */
-#define GET_NAME \
- do { tmp_name[0] = '\0'; \
- if (name_parse(packet, length, &j, tmp_name, sizeof(tmp_name))<0)\
- goto err; \
- } while(0)
-#define TEST_NAME \
- do { tmp_name[0] = '\0'; \
- cmp_name[0] = '\0'; \
- k = j; \
- if (name_parse(packet, length, &j, tmp_name, sizeof(tmp_name))<0)\
- goto err; \
- if (name_parse(req->request, req->request_len, &k, cmp_name, sizeof(cmp_name))<0) \
- goto err; \
- if (global_randomize_case) { \
- if (strcmp(tmp_name, cmp_name) == 0) \
- name_matches = 1; /* we ignore mismatching names */ \
- } else { \
- if (strcasecmp(tmp_name, cmp_name) == 0) \
- name_matches = 1; \
- } \
- } while(0)
-
- reply.type = req->request_type;
-
- /* skip over each question in the reply */
- for (i = 0; i < questions; ++i) {
- /* the question looks like
- * <label:name><u16:type><u16:class>
- */
- TEST_NAME;
- j += 4;
- if (j >= length) goto err;
- }
-
- if (!name_matches)
- goto err;
-
- /* now we have the answer section which looks like
- * <label:name><u16:type><u16:class><u32:ttl><u16:len><data...>
- */
-
- for (i = 0; i < answers; ++i) {
- u16 type, class;
-
- GET_NAME;
- GET16(type);
- GET16(class);
- GET32(ttl);
- GET16(datalength);
-
- if (type == TYPE_A && class == CLASS_INET) {
- int addrcount, addrtocopy;
- if (req->request_type != TYPE_A) {
- j += datalength; continue;
- }
- if ((datalength & 3) != 0) /* not an even number of As. */
- goto err;
- addrcount = datalength >> 2;
- addrtocopy = MIN(MAX_ADDRS - reply.data.a.addrcount, (unsigned)addrcount);
-
- ttl_r = MIN(ttl_r, ttl);
- /* we only bother with the first four addresses. */
- if (j + 4*addrtocopy > length) goto err;
- memcpy(&reply.data.a.addresses[reply.data.a.addrcount],
- packet + j, 4*addrtocopy);
- reply.data.a.addrcount += addrtocopy;
- reply.have_answer = 1;
- if (reply.data.a.addrcount == MAX_ADDRS) break;
- j += 4*addrtocopy;
- } else if (type == TYPE_PTR && class == CLASS_INET) {
- if (req->request_type != TYPE_PTR) {
- j += datalength; continue;
- }
- GET_NAME;
- strlcpy(reply.data.ptr.name, tmp_name,
- sizeof(reply.data.ptr.name));
- ttl_r = MIN(ttl_r, ttl);
- reply.have_answer = 1;
- break;
- } else if (type == TYPE_AAAA && class == CLASS_INET) {
- int addrcount, addrtocopy;
- if (req->request_type != TYPE_AAAA) {
- j += datalength; continue;
- }
- if ((datalength & 15) != 0) /* not an even number of AAAAs. */
- goto err;
- addrcount = datalength >> 4; /* each address is 16 bytes long */
- addrtocopy = MIN(MAX_ADDRS - reply.data.aaaa.addrcount, (unsigned)addrcount);
- ttl_r = MIN(ttl_r, ttl);
-
- /* we only bother with the first four addresses. */
- if (j + 16*addrtocopy > length) goto err;
- memcpy(&reply.data.aaaa.addresses[reply.data.aaaa.addrcount],
- packet + j, 16*addrtocopy);
- reply.data.aaaa.addrcount += addrtocopy;
- reply.have_answer = 1;
- if (reply.data.aaaa.addrcount == MAX_ADDRS) break;
- j += 16*addrtocopy;
- } else {
- /* skip over any other type of resource */
- j += datalength;
- }
- }
-
- reply_handle(req, flags, ttl_r, &reply);
- return 0;
- err:
- if (req)
- reply_handle(req, flags, 0, NULL);
- return -1;
-}
-
-/* Parse a raw request (packet,length) sent to a nameserver port (port) from */
-/* a DNS client (addr,addrlen), and if it's well-formed, call the corresponding */
-/* callback. */
-static int
-request_parse(u8 *packet, ssize_t length, struct evdns_server_port *port, struct sockaddr *addr, socklen_t addrlen)
-{
- int j = 0; /* index into packet */
- u16 _t; /* used by the macros */
- char tmp_name[256]; /* used by the macros */
-
- int i;
- u16 trans_id, flags, questions, answers, authority, additional;
- struct server_request *server_req = NULL;
-
- /* Get the header fields */
- GET16(trans_id);
- GET16(flags);
- GET16(questions);
- GET16(answers);
- GET16(authority);
- GET16(additional);
- (void)additional;
- (void)authority;
- (void)answers;
-
- if (flags & 0x8000) return -1; /* Must not be an answer. */
- flags &= 0x0110; /* Only RD and CD get preserved. */
-
- if (length > INT_MAX)
- return -1;
-
- server_req = mm_malloc(sizeof(struct server_request));
- if (server_req == NULL) return -1;
- memset(server_req, 0, sizeof(struct server_request));
-
- server_req->trans_id = trans_id;
- memcpy(&server_req->addr, addr, addrlen);
- server_req->addrlen = addrlen;
-
- server_req->base.flags = flags;
- server_req->base.nquestions = 0;
- server_req->base.questions = mm_malloc(sizeof(struct evdns_server_question *) * questions);
- if (server_req->base.questions == NULL)
- goto err;
-
- for (i = 0; i < questions; ++i) {
- u16 type, class;
- struct evdns_server_question *q;
- size_t namelen;
- if (name_parse(packet, (int)length, &j, tmp_name, sizeof(tmp_name))<0)
- goto err;
- GET16(type);
- GET16(class);
- namelen = strlen(tmp_name);
- q = mm_malloc(sizeof(struct evdns_server_question) + namelen);
- if (!q)
- goto err;
- q->type = type;
- q->dns_question_class = class;
- memcpy(q->name, tmp_name, namelen+1);
- server_req->base.questions[server_req->base.nquestions++] = q;
- }
-
- /* Ignore answers, authority, and additional. */
-
- server_req->port = port;
- port->refcnt++;
-
- /* Only standard queries are supported. */
- if (flags & 0x7800) {
- evdns_server_request_respond(&(server_req->base), DNS_ERR_NOTIMPL);
- return -1;
- }
-
- port->user_callback(&(server_req->base), port->user_data);
-
- return 0;
-err:
- if (server_req) {
- if (server_req->base.questions) {
- for (i = 0; i < server_req->base.nquestions; ++i)
- mm_free(server_req->base.questions[i]);
- mm_free(server_req->base.questions);
- }
- CLEAR(server_req);
- mm_free(server_req);
- }
- return -1;
-
-#undef SKIP_NAME
-#undef GET32
-#undef GET16
-#undef GET8
-}
-
-static uint16_t
-default_transaction_id_fn(void)
-{
- u16 trans_id;
-#ifdef DNS_USE_CPU_CLOCK_FOR_ID
- struct timespec ts;
-#ifdef CLOCK_MONOTONIC
- if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1)
-#else
- if (clock_gettime(CLOCK_REALTIME, &ts) == -1)
-#endif
- event_err(1, "clock_gettime");
- trans_id = ts.tv_nsec & 0xffff;
-#endif
-
-#ifdef DNS_USE_GETTIMEOFDAY_FOR_ID
- struct timeval tv;
- gettimeofday(&tv, NULL);
- trans_id = tv.tv_usec & 0xffff;
-#endif
-
-#ifdef DNS_USE_OPENSSL_FOR_ID
- if (RAND_pseudo_bytes((u8 *) &trans_id, 2) == -1) {
- /* in the case that the RAND call fails we back */
- /* down to using gettimeofday. */
- /*
- struct timeval tv;
- gettimeofday(&tv, NULL);
- trans_id = tv.tv_usec & 0xffff;
- */
- abort();
- }
-#endif
- return (unsigned short) trans_id;
-}
-
-static uint16_t (*trans_id_function)(void) = default_transaction_id_fn;
-
-static void
-default_random_bytes_fn(char *buf, size_t n)
-{
- unsigned i;
- for (i = 0; i < n; i += 2) {
- u16 tid = trans_id_function();
- buf[i] = (tid >> 8) & 0xff;
- if (i+1<n)
- buf[i+1] = tid & 0xff;
- }
-}
-
-static void (*rand_bytes_function)(char *buf, size_t n) =
- default_random_bytes_fn;
-
-static u16
-trans_id_from_random_bytes_fn(void)
-{
- u16 tid;
- rand_bytes_function((char*) &tid, sizeof(tid));
- return tid;
-}
-
-void
-evdns_set_transaction_id_fn(uint16_t (*fn)(void))
-{
- if (fn)
- trans_id_function = fn;
- else
- trans_id_function = default_transaction_id_fn;
- rand_bytes_function = default_random_bytes_fn;
-}
-
-void
-evdns_set_random_bytes_fn(void (*fn)(char *, size_t))
-{
- rand_bytes_function = fn;
- trans_id_function = trans_id_from_random_bytes_fn;
-}
-
-/* Try to choose a strong transaction id which isn't already in flight */
-static u16
-transaction_id_pick(void) {
- for (;;) {
- const struct evdns_request *req = req_head, *started_at;
- u16 trans_id = trans_id_function();
-
- if (trans_id == 0xffff) continue;
- /* now check to see if that id is already inflight */
- req = started_at = req_head;
- if (req) {
- do {
- if (req->trans_id == trans_id) break;
- req = req->next;
- } while (req != started_at);
- }
- /* we didn't find it, so this is a good id */
- if (req == started_at) return trans_id;
- }
-}
-
-/* choose a namesever to use. This function will try to ignore */
-/* nameservers which we think are down and load balance across the rest */
-/* by updating the server_head global each time. */
-static struct nameserver *
-nameserver_pick(void) {
- struct nameserver *started_at = server_head, *picked;
- if (!server_head) return NULL;
-
- /* if we don't have any good nameservers then there's no */
- /* point in trying to find one. */
- if (!global_good_nameservers) {
- server_head = server_head->next;
- return server_head;
- }
-
- /* remember that nameservers are in a circular list */
- for (;;) {
- if (server_head->state) {
- /* we think this server is currently good */
- picked = server_head;
- server_head = server_head->next;
- return picked;
- }
-
- server_head = server_head->next;
- if (server_head == started_at) {
- /* all the nameservers seem to be down */
- /* so we just return this one and hope for the */
- /* best */
- assert(global_good_nameservers == 0);
- picked = server_head;
- server_head = server_head->next;
- return picked;
- }
- }
-}
-
-/* this is called when a namesever socket is ready for reading */
-static void
-nameserver_read(struct nameserver *ns) {
- struct sockaddr_storage ss;
- struct sockaddr *sa = (struct sockaddr *) &ss;
- socklen_t addrlen = sizeof(ss);
- u8 packet[1500];
-
- for (;;) {
- const int r =
- (int)recvfrom(ns->socket, (void*)packet,
- (socklen_t)sizeof(packet), 0,
- sa, &addrlen);
- if (r < 0) {
- int err = last_error(ns->socket);
- if (error_is_eagain(err)) return;
- nameserver_failed(ns, tor_socket_strerror(err));
- return;
- }
- /* XXX Match port too? */
- if (!sockaddr_eq(sa, (struct sockaddr*)&ns->address, 0)) {
- evdns_log(EVDNS_LOG_WARN,
- "Address mismatch on received DNS packet. Address was %s",
- debug_ntop(sa));
- return;
- }
- ns->timedout = 0;
- reply_parse(packet, r);
- }
-}
-
-/* Read a packet from a DNS client on a server port s, parse it, and */
-/* act accordingly. */
-static void
-server_port_read(struct evdns_server_port *s) {
- u8 packet[1500];
- struct sockaddr_storage addr;
- socklen_t addrlen;
- ssize_t r;
-
- for (;;) {
- addrlen = (socklen_t)sizeof(struct sockaddr_storage);
- r = recvfrom(s->socket, (void*)packet, sizeof(packet), 0,
- (struct sockaddr*) &addr, &addrlen);
- if (r < 0) {
- int err = last_error(s->socket);
- if (error_is_eagain(err)) return;
- evdns_log(EVDNS_LOG_WARN, "Error %s (%d) while reading request.",
- tor_socket_strerror(err), err);
- return;
- }
- request_parse(packet, r, s, (struct sockaddr*) &addr, addrlen);
- }
-}
-
-/* Try to write all pending replies on a given DNS server port. */
-static void
-server_port_flush(struct evdns_server_port *port)
-{
- struct server_request *req = port->pending_replies;
- while (req) {
- ssize_t r = sendto(port->socket, req->response, req->response_len, 0,
- (struct sockaddr*) &req->addr, (socklen_t)req->addrlen);
- if (r < 0) {
- int err = last_error(port->socket);
- if (error_is_eagain(err))
- return;
- evdns_log(EVDNS_LOG_WARN, "Error %s (%d) while writing response to port; dropping", tor_socket_strerror(err), err);
- }
- if (server_request_free(req)) {
- /* we released the last reference to req->port. */
- return;
- } else {
- assert(port->pending_replies != req);
- req = port->pending_replies;
- }
- }
-
- /* We have no more pending requests; stop listening for 'writeable' events. */
- (void) event_del(&port->event);
- CLEAR(&port->event);
- event_set(&port->event, port->socket, EV_READ | EV_PERSIST,
- server_port_ready_callback, port);
- if (event_add(&port->event, NULL) < 0) {
- evdns_log(EVDNS_LOG_WARN, "Error from libevent when adding event for DNS server.");
- /* ???? Do more? */
- }
-}
-
-/* set if we are waiting for the ability to write to this server. */
-/* if waiting is true then we ask libevent for EV_WRITE events, otherwise */
-/* we stop these events. */
-static void
-nameserver_write_waiting(struct nameserver *ns, char waiting) {
- if (ns->write_waiting == waiting) return;
-
- ns->write_waiting = waiting;
- (void) event_del(&ns->event);
- CLEAR(&ns->event);
- event_set(&ns->event, ns->socket, EV_READ | (waiting ? EV_WRITE : 0) | EV_PERSIST,
- nameserver_ready_callback, ns);
- if (event_add(&ns->event, NULL) < 0) {
- evdns_log(EVDNS_LOG_WARN, "Error from libevent when adding event for %s",
- debug_ntop((struct sockaddr *)&ns->address));
- /* ???? Do more? */
- }
-}
-
-/* a callback function. Called by libevent when the kernel says that */
-/* a nameserver socket is ready for writing or reading */
-static void
-nameserver_ready_callback(int fd, short events, void *arg) {
- struct nameserver *ns = (struct nameserver *) arg;
- (void)fd;
-
- if (events & EV_WRITE) {
- ns->choked = 0;
- if (!evdns_transmit()) {
- nameserver_write_waiting(ns, 0);
- }
- }
- if (events & EV_READ) {
- nameserver_read(ns);
- }
-}
-
-/* a callback function. Called by libevent when the kernel says that */
-/* a server socket is ready for writing or reading. */
-static void
-server_port_ready_callback(int fd, short events, void *arg) {
- struct evdns_server_port *port = (struct evdns_server_port *) arg;
- (void) fd;
-
- if (events & EV_WRITE) {
- port->choked = 0;
- server_port_flush(port);
- }
- if (events & EV_READ) {
- server_port_read(port);
- }
-}
-
-/* This is an inefficient representation; only use it via the dnslabel_table_*
- * functions, so that is can be safely replaced with something smarter later. */
-#define MAX_LABELS 128
-/* Structures used to implement name compression */
-struct dnslabel_entry { char *v; off_t pos; };
-struct dnslabel_table {
- int n_labels; /* number of current entries */
- /* map from name to position in message */
- struct dnslabel_entry labels[MAX_LABELS];
-};
-
-/* Initialize dnslabel_table. */
-static void
-dnslabel_table_init(struct dnslabel_table *table)
-{
- table->n_labels = 0;
-}
-
-/* Free all storage held by table, but not the table itself. */
-static void
-dnslabel_clear(struct dnslabel_table *table)
-{
- int i;
- for (i = 0; i < table->n_labels; ++i)
- mm_free(table->labels[i].v);
- table->n_labels = 0;
-}
-
-/* return the position of the label in the current message, or -1 if the label */
-/* hasn't been used yet. */
-static int
-dnslabel_table_get_pos(const struct dnslabel_table *table, const char *label)
-{
- int i;
- for (i = 0; i < table->n_labels; ++i) {
- if (!strcmp(label, table->labels[i].v)) {
- off_t pos = table->labels[i].pos;
- if (pos > 65535)
- return -1;
- return (int)pos;
- }
- }
- return -1;
-}
-
-/* remember that we've used the label at position pos */
-static int
-dnslabel_table_add(struct dnslabel_table *table, const char *label, off_t pos)
-{
- char *v;
- int p;
- if (table->n_labels == MAX_LABELS)
- return (-1);
- v = mm_strdup(label);
- if (v == NULL)
- return (-1);
- p = table->n_labels++;
- table->labels[p].v = v;
- table->labels[p].pos = pos;
-
- return (0);
-}
-
-/* Converts a string to a length-prefixed set of DNS labels, starting */
-/* at buf[j]. name and buf must not overlap. name_len should be the length */
-/* of name. table is optional, and is used for compression. */
-/* */
-/* Input: abc.def */
-/* Output: <3>abc<3>def<0> */
-/* */
-/* Returns the first index after the encoded name, or negative on error. */
-/* -1 label was > 63 bytes */
-/* -2 name too long to fit in buffer. */
-/* */
-static off_t
-dnsname_to_labels(u8 *const buf, size_t buf_len, off_t j,
- const char *name, const size_t name_len,
- struct dnslabel_table *table) {
- const char *end = name + name_len;
- int ref = 0;
- u16 _t;
-
-#define APPEND16(x) do { \
- if (j + 2 > (off_t)buf_len) \
- goto overflow; \
- _t = htons(x); \
- memcpy(buf + j, &_t, 2); \
- j += 2; \
- } while (0)
-#define APPEND32(x) do { \
- if (j + 4 > (off_t)buf_len) \
- goto overflow; \
- _t32 = htonl(x); \
- memcpy(buf + j, &_t32, 4); \
- j += 4; \
- } while (0)
-
- if (name_len > 255) return -2;
-
- for (;;) {
- const char *const start = name;
- if (table && (ref = dnslabel_table_get_pos(table, name)) >= 0) {
- APPEND16(ref | 0xc000);
- return j;
- }
- name = strchr(name, '.');
- if (!name) {
- const size_t label_len = end - start;
- if (label_len > 63) return -1;
- if ((size_t)(j+label_len+1) > buf_len) return -2;
- if (table) dnslabel_table_add(table, start, j);
- buf[j++] = (uint8_t)label_len;
-
- memcpy(buf + j, start, label_len);
- j += end - start;
- break;
- } else {
- /* append length of the label. */
- const size_t label_len = name - start;
- if (label_len > 63) return -1;
- if ((size_t)(j+label_len+1) > buf_len) return -2;
- if (table) dnslabel_table_add(table, start, j);
- buf[j++] = (uint8_t)label_len;
-
- memcpy(buf + j, start, name - start);
- j += name - start;
- /* hop over the '.' */
- name++;
- }
- }
-
- /* the labels must be terminated by a 0. */
- /* It's possible that the name ended in a . */
- /* in which case the zero is already there */
- if (!j || buf[j-1]) buf[j++] = 0;
- return j;
- overflow:
- return (-2);
-}
-
-/* Finds the length of a dns request for a DNS name of the given */
-/* length. The actual request may be smaller than the value returned */
-/* here */
-static size_t
-evdns_request_len(const size_t name_len) {
- return 96 + /* length of the DNS standard header */
- name_len + 2 +
- 4; /* space for the resource type */
-}
-
-/* build a dns request packet into buf. buf should be at least as long */
-/* as evdns_request_len told you it should be. */
-/* */
-/* Returns the amount of space used. Negative on error. */
-static int
-evdns_request_data_build(const char *const name, const size_t name_len,
- const u16 trans_id, const u16 type, const u16 class,
- u8 *const buf, size_t buf_len) {
- off_t j = 0; /* current offset into buf */
- u16 _t; /* used by the macros */
-
- APPEND16(trans_id);
- APPEND16(0x0100); /* standard query, recusion needed */
- APPEND16(1); /* one question */
- APPEND16(0); /* no answers */
- APPEND16(0); /* no authority */
- APPEND16(0); /* no additional */
-
- j = dnsname_to_labels(buf, buf_len, j, name, name_len, NULL);
- if (j < 0) {
- return (int)j;
- }
-
- APPEND16(type);
- APPEND16(class);
-
- return (int)j;
- overflow:
- return (-1);
-}
-
-/* exported function */
-struct evdns_server_port *
-evdns_add_server_port(tor_socket_t socket, int is_tcp, evdns_request_callback_fn_type cb, void *user_data)
-{
- struct evdns_server_port *port;
- if (!(port = mm_malloc(sizeof(struct evdns_server_port))))
- return NULL;
- memset(port, 0, sizeof(struct evdns_server_port));
-
- assert(!is_tcp); /* TCP sockets not yet implemented */
- port->socket = socket;
- port->refcnt = 1;
- port->choked = 0;
- port->closing = 0;
- port->user_callback = cb;
- port->user_data = user_data;
- port->pending_replies = NULL;
-
- event_set(&port->event, port->socket, EV_READ | EV_PERSIST,
- server_port_ready_callback, port);
- if (event_add(&port->event, NULL)<0) {
- mm_free(port);
- return NULL;
- }
- return port;
-}
-
-/* exported function */
-void
-evdns_close_server_port(struct evdns_server_port *port)
-{
- port->closing = 1;
- if (--port->refcnt == 0)
- server_port_free(port);
-}
-
-/* exported function */
-int
-evdns_server_request_add_reply(struct evdns_server_request *_req, int section, const char *name, int type, int class, int ttl, int datalen, int is_name, const char *data)
-{
- struct server_request *req = TO_SERVER_REQUEST(_req);
- struct server_reply_item **itemp, *item;
- int *countp;
-
- if (req->response) /* have we already answered? */
- return (-1);
-
- switch (section) {
- case EVDNS_ANSWER_SECTION:
- itemp = &req->answer;
- countp = &req->n_answer;
- break;
- case EVDNS_AUTHORITY_SECTION:
- itemp = &req->authority;
- countp = &req->n_authority;
- break;
- case EVDNS_ADDITIONAL_SECTION:
- itemp = &req->additional;
- countp = &req->n_additional;
- break;
- default:
- return (-1);
- }
- while (*itemp) {
- itemp = &((*itemp)->next);
- }
- item = mm_malloc(sizeof(struct server_reply_item));
- if (!item)
- return -1;
- CLEAR(item);
- item->next = NULL;
- if (!(item->name = mm_strdup(name))) {
- CLEAR(item);
- mm_free(item);
- return -1;
- }
- item->type = type;
- item->class = class;
- item->ttl = ttl;
- item->is_name = is_name != 0;
- item->datalen = 0;
- item->data = NULL;
- if (data) {
- if (item->is_name) {
- if (!(item->data = mm_strdup(data))) {
- mm_free(item->name);
- CLEAR(item);
- mm_free(item);
- return -1;
- }
- item->datalen = (u16)-1;
- } else {
- if (!(item->data = mm_malloc(datalen))) {
- mm_free(item->name);
- CLEAR(item);
- mm_free(item);
- return -1;
- }
- item->datalen = datalen;
- memcpy(item->data, data, datalen);
- }
- }
-
- *itemp = item;
- ++(*countp);
- return 0;
-}
-
-/* exported function */
-int
-evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl)
-{
- return evdns_server_request_add_reply(
- req, EVDNS_ANSWER_SECTION, name, TYPE_A, CLASS_INET,
- ttl, n*4, 0, addrs);
-}
-
-/* exported function */
-int
-evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl)
-{
- return evdns_server_request_add_reply(
- req, EVDNS_ANSWER_SECTION, name, TYPE_AAAA, CLASS_INET,
- ttl, n*16, 0, addrs);
-}
-
-/* exported function */
-int
-evdns_server_request_add_ptr_reply(struct evdns_server_request *req, struct in_addr *in, const char *inaddr_name, const char *hostname, int ttl)
-{
- u32 a;
- char buf[32];
- assert(in || inaddr_name);
- assert(!(in && inaddr_name));
- if (in) {
- a = ntohl(in->s_addr);
- tor_snprintf(buf, sizeof(buf), "%d.%d.%d.%d.in-addr.arpa",
- (int)(u8)((a )&0xff),
- (int)(u8)((a>>8 )&0xff),
- (int)(u8)((a>>16)&0xff),
- (int)(u8)((a>>24)&0xff));
- inaddr_name = buf;
- }
- return evdns_server_request_add_reply(
- req, EVDNS_ANSWER_SECTION, inaddr_name, TYPE_PTR, CLASS_INET,
- ttl, -1, 1, hostname);
-}
-
-/* exported function */
-int
-evdns_server_request_add_cname_reply(struct evdns_server_request *req, const char *name, const char *cname, int ttl)
-{
- return evdns_server_request_add_reply(
- req, EVDNS_ANSWER_SECTION, name, TYPE_CNAME, CLASS_INET,
- ttl, -1, 1, cname);
-}
-
-
-static int
-evdns_server_request_format_response(struct server_request *req, int err)
-{
- unsigned char buf[1500];
- size_t buf_len = sizeof(buf);
- off_t j = 0, r;
- u16 _t;
- u32 _t32;
- int i;
- u16 flags;
- struct dnslabel_table table;
-
- if (err < 0 || err > 15) return -1;
-
- /* Set response bit and error code; copy OPCODE and RD fields from
- * question; copy RA and AA if set by caller. */
- flags = req->base.flags;
- flags |= (0x8000 | err);
-
- dnslabel_table_init(&table);
- APPEND16(req->trans_id);
- APPEND16(flags);
- APPEND16(req->base.nquestions);
- APPEND16(req->n_answer);
- APPEND16(req->n_authority);
- APPEND16(req->n_additional);
-
- /* Add questions. */
- for (i=0; i < req->base.nquestions; ++i) {
- const char *s = req->base.questions[i]->name;
- j = dnsname_to_labels(buf, buf_len, j, s, strlen(s), &table);
- if (j < 0) {
- dnslabel_clear(&table);
- return (int) j;
- }
- APPEND16(req->base.questions[i]->type);
- APPEND16(req->base.questions[i]->dns_question_class);
- }
-
- /* Add answer, authority, and additional sections. */
- for (i=0; i<3; ++i) {
- struct server_reply_item *item;
- if (i==0)
- item = req->answer;
- else if (i==1)
- item = req->authority;
- else
- item = req->additional;
- while (item) {
- r = dnsname_to_labels(buf, buf_len, j, item->name, strlen(item->name), &table);
- if (r < 0)
- goto overflow;
- j = r;
-
- APPEND16(item->type);
- APPEND16(item->class);
- APPEND32(item->ttl);
- if (item->is_name) {
- off_t len_idx = j, name_start;
- j += 2;
- name_start = j;
- r = dnsname_to_labels(buf, buf_len, j, item->data, strlen(item->data), &table);
- if (r < 0)
- goto overflow;
- j = r;
- _t = htons( (j-name_start) );
- memcpy(buf+len_idx, &_t, 2);
- } else {
- APPEND16(item->datalen);
- if (j+item->datalen > (off_t)buf_len)
- goto overflow;
- memcpy(buf+j, item->data, item->datalen);
- j += item->datalen;
- }
- item = item->next;
- }
- }
-
- if (j > 512) {
-overflow:
- j = 512;
- buf[2] |= 0x02; /* set the truncated bit. */
- }
-
- req->response_len = (size_t)j;
-
- if (!(req->response = mm_malloc(req->response_len))) {
- server_request_free_answers(req);
- dnslabel_clear(&table);
- return (-1);
- }
- memcpy(req->response, buf, req->response_len);
- server_request_free_answers(req);
- dnslabel_clear(&table);
- return (0);
-}
-
-/* exported function */
-int
-evdns_server_request_respond(struct evdns_server_request *_req, int err)
-{
- struct server_request *req = TO_SERVER_REQUEST(_req);
- struct evdns_server_port *port = req->port;
- ssize_t r;
- if (!req->response) {
- if ((r = evdns_server_request_format_response(req, err))<0)
- return (int)r;
- }
-
- r = sendto(port->socket, req->response, req->response_len, 0,
- (struct sockaddr*) &req->addr, req->addrlen);
- if (r<0) {
- int error = last_error(port->socket);
- if (! error_is_eagain(error))
- return -1;
-
- if (port->pending_replies) {
- req->prev_pending = port->pending_replies->prev_pending;
- req->next_pending = port->pending_replies;
- req->prev_pending->next_pending =
- req->next_pending->prev_pending = req;
- } else {
- req->prev_pending = req->next_pending = req;
- port->pending_replies = req;
- port->choked = 1;
-
- (void) event_del(&port->event);
- CLEAR(&port->event);
- event_set(&port->event, port->socket, (port->closing?0:EV_READ) | EV_WRITE | EV_PERSIST, server_port_ready_callback, port);
-
- if (event_add(&port->event, NULL) < 0) {
- evdns_log(EVDNS_LOG_WARN, "Error from libevent when adding event for DNS server");
- }
-
- }
-
- return 1;
- }
- if (server_request_free(req))
- return 0;
-
- if (port->pending_replies)
- server_port_flush(port);
-
- return 0;
-}
-
-/* Free all storage held by RRs in req. */
-static void
-server_request_free_answers(struct server_request *req)
-{
- struct server_reply_item *victim, *next, **list;
- int i;
- for (i = 0; i < 3; ++i) {
- if (i==0)
- list = &req->answer;
- else if (i==1)
- list = &req->authority;
- else
- list = &req->additional;
-
- victim = *list;
- while (victim) {
- next = victim->next;
- mm_free(victim->name);
- if (victim->data)
- mm_free(victim->data);
- mm_free(victim);
- victim = next;
- }
- *list = NULL;
- }
-}
-
-/* Free all storage held by req, and remove links to it. */
-/* return true iff we just wound up freeing the server_port. */
-static int
-server_request_free(struct server_request *req)
-{
- int i, rc=1;
- if (req->base.questions) {
- for (i = 0; i < req->base.nquestions; ++i)
- mm_free(req->base.questions[i]);
- mm_free(req->base.questions);
- }
-
- if (req->port) {
- if (req->port->pending_replies == req) {
- if (req->next_pending && req->next_pending != req)
- req->port->pending_replies = req->next_pending;
- else
- req->port->pending_replies = NULL;
- }
- rc = --req->port->refcnt;
- }
-
- if (req->response) {
- mm_free(req->response);
- }
-
- server_request_free_answers(req);
-
- if (req->next_pending && req->next_pending != req) {
- req->next_pending->prev_pending = req->prev_pending;
- req->prev_pending->next_pending = req->next_pending;
- }
-
- if (rc == 0) {
- server_port_free(req->port);
- CLEAR(req);
- mm_free(req);
- return (1);
- }
- CLEAR(req);
- mm_free(req);
- return (0);
-}
-
-/* Free all storage held by an evdns_server_port. Only called when the
- * reference count is down to 0. */
-static void
-server_port_free(struct evdns_server_port *port)
-{
- assert(port);
- assert(!port->refcnt);
- assert(!port->pending_replies);
- if (port->socket > 0) {
- CLOSE_SOCKET(port->socket);
- port->socket = -1;
- }
- (void) event_del(&port->event);
- CLEAR(&port->event);
- CLEAR(port);
- mm_free(port);
-}
-
-/* exported function */
-int
-evdns_server_request_drop(struct evdns_server_request *_req)
-{
- struct server_request *req = TO_SERVER_REQUEST(_req);
- server_request_free(req);
- return 0;
-}
-
-/* exported function */
-int
-evdns_server_request_get_requesting_addr(struct evdns_server_request *_req, struct sockaddr *sa, int addr_len)
-{
- struct server_request *req = TO_SERVER_REQUEST(_req);
- if (addr_len < (int)req->addrlen)
- return -1;
- memcpy(sa, &(req->addr), req->addrlen);
- return req->addrlen;
-}
-
-#undef APPEND16
-#undef APPEND32
-
-/* this is a libevent callback function which is called when a request */
-/* has timed out. */
-static void
-evdns_request_timeout_callback(int fd, short events, void *arg) {
- struct evdns_request *const req = (struct evdns_request *) arg;
- (void) fd;
- (void) events;
-
- evdns_log(EVDNS_LOG_DEBUG, "Request %lx timed out", (unsigned long) arg);
-
- req->ns->timedout++;
- if (req->ns->timedout > global_max_nameserver_timeout) {
- req->ns->timedout = 0;
- nameserver_failed(req->ns, "request timed out.");
- }
-
- if (req->tx_count >= global_max_retransmits) {
- /* this request has failed */
- reply_callback(req, 0, DNS_ERR_TIMEOUT, NULL);
- request_finished(req, &req_head);
- } else {
- /* retransmit it */
- /* Stop waiting for the timeout. No need to do this in
- * request_finished; that one already deletes the timeout event. */
- del_timeout_event(req);
- evdns_request_transmit(req);
- }
-}
-
-/* try to send a request to a given server. */
-/* */
-/* return: */
-/* 0 ok */
-/* 1 temporary failure */
-/* 2 other failure */
-static int
-evdns_request_transmit_to(struct evdns_request *req, struct nameserver *server) {
- const ssize_t r = send(server->socket, (void*)req->request,
- req->request_len, 0);
- if (r < 0) {
- int err = last_error(server->socket);
- if (error_is_eagain(err)) return 1;
- nameserver_failed(req->ns, tor_socket_strerror(err));
- return 2;
- } else if (r != (ssize_t)req->request_len) {
- return 1; /* short write */
- } else {
- return 0;
- }
-}
-
-/* try to send a request, updating the fields of the request */
-/* as needed */
-/* */
-/* return: */
-/* 0 ok */
-/* 1 failed */
-static int
-evdns_request_transmit(struct evdns_request *req) {
- int retcode = 0, r;
-
- /* if we fail to send this packet then this flag marks it */
- /* for evdns_transmit */
- req->transmit_me = 1;
- if (req->trans_id == 0xffff) abort();
-
- if (req->ns->choked) {
- /* don't bother trying to write to a socket */
- /* which we have had EAGAIN from */
- return 1;
- }
-
- r = evdns_request_transmit_to(req, req->ns);
- switch (r) {
- case 1:
- /* temp failure */
- req->ns->choked = 1;
- nameserver_write_waiting(req->ns, 1);
- return 1;
- case 2:
- /* failed to transmit the request entirely. */
- retcode = 1;
- /* fall through: we'll set a timeout, which will time out,
- * and make us retransmit the request anyway. */
- default:
- /* transmitted; we need to check for timeout. */
- evdns_log(EVDNS_LOG_DEBUG,
- "Setting timeout for request %lx", (unsigned long) req);
-
- if (add_timeout_event(req, &global_timeout) < 0) {
- evdns_log(EVDNS_LOG_WARN,
- "Error from libevent when adding timer for request %lx",
- (unsigned long) req);
- /* ???? Do more? */
- }
- req->tx_count++;
- req->transmit_me = 0;
- return retcode;
- }
-}
-
-static void
-nameserver_probe_callback(int result, char type, int count, int ttl, void *addresses, void *arg) {
- struct sockaddr *addr = arg;
- struct nameserver *server;
- (void) type;
- (void) count;
- (void) ttl;
- (void) addresses;
-
- for (server = server_head; server; server = server->next) {
- if (sockaddr_eq(addr, (struct sockaddr*) &server->address, 1)) {
- if (result == DNS_ERR_NONE || result == DNS_ERR_NOTEXIST) {
- /* this is a good reply */
- nameserver_up(server);
- } else {
- nameserver_probe_failed(server);
- }
- }
- if (server->next == server_head)
- break;
- }
-
- mm_free(addr);
-}
-
-static void
-nameserver_send_probe(struct nameserver *const ns) {
- struct evdns_request *req;
- struct sockaddr_storage *addr;
- /* here we need to send a probe to a given nameserver */
- /* in the hope that it is up now. */
-
- /* We identify the nameserver by its address, in case it is removed before
- * our probe comes back. */
- addr = mm_malloc(sizeof(struct sockaddr_storage));
- memcpy(addr, &ns->address, sizeof(struct sockaddr_storage));
-
- evdns_log(EVDNS_LOG_DEBUG, "Sending probe to %s", debug_ntop((struct sockaddr *)&ns->address));
-
- req = request_new(TYPE_A, "www.google.com", DNS_QUERY_NO_SEARCH, nameserver_probe_callback, addr);
- if (!req) {
- mm_free(addr);
- return;
- }
- /* we force this into the inflight queue no matter what */
- request_trans_id_set(req, transaction_id_pick());
- req->ns = ns;
- request_submit(req);
-}
-
-/* returns: */
-/* 0 didn't try to transmit anything */
-/* 1 tried to transmit something */
-static int
-evdns_transmit(void) {
- char did_try_to_transmit = 0;
-
- if (req_head) {
- struct evdns_request *const started_at = req_head, *req = req_head;
- /* first transmit all the requests which are currently waiting */
- do {
- if (req->transmit_me) {
- did_try_to_transmit = 1;
- evdns_request_transmit(req);
- }
-
- req = req->next;
- } while (req != started_at);
- }
-
- return did_try_to_transmit;
-}
-
-/* exported function */
-int
-evdns_count_nameservers(void)
-{
- const struct nameserver *server = server_head;
- int n = 0;
- if (!server)
- return 0;
- do {
- ++n;
- server = server->next;
- } while (server != server_head);
- return n;
-}
-
-/* exported function */
-int
-evdns_clear_nameservers_and_suspend(void)
-{
- struct nameserver *server = server_head, *started_at = server_head;
- struct evdns_request *req = req_head, *req_started_at = req_head;
-
- if (!server)
- return 0;
- while (1) {
- struct nameserver *next = server->next;
- (void) event_del(&server->event);
- CLEAR(&server->event);
- del_timeout_event(server);
- if (server->socket >= 0)
- CLOSE_SOCKET(server->socket);
- CLEAR(server);
- mm_free(server);
- if (next == started_at)
- break;
- server = next;
- }
- server_head = NULL;
- global_good_nameservers = 0;
-
- while (req) {
- struct evdns_request *next = req->next;
- req->tx_count = req->reissue_count = 0;
- req->ns = NULL;
- /* ???? What to do about searches? */
- del_timeout_event(req);
- req->trans_id = 0;
- req->transmit_me = 0;
-
- global_requests_waiting++;
- evdns_request_insert(req, &req_waiting_head);
- /* We want to insert these suspended elements at the front of
- * the waiting queue, since they were pending before any of
- * the waiting entries were added. This is a circular list,
- * so we can just shift the start back by one.*/
- req_waiting_head = req_waiting_head->prev;
-
- if (next == req_started_at)
- break;
- req = next;
- }
- req_head = NULL;
- global_requests_inflight = 0;
-
- return 0;
-}
-
-static struct sockaddr_storage global_bind_address;
-static socklen_t global_bind_addrlen = 0;
-static int global_bind_addr_is_set = 0;
-void
-evdns_set_default_outgoing_bind_address(const struct sockaddr *addr,
- socklen_t addrlen)
-{
- memset(&global_bind_address, 0, sizeof(global_bind_address));
- if (addr) {
- assert(addrlen <= (socklen_t)sizeof(global_bind_address));
- memcpy(&global_bind_address, addr, addrlen);
- global_bind_addrlen = addrlen;
- global_bind_addr_is_set = 1;
- } else {
- global_bind_addr_is_set = 0;
- }
-}
-
-/* exported function */
-int
-evdns_resume(void)
-{
- evdns_requests_pump_waiting_queue();
- return 0;
-}
-
-static int
-sockaddr_is_loopback(const struct sockaddr *addr)
-{
- static const char LOOPBACK_S6[16] =
- "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1";
- if (addr->sa_family == AF_INET) {
- struct sockaddr_in *sin = (struct sockaddr_in *)addr;
- return (ntohl(sin->sin_addr.s_addr) & 0xff000000) == 0x7f000000;
- } else if (addr->sa_family == AF_INET6) {
- struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)addr;
- return fast_memeq(sin6->sin6_addr.s6_addr, LOOPBACK_S6, 16);
- }
- return 0;
-}
-
-static int
-_evdns_nameserver_add_impl(const struct sockaddr *address,
- socklen_t addrlen) {
- /* first check to see if we already have this nameserver */
-
- const struct nameserver *server = server_head, *const started_at = server_head;
- struct nameserver *ns;
-
- int err = 0;
- if (server) {
- do {
- if (sockaddr_eq(address, (struct sockaddr *)&server->address, 1)) {
- evdns_log(EVDNS_LOG_DEBUG, "Duplicate nameserver.");
- return 3;
- }
- server = server->next;
- } while (server != started_at);
- }
- if (addrlen > (int)sizeof(ns->address)) {
- evdns_log(EVDNS_LOG_DEBUG, "Addrlen %d too long.", (int)addrlen);
- return 2;
- }
-
- ns = (struct nameserver *) mm_malloc(sizeof(struct nameserver));
- if (!ns) return -1;
-
- memset(ns, 0, sizeof(struct nameserver));
-
- evtimer_set(&ns->timeout_event, nameserver_prod_callback, ns);
-
-#if 1
- ns->socket = tor_open_socket_nonblocking(address->sa_family, SOCK_DGRAM, 0);
- if (!SOCKET_OK(ns->socket)) { err = 1; goto out1; }
-#else
- ns->socket = tor_open_socket(address->sa_family, SOCK_DGRAM, 0);
- if (ns->socket < 0) { err = 1; goto out1; }
-#ifdef _WIN32
- {
- u_long nonblocking = 1;
- ioctlsocket(ns->socket, FIONBIO, &nonblocking);
- }
-#else
- if (fcntl(ns->socket, F_SETFL, O_NONBLOCK) == -1) {
- evdns_log(EVDNS_LOG_WARN, "Error %s (%d) while settings file status flags.",
- tor_socket_strerror(errno), errno);
- err = 2;
- goto out2;
- }
-#endif
-
-#endif /* 1 */
- if (global_bind_addr_is_set &&
- !sockaddr_is_loopback((struct sockaddr*)&global_bind_address)) {
- if (bind(ns->socket, (struct sockaddr *)&global_bind_address,
- global_bind_addrlen) < 0) {
- evdns_log(EVDNS_LOG_DEBUG, "Couldn't bind to outgoing address.");
- err = 2;
- goto out2;
- }
- }
-
- if (connect(ns->socket, address, addrlen) != 0) {
- evdns_log(EVDNS_LOG_DEBUG, "Couldn't open socket to nameserver.");
- err = 2;
- goto out2;
- }
-
- memcpy(&ns->address, address, addrlen);
- ns->state = 1;
- event_set(&ns->event, ns->socket, EV_READ | EV_PERSIST, nameserver_ready_callback, ns);
- if (event_add(&ns->event, NULL) < 0) {
- evdns_log(EVDNS_LOG_DEBUG, "Couldn't add event for nameserver.");
- err = 2;
- goto out2;
- }
-
- evdns_log(EVDNS_LOG_DEBUG, "Added nameserver %s", debug_ntop(address));
-
- /* insert this nameserver into the list of them */
- if (!server_head) {
- ns->next = ns->prev = ns;
- server_head = ns;
- } else {
- ns->next = server_head->next;
- ns->prev = server_head;
- server_head->next = ns;
- if (server_head->prev == server_head) {
- server_head->prev = ns;
- }
- }
-
- global_good_nameservers++;
-
- return 0;
-
-out2:
- CLOSE_SOCKET(ns->socket);
-out1:
- CLEAR(ns);
- mm_free(ns);
- evdns_log(EVDNS_LOG_WARN, "Unable to add nameserver %s: error %d", debug_ntop(address), err);
- return err;
-}
-
-/* exported function */
-int
-evdns_nameserver_add(uint32_t address) {
- struct sockaddr_in sin;
- memset(&sin, 0, sizeof(sin));
- sin.sin_family = AF_INET;
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
- sin.sin_len = sizeof(sin);
-#endif
- sin.sin_addr.s_addr = htonl(address);
- sin.sin_port = 53;
- return _evdns_nameserver_add_impl((struct sockaddr*) &sin, sizeof(sin));
-}
-
-/* exported function */
-int
-evdns_nameserver_ip_add(const char *ip_as_string) {
- int port;
- char buf[128];
- const char *cp, *addr_part, *port_part;
- int is_ipv6;
- /* recognized formats are:
- * [ipv6]:port
- * ipv6
- * [ipv6]
- * ipv4:port
- * ipv4
- */
-
- evdns_log(EVDNS_LOG_DEBUG, "Trying to add nameserver <%s>", ip_as_string);
-
- cp = strchr(ip_as_string, ':');
- if (*ip_as_string == '[') {
- size_t len;
- if (!(cp = strchr(ip_as_string, ']'))) {
- evdns_log(EVDNS_LOG_DEBUG, "Nameserver missing closing ]");
- return 4;
- }
- len = cp-(ip_as_string + 1);
- if (len > sizeof(buf)-1) {
- evdns_log(EVDNS_LOG_DEBUG, "[Nameserver] does not fit in buffer.");
- return 4;
- }
- memcpy(buf, ip_as_string+1, len);
- buf[len] = '\0';
- addr_part = buf;
- if (cp[1] == ':')
- port_part = cp+2;
- else
- port_part = NULL;
- is_ipv6 = 1;
- } else if (cp && strchr(cp+1, ':')) {
- is_ipv6 = 1;
- addr_part = ip_as_string;
- port_part = NULL;
- } else if (cp) {
- is_ipv6 = 0;
- if (cp - ip_as_string > (int)sizeof(buf)-1) {
- evdns_log(EVDNS_LOG_DEBUG, "Nameserver does not fit in buffer.");
- return 4;
- }
- memcpy(buf, ip_as_string, cp-ip_as_string);
- buf[cp-ip_as_string] = '\0';
- addr_part = buf;
- port_part = cp+1;
- } else {
- addr_part = ip_as_string;
- port_part = NULL;
- is_ipv6 = 0;
- }
-
- if (port_part == NULL) {
- port = 53;
- } else {
- port = strtoint(port_part);
- if (port <= 0 || port > 65535) {
- evdns_log(EVDNS_LOG_DEBUG, "Nameserver port <%s> out of range",
- port_part);
- return 4;
- }
- }
-
- /* Tor-only. needs a more general fix. */
- assert(addr_part);
- if (is_ipv6) {
- struct sockaddr_in6 sin6;
- memset(&sin6, 0, sizeof(sin6));
-#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_LEN
- sin6.sin6_len = sizeof(sin6);
-#endif
- sin6.sin6_family = AF_INET6;
- sin6.sin6_port = htons(port);
- if (1 != tor_inet_pton(AF_INET6, addr_part, &sin6.sin6_addr)) {
- evdns_log(EVDNS_LOG_DEBUG, "inet_pton(%s) failed", addr_part);
- return 4;
- }
- return _evdns_nameserver_add_impl((struct sockaddr*)&sin6,
- sizeof(sin6));
- } else {
- struct sockaddr_in sin;
- memset(&sin, 0, sizeof(sin));
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
- sin.sin_len = sizeof(sin);
-#endif
- sin.sin_family = AF_INET;
- sin.sin_port = htons(port);
- if (!inet_aton(addr_part, &sin.sin_addr)) {
- evdns_log(EVDNS_LOG_DEBUG, "inet_pton(%s) failed", addr_part);
- return 4;
- }
- return _evdns_nameserver_add_impl((struct sockaddr*)&sin,
- sizeof(sin));
- }
-}
-
-int
-evdns_nameserver_sockaddr_add(const struct sockaddr *sa, socklen_t len)
-{
- return _evdns_nameserver_add_impl(sa, len);
-}
-
-/* insert into the tail of the queue */
-static void
-evdns_request_insert(struct evdns_request *req, struct evdns_request **head) {
- if (!*head) {
- *head = req;
- req->next = req->prev = req;
- return;
- }
-
- req->prev = (*head)->prev;
- req->prev->next = req;
- req->next = *head;
- (*head)->prev = req;
-}
-
-static int
-string_num_dots(const char *s) {
- int count = 0;
- while ((s = strchr(s, '.'))) {
- s++;
- count++;
- }
- return count;
-}
-
-static struct evdns_request *
-request_new(int type, const char *name, int flags,
- evdns_callback_type callback, void *user_ptr) {
- const char issuing_now =
- (global_requests_inflight < global_max_requests_inflight) ? 1 : 0;
-
- const size_t name_len = strlen(name);
- const size_t request_max_len = evdns_request_len(name_len);
- const u16 trans_id = issuing_now ? transaction_id_pick() : 0xffff;
- /* the request data is alloced in a single block with the header */
- struct evdns_request *const req =
- (struct evdns_request *) mm_malloc(sizeof(struct evdns_request) + request_max_len);
- char namebuf[256];
- int rlen;
- (void) flags;
-
- if (!req) return NULL;
-
- if (name_len >= sizeof(namebuf)) {
- _mm_free(req);
- return NULL;
- }
-
- memset(req, 0, sizeof(struct evdns_request));
-
- evtimer_set(&req->timeout_event, evdns_request_timeout_callback, req);
-
- if (global_randomize_case) {
- unsigned i;
- char randbits[32];
- strlcpy(namebuf, name, sizeof(namebuf));
- rand_bytes_function(randbits, (name_len+7)/8);
- for (i = 0; i < name_len; ++i) {
- if (ISALPHA(namebuf[i])) {
- if ((randbits[i >> 3] & (1<<(i%7))))
- namebuf[i] = TOLOWER(namebuf[i]);
- else
- namebuf[i] = TOUPPER(namebuf[i]);
- }
- }
- name = namebuf;
- }
-
- /* request data lives just after the header */
- req->request = ((u8 *) req) + sizeof(struct evdns_request);
- /* denotes that the request data shouldn't be mm_free()ed */
- req->request_appended = 1;
- rlen = evdns_request_data_build(name, name_len, trans_id,
- type, CLASS_INET, req->request, request_max_len);
- if (rlen < 0)
- goto err1;
- req->request_len = rlen;
- req->trans_id = trans_id;
- req->tx_count = 0;
- req->request_type = type;
- req->user_pointer = user_ptr;
- req->user_callback = callback;
- req->ns = issuing_now ? nameserver_pick() : NULL;
- req->next = req->prev = NULL;
-
- return req;
-err1:
- CLEAR(req);
- _mm_free(req);
- return NULL;
-}
-
-static void
-request_submit(struct evdns_request *const req) {
- if (req->ns) {
- /* if it has a nameserver assigned then this is going */
- /* straight into the inflight queue */
- evdns_request_insert(req, &req_head);
- global_requests_inflight++;
- evdns_request_transmit(req);
- } else {
- evdns_request_insert(req, &req_waiting_head);
- global_requests_waiting++;
- }
-}
-
-/* exported function */
-int evdns_resolve_ipv4(const char *name, int flags,
- evdns_callback_type callback, void *ptr) {
- evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
- if (flags & DNS_QUERY_NO_SEARCH) {
- struct evdns_request *const req =
- request_new(TYPE_A, name, flags, callback, ptr);
- if (req == NULL)
- return (1);
- request_submit(req);
- return (0);
- } else {
- return (search_request_new(TYPE_A, name, flags, callback, ptr));
- }
-}
-
-/* exported function */
-int evdns_resolve_ipv6(const char *name, int flags,
- evdns_callback_type callback, void *ptr) {
- evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s", name);
- if (flags & DNS_QUERY_NO_SEARCH) {
- struct evdns_request *const req =
- request_new(TYPE_AAAA, name, flags, callback, ptr);
- if (req == NULL)
- return (1);
- request_submit(req);
- return (0);
- } else {
- return (search_request_new(TYPE_AAAA, name, flags, callback, ptr));
- }
-}
-
-int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr) {
- char buf[32];
- struct evdns_request *req;
- u32 a;
- assert(in);
- a = ntohl(in->s_addr);
- tor_snprintf(buf, sizeof(buf), "%d.%d.%d.%d.in-addr.arpa",
- (int)(u8)((a )&0xff),
- (int)(u8)((a>>8 )&0xff),
- (int)(u8)((a>>16)&0xff),
- (int)(u8)((a>>24)&0xff));
- evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s (reverse)", buf);
- req = request_new(TYPE_PTR, buf, flags, callback, ptr);
- if (!req) return 1;
- request_submit(req);
- return 0;
-}
-
-int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr) {
- /* 32 nybbles, 32 periods, "ip6.arpa", NUL. */
- char buf[73];
- char *cp;
- struct evdns_request *req;
- int i;
- assert(in);
- cp = buf;
- for (i=15; i >= 0; --i) {
- u8 byte = in->s6_addr[i];
- *cp++ = "0123456789abcdef"[byte & 0x0f];
- *cp++ = '.';
- *cp++ = "0123456789abcdef"[byte >> 4];
- *cp++ = '.';
- }
- assert(cp + strlen("ip6.arpa") < buf+sizeof(buf));
- memcpy(cp, "ip6.arpa", strlen("ip6.arpa")+1);
- evdns_log(EVDNS_LOG_DEBUG, "Resolve requested for %s (reverse)", buf);
- req = request_new(TYPE_PTR, buf, flags, callback, ptr);
- if (!req) return 1;
- request_submit(req);
- return 0;
-}
-
-/*/////////////////////////////////////////////////////////////////// */
-/* Search support */
-/* */
-/* the libc resolver has support for searching a number of domains */
-/* to find a name. If nothing else then it takes the single domain */
-/* from the gethostname() call. */
-/* */
-/* It can also be configured via the domain and search options in a */
-/* resolv.conf. */
-/* */
-/* The ndots option controls how many dots it takes for the resolver */
-/* to decide that a name is non-local and so try a raw lookup first. */
-
-struct search_domain {
- size_t len;
- struct search_domain *next;
- /* the text string is appended to this structure */
-};
-
-struct search_state {
- int refcount;
- int ndots;
- int num_domains;
- struct search_domain *head;
-};
-
-static struct search_state *global_search_state = NULL;
-
-static void
-search_state_decref(struct search_state *const state) {
- if (!state) return;
- state->refcount--;
- if (!state->refcount) {
- struct search_domain *next, *dom;
- for (dom = state->head; dom; dom = next) {
- next = dom->next;
- CLEAR(dom);
- _mm_free(dom);
- }
- CLEAR(state);
- _mm_free(state);
- }
-}
-
-static struct search_state *
-search_state_new(void) {
- struct search_state *state = (struct search_state *) mm_malloc(sizeof(struct search_state));
- if (!state) return NULL;
- memset(state, 0, sizeof(struct search_state));
- state->refcount = 1;
- state->ndots = 1;
-
- return state;
-}
-
-static void
-search_postfix_clear(void) {
- search_state_decref(global_search_state);
-
- global_search_state = search_state_new();
-}
-
-/* exported function */
-void
-evdns_search_clear(void) {
- search_postfix_clear();
-}
-
-static void
-search_postfix_add(const char *domain) {
- size_t domain_len;
- struct search_domain *sdomain;
- while (domain[0] == '.') domain++;
- domain_len = strlen(domain);
-
- if (!global_search_state) global_search_state = search_state_new();
- if (!global_search_state) return;
- global_search_state->num_domains++;
-
- sdomain = (struct search_domain *) mm_malloc(sizeof(struct search_domain) + domain_len);
- if (!sdomain) return;
- memcpy( ((u8 *) sdomain) + sizeof(struct search_domain), domain, domain_len);
- sdomain->next = global_search_state->head;
- sdomain->len = domain_len;
-
- global_search_state->head = sdomain;
-}
-
-/* reverse the order of members in the postfix list. This is needed because, */
-/* when parsing resolv.conf we push elements in the wrong order */
-static void
-search_reverse(void) {
- struct search_domain *cur, *prev = NULL, *next;
- cur = global_search_state->head;
- while (cur) {
- next = cur->next;
- cur->next = prev;
- prev = cur;
- cur = next;
- }
-
- global_search_state->head = prev;
-}
-
-/* exported function */
-void
-evdns_search_add(const char *domain) {
- search_postfix_add(domain);
-}
-
-/* exported function */
-void
-evdns_search_ndots_set(const int ndots) {
- if (!global_search_state) global_search_state = search_state_new();
- if (!global_search_state) return;
- global_search_state->ndots = ndots;
-}
-
-static void
-search_set_from_hostname(void) {
- char hostname[HOST_NAME_MAX + 1], *domainname;
-
- search_postfix_clear();
- if (gethostname(hostname, sizeof(hostname))) return;
- domainname = strchr(hostname, '.');
- if (!domainname) return;
- search_postfix_add(domainname);
-}
-
-/* warning: returns malloced string */
-static char *
-search_make_new(const struct search_state *const state, int n, const char *const base_name) {
- const size_t base_len = strlen(base_name);
- const char need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
- struct search_domain *dom;
-
- for (dom = state->head; dom; dom = dom->next) {
- if (!n--) {
- /* this is the postfix we want */
- /* the actual postfix string is kept at the end of the structure */
- const u8 *const postfix = ((u8 *) dom) + sizeof(struct search_domain);
- const size_t postfix_len = dom->len;
- char *const newname = (char *) mm_malloc(base_len + need_to_append_dot + postfix_len + 1);
- if (!newname) return NULL;
- memcpy(newname, base_name, base_len);
- if (need_to_append_dot) newname[base_len] = '.';
- memcpy(newname + base_len + need_to_append_dot, postfix, postfix_len);
- newname[base_len + need_to_append_dot + postfix_len] = 0;
- return newname;
- }
- }
-
- /* we ran off the end of the list and still didn't find the requested string */
- abort();
- return NULL; /* unreachable; stops warnings in some compilers. */
-}
-
-static int
-search_request_new(int type, const char *const name, int flags, evdns_callback_type user_callback, void *user_arg) {
- assert(type == TYPE_A || type == TYPE_AAAA);
- if ( ((flags & DNS_QUERY_NO_SEARCH) == 0) &&
- global_search_state &&
- global_search_state->num_domains) {
- /* we have some domains to search */
- struct evdns_request *req;
- if (string_num_dots(name) >= global_search_state->ndots) {
- req = request_new(type, name, flags, user_callback, user_arg);
- if (!req) return 1;
- req->search_index = -1;
- } else {
- char *const new_name = search_make_new(global_search_state, 0, name);
- if (!new_name) return 1;
- req = request_new(type, new_name, flags, user_callback, user_arg);
- _mm_free(new_name);
- if (!req) return 1;
- req->search_index = 0;
- }
- req->search_origname = mm_strdup(name);
- req->search_state = global_search_state;
- req->search_flags = flags;
- global_search_state->refcount++;
- request_submit(req);
- return 0;
- } else {
- struct evdns_request *const req = request_new(type, name, flags, user_callback, user_arg);
- if (!req) return 1;
- request_submit(req);
- return 0;
- }
-}
-
-/* this is called when a request has failed to find a name. We need to check */
-/* if it is part of a search and, if so, try the next name in the list */
-/* returns: */
-/* 0 another request has been submitted */
-/* 1 no more requests needed */
-static int
-search_try_next(struct evdns_request *const req) {
- if (req->search_state) {
- /* it is part of a search */
- char *new_name;
- struct evdns_request *newreq;
- req->search_index++;
- if (req->search_index >= req->search_state->num_domains) {
- /* no more postfixes to try, however we may need to try */
- /* this name without a postfix */
- if (string_num_dots(req->search_origname) < req->search_state->ndots) {
- /* yep, we need to try it raw */
- struct evdns_request *const newreq = request_new(req->request_type, req->search_origname, req->search_flags, req->user_callback, req->user_pointer);
- evdns_log(EVDNS_LOG_DEBUG, "Search: trying raw query %s", req->search_origname);
- if (newreq) {
- request_submit(newreq);
- return 0;
- }
- }
- return 1;
- }
-
- new_name = search_make_new(req->search_state, req->search_index, req->search_origname);
- if (!new_name) return 1;
- evdns_log(EVDNS_LOG_DEBUG, "Search: now trying %s (%d)", new_name, req->search_index);
- newreq = request_new(req->request_type, new_name, req->search_flags, req->user_callback, req->user_pointer);
- mm_free(new_name);
- if (!newreq) return 1;
- newreq->search_origname = req->search_origname;
- req->search_origname = NULL;
- newreq->search_state = req->search_state;
- newreq->search_flags = req->search_flags;
- newreq->search_index = req->search_index;
- newreq->search_state->refcount++;
- request_submit(newreq);
- return 0;
- }
- return 1;
-}
-
-static void
-search_request_finished(struct evdns_request *const req) {
- if (req->search_state) {
- search_state_decref(req->search_state);
- req->search_state = NULL;
- }
- if (req->search_origname) {
- mm_free(req->search_origname);
- req->search_origname = NULL;
- }
-}
-
-/*/////////////////////////////////////////////////////////////////// */
-/* Parsing resolv.conf files */
-
-static void
-evdns_resolv_set_defaults(int flags) {
- /* if the file isn't found then we assume a local resolver */
- if (flags & DNS_OPTION_SEARCH) search_set_from_hostname();
- if (flags & DNS_OPTION_NAMESERVERS) evdns_nameserver_ip_add("127.0.0.1");
-}
-
-/* helper version of atoi which returns -1 on error */
-static int
-strtoint(const char *const str) {
- char *endptr;
- const long r = strtol(str, &endptr, 10);
- if (*endptr || r > INT_MAX) return -1;
- return (int)r;
-}
-
-/* helper version of atoi that returns -1 on error and clips to bounds. */
-static int
-strtoint_clipped(const char *const str, int min, int max)
-{
- int r = strtoint(str);
- if (r == -1)
- return r;
- else if (r<min)
- return min;
- else if (r>max)
- return max;
- else
- return r;
-}
-
-/* exported function */
-int
-evdns_set_option(const char *option, const char *val, int flags)
-{
- if (!strncmp(option, "ndots:", 6)) {
- const int ndots = strtoint(val);
- if (ndots == -1) return -1;
- if (!(flags & DNS_OPTION_SEARCH)) return 0;
- evdns_log(EVDNS_LOG_DEBUG, "Setting ndots to %d", ndots);
- if (!global_search_state) global_search_state = search_state_new();
- if (!global_search_state) return -1;
- global_search_state->ndots = ndots;
- } else if (!strncmp(option, "timeout:", 8)) {
- const int timeout = strtoint(val);
- if (timeout == -1) return -1;
- if (!(flags & DNS_OPTION_MISC)) return 0;
- evdns_log(EVDNS_LOG_DEBUG, "Setting timeout to %d", timeout);
- global_timeout.tv_sec = timeout;
- } else if (!strncmp(option, "max-timeouts:", 12)) {
- const int maxtimeout = strtoint_clipped(val, 1, 255);
- if (maxtimeout == -1) return -1;
- if (!(flags & DNS_OPTION_MISC)) return 0;
- evdns_log(EVDNS_LOG_DEBUG, "Setting maximum allowed timeouts to %d",
- maxtimeout);
- global_max_nameserver_timeout = maxtimeout;
- } else if (!strncmp(option, "max-inflight:", 13)) {
- const int maxinflight = strtoint_clipped(val, 1, 65000);
- if (maxinflight == -1) return -1;
- if (!(flags & DNS_OPTION_MISC)) return 0;
- evdns_log(EVDNS_LOG_DEBUG, "Setting maximum inflight requests to %d",
- maxinflight);
- global_max_requests_inflight = maxinflight;
- } else if (!strncmp(option, "attempts:", 9)) {
- int retries = strtoint(val);
- if (retries == -1) return -1;
- if (retries > 255) retries = 255;
- if (!(flags & DNS_OPTION_MISC)) return 0;
- evdns_log(EVDNS_LOG_DEBUG, "Setting retries to %d", retries);
- global_max_retransmits = retries;
- } else if (!strncmp(option, "randomize-case:", 15)) {
- int randcase = strtoint(val);
- if (!(flags & DNS_OPTION_MISC)) return 0;
- evdns_log(EVDNS_LOG_DEBUG, "Setting randomize_case to %d", randcase);
- global_randomize_case = randcase;
- }
- return 0;
-}
-
-static void
-resolv_conf_parse_line(char *const start, int flags) {
- char *strtok_state;
- static const char *const delims = " \t";
-#define NEXT_TOKEN tor_strtok_r(NULL, delims, &strtok_state)
-
- char *const first_token = tor_strtok_r(start, delims, &strtok_state);
- if (!first_token) return;
-
- if (!strcmp(first_token, "nameserver") && (flags & DNS_OPTION_NAMESERVERS)) {
- const char *const nameserver = NEXT_TOKEN;
- if (nameserver)
- evdns_nameserver_ip_add(nameserver);
- } else if (!strcmp(first_token, "domain") && (flags & DNS_OPTION_SEARCH)) {
- const char *const domain = NEXT_TOKEN;
- if (domain) {
- search_postfix_clear();
- search_postfix_add(domain);
- }
- } else if (!strcmp(first_token, "search") && (flags & DNS_OPTION_SEARCH)) {
- const char *domain;
- search_postfix_clear();
-
- while ((domain = NEXT_TOKEN)) {
- search_postfix_add(domain);
- }
- search_reverse();
- } else if (!strcmp(first_token, "options")) {
- const char *option;
- while ((option = NEXT_TOKEN)) {
- const char *val = strchr(option, ':');
- evdns_set_option(option, val ? val+1 : "", flags);
- }
- }
-#undef NEXT_TOKEN
-}
-
-/* exported function */
-/* returns: */
-/* 0 no errors */
-/* 1 failed to open file */
-/* 2 failed to stat file */
-/* 3 file too large */
-/* 4 out of memory */
-/* 5 short read from file */
-int
-evdns_resolv_conf_parse(int flags, const char *const filename) {
- struct stat st;
- int fd, n, r;
- u8 *resolv;
- char *start;
- int err = 0;
-
- evdns_log(EVDNS_LOG_DEBUG, "Parsing resolv.conf file %s", filename);
-
- fd = tor_open_cloexec(filename, O_RDONLY, 0);
- if (fd < 0) {
- evdns_resolv_set_defaults(flags);
- return 1;
- }
-
- if (fstat(fd, &st)) { err = 2; goto out1; }
- if (!st.st_size) {
- evdns_resolv_set_defaults(flags);
- err = (flags & DNS_OPTION_NAMESERVERS) ? 6 : 0;
- goto out1;
- }
- if (st.st_size > 65535) { err = 3; goto out1; } /* no resolv.conf should be any bigger */
-
- resolv = (u8 *) mm_malloc((size_t)st.st_size + 1);
- if (!resolv) { err = 4; goto out1; }
-
- n = 0;
- while ((r = (int)read(fd, resolv+n, (size_t)st.st_size-n)) > 0) {
- n += r;
- if (n == st.st_size)
- break;
- assert(n < st.st_size);
- }
- if (r < 0) { err = 5; goto out2; }
- resolv[n] = 0; /* we malloced an extra byte; this should be fine. */
-
- start = (char *) resolv;
- for (;;) {
- char *const newline = strchr(start, '\n');
- if (!newline) {
- resolv_conf_parse_line(start, flags);
- break;
- } else {
- *newline = 0;
- resolv_conf_parse_line(start, flags);
- start = newline + 1;
- }
- }
-
- if (!server_head && (flags & DNS_OPTION_NAMESERVERS)) {
- /* no nameservers were configured. */
- evdns_nameserver_ip_add("127.0.0.1");
- err = 6;
- }
- if (flags & DNS_OPTION_SEARCH && (!global_search_state || global_search_state->num_domains == 0)) {
- search_set_from_hostname();
- }
-
-out2:
- mm_free(resolv);
-out1:
- close(fd);
- return err;
-}
-
-#ifdef _WIN32
-/* Add multiple nameservers from a space-or-comma-separated list. */
-static int
-evdns_nameserver_ip_add_line(const char *ips) {
- const char *addr;
- char *buf;
- int r;
- while (*ips) {
- while (ISSPACE(*ips) || *ips == ',' || *ips == '\t')
- ++ips;
- addr = ips;
- while (ISDIGIT(*ips) || *ips == '.' || *ips == ':' || *ips == '[' || *ips == ']')
- ++ips;
- buf = mm_malloc(ips-addr+1);
- if (!buf) return 4;
- memcpy(buf, addr, ips-addr);
- buf[ips-addr] = '\0';
- r = evdns_nameserver_ip_add(buf);
- mm_free(buf);
- if (r) return r;
- }
- return 0;
-}
-
-typedef DWORD(WINAPI *GetNetworkParams_fn_t)(FIXED_INFO *, DWORD*);
-
-/* Use the windows GetNetworkParams interface in iphlpapi.dll to */
-/* figure out what our nameservers are. */
-static int
-load_nameservers_with_getnetworkparams(void)
-{
- /* Based on MSDN examples and inspection of c-ares code. */
- FIXED_INFO *fixed;
- HMODULE handle = 0;
- ULONG size = sizeof(FIXED_INFO);
- void *buf = NULL;
- int status = 0, r, added_any;
- IP_ADDR_STRING *ns;
- GetNetworkParams_fn_t fn;
-
- if (!(handle = load_windows_system_library(TEXT("iphlpapi.dll")))) {
- evdns_log(EVDNS_LOG_WARN, "Could not open iphlpapi.dll");
- /* right now status = 0, doesn't that mean "good" - mikec */
- status = -1;
- goto done;
- }
- if (!(fn = (GetNetworkParams_fn_t) GetProcAddress(handle, TEXT("GetNetworkParams")))) {
- evdns_log(EVDNS_LOG_WARN, "Could not get address of function.");
- /* same as above */
- status = -1;
- goto done;
- }
-
- buf = mm_malloc(size);
- if (!buf) { status = 4; goto done; }
- fixed = buf;
- r = fn(fixed, &size);
- if (r != ERROR_SUCCESS && r != ERROR_BUFFER_OVERFLOW) {
- status = -1;
- goto done;
- }
- if (r != ERROR_SUCCESS) {
- mm_free(buf);
- buf = mm_malloc(size);
- if (!buf) { status = 4; goto done; }
- fixed = buf;
- r = fn(fixed, &size);
- if (r != ERROR_SUCCESS) {
- evdns_log(EVDNS_LOG_DEBUG, "fn() failed.");
- status = -1;
- goto done;
- }
- }
-
- assert(fixed);
- added_any = 0;
- ns = &(fixed->DnsServerList);
- while (ns) {
- r = evdns_nameserver_ip_add_line(ns->IpAddress.String);
- if (r) {
- evdns_log(EVDNS_LOG_DEBUG,"Could not add nameserver %s to list, "
- "error: %d; status: %d",
- (ns->IpAddress.String),(int)GetLastError(), r);
- status = r;
- } else {
- evdns_log(EVDNS_LOG_DEBUG,"Successfully added %s as nameserver",ns->IpAddress.String);
- added_any++;
- }
-
- ns = ns->Next;
- }
-
- if (!added_any) {
- evdns_log(EVDNS_LOG_DEBUG, "No nameservers added.");
- if (status == 0)
- status = -1;
- } else {
- status = 0;
- }
-
- done:
- if (buf)
- mm_free(buf);
- if (handle)
- FreeLibrary(handle);
- return status;
-}
-
-static int
-config_nameserver_from_reg_key(HKEY key, const TCHAR *subkey)
-{
- char *buf;
- char ansibuf[MAX_PATH] = {0};
- DWORD bufsz = 0, type = 0;
- int status = 0;
-
- if (RegQueryValueEx(key, subkey, 0, &type, NULL, &bufsz)
- != ERROR_MORE_DATA)
- return -1;
- if (!(buf = mm_malloc(bufsz)))
- return -1;
-
- if (RegQueryValueEx(key, subkey, 0, &type, (LPBYTE)buf, &bufsz)
- == ERROR_SUCCESS && bufsz > 1) {
- wcstombs(ansibuf,(wchar_t*)buf,MAX_PATH);/*XXXX UNICODE */
- abuf[MAX_PATH-1] = '\0';
- status = evdns_nameserver_ip_add_line(ansibuf);
- }
-
- mm_free(buf);
- return status;
-}
-
-#define SERVICES_KEY TEXT("System\\CurrentControlSet\\Services\\")
-#define WIN_NS_9X_KEY SERVICES_KEY TEXT("VxD\\MSTCP")
-#define WIN_NS_NT_KEY SERVICES_KEY TEXT("Tcpip\\Parameters")
-
-static int
-load_nameservers_from_registry(void)
-{
- int found = 0;
- int r;
- OSVERSIONINFO info;
- memset(&info, 0, sizeof(info));
- info.dwOSVersionInfoSize = sizeof (info);
- GetVersionEx(&info);
-
-#define TRY(k, name) \
- if (!found && config_nameserver_from_reg_key(k,TEXT(name)) == 0) { \
- evdns_log(EVDNS_LOG_DEBUG,"Found nameservers in %s/%s",#k,name); \
- found = 1; \
- } else if (!found) { \
- evdns_log(EVDNS_LOG_DEBUG,"Didn't find nameservers in %s/%s", \
- #k,#name); \
- }
-
- if (info.dwMajorVersion >= 5) { /* NT */
- HKEY nt_key = 0, interfaces_key = 0;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
- KEY_READ, &nt_key) != ERROR_SUCCESS) {
- evdns_log(EVDNS_LOG_DEBUG,"Couldn't open nt key, %d",(int)GetLastError());
- return -1;
- }
- r = RegOpenKeyEx(nt_key, TEXT("Interfaces"), 0,
- KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS,
- &interfaces_key);
- if (r != ERROR_SUCCESS) {
- evdns_log(EVDNS_LOG_DEBUG,"Couldn't open interfaces key, %d",(int)GetLastError());
- return -1;
- }
- TRY(nt_key, "NameServer");
- TRY(nt_key, "DhcpNameServer");
- TRY(interfaces_key, "NameServer");
- TRY(interfaces_key, "DhcpNameServer");
- RegCloseKey(interfaces_key);
- RegCloseKey(nt_key);
- } else {
- HKEY win_key = 0;
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_9X_KEY, 0,
- KEY_READ, &win_key) != ERROR_SUCCESS) {
- evdns_log(EVDNS_LOG_DEBUG, "Couldn't open registry key, %d", (int)GetLastError());
- return -1;
- }
- TRY(win_key, "NameServer");
- RegCloseKey(win_key);
- }
-
- if (found == 0) {
- evdns_log(EVDNS_LOG_WARN,"Didn't find any nameservers.");
- }
-
- return found ? 0 : -1;
-#undef TRY
-}
-
-int
-evdns_config_windows_nameservers(void)
-{
- if (load_nameservers_with_getnetworkparams() == 0)
- return 0;
- return load_nameservers_from_registry();
-}
-#endif
-
-int
-evdns_init(void)
-{
- int res = 0;
-#ifdef _WIN32
- evdns_config_windows_nameservers();
-#else
- res = evdns_resolv_conf_parse(DNS_OPTIONS_ALL, "/etc/resolv.conf");
-#endif
-
- return (res);
-}
-
-const char *
-evdns_err_to_string(int err)
-{
- switch (err) {
- case DNS_ERR_NONE: return "no error";
- case DNS_ERR_FORMAT: return "misformatted query";
- case DNS_ERR_SERVERFAILED: return "server failed";
- case DNS_ERR_NOTEXIST: return "name does not exist";
- case DNS_ERR_NOTIMPL: return "query not implemented";
- case DNS_ERR_REFUSED: return "refused";
-
- case DNS_ERR_TRUNCATED: return "reply truncated or ill-formed";
- case DNS_ERR_UNKNOWN: return "unknown";
- case DNS_ERR_TIMEOUT: return "request timed out";
- case DNS_ERR_SHUTDOWN: return "dns subsystem shut down";
- default: return "[Unknown error code]";
- }
-}
-
-void
-evdns_shutdown(int fail_requests)
-{
- struct nameserver *server, *server_next;
- struct search_domain *dom, *dom_next;
-
- while (req_head) {
- if (fail_requests)
- reply_callback(req_head, 0, DNS_ERR_SHUTDOWN, NULL);
- request_finished(req_head, &req_head);
- }
- while (req_waiting_head) {
- if (fail_requests)
- reply_callback(req_waiting_head, 0, DNS_ERR_SHUTDOWN, NULL);
- request_finished(req_waiting_head, &req_waiting_head);
- }
- global_requests_inflight = global_requests_waiting = 0;
-
- for (server = server_head; server; server = server_next) {
- server_next = server->next;
- if (server->socket >= 0)
- CLOSE_SOCKET(server->socket);
- (void) event_del(&server->event);
- del_timeout_event(server);
- CLEAR(server);
- mm_free(server);
- if (server_next == server_head)
- break;
- }
- server_head = NULL;
- global_good_nameservers = 0;
-
- if (global_search_state) {
- for (dom = global_search_state->head; dom; dom = dom_next) {
- dom_next = dom->next;
- CLEAR(dom);
- mm_free(dom);
- }
- CLEAR(global_search_state);
- mm_free(global_search_state);
- global_search_state = NULL;
- }
- evdns_log_fn = NULL;
-}
-
-#ifdef EVDNS_MAIN
-void
-main_callback(int result, char type, int count, int ttl,
- void *addrs, void *orig) {
- char *n = (char*)orig;
- int i;
- for (i = 0; i < count; ++i) {
- if (type == DNS_IPv4_A) {
- printf("%s: %s\n", n, debug_ntoa(((u32*)addrs)[i]));
- } else if (type == DNS_PTR) {
- printf("%s: %s\n", n, ((char**)addrs)[i]);
- }
- }
- if (!count) {
- printf("%s: No answer (%d)\n", n, result);
- }
- fflush(stdout);
-}
-void
-evdns_server_callback(struct evdns_server_request *req, void *data)
-{
- int i, r;
- (void)data;
- /* dummy; give 192.168.11.11 as an answer for all A questions,
- * give foo.bar.example.com as an answer for all PTR questions. */
- for (i = 0; i < req->nquestions; ++i) {
- u32 ans = htonl(0xc0a80b0bUL);
- if (req->questions[i]->type == EVDNS_TYPE_A &&
- req->questions[i]->dns_question_class == EVDNS_CLASS_INET) {
- printf(" -- replying for %s (A)\n", req->questions[i]->name);
- r = evdns_server_request_add_a_reply(req, req->questions[i]->name,
- 1, &ans, 10);
- if (r<0)
- printf("eeep, didn't work.\n");
- } else if (req->questions[i]->type == EVDNS_TYPE_PTR &&
- req->questions[i]->dns_question_class == EVDNS_CLASS_INET) {
- printf(" -- replying for %s (PTR)\n", req->questions[i]->name);
- r = evdns_server_request_add_ptr_reply(req, NULL, req->questions[i]->name,
- "foo.bar.example.com", 10);
- } else {
- printf(" -- skipping %s [%d %d]\n", req->questions[i]->name,
- req->questions[i]->type, req->questions[i]->dns_question_class);
- }
- }
-
- r = evdns_server_request_respond(req, 0);
- if (r<0)
- printf("eeek, couldn't send reply.\n");
-}
-
-void
-logfn(int is_warn, const char *msg) {
- (void) is_warn;
- fprintf(stderr, "%s\n", msg);
-}
-int
-main(int c, char **v) {
- int idx;
- int reverse = 0, verbose = 1, servertest = 0;
- if (c<2) {
- fprintf(stderr, "syntax: %s [-x] [-v] hostname\n", v[0]);
- fprintf(stderr, "syntax: %s [-servertest]\n", v[0]);
- return 1;
- }
- idx = 1;
- while (idx < c && v[idx][0] == '-') {
- if (!strcmp(v[idx], "-x"))
- reverse = 1;
- else if (!strcmp(v[idx], "-v"))
- verbose = 1;
- else if (!strcmp(v[idx], "-servertest"))
- servertest = 1;
- else
- fprintf(stderr, "Unknown option %s\n", v[idx]);
- ++idx;
- }
- event_init();
- if (verbose)
- evdns_set_log_fn(logfn);
- evdns_resolv_conf_parse(DNS_OPTION_NAMESERVERS, "/etc/resolv.conf");
- if (servertest) {
- int sock;
- struct sockaddr_in my_addr;
-#if 1
- sock = tor_open_socket_nonblocking(PF_INET, SOCK_DGRAM, 0)
-#else
- sock = tor_open_socket(PF_INET, SOCK_DGRAM, 0);
- fcntl(sock, F_SETFL, O_NONBLOCK);
-#endif
- my_addr.sin_family = AF_INET;
- my_addr.sin_port = htons(10053);
- my_addr.sin_addr.s_addr = INADDR_ANY;
- if (bind(sock, (struct sockaddr*)&my_addr, sizeof(my_addr))<0) {
- perror("bind");
- exit(1);
- }
- evdns_add_server_port(sock, 0, evdns_server_callback, NULL);
- }
- for (; idx < c; ++idx) {
- if (reverse) {
- struct in_addr addr;
- if (!inet_aton(v[idx], &addr)) {
- fprintf(stderr, "Skipping non-IP %s\n", v[idx]);
- continue;
- }
- fprintf(stderr, "resolving %s...\n",v[idx]);
- evdns_resolve_reverse(&addr, 0, main_callback, v[idx]);
- } else {
- fprintf(stderr, "resolving (fwd) %s...\n",v[idx]);
- evdns_resolve_ipv4(v[idx], 0, main_callback, v[idx]);
- }
- }
- fflush(stdout);
- event_dispatch();
- return 0;
-}
-#endif
-
-/* Local Variables: */
-/* tab-width: 4 */
-/* c-basic-offset: 4 */
-/* indent-tabs-mode: t */
-/* End: */
-
diff --git a/src/ext/eventdns.h b/src/ext/eventdns.h
deleted file mode 100644
index ad8c100dd6..0000000000
--- a/src/ext/eventdns.h
+++ /dev/null
@@ -1,337 +0,0 @@
-
-/*
- * The original DNS code is due to Adam Langley with heavy
- * modifications by Nick Mathewson. Adam put his DNS software in the
- * public domain. You can find his original copyright below. Please,
- * aware that the code as part of libevent is governed by the 3-clause
- * BSD license above.
- *
- * This software is Public Domain. To view a copy of the public domain dedication,
- * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to
- * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
- *
- * I ask and expect, but do not require, that all derivative works contain an
- * attribution similar to:
- * Parts developed by Adam Langley <agl@imperialviolet.org>
- *
- * You may wish to replace the word "Parts" with something else depending on
- * the amount of original code.
- *
- * (Derivative works does not include programs which link against, run or include
- * the source verbatim in their source distributions)
- */
-
-/*
- * Welcome, gentle reader
- *
- * Async DNS lookups are really a whole lot harder than they should be,
- * mostly stemming from the fact that the libc resolver has never been
- * very good at them. Before you use this library you should see if libc
- * can do the job for you with the modern async call getaddrinfo_a
- * (see http://www.imperialviolet.org/page25.html#e498). Otherwise,
- * please continue.
- *
- * This code is based on libevent and you must call event_init before
- * any of the APIs in this file. You must also seed the OpenSSL random
- * source if you are using OpenSSL for ids (see below).
- *
- * This library is designed to be included and shipped with your source
- * code. You statically link with it. You should also test for the
- * existence of strtok_r and define HAVE_STRTOK_R if you have it.
- *
- * The DNS protocol requires a good source of id numbers and these
- * numbers should be unpredictable for spoofing reasons. There are
- * three methods for generating them here and you must define exactly
- * one of them. In increasing order of preference:
- *
- * DNS_USE_GETTIMEOFDAY_FOR_ID:
- * Using the bottom 16 bits of the usec result from gettimeofday. This
- * is a pretty poor solution but should work anywhere.
- * DNS_USE_CPU_CLOCK_FOR_ID:
- * Using the bottom 16 bits of the nsec result from the CPU's time
- * counter. This is better, but may not work everywhere. Requires
- * POSIX realtime support and you'll need to link against -lrt on
- * glibc systems at least.
- * DNS_USE_OPENSSL_FOR_ID:
- * Uses the OpenSSL RAND_bytes call to generate the data. You must
- * have seeded the pool before making any calls to this library.
- *
- * The library keeps track of the state of nameservers and will avoid
- * them when they go down. Otherwise it will round robin between them.
- *
- * Quick start guide:
- * #include "evdns.h"
- * void callback(int result, char type, int count, int ttl,
- * void *addresses, void *arg);
- * evdns_resolv_conf_parse(DNS_OPTIONS_ALL, "/etc/resolv.conf");
- * evdns_resolve("www.hostname.com", 0, callback, NULL);
- *
- * When the lookup is complete the callback function is called. The
- * first argument will be one of the DNS_ERR_* defines in evdns.h.
- * Hopefully it will be DNS_ERR_NONE, in which case type will be
- * DNS_IPv4_A, count will be the number of IP addresses, ttl is the time
- * which the data can be cached for (in seconds), addresses will point
- * to an array of uint32_t's and arg will be whatever you passed to
- * evdns_resolve.
- *
- * Searching:
- *
- * In order for this library to be a good replacement for glibc's resolver it
- * supports searching. This involves setting a list of default domains, in
- * which names will be queried for. The number of dots in the query name
- * determines the order in which this list is used.
- *
- * Searching appears to be a single lookup from the point of view of the API,
- * although many DNS queries may be generated from a single call to
- * evdns_resolve. Searching can also drastically slow down the resolution
- * of names.
- *
- * To disable searching:
- * 1. Never set it up. If you never call evdns_resolv_conf_parse or
- * evdns_search_add then no searching will occur.
- *
- * 2. If you do call evdns_resolv_conf_parse then don't pass
- * DNS_OPTION_SEARCH (or DNS_OPTIONS_ALL, which implies it).
- *
- * 3. When calling evdns_resolve, pass the DNS_QUERY_NO_SEARCH flag.
- *
- * The order of searches depends on the number of dots in the name. If the
- * number is greater than the ndots setting then the names is first tried
- * globally. Otherwise each search domain is appended in turn.
- *
- * The ndots setting can either be set from a resolv.conf, or by calling
- * evdns_search_ndots_set.
- *
- * For example, with ndots set to 1 (the default) and a search domain list of
- * ["myhome.net"]:
- * Query: www
- * Order: www.myhome.net, www.
- *
- * Query: www.abc
- * Order: www.abc., www.abc.myhome.net
- *
- * API reference:
- *
- * int evdns_nameserver_add(uint32_t address)
- * Add a nameserver. The address should be an IP address in
- * network byte order. The type of address is chosen so that
- * it matches in_addr.s_addr.
- * Returns non-zero on error.
- *
- * int evdns_nameserver_ip_add(const char *ip_as_string)
- * This wraps the above function by parsing a string as an IP
- * address and adds it as a nameserver.
- * Returns non-zero on error
- *
- * int evdns_resolve(const char *name, int flags,
- * evdns_callback_type callback,
- * void *ptr)
- * Resolve a name. The name parameter should be a DNS name.
- * The flags parameter should be 0, or DNS_QUERY_NO_SEARCH
- * which disables searching for this query. (see defn of
- * searching above).
- *
- * The callback argument is a function which is called when
- * this query completes and ptr is an argument which is passed
- * to that callback function.
- *
- * Returns non-zero on error
- *
- * void evdns_search_clear()
- * Clears the list of search domains
- *
- * void evdns_search_add(const char *domain)
- * Add a domain to the list of search domains
- *
- * void evdns_search_ndots_set(int ndots)
- * Set the number of dots which, when found in a name, causes
- * the first query to be without any search domain.
- *
- * int evdns_count_nameservers(void)
- * Return the number of configured nameservers (not necessarily the
- * number of running nameservers). This is useful for double-checking
- * whether our calls to the various nameserver configuration functions
- * have been successful.
- *
- * int evdns_clear_nameservers_and_suspend(void)
- * Remove all currently configured nameservers, and suspend all pending
- * resolves. Resolves will not necessarily be re-attempted until
- * evdns_resume() is called.
- *
- * int evdns_resume(void)
- * Re-attempt resolves left in limbo after an earlier call to
- * evdns_clear_nameservers_and_suspend().
- *
- * int evdns_config_windows_nameservers(void)
- * Attempt to configure a set of nameservers based on platform settings on
- * a win32 host. Preferentially tries to use GetNetworkParams; if that fails,
- * looks in the registry. Returns 0 on success, nonzero on failure.
- *
- * int evdns_resolv_conf_parse(int flags, const char *filename)
- * Parse a resolv.conf like file from the given filename.
- *
- * See the man page for resolv.conf for the format of this file.
- * The flags argument determines what information is parsed from
- * this file:
- * DNS_OPTION_SEARCH - domain, search and ndots options
- * DNS_OPTION_NAMESERVERS - nameserver lines
- * DNS_OPTION_MISC - timeout and attempts options
- * DNS_OPTIONS_ALL - all of the above
- * The following directives are not parsed from the file:
- * sortlist, rotate, no-check-names, inet6, debug
- *
- * Returns non-zero on error:
- * 0 no errors
- * 1 failed to open file
- * 2 failed to stat file
- * 3 file too large
- * 4 out of memory
- * 5 short read from file
- * 6 no nameservers in file
- *
- * Internals:
- *
- * Requests are kept in two queues. The first is the inflight queue. In
- * this queue requests have an allocated transaction id and nameserver.
- * They will soon be transmitted if they haven't already been.
- *
- * The second is the waiting queue. The size of the inflight ring is
- * limited and all other requests wait in waiting queue for space. This
- * bounds the number of concurrent requests so that we don't flood the
- * nameserver. Several algorithms require a full walk of the inflight
- * queue and so bounding its size keeps thing going nicely under huge
- * (many thousands of requests) loads.
- *
- * If a nameserver loses too many requests it is considered down and we
- * try not to use it. After a while we send a probe to that nameserver
- * (a lookup for google.com) and, if it replies, we consider it working
- * again. If the nameserver fails a probe we wait longer to try again
- * with the next probe.
- */
-
-#ifndef TOR_EVENTDNS_H
-#define TOR_EVENTDNS_H
-
-/* Error codes 0-5 are as described in RFC 1035. */
-#define DNS_ERR_NONE 0
-/* The name server was unable to interpret the query */
-#define DNS_ERR_FORMAT 1
-/* The name server was unable to process this query due to a problem with the
- * name server */
-#define DNS_ERR_SERVERFAILED 2
-/* The domain name does not exist */
-#define DNS_ERR_NOTEXIST 3
-/* The name server does not support the requested kind of query */
-#define DNS_ERR_NOTIMPL 4
-/* The name server refuses to reform the specified operation for policy
- * reasons */
-#define DNS_ERR_REFUSED 5
-/* The reply was truncated or ill-formated */
-#define DNS_ERR_TRUNCATED 65
-/* An unknown error occurred */
-#define DNS_ERR_UNKNOWN 66
-/* Communication with the server timed out */
-#define DNS_ERR_TIMEOUT 67
-/* The request was canceled because the DNS subsystem was shut down. */
-#define DNS_ERR_SHUTDOWN 68
-
-#define DNS_IPv4_A 1
-#define DNS_PTR 2
-#define DNS_IPv6_AAAA 3
-
-#define DNS_QUERY_NO_SEARCH 1
-
-#define DNS_OPTION_SEARCH 1
-#define DNS_OPTION_NAMESERVERS 2
-#define DNS_OPTION_MISC 4
-#define DNS_OPTIONS_ALL 7
-
-/*
- * The callback that contains the results from a lookup.
- * - type is either DNS_IPv4_A or DNS_IPv6_AAAA or DNS_PTR
- * - count contains the number of addresses of form type
- * - ttl is the number of seconds the resolution may be cached for.
- * - addresses needs to be cast according to type
- */
-typedef void (*evdns_callback_type) (int result, char type, int count, int ttl, void *addresses, void *arg);
-
-int evdns_init(void);
-void evdns_shutdown(int fail_requests);
-const char *evdns_err_to_string(int err);
-int evdns_nameserver_add(uint32_t address);
-int evdns_count_nameservers(void);
-int evdns_clear_nameservers_and_suspend(void);
-int evdns_resume(void);
-int evdns_nameserver_ip_add(const char *ip_as_string);
-int evdns_nameserver_sockaddr_add(const struct sockaddr *sa, socklen_t len);
-void evdns_set_default_outgoing_bind_address(const struct sockaddr *addr, socklen_t addrlen);
-int evdns_resolve_ipv4(const char *name, int flags, evdns_callback_type callback, void *ptr);
-int evdns_resolve_ipv6(const char *name, int flags, evdns_callback_type callback, void *ptr);
-struct in_addr;
-struct in6_addr;
-int evdns_resolve_reverse(const struct in_addr *in, int flags, evdns_callback_type callback, void *ptr);
-int evdns_resolve_reverse_ipv6(const struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr);
-int evdns_set_option(const char *option, const char *val, int flags);
-int evdns_resolv_conf_parse(int flags, const char *);
-#ifdef _WIN32
-int evdns_config_windows_nameservers(void);
-#endif
-void evdns_search_clear(void);
-void evdns_search_add(const char *domain);
-void evdns_search_ndots_set(const int ndots);
-
-typedef void (*evdns_debug_log_fn_type)(int is_warning, const char *msg);
-void evdns_set_log_fn(evdns_debug_log_fn_type fn);
-
-void evdns_set_transaction_id_fn(uint16_t (*fn)(void));
-void evdns_set_random_bytes_fn(void (*fn)(char *, size_t));
-
-#define DNS_NO_SEARCH 1
-
-/* Structures and functions used to implement a DNS server. */
-
-struct evdns_server_request {
- int flags;
- int nquestions;
- struct evdns_server_question **questions;
-};
-struct evdns_server_question {
- int type;
- int dns_question_class;
- char name[1];
-};
-typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, void *);
-#define EVDNS_ANSWER_SECTION 0
-#define EVDNS_AUTHORITY_SECTION 1
-#define EVDNS_ADDITIONAL_SECTION 2
-
-#define EVDNS_TYPE_A 1
-#define EVDNS_TYPE_NS 2
-#define EVDNS_TYPE_CNAME 5
-#define EVDNS_TYPE_SOA 6
-#define EVDNS_TYPE_PTR 12
-#define EVDNS_TYPE_MX 15
-#define EVDNS_TYPE_TXT 16
-#define EVDNS_TYPE_AAAA 28
-
-#define EVDNS_QTYPE_AXFR 252
-#define EVDNS_QTYPE_ALL 255
-
-#define EVDNS_CLASS_INET 1
-
-struct evdns_server_port *evdns_add_server_port(tor_socket_t socket, int is_tcp, evdns_request_callback_fn_type callback, void *user_data);
-void evdns_close_server_port(struct evdns_server_port *port);
-
-int evdns_server_request_add_reply(struct evdns_server_request *req, int section, const char *name, int type, int class, int ttl, int datalen, int is_name, const char *data);
-int evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl);
-int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, const void *addrs, int ttl);
-int evdns_server_request_add_ptr_reply(struct evdns_server_request *req, struct in_addr *in, const char *inaddr_name, const char *hostname, int ttl);
-int evdns_server_request_add_cname_reply(struct evdns_server_request *req, const char *name, const char *cname, int ttl);
-
-struct sockaddr;
-int evdns_server_request_get_requesting_addr(struct evdns_server_request *req, struct sockaddr *sa, int addr_len);
-
-int evdns_server_request_respond(struct evdns_server_request *req, int err);
-int evdns_server_request_drop(struct evdns_server_request *req);
-
-#endif // !EVENTDNS_H
diff --git a/src/ext/include.am b/src/ext/include.am
index 6cfdbcc447..f00f3e031e 100644
--- a/src/ext/include.am
+++ b/src/ext/include.am
@@ -5,7 +5,6 @@ EXTRA_DIST += src/ext/README
EXTHEADERS = \
src/ext/ht.h \
- src/ext/eventdns.h \
src/ext/tinytest.h \
src/ext/tor_readpassphrase.h \
src/ext/strlcat.c \
diff --git a/src/or/buffers.c b/src/or/buffers.c
index 8b9a53c699..970d17ee41 100644
--- a/src/or/buffers.c
+++ b/src/or/buffers.c
@@ -405,7 +405,7 @@ static chunk_t *
buf_add_chunk_with_capacity(buf_t *buf, size_t capacity, int capped)
{
chunk_t *chunk;
- struct timeval now;
+
if (CHUNK_ALLOC_SIZE(capacity) < buf->default_chunk_size) {
chunk = chunk_new_with_alloc_size(buf->default_chunk_size);
} else if (capped && CHUNK_ALLOC_SIZE(capacity) > MAX_CHUNK_ALLOC) {
@@ -414,8 +414,7 @@ buf_add_chunk_with_capacity(buf_t *buf, size_t capacity, int capped)
chunk = chunk_new_with_alloc_size(preferred_chunk_size(capacity));
}
- tor_gettimeofday_cached_monotonic(&now);
- chunk->inserted_time = (uint32_t)tv_to_msec(&now);
+ chunk->inserted_time = (uint32_t)monotime_coarse_absolute_msec();
if (buf->tail) {
tor_assert(buf->head);
@@ -430,8 +429,8 @@ buf_add_chunk_with_capacity(buf_t *buf, size_t capacity, int capped)
}
/** Return the age of the oldest chunk in the buffer <b>buf</b>, in
- * milliseconds. Requires the current time, in truncated milliseconds since
- * the epoch, as its input <b>now</b>.
+ * milliseconds. Requires the current monotonic time, in truncated msec,
+ * as its input <b>now</b>.
*/
uint32_t
buf_get_oldest_chunk_timestamp(const buf_t *buf, uint32_t now)
diff --git a/src/or/circuitlist.c b/src/or/circuitlist.c
index d2ba7d4781..5c691644a4 100644
--- a/src/or/circuitlist.c
+++ b/src/or/circuitlist.c
@@ -2015,7 +2015,7 @@ circuit_max_queued_cell_age(const circuit_t *c, uint32_t now)
/** Return the age in milliseconds of the oldest buffer chunk on <b>conn</b>,
* where age is taken in milliseconds before the time <b>now</b> (in truncated
- * milliseconds since the epoch). If the connection has no data, treat
+ * absolute monotonic msec). If the connection has no data, treat
* it as having age zero.
**/
static uint32_t
@@ -2138,7 +2138,6 @@ circuits_handle_oom(size_t current_allocation)
size_t mem_recovered=0;
int n_circuits_killed=0;
int n_dirconns_killed=0;
- struct timeval now;
uint32_t now_ms;
log_notice(LD_GENERAL, "We're low on memory. Killing circuits with "
"over-long queues. (This behavior is controlled by "
@@ -2152,8 +2151,7 @@ circuits_handle_oom(size_t current_allocation)
mem_to_recover = current_allocation - mem_target;
}
- tor_gettimeofday_cached_monotonic(&now);
- now_ms = (uint32_t)tv_to_msec(&now);
+ now_ms = (uint32_t)monotime_coarse_absolute_msec();
circlist = circuit_get_global_list();
SMARTLIST_FOREACH_BEGIN(circlist, circuit_t *, circ) {
diff --git a/src/or/config.c b/src/or/config.c
index 8b471f6800..fb2ab5ae1b 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -244,6 +244,7 @@ static config_var_t option_vars_[] = {
V(ExitNodes, ROUTERSET, NULL),
V(ExitPolicy, LINELIST, NULL),
V(ExitPolicyRejectPrivate, BOOL, "1"),
+ V(ExitPolicyRejectLocalInterfaces, BOOL, "0"),
V(ExitPortStatistics, BOOL, "0"),
V(ExtendAllowPrivateAddresses, BOOL, "0"),
V(ExitRelay, AUTOBOOL, "auto"),
@@ -4316,6 +4317,8 @@ options_transition_affects_descriptor(const or_options_t *old_options,
old_options->ExitRelay != new_options->ExitRelay ||
old_options->ExitPolicyRejectPrivate !=
new_options->ExitPolicyRejectPrivate ||
+ old_options->ExitPolicyRejectLocalInterfaces !=
+ new_options->ExitPolicyRejectLocalInterfaces ||
old_options->IPv6Exit != new_options->IPv6Exit ||
!config_lines_eq(old_options->ORPort_lines,
new_options->ORPort_lines) ||
@@ -7198,8 +7201,6 @@ init_libevent(const or_options_t *options)
*/
suppress_libevent_log_msg("Function not implemented");
- tor_check_libevent_header_compatibility();
-
memset(&cfg, 0, sizeof(cfg));
cfg.disable_iocp = options->DisableIOCP;
cfg.num_cpus = get_num_cpus(options);
diff --git a/src/or/control.c b/src/or/control.c
index 82adc957c3..0c4bcbd31c 100644
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -51,11 +51,7 @@
#include <sys/resource.h>
#endif
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#include "crypto_s2k.h"
#include "procmon.h"
@@ -3027,7 +3023,7 @@ static const getinfo_item_t getinfo_items[] = {
" ExitPolicyRejectPrivate."),
ITEM("exit-policy/reject-private/relay", policies,
"The relay-specific rules appended to the configured exit policy by"
- " ExitPolicyRejectPrivate."),
+ " ExitPolicyRejectPrivate and/or ExitPolicyRejectLocalInterfaces."),
ITEM("exit-policy/full", policies, "The entire exit policy of onion router"),
ITEM("exit-policy/ipv4", policies, "IPv4 parts of exit policy"),
ITEM("exit-policy/ipv6", policies, "IPv6 parts of exit policy"),
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c
index 3109d5a177..2e76ea5b78 100644
--- a/src/or/cpuworker.c
+++ b/src/or/cpuworker.c
@@ -23,11 +23,7 @@
#include "router.h"
#include "workqueue.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
static void queue_pending_tasks(void);
diff --git a/src/or/dns.c b/src/or/dns.c
index c7adfbc971..aaffad77fc 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -27,61 +27,8 @@
#include "router.h"
#include "ht.h"
#include "sandbox.h"
-#ifdef HAVE_EVENT2_DNS_H
#include <event2/event.h>
#include <event2/dns.h>
-#else
-#include <event.h>
-#include "eventdns.h"
-#ifndef HAVE_EVDNS_SET_DEFAULT_OUTGOING_BIND_ADDRESS
-#define HAVE_EVDNS_SET_DEFAULT_OUTGOING_BIND_ADDRESS
-#endif
-#endif
-
-#ifndef HAVE_EVENT2_DNS_H
-struct evdns_base;
-struct evdns_request;
-#define evdns_base_new(x,y) tor_malloc(1)
-#define evdns_base_clear_nameservers_and_suspend(base) \
- evdns_clear_nameservers_and_suspend()
-#define evdns_base_search_clear(base) evdns_search_clear()
-#define evdns_base_set_default_outgoing_bind_address(base, a, len) \
- evdns_set_default_outgoing_bind_address((a),(len))
-#define evdns_base_resolv_conf_parse(base, options, fname) \
- evdns_resolv_conf_parse((options), (fname))
-#define evdns_base_count_nameservers(base) \
- evdns_count_nameservers()
-#define evdns_base_resume(base) \
- evdns_resume()
-#define evdns_base_config_windows_nameservers(base) \
- evdns_config_windows_nameservers()
-#define evdns_base_set_option_(base, opt, val) \
- evdns_set_option((opt),(val),DNS_OPTIONS_ALL)
-/* Note: our internal eventdns.c, plus Libevent 1.4, used a 1 return to
- * signify failure to launch a resolve. Libevent 2.0 uses a -1 return to
- * signify a failure on a resolve, though if we're on Libevent 2.0, we should
- * have event2/dns.h and never hit these macros. Regardless, 0 is success. */
-#define evdns_base_resolve_ipv4(base, addr, options, cb, ptr) \
- ((evdns_resolve_ipv4((addr), (options), (cb), (ptr))!=0) \
- ? NULL : ((void*)1))
-#define evdns_base_resolve_ipv6(base, addr, options, cb, ptr) \
- ((evdns_resolve_ipv6((addr), (options), (cb), (ptr))!=0) \
- ? NULL : ((void*)1))
-#define evdns_base_resolve_reverse(base, addr, options, cb, ptr) \
- ((evdns_resolve_reverse((addr), (options), (cb), (ptr))!=0) \
- ? NULL : ((void*)1))
-#define evdns_base_resolve_reverse_ipv6(base, addr, options, cb, ptr) \
- ((evdns_resolve_reverse_ipv6((addr), (options), (cb), (ptr))!=0) \
- ? NULL : ((void*)1))
-
-#elif defined(LIBEVENT_VERSION_NUMBER) && LIBEVENT_VERSION_NUMBER < 0x02000303
-#define evdns_base_set_option_(base, opt, val) \
- evdns_base_set_option((base), (opt),(val),DNS_OPTIONS_ALL)
-
-#else
-#define evdns_base_set_option_ evdns_base_set_option
-
-#endif
/** How long will we wait for an answer from the resolver before we decide
* that the resolver is wedged? */
@@ -1373,23 +1320,6 @@ configure_nameservers(int force)
}
}
-#ifdef HAVE_EVDNS_SET_DEFAULT_OUTGOING_BIND_ADDRESS
- if (! tor_addr_is_null(&options->OutboundBindAddressIPv4_)) {
- int socklen;
- struct sockaddr_storage ss;
- socklen = tor_addr_to_sockaddr(&options->OutboundBindAddressIPv4_, 0,
- (struct sockaddr *)&ss, sizeof(ss));
- if (socklen <= 0) {
- log_warn(LD_BUG, "Couldn't convert outbound bind address to sockaddr."
- " Ignoring.");
- } else {
- evdns_base_set_default_outgoing_bind_address(the_evdns_base,
- (struct sockaddr *)&ss,
- socklen);
- }
- }
-#endif
-
evdns_set_log_fn(evdns_log_cb);
if (conf_fname) {
log_debug(LD_FS, "stat()ing %s", conf_fname);
@@ -1454,7 +1384,7 @@ configure_nameservers(int force)
}
#endif
-#define SET(k,v) evdns_base_set_option_(the_evdns_base, (k), (v))
+#define SET(k,v) evdns_base_set_option(the_evdns_base, (k), (v))
if (evdns_base_count_nameservers(the_evdns_base) == 1) {
SET("max-timeouts:", "16");
diff --git a/src/or/dnsserv.c b/src/or/dnsserv.c
index edca50f6f9..6aab1e2c36 100644
--- a/src/or/dnsserv.c
+++ b/src/or/dnsserv.c
@@ -17,14 +17,10 @@
#include "control.h"
#include "main.h"
#include "policies.h"
-#ifdef HAVE_EVENT2_DNS_H
#include <event2/dns.h>
#include <event2/dns_compat.h>
/* XXXX this implies we want an improved evdns */
#include <event2/dns_struct.h>
-#else
-#include "eventdns.h"
-#endif
/** Helper function: called by evdns whenever the client sends a request to our
* DNSPort. We need to eventually answer the request <b>req</b>.
diff --git a/src/or/eventdns_tor.h b/src/or/eventdns_tor.h
deleted file mode 100644
index 5db09ae043..0000000000
--- a/src/or/eventdns_tor.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright (c) 2007-2016, The Tor Project, Inc. */
-/* See LICENSE for licensing information */
-
-#ifndef TOR_EVENTDNS_TOR_H
-#define TOR_EVENTDNS_TOR_H
-
-#include "orconfig.h"
-#define DNS_USE_OPENSSL_FOR_ID
-#ifndef HAVE_UINT
-typedef unsigned int uint;
-#endif
-#ifndef HAVE_U_CHAR
-typedef unsigned char u_char;
-#endif
-#include "torint.h"
-
-/* These are for debugging possible memory leaks. */
-#include "util.h"
-#include "compat.h"
-
-#endif
-
diff --git a/src/or/include.am b/src/or/include.am
index 744a507402..3988eefb94 100644
--- a/src/or/include.am
+++ b/src/or/include.am
@@ -17,12 +17,6 @@ endif
EXTRA_DIST+= src/or/ntmain.c src/or/Makefile.nmake
-if USE_EXTERNAL_EVDNS
-evdns_source=
-else
-evdns_source=src/ext/eventdns.c
-endif
-
LIBTOR_A_SOURCES = \
src/or/addressmap.c \
src/or/buffers.c \
@@ -86,7 +80,6 @@ LIBTOR_A_SOURCES = \
src/or/status.c \
src/or/torcert.c \
src/or/onion_ntor.c \
- $(evdns_source) \
$(tor_platform_source)
src_or_libtor_a_SOURCES = $(LIBTOR_A_SOURCES)
@@ -157,7 +150,6 @@ ORHEADERS = \
src/or/dns.h \
src/or/dns_structs.h \
src/or/dnsserv.h \
- src/or/eventdns_tor.h \
src/or/ext_orport.h \
src/or/fallback_dirs.inc \
src/or/fp_pair.h \
diff --git a/src/or/main.c b/src/or/main.c
index 4fc1498a98..76af910b3e 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -69,11 +69,7 @@
#include "memarea.h"
#include "sandbox.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#ifdef USE_BUFFEREVENTS
#include <event2/bufferevent.h>
@@ -2221,8 +2217,8 @@ ip_address_changed(int at_interface)
{
const or_options_t *options = get_options();
int server = server_mode(options);
- int exit_reject_private = (server && options->ExitRelay
- && options->ExitPolicyRejectPrivate);
+ int exit_reject_interfaces = (server && options->ExitRelay
+ && options->ExitPolicyRejectLocalInterfaces);
if (at_interface) {
if (! server) {
@@ -2240,8 +2236,8 @@ ip_address_changed(int at_interface)
}
/* Exit relays incorporate interface addresses in their exit policies when
- * ExitPolicyRejectPrivate is set */
- if (exit_reject_private || (server && !at_interface)) {
+ * ExitPolicyRejectLocalInterfaces is set */
+ if (exit_reject_interfaces || (server && !at_interface)) {
mark_my_descriptor_dirty("IP address changed");
}
@@ -3650,6 +3646,8 @@ tor_main(int argc, char *argv[])
#endif
}
+ monotime_init();
+
switch (get_options()->command) {
case CMD_RUN_TOR:
#ifdef NT_SERVICE
diff --git a/src/or/ntmain.c b/src/or/ntmain.c
index ded0e0d307..a1b886bb5a 100644
--- a/src/or/ntmain.c
+++ b/src/or/ntmain.c
@@ -16,11 +16,7 @@
#include "main.h"
#include "ntmain.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#include <windows.h>
#define GENSRV_SERVICENAME "tor"
diff --git a/src/or/onion.c b/src/or/onion.c
index 7c7f97fc42..5495074a83 100644
--- a/src/or/onion.c
+++ b/src/or/onion.c
@@ -130,9 +130,12 @@ onion_pending_add(or_circuit_t *circ, create_cell_t *onionskin)
time_t now = time(NULL);
if (onionskin->handshake_type > MAX_ONION_HANDSHAKE_TYPE) {
+ /* LCOV_EXCL_START
+ * We should have rejected this far before this point */
log_warn(LD_BUG, "Handshake %d out of range! Dropping.",
onionskin->handshake_type);
return -1;
+ /* LCOV_EXCL_STOP */
}
tmp = tor_malloc_zero(sizeof(onion_queue_t));
@@ -305,10 +308,13 @@ static void
onion_queue_entry_remove(onion_queue_t *victim)
{
if (victim->handshake_type > MAX_ONION_HANDSHAKE_TYPE) {
+ /* LCOV_EXCL_START
+ * We should have rejected this far before this point */
log_warn(LD_BUG, "Handshake %d out of range! Dropping.",
victim->handshake_type);
/* XXX leaks */
return;
+ /* LCOV_EXCL_STOP */
}
TOR_TAILQ_REMOVE(&ol_list[victim->handshake_type], victim, next);
@@ -391,9 +397,12 @@ onion_handshake_state_release(onion_handshake_state_t *state)
state->u.ntor = NULL;
break;
default:
+ /* LCOV_EXCL_START
+ * This state should not even exist. */
log_warn(LD_BUG, "called with unknown handshake state type %d",
(int)state->tag);
tor_fragile_assert();
+ /* LCOV_EXCL_STOP */
}
}
@@ -441,9 +450,12 @@ onion_skin_create(int type,
r = NTOR_ONIONSKIN_LEN;
break;
default:
+ /* LCOV_EXCL_START
+ * We should never try to create an impossible handshake type. */
log_warn(LD_BUG, "called with unknown handshake state type %d", type);
tor_fragile_assert();
r = -1;
+ /* LCOV_EXCL_STOP */
}
if (r > 0)
@@ -512,9 +524,12 @@ onion_skin_server_handshake(int type,
}
break;
default:
+ /* LCOV_EXCL_START
+ * We should have rejected this far before this point */
log_warn(LD_BUG, "called with unknown handshake state type %d", type);
tor_fragile_assert();
return -1;
+ /* LCOV_EXCL_STOP */
}
return r;
diff --git a/src/or/onion_fast.c b/src/or/onion_fast.c
index 1f79860596..6b5d12e407 100644
--- a/src/or/onion_fast.c
+++ b/src/or/onion_fast.c
@@ -59,8 +59,8 @@ fast_server_handshake(const uint8_t *key_in, /* DIGEST_LEN bytes */
memcpy(tmp+DIGEST_LEN, handshake_reply_out, DIGEST_LEN);
out_len = key_out_len+DIGEST_LEN;
out = tor_malloc(out_len);
- if (crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len)) {
- goto done;
+ if (BUG(crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len))) {
+ goto done; // LCOV_EXCL_LINE
}
memcpy(handshake_reply_out+DIGEST_LEN, out, DIGEST_LEN);
memcpy(key_out, out+DIGEST_LEN, key_out_len);
@@ -100,10 +100,12 @@ fast_client_handshake(const fast_handshake_state_t *handshake_state,
memcpy(tmp+DIGEST_LEN, handshake_reply_out, DIGEST_LEN);
out_len = key_out_len+DIGEST_LEN;
out = tor_malloc(out_len);
- if (crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len)) {
+ if (BUG(crypto_expand_key_material_TAP(tmp, sizeof(tmp), out, out_len))) {
+ /* LCOV_EXCL_START */
if (msg_out)
*msg_out = "Failed to expand key material";
goto done;
+ /* LCOV_EXCL_STOP */
}
if (tor_memneq(out, handshake_reply_out+DIGEST_LEN, DIGEST_LEN)) {
/* H(K) does *not* match. Something fishy. */
diff --git a/src/or/onion_ntor.c b/src/or/onion_ntor.c
index 33afc27895..d1a268f4cd 100644
--- a/src/or/onion_ntor.c
+++ b/src/or/onion_ntor.c
@@ -85,8 +85,13 @@ onion_skin_ntor_create(const uint8_t *router_id,
memcpy(state->router_id, router_id, DIGEST_LEN);
memcpy(&state->pubkey_B, router_key, sizeof(curve25519_public_key_t));
if (curve25519_secret_key_generate(&state->seckey_x, 0) < 0) {
+ /* LCOV_EXCL_START
+ * Secret key generation should be unable to fail when the key isn't
+ * marked as "extra-strong" */
+ tor_assert_nonfatal_unreached();
tor_free(state);
return -1;
+ /* LCOV_EXCL_STOP */
}
curve25519_public_key_generate(&state->pubkey_X, &state->seckey_x);
diff --git a/src/or/onion_tap.c b/src/or/onion_tap.c
index bfd472351f..abe779351f 100644
--- a/src/or/onion_tap.c
+++ b/src/or/onion_tap.c
@@ -74,9 +74,13 @@ onion_skin_TAP_create(crypto_pk_t *dest_router_key,
return 0;
err:
+ /* LCOV_EXCL_START
+ * We only get here if RSA encryption fails or DH keygen fails. Those
+ * shouldn't be possible. */
memwipe(challenge, 0, sizeof(challenge));
if (dh) crypto_dh_free(dh);
return -1;
+ /* LCOV_EXCL_STOP */
}
/** Given an encrypted DH public key as generated by onion_skin_create,
@@ -130,12 +134,20 @@ onion_skin_TAP_server_handshake(
dh = crypto_dh_new(DH_TYPE_CIRCUIT);
if (!dh) {
+ /* LCOV_EXCL_START
+ * Failure to allocate a DH key should be impossible.
+ */
log_warn(LD_BUG, "Couldn't allocate DH key");
goto err;
+ /* LCOV_EXCL_STOP */
}
if (crypto_dh_get_public(dh, handshake_reply_out, DH_KEY_LEN)) {
+ /* LCOV_EXCL_START
+ * This can only fail if the length of the key we just allocated is too
+ * big. That should be impossible. */
log_info(LD_GENERAL, "crypto_dh_get_public failed.");
goto err;
+ /* LCOV_EXCP_STOP */
}
key_material_len = DIGEST_LEN+key_out_len;
diff --git a/src/or/or.h b/src/or/or.h
index ed799b98ff..af40cf7e81 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -3588,7 +3588,13 @@ typedef struct {
/** Bitmask; derived from AllowInvalidNodes. */
invalid_router_usage_t AllowInvalid_;
config_line_t *ExitPolicy; /**< Lists of exit policy components. */
- int ExitPolicyRejectPrivate; /**< Should we not exit to local addresses? */
+ int ExitPolicyRejectPrivate; /**< Should we not exit to reserved private
+ * addresses, and our own published addresses?
+ */
+ int ExitPolicyRejectLocalInterfaces; /**< Should we not exit to local
+ * interface addresses?
+ * Includes OutboundBindAddresses and
+ * configured ports. */
config_line_t *SocksPolicy; /**< Lists of socks policy components */
config_line_t *DirPolicy; /**< Lists of dir policy components */
/** Addresses to bind for listening for SOCKS connections. */
diff --git a/src/or/periodic.c b/src/or/periodic.c
index 057fcf672e..0bccc6ec20 100644
--- a/src/or/periodic.c
+++ b/src/or/periodic.c
@@ -12,11 +12,7 @@
#include "config.h"
#include "periodic.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
/** We disable any interval greater than this number of seconds, on the
* grounds that it is probably an absolute time mistakenly passed in as a
diff --git a/src/or/policies.c b/src/or/policies.c
index 7ddebd6096..0b8f3351fb 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -618,7 +618,7 @@ fascist_firewall_allows_ri_impl(const routerinfo_t *ri,
pref_ipv6);
}
-/** Like fascist_firewall_allows_rs, but doesn't consult the node. */
+/** Like fascist_firewall_allows_rs, but takes pref_ipv6. */
static int
fascist_firewall_allows_rs_impl(const routerstatus_t *rs,
firewall_connection_t fw_connection,
@@ -636,10 +636,11 @@ fascist_firewall_allows_rs_impl(const routerstatus_t *rs,
}
/** Like fascist_firewall_allows_base(), but takes rs.
- * Consults the corresponding node, then falls back to rs if node is NULL.
- * This should only happen when there's no valid consensus, and rs doesn't
- * correspond to a bridge client's bridge.
- */
+ * When rs is a fake_status from a dir_server_t, it can have a reachable
+ * address, even when the corresponding node does not.
+ * nodes can be missing addresses when there's no consensus (IPv4 and IPv6),
+ * or when there is a microdescriptor consensus, but no microdescriptors
+ * (microdescriptors have IPv6, the microdesc consensus does not). */
int
fascist_firewall_allows_rs(const routerstatus_t *rs,
firewall_connection_t fw_connection, int pref_only)
@@ -648,21 +649,15 @@ fascist_firewall_allows_rs(const routerstatus_t *rs,
return 0;
}
- const node_t *node = node_get_by_id(rs->identity_digest);
-
- if (node) {
- return fascist_firewall_allows_node(node, fw_connection, pref_only);
- } else {
- /* There's no node-specific IPv6 preference, so use the generic IPv6
- * preference instead. */
- const or_options_t *options = get_options();
- int pref_ipv6 = (fw_connection == FIREWALL_OR_CONNECTION
- ? fascist_firewall_prefer_ipv6_orport(options)
- : fascist_firewall_prefer_ipv6_dirport(options));
+ /* We don't have access to the node-specific IPv6 preference, so use the
+ * generic IPv6 preference instead. */
+ const or_options_t *options = get_options();
+ int pref_ipv6 = (fw_connection == FIREWALL_OR_CONNECTION
+ ? fascist_firewall_prefer_ipv6_orport(options)
+ : fascist_firewall_prefer_ipv6_dirport(options));
- return fascist_firewall_allows_rs_impl(rs, fw_connection, pref_only,
- pref_ipv6);
- }
+ return fascist_firewall_allows_rs_impl(rs, fw_connection, pref_only,
+ pref_ipv6);
}
/** Return true iff we think our firewall will let us make a connection to
@@ -742,8 +737,7 @@ fascist_firewall_allows_dir_server(const dir_server_t *ds,
/* A dir_server_t always has a fake_status. As long as it has the same
* addresses/ports in both fake_status and dir_server_t, this works fine.
* (See #17867.)
- * This function relies on fascist_firewall_choose_address_rs looking up the
- * node if it can, because that will get the latest info for the relay. */
+ * fascist_firewall_allows_rs only checks the addresses in fake_status. */
return fascist_firewall_allows_rs(&ds->fake_status, fw_connection,
pref_only);
}
@@ -1843,10 +1837,18 @@ policies_log_first_redundant_entry(const smartlist_t *policy)
*
* If <b>ipv6_exit</b> is false, prepend "reject *6:*" to the policy.
*
+ * If <b>configured_addresses</b> contains addresses:
+ * - prepend entries that reject the addresses in this list. These may be the
+ * advertised relay addresses and/or the outbound bind addresses,
+ * depending on the ExitPolicyRejectPrivate and
+ * ExitPolicyRejectLocalInterfaces settings.
* If <b>rejectprivate</b> is true:
* - prepend "reject private:*" to the policy.
- * - prepend entries that reject publicly routable addresses on this exit
- * relay by calling policies_parse_exit_policy_reject_private
+ * If <b>reject_interface_addresses</b> is true:
+ * - prepend entries that reject publicly routable interface addresses on
+ * this exit relay by calling policies_parse_exit_policy_reject_private
+ * If <b>reject_configured_port_addresses</b> is true:
+ * - prepend entries that reject all configured port addresses
*
* If cfg doesn't end in an absolute accept or reject and if
* <b>add_default_policy</b> is true, add the default exit
@@ -1874,13 +1876,16 @@ policies_parse_exit_policy_internal(config_line_t *cfg,
if (rejectprivate) {
/* Reject IPv4 and IPv6 reserved private netblocks */
append_exit_policy_string(dest, "reject private:*");
- /* Reject IPv4 and IPv6 publicly routable addresses on this exit relay */
- policies_parse_exit_policy_reject_private(
- dest, ipv6_exit,
+ }
+
+ /* Consider rejecting IPv4 and IPv6 advertised relay addresses, outbound bind
+ * addresses, publicly routable addresses, and configured port addresses
+ * on this exit relay */
+ policies_parse_exit_policy_reject_private(dest, ipv6_exit,
configured_addresses,
reject_interface_addresses,
reject_configured_port_addresses);
- }
+
if (parse_addr_policy(cfg, dest, -1))
return -1;
@@ -1908,8 +1913,14 @@ policies_parse_exit_policy_internal(config_line_t *cfg,
* If <b>EXIT_POLICY_REJECT_PRIVATE</b> bit is set in <b>options</b>:
* - prepend an entry that rejects all destinations in all netblocks
* reserved for private use.
+ * - prepend entries that reject the advertised relay addresses in
+ * configured_addresses
+ * If <b>EXIT_POLICY_REJECT_LOCAL_INTERFACES</b> bit is set in <b>options</b>:
* - prepend entries that reject publicly routable addresses on this exit
* relay by calling policies_parse_exit_policy_internal
+ * - prepend entries that reject the outbound bind addresses in
+ * configured_addresses
+ * - prepend entries that reject all configured port addresses
*
* If <b>EXIT_POLICY_ADD_DEFAULT</b> bit is set in <b>options</b>, append
* default exit policy entries to <b>result</b> smartlist.
@@ -1922,12 +1933,14 @@ policies_parse_exit_policy(config_line_t *cfg, smartlist_t **dest,
int ipv6_enabled = (options & EXIT_POLICY_IPV6_ENABLED) ? 1 : 0;
int reject_private = (options & EXIT_POLICY_REJECT_PRIVATE) ? 1 : 0;
int add_default = (options & EXIT_POLICY_ADD_DEFAULT) ? 1 : 0;
+ int reject_local_interfaces = (options &
+ EXIT_POLICY_REJECT_LOCAL_INTERFACES) ? 1 : 0;
return policies_parse_exit_policy_internal(cfg,dest,ipv6_enabled,
reject_private,
configured_addresses,
- reject_private,
- reject_private,
+ reject_local_interfaces,
+ reject_local_interfaces,
add_default);
}
@@ -1993,6 +2006,7 @@ policies_copy_outbound_addresses_to_smartlist(smartlist_t *addr_list,
* add it to the list of configured addresses.
* - if ipv6_local_address is non-NULL, and not the null tor_addr_t, add it
* to the list of configured addresses.
+ * If <b>or_options->ExitPolicyRejectLocalInterfaces</b> is true:
* - if or_options->OutboundBindAddressIPv4_ is not the null tor_addr_t, add
* it to the list of configured addresses.
* - if or_options->OutboundBindAddressIPv6_ is not the null tor_addr_t, add
@@ -2036,11 +2050,20 @@ policies_parse_exit_policy_from_options(const or_options_t *or_options,
parser_cfg |= EXIT_POLICY_ADD_DEFAULT;
}
+ if (or_options->ExitPolicyRejectLocalInterfaces) {
+ parser_cfg |= EXIT_POLICY_REJECT_LOCAL_INTERFACES;
+ }
+
/* Copy the configured addresses into the tor_addr_t* list */
- policies_copy_ipv4h_to_smartlist(configured_addresses, local_address);
- policies_copy_addr_to_smartlist(configured_addresses, ipv6_local_address);
- policies_copy_outbound_addresses_to_smartlist(configured_addresses,
- or_options);
+ if (or_options->ExitPolicyRejectPrivate) {
+ policies_copy_ipv4h_to_smartlist(configured_addresses, local_address);
+ policies_copy_addr_to_smartlist(configured_addresses, ipv6_local_address);
+ }
+
+ if (or_options->ExitPolicyRejectLocalInterfaces) {
+ policies_copy_outbound_addresses_to_smartlist(configured_addresses,
+ or_options);
+ }
rv = policies_parse_exit_policy(or_options->ExitPolicy, result, parser_cfg,
configured_addresses);
@@ -2822,7 +2845,8 @@ getinfo_helper_policies(control_connection_t *conn,
return -1;
}
- if (!options->ExitPolicyRejectPrivate) {
+ if (!options->ExitPolicyRejectPrivate &&
+ !options->ExitPolicyRejectLocalInterfaces) {
*answer = tor_strdup("");
return 0;
}
@@ -2831,16 +2855,22 @@ getinfo_helper_policies(control_connection_t *conn,
smartlist_t *configured_addresses = smartlist_new();
/* Copy the configured addresses into the tor_addr_t* list */
- policies_copy_ipv4h_to_smartlist(configured_addresses, me->addr);
- policies_copy_addr_to_smartlist(configured_addresses, &me->ipv6_addr);
- policies_copy_outbound_addresses_to_smartlist(configured_addresses,
- options);
+ if (options->ExitPolicyRejectPrivate) {
+ policies_copy_ipv4h_to_smartlist(configured_addresses, me->addr);
+ policies_copy_addr_to_smartlist(configured_addresses, &me->ipv6_addr);
+ }
+
+ if (options->ExitPolicyRejectLocalInterfaces) {
+ policies_copy_outbound_addresses_to_smartlist(configured_addresses,
+ options);
+ }
policies_parse_exit_policy_reject_private(
- &private_policy_list,
- options->IPv6Exit,
- configured_addresses,
- 1, 1);
+ &private_policy_list,
+ options->IPv6Exit,
+ configured_addresses,
+ options->ExitPolicyRejectLocalInterfaces,
+ options->ExitPolicyRejectLocalInterfaces);
*answer = policy_dump_to_string(private_policy_list, 1, 1);
addr_policy_list_free(private_policy_list);
diff --git a/src/or/policies.h b/src/or/policies.h
index aaa6fa0a4e..e134e686d2 100644
--- a/src/or/policies.h
+++ b/src/or/policies.h
@@ -18,9 +18,10 @@
*/
#define POLICY_BUF_LEN 72
-#define EXIT_POLICY_IPV6_ENABLED (1 << 0)
-#define EXIT_POLICY_REJECT_PRIVATE (1 << 1)
-#define EXIT_POLICY_ADD_DEFAULT (1 << 2)
+#define EXIT_POLICY_IPV6_ENABLED (1 << 0)
+#define EXIT_POLICY_REJECT_PRIVATE (1 << 1)
+#define EXIT_POLICY_ADD_DEFAULT (1 << 2)
+#define EXIT_POLICY_REJECT_LOCAL_INTERFACES (1 << 3)
typedef enum firewall_connection_t {
FIREWALL_OR_CONNECTION = 0,
diff --git a/src/or/relay.c b/src/or/relay.c
index fb8c8e74d6..51b33cc92c 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -2320,14 +2320,12 @@ cell_queue_append_packed_copy(circuit_t *circ, cell_queue_t *queue,
int exitward, const cell_t *cell,
int wide_circ_ids, int use_stats)
{
- struct timeval now;
packed_cell_t *copy = packed_cell_copy(cell, wide_circ_ids);
(void)circ;
(void)exitward;
(void)use_stats;
- tor_gettimeofday_cached_monotonic(&now);
- copy->inserted_time = (uint32_t)tv_to_msec(&now);
+ copy->inserted_time = (uint32_t) monotime_coarse_absolute_msec();
cell_queue_append(queue, copy);
}
@@ -2628,9 +2626,8 @@ channel_flush_from_first_active_circuit, (channel_t *chan, int max))
if (get_options()->CellStatistics ||
get_options()->TestingEnableCellStatsEvent) {
uint32_t msec_waiting;
- struct timeval tvnow;
- tor_gettimeofday_cached(&tvnow);
- msec_waiting = ((uint32_t)tv_to_msec(&tvnow)) - cell->inserted_time;
+ uint32_t msec_now = (uint32_t)monotime_coarse_absolute_msec();
+ msec_waiting = msec_now - cell->inserted_time;
if (get_options()->CellStatistics && !CIRCUIT_IS_ORIGIN(circ)) {
or_circ = TO_OR_CIRCUIT(circ);
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 64d367354b..2d47e12e08 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -469,6 +469,23 @@ rend_client_introduction_acked(origin_circuit_t *circ,
/** The period for which a hidden service directory cannot be queried for
* the same descriptor ID again. */
#define REND_HID_SERV_DIR_REQUERY_PERIOD (15 * 60)
+/** Test networks generate a new consensus every 5 or 10 seconds.
+ * So allow them to requery HSDirs much faster. */
+#define REND_HID_SERV_DIR_REQUERY_PERIOD_TESTING (5)
+
+/** Return the period for which a hidden service directory cannot be queried
+ * for the same descriptor ID again, taking TestingTorNetwork into account. */
+static time_t
+hsdir_requery_period(const or_options_t *options)
+{
+ tor_assert(options);
+
+ if (options->TestingTorNetwork) {
+ return REND_HID_SERV_DIR_REQUERY_PERIOD_TESTING;
+ } else {
+ return REND_HID_SERV_DIR_REQUERY_PERIOD;
+ }
+}
/** Contains the last request times to hidden service directories for
* certain queries; each key is a string consisting of the
@@ -532,7 +549,7 @@ static void
directory_clean_last_hid_serv_requests(time_t now)
{
strmap_iter_t *iter;
- time_t cutoff = now - REND_HID_SERV_DIR_REQUERY_PERIOD;
+ time_t cutoff = now - hsdir_requery_period(get_options());
strmap_t *last_hid_serv_requests = get_last_hid_serv_requests();
for (iter = strmap_iter_init(last_hid_serv_requests);
!strmap_iter_done(iter); ) {
@@ -635,7 +652,7 @@ pick_hsdir(const char *desc_id, const char *desc_id_base32)
time_t last = lookup_last_hid_serv_request(dir, desc_id_base32,
0, 0);
const node_t *node = node_get_by_id(dir->identity_digest);
- if (last + REND_HID_SERV_DIR_REQUERY_PERIOD >= now ||
+ if (last + hsdir_requery_period(options) >= now ||
!node || !node_has_descriptor(node)) {
SMARTLIST_DEL_CURRENT(responsible_dirs, dir);
continue;
diff --git a/src/or/router.c b/src/or/router.c
index cc96513710..009dcdc2c6 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1284,15 +1284,17 @@ decide_to_advertise_begindir(const or_options_t *options,
}
/** Allocate and return a new extend_info_t that can be used to build
- * a circuit to or through the router <b>r</b>. Use the primary
- * address of the router unless <b>for_direct_connect</b> is true, in
- * which case the preferred address is used instead. */
+ * a circuit to or through the router <b>r</b>. Uses the primary
+ * address of the router, so should only be called on a server. */
static extend_info_t *
extend_info_from_router(const routerinfo_t *r)
{
tor_addr_port_t ap;
tor_assert(r);
+ /* Make sure we don't need to check address reachability */
+ tor_assert_nonfatal(!router_skip_or_reachability(get_options(), 0));
+
router_get_prim_orport(r, &ap);
return extend_info_new(r->nickname, r->cache_info.identity_digest,
r->onion_pkey, r->onion_curve25519_pkey,
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index 773f681c3c..f87dbed145 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -1870,7 +1870,7 @@ router_picked_poor_directory_log(const routerstatus_t *rs)
/* When iterating through the routerlist, can OR address/port preference
* and reachability checks be skipped?
*/
-static int
+int
router_skip_or_reachability(const or_options_t *options, int try_ip_pref)
{
/* Servers always have and prefer IPv4.
diff --git a/src/or/routerlist.h b/src/or/routerlist.h
index 01f7644535..9765ee7ff4 100644
--- a/src/or/routerlist.h
+++ b/src/or/routerlist.h
@@ -58,6 +58,7 @@ const routerstatus_t *router_pick_trusteddirserver(dirinfo_type_t type,
int flags);
const routerstatus_t *router_pick_fallback_dirserver(dirinfo_type_t type,
int flags);
+int router_skip_or_reachability(const or_options_t *options, int try_ip_pref);
int router_get_my_share_of_directory_requests(double *v3_share_out);
void router_reset_status_download_failures(void);
int routers_have_same_or_addrs(const routerinfo_t *r1, const routerinfo_t *r2);
diff --git a/src/or/scheduler.c b/src/or/scheduler.c
index fd275046af..49ac1b939a 100644
--- a/src/or/scheduler.c
+++ b/src/or/scheduler.c
@@ -15,11 +15,7 @@
#define SCHEDULER_PRIVATE_
#include "scheduler.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
/*
* Scheduler high/low watermarks
diff --git a/src/test/log_test_helpers.c b/src/test/log_test_helpers.c
index 3bb36ac36c..166a777747 100644
--- a/src/test/log_test_helpers.c
+++ b/src/test/log_test_helpers.c
@@ -12,6 +12,7 @@ setup_capture_of_logs(int new_level)
int previous_log = log_global_min_severity_;
log_global_min_severity_ = new_level;
mock_clean_saved_logs();
+ saved_logs = smartlist_new();
MOCK(logv, mock_saving_logv);
return previous_log;
}
diff --git a/src/test/test-network.sh b/src/test/test-network.sh
index 05080e0c52..4d9776822b 100755
--- a/src/test/test-network.sh
+++ b/src/test/test-network.sh
@@ -1,7 +1,43 @@
#! /bin/sh
+# Please do not modify this script, it has been moved to chutney/tools
+
ECHO_N="/bin/echo -n"
-use_coverage_binary=false
+
+# Output is prefixed with the name of the script
+myname=$(basename $0)
+
+# We need to find CHUTNEY_PATH, so that we can call the version of this script
+# in chutney/tools. And we want to pass any arguments to that script as well.
+# So we source this script, which processes its arguments to find CHUTNEY_PATH.
+
+# Avoid recursively sourcing this script, and don't call the chutney version
+# while recursing, either
+if [ "$TEST_NETWORK_RECURSING" != true ]; then
+ # Process the arguments into environmental variables with this script
+ # to make sure $CHUTNEY_PATH is set
+ # When we switch to using test-network.sh in chutney/tools, --dry-run
+ # can be removed, because this script will find chutney, then pass all
+ # arguments to chutney's test-network.sh
+ echo "$myname: Parsing command-line arguments to find \$CHUTNEY_PATH"
+ export TEST_NETWORK_RECURSING=true
+ . "$0" --dry-run "$@"
+
+ # Call the chutney version of this script, if it exists, and we can find it
+ if [ -d "$CHUTNEY_PATH" -a -x "$CHUTNEY_PATH/tools/test-network.sh" ]; then
+ unset NETWORK_DRY_RUN
+ echo "$myname: Calling newer chutney script \
+$CHUTNEY_PATH/tools/test-network.sh"
+ "$CHUTNEY_PATH/tools/test-network.sh" "$@"
+ exit $?
+ else
+ echo "$myname: This script has moved to chutney/tools."
+ echo "$myname: Please update your chutney using 'git pull'."
+ # When we switch to using test-network.sh in chutney/tools, we should
+ # exit with a very loud failure here
+ echo "$myname: Falling back to the old tor version of the script."
+ fi
+fi
until [ -z "$1" ]
do
@@ -14,6 +50,9 @@ do
export TOR_DIR="$2"
shift
;;
+ # When we switch to using test-network.sh in chutney/tools, only the
+ # --chutney-path and --tor-path arguments need to be processed by this
+ # script, everything else can be handled by chutney's test-network.sh
--flavor|--flavour|--network-flavor|--network-flavour)
export NETWORK_FLAVOUR="$2"
shift
@@ -30,8 +69,8 @@ do
;;
# Make this many connections per client (1)
# Note: If you create 7 or more connections to a hidden service from
- # a single client, you'll likely get a verification failure due to
- # https://trac.torproject.org/projects/tor/ticket/15937
+ # a single Tor 0.2.7 client, you'll likely get a verification failure due
+ # to #15937. This is fixed in 0.2.8.
--connections|--connection|--connection-count|--count)
export CHUTNEY_CONNECTIONS="$2"
shift
@@ -44,44 +83,101 @@ do
shift
;;
--coverage)
- use_coverage_binary=true
+ export USE_COVERAGE_BINARY=true
+ ;;
+ --dry-run)
+ # process arguments, but don't call any other scripts
+ export NETWORK_DRY_RUN=true
;;
*)
- echo "Sorry, I don't know what to do with '$1'."
- exit 2
+ echo "$myname: Sorry, I don't know what to do with '$1'."
+ echo "$myname: Maybe chutney's test-network.sh understands '$1'."
+ echo "$myname: Please update your chutney using 'git pull', and set \
+\$CHUTNEY_PATH"
+ # continue processing arguments during a dry run
+ if [ "$NETWORK_DRY_RUN" != true ]; then
+ exit 2
+ fi
;;
esac
shift
done
-TOR_DIR="${TOR_DIR:-$PWD}"
-NETWORK_FLAVOUR=${NETWORK_FLAVOUR:-"bridges+hs"}
-CHUTNEY_NETWORK=networks/$NETWORK_FLAVOUR
-myname=$(basename $0)
-
-[ -n "$CHUTNEY_PATH" ] || {
- echo "$myname: \$CHUTNEY_PATH not set, trying $TOR_DIR/../chutney"
- CHUTNEY_PATH="$TOR_DIR/../chutney"
-}
+# optional: $TOR_DIR is the tor build directory
+# it's used to find the location of tor binaries
+# if it's not set:
+# - set it ro $BUILDDIR, or
+# - if $PWD looks like a tor build directory, set it to $PWD, or
+# - unset $TOR_DIR, and let chutney fall back to finding tor binaries in $PATH
+if [ ! -d "$TOR_DIR" ]; then
+ if [ -d "$BUILDDIR/src/or" -a -d "$BUILDDIR/src/tools" ]; then
+ # Choose the build directory
+ # But only if it looks like one
+ echo "$myname: \$TOR_DIR not set, trying \$BUILDDIR"
+ export TOR_DIR="$BUILDDIR"
+ elif [ -d "$PWD/src/or" -a -d "$PWD/src/tools" ]; then
+ # Guess the tor directory is the current directory
+ # But only if it looks like one
+ echo "$myname: \$TOR_DIR not set, trying \$PWD"
+ export TOR_DIR="$PWD"
+ else
+ echo "$myname: no \$TOR_DIR, chutney will use \$PATH for tor binaries"
+ unset TOR_DIR
+ fi
+fi
-[ -d "$CHUTNEY_PATH" ] && [ -x "$CHUTNEY_PATH/chutney" ] || {
- echo "$myname: missing 'chutney' in CHUTNEY_PATH ($CHUTNEY_PATH)"
- echo "$myname: Get chutney: git clone https://git.torproject.org/\
+# mandatory: $CHUTNEY_PATH is the path to the chutney launch script
+# if it's not set:
+# - if $PWD looks like a chutney directory, set it to $PWD, or
+# - set it based on $TOR_DIR, expecting chutney to be next to tor, or
+# - fail and tell the user how to clone the chutney repository
+if [ ! -d "$CHUTNEY_PATH" -o ! -x "$CHUTNEY_PATH/chutney" ]; then
+ if [ -x "$PWD/chutney" ]; then
+ echo "$myname: \$CHUTNEY_PATH not valid, trying \$PWD"
+ export CHUTNEY_PATH="$PWD"
+ elif [ -d "$TOR_DIR" -a -d "$TOR_DIR/../chutney" -a \
+ -x "$TOR_DIR/../chutney/chutney" ]; then
+ echo "$myname: \$CHUTNEY_PATH not valid, trying \$TOR_DIR/../chutney"
+ export CHUTNEY_PATH="$TOR_DIR/../chutney"
+ else
+ # TODO: work out how to package and install chutney,
+ # so users can find it in $PATH
+ echo "$myname: missing 'chutney' in \$CHUTNEY_PATH ($CHUTNEY_PATH)"
+ echo "$myname: Get chutney: git clone https://git.torproject.org/\
chutney.git"
- echo "$myname: Set \$CHUTNEY_PATH to a non-standard location: export CHUTNEY_PATH=\`pwd\`/chutney"
- exit 1
-}
+ echo "$myname: Set \$CHUTNEY_PATH to a non-standard location: export \
+CHUTNEY_PATH=\`pwd\`/chutney"
+ unset CHUTNEY_PATH
+ exit 1
+ fi
+fi
+
+# When we switch to using test-network.sh in chutney/tools, this comment and
+# everything below it can be removed
-cd "$CHUTNEY_PATH"
# For picking up the right tor binaries.
-tor_name=tor
-tor_gencert_name=tor-gencert
-if test "$use_coverage_binary" = true; then
- tor_name=tor-cov
+# If these varibles aren't set, chutney looks for tor binaries in $PATH
+if [ -d "$TOR_DIR" ]; then
+ tor_name=tor
+ tor_gencert_name=tor-gencert
+ if [ "$USE_COVERAGE_BINARY" = true ]; then
+ tor_name=tor-cov
+ fi
+ export CHUTNEY_TOR="${TOR_DIR}/src/or/${tor_name}"
+ export CHUTNEY_TOR_GENCERT="${TOR_DIR}/src/tools/${tor_gencert_name}"
fi
-export CHUTNEY_TOR="${TOR_DIR}/src/or/${tor_name}"
-export CHUTNEY_TOR_GENCERT="${TOR_DIR}/src/tools/${tor_gencert_name}"
+# Set the variables for the chutney network flavour
+export NETWORK_FLAVOUR=${NETWORK_FLAVOUR:-"bridges+hs"}
+export CHUTNEY_NETWORK=networks/$NETWORK_FLAVOUR
+
+# And finish up if we're doing a dry run
+if [ "$NETWORK_DRY_RUN" = true ]; then
+ # we can't exit here, it breaks argument processing
+ return
+fi
+
+cd "$CHUTNEY_PATH"
./tools/bootstrap-network.sh $NETWORK_FLAVOUR || exit 2
# Sleep some, waiting for the network to bootstrap.
diff --git a/src/test/test-timers.c b/src/test/test-timers.c
index 0196ec1fef..b5fcade7f8 100644
--- a/src/test/test-timers.c
+++ b/src/test/test-timers.c
@@ -7,11 +7,7 @@
#include <stdio.h>
#include <string.h>
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#include "compat.h"
#include "compat_libevent.h"
@@ -32,15 +28,26 @@ static tor_timer_t *timers[N_TIMERS] = {NULL};
static int n_active_timers = 0;
static int n_fired = 0;
+static monotime_t started_at;
+static int64_t delay_usec[N_TIMERS];
+static int64_t diffs_mono_usec[N_TIMERS];
+
static void
-timer_cb(tor_timer_t *t, void *arg, const struct timeval *now)
+timer_cb(tor_timer_t *t, void *arg, const monotime_t *now_mono)
{
+ struct timeval now;
+
+ tor_gettimeofday(&now);
tor_timer_t **t_ptr = arg;
tor_assert(*t_ptr == t);
int idx = (int) (t_ptr - timers);
++fired[idx];
- timersub(now, &fire_at[idx], &difference[idx]);
+ timersub(&now, &fire_at[idx], &difference[idx]);
+ diffs_mono_usec[idx] =
+ monotime_diff_usec(&started_at, now_mono) -
+ delay_usec[idx];
++n_fired;
+
// printf("%d / %d\n",n_fired, N_TIMERS);
if (n_fired == n_active_timers) {
event_base_loopbreak(tor_libevent_get_base());
@@ -61,10 +68,12 @@ main(int argc, char **argv)
int ret;
struct timeval now;
tor_gettimeofday(&now);
+ monotime_get(&started_at);
for (i = 0; i < N_TIMERS; ++i) {
struct timeval delay;
delay.tv_sec = crypto_rand_int_range(0,MAX_DURATION);
delay.tv_usec = crypto_rand_int_range(0,1000000);
+ delay_usec[i] = delay.tv_sec * 1000000 + delay.tv_usec;
timeradd(&now, &delay, &fire_at[i]);
timers[i] = timer_new(timer_cb, &timers[i]);
timer_schedule(timers[i], &delay);
@@ -92,13 +101,14 @@ main(int argc, char **argv)
continue;
}
tor_assert(fired[i] == 1);
- int64_t diff = difference[i].tv_usec + difference[i].tv_sec * 1000000;
+ //int64_t diff = difference[i].tv_usec + difference[i].tv_sec * 1000000;
+ int64_t diff = diffs_mono_usec[i];
total_difference += diff;
total_square_difference += diff*diff;
}
const int64_t mean_diff = total_difference / n_active_timers;
- printf("mean difference: "U64_FORMAT" usec\n",
- U64_PRINTF_ARG(mean_diff));
+ printf("mean difference: "I64_FORMAT" usec\n",
+ I64_PRINTF_ARG(mean_diff));
const double mean_sq = ((double)total_square_difference)/ n_active_timers;
const double sq_mean = mean_diff * mean_diff;
diff --git a/src/test/test.c b/src/test/test.c
index 3a1054decf..f8610168f6 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -55,6 +55,7 @@ double fabs(double x);
#include "memarea.h"
#include "onion.h"
#include "onion_ntor.h"
+#include "onion_fast.h"
#include "onion_tap.h"
#include "policies.h"
#include "rephist.h"
@@ -178,20 +179,26 @@ test_bad_onion_handshake(void *arg)
s_buf, s_keys, 40));
/* Client: Case 1: The server sent back junk. */
+ const char *msg = NULL;
s_buf[64] ^= 33;
tt_int_op(-1, OP_EQ,
- onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40, NULL));
+ onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40, &msg));
s_buf[64] ^= 33;
+ tt_str_op(msg, OP_EQ, "Digest DOES NOT MATCH on onion handshake. "
+ "Bug or attack.");
/* Let the client finish; make sure it can. */
+ msg = NULL;
tt_int_op(0, OP_EQ,
- onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40, NULL));
+ onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40, &msg));
tt_mem_op(s_keys,OP_EQ, c_keys, 40);
+ tt_ptr_op(msg, OP_EQ, NULL);
/* Client: Case 2: The server sent back a degenerate DH. */
memset(s_buf, 0, sizeof(s_buf));
tt_int_op(-1, OP_EQ,
- onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40, NULL));
+ onion_skin_TAP_client_handshake(c_dh, s_buf, c_keys, 40, &msg));
+ tt_str_op(msg, OP_EQ, "DH computation failed.");
done:
crypto_dh_free(c_dh);
@@ -246,11 +253,56 @@ test_ntor_handshake(void *arg)
memset(s_buf, 0, 40);
tt_mem_op(c_keys,OP_NE, s_buf, 40);
+ /* Now try with a bogus server response. Zero input should trigger
+ * All The Problems. */
+ memset(c_keys, 0, 400);
+ memset(s_buf, 0, NTOR_REPLY_LEN);
+ const char *msg = NULL;
+ tt_int_op(-1, OP_EQ, onion_skin_ntor_client_handshake(c_state, s_buf,
+ c_keys, 400, &msg));
+ tt_str_op(msg, OP_EQ, "Zero output from curve25519 handshake");
+
done:
ntor_handshake_state_free(c_state);
dimap_free(s_keymap, NULL);
}
+static void
+test_fast_handshake(void *arg)
+{
+ /* tests for the obsolete "CREATE_FAST" handshake. */
+ (void) arg;
+ fast_handshake_state_t *state = NULL;
+ uint8_t client_handshake[CREATE_FAST_LEN];
+ uint8_t server_handshake[CREATED_FAST_LEN];
+ uint8_t s_keys[100], c_keys[100];
+
+ /* First, test an entire handshake. */
+ memset(client_handshake, 0, sizeof(client_handshake));
+ tt_int_op(0, OP_EQ, fast_onionskin_create(&state, client_handshake));
+ tt_assert(! tor_mem_is_zero((char*)client_handshake,
+ sizeof(client_handshake)));
+
+ tt_int_op(0, OP_EQ,
+ fast_server_handshake(client_handshake, server_handshake,
+ s_keys, 100));
+ const char *msg = NULL;
+ tt_int_op(0, OP_EQ,
+ fast_client_handshake(state, server_handshake, c_keys, 100, &msg));
+ tt_ptr_op(msg, OP_EQ, NULL);
+ tt_mem_op(s_keys, OP_EQ, c_keys, 100);
+
+ /* Now test a failing handshake. */
+ server_handshake[0] ^= 3;
+ tt_int_op(-1, OP_EQ,
+ fast_client_handshake(state, server_handshake, c_keys, 100, &msg));
+ tt_str_op(msg, OP_EQ, "Digest DOES NOT MATCH on fast handshake. "
+ "Bug or attack.");
+
+ done:
+ fast_handshake_state_free(state);
+}
+
/** Run unit tests for the onion queues. */
static void
test_onion_queues(void *arg)
@@ -1115,6 +1167,7 @@ static struct testcase_t test_array[] = {
{ "bad_onion_handshake", test_bad_onion_handshake, 0, NULL, NULL },
ENT(onion_queues),
{ "ntor_handshake", test_ntor_handshake, 0, NULL, NULL },
+ { "fast_handshake", test_fast_handshake, 0, NULL, NULL },
FORK(circuit_timeout),
FORK(rend_fns),
ENT(geoip),
diff --git a/src/test/test_address.c b/src/test/test_address.c
index 3e5af56c52..82d6bc7a13 100644
--- a/src/test/test_address.c
+++ b/src/test/test_address.c
@@ -26,6 +26,7 @@
#include "or.h"
#include "address.h"
#include "test.h"
+#include "log_test_helpers.h"
/** Return 1 iff <b>sockaddr1</b> and <b>sockaddr2</b> represent
* the same IP address and port combination. Otherwise, return 0.
@@ -822,7 +823,11 @@ test_address_get_if_addrs6_list_no_internal(void *arg)
(void)arg;
+ /* We might drop a log_err */
+ int prev_level = setup_capture_of_logs(LOG_ERR);
results = get_interface_address6_list(LOG_ERR, AF_INET6, 0);
+ tt_int_op(smartlist_len(mock_saved_logs()), OP_LE, 1);
+ teardown_capture_of_logs(prev_level);
tt_assert(results != NULL);
/* Work even on systems without IPv6 interfaces */
@@ -1110,7 +1115,7 @@ struct testcase_t address_tests[] = {
ADDRESS_TEST(get_if_addrs_list_internal, 0),
ADDRESS_TEST(get_if_addrs_list_no_internal, 0),
ADDRESS_TEST(get_if_addrs6_list_internal, 0),
- ADDRESS_TEST(get_if_addrs6_list_no_internal, 0),
+ ADDRESS_TEST(get_if_addrs6_list_no_internal, TT_FORK),
ADDRESS_TEST(get_if_addrs_internal_fail, 0),
ADDRESS_TEST(get_if_addrs_no_internal_fail, 0),
ADDRESS_TEST(get_if_addrs, 0),
diff --git a/src/test/test_buffers.c b/src/test/test_buffers.c
index 91db62c1a3..4a6e94d9e9 100644
--- a/src/test/test_buffers.c
+++ b/src/test/test_buffers.c
@@ -511,26 +511,26 @@ static void
test_buffer_time_tracking(void *arg)
{
buf_t *buf=NULL, *buf2=NULL;
- struct timeval tv0;
const time_t START = 1389288246;
- const uint32_t START_MSEC = (uint32_t) ((uint64_t)START * 1000);
+ const uint64_t START_NSEC = ((uint64_t)START) * 1000000000;
int i;
char tmp[4096];
(void)arg;
crypto_rand(tmp, sizeof(tmp));
- tv0.tv_sec = START;
- tv0.tv_usec = 0;
+ monotime_enable_test_mocking();
buf = buf_new_with_capacity(3000); /* rounds up to next power of 2. */
tt_assert(buf);
+ monotime_coarse_set_mock_time_nsec(START_NSEC);
+ const uint32_t START_MSEC = (uint32_t)monotime_coarse_absolute_msec();
+
/* Empty buffer means the timestamp is 0. */
tt_int_op(0, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC));
tt_int_op(0, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+1000));
- tor_gettimeofday_cache_set(&tv0);
write_to_buf("ABCDEFG", 7, buf);
tt_int_op(1000, OP_EQ, buf_get_oldest_chunk_timestamp(buf, START_MSEC+1000));
@@ -540,8 +540,7 @@ test_buffer_time_tracking(void *arg)
buf_get_oldest_chunk_timestamp(buf2, START_MSEC+1234));
/* Now add more bytes; enough to overflow the first chunk. */
- tv0.tv_usec += 123 * 1000;
- tor_gettimeofday_cache_set(&tv0);
+ monotime_coarse_set_mock_time_nsec(START_NSEC + 123 * (uint64_t)1000000);
for (i = 0; i < 600; ++i)
write_to_buf("ABCDEFG", 7, buf);
tt_int_op(4207, OP_EQ, buf_datalen(buf));
@@ -562,9 +561,7 @@ test_buffer_time_tracking(void *arg)
/* This time we'll be grabbing a chunk from the freelist, and making sure
its time gets updated */
- tv0.tv_sec += 5;
- tv0.tv_usec = 617*1000;
- tor_gettimeofday_cache_set(&tv0);
+ monotime_coarse_set_mock_time_nsec(START_NSEC + 5617 * (uint64_t)1000000);
for (i = 0; i < 600; ++i)
write_to_buf("ABCDEFG", 7, buf);
tt_int_op(4307, OP_EQ, buf_datalen(buf));
@@ -578,6 +575,7 @@ test_buffer_time_tracking(void *arg)
done:
buf_free(buf);
buf_free(buf2);
+ monotime_disable_test_mocking();
}
static void
diff --git a/src/test/test_compat_libevent.c b/src/test/test_compat_libevent.c
index 266ebbcf3b..c81f043834 100644
--- a/src/test/test_compat_libevent.c
+++ b/src/test/test_compat_libevent.c
@@ -9,15 +9,11 @@
#include "compat_libevent.h"
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
#include <event2/thread.h>
#ifdef USE_BUFFEREVENTS
#include <event2/bufferevent.h>
#endif
-#else
-#include <event.h>
-#endif
#include "log_test_helpers.h"
@@ -107,105 +103,13 @@ test_compat_libevent_logging_callback(void *ignored)
}
static void
-test_compat_libevent_le_versions_compatibility(void *ignored)
-{
- (void)ignored;
- int res;
-
- res = le_versions_compatibility(LE_OTHER);
- tt_int_op(res, OP_EQ, 0);
-
- res = le_versions_compatibility(V_OLD(0,9,'c'));
- tt_int_op(res, OP_EQ, 1);
-
- res = le_versions_compatibility(V(1,3,98));
- tt_int_op(res, OP_EQ, 2);
-
- res = le_versions_compatibility(V(1,4,98));
- tt_int_op(res, OP_EQ, 3);
-
- res = le_versions_compatibility(V(1,5,0));
- tt_int_op(res, OP_EQ, 4);
-
- res = le_versions_compatibility(V(2,0,0));
- tt_int_op(res, OP_EQ, 4);
-
- res = le_versions_compatibility(V(2,0,2));
- tt_int_op(res, OP_EQ, 5);
-
- done:
- (void)0;
-}
-
-static void
-test_compat_libevent_tor_decode_libevent_version(void *ignored)
-{
- (void)ignored;
- le_version_t res;
-
- res = tor_decode_libevent_version("SOMETHING WRONG");
- tt_int_op(res, OP_EQ, LE_OTHER);
-
- res = tor_decode_libevent_version("1.4.11");
- tt_int_op(res, OP_EQ, V(1,4,11));
-
- res = tor_decode_libevent_version("1.4.12b-stable");
- tt_int_op(res, OP_EQ, V(1,4,12));
-
- res = tor_decode_libevent_version("1.4.17b_stable");
- tt_int_op(res, OP_EQ, V(1,4,17));
-
- res = tor_decode_libevent_version("1.4.12!stable");
- tt_int_op(res, OP_EQ, LE_OTHER);
-
- res = tor_decode_libevent_version("1.4.12b!stable");
- tt_int_op(res, OP_EQ, LE_OTHER);
-
- res = tor_decode_libevent_version("1.4.13-");
- tt_int_op(res, OP_EQ, V(1,4,13));
-
- res = tor_decode_libevent_version("1.4.14_");
- tt_int_op(res, OP_EQ, V(1,4,14));
-
- res = tor_decode_libevent_version("1.4.15c-");
- tt_int_op(res, OP_EQ, V(1,4,15));
-
- res = tor_decode_libevent_version("1.4.16c_");
- tt_int_op(res, OP_EQ, V(1,4,16));
-
- res = tor_decode_libevent_version("1.4.17-s");
- tt_int_op(res, OP_EQ, V(1,4,17));
-
- res = tor_decode_libevent_version("1.5");
- tt_int_op(res, OP_EQ, V(1,5,0));
-
- res = tor_decode_libevent_version("1.2");
- tt_int_op(res, OP_EQ, V(1,2,0));
-
- res = tor_decode_libevent_version("1.2-");
- tt_int_op(res, OP_EQ, LE_OTHER);
-
- res = tor_decode_libevent_version("1.6e");
- tt_int_op(res, OP_EQ, V_OLD(1,6,'e'));
-
- done:
- (void)0;
-}
-
-#if defined(LIBEVENT_VERSION)
-#define HEADER_VERSION LIBEVENT_VERSION
-#elif defined(_EVENT_VERSION)
-#define HEADER_VERSION _EVENT_VERSION
-#endif
-
-static void
test_compat_libevent_header_version(void *ignored)
{
(void)ignored;
const char *res;
res = tor_libevent_get_header_version_str();
- tt_str_op(res, OP_EQ, HEADER_VERSION);
+ tt_str_op(res, OP_EQ, LIBEVENT_VERSION);
done:
(void)0;
@@ -214,10 +118,6 @@ test_compat_libevent_header_version(void *ignored)
struct testcase_t compat_libevent_tests[] = {
{ "logging_callback", test_compat_libevent_logging_callback,
TT_FORK, NULL, NULL },
- { "le_versions_compatibility",
- test_compat_libevent_le_versions_compatibility, 0, NULL, NULL },
- { "tor_decode_libevent_version",
- test_compat_libevent_tor_decode_libevent_version, 0, NULL, NULL },
{ "header_version", test_compat_libevent_header_version, 0, NULL, NULL },
END_OF_TESTCASES
};
diff --git a/src/test/test_oom.c b/src/test/test_oom.c
index 2569b6e00f..a944464051 100644
--- a/src/test/test_oom.c
+++ b/src/test/test_oom.c
@@ -134,10 +134,12 @@ test_oom_circbuf(void *arg)
{
or_options_t *options = get_options_mutable();
circuit_t *c1 = NULL, *c2 = NULL, *c3 = NULL, *c4 = NULL;
- struct timeval tv = { 1389631048, 0 };
+ uint64_t now_ns = 1389631048 * (uint64_t)1000000000;
+ const uint64_t start_ns = now_ns;
(void) arg;
+ monotime_enable_test_mocking();
MOCK(circuit_mark_for_close_, circuit_mark_for_close_dummy_);
/* Far too low for real life. */
@@ -150,11 +152,11 @@ test_oom_circbuf(void *arg)
/* Now we're going to fake up some circuits and get them added to the global
circuit list. */
- tv.tv_usec = 0;
- tor_gettimeofday_cache_set(&tv);
+ monotime_coarse_set_mock_time_nsec(now_ns);
c1 = dummy_origin_circuit_new(30);
- tv.tv_usec = 10*1000;
- tor_gettimeofday_cache_set(&tv);
+
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
c2 = dummy_or_circuit_new(20, 20);
tt_int_op(packed_cell_mem_cost(), OP_EQ,
@@ -163,15 +165,15 @@ test_oom_circbuf(void *arg)
packed_cell_mem_cost() * 70);
tt_int_op(cell_queues_check_size(), OP_EQ, 0); /* We are still not OOM */
- tv.tv_usec = 20*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
c3 = dummy_or_circuit_new(100, 85);
tt_int_op(cell_queues_check_size(), OP_EQ, 0); /* We are still not OOM */
tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 255);
- tv.tv_usec = 30*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
/* Adding this cell will trigger our OOM handler. */
c4 = dummy_or_circuit_new(2, 0);
@@ -189,12 +191,12 @@ test_oom_circbuf(void *arg)
packed_cell_mem_cost() * (257 - 30));
circuit_free(c1);
- tv.tv_usec = 0;
- tor_gettimeofday_cache_set(&tv); /* go back in time */
+
+ monotime_coarse_set_mock_time_nsec(start_ns); /* go back in time */
c1 = dummy_or_circuit_new(90, 0);
- tv.tv_usec = 40*1000; /* go back to the future */
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
tt_int_op(cell_queues_check_size(), OP_EQ, 1); /* We are now OOM */
@@ -213,6 +215,7 @@ test_oom_circbuf(void *arg)
circuit_free(c4);
UNMOCK(circuit_mark_for_close_);
+ monotime_disable_test_mocking();
}
/** Run unit tests for buffers.c */
@@ -221,12 +224,14 @@ test_oom_streambuf(void *arg)
{
or_options_t *options = get_options_mutable();
circuit_t *c1 = NULL, *c2 = NULL, *c3 = NULL, *c4 = NULL, *c5 = NULL;
- struct timeval tv = { 1389641159, 0 };
uint32_t tvms;
int i;
smartlist_t *edgeconns = smartlist_new();
+ const uint64_t start_ns = 1389641159 * (uint64_t)1000000000;
+ uint64_t now_ns = start_ns;
(void) arg;
+ monotime_enable_test_mocking();
MOCK(circuit_mark_for_close_, circuit_mark_for_close_dummy_);
@@ -238,54 +243,56 @@ test_oom_streambuf(void *arg)
tt_int_op(cell_queues_get_total_allocation(), OP_EQ, 0);
tt_int_op(buf_get_total_allocation(), OP_EQ, 0);
+ monotime_coarse_set_mock_time_nsec(start_ns);
+
/* Start all circuits with a bit of data queued in cells */
- tv.tv_usec = 500*1000; /* go halfway into the second. */
- tor_gettimeofday_cache_set(&tv);
+
+ /* go halfway into the second. */
+ monotime_coarse_set_mock_time_nsec(start_ns + 500 * 1000000);
c1 = dummy_or_circuit_new(10,10);
- tv.tv_usec = 510*1000;
- tor_gettimeofday_cache_set(&tv);
+
+ monotime_coarse_set_mock_time_nsec(start_ns + 510 * 1000000);
c2 = dummy_origin_circuit_new(20);
- tv.tv_usec = 520*1000;
- tor_gettimeofday_cache_set(&tv);
+ monotime_coarse_set_mock_time_nsec(start_ns + 520 * 1000000);
c3 = dummy_or_circuit_new(20,20);
- tv.tv_usec = 530*1000;
- tor_gettimeofday_cache_set(&tv);
+ monotime_coarse_set_mock_time_nsec(start_ns + 530 * 1000000);
c4 = dummy_or_circuit_new(0,0);
tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
packed_cell_mem_cost() * 80);
- tv.tv_usec = 600*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns = start_ns + 600 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
/* Add some connections to c1...c4. */
for (i = 0; i < 4; ++i) {
edge_connection_t *ec;
/* link it to a circuit */
- tv.tv_usec += 10*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
ec = dummy_edge_conn_new(c1, CONN_TYPE_EXIT, 1000, 1000);
tt_assert(ec);
smartlist_add(edgeconns, ec);
- tv.tv_usec += 10*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
ec = dummy_edge_conn_new(c2, CONN_TYPE_AP, 1000, 1000);
tt_assert(ec);
smartlist_add(edgeconns, ec);
- tv.tv_usec += 10*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
ec = dummy_edge_conn_new(c4, CONN_TYPE_EXIT, 1000, 1000); /* Yes, 4 twice*/
tt_assert(ec);
smartlist_add(edgeconns, ec);
- tv.tv_usec += 10*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 10 * 1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
ec = dummy_edge_conn_new(c4, CONN_TYPE_EXIT, 1000, 1000);
smartlist_add(edgeconns, ec);
tt_assert(ec);
}
- tv.tv_sec += 1;
- tv.tv_usec = 0;
- tvms = (uint32_t) tv_to_msec(&tv);
+ now_ns -= now_ns % 1000000000;
+ now_ns += 1000000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
+ tvms = (uint32_t) monotime_coarse_absolute_msec();
tt_int_op(circuit_max_queued_cell_age(c1, tvms), OP_EQ, 500);
tt_int_op(circuit_max_queued_cell_age(c2, tvms), OP_EQ, 490);
@@ -309,9 +316,8 @@ test_oom_streambuf(void *arg)
/* Now give c4 a very old buffer of modest size */
{
edge_connection_t *ec;
- tv.tv_sec -= 1;
- tv.tv_usec = 0;
- tor_gettimeofday_cache_set(&tv);
+ now_ns -= 1000000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
ec = dummy_edge_conn_new(c4, CONN_TYPE_EXIT, 1000, 1000);
tt_assert(ec);
smartlist_add(edgeconns, ec);
@@ -322,8 +328,8 @@ test_oom_streambuf(void *arg)
tt_int_op(cell_queues_check_size(), OP_EQ, 0);
/* And run over the limit. */
- tv.tv_usec = 800*1000;
- tor_gettimeofday_cache_set(&tv);
+ now_ns += 800*1000000;
+ monotime_coarse_set_mock_time_nsec(now_ns);
c5 = dummy_or_circuit_new(0,5);
tt_int_op(cell_queues_get_total_allocation(), OP_EQ,
@@ -355,6 +361,7 @@ test_oom_streambuf(void *arg)
smartlist_free(edgeconns);
UNMOCK(circuit_mark_for_close_);
+ monotime_disable_test_mocking();
}
struct testcase_t oom_tests[] = {
diff --git a/src/test/test_policy.c b/src/test/test_policy.c
index 58102ea6db..0d4a3b104f 100644
--- a/src/test/test_policy.c
+++ b/src/test/test_policy.c
@@ -1081,10 +1081,32 @@ test_policies_getinfo_helper_policies(void *arg)
append_exit_policy_string(&mock_my_routerinfo.exit_policy, "reject *6:*");
mock_options.IPv6Exit = 1;
- mock_options.ExitPolicyRejectPrivate = 1;
tor_addr_from_ipv4h(&mock_options.OutboundBindAddressIPv4_, TEST_IPV4_ADDR);
tor_addr_parse(&mock_options.OutboundBindAddressIPv6_, TEST_IPV6_ADDR);
+ mock_options.ExitPolicyRejectPrivate = 1;
+ mock_options.ExitPolicyRejectLocalInterfaces = 1;
+
+ rv = getinfo_helper_policies(NULL, "exit-policy/reject-private/relay",
+ &answer, &errmsg);
+ tt_assert(rv == 0);
+ tt_assert(answer != NULL);
+ tt_assert(strlen(answer) > 0);
+ tor_free(answer);
+
+ mock_options.ExitPolicyRejectPrivate = 1;
+ mock_options.ExitPolicyRejectLocalInterfaces = 0;
+
+ rv = getinfo_helper_policies(NULL, "exit-policy/reject-private/relay",
+ &answer, &errmsg);
+ tt_assert(rv == 0);
+ tt_assert(answer != NULL);
+ tt_assert(strlen(answer) > 0);
+ tor_free(answer);
+
+ mock_options.ExitPolicyRejectPrivate = 0;
+ mock_options.ExitPolicyRejectLocalInterfaces = 1;
+
rv = getinfo_helper_policies(NULL, "exit-policy/reject-private/relay",
&answer, &errmsg);
tt_assert(rv == 0);
@@ -1092,6 +1114,16 @@ test_policies_getinfo_helper_policies(void *arg)
tt_assert(strlen(answer) > 0);
tor_free(answer);
+ mock_options.ExitPolicyRejectPrivate = 0;
+ mock_options.ExitPolicyRejectLocalInterfaces = 0;
+
+ rv = getinfo_helper_policies(NULL, "exit-policy/reject-private/relay",
+ &answer, &errmsg);
+ tt_assert(rv == 0);
+ tt_assert(answer != NULL);
+ tt_assert(strlen(answer) == 0);
+ tor_free(answer);
+
rv = getinfo_helper_policies(NULL, "exit-policy/ipv4", &answer,
&errmsg);
tt_assert(rv == 0);
diff --git a/src/test/test_scheduler.c b/src/test/test_scheduler.c
index f8b5046c70..2e0736f99b 100644
--- a/src/test/test_scheduler.c
+++ b/src/test/test_scheduler.c
@@ -5,12 +5,7 @@
#include "orconfig.h"
-/* Libevent stuff */
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#define TOR_CHANNEL_INTERNAL_
#define CHANNEL_PRIVATE_
@@ -90,9 +85,7 @@ mock_event_free_all(void)
static void
mock_event_init(void)
{
-#ifdef HAVE_EVENT2_EVENT_H
struct event_config *cfg = NULL;
-#endif
tt_ptr_op(mock_event_base, ==, NULL);
@@ -102,7 +95,6 @@ mock_event_init(void)
*/
if (!mock_event_base) {
-#ifdef HAVE_EVENT2_EVENT_H
cfg = event_config_new();
#if LIBEVENT_VERSION_NUMBER >= V(2,0,9)
/* We can enable changelist support with epoll, since we don't give
@@ -111,9 +103,6 @@ mock_event_init(void)
#endif
mock_event_base = event_base_new_with_config(cfg);
event_config_free(cfg);
-#else
- mock_event_base = event_init();
-#endif
}
tt_assert(mock_event_base != NULL);
diff --git a/src/test/test_shared_random.c b/src/test/test_shared_random.c
index 4f05e75783..d6787e4f45 100644
--- a/src/test/test_shared_random.c
+++ b/src/test/test_shared_random.c
@@ -638,11 +638,7 @@ test_state_load_from_disk(void *arg)
/* Try to load the directory itself. Should fail. */
ret = disk_state_load_from_disk_impl(dir);
-#ifdef _WIN32
- tt_int_op(ret, OP_EQ, -EACCES);
-#else
- tt_int_op(ret, OP_EQ, -EISDIR);
-#endif
+ tt_int_op(ret, OP_LT, 0);
/* State should be non-existent at this point. */
the_sr_state = get_sr_state();
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 7cb9311577..843a57a2a2 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -5,6 +5,7 @@
#include "orconfig.h"
#define COMPAT_PRIVATE
+#define COMPAT_TIME_PRIVATE
#define CONTROL_PRIVATE
#define UTIL_PRIVATE
#include "or.h"
@@ -13,6 +14,7 @@
#include "test.h"
#include "memarea.h"
#include "util_process.h"
+#include "log_test_helpers.h"
#ifdef HAVE_PWD_H
#include <pwd.h>
@@ -4655,6 +4657,31 @@ test_util_mathlog(void *arg)
}
static void
+test_util_fraction(void *arg)
+{
+ uint64_t a,b;
+ (void)arg;
+
+ a = 99; b = 30;
+ simplify_fraction64(&a,&b);
+ tt_u64_op(a, OP_EQ, 33);
+ tt_u64_op(b, OP_EQ, 10);
+
+ a = 3000000; b = 10000000;
+ simplify_fraction64(&a,&b);
+ tt_u64_op(a, OP_EQ, 3);
+ tt_u64_op(b, OP_EQ, 10);
+
+ a = 0; b = 15;
+ simplify_fraction64(&a,&b);
+ tt_u64_op(a, OP_EQ, 0);
+ tt_u64_op(b, OP_EQ, 1);
+
+ done:
+ ;
+}
+
+static void
test_util_round_to_next_multiple_of(void *arg)
{
(void)arg;
@@ -5187,6 +5214,7 @@ test_util_pwdb(void *arg)
const struct passwd *me = NULL, *me2, *me3;
char *name = NULL;
char *dir = NULL;
+ int prev_level = -100;
/* Uncached case. */
/* Let's assume that we exist. */
@@ -5225,8 +5253,13 @@ test_util_pwdb(void *arg)
}
tt_assert(found);
tor_free(dir);
+
+ prev_level = setup_capture_of_logs(LOG_ERR); /* We should do a LOG_ERR */
dir = get_user_homedir(badname);
tt_assert(dir == NULL);
+ tt_int_op(smartlist_len(mock_saved_logs()), OP_EQ, 1);
+ teardown_capture_of_logs(prev_level);
+ prev_level = -100;
/* Now try to find a user that doesn't exist by ID. */
found = 0;
@@ -5243,6 +5276,8 @@ test_util_pwdb(void *arg)
done:
tor_free(name);
tor_free(dir);
+ if (prev_level >= 0)
+ teardown_capture_of_logs(prev_level);
}
#endif
@@ -5276,6 +5311,128 @@ test_util_calloc_check(void *arg)
;
}
+static void
+test_util_monotonic_time(void *arg)
+{
+ (void)arg;
+
+ monotime_t mt1, mt2;
+ monotime_coarse_t mtc1, mtc2;
+ uint64_t nsec1, nsec2, usec1, msec1;
+ uint64_t nsecc1, nsecc2, usecc1, msecc1;
+
+ monotime_get(&mt1);
+ monotime_coarse_get(&mtc1);
+ nsec1 = monotime_absolute_nsec();
+ usec1 = monotime_absolute_usec();
+ msec1 = monotime_absolute_msec();
+ nsecc1 = monotime_coarse_absolute_nsec();
+ usecc1 = monotime_coarse_absolute_usec();
+ msecc1 = monotime_coarse_absolute_msec();
+
+ tor_sleep_msec(200);
+
+ monotime_get(&mt2);
+ monotime_coarse_get(&mtc2);
+ nsec2 = monotime_absolute_nsec();
+ nsecc2 = monotime_coarse_absolute_nsec();
+
+ /* We need to be a little careful here since we don't know the system load.
+ */
+ tt_i64_op(monotime_diff_msec(&mt1, &mt2), OP_GE, 175);
+ tt_i64_op(monotime_diff_msec(&mt1, &mt2), OP_LT, 1000);
+ tt_i64_op(monotime_coarse_diff_msec(&mtc1, &mtc2), OP_GE, 125);
+ tt_i64_op(monotime_coarse_diff_msec(&mtc1, &mtc2), OP_LT, 1000);
+ tt_u64_op(nsec2-nsec1, OP_GE, 175000000);
+ tt_u64_op(nsec2-nsec1, OP_LT, 1000000000);
+ tt_u64_op(nsecc2-nsecc1, OP_GE, 125000000);
+ tt_u64_op(nsecc2-nsecc1, OP_LT, 1000000000);
+
+ tt_u64_op(msec1, OP_GE, nsec1 / 1000000);
+ tt_u64_op(usec1, OP_GE, nsec1 / 1000);
+ tt_u64_op(msecc1, OP_GE, nsecc1 / 1000000);
+ tt_u64_op(usecc1, OP_GE, nsecc1 / 1000);
+ tt_u64_op(msec1, OP_LE, nsec1 / 1000000 + 1);
+ tt_u64_op(usec1, OP_LE, nsec1 / 1000 +10);
+ tt_u64_op(msecc1, OP_LE, nsecc1 / 1000000 + 1);
+ tt_u64_op(usecc1, OP_LE, nsecc1 / 1000 + 10);
+
+ done:
+ ;
+}
+
+static void
+test_util_monotonic_time_ratchet(void *arg)
+{
+ (void)arg;
+ monotime_reset_ratchets_for_testing();
+
+ /* win32, performance counter ratchet. */
+ tt_i64_op(100, OP_EQ, ratchet_performance_counter(100));
+ tt_i64_op(101, OP_EQ, ratchet_performance_counter(101));
+ tt_i64_op(2000, OP_EQ, ratchet_performance_counter(2000));
+ tt_i64_op(2000, OP_EQ, ratchet_performance_counter(100));
+ tt_i64_op(2005, OP_EQ, ratchet_performance_counter(105));
+ tt_i64_op(3005, OP_EQ, ratchet_performance_counter(1105));
+ tt_i64_op(3005, OP_EQ, ratchet_performance_counter(1000));
+ tt_i64_op(3010, OP_EQ, ratchet_performance_counter(1005));
+
+ /* win32, GetTickCounts32 ratchet-and-rollover-detector. */
+ const int64_t R = ((int64_t)1) << 32;
+ tt_i64_op(5, OP_EQ, ratchet_coarse_performance_counter(5));
+ tt_i64_op(1000, OP_EQ, ratchet_coarse_performance_counter(1000));
+ tt_i64_op(5+R, OP_EQ, ratchet_coarse_performance_counter(5));
+ tt_i64_op(10+R, OP_EQ, ratchet_coarse_performance_counter(10));
+ tt_i64_op(4+R*2, OP_EQ, ratchet_coarse_performance_counter(4));
+
+ /* gettimeofday regular ratchet. */
+ struct timeval tv_in = {0,0}, tv_out;
+ tv_in.tv_usec = 9000;
+
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 9000);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 0);
+
+ tv_in.tv_sec = 1337;
+ tv_in.tv_usec = 0;
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 0);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 1337);
+
+ tv_in.tv_sec = 1336;
+ tv_in.tv_usec = 500000;
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 0);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 1337);
+
+ tv_in.tv_sec = 1337;
+ tv_in.tv_usec = 0;
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 500000);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 1337);
+
+ tv_in.tv_sec = 1337;
+ tv_in.tv_usec = 600000;
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 100000);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 1338);
+
+ tv_in.tv_sec = 1000;
+ tv_in.tv_usec = 1000;
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 100000);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 1338);
+
+ tv_in.tv_sec = 2000;
+ tv_in.tv_usec = 2000;
+ ratchet_timeval(&tv_in, &tv_out);
+ tt_int_op(tv_out.tv_usec, OP_EQ, 101000);
+ tt_i64_op(tv_out.tv_sec, OP_EQ, 2338);
+
+ done:
+ ;
+}
+
#define UTIL_LEGACY(name) \
{ #name, test_util_ ## name , 0, NULL, NULL }
@@ -5347,6 +5504,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(read_file_eof_zero_bytes, 0),
UTIL_TEST(write_chunks_to_file, 0),
UTIL_TEST(mathlog, 0),
+ UTIL_TEST(fraction, 0),
UTIL_TEST(weak_random, 0),
{ "socket_ipv4", test_util_socket, TT_FORK, &passthrough_setup,
(void*)"4" },
@@ -5364,6 +5522,8 @@ struct testcase_t util_tests[] = {
UTIL_TEST(touch_file, 0),
UTIL_TEST_NO_WIN(pwdb, TT_FORK),
UTIL_TEST(calloc_check, 0),
+ UTIL_TEST(monotonic_time, 0),
+ UTIL_TEST(monotonic_time_ratchet, TT_FORK),
END_OF_TESTCASES
};
diff --git a/src/test/test_util_format.c b/src/test/test_util_format.c
index f3dcd1184c..63a668238c 100644
--- a/src/test/test_util_format.c
+++ b/src/test/test_util_format.c
@@ -106,10 +106,10 @@ test_util_format_base64_encode(void *ignored)
for (i = 0;i<50;i++) {
src[i] = 0;
}
- src[50] = 255;
- src[51] = 255;
- src[52] = 255;
- src[53] = 255;
+ src[50] = (char)255;
+ src[51] = (char)255;
+ src[52] = (char)255;
+ src[53] = (char)255;
res = base64_encode(dst, 1000, src, 54, BASE64_ENCODE_MULTILINE);
tt_int_op(res, OP_EQ, 74);
diff --git a/src/test/test_workqueue.c b/src/test/test_workqueue.c
index 75d68a7ce0..ccb8d0c8ca 100644
--- a/src/test/test_workqueue.c
+++ b/src/test/test_workqueue.c
@@ -12,11 +12,7 @@
#include "compat_libevent.h"
#include <stdio.h>
-#ifdef HAVE_EVENT2_EVENT_H
#include <event2/event.h>
-#else
-#include <event.h>
-#endif
#define MAX_INFLIGHT (1<<16)
diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index 9469245ba7..bb07c992fe 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -17,15 +17,6 @@
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H
-/* Define to 1 if you have the `event_get_method' function. */
-#define HAVE_EVENT_GET_METHOD 1
-
-/* Define to 1 if you have the `event_get_version' function. */
-#define HAVE_EVENT_GET_VERSION 1
-
-/* Define to 1 if you have the `event_set_log_callback' function. */
-#define HAVE_EVENT_SET_LOG_CALLBACK 1
-
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H
@@ -223,8 +214,6 @@
/* Define to 1 iff unaligned int access is allowed */
#define UNALIGNED_INT_ACCESS_OK
-#define HAVE_EVENT_H
-
/* Define to 1 iff we represent negative integers with two's complement */
#define USING_TWOS_COMPLEMENT
@@ -237,10 +226,7 @@
#define HAVE_STRUCT_IN6_ADDR
#define RSHIFT_DOES_SIGN_EXTEND
#define FLEXIBLE_ARRAY_MEMBER 0
-#define HAVE_EVENT2_EVENT_H
#define SHARE_DATADIR ""
-#define HAVE_EVENT2_DNS_H
-#define HAVE_EVENT_BASE_LOOPEXIT
#define USE_CURVE25519_DONNA
#define ENUM_VALS_ARE_SIGNED 1